Import source: cshare-app/src/pages/NotFoundPage
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
This commit is contained in:
@@ -0,0 +1,94 @@
|
|||||||
|
import { useNavigate } from 'react-router-dom';
|
||||||
|
import { FileIcon, UploadIcon } from '../components/Icons';
|
||||||
|
|
||||||
|
export default function NotFoundPage() {
|
||||||
|
const navigate = useNavigate();
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="page-enter" style={{
|
||||||
|
maxWidth: '560px',
|
||||||
|
margin: '0 auto',
|
||||||
|
padding: '120px 24px 80px',
|
||||||
|
textAlign: 'center',
|
||||||
|
}}>
|
||||||
|
{/* Large 404 */}
|
||||||
|
<div style={{
|
||||||
|
fontFamily: 'var(--font-heading)',
|
||||||
|
fontWeight: 800,
|
||||||
|
fontSize: 'clamp(6rem, 15vw, 10rem)',
|
||||||
|
lineHeight: 1,
|
||||||
|
letterSpacing: '-0.05em',
|
||||||
|
background: 'linear-gradient(135deg, var(--accent) 0%, var(--accent-hover) 50%, var(--success) 100%)',
|
||||||
|
WebkitBackgroundClip: 'text',
|
||||||
|
WebkitTextFillColor: 'transparent',
|
||||||
|
backgroundClip: 'text',
|
||||||
|
marginBottom: '16px',
|
||||||
|
animation: 'fadeInUp 0.5s ease both',
|
||||||
|
}}>
|
||||||
|
404
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Glitch line */}
|
||||||
|
<div style={{
|
||||||
|
width: '60px', height: '3px', margin: '0 auto 32px',
|
||||||
|
background: 'linear-gradient(90deg, var(--accent), var(--accent-hover))',
|
||||||
|
borderRadius: '2px',
|
||||||
|
animation: 'fadeInUp 0.5s 0.1s ease both',
|
||||||
|
}} />
|
||||||
|
|
||||||
|
<h1 className="heading-md" style={{
|
||||||
|
marginBottom: '12px',
|
||||||
|
animation: 'fadeInUp 0.5s 0.15s ease both',
|
||||||
|
}}>
|
||||||
|
This file wasn't found
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<p style={{
|
||||||
|
color: 'var(--text-secondary)',
|
||||||
|
fontSize: '1rem',
|
||||||
|
lineHeight: 1.6,
|
||||||
|
marginBottom: '40px',
|
||||||
|
maxWidth: '400px',
|
||||||
|
margin: '0 auto 40px',
|
||||||
|
animation: 'fadeInUp 0.5s 0.2s ease both',
|
||||||
|
}}>
|
||||||
|
The link may have expired, the file was removed, or this page never existed. Either way, there's nothing here.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div style={{
|
||||||
|
display: 'flex', gap: '12px', justifyContent: 'center',
|
||||||
|
animation: 'fadeInUp 0.5s 0.25s ease both',
|
||||||
|
}}>
|
||||||
|
<button className="btn btn-primary btn-lg" onClick={() => navigate('/upload')}>
|
||||||
|
<UploadIcon size={18} />
|
||||||
|
Upload a File
|
||||||
|
</button>
|
||||||
|
<button className="btn btn-secondary btn-lg" onClick={() => navigate('/')}>
|
||||||
|
Go Home
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Decorative file icons */}
|
||||||
|
<div style={{ marginTop: '64px', opacity: 0.15, position: 'relative', height: '80px' }}>
|
||||||
|
<div style={{
|
||||||
|
position: 'absolute', left: '20%', top: '10px',
|
||||||
|
animation: 'float 4s ease-in-out infinite',
|
||||||
|
}}>
|
||||||
|
<FileIcon size={32} />
|
||||||
|
</div>
|
||||||
|
<div style={{
|
||||||
|
position: 'absolute', left: '45%', top: '0',
|
||||||
|
animation: 'float 5s ease-in-out 0.5s infinite',
|
||||||
|
}}>
|
||||||
|
<FileIcon size={24} />
|
||||||
|
</div>
|
||||||
|
<div style={{
|
||||||
|
position: 'absolute', right: '20%', top: '15px',
|
||||||
|
animation: 'float 4.5s ease-in-out 1s infinite',
|
||||||
|
}}>
|
||||||
|
<FileIcon size={28} />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user