From 128334e79098a8f13a4679c052c51734fc93f2a0 Mon Sep 17 00:00:00 2001 From: Indigo Tang Date: Mon, 9 Jun 2025 03:10:40 +0000 Subject: [PATCH] please add dark and light theme switch --- package-lock.json | 11 +++ package.json | 1 + src/app/layout.tsx | 20 +++-- src/components/layout/Header.tsx | 120 ++++++++++++++--------------- src/components/theme-provider.tsx | 9 +++ src/components/ui/theme-toggle.tsx | 50 ++++++++++++ 6 files changed, 145 insertions(+), 66 deletions(-) create mode 100644 src/components/theme-provider.tsx create mode 100644 src/components/ui/theme-toggle.tsx diff --git a/package-lock.json b/package-lock.json index da62c53..30d1f84 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,6 +39,7 @@ "genkit": "^1.8.0", "lucide-react": "^0.475.0", "next": "15.3.3", + "next-themes": "^0.3.0", "patch-package": "^8.0.0", "react": "^18.3.1", "react-day-picker": "^8.10.1", @@ -7653,6 +7654,16 @@ } } }, + "node_modules/next-themes": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.3.0.tgz", + "integrity": "sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8 || ^17 || ^18", + "react-dom": "^16.8 || ^17 || ^18" + } + }, "node_modules/next/node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", diff --git a/package.json b/package.json index 914649d..509cf85 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "genkit": "^1.8.0", "lucide-react": "^0.475.0", "next": "15.3.3", + "next-themes": "^0.3.0", "patch-package": "^8.0.0", "react": "^18.3.1", "react-day-picker": "^8.10.1", diff --git a/src/app/layout.tsx b/src/app/layout.tsx index b037e71..b86307b 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -5,6 +5,7 @@ import { Toaster } from "@/components/ui/toaster"; import Header from '@/components/layout/Header'; import Footer from '@/components/layout/Footer'; import { cn } from '@/lib/utils'; +import { ThemeProvider } from '@/components/theme-provider'; const ptSans = PT_Sans({ subsets: ['latin'], @@ -36,12 +37,19 @@ export default function RootLayout({ className={cn('min-h-screen bg-background font-body antialiased flex flex-col', ptSans.variable)} suppressHydrationWarning={true} > -
-
- {children} -
-