@jeact/mui-dynamic-theme
Version:
Adds dynamism to the MUI theme, like dark-mode, theme togglers and more colors
39 lines (35 loc) • 1.44 kB
text/typescript
import type { ThemeOptions, PaletteMode } from '@mui/material'
import type { MUIColorObjectKey, NewPalette } from '../types'
import extractColorFromMUIColorObject from './extractColorFromMUIColorObject'
// "Rename" function to save space
const color = extractColorFromMUIColorObject
export default function newPaletteToThemeOptions(
mode:PaletteMode,
newPalette?:NewPalette,
lightShade?: MUIColorObjectKey,
darkShade?: MUIColorObjectKey
):ThemeOptions {
if(newPalette){
// "Rename" to save space
const l = lightShade
const d = darkShade
return {
palette: {
mode: mode,
...(newPalette.primary ? {primary: color(newPalette.primary, mode, l, d)} : undefined),
...(newPalette.secondary ? {secondary: color(newPalette.secondary, mode, l, d)} : undefined),
...(newPalette.success ? {success: color(newPalette.success, mode, l, d)} : undefined),
...(newPalette.warning ? {warning: color(newPalette.warning, mode, l, d)} : undefined),
...(newPalette.error ? {error: color(newPalette.error, mode, l, d)} : undefined),
...(newPalette.info ? {info: color(newPalette.info, mode, l, d)} : undefined)
}
}
}
else{
return {
palette: {
mode: mode
}
}
}
}