// ** React Imports import { ReactNode } from 'react' // ** MUI Imports import CssBaseline from '@mui/material/CssBaseline' import GlobalStyles from '@mui/material/GlobalStyles' import { ThemeProvider, createTheme, responsiveFontSizes } from '@mui/material/styles' // ** Type Imports import { Settings } from '../../core/context/settingsContext' // ** Theme Config import themeConfig from '../../configs/themeConfig' // ** Theme Override Imports import overrides from './overrides' import typography from './typography' // ** Theme import themeOptions from './ThemeOptions' // ** Global Styles import GlobalStyling from './globalStyles' interface Props { settings: Settings children: ReactNode } const ThemeComponent = (props: Props) => { // ** Props const { settings, children } = props // ** Merged ThemeOptions of Core and User const coreThemeConfig = themeOptions(settings) // ** Pass ThemeOptions to CreateTheme Function to create partial theme without component overrides let theme = createTheme(coreThemeConfig) // ** Continue theme creation and pass merged component overrides to CreateTheme function theme = createTheme(theme, { components: { ...overrides(theme) }, typography: { ...typography(theme) } }) // ** Set responsive font sizes to true if (themeConfig.responsiveFontSizes) { theme = responsiveFontSizes(theme) } return ( GlobalStyling(theme) as any} /> {children} ) } export default ThemeComponent