"use client" import { BadgeCheck, Bell, ChevronsUpDown, CreditCard, LogOut, Sparkles, Moon, Sun, MonitorCog, } from "lucide-react" import { useEffect, useState } from "react" import { Avatar, AvatarFallback, AvatarImage, } from "@/components/ui/avatar" import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar, } from "@/components/ui/sidebar" export function NavUser({ user, }: { user: { name: string email: string avatar: string } }) { const { isMobile } = useSidebar() const [theme, setTheme] = useState<"light" | "dark" | "system">("system") useEffect(() => { if (typeof window === "undefined") return const saved = (localStorage.getItem("theme") as "light" | "dark" | "system") || "system" setTheme(saved) applyTheme(saved) }, []) useEffect(() => { if (typeof window === "undefined") return if (theme !== "system") return const media = window.matchMedia("(prefers-color-scheme: dark)") const listener = () => applyTheme("system") media.addEventListener("change", listener) return () => media.removeEventListener("change", listener) }, [theme]) const applyTheme = (value: "light" | "dark" | "system") => { const resolved = value === "system" ? (window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light") : value const root = document.documentElement root.classList.toggle("dark", resolved === "dark") localStorage.setItem("theme", value) } const handleTheme = (value: "light" | "dark" | "system") => { setTheme(value) if (typeof window !== "undefined") { applyTheme(value) } } return ( CN
{user.name} {user.email}
CN
{user.name} {user.email}
Upgrade to Pro Theme handleTheme("light")} > Light handleTheme("dark")} > Dark handleTheme("system")} > System Account Billing Notifications Log out
) }