"use client"; import { MonitorSmartphoneIcon, MoonIcon, SunIcon } from "lucide-react"; import { useTheme } from "next-themes"; import { useMemo, type ComponentType, type SVGProps } from "react"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Separator } from "@/components/ui/separator"; import { enUS, zhCN, type Locale } from "@/core/i18n"; import { useI18n } from "@/core/i18n/hooks"; import { cn } from "@/lib/utils"; import { SettingsSection } from "./settings-section"; const languageOptions: { value: Locale; label: string }[] = [ { value: "en-US", label: enUS.locale.localName }, { value: "zh-CN", label: zhCN.locale.localName }, ]; export function AppearanceSettingsPage() { const { t, locale, changeLocale } = useI18n(); const { theme, setTheme, resolvedTheme } = useTheme(); const currentTheme = (theme ?? "system") as "system" | "light" | "dark"; const themeOptions = useMemo( () => [ { id: "system", label: t.settings.appearance.system, description: t.settings.appearance.systemDescription, icon: MonitorSmartphoneIcon, }, { id: "light", label: t.settings.appearance.light, description: t.settings.appearance.lightDescription, icon: SunIcon, }, { id: "dark", label: t.settings.appearance.dark, description: t.settings.appearance.darkDescription, icon: MoonIcon, }, ], [ t.settings.appearance.dark, t.settings.appearance.darkDescription, t.settings.appearance.light, t.settings.appearance.lightDescription, t.settings.appearance.system, t.settings.appearance.systemDescription, ], ); return (