sno-quiz/frontend/src/theme/index.ts
2025-09-17 22:22:14 +03:00

344 lines
7.7 KiB
TypeScript

import { createTheme } from '@mui/material/styles';
export const theme = createTheme({
palette: {
mode: 'dark',
primary: {
main: '#FFD700', // Gold stars
light: '#FFED4E',
dark: '#D4AF37',
},
secondary: {
main: '#4CAF50', // Success green
light: '#66BB6A',
dark: '#388E3C',
},
background: {
default: '#0F0F0F', // Dark background
paper: '#1A1A1A', // Card background
},
text: {
primary: '#FFFFFF',
secondary: '#B0B0B0',
disabled: '#666666',
},
success: {
main: '#4CAF50',
light: '#81C784',
},
error: {
main: '#F44336',
light: '#EF5350',
},
warning: {
main: '#FF9800',
light: '#FFB74D',
},
info: {
main: '#2196F3',
light: '#42A5F5',
},
divider: '#2A2A2A',
action: {
hover: 'rgba(255, 215, 0, 0.1)',
selected: 'rgba(255, 215, 0, 0.2)',
disabled: 'rgba(255, 255, 255, 0.1)',
disabledBackground: 'rgba(255, 255, 255, 0.05)',
},
},
typography: {
fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif',
fontSize: 14,
h1: {
fontSize: 28,
fontWeight: 600,
},
h2: {
fontSize: 24,
fontWeight: 600,
},
h3: {
fontSize: 20,
fontWeight: 600,
},
h4: {
fontSize: 18,
fontWeight: 600,
},
h5: {
fontSize: 16,
fontWeight: 600,
},
h6: {
fontSize: 14,
fontWeight: 600,
},
body1: {
fontSize: 16,
lineHeight: 1.5,
},
body2: {
fontSize: 14,
lineHeight: 1.4,
},
subtitle1: {
fontSize: 14,
fontWeight: 500,
},
subtitle2: {
fontSize: 12,
fontWeight: 500,
},
},
shape: {
borderRadius: 8,
},
shadows: [
'none',
'0px 1px 3px rgba(0,0,0,0.12), 0px 1px 2px rgba(0,0,0,0.24)',
'0px 3px 6px rgba(0,0,0,0.16), 0px 3px 6px rgba(0,0,0,0.23)',
'0px 10px 20px rgba(0,0,0,0.19), 0px 6px 6px rgba(0,0,0,0.23)',
'0px 14px 28px rgba(0,0,0,0.25), 0px 10px 10px rgba(0,0,0,0.22)',
'0px 19px 38px rgba(0,0,0,0.3), 0px 15px 12px rgba(0,0,0,0.22)',
'none', 'none', 'none', 'none', 'none', 'none', 'none', 'none', 'none', 'none',
'none', 'none', 'none', 'none', 'none', 'none', 'none', 'none', 'none',
],
components: {
MuiButton: {
styleOverrides: {
root: {
textTransform: 'none',
fontWeight: 600,
borderRadius: 8,
transition: 'all 0.2s ease',
boxShadow: 'none',
'&:hover': {
boxShadow: '0 4px 12px rgba(255, 215, 0, 0.3)',
},
'&:active': {
transform: 'translateY(1px)',
},
},
contained: {
'&:hover': {
transform: 'translateY(-2px)',
},
},
containedPrimary: {
color: '#000000',
backgroundColor: '#FFD700',
'&:hover': {
backgroundColor: '#FFC700',
},
},
containedSecondary: {
backgroundColor: '#4CAF50',
'&:hover': {
backgroundColor: '#66BB6A',
},
},
outlined: {
borderWidth: 2,
'&:hover': {
borderWidth: 2,
},
},
outlinedPrimary: {
borderColor: '#FFD700',
color: '#FFD700',
},
sizeLarge: {
padding: '12px 24px',
fontSize: 16,
borderRadius: 12,
},
},
},
MuiCard: {
styleOverrides: {
root: {
borderRadius: 16,
boxShadow: '0 4px 20px rgba(0, 0, 0, 0.3)',
border: '1px solid rgba(255, 255, 255, 0.1)',
overflow: 'hidden',
transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',
'&:hover': {
transform: 'translateY(-4px)',
boxShadow: '0 8px 32px rgba(0, 0, 0, 0.4)',
border: '1px solid rgba(255, 215, 0, 0.3)',
},
},
},
},
MuiCardContent: {
styleOverrides: {
root: {
padding: 16,
},
},
},
MuiChip: {
styleOverrides: {
root: {
fontWeight: 600,
fontSize: 12,
height: 28,
borderRadius: 14,
},
colorPrimary: {
backgroundColor: 'rgba(255, 215, 0, 0.15)',
color: '#FFD700',
borderColor: '#FFD700',
},
colorSecondary: {
backgroundColor: 'rgba(76, 175, 80, 0.15)',
color: '#4CAF50',
},
colorSuccess: {
backgroundColor: 'rgba(76, 175, 80, 0.15)',
color: '#4CAF50',
},
colorWarning: {
backgroundColor: 'rgba(255, 152, 0, 0.15)',
color: '#FF9800',
},
outlinedPrimary: {
backgroundColor: 'transparent',
border: '1px solid #FFD700',
color: '#FFD700',
},
},
},
MuiContainer: {
styleOverrides: {
root: {
paddingLeft: 16,
paddingRight: 16,
'@media (min-width: 600px)': {
paddingLeft: 24,
paddingRight: 24,
},
},
},
},
MuiTypography: {
styleOverrides: {
h1: {
color: '#FFFFFF',
},
h2: {
color: '#FFFFFF',
},
h3: {
color: '#FFFFFF',
},
h4: {
color: '#FFFFFF',
},
h5: {
color: '#FFFFFF',
},
h6: {
color: '#FFFFFF',
},
subtitle1: {
color: '#B0B0B0',
},
subtitle2: {
color: '#888888',
},
body1: {
color: '#FFFFFF',
},
body2: {
color: '#B0B0B0',
},
},
},
MuiAlert: {
styleOverrides: {
root: {
borderRadius: 12,
fontSize: 14,
},
standardError: {
backgroundColor: 'rgba(244, 67, 54, 0.1)',
color: '#FFFFFF',
border: '1px solid #F44336',
},
standardSuccess: {
backgroundColor: 'rgba(76, 175, 80, 0.1)',
color: '#FFFFFF',
border: '1px solid #4CAF50',
},
standardWarning: {
backgroundColor: 'rgba(255, 152, 0, 0.1)',
color: '#FFFFFF',
border: '1px solid #FF9800',
},
standardInfo: {
backgroundColor: 'rgba(33, 150, 243, 0.1)',
color: '#FFFFFF',
border: '1px solid #2196F3',
},
},
},
MuiPaper: {
styleOverrides: {
root: {
backgroundImage: 'linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))',
},
},
},
MuiLinearProgress: {
styleOverrides: {
root: {
height: 8,
borderRadius: 4,
backgroundColor: 'rgba(255, 255, 255, 0.1)',
},
bar: {
borderRadius: 4,
backgroundColor: '#FFD700',
},
},
},
MuiCircularProgress: {
styleOverrides: {
root: {
color: '#FFD700',
},
},
},
MuiIconButton: {
styleOverrides: {
root: {
transition: 'all 0.2s ease',
'&:hover': {
backgroundColor: 'rgba(255, 215, 0, 0.1)',
},
},
},
},
MuiAppBar: {
styleOverrides: {
root: {
backgroundImage: 'linear-gradient(to bottom, rgba(26, 26, 26, 0.98), rgba(15, 15, 15, 0.98))',
backdropFilter: 'blur(10px)',
borderBottom: '1px solid rgba(255, 255, 255, 0.1)',
},
},
},
},
breakpoints: {
values: {
xs: 0,
sm: 600,
md: 900,
lg: 1200,
xl: 1536,
},
},
});
export default theme;