'use client'; import { useI18n } from '@/lib/hooks/use-i18n'; import { supportedLocales } from '@/lib/i18n'; import { cn } from '@/lib/utils'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; interface LanguageSwitcherProps { /** Called when the dropdown opens, so parent can close sibling dropdowns. */ onOpen?: () => void; } /** * Locale picker pill. Backed by Radix DropdownMenu so its content is * portaled to `document.body` — important inside Pro mode's CommandBar * (which lives under an `overflow-hidden` canvas slot that would * otherwise clip the dropdown). */ export function LanguageSwitcher({ onOpen }: LanguageSwitcherProps) { const { locale, setLocale } = useI18n(); return ( { if (open) onOpen?.(); }} > {supportedLocales.map((l) => ( setLocale(l.code)} className={cn( 'cursor-pointer', locale === l.code && 'bg-purple-50 dark:bg-purple-900/20 text-purple-600 dark:text-purple-400', )} > {l.label} ))} ); }