"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 (
);
})}
);
}