comissions-app-ui/core/theme/ThemeComponent.tsx
2024-02-18 01:44:48 -05:00

61 lines
1.6 KiB
TypeScript

// ** 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 (
<ThemeProvider theme={theme}>
<CssBaseline />
<GlobalStyles styles={() => GlobalStyling(theme) as any} />
{children}
</ThemeProvider>
)
}
export default ThemeComponent