import {useTranslation} from 'react-i18next'; import {SlidersHorizontal} from 'lucide-react'; import {toast} from 'sonner'; import {Card, CardContent, CardHeader, CardTitle} from '@/components/ui/card'; import {Label} from '@/components/ui/label'; import {Select, SelectContent, SelectItem, SelectTrigger, SelectValue} from '@/components/ui/select'; import {Switch} from '@/components/ui/switch'; import {useCurrentUserContext} from '../context/CurrentUserContext.jsx'; import {usePreferences} from '../context/PreferencesContext.jsx'; import usePersistSettings from '../hooks/usePersistSettings.js'; import useSaveResponse from '../hooks/useSaveResponse.js'; import {FAVORITE_PLATFORMS, saveFavoritePlatform} from '../utils/platforms.js'; import {LANGUAGES, saveSettings} from '../utils/settings.js'; // Radix Select has no empty value. const NO_FAVORITE = 'NONE'; export default function PreferencesCard() { const {t, i18n} = useTranslation(); const {user: profile, updateUser: updateProfile} = useCurrentUserContext(); const {isDarkMode, setDarkMode, setLanguage} = usePreferences(); const persistSettings = usePersistSettings(); const runSave = useSaveResponse(); const handleDarkThemeToggle = async () => { const next = !isDarkMode; setDarkMode(next); // apply on the fly await persistSettings(() => saveSettings({useDarkTheme: next})); }; const handleLanguageChange = async (next) => { await persistSettings(() => setLanguage(next)); }; const handleFavoritePlatformChange = async (value) => { const platform = value === NO_FAVORITE ? null : value; if (await runSave(() => saveFavoritePlatform(platform))) { updateProfile((p) => ({...p, settings: {...p.settings, favoritePlatform: platform}})); toast.success(t('SETTINGS.SAVED')); } }; return ( {t('SETTINGS.PREFERENCES')}

{t('SETTINGS.FAVORITE_PLATFORM_HINT')}

); }