diff --git a/src/app/globals.css b/src/app/globals.css
index f4c1e9b..3039db9 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -42,72 +42,150 @@
}
:root {
- --radius: 0.625rem;
- --background: oklch(1 0 0);
- --foreground: oklch(0.145 0 0);
+ --background: oklch(0.9689 0.009 314.7819);
+ --foreground: oklch(0.3729 0.0306 259.7328);
--card: oklch(1 0 0);
- --card-foreground: oklch(0.145 0 0);
+ --card-foreground: oklch(0.3729 0.0306 259.7328);
--popover: oklch(1 0 0);
- --popover-foreground: oklch(0.145 0 0);
- --primary: oklch(0.205 0 0);
- --primary-foreground: oklch(0.985 0 0);
- --secondary: oklch(0.97 0 0);
- --secondary-foreground: oklch(0.205 0 0);
- --muted: oklch(0.97 0 0);
- --muted-foreground: oklch(0.556 0 0);
- --accent: oklch(0.97 0 0);
- --accent-foreground: oklch(0.205 0 0);
- --destructive: oklch(0.577 0.245 27.325);
- --border: oklch(0.922 0 0);
- --input: oklch(0.922 0 0);
- --ring: oklch(0.708 0 0);
- --chart-1: oklch(0.646 0.222 41.116);
- --chart-2: oklch(0.6 0.118 184.704);
- --chart-3: oklch(0.398 0.07 227.392);
- --chart-4: oklch(0.828 0.189 84.429);
- --chart-5: oklch(0.769 0.188 70.08);
- --sidebar: oklch(0.985 0 0);
- --sidebar-foreground: oklch(0.145 0 0);
- --sidebar-primary: oklch(0.205 0 0);
- --sidebar-primary-foreground: oklch(0.985 0 0);
- --sidebar-accent: oklch(0.97 0 0);
- --sidebar-accent-foreground: oklch(0.205 0 0);
- --sidebar-border: oklch(0.922 0 0);
- --sidebar-ring: oklch(0.708 0 0);
+ --popover-foreground: oklch(0.3729 0.0306 259.7328);
+ --primary: oklch(0.709 0.1592 293.5412);
+ --primary-foreground: oklch(1 0 0);
+ --secondary: oklch(0.9073 0.053 306.0902);
+ --secondary-foreground: oklch(0.4461 0.0263 256.8018);
+ --muted: oklch(0.9464 0.0327 307.1745);
+ --muted-foreground: oklch(0.551 0.0234 264.3637);
+ --accent: oklch(0.9376 0.026 321.9388);
+ --accent-foreground: oklch(0.3729 0.0306 259.7328);
+ --destructive: oklch(0.8077 0.1035 19.5706);
+ --destructive-foreground: oklch(1 0 0);
+ --border: oklch(0.9073 0.053 306.0902);
+ --input: oklch(0.9073 0.053 306.0902);
+ --ring: oklch(0.709 0.1592 293.5412);
+ --chart-1: oklch(0.709 0.1592 293.5412);
+ --chart-2: oklch(0.6056 0.2189 292.7172);
+ --chart-3: oklch(0.5413 0.2466 293.009);
+ --chart-4: oklch(0.4907 0.2412 292.5809);
+ --chart-5: oklch(0.432 0.2106 292.7591);
+ --sidebar: oklch(0.9073 0.053 306.0902);
+ --sidebar-foreground: oklch(0.3729 0.0306 259.7328);
+ --sidebar-primary: oklch(0.709 0.1592 293.5412);
+ --sidebar-primary-foreground: oklch(1 0 0);
+ --sidebar-accent: oklch(0.9376 0.026 321.9388);
+ --sidebar-accent-foreground: oklch(0.3729 0.0306 259.7328);
+ --sidebar-border: oklch(0.9073 0.053 306.0902);
+ --sidebar-ring: oklch(0.709 0.1592 293.5412);
+ --radius: 0.55rem;
+ --shadow-2xs: 0px 8px 16px -4px hsl(0 0% 0% / 0.1);
+ --shadow-xs: 0px 8px 16px -4px hsl(0 0% 0% / 0.1);
+ --shadow-sm: 0px 8px 16px -4px hsl(0 0% 0% / 0.2),
+ 0px 1px 2px -5px hsl(0 0% 0% / 0.2);
+ --shadow: 0px 8px 16px -4px hsl(0 0% 0% / 0.2),
+ 0px 1px 2px -5px hsl(0 0% 0% / 0.2);
+ --shadow-md: 0px 8px 16px -4px hsl(0 0% 0% / 0.2),
+ 0px 2px 4px -5px hsl(0 0% 0% / 0.2);
+ --shadow-lg: 0px 8px 16px -4px hsl(0 0% 0% / 0.2),
+ 0px 4px 6px -5px hsl(0 0% 0% / 0.2);
+ --shadow-xl: 0px 8px 16px -4px hsl(0 0% 0% / 0.2),
+ 0px 8px 10px -5px hsl(0 0% 0% / 0.2);
+ --shadow-2xl: 0px 8px 16px -4px hsl(0 0% 0% / 0.5);
}
.dark {
- --background: oklch(0.145 0 0);
- --foreground: oklch(0.985 0 0);
- --card: oklch(0.205 0 0);
- --card-foreground: oklch(0.985 0 0);
- --popover: oklch(0.205 0 0);
- --popover-foreground: oklch(0.985 0 0);
- --primary: oklch(0.922 0 0);
- --primary-foreground: oklch(0.205 0 0);
- --secondary: oklch(0.269 0 0);
- --secondary-foreground: oklch(0.985 0 0);
- --muted: oklch(0.269 0 0);
- --muted-foreground: oklch(0.708 0 0);
- --accent: oklch(0.269 0 0);
- --accent-foreground: oklch(0.985 0 0);
- --destructive: oklch(0.704 0.191 22.216);
- --border: oklch(1 0 0 / 10%);
- --input: oklch(1 0 0 / 15%);
- --ring: oklch(0.556 0 0);
- --chart-1: oklch(0.488 0.243 264.376);
- --chart-2: oklch(0.696 0.17 162.48);
- --chart-3: oklch(0.769 0.188 70.08);
- --chart-4: oklch(0.627 0.265 303.9);
- --chart-5: oklch(0.645 0.246 16.439);
- --sidebar: oklch(0.205 0 0);
- --sidebar-foreground: oklch(0.985 0 0);
- --sidebar-primary: oklch(0.488 0.243 264.376);
- --sidebar-primary-foreground: oklch(0.985 0 0);
- --sidebar-accent: oklch(0.269 0 0);
- --sidebar-accent-foreground: oklch(0.985 0 0);
- --sidebar-border: oklch(1 0 0 / 10%);
- --sidebar-ring: oklch(0.556 0 0);
+ --background: oklch(0.2161 0.0061 56.0434);
+ --foreground: oklch(0.9299 0.0334 272.7879);
+ --card: oklch(0.2805 0.0309 307.2326);
+ --card-foreground: oklch(0.9299 0.0334 272.7879);
+ --popover: oklch(0.2805 0.0309 307.2326);
+ --popover-foreground: oklch(0.9299 0.0334 272.7879);
+ --primary: oklch(0.7874 0.1179 295.7538);
+ --primary-foreground: oklch(0.2161 0.0061 56.0434);
+ --secondary: oklch(0.3416 0.0444 308.8496);
+ --secondary-foreground: oklch(0.8717 0.0093 258.3382);
+ --muted: oklch(0.2805 0.0309 307.2326);
+ --muted-foreground: oklch(0.7137 0.0192 261.3246);
+ --accent: oklch(0.3858 0.0509 304.6383);
+ --accent-foreground: oklch(0.8717 0.0093 258.3382);
+ --destructive: oklch(0.8077 0.1035 19.5706);
+ --destructive-foreground: oklch(0.2161 0.0061 56.0434);
+ --border: oklch(0.3416 0.0444 308.8496);
+ --input: oklch(0.3416 0.0444 308.8496);
+ --ring: oklch(0.7874 0.1179 295.7538);
+ --chart-1: oklch(0.7874 0.1179 295.7538);
+ --chart-2: oklch(0.709 0.1592 293.5412);
+ --chart-3: oklch(0.6056 0.2189 292.7172);
+ --chart-4: oklch(0.5413 0.2466 293.009);
+ --chart-5: oklch(0.4907 0.2412 292.5809);
+ --sidebar: oklch(0.3416 0.0444 308.8496);
+ --sidebar-foreground: oklch(0.9299 0.0334 272.7879);
+ --sidebar-primary: oklch(0.7874 0.1179 295.7538);
+ --sidebar-primary-foreground: oklch(0.2161 0.0061 56.0434);
+ --sidebar-accent: oklch(0.3858 0.0509 304.6383);
+ --sidebar-accent-foreground: oklch(0.8717 0.0093 258.3382);
+ --sidebar-border: oklch(0.3416 0.0444 308.8496);
+ --sidebar-ring: oklch(0.7874 0.1179 295.7538);
+ --radius: 0.55rem;
+ --shadow-2xs: 0px 8px 16px -4px hsl(0 0% 0% / 0.1);
+ --shadow-xs: 0px 8px 16px -4px hsl(0 0% 0% / 0.1);
+ --shadow-sm: 0px 8px 16px -4px hsl(0 0% 0% / 0.2),
+ 0px 1px 2px -5px hsl(0 0% 0% / 0.2);
+ --shadow: 0px 8px 16px -4px hsl(0 0% 0% / 0.2),
+ 0px 1px 2px -5px hsl(0 0% 0% / 0.2);
+ --shadow-md: 0px 8px 16px -4px hsl(0 0% 0% / 0.2),
+ 0px 2px 4px -5px hsl(0 0% 0% / 0.2);
+ --shadow-lg: 0px 8px 16px -4px hsl(0 0% 0% / 0.2),
+ 0px 4px 6px -5px hsl(0 0% 0% / 0.2);
+ --shadow-xl: 0px 8px 16px -4px hsl(0 0% 0% / 0.2),
+ 0px 8px 10px -5px hsl(0 0% 0% / 0.2);
+ --shadow-2xl: 0px 8px 16px -4px hsl(0 0% 0% / 0.5);
+}
+
+@theme inline {
+ --color-background: var(--background);
+ --color-foreground: var(--foreground);
+ --color-card: var(--card);
+ --color-card-foreground: var(--card-foreground);
+ --color-popover: var(--popover);
+ --color-popover-foreground: var(--popover-foreground);
+ --color-primary: var(--primary);
+ --color-primary-foreground: var(--primary-foreground);
+ --color-secondary: var(--secondary);
+ --color-secondary-foreground: var(--secondary-foreground);
+ --color-muted: var(--muted);
+ --color-muted-foreground: var(--muted-foreground);
+ --color-accent: var(--accent);
+ --color-accent-foreground: var(--accent-foreground);
+ --color-destructive: var(--destructive);
+ --color-destructive-foreground: var(--destructive-foreground);
+ --color-border: var(--border);
+ --color-input: var(--input);
+ --color-ring: var(--ring);
+ --color-chart-1: var(--chart-1);
+ --color-chart-2: var(--chart-2);
+ --color-chart-3: var(--chart-3);
+ --color-chart-4: var(--chart-4);
+ --color-chart-5: var(--chart-5);
+ --color-sidebar: var(--sidebar);
+ --color-sidebar-foreground: var(--sidebar-foreground);
+ --color-sidebar-primary: var(--sidebar-primary);
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
+ --color-sidebar-accent: var(--sidebar-accent);
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
+ --color-sidebar-border: var(--sidebar-border);
+ --color-sidebar-ring: var(--sidebar-ring);
+
+ --radius-sm: calc(var(--radius) - 4px);
+ --radius-md: calc(var(--radius) - 2px);
+ --radius-lg: var(--radius);
+ --radius-xl: calc(var(--radius) + 4px);
+
+ --shadow-2xs: var(--shadow-2xs);
+ --shadow-xs: var(--shadow-xs);
+ --shadow-sm: var(--shadow-sm);
+ --shadow: var(--shadow);
+ --shadow-md: var(--shadow-md);
+ --shadow-lg: var(--shadow-lg);
+ --shadow-xl: var(--shadow-xl);
+ --shadow-2xl: var(--shadow-2xl);
}
@layer base {
diff --git a/src/components/dashboard/sidebar-theme-toggle.tsx b/src/components/dashboard/sidebar-theme-toggle.tsx
new file mode 100644
index 0000000..40495ad
--- /dev/null
+++ b/src/components/dashboard/sidebar-theme-toggle.tsx
@@ -0,0 +1,95 @@
+"use client"
+
+import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"
+import { SidebarMenu, SidebarMenuButton, SidebarMenuItem } from "@/components/ui/sidebar"
+import { ChevronDown, Monitor, Moon, Sun } from "lucide-react"
+import { useTheme } from "next-themes"
+import { useEffect, useState } from "react"
+
+export function SidebarThemeToggle() {
+ const { theme, setTheme } = useTheme()
+ const [mounted, setMounted] = useState(false)
+
+ // Prevent hydration mismatch
+ useEffect(() => {
+ setMounted(true)
+ }, [])
+
+ if (!mounted) {
+ return (
+
+
+
+
+ Theme
+
+
+
+ )
+ }
+
+ const getIcon = () => {
+ switch (theme) {
+ case "light":
+ return
+ case "dark":
+ return
+ default:
+ return
+ }
+ }
+
+ const getThemeLabel = () => {
+ switch (theme) {
+ case "light":
+ return "Light"
+ case "dark":
+ return "Dark"
+ default:
+ return "System"
+ }
+ }
+
+ const cycleTheme = () => {
+ if (theme === "light") {
+ setTheme("dark")
+ } else if (theme === "dark") {
+ setTheme("system")
+ } else {
+ setTheme("light")
+ }
+ }
+
+ return (
+
+
+
+
+
+ {getIcon()}
+ Theme ({getThemeLabel()})
+
+
+
+
+ setTheme("light")}>
+
+ Light
+
+ setTheme("dark")}>
+
+ Dark
+
+ setTheme("system")}>
+
+ System
+
+
+
+
+
+ )
+}
diff --git a/src/components/dashboard/sidebar.tsx b/src/components/dashboard/sidebar.tsx
index 4daa3cf..05fd3d5 100644
--- a/src/components/dashboard/sidebar.tsx
+++ b/src/components/dashboard/sidebar.tsx
@@ -17,6 +17,7 @@ import {
SidebarMenuItem,
useSidebar
} from "@/components/ui/sidebar"
+import { SidebarThemeToggle } from "./sidebar-theme-toggle"
import { SidebarUserDropdown } from "./sidebar-user-dropdown"
const items = [
@@ -82,6 +83,7 @@ export function DashboardSidebar() {
+