Theme/Style Configuration
Defines core of theme. How theme is being set using Material-UI.
Theme configuration
import { ReactNode, useMemo } from 'react';
// material-ui
import { createTheme, StyledEngineProvider, ThemeOptions, ThemeProvider, Theme, TypographyVariantsOptions } from '@mui/material/styles';
import CssBaseline from '@mui/material/CssBaseline';
// project imports
import { CSS_VAR_PREFIX, DEFAULT_THEME_MODE, ThemeMode } from 'config';
import useConfig from 'hooks/useConfig';
import CustomShadows from './custom-shadows';
import componentsOverride from './overrides';
import { buildPalette } from './palette';
import Typography from './typography';
// types
import type {} from './extend-theme-types';
type ThemeCustomizationProps = {
children: ReactNode;
};
// ==============================|| DEFAULT THEME - MAIN ||============================== //
export default function ThemeCustomization({ children }: ThemeCustomizationProps) {
const { state } = useConfig();
const themeTypography: TypographyVariantsOptions = useMemo<TypographyVariantsOptions>(
() => Typography(state.fontFamily!),
[state.fontFamily]
);
const palette = useMemo(() => buildPalette(state.presetColor), [state.presetColor]);
const themeOptions: ThemeOptions = useMemo(
() => ({
breakpoints: {
values: {
xs: 0,
sm: 768,
md: 1024,
lg: 1266,
xl: 1440
}
},
direction: state.themeDirection,
mixins: {
toolbar: {
minHeight: 60,
paddingTop: 8,
paddingBottom: 8
}
},
typography: themeTypography,
colorSchemes: {
light: {
palette: palette.light,
customShadows: CustomShadows(palette.light, ThemeMode.LIGHT)
},
dark: {
palette: palette.dark,
customShadows: CustomShadows(palette.dark, ThemeMode.DARK)
}
},
cssVariables: {
cssVarPrefix: CSS_VAR_PREFIX,
colorSchemeSelector: 'data-color-scheme'
}
}),
[state.themeDirection, themeTypography, palette]
);
const themes: Theme = createTheme(themeOptions);
themes.components = componentsOverride(themes);
return (
<StyledEngineProvider injectFirst>
<ThemeProvider disableTransitionOnChange theme={themes} modeStorageKey="theme-mode" defaultMode={DEFAULT_THEME_MODE}>
<CssBaseline enableColorScheme />
{children}
</ThemeProvider>
</StyledEngineProvider>
);
}
How to customize it?
Customize Theme Colors
Customize Theme Typography
Customize MUI Component style
Last updated