'use client' import { Moon, Sun } from 'lucide-react' import { useTheme } from 'next-themes' import { useEffect, useState } from 'react' import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuTrigger, RadioGroup, singleThemes, } from 'ui' const ThemeSwitcherDropdown = () => { const [mounted, setMounted] = useState(false) const { theme, setTheme, resolvedTheme } = useTheme() /** * Avoid Hydration Mismatch * https://github.com/pacocoursey/next-themes?tab=readme-ov-file#avoid-hydration-mismatch */ // useEffect only runs on the client, so now we can safely show the UI useEffect(() => { setMounted(true) }, []) if (!mounted) { return null } function SingleThemeSelection() { return (
) } const iconClasses = 'text-foreground-light group-data-open:text-foreground' return ( <>