import React, { createContext, useContext, useEffect, useState, ReactNode, } from "react"; type Theme = "light" | "dark"; interface ThemeContextType { theme: Theme; setTheme: (theme: Theme) => void; toggleTheme: () => void; } const ThemeContext = createContext(undefined); export function ThemeProvider({ children }: { children: ReactNode }) { const [theme, setTheme] = useState(() => { const saved = localStorage.getItem("agentgraph-theme"); return (saved as Theme) || "light"; }); useEffect(() => { localStorage.setItem("agentgraph-theme", theme); // Update document class document.documentElement.classList.remove("light", "dark"); document.documentElement.classList.add(theme); }, [theme]); const toggleTheme = () => { setTheme((prev) => (prev === "light" ? "dark" : "light")); }; return ( {children} ); } export function useTheme() { const context = useContext(ThemeContext); if (context === undefined) { throw new Error("useTheme must be used within a ThemeProvider"); } return context; }