'use client'; import { useMemo } from 'react'; import { CheckCircle, Moon, Sun } from 'lucide-react'; import { useTheme } from 'next-themes'; import { Button } from '../shadcn/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, } from '../shadcn/dropdown-menu'; import { If } from './if'; import { Trans } from './trans'; const MODES = ['light', 'dark', 'system']; export function ModeToggle() { const { setTheme } = useTheme(); const Items = useMemo(() => { return MODES.map((mode) => { return ( { setTheme(mode); setCookeTheme(mode); }} > ); }); }, [setTheme]); return ( {Items} ); } export function SubMenuModeToggle() { const { setTheme, theme, resolvedTheme } = useTheme(); const MenuItems = useMemo( () => ['light', 'dark', 'system'].map((mode) => { return ( { setTheme(mode); setCookeTheme(mode); }} > ); }), [setTheme, theme], ); return ( {resolvedTheme === 'light' ? ( ) : ( )} {MenuItems} ); } function setCookeTheme(theme: string) { document.cookie = `theme=${theme}; path=/; max-age=31536000`; }