"use client"; import { Moon, Sun } from "lucide-react"; import { useEffect, useState } from "react"; type Theme = "light" | "dark"; const STORAGE_KEY = "chatgpt2api-theme"; function resolveInitialTheme(): Theme { if (typeof window === "undefined") { return "light"; } const stored = window.localStorage.getItem(STORAGE_KEY); if (stored === "light" || stored === "dark") { return stored; } return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"; } function applyTheme(theme: Theme) { document.documentElement.classList.toggle("dark", theme === "dark"); document.documentElement.style.colorScheme = theme; } export function ThemeToggle() { const [theme, setTheme] = useState("light"); const isDark = theme === "dark"; useEffect(() => { const nextTheme = resolveInitialTheme(); setTheme(nextTheme); applyTheme(nextTheme); }, []); const toggleTheme = () => { const nextTheme: Theme = isDark ? "light" : "dark"; window.localStorage.setItem(STORAGE_KEY, nextTheme); setTheme(nextTheme); applyTheme(nextTheme); }; return ( ); }