"use client"; import { useEffect, useState } from "react"; import { Moon, Sun } from "lucide-react"; import { useTheme } from "@/components/theme-provider"; import type { ThemeMode } from "@/lib/theme"; import { cn } from "@/lib/utils"; interface ThemeToggleProps { className?: string; compact?: boolean; } export function ThemeToggle({ className, compact }: ThemeToggleProps) { const { theme, setTheme } = useTheme(); const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); }, []); return (
{(["light", "dark"] as ThemeMode[]).map((mode) => { const active = mounted && theme === mode; const label = mode === "light" ? "淺色" : "深色"; const Icon = mode === "light" ? Sun : Moon; return ( ); })}
); }