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;