'use client' import { Moon, Sun } from 'lucide-react' import { useTheme } from 'next-themes' import { useEffect, useState } from 'react' import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger, Theme, cn, themes, } from 'ui' interface ThemeToggleProps { forceDark?: boolean triggerClassName?: string contentClassName?: string } export const ThemeToggle = ({ forceDark = false, triggerClassName, contentClassName, }: ThemeToggleProps) => { const { theme, setTheme, resolvedTheme } = useTheme() const [open, setOpen] = useState(false) const [isMounted, setIsMounted] = useState(false) useEffect(() => { setIsMounted(true) }, []) // Conditionally force the theme to 'dark' when disabled is true const currentTheme = forceDark ? 'dark' : theme if (!isMounted) return null return ( setOpen(!open)} modal={false}> { setTheme(value) }} > {themes .filter((x) => x.value === 'dark' || x.value === 'light' || x.value === 'system') .map((theme: Theme) => ( {theme.name} ))} ) }