stackpress
Version:
Incept is a content management framework.
26 lines (25 loc) • 1.08 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = ThemeProvider;
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = require("react");
const universal_cookie_1 = __importDefault(require("universal-cookie"));
const ThemeContext_js_1 = __importDefault(require("./ThemeContext.js"));
const cookie = new universal_cookie_1.default();
function ThemeProvider(props) {
const { children, theme: init = 'light' } = props;
const [theme, setTheme] = (0, react_1.useState)(init);
const toggle = () => {
const newTheme = theme === 'light' ? 'dark' : 'light';
setTheme(newTheme);
cookie.set('theme', newTheme);
};
const value = { theme, toggle };
(0, react_1.useEffect)(() => {
setTheme(cookie.get('theme') || init);
}, []);
return ((0, jsx_runtime_1.jsx)(ThemeContext_js_1.default.Provider, { value: value, children: children }));
}