import { useState } from 'react'; import { X } from 'lucide-react'; import { Label } from '@/components/ui/label'; import { useSettings } from '@/state/useSettings'; const LANGUAGES = [ { code: 'en', label: 'English' }, { code: 'pt', label: 'Portuguese' }, { code: 'es', label: 'Spanish' }, { code: 'fr', label: 'French' }, { code: 'de', label: 'German' }, { code: 'it', label: 'Italian' }, { code: 'nl', label: 'Dutch' }, { code: 'ru', label: 'Russian' }, { code: 'zh', label: 'Chinese' }, { code: 'ja', label: 'Japanese' }, { code: 'ko', label: 'Korean' }, { code: 'ar', label: 'Arabic' }, { code: 'hi', label: 'Hindi' }, { code: 'tr', label: 'Turkish' }, { code: 'pl', label: 'Polish' }, { code: 'sv', label: 'Swedish' }, { code: 'da', label: 'Danish' }, { code: 'no', label: 'Norwegian' }, { code: 'fi', label: 'Finnish' }, { code: 'uk', label: 'Ukrainian' }, { code: 'cs', label: 'Czech' }, { code: 'ro', label: 'Romanian' }, { code: 'el', label: 'Greek' }, { code: 'he', label: 'Hebrew' }, { code: 'th', label: 'Thai' }, { code: 'vi', label: 'Vietnamese' }, { code: 'id', label: 'Indonesian' }, { code: 'ms', label: 'Malay' }, ]; const getLabel = (code: string) => LANGUAGES.find((l) => l.code === code)?.label ?? code; export const Languages = () => { const { settings, saveSettings } = useSettings(); const { spoken, default: defaultLang, translateTo } = settings.languages; const [addingLang, setAddingLang] = useState(''); const save = (languages: typeof settings.languages) => { saveSettings({ ...settings, languages }); }; const addSpoken = (code: string) => { if (!code || spoken.includes(code)) return; save({ ...settings.languages, spoken: [...spoken, code] }); setAddingLang(''); }; const removeSpoken = (code: string) => { const next = spoken.filter((s) => s !== code); const updates = { ...settings.languages, spoken: next }; if (defaultLang === code) updates.default = next[0] ?? 'en'; if (translateTo === code) updates.translateTo = next[0] ?? 'en'; save(updates); }; const availableToAdd = LANGUAGES.filter((l) => !spoken.includes(l.code)); return (