// frontend/components/settings/AppearanceTab.tsx — 테마(라이트/다크) — next-themes 실제 적용 "use client"; import { useEffect, useState } from "react"; import { useTheme } from "next-themes"; import { Icon } from "@/components/Icon"; import type { ToastFn } from "./SettingsClient"; const THEMES = [ { id: "light", label: "라이트", icon: "sun" as const, desc: "밝은 글래스" }, { id: "dark", label: "다크", icon: "moon" as const, desc: "어두운 글래스" }, ]; export function AppearanceTab({ toast }: { toast: ToastFn }) { const { theme, resolvedTheme, setTheme } = useTheme(); const [mounted, setMounted] = useState(false); useEffect(() => setMounted(true), []); const current = mounted ? (resolvedTheme ?? theme ?? "light") : "light"; const pick = (id: string) => { setTheme(id); toast(`${id === "dark" ? "다크" : "라이트"} 테마로 바꿨어요`, "blue"); }; return (

외관

테마는 이 브라우저에 저장돼요.

{THEMES.map((t) => ( ))}
); }