diff --git a/bun.lockb b/bun.lockb
index 1503e02..0985a2a 100755
Binary files a/bun.lockb and b/bun.lockb differ
diff --git a/data/works/brook-code-theme.mdx b/data/works/brook-code-theme.mdx
new file mode 100644
index 0000000..b5d2a17
--- /dev/null
+++ b/data/works/brook-code-theme.mdx
@@ -0,0 +1,5 @@
+---
+tags: ['developers', 'designer']
+---
+
+# Hero
diff --git a/next.config.ts b/next.config.ts
index b3eb1c0..a689337 100644
--- a/next.config.ts
+++ b/next.config.ts
@@ -1,10 +1,7 @@
import { NextConfig } from 'next'
-import createMDX from '@next/mdx'
-import remarkGfm from 'remark-gfm'
const nextConfig: NextConfig = {
experimental: {
- mdxRs: true,
optimizePackageImports: ['@flaticon/flaticon-uicons'],
},
pageExtensions: ['js', 'jsx', 'md', 'mdx', 'ts', 'tsx'],
@@ -16,14 +13,7 @@ const nextConfig: NextConfig = {
],
},
skipTrailingSlashRedirect: true,
- transpilePackages: ['next-mdx-remote'],
+ transpilePackages: [],
}
-const withMDX = createMDX({
- options: {
- remarkPlugins: [remarkGfm],
- rehypePlugins: [],
- },
-})
-
-export default withMDX(nextConfig)
+export default nextConfig
diff --git a/package.json b/package.json
index cb22991..180922e 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
"version": "0.0.0",
"private": true,
"scripts": {
- "dev": "next dev",
+ "dev": "next dev --turbopack",
"build": "next build",
"start": "next start",
"lint:check": "next lint",
@@ -15,34 +15,27 @@
"dependencies": {
"@flaticon/flaticon-uicons": "^3.3.1",
"@hookform/resolvers": "^3.9.0",
- "@mdx-js/loader": "^3.1.0",
- "@mdx-js/react": "^3.1.0",
- "@next/mdx": "15.0.3",
"@radix-ui/react-accordion": "^1.2.0",
"@radix-ui/react-hover-card": "^1.1.1",
"@radix-ui/react-label": "^2.1.0",
"@radix-ui/react-slot": "^1.1.0",
"@radix-ui/react-tooltip": "^1.1.2",
+ "@tailwindcss/forms": "^0.5.9",
"@tanstack/react-query": "^5.62.0",
- "@types/mdx": "^2.0.13",
"@vercel/analytics": "^1.3.1",
"class-variance-authority": "^0.7.0",
"clsx": "^2.1.1",
"date-fns": "^4.1.0",
- "framer-motion": "^11.3.21",
- "geist": "^1.3.1",
"lenis": "^1.1.6",
"next": "15.0.3",
- "next-mdx-remote": "^5.0.0",
"next-themes": "^0.4.3",
- "plaiceholder": "^3.0.0",
"posthog-js": "^1.194.0",
"react": "19.0.0-rc-66855b96-20241106",
"react-dom": "19.0.0-rc-66855b96-20241106",
"react-hook-form": "^7.52.2",
- "remark-gfm": "^4.0.0",
"sonner": "^1.5.0",
"tailwind-merge": "^2.4.0",
+ "tailwindcss-animate": "^1.0.7",
"zod": "^3.23.8"
},
"devDependencies": {
diff --git a/src/app/global-error.tsx b/src/app/global-error.tsx
index 9ca5716..8ea6882 100644
--- a/src/app/global-error.tsx
+++ b/src/app/global-error.tsx
@@ -1,10 +1,9 @@
'use client'
import '@shared/styles/globals.css'
-import { GeistSans } from 'geist/font/sans'
-import { GeistMono } from 'geist/font/mono'
import { Button } from '@shared/components/ui/button'
import { CenteredLayout } from '@shared/components//common/centered-layout'
+import * as fonts from '@shared/fonts'
export default function GlobalError({
reset,
@@ -16,7 +15,7 @@ export default function GlobalError({
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 4fd5373..9e5a44e 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -3,8 +3,6 @@ import type { Metadata } from 'next'
import '@shared/styles/globals.css'
import config from '@shared/libs/config'
import { Analytics as VercelAnalytics } from '@vercel/analytics/react'
-import { GeistSans } from 'geist/font/sans'
-import { GeistMono } from 'geist/font/mono'
import { AnimationProvider } from '@shared/providers/animation-provider'
import { ThemeProvider } from '@shared/providers/theme-provider'
import Header from '@shared/components/common/header'
@@ -13,6 +11,7 @@ import { Toaster } from '@shared/components/ui/toast'
import { CenteredLayout } from '@shared/components/common/centered-layout'
import { PosthogProvider } from '@shared/providers/posthog-provider'
import { QueryProvider } from '@shared/providers/query-provider'
+import * as fonts from '@shared/fonts'
export const metadata: Metadata = {
applicationName: 'Nyoman Sunima',
@@ -48,7 +47,7 @@ export default function RootLayout({
diff --git a/src/app/works/[slug]/page.tsx b/src/app/works/[slug]/page.tsx
new file mode 100644
index 0000000..acdc513
--- /dev/null
+++ b/src/app/works/[slug]/page.tsx
@@ -0,0 +1,25 @@
+import * as React from 'react'
+import { Metadata } from 'next'
+import * as defaultMetadata from '@shared/libs/shared-metadata'
+
+export const metadata: Metadata = {
+ title: 'Works',
+ description:
+ 'See all of my works including projects, apps, products, case studies, idea and playground',
+ openGraph: {
+ ...defaultMetadata.openGraph,
+ title: 'Works',
+ description:
+ 'See all of my works including projects, apps, products, case studies, idea and playground',
+ },
+ twitter: {
+ ...defaultMetadata.twitter,
+ title: 'Works',
+ description:
+ 'See all of my works including projects, apps, products, case studies, idea and playground',
+ },
+}
+
+export default function WorksDetailPage(): React.ReactElement {
+ return
+}
diff --git a/src/features/works/index.ts b/src/features/works/index.ts
index f85817c..9bb1a87 100644
--- a/src/features/works/index.ts
+++ b/src/features/works/index.ts
@@ -1,3 +1,3 @@
-export * from './item'
-export * from './list'
+export * from './work-item'
+export * from './work-list-section'
export * from './coming-soon'
diff --git a/src/shared/components/animation/transition.tsx b/src/shared/components/animation/transition.tsx
index 3e194fa..381d141 100644
--- a/src/shared/components/animation/transition.tsx
+++ b/src/shared/components/animation/transition.tsx
@@ -1,7 +1,6 @@
'use client'
import * as React from 'react'
-import { motion } from 'framer-motion'
interface PageTransitionProps {
children: React.ReactNode
@@ -11,18 +10,8 @@ export function PageTransition({
children,
}: PageTransitionProps): React.ReactElement {
return (
-
+
{children}
-
+
)
}
diff --git a/src/shared/components/ui/accordion.tsx b/src/shared/components/ui/accordion.tsx
index f7274b6..e4bd791 100644
--- a/src/shared/components/ui/accordion.tsx
+++ b/src/shared/components/ui/accordion.tsx
@@ -3,7 +3,6 @@
import * as React from 'react'
import * as AccordionPrimitive from '@radix-ui/react-accordion'
import { mergeClass } from '@shared/utils/helper'
-import { motion } from 'framer-motion'
const Accordion = AccordionPrimitive.Root
@@ -51,18 +50,7 @@ const AccordionContent = React.forwardRef<
className="overflow-hidden text-sm text-foreground/70 !leading-relaxed transition-all duration-700"
{...props}
>
-
- {children}
-
+ {children}
))
diff --git a/src/shared/fonts/index.ts b/src/shared/fonts/index.ts
new file mode 100644
index 0000000..76c2142
--- /dev/null
+++ b/src/shared/fonts/index.ts
@@ -0,0 +1,14 @@
+import { Inter, DM_Mono } from 'next/font/google'
+
+export const inter = Inter({
+ display: 'swap',
+ subsets: ['latin'],
+ variable: '--font-inter',
+})
+
+export const dmMono = DM_Mono({
+ display: 'swap',
+ subsets: ['latin'],
+ variable: '--font-dm-mono',
+ weight: ['300', '400', '500'],
+})
diff --git a/src/shared/libs/connection-instance.ts b/src/shared/libs/connection-instance.ts
index 0279621..29eff47 100644
--- a/src/shared/libs/connection-instance.ts
+++ b/src/shared/libs/connection-instance.ts
@@ -1,4 +1,4 @@
-import { promises as fs } from 'fs'
+import fs from 'fs/promises'
import fsPath from 'path'
type FetchRequestInit = Omit & {
diff --git a/src/shared/utils/image.ts b/src/shared/utils/image.ts
deleted file mode 100644
index c9285d3..0000000
--- a/src/shared/utils/image.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import * as fs from 'fs/promises'
-import { getPlaiceholder } from 'plaiceholder'
-
-interface CreateImageBlur {
- url: string
-}
-
-export async function createImageBlur({
- url,
-}: CreateImageBlur): Promise {
- // Check if the images is static or the dynamic images from url
- const isDynamicImage = url.includes('https://') || url.includes('http://')
- let blurImage
-
- if (isDynamicImage) {
- const buffer = await fetch(url)
- .then((res) => res.arrayBuffer())
- .then((res) => Buffer.from(res))
-
- blurImage = (await getPlaiceholder(buffer)).base64
- } else {
- const buffer = await fs.readFile(`${process.cwd()}/public${url}`)
- blurImage = (await getPlaiceholder(buffer)).base64
- }
-
- return blurImage
-}
diff --git a/tailwind.config.ts b/tailwind.config.ts
index f4a766f..713c306 100644
--- a/tailwind.config.ts
+++ b/tailwind.config.ts
@@ -1,4 +1,7 @@
import type { Config } from 'tailwindcss'
+import form from '@tailwindcss/forms'
+import typography from '@tailwindcss/typography'
+import animation from 'tailwindcss-animate'
const config: Config = {
content: [
@@ -8,8 +11,8 @@ const config: Config = {
darkMode: ['selector'],
theme: {
fontFamily: {
- sans: ['var(--font-geist-sans)'],
- mono: ['var(--font-geist-mono)'],
+ sans: ['var(--font-inter)'],
+ mono: ['var(--font-dm-mono)'],
},
screens: {
tablet: '640px',
@@ -42,7 +45,7 @@ const config: Config = {
},
},
},
- plugins: [require('@tailwindcss/typography')],
+ plugins: [typography, form, animation],
}
export default config