166 lines
4.5 KiB
JavaScript
166 lines
4.5 KiB
JavaScript
// styles/home.js
|
|
import { alpha } from '@mui/material/styles';
|
|
|
|
export const styles = {
|
|
heroSection: {
|
|
pt: { xs: 6, md: 10 },
|
|
pb: { xs: 6, md: 8 },
|
|
position: 'relative',
|
|
overflow: 'hidden',
|
|
transition: 'all 0.3s ease-in-out'
|
|
},
|
|
heroBackground: theme => ({
|
|
background:
|
|
theme.palette.mode === 'dark'
|
|
? 'linear-gradient(135deg, rgba(42, 92, 170, 0.25) 0%, rgba(139, 92, 246, 0.25) 100%)'
|
|
: 'linear-gradient(135deg, rgba(42, 92, 170, 0.08) 0%, rgba(139, 92, 246, 0.08) 100%)',
|
|
'&::before': {
|
|
content: '""',
|
|
position: 'absolute',
|
|
top: 0,
|
|
left: 0,
|
|
right: 0,
|
|
bottom: 0,
|
|
background: 'url("/imgs/grid-pattern.png") repeat',
|
|
opacity: theme.palette.mode === 'dark' ? 0.05 : 0.03,
|
|
zIndex: 0
|
|
}
|
|
}),
|
|
decorativeCircle: {
|
|
position: 'absolute',
|
|
width: '800px',
|
|
height: '800px',
|
|
borderRadius: '50%',
|
|
background: 'radial-gradient(circle, rgba(139, 92, 246, 0.15) 0%, rgba(42, 92, 170, 0) 70%)',
|
|
top: '-300px',
|
|
right: '-200px',
|
|
zIndex: 0,
|
|
animation: 'pulse 15s infinite ease-in-out',
|
|
'@keyframes pulse': {
|
|
'0%': { transform: 'scale(1)' },
|
|
'50%': { transform: 'scale(1.05)' },
|
|
'100%': { transform: 'scale(1)' }
|
|
}
|
|
},
|
|
decorativeCircleSecond: {
|
|
position: 'absolute',
|
|
width: '500px',
|
|
height: '500px',
|
|
borderRadius: '50%',
|
|
background: 'radial-gradient(circle, rgba(42, 92, 170, 0.1) 0%, rgba(139, 92, 246, 0) 70%)',
|
|
bottom: '-200px',
|
|
left: '-100px',
|
|
zIndex: 0,
|
|
animation: 'pulse2 20s infinite ease-in-out',
|
|
'@keyframes pulse2': {
|
|
'0%': { transform: 'scale(1)' },
|
|
'50%': { transform: 'scale(1.08)' },
|
|
'100%': { transform: 'scale(1)' }
|
|
}
|
|
},
|
|
gradientTitle: theme => ({
|
|
mb: 2,
|
|
background: theme.palette.gradient.primary,
|
|
WebkitBackgroundClip: 'text',
|
|
WebkitTextFillColor: 'transparent',
|
|
backgroundClip: 'text',
|
|
textFillColor: 'transparent'
|
|
}),
|
|
createButton: theme => ({
|
|
mt: 3,
|
|
px: 4,
|
|
py: 1.2,
|
|
borderRadius: '12px',
|
|
fontSize: '1rem',
|
|
background: theme.palette.gradient.primary,
|
|
'&:hover': {
|
|
boxShadow: '0 8px 16px rgba(0, 0, 0, 0.1)'
|
|
}
|
|
}),
|
|
statsCard: theme => ({
|
|
mt: 6,
|
|
p: { xs: 2, md: 4 },
|
|
borderRadius: '16px',
|
|
boxShadow: theme.palette.mode === 'dark' ? '0 8px 24px rgba(0, 0, 0, 0.2)' : '0 8px 24px rgba(0, 0, 0, 0.05)',
|
|
background: theme.palette.mode === 'dark' ? 'rgba(30, 30, 30, 0.6)' : 'rgba(255, 255, 255, 0.8)',
|
|
backdropFilter: 'blur(8px)'
|
|
}),
|
|
projectCard: theme => ({
|
|
height: '100%',
|
|
display: 'flex',
|
|
flexDirection: 'column',
|
|
position: 'relative',
|
|
transition: 'transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out',
|
|
borderRadius: '16px',
|
|
overflow: 'visible', // 允许内容溢出(如下拉菜单)
|
|
'&:hover': {
|
|
transform: 'translateY(-4px)',
|
|
boxShadow: theme.palette.mode === 'dark' ? '0 12px 24px rgba(0,0,0,0.3)' : '0 12px 24px rgba(0,0,0,0.1)'
|
|
}
|
|
}),
|
|
projectCardContent: {
|
|
height: '100%',
|
|
display: 'flex',
|
|
flexDirection: 'column',
|
|
p: 2
|
|
},
|
|
projectTitle: {
|
|
fontWeight: 700,
|
|
fontSize: '1rem',
|
|
lineHeight: 1.2,
|
|
mb: 0.25,
|
|
overflow: 'hidden',
|
|
textOverflow: 'ellipsis',
|
|
whiteSpace: 'nowrap'
|
|
},
|
|
projectDescription: {
|
|
mb: 1.5,
|
|
display: '-webkit-box',
|
|
WebkitBoxOrient: 'vertical',
|
|
WebkitLineClamp: 2,
|
|
overflow: 'hidden',
|
|
textOverflow: 'ellipsis',
|
|
height: '32px',
|
|
color: 'text.secondary',
|
|
fontSize: '0.75rem',
|
|
lineHeight: 1.4
|
|
},
|
|
statsContainer: {
|
|
display: 'grid',
|
|
gridTemplateColumns: 'repeat(2, 1fr)',
|
|
gap: 1,
|
|
mt: 'auto'
|
|
},
|
|
statItem: theme => ({
|
|
display: 'flex',
|
|
alignItems: 'center',
|
|
gap: 1,
|
|
p: 0.75,
|
|
borderRadius: '8px',
|
|
backgroundColor: theme.palette.mode === 'dark' ? 'rgba(255,255,255,0.05)' : 'rgba(0,0,0,0.02)',
|
|
transition: 'background-color 0.2s',
|
|
'&:hover': {
|
|
backgroundColor: theme.palette.mode === 'dark' ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.04)'
|
|
}
|
|
}),
|
|
statIconBox: (theme, color) => ({
|
|
display: 'flex',
|
|
alignItems: 'center',
|
|
justifyContent: 'center',
|
|
width: 24,
|
|
height: 24,
|
|
borderRadius: '6px',
|
|
backgroundColor: alpha(theme.palette[color].main, 0.1),
|
|
color: theme.palette[color].main
|
|
}),
|
|
cardFooter: {
|
|
display: 'flex',
|
|
alignItems: 'center',
|
|
justifyContent: 'space-between',
|
|
mt: 2,
|
|
pt: 2,
|
|
borderTop: '1px solid',
|
|
borderColor: 'divider'
|
|
}
|
|
};
|