import React, { createContext, useState, useContext, useEffect } from "react"; import { useDarkMode } from "storybook-dark-mode"; const ThemeContext = createContext(); export const ThemeProvider = ({ children }) => { const isDarkMode = useDarkMode(); const [theme, setTheme] = useState("light"); const toggleTheme = () => { setTheme((prevTheme) => (prevTheme === "light" ? "dark" : "light")); }; useEffect(() => { // You can use localStorage to persist the theme preference const savedTheme = localStorage.getItem("theme"); setTheme((isDarkMode ? "dark" : "light") || savedTheme); }, [isDarkMode]); useEffect(() => { document.documentElement.setAttribute("data-theme", theme); localStorage.setItem("theme", theme); }, [theme]); return ( <ThemeContext.Provider value={{ theme, toggleTheme }}> {children} </ThemeContext.Provider> ); }; export const useTheme = () => { const context = useContext(ThemeContext); if (!context) { throw new Error("useTheme must be used within a ThemeProvider"); } return context; }; export const decorators = [ (renderStory) => <ThemeProvider>{renderStory()}</ThemeProvider>, ];