"use client"; import { setLanguageCookie } from "@/lib/cookies"; import { Lang } from "@/lib/i18n"; import { APPEARANCE_STYLES, getComponentRoundness, getThemeConfig } from "@/lib/theme"; import { Listbox, ListboxButton, ListboxOption, ListboxOptions } from "@headlessui/react"; import { CheckIcon, ChevronDownIcon } from "@heroicons/react/24/outline"; import clsx from "clsx"; import { useLocale } from "next-intl"; import { useRouter } from "next/navigation"; import { useState } from "react"; // Helper function to get language switcher roundness from theme function getLanguageSwitcherRoundness(): string { return getComponentRoundness("button"); } // Helper function to get card appearance styles for the language switcher function getLanguageSwitcherCardAppearance(): string { const themeConfig = getThemeConfig(); const appearance = APPEARANCE_STYLES[themeConfig.appearance]; return appearance?.card || "bg-black/5 dark:bg-white/5"; // Fallback to current styling } export function LanguageSwitcher({ languages }: { languages: Lang[] }) { const currentLocale = useLocale(); const switcherRoundness = getLanguageSwitcherRoundness(); const cardAppearance = getLanguageSwitcherCardAppearance(); const [selected, setSelected] = useState(languages.find((l) => l.code === currentLocale) || languages[0]); const router = useRouter(); const handleChange = async (language: Lang) => { setSelected(language); const newLocale = language.code; await setLanguageCookie(newLocale); router.refresh(); }; return (