mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 07:49:52 +03:00
83 lines
1.8 KiB
TypeScript
83 lines
1.8 KiB
TypeScript
import { memo } from 'react';
|
|
import type { FC } from 'react';
|
|
|
|
import {
|
|
CssBaseline,
|
|
ThemeProvider,
|
|
responsiveFontSizes,
|
|
tooltipClasses
|
|
} from '@mui/material';
|
|
import { createTheme } from '@mui/material/styles';
|
|
|
|
import type { RequiredChildrenProps } from 'utils';
|
|
|
|
// Memoize dialog style to prevent recreation
|
|
export const dialogStyle = {
|
|
'& .MuiDialog-paper': {
|
|
borderRadius: '8px',
|
|
borderColor: '#565656',
|
|
borderStyle: 'solid',
|
|
borderWidth: '1px'
|
|
}
|
|
} as const;
|
|
|
|
// Memoize theme creation to prevent recreation
|
|
const theme = responsiveFontSizes(
|
|
createTheme({
|
|
typography: {
|
|
fontSize: 13
|
|
},
|
|
palette: {
|
|
mode: 'dark',
|
|
secondary: {
|
|
main: '#2196f3' // blue[500]
|
|
},
|
|
info: {
|
|
main: '#607d8b' // blueGrey[500]
|
|
},
|
|
text: {
|
|
disabled: '#eee' // white
|
|
}
|
|
},
|
|
components: {
|
|
MuiListItemText: {
|
|
styleOverrides: {
|
|
primary: {
|
|
fontSize: 14
|
|
},
|
|
secondary: {
|
|
color: '#9e9e9e' // grey[500]
|
|
}
|
|
}
|
|
},
|
|
MuiTooltip: {
|
|
defaultProps: {
|
|
placement: 'top',
|
|
arrow: true
|
|
},
|
|
styleOverrides: {
|
|
tooltip: {
|
|
padding: '4px 8px',
|
|
fontSize: 10,
|
|
color: 'rgba(0, 0, 0, 0.87)',
|
|
backgroundColor: '#4caf50', // MUI success.main default color
|
|
boxShadow: '0px 2px 8px rgba(0, 0, 0, 0.15)',
|
|
[`& .${tooltipClasses.arrow}`]: {
|
|
color: '#4caf50'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
})
|
|
);
|
|
|
|
const CustomTheme: FC<RequiredChildrenProps> = memo(({ children }) => (
|
|
<ThemeProvider theme={theme}>
|
|
<CssBaseline />
|
|
{children}
|
|
</ThemeProvider>
|
|
));
|
|
|
|
export default CustomTheme;
|