UNPKG

@helpwave/hightide

Version:

helpwave's component and theming library

40 lines 1.08 kB
// src/hooks/useTheme.tsx import { useContext } from "react"; import { createContext, useState, useEffect } from "react"; import { jsx } from "react/jsx-runtime"; var defaultThemeTypeTranslation = { en: { dark: "Dark", light: "Light" }, de: { dark: "Dunkel", light: "Hell" } }; var ThemeContext = createContext({ theme: "light", setTheme: (_) => { } }); var ThemeProvider = ({ children, initialTheme = "light" }) => { const [theme, setTheme] = useState(initialTheme); useEffect(() => { if (theme !== initialTheme) { console.warn("ThemeProvider initial state changed: Prefer using useTheme's setTheme instead"); setTheme(initialTheme); } }, [initialTheme]); useEffect(() => { document.documentElement.setAttribute("data-theme", theme); }, [theme]); return /* @__PURE__ */ jsx(ThemeContext.Provider, { value: { theme, setTheme }, children }); }; var useTheme = () => useContext(ThemeContext); export { ThemeContext, ThemeProvider, defaultThemeTypeTranslation, useTheme }; //# sourceMappingURL=useTheme.mjs.map