react-garden
Version:
React + TypeScript + ThreeJS app using Material UI on NextJS, Apollo Client, GraphQL + WordPress REST APIs, for ThreeD web development.. a part of the threed.ai code family.
73 lines (64 loc) • 1.9 kB
JavaScript
// ** MUI Theme Provider
import { deepmerge } from '@mui/utils'
// ** User Theme Options
import UserThemeOptions from '~/layouts/UserThemeOptions'
// ** Theme Override Imports
import palette from './palette'
import spacing from './spacing'
import shadows from './shadows'
import breakpoints from './breakpoints'
const themeOptions = settings => {
// ** Vars
const { skin, mode, direction, themeColor } = settings
// ** Create New object before removing user component overrides and typography objects from userThemeOptions
const userThemeConfig = Object.assign({}, UserThemeOptions())
const userFontFamily = userThemeConfig.typography?.fontFamily
// ** Remove component overrides and typography objects from userThemeOptions
delete userThemeConfig.components
delete userThemeConfig.typography
const mergedThemeConfig = deepmerge(
// eslint-disable-next-line object-shorthand
{
direction,
palette: palette(mode, skin, themeColor),
typography: {
fontFamily:
userFontFamily ||
[
'Inter',
'sans-serif',
'-apple-system',
'BlinkMacSystemFont',
'"Segoe UI"',
'Roboto',
'"Helvetica Neue"',
'Arial',
'sans-serif',
'"Apple Color Emoji"',
'"Segoe UI Emoji"',
'"Segoe UI Symbol"'
].join(',')
},
shadows: shadows(mode),
...spacing,
breakpoints: breakpoints(),
shape: {
borderRadius: 6
},
mixins: {
toolbar: {
minHeight: 64
}
}
},
userThemeConfig
)
return deepmerge(mergedThemeConfig, {
palette: {
primary: {
...mergedThemeConfig.palette[themeColor]
}
}
})
}
export default themeOptions