Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | 91x 91x 91x 91x 91x 91x 91x 91x 91x | import { createTheme } from "@mui/material/styles";
import { colorPresets } from "@/theme/ThemePresets";
import { palette } from "@/theme/ui/palette";
import { shadows } from "@/theme/ui/shadows";
import { typography } from "@/theme/ui/typography";
import { customShadows } from "@/theme/ui/custom-shadows";
import { componentsOverrides } from "@/theme/ui/overrides";
import { createPresets } from "@/theme/ui/options/presets";
import { resolveThemePreset } from "@/theme/ui/presetMap";
/**
* Build the Erudition UI MUI theme from shared tokens and component overrides.
* @param {"light" | "dark" | { mode?: "light" | "dark", preset?: string, direction?: "ltr" | "rtl" }} modeOrOptions
* @param {string} [presetName] — app preset when first arg is a mode string
* @param {"ltr" | "rtl"} [direction]
*/
export function createUiTheme(modeOrOptions = "light", presetName = "default", direction = "ltr") {
const options =
typeof modeOrOptions === "object" && modeOrOptions !== null
? modeOrOptions
: { mode: modeOrOptions, preset: presetName, direction };
const { mode = "light", preset = "default", direction: dir = "ltr" } = options;
const palettePreset = resolveThemePreset(preset);
const presets = createPresets(palettePreset);
const basePalette = palette(mode);
const appPreset = colorPresets[preset] || colorPresets.default;
const theme = createTheme({
palette: {
...basePalette,
...presets.palette,
colorTheme: {
main: presets.palette.primary.main,
light: presets.palette.primary.light,
dark: presets.palette.primary.dark,
contrastText: presets.palette.primary.contrastText,
},
presetName: preset,
},
customShadows: {
...customShadows(mode),
...presets.customShadows,
},
direction: dir,
shadows: shadows(mode),
shape: { borderRadius: 4 },
typography,
presetGradient: appPreset.gradient,
});
theme.components = componentsOverrides(theme);
return theme;
}
export default createUiTheme;
|