Audited codebase, fixed input validation, OAuth, error handling, type casts, and security hardening Co-authored-by: Moheeb Zara <[email protected]>
43 lines
1.6 KiB
TypeScript
43 lines
1.6 KiB
TypeScript
import Link from 'next/link'
|
|
import { FileQuestion, Home, ArrowLeft } from 'lucide-react'
|
|
|
|
export default function NotFound() {
|
|
return (
|
|
<div className="min-h-screen bg-background flex items-center justify-center p-4">
|
|
<div className="max-w-md w-full text-center">
|
|
<div className="w-16 h-16 rounded-full bg-muted flex items-center justify-center mx-auto mb-6">
|
|
<FileQuestion className="w-8 h-8 text-muted-foreground" />
|
|
</div>
|
|
|
|
<h1 className="text-6xl font-bold text-foreground mb-2 font-mono">404</h1>
|
|
|
|
<h2 className="text-xl font-semibold text-foreground mb-2">
|
|
Page not found
|
|
</h2>
|
|
|
|
<p className="text-muted-foreground mb-8">
|
|
The page you're looking for doesn't exist or has been moved.
|
|
</p>
|
|
|
|
<div className="flex flex-col sm:flex-row gap-3 justify-center">
|
|
<Link
|
|
href="/dashboard"
|
|
className="inline-flex items-center justify-center gap-2 px-4 py-2.5 rounded-md bg-primary text-primary-foreground font-medium text-sm hover:bg-primary/90 transition-colors"
|
|
>
|
|
<Home className="w-4 h-4" />
|
|
Go to Dashboard
|
|
</Link>
|
|
|
|
<Link
|
|
href="/"
|
|
className="inline-flex items-center justify-center gap-2 px-4 py-2.5 rounded-md border border-border text-foreground font-medium text-sm hover:bg-accent transition-colors"
|
|
>
|
|
<ArrowLeft className="w-4 h-4" />
|
|
Back to Home
|
|
</Link>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|