feat(routing): add localized and root not-found handling
Add localized 404 page, catch-all route, and root not-found fallback Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
parent
2a6a7980ec
commit
bad2b107ba
3 changed files with 68 additions and 0 deletions
5
src/app/[locale]/[...rest]/page.tsx
Normal file
5
src/app/[locale]/[...rest]/page.tsx
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
import { notFound } from "next/navigation";
|
||||
|
||||
export default function CatchAllPage() {
|
||||
notFound();
|
||||
}
|
||||
34
src/app/[locale]/not-found.tsx
Normal file
34
src/app/[locale]/not-found.tsx
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
import { getTranslations } from "next-intl/server";
|
||||
import Link from "next/link";
|
||||
import { routes } from "@/lib/routes";
|
||||
import {
|
||||
Card,
|
||||
CardContent,
|
||||
CardDescription,
|
||||
CardHeader,
|
||||
CardTitle,
|
||||
} from "@/components/ui/card";
|
||||
import { Button } from "@/components/ui/button";
|
||||
|
||||
export default async function NotFound() {
|
||||
const t = await getTranslations("Fallback.NotFound");
|
||||
|
||||
return (
|
||||
<div
|
||||
data-testid="localized-not-found"
|
||||
className="flex items-center justify-center min-h-[60vh] p-4"
|
||||
>
|
||||
<Card className="max-w-md w-full">
|
||||
<CardHeader>
|
||||
<CardTitle className="text-2xl">{t("Title")}</CardTitle>
|
||||
<CardDescription>{t("Description")}</CardDescription>
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<Button asChild className="w-full">
|
||||
<Link href={routes.public.home}>{t("GoHome")}</Link>
|
||||
</Button>
|
||||
</CardContent>
|
||||
</Card>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
29
src/app/not-found.tsx
Normal file
29
src/app/not-found.tsx
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
"use client";
|
||||
|
||||
import Link from "next/link";
|
||||
|
||||
export default function NotFound() {
|
||||
return (
|
||||
<html lang="en">
|
||||
<body>
|
||||
<div
|
||||
data-testid="root-not-found"
|
||||
className="flex items-center justify-center min-h-screen bg-background"
|
||||
>
|
||||
<div className="text-center p-8">
|
||||
<h1 className="text-4xl font-bold mb-4">404</h1>
|
||||
<p className="text-lg text-muted-foreground mb-6">
|
||||
Page not found
|
||||
</p>
|
||||
<Link
|
||||
href="/"
|
||||
className="text-primary hover:underline"
|
||||
>
|
||||
Go back home
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
Loading…
Reference in a new issue