import { normalTheme, Theme } from "./themes"; import { createContext, ReactNode, useContext, useEffect, useState, } from "react"; interface ThemeContextProps { children: ReactNode; } interface ThemeContextValue { theme: Theme; setTheme: (theme: Theme) => void; } const themeContext = createContext({ theme: normalTheme, setTheme: () => {}, }); const ThemeProvider = ({ children }: ThemeContextProps) => { const [theme, setTheme] = useState(normalTheme); useEffect(() => { if (theme.backgroundColor) { document.body.style.backgroundColor = theme.backgroundColor; document.body.style.backgroundImage = "unset"; } else if (theme.backgroundImage) { document.body.style.backgroundColor = "unset"; document.body.style.backgroundImage = theme.backgroundImage; } document.body.style.color = theme.textColor; document.body.style.borderColor = theme.textColor; }, [theme]); return ( {children} ); }; function useTheme() { return useContext(themeContext); } export { ThemeProvider, useTheme };