import { useState, useRef, useEffect } from 'react'; import { useI18n } from '@/lib/hooks/use-i18n'; import { supportedLocales } from '@/lib/i18n'; import { cn } from '@/lib/utils'; interface LanguageSwitcherProps { /** Called when the dropdown opens, so parent can close sibling dropdowns */ onOpen?: () => void; } export function LanguageSwitcher({ onOpen }: LanguageSwitcherProps) { const { locale, setLocale } = useI18n(); const [open, setOpen] = useState(false); const ref = useRef(null); // Close on click outside useEffect(() => { if (!open) return; const handler = (e: MouseEvent) => { if (ref.current && !ref.current.contains(e.target as Node)) { setOpen(false); } }; document.addEventListener('mousedown', handler); return () => document.removeEventListener('mousedown', handler); }, [open]); return (
{open && (
{supportedLocales.map((l) => ( ))}
)}
); }