captains-log/frontend/app/theme.ts
2025-09-22 20:40:08 -07:00

280 lines
5.7 KiB
TypeScript

import { createTheme } from '@mui/material/styles'
declare module '@mui/material/styles' {
interface Theme {
custom: {
task: {
todo: string
done: string
backlog: string
}
}
}
interface ThemeOptions {
custom?: {
task?: {
todo?: string
done?: string
backlog?: string
}
}
}
}
export const theme = createTheme({
palette: {
mode: 'light',
primary: {
50: '#eff6ff',
100: '#dbeafe',
500: '#3b82f6',
main: '#3b82f6',
contrastText: '#ffffff',
},
background: {
default: '#f9fafb',
paper: '#ffffff',
},
text: {
primary: '#111827',
secondary: '#6b7280',
},
grey: {
50: '#f9fafb',
100: '#f3f4f6',
200: '#e5e7eb',
300: '#d1d5db',
600: '#4b5563',
700: '#374151',
800: '#1f2937',
900: '#111827',
},
},
typography: {
fontFamily: '"Inter", ui-sans-serif, system-ui, sans-serif',
h1: {
fontSize: '2rem',
fontWeight: 700,
lineHeight: 1.2,
},
h2: {
fontSize: '1.5rem',
fontWeight: 600,
lineHeight: 1.3,
},
h3: {
fontSize: '1.25rem',
fontWeight: 600,
lineHeight: 1.4,
},
body1: {
fontSize: '1rem',
lineHeight: 1.6,
},
body2: {
fontSize: '0.875rem',
lineHeight: 1.5,
},
},
shape: {
borderRadius: 12,
},
components: {
MuiAppBar: {
styleOverrides: {
root: {
backgroundColor: '#ffffff',
color: '#111827',
boxShadow:
'0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',
borderBottom: '1px solid #e5e7eb',
},
},
},
MuiDrawer: {
styleOverrides: {
paper: {
backgroundColor: '#ffffff',
borderRight: '1px solid #e5e7eb',
},
},
},
MuiButton: {
styleOverrides: {
root: {
textTransform: 'none',
borderRadius: '0.75rem',
fontWeight: 500,
},
contained: {
boxShadow: '0 1px 2px 0 rgb(0 0 0 / 0.05)',
'&:hover': {
boxShadow:
'0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',
},
},
},
},
MuiCard: {
styleOverrides: {
root: {
borderRadius: '0.75rem',
boxShadow:
'0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',
border: '1px solid #e5e7eb',
'&:hover': {
boxShadow:
'0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',
borderColor: '#d1d5db',
},
},
},
},
MuiTextField: {
styleOverrides: {
root: {
'& .MuiOutlinedInput-root': {
borderRadius: '0.75rem',
},
},
},
},
},
custom: {
task: {
todo: '#3b82f6',
done: '#22c55e',
backlog: '#6b7280',
},
},
})
export const darkTheme = createTheme({
palette: {
mode: 'dark',
primary: {
50: '#eff6ff',
100: '#dbeafe',
500: '#3b82f6',
main: '#3b82f6',
contrastText: '#ffffff',
},
background: {
default: '#030712',
paper: '#1f2937',
},
text: {
primary: '#f9fafb',
secondary: '#9ca3af',
},
grey: {
50: '#f9fafb',
100: '#f3f4f6',
200: '#e5e7eb',
300: '#d1d5db',
600: '#4b5563',
700: '#374151',
800: '#1f2937',
900: '#111827',
},
},
typography: {
fontFamily: '"Inter", ui-sans-serif, system-ui, sans-serif',
h1: {
fontSize: '2rem',
fontWeight: 700,
lineHeight: 1.2,
},
h2: {
fontSize: '1.5rem',
fontWeight: 600,
lineHeight: 1.3,
},
h3: {
fontSize: '1.25rem',
fontWeight: 600,
lineHeight: 1.4,
},
body1: {
fontSize: '1rem',
lineHeight: 1.6,
},
body2: {
fontSize: '0.875rem',
lineHeight: 1.5,
},
},
shape: {
borderRadius: 12,
},
components: {
MuiAppBar: {
styleOverrides: {
root: {
backgroundColor: '#1f2937',
color: '#f9fafb',
boxShadow:
'0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',
borderBottom: '1px solid #374151',
},
},
},
MuiDrawer: {
styleOverrides: {
paper: {
backgroundColor: '#1f2937',
borderRight: '1px solid #374151',
},
},
},
MuiButton: {
styleOverrides: {
root: {
textTransform: 'none',
borderRadius: '0.75rem',
fontWeight: 500,
},
contained: {
boxShadow: '0 1px 2px 0 rgb(0 0 0 / 0.05)',
'&:hover': {
boxShadow:
'0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',
},
},
},
},
MuiCard: {
styleOverrides: {
root: {
backgroundColor: '#1f2937',
borderRadius: '0.75rem',
boxShadow:
'0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',
border: '1px solid #374151',
'&:hover': {
boxShadow:
'0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',
borderColor: '#4b5563',
},
},
},
},
MuiTextField: {
styleOverrides: {
root: {
'& .MuiOutlinedInput-root': {
borderRadius: '0.75rem',
},
},
},
},
},
custom: {
task: {
todo: '#3b82f6',
done: '#22c55e',
backlog: '#6b7280',
},
},
})