Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
import { createTheme, alpha } from "@mui/material/styles"; | |
const getDesignTokens = (mode) => ({ | |
typography: { | |
fontFamily: [ | |
"-apple-system", | |
"BlinkMacSystemFont", | |
'"Segoe UI"', | |
"Roboto", | |
'"Helvetica Neue"', | |
"Arial", | |
"sans-serif", | |
].join(","), | |
h1: { | |
fontFamily: '"Source Sans Pro", sans-serif', | |
}, | |
h2: { | |
fontFamily: '"Source Sans Pro", sans-serif', | |
}, | |
h3: { | |
fontFamily: '"Source Sans Pro", sans-serif', | |
}, | |
h4: { | |
fontFamily: '"Source Sans Pro", sans-serif', | |
}, | |
h5: { | |
fontFamily: '"Source Sans Pro", sans-serif', | |
}, | |
h6: { | |
fontFamily: '"Source Sans Pro", sans-serif', | |
}, | |
subtitle1: { | |
fontFamily: '"Source Sans Pro", sans-serif', | |
}, | |
subtitle2: { | |
fontFamily: '"Source Sans Pro", sans-serif', | |
}, | |
}, | |
palette: { | |
mode, | |
primary: { | |
main: "#4F86C6", | |
light: mode === "light" ? "#7BA7D7" : "#6B97D7", | |
dark: mode === "light" ? "#2B5C94" : "#3B6CA4", | |
50: mode === "light" ? alpha("#4F86C6", 0.05) : alpha("#4F86C6", 0.15), | |
100: mode === "light" ? alpha("#4F86C6", 0.1) : alpha("#4F86C6", 0.2), | |
200: mode === "light" ? alpha("#4F86C6", 0.2) : alpha("#4F86C6", 0.3), | |
contrastText: "#fff", | |
}, | |
background: { | |
default: mode === "light" ? "#f8f9fa" : "#0a0a0a", | |
paper: mode === "light" ? "#fff" : "#1a1a1a", | |
subtle: mode === "light" ? "grey.100" : "grey.900", | |
hover: mode === "light" ? "action.hover" : alpha("#fff", 0.08), | |
tooltip: mode === "light" ? alpha("#212121", 0.9) : alpha("#fff", 0.9), | |
}, | |
text: { | |
primary: mode === "light" ? "rgba(0, 0, 0, 0.87)" : "#fff", | |
secondary: | |
mode === "light" ? "rgba(0, 0, 0, 0.6)" : "rgba(255, 255, 255, 0.7)", | |
disabled: | |
mode === "light" ? "rgba(0, 0, 0, 0.38)" : "rgba(255, 255, 255, 0.5)", | |
hint: | |
mode === "light" ? "rgba(0, 0, 0, 0.38)" : "rgba(255, 255, 255, 0.5)", | |
}, | |
divider: | |
mode === "light" ? "rgba(0, 0, 0, 0.12)" : "rgba(255, 255, 255, 0.12)", | |
action: { | |
active: | |
mode === "light" ? "rgba(0, 0, 0, 0.54)" : "rgba(255, 255, 255, 0.7)", | |
hover: | |
mode === "light" ? "rgba(0, 0, 0, 0.04)" : "rgba(255, 255, 255, 0.08)", | |
selected: | |
mode === "light" ? "rgba(0, 0, 0, 0.08)" : "rgba(255, 255, 255, 0.16)", | |
disabled: | |
mode === "light" ? "rgba(0, 0, 0, 0.26)" : "rgba(255, 255, 255, 0.3)", | |
disabledBackground: | |
mode === "light" ? "rgba(0, 0, 0, 0.12)" : "rgba(255, 255, 255, 0.12)", | |
}, | |
}, | |
shape: { | |
borderRadius: 8, | |
}, | |
components: { | |
MuiCssBaseline: { | |
styleOverrides: { | |
"html, body": { | |
backgroundColor: "background.default", | |
color: mode === "dark" ? "#fff" : "#000", | |
}, | |
body: { | |
"& *::-webkit-scrollbar": { | |
width: 8, | |
height: 8, | |
backgroundColor: "transparent", | |
}, | |
"& *::-webkit-scrollbar-thumb": { | |
borderRadius: 8, | |
backgroundColor: | |
mode === "light" ? alpha("#000", 0.2) : alpha("#fff", 0.1), | |
"&:hover": { | |
backgroundColor: | |
mode === "light" ? alpha("#000", 0.3) : alpha("#fff", 0.15), | |
}, | |
}, | |
}, | |
}, | |
}, | |
MuiButton: { | |
styleOverrides: { | |
root: { | |
borderRadius: 8, | |
}, | |
}, | |
}, | |
MuiPaper: { | |
defaultProps: { | |
elevation: 0, | |
}, | |
styleOverrides: { | |
root: { | |
backgroundImage: "none", | |
boxShadow: "none", | |
border: "1px solid", | |
borderColor: | |
mode === "light" | |
? "rgba(0, 0, 0, 0.12)!important" | |
: "rgba(255, 255, 255, 0.25)!important", | |
}, | |
rounded: { | |
borderRadius: 12, | |
}, | |
}, | |
}, | |
MuiTableCell: { | |
styleOverrides: { | |
root: { | |
borderColor: (theme) => | |
alpha( | |
theme.palette.divider, | |
theme.palette.mode === "dark" ? 0.1 : 0.2 | |
), | |
}, | |
head: { | |
backgroundColor: mode === "light" ? "grey.50" : "grey.900", | |
color: "text.primary", | |
fontWeight: 600, | |
}, | |
}, | |
}, | |
MuiTableRow: { | |
styleOverrides: { | |
root: { | |
backgroundColor: "transparent", | |
}, | |
}, | |
}, | |
MuiTableContainer: { | |
styleOverrides: { | |
root: { | |
backgroundColor: "background.paper", | |
borderRadius: 8, | |
border: "none", | |
boxShadow: "none", | |
}, | |
}, | |
}, | |
MuiSlider: { | |
styleOverrides: { | |
root: { | |
"& .MuiSlider-valueLabel": { | |
backgroundColor: "background.paper", | |
color: "text.primary", | |
border: "1px solid", | |
borderColor: "divider", | |
boxShadow: | |
mode === "light" | |
? "0px 2px 4px rgba(0, 0, 0, 0.1)" | |
: "0px 2px 4px rgba(0, 0, 0, 0.3)", | |
}, | |
}, | |
thumb: { | |
"&:hover": { | |
boxShadow: (theme) => | |
`0px 0px 0px 8px ${alpha( | |
theme.palette.primary.main, | |
mode === "light" ? 0.08 : 0.16 | |
)}`, | |
}, | |
"&.Mui-active": { | |
boxShadow: (theme) => | |
`0px 0px 0px 12px ${alpha( | |
theme.palette.primary.main, | |
mode === "light" ? 0.08 : 0.16 | |
)}`, | |
}, | |
}, | |
track: { | |
border: "none", | |
}, | |
rail: { | |
opacity: mode === "light" ? 0.38 : 0.3, | |
}, | |
mark: { | |
backgroundColor: mode === "light" ? "grey.400" : "grey.600", | |
}, | |
markLabel: { | |
color: "text.secondary", | |
}, | |
}, | |
}, | |
MuiTextField: { | |
styleOverrides: { | |
root: { | |
"& .MuiOutlinedInput-root": { | |
borderRadius: 8, | |
}, | |
}, | |
}, | |
}, | |
MuiChip: { | |
styleOverrides: { | |
root: { | |
borderRadius: 8, | |
}, | |
outlinedInfo: { | |
borderWidth: 2, | |
fontWeight: 600, | |
bgcolor: "info.100", | |
borderColor: "info.400", | |
color: "info.700", | |
"& .MuiChip-label": { | |
px: 1.2, | |
}, | |
"&:hover": { | |
bgcolor: "info.200", | |
}, | |
}, | |
outlinedWarning: { | |
borderWidth: 2, | |
fontWeight: 600, | |
bgcolor: "warning.100", | |
borderColor: "warning.400", | |
color: "warning.700", | |
"& .MuiChip-label": { | |
px: 1.2, | |
}, | |
"&:hover": { | |
bgcolor: "warning.200", | |
}, | |
}, | |
outlinedSuccess: { | |
borderWidth: 2, | |
fontWeight: 600, | |
bgcolor: "success.100", | |
borderColor: "success.400", | |
color: "success.700", | |
"& .MuiChip-label": { | |
px: 1.2, | |
}, | |
"&:hover": { | |
bgcolor: "success.200", | |
}, | |
}, | |
outlinedError: { | |
borderWidth: 2, | |
fontWeight: 600, | |
bgcolor: "error.100", | |
borderColor: "error.400", | |
color: "error.700", | |
"& .MuiChip-label": { | |
px: 1.2, | |
}, | |
"&:hover": { | |
bgcolor: "error.200", | |
}, | |
}, | |
outlinedPrimary: { | |
borderWidth: 2, | |
fontWeight: 600, | |
bgcolor: "primary.100", | |
borderColor: "primary.400", | |
color: "primary.700", | |
"& .MuiChip-label": { | |
px: 1.2, | |
}, | |
"&:hover": { | |
bgcolor: "primary.200", | |
}, | |
}, | |
outlinedSecondary: { | |
borderWidth: 2, | |
fontWeight: 600, | |
bgcolor: "secondary.100", | |
borderColor: "secondary.400", | |
color: "secondary.700", | |
"& .MuiChip-label": { | |
px: 1.2, | |
}, | |
"&:hover": { | |
bgcolor: "secondary.200", | |
}, | |
}, | |
}, | |
}, | |
MuiIconButton: { | |
styleOverrides: { | |
root: { | |
borderRadius: 8, | |
padding: "8px", | |
"&.MuiIconButton-sizeSmall": { | |
padding: "4px", | |
borderRadius: 6, | |
}, | |
}, | |
}, | |
}, | |
MuiTooltip: { | |
styleOverrides: { | |
tooltip: { | |
backgroundColor: | |
mode === "light" ? alpha("#212121", 0.9) : alpha("#424242", 0.9), | |
color: "#fff", | |
fontSize: "0.875rem", | |
padding: "8px 12px", | |
maxWidth: 400, | |
borderRadius: 8, | |
lineHeight: 1.4, | |
border: "1px solid", | |
borderColor: | |
mode === "light" ? alpha("#fff", 0.1) : alpha("#fff", 0.05), | |
boxShadow: | |
mode === "light" | |
? "0 2px 8px rgba(0, 0, 0, 0.15)" | |
: "0 2px 8px rgba(0, 0, 0, 0.5)", | |
"& b": { | |
fontWeight: 600, | |
color: "inherit", | |
}, | |
"& a": { | |
color: mode === "light" ? "#90caf9" : "#64b5f6", | |
textDecoration: "none", | |
"&:hover": { | |
textDecoration: "underline", | |
}, | |
}, | |
}, | |
arrow: { | |
color: | |
mode === "light" ? alpha("#212121", 0.9) : alpha("#424242", 0.9), | |
"&:before": { | |
border: "1px solid", | |
borderColor: | |
mode === "light" ? alpha("#fff", 0.1) : alpha("#fff", 0.05), | |
}, | |
}, | |
}, | |
defaultProps: { | |
arrow: true, | |
enterDelay: 400, | |
leaveDelay: 200, | |
}, | |
}, | |
MuiAppBar: { | |
styleOverrides: { | |
root: { | |
border: "none", | |
borderBottom: "none", | |
}, | |
}, | |
}, | |
}, | |
}); | |
const getTheme = (mode) => { | |
const tokens = getDesignTokens(mode); | |
return createTheme(tokens); | |
}; | |
export default getTheme; | |