Files
2026-03-09 22:30:41 +00:00

91 lines
1.8 KiB
TypeScript

'use client';
import { createTheme, ThemeProvider as MuiThemeProvider } from '@mui/material/styles';
import CssBaseline from '@mui/material/CssBaseline';
const theme = createTheme({
palette: {
mode: 'dark',
primary: {
main: '#4a5568', // slate
light: '#718096',
dark: '#2d3748',
},
secondary: {
main: '#38b2ac', // cyan/teal
light: '#4fd1c5',
dark: '#319795',
},
background: {
default: '#1a202c',
paper: '#2d3748',
},
text: {
primary: '#f7fafc',
secondary: '#cbd5e0',
},
success: {
main: '#38b2ac',
},
},
typography: {
fontFamily: '"JetBrains Mono", "Courier New", monospace',
h1: {
fontWeight: 700,
fontSize: '2rem',
letterSpacing: '-0.02em',
},
h2: {
fontWeight: 600,
fontSize: '1.5rem',
},
h3: {
fontWeight: 500,
fontSize: '1.125rem',
},
body1: {
fontSize: '0.875rem',
lineHeight: 1.6,
},
button: {
fontWeight: 500,
textTransform: 'none',
},
},
components: {
MuiCard: {
styleOverrides: {
root: {
borderRadius: '8px',
transition: 'all 0.15s ease',
'&:hover': {
transform: 'translateY(-2px)',
boxShadow: '0 4px 20px rgba(56, 178, 172, 0.1)',
},
},
},
},
MuiButton: {
styleOverrides: {
root: {
borderRadius: '6px',
padding: '8px 16px',
transition: 'all 0.1s ease',
'&:active': {
transform: 'scale(0.98)',
},
},
},
},
},
});
export function ThemeProvider({ children }: { children: React.ReactNode }) {
return (
<MuiThemeProvider theme={theme}>
<CssBaseline />
{children}
</MuiThemeProvider>
);
}