nice-ui
Version:
React design system, components, and utilities
34 lines (33 loc) • 1.91 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.NiceUiProvider = void 0;
const React = require("react");
const contentSize = require("./content-size");
const nanoTheme = require("nano-theme");
const router_1 = require("../misc/router");
const context_1 = require("../7-fullscreen/ToastCardManager/context");
const services_1 = require("./services");
const NiceUiServices_1 = require("./services/NiceUiServices");
const useBehaviorSubject_1 = require("../hooks/useBehaviorSubject");
const ToastCardManager_1 = require("../7-fullscreen/ToastCardManager");
const context_2 = require("../styles/context");
const portal_1 = require("../utils/portal");
require("../misc/global-css");
const NiceUiProvider = ({ theme, nav, content, children }) => {
const services = React.useMemo(() => new NiceUiServices_1.NiceUiServices({
nav,
content,
}), [nav, content]);
const pathname = (0, useBehaviorSubject_1.useBehaviorSubject)(services.nav.pathname$);
const theme2 = (0, useBehaviorSubject_1.useBehaviorSubject)(services.theme$);
return (React.createElement(services_1.context.Provider, { value: services },
React.createElement(nanoTheme.Provider, { theme: theme ?? (theme2 === 'dark' ? 'dark' : 'light') },
React.createElement(context_2.Provider, { dark: theme2 === 'dark' },
React.createElement(context_1.ToastsProvider, null,
React.createElement(portal_1.PortalProvider, null,
React.createElement(nanoTheme.GlobalCss, null),
React.createElement(contentSize.context.Provider, { value: contentSize.DEFAULT },
React.createElement(router_1.Router, { route: pathname }, children)),
React.createElement(ToastCardManager_1.ToastCardManager, null)))))));
};
exports.NiceUiProvider = NiceUiProvider;
;