"use client"; import { useTheme } from "next-themes"; import { Moon, Sun } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Tooltip, TooltipContent, TooltipTrigger, } from "@/components/ui/tooltip"; import { useSyncExternalStore } from "react"; const emptySubscribe = () => () => {}; function useMounted() { return useSyncExternalStore( emptySubscribe, () => true, () => false, ); } export function ThemeToggle() { const { resolvedTheme, setTheme } = useTheme(); const mounted = useMounted(); // Avoid hydration mismatch — on the server and during hydration, render a placeholder if (!mounted) { return ( ); } const isDark = resolvedTheme === "dark"; return ( setTheme(isDark ? "light" : "dark")} aria-label={isDark ? "Switch to light mode" : "Switch to dark mode"} /> } > {isDark ? : } {isDark ? "Light mode" : "Dark mode"} ); }