import { type LangCode, supportedLanguages } from "@app/i18n-config.ts"; import useLang from "@core/hooks/useLang.ts"; import { cn } from "@core/utils/cn.ts"; import { Check, Languages } from "lucide-react"; import { useCallback } from "react"; import { useTranslation } from "react-i18next"; import { Button } from "./UI/Button.tsx"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "./UI/DropdownMenu.tsx"; import { Subtle } from "./UI/Typography/Subtle.tsx"; interface LanguageSwitcherProps { disableHover?: boolean; } export default function LanguageSwitcher({ disableHover = false, }: LanguageSwitcherProps) { const { i18n } = useTranslation("ui"); const { set: setLanguage, current, getSupportedLangs } = useLang(); const handleLanguageChange = useCallback( async (languageCode: LangCode) => { await setLanguage(languageCode, true); }, [setLanguage], ); return ( {getSupportedLangs.map((language) => ( handleLanguageChange(language.code)} className="flex items-center justify-between cursor-pointer" >
{language.flag} {language.name}
{i18n.language === language.code && ( )}
))}
); }