mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-05-06 11:39:36 +00:00
95 lines
6.7 KiB
TypeScript
95 lines
6.7 KiB
TypeScript
import { ThemeOptions, alpha } from '@mui/material/styles'
|
|
import { colors } from './colors'
|
|
import { fonts } from './fonts'
|
|
|
|
export const getComponentOverrides = (mode: 'light' | 'dark'): ThemeOptions['components'] => {
|
|
const isDark = mode === 'dark'
|
|
const n = colors.neutral
|
|
|
|
return {
|
|
MuiCssBaseline: {
|
|
styleOverrides: {
|
|
':root': { '--font-body': fonts.body, '--font-heading': fonts.heading, '--font-mono': fonts.mono },
|
|
html: { scrollBehavior: 'smooth' },
|
|
body: { WebkitFontSmoothing: 'antialiased', MozOsxFontSmoothing: 'grayscale' },
|
|
'code, pre, kbd': { fontFamily: fonts.mono },
|
|
'::selection': { backgroundColor: isDark ? colors.primary.dark.main : colors.primary.light.main, color: '#fff' },
|
|
'::-webkit-scrollbar': { width: 8, height: 8 },
|
|
'::-webkit-scrollbar-track': { backgroundColor: isDark ? n[800] : n[100] },
|
|
'::-webkit-scrollbar-thumb': { backgroundColor: isDark ? n[600] : n[400], borderRadius: 4 },
|
|
},
|
|
},
|
|
MuiButton: {
|
|
defaultProps: { disableElevation: true },
|
|
styleOverrides: {
|
|
root: { borderRadius: 8, textTransform: 'none', fontWeight: 500, padding: '8px 16px' },
|
|
sizeSmall: { padding: '4px 12px', fontSize: '0.8125rem' },
|
|
sizeLarge: { padding: '12px 24px', fontSize: '0.9375rem' },
|
|
containedPrimary: { '&:hover': { boxShadow: `0 4px 12px ${alpha(isDark ? colors.primary.dark.main : colors.primary.light.main, 0.4)}` } },
|
|
},
|
|
},
|
|
MuiCard: {
|
|
defaultProps: { elevation: 0 },
|
|
styleOverrides: { root: { borderRadius: 12, border: `1px solid ${isDark ? n[800] : n[200]}`, backgroundImage: 'none' } },
|
|
},
|
|
MuiCardHeader: {
|
|
styleOverrides: {
|
|
root: { padding: '20px 24px 16px' },
|
|
title: { fontFamily: fonts.heading, fontWeight: 600, fontSize: '1.125rem' },
|
|
subheader: { fontSize: '0.875rem', color: isDark ? n[400] : n[600] },
|
|
},
|
|
},
|
|
MuiCardContent: { styleOverrides: { root: { padding: '16px 24px', '&:last-child': { paddingBottom: 24 } } } },
|
|
MuiCardActions: { styleOverrides: { root: { padding: '16px 24px', borderTop: `1px solid ${isDark ? n[800] : n[200]}` } } },
|
|
MuiPaper: { defaultProps: { elevation: 0 }, styleOverrides: { root: { backgroundImage: 'none' }, outlined: { borderColor: isDark ? n[800] : n[200] } } },
|
|
MuiTextField: {
|
|
defaultProps: { variant: 'outlined', size: 'small' },
|
|
styleOverrides: {
|
|
root: {
|
|
'& .MuiOutlinedInput-root': { borderRadius: 8, backgroundColor: isDark ? n[900] : '#fff' },
|
|
'& .MuiOutlinedInput-notchedOutline': { borderColor: isDark ? n[700] : n[300] },
|
|
},
|
|
},
|
|
},
|
|
MuiOutlinedInput: { styleOverrides: { root: { borderRadius: 8 } } },
|
|
MuiSelect: { styleOverrides: { root: { borderRadius: 8 } } },
|
|
MuiChip: { styleOverrides: { root: { borderRadius: 6, fontWeight: 500 }, sizeSmall: { height: 24 } } },
|
|
MuiAlert: {
|
|
styleOverrides: {
|
|
root: { borderRadius: 8, alignItems: 'center' },
|
|
standardSuccess: { backgroundColor: alpha(isDark ? colors.success.dark.main : colors.success.light.main, isDark ? 0.15 : 0.1) },
|
|
standardError: { backgroundColor: alpha(isDark ? colors.error.dark.main : colors.error.light.main, isDark ? 0.15 : 0.1) },
|
|
standardWarning: { backgroundColor: alpha(isDark ? colors.warning.dark.main : colors.warning.light.main, isDark ? 0.15 : 0.1) },
|
|
standardInfo: { backgroundColor: alpha(isDark ? colors.info.dark.main : colors.info.light.main, isDark ? 0.15 : 0.1) },
|
|
},
|
|
},
|
|
MuiDialog: { styleOverrides: { paper: { borderRadius: 16 } } },
|
|
MuiDialogTitle: { styleOverrides: { root: { fontFamily: fonts.heading, fontWeight: 600, fontSize: '1.25rem', padding: '24px 24px 16px' } } },
|
|
MuiDialogContent: { styleOverrides: { root: { padding: '16px 24px' } } },
|
|
MuiDialogActions: { styleOverrides: { root: { padding: '16px 24px 24px', gap: 8 } } },
|
|
MuiTable: { styleOverrides: { root: { borderCollapse: 'separate', borderSpacing: 0 } } },
|
|
MuiTableHead: { styleOverrides: { root: { '& .MuiTableCell-root': { fontWeight: 600, backgroundColor: isDark ? n[900] : n[50], borderBottom: `2px solid ${isDark ? n[700] : n[300]}` } } } },
|
|
MuiTableCell: { styleOverrides: { root: { borderBottom: `1px solid ${isDark ? n[800] : n[200]}`, padding: '12px 16px' } } },
|
|
MuiTableRow: { styleOverrides: { root: { '&:hover': { backgroundColor: isDark ? alpha(n[700], 0.3) : alpha(n[100], 0.5) } } } },
|
|
MuiTabs: { styleOverrides: { root: { minHeight: 48 }, indicator: { height: 3, borderRadius: '3px 3px 0 0' } } },
|
|
MuiTab: { styleOverrides: { root: { textTransform: 'none', fontWeight: 500, minHeight: 48, padding: '12px 16px' } } },
|
|
MuiTooltip: { styleOverrides: { tooltip: { backgroundColor: isDark ? n[700] : n[900], fontSize: '0.75rem', padding: '6px 12px', borderRadius: 6 }, arrow: { color: isDark ? n[700] : n[900] } } },
|
|
MuiMenu: { styleOverrides: { paper: { borderRadius: 8, border: `1px solid ${isDark ? n[800] : n[200]}` } } },
|
|
MuiMenuItem: { styleOverrides: { root: { padding: '8px 16px', borderRadius: 4, margin: '2px 8px' } } },
|
|
MuiDrawer: { styleOverrides: { paper: { borderRight: `1px solid ${isDark ? n[800] : n[200]}` } } },
|
|
MuiAppBar: { defaultProps: { elevation: 0 }, styleOverrides: { root: { backgroundColor: isDark ? n[900] : '#fff', borderBottom: `1px solid ${isDark ? n[800] : n[200]}` } } },
|
|
MuiDivider: { styleOverrides: { root: { borderColor: isDark ? n[800] : n[200] } } },
|
|
MuiAvatar: { styleOverrides: { root: { fontFamily: fonts.heading, fontWeight: 600 } } },
|
|
MuiBadge: { styleOverrides: { badge: { fontWeight: 600, fontSize: '0.6875rem' } } },
|
|
MuiLinearProgress: { styleOverrides: { root: { borderRadius: 4, height: 6 } } },
|
|
MuiSkeleton: { styleOverrides: { root: { borderRadius: 4, backgroundColor: isDark ? n[800] : n[200] } } },
|
|
MuiAccordion: { defaultProps: { elevation: 0 }, styleOverrides: { root: { border: `1px solid ${isDark ? n[800] : n[200]}`, borderRadius: 8, '&:before': { display: 'none' } } } },
|
|
MuiAccordionSummary: { styleOverrides: { root: { padding: '0 16px', minHeight: 56 }, content: { fontWeight: 500 } } },
|
|
MuiAccordionDetails: { styleOverrides: { root: { padding: '0 16px 16px' } } },
|
|
MuiSwitch: { styleOverrides: { root: { width: 46, height: 26, padding: 0 }, switchBase: { padding: 2, '&.Mui-checked': { transform: 'translateX(20px)' } }, thumb: { width: 22, height: 22 }, track: { borderRadius: 13, opacity: 1, backgroundColor: isDark ? n[700] : n[300] } } },
|
|
MuiIconButton: { styleOverrides: { root: { borderRadius: 8 } } },
|
|
MuiListItemButton: { styleOverrides: { root: { borderRadius: 8, margin: '2px 8px', padding: '8px 12px' } } },
|
|
MuiSnackbar: { styleOverrides: { root: { '& .MuiPaper-root': { borderRadius: 8 } } } },
|
|
}
|
|
}
|