"use client" import { createContext, ReactNode, useContext, useEffect, useState, } from "react" const DEFAULT_THEME = "default" type ThemeContextType = { activeTheme: string setActiveTheme: (theme: string) => void } const ThemeContext = createContext(undefined) export function ActiveThemeProvider({ children, initialTheme, }: { children: ReactNode initialTheme?: string }) { const [activeTheme, setActiveTheme] = useState( () => initialTheme || DEFAULT_THEME ) useEffect(() => { Array.from(document.body.classList) .filter((className) => className.startsWith("theme-")) .forEach((className) => { document.body.classList.remove(className) }) document.body.classList.add(`theme-${activeTheme}`) if (activeTheme.endsWith("-scaled")) { document.body.classList.add("theme-scaled") } }, [activeTheme]) return ( {children} ) } export function useThemeConfig() { const context = useContext(ThemeContext) if (context === undefined) { throw new Error("useThemeConfig must be used within an ActiveThemeProvider") } return context }