"use client"; import { useState, useEffect, useCallback } from "react"; type Theme = "light" | "dark"; export function useTheme() { const [theme, setThemeState] = useState("light"); const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); const stored = localStorage.getItem("heartbeads-theme") as Theme | null; const preferred = stored || (window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"); setThemeState(preferred); document.documentElement.classList.toggle("dark", preferred === "dark"); }, []); const setTheme = useCallback((t: Theme) => { setThemeState(t); localStorage.setItem("heartbeads-theme", t); document.documentElement.classList.toggle("dark", t === "dark"); }, []); const toggleTheme = useCallback(() => { setTheme(theme === "dark" ? "light" : "dark"); }, [theme, setTheme]); return { theme, setTheme, toggleTheme, mounted }; }