'use client'; import { useState, useRef, useEffect } from 'react'; import { Sun, Moon, Monitor } from 'lucide-react'; import { useTheme } from '@/lib/hooks/use-theme'; import { useI18n } from '@/lib/hooks/use-i18n'; import { cn } from '@/lib/utils'; import '@/components/workbench/workspace/pro-popover-scope.css'; const OPTIONS = [ { value: 'light', icon: Sun }, { value: 'dark', icon: Moon }, { value: 'system', icon: Monitor }, ] as const; export function ThemeToggle() { const { theme, setTheme } = useTheme(); const { t } = useI18n(); const [open, setOpen] = useState(false); const ref = useRef(null); useEffect(() => { if (!open) return; const onDown = (e: MouseEvent) => { if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false); }; document.addEventListener('mousedown', onDown); return () => document.removeEventListener('mousedown', onDown); }, [open]); const ActiveIcon = OPTIONS.find((o) => o.value === theme)?.icon ?? Monitor; return (
{open && (
{OPTIONS.map(({ value, icon: Icon }) => ( ))}
)}
); }