Introduce a footer-triggered Version History drawer with categorized release notes, hardcoded release data, and semver tracking at v0.3.0. Also ships blog blockquote/table styling, site-wide typography, home page image updates, header refinements, and related bug fixes. Co-authored-by: Cursor <cursoragent@cursor.com>
44 lines
1.8 KiB
TypeScript
44 lines
1.8 KiB
TypeScript
import './globals.css'
|
|
import Link from 'next/link'
|
|
import { type } from '@/lib/typography'
|
|
import { cn } from '@/lib/utils'
|
|
|
|
export const metadata = {
|
|
title: '۴۰۴ | صفحه یافت نشد',
|
|
description: 'صفحهای که دنبال آن هستید وجود ندارد.',
|
|
}
|
|
|
|
export default function GlobalNotFound() {
|
|
return (
|
|
<html lang="fa" dir="rtl" suppressHydrationWarning>
|
|
<body className="antialiased min-h-svh flex flex-col items-center justify-center px-4 py-20 bg-background text-foreground">
|
|
<div className="mx-auto max-w-lg w-full text-center">
|
|
<div className="relative inline-block mb-6">
|
|
<span
|
|
className={cn(type["display-mono"], "text-transparent bg-clip-text bg-gradient-to-b from-primary/90 to-primary/50 select-none")}
|
|
aria-hidden
|
|
>
|
|
۴۰۴
|
|
</span>
|
|
</div>
|
|
|
|
<h1 className={cn(type.h2, "mb-3 text-foreground")}>
|
|
صفحه پیدا نشد
|
|
</h1>
|
|
<p className={cn(type.body, "mb-10 mx-auto max-w-sm text-muted-foreground")}>
|
|
به نظر میرسد این آدرس وجود ندارد یا منتقل شده است.
|
|
</p>
|
|
|
|
<Link
|
|
href="/"
|
|
className="inline-flex items-center justify-center gap-2 h-11 px-6 rounded-md bg-primary text-primary-foreground font-medium hover:opacity-90 transition-opacity"
|
|
>
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg>
|
|
صفحه اصلی
|
|
</Link>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
)
|
|
}
|