This commit is contained in:
Matthias Hochmeister
2026-02-23 17:08:58 +01:00
commit f09748f4a1
97 changed files with 17729 additions and 0 deletions

178
frontend/src/theme/theme.ts Normal file
View File

@@ -0,0 +1,178 @@
import { createTheme, ThemeOptions } from '@mui/material/styles';
// Fire department red color palette
const primaryRed = {
main: '#d32f2f',
light: '#ff6659',
dark: '#9a0007',
contrastText: '#ffffff',
};
const secondaryBlue = {
main: '#1976d2',
light: '#63a4ff',
dark: '#004ba0',
contrastText: '#ffffff',
};
const lightThemeOptions: ThemeOptions = {
palette: {
mode: 'light',
primary: primaryRed,
secondary: secondaryBlue,
background: {
default: '#f5f5f5',
paper: '#ffffff',
},
error: {
main: '#f44336',
},
warning: {
main: '#ff9800',
},
info: {
main: '#2196f3',
},
success: {
main: '#4caf50',
},
},
typography: {
fontFamily: [
'-apple-system',
'BlinkMacSystemFont',
'"Segoe UI"',
'Roboto',
'"Helvetica Neue"',
'Arial',
'sans-serif',
].join(','),
h1: {
fontSize: '2.5rem',
fontWeight: 600,
lineHeight: 1.2,
},
h2: {
fontSize: '2rem',
fontWeight: 600,
lineHeight: 1.3,
},
h3: {
fontSize: '1.75rem',
fontWeight: 600,
lineHeight: 1.4,
},
h4: {
fontSize: '1.5rem',
fontWeight: 600,
lineHeight: 1.4,
},
h5: {
fontSize: '1.25rem',
fontWeight: 600,
lineHeight: 1.5,
},
h6: {
fontSize: '1rem',
fontWeight: 600,
lineHeight: 1.6,
},
body1: {
fontSize: '1rem',
lineHeight: 1.5,
},
body2: {
fontSize: '0.875rem',
lineHeight: 1.43,
},
button: {
textTransform: 'none',
fontWeight: 500,
},
},
spacing: 8,
shape: {
borderRadius: 8,
},
components: {
MuiButton: {
styleOverrides: {
root: {
borderRadius: 8,
padding: '8px 16px',
},
contained: {
boxShadow: 'none',
'&:hover': {
boxShadow: '0 2px 4px rgba(0,0,0,0.2)',
},
},
},
},
MuiCard: {
styleOverrides: {
root: {
borderRadius: 12,
boxShadow: '0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)',
transition: 'all 0.3s cubic-bezier(.25,.8,.25,1)',
'&:hover': {
boxShadow: '0 4px 8px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23)',
},
},
},
},
MuiPaper: {
styleOverrides: {
root: {
borderRadius: 8,
},
elevation1: {
boxShadow: '0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)',
},
elevation2: {
boxShadow: '0 3px 6px rgba(0,0,0,0.15), 0 2px 4px rgba(0,0,0,0.12)',
},
elevation3: {
boxShadow: '0 4px 8px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23)',
},
},
},
MuiAppBar: {
styleOverrides: {
root: {
boxShadow: '0 2px 4px rgba(0,0,0,0.1)',
},
},
},
},
};
const darkThemeOptions: ThemeOptions = {
...lightThemeOptions,
palette: {
mode: 'dark',
primary: primaryRed,
secondary: secondaryBlue,
background: {
default: '#121212',
paper: '#1e1e1e',
},
error: {
main: '#f44336',
},
warning: {
main: '#ff9800',
},
info: {
main: '#2196f3',
},
success: {
main: '#4caf50',
},
},
};
export const lightTheme = createTheme(lightThemeOptions);
export const darkTheme = createTheme(darkThemeOptions);
export default lightTheme;