"use client"; import { Moon, Sun } from "lucide-react"; import { useTheme } from "next-themes"; import { useEffect, useState } from "react"; import { Button, type ButtonProps } from "@/components/ui/button"; import { cn } from "@/lib/utils"; type ThemeToggleProps = { ariaLabel?: string; label?: string; variant?: ButtonProps["variant"]; className?: string; iconClassName?: string; }; export function ThemeToggle({ ariaLabel = "Toggle theme", label, variant = "outline", className, iconClassName, }: ThemeToggleProps) { const { setTheme, theme, resolvedTheme } = useTheme(); const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); }, []); if (!mounted) { return ( ); } const activeTheme = theme === "system" ? resolvedTheme : theme; const isDark = activeTheme === "dark"; return ( ); }