"use client"; import React, { createContext, useContext, useEffect, useState } from "react"; type Theme = "light" | "dark"; const ThemeContext = createContext<{ theme: Theme; setTheme: (theme: Theme) => void; toggleTheme: () => void; } | null>(null); const STORAGE_KEY = "techwix-theme"; export function ThemeProvider({ children }: { children: React.ReactNode }) { const [theme, setThemeState] = useState("light"); const [mounted, setMounted] = useState(false); useEffect(() => { const isDark = document.documentElement.classList.contains("dark"); setThemeState(isDark ? "dark" : "light"); setMounted(true); }, []); const setTheme = (next: Theme) => { setThemeState(next); localStorage.setItem(STORAGE_KEY, next); document.documentElement.classList.toggle("dark", next === "dark"); }; const toggleTheme = () => { setTheme(theme === "dark" ? "light" : "dark"); }; return ( {children} ); } export function useTheme() { const ctx = useContext(ThemeContext); if (!ctx) throw new Error("useTheme must be used within ThemeProvider"); return ctx; }