"use client";
import { Moon, Sun } from "lucide-react";
import { ThemeProvider, useTheme } from "next-themes";
import { useSyncExternalStore, type ReactNode } from "react";
import { IconButton } from "@/components/ui/button";
const noop = (): (() => void) => () => {};
/** true after hydration, false during SSR — without a setState-in-effect. */
export function useMounted(): boolean {
return useSyncExternalStore(noop, () => true, () => false);
}
export function Providers({ children }: { children: ReactNode }) {
return (
{children}
);
}
export function ThemeToggle({ className }: { className?: string }) {
const { resolvedTheme, setTheme } = useTheme();
const mounted = useMounted();
const dark = mounted ? resolvedTheme === "dark" : false;
return (
setTheme(dark ? "light" : "dark")} className={className}>
{dark ? : }
);
}