Files
leoncloud_temeplate/app/not-found.tsx

97 lines
2.7 KiB
TypeScript
Raw Normal View History

2025-11-16 15:31:19 +08:00
'use client';
import React from 'react';
import { Container, Typography, Button, Box, useMediaQuery } from '@mui/material';
import { useTheme } from '@mui/material/styles';
import { ArrowBack } from '@mui/icons-material';
import Link from 'next/link';
import ClientLayout from './components/ClientLayout';
const NotFoundPage: React.FC = () => {
const theme = useTheme();
const isMobile = useMediaQuery(theme.breakpoints.down('sm'));
const isMedium = useMediaQuery(theme.breakpoints.down('md'));
return (
<Container maxWidth="md" sx={{ py: { xs: 8, md: 16 }, textAlign: 'center' }}>
<Box
sx={{
display: 'flex',
flexDirection: 'column',
alignItems: 'center',
justifyContent: 'center',
minHeight: '60vh',
gap: { xs: 4, md: 6 },
}}
>
{/* 404 大号数字 */}
<Typography
variant={isMobile ? 'h1' : 'h1'}
component="h1"
sx={{
fontWeight: 700,
fontSize: isMobile ? '5rem' : isMedium ? '8rem' : '10rem',
color: theme.palette.primary.main,
opacity: 0.8,
lineHeight: 1,
letterSpacing: '-0.05em',
textShadow: '2px 2px 4px rgba(0,0,0,0.1)',
}}
>
404
</Typography>
{/* 错误标题 */}
<Typography
variant={isMobile ? 'h5' : 'h4'}
component="h2"
sx={{
fontWeight: 600,
color: theme.palette.text.primary,
mb: 2,
}}
>
</Typography>
{/* 错误描述 */}
<Typography
variant="body1"
sx={{
maxWidth: '600px',
color: theme.palette.text.secondary,
mb: 6,
fontSize: isMobile ? '1rem' : '1.125rem',
}}
>
访
</Typography>
{/* 返回首页按钮 */}
<Button
component={Link}
href="/"
variant="contained"
startIcon={<ArrowBack />}
sx={{
px: { xs: 4, md: 6 },
py: { xs: 1.5, md: 2 },
borderRadius: '9999px',
fontSize: { xs: '0.9rem', md: '1rem' },
fontWeight: 600,
textTransform: 'none',
transition: 'all 0.3s ease',
'&:hover': {
transform: 'translateY(-2px)',
boxShadow: '0 10px 20px rgba(0,0,0,0.1)',
},
}}
>
</Button>
</Box>
</Container>
);
};
export default NotFoundPage;