@helpwave/hightide
Version:
helpwave's component and theming library
40 lines • 1.08 kB
JavaScript
// 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