"use client" import { Monitor, Moon, RotateCcw, Sun, Type } from "lucide-react" import { useTranslations } from "next-intl" import { useTheme } from "next-themes" import { Button } from "@/components/ui/button" import { ScrollArea } from "@/components/ui/scroll-area" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" import { useThemeColor, useZoomLevel } from "@/hooks/use-appearance" import { cn } from "@/lib/utils" import { DEFAULT_THEME_COLOR, DEFAULT_ZOOM_LEVEL, THEME_COLOR_PREVIEW, THEME_COLORS, ZOOM_LEVELS, type ThemeColor, type ZoomLevel, } from "@/lib/theme-presets" type ThemeMode = "system" | "light" | "dark" export function AppearanceSettings() { const t = useTranslations("AppearanceSettings") const { theme, resolvedTheme, setTheme } = useTheme() const { themeColor, setThemeColor } = useThemeColor() const { zoomLevel, setZoomLevel } = useZoomLevel() const resolvedThemeLabel = resolvedTheme === "dark" ? t("resolvedTheme.dark") : resolvedTheme === "light" ? t("resolvedTheme.light") : t("resolvedTheme.unknown") const isAtDefaults = themeColor === DEFAULT_THEME_COLOR && zoomLevel === DEFAULT_ZOOM_LEVEL const handleResetToDefaults = () => { setThemeColor(DEFAULT_THEME_COLOR) setZoomLevel(DEFAULT_ZOOM_LEVEL) } return (
{/* ===== Theme Mode (existing) ===== */}

{t("sectionTitle")}

{t("sectionDescription")}

{t("currentTheme", { theme: resolvedThemeLabel })}

{/* ===== Theme Color (new) ===== */}

{t("themeColor.sectionTitle")}

{t("themeColor.sectionDescription")}

{THEME_COLORS.map((color) => { const isActive = themeColor === color return ( ) })}

{t("themeColor.current", { color: t(`themeColor.options.${themeColor}`), })}

{/* ===== Zoom Level (new) ===== */}

{t("zoomLevel.sectionTitle")}

{t("zoomLevel.sectionDescription")}

{t("zoomLevel.current", { zoom: zoomLevel })}

{/* ===== Reset to defaults (new) ===== */}
) }