43 lines
1.5 KiB
Plaintext
43 lines
1.5 KiB
Plaintext
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
||
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
||
|
const _excluded = ["breakpoints", "palette", "spacing", "shape"];
|
||
|
import deepmerge from '@mui/utils/deepmerge';
|
||
|
import createBreakpoints from './createBreakpoints';
|
||
|
import shape from './shape';
|
||
|
import createSpacing from './createSpacing';
|
||
|
import styleFunctionSx from '../styleFunctionSx/styleFunctionSx';
|
||
|
import defaultSxConfig from '../styleFunctionSx/defaultSxConfig';
|
||
|
import applyStyles from './applyStyles';
|
||
|
function createTheme(options = {}, ...args) {
|
||
|
const {
|
||
|
breakpoints: breakpointsInput = {},
|
||
|
palette: paletteInput = {},
|
||
|
spacing: spacingInput,
|
||
|
shape: shapeInput = {}
|
||
|
} = options,
|
||
|
other = _objectWithoutPropertiesLoose(options, _excluded);
|
||
|
const breakpoints = createBreakpoints(breakpointsInput);
|
||
|
const spacing = createSpacing(spacingInput);
|
||
|
let muiTheme = deepmerge({
|
||
|
breakpoints,
|
||
|
direction: 'ltr',
|
||
|
components: {},
|
||
|
// Inject component definitions.
|
||
|
palette: _extends({
|
||
|
mode: 'light'
|
||
|
}, paletteInput),
|
||
|
spacing,
|
||
|
shape: _extends({}, shape, shapeInput)
|
||
|
}, other);
|
||
|
muiTheme.applyStyles = applyStyles;
|
||
|
muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);
|
||
|
muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other?.unstable_sxConfig);
|
||
|
muiTheme.unstable_sx = function sx(props) {
|
||
|
return styleFunctionSx({
|
||
|
sx: props,
|
||
|
theme: this
|
||
|
});
|
||
|
};
|
||
|
return muiTheme;
|
||
|
}
|
||
|
export default createTheme;
|