UNPKG

mui-extended

Version:

Extended UI Components built on Material UI

26 lines (25 loc) 1.3 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { createTheme, ThemeProvider, responsiveFontSizes } from "@mui/material"; import { createContext, useContext, useMemo, useState } from "react"; import { deepmerge } from "@mui/utils"; var ThemeOptionsContext = createContext({ themeOptions: {}, setThemeOptions: function () { // don't do anything } }); export var useThemeOptions = function () { return useContext(ThemeOptionsContext); }; export var ThemeOptionsProvider = function (_a) { var children = _a.children, _b = _a.themeOptions, themeOptionsFromProp = _b === void 0 ? {} : _b; var _c = useState({}), themeOptions = _c[0], setThemeOptions = _c[1]; var themeOptionsFromContext = useThemeOptions().themeOptions; var theme = useMemo(function () { return responsiveFontSizes(createTheme(deepmerge(deepmerge(themeOptionsFromContext, themeOptionsFromProp), themeOptions))); }, [themeOptionsFromContext, themeOptionsFromProp, themeOptions]); return (_jsx(ThemeOptionsContext.Provider, { value: { themeOptions: deepmerge(deepmerge(themeOptionsFromContext, themeOptionsFromProp), themeOptions), setThemeOptions: setThemeOptions }, children: _jsx(ThemeProvider, { theme: theme, children: children }) })); };