Polish public error and 404 screens with brand atmosphere.
Local Build and Deploy / deploy (push) Successful in 1m31s
Local Build and Deploy / deploy (push) Successful in 1m31s
Shared ErrorScreen composition, i18n for en/nl/it, Sentry on route errors, and a self-contained global-error fallback that matches the hotel gold theme. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
1 parent
b22725d3a9
commit
1f552c2822
8 files changed
+348
-80
No files matched your search
+20
-13
@@ -1,22 +1,29 @@
|
||||
import { Home, Newspaper } from "lucide-react";
|
||||
import Link from "next/link";
|
||||
import { ContentCard } from "@/components/public/ui";
|
||||
import { getTranslations } from "next-intl/server";
|
||||
import { ErrorScreen } from "@/components/error-screen";
|
||||
|
||||
export default async function NotFound() {
|
||||
const t = await getTranslations("pages.notFound");
|
||||
|
||||
export default function NotFound() {
|
||||
return (
|
||||
<main style={{ display: "grid", gap: "1.5rem" }}>
|
||||
<ContentCard icon="🧭" title="Page not found" subtitle="Error 404">
|
||||
<p className="muted" style={{ marginTop: 0 }}>
|
||||
The page you’re looking for doesn’t exist or has moved.
|
||||
</p>
|
||||
<div style={{ display: "flex", gap: "0.6rem", flexWrap: "wrap" }}>
|
||||
<ErrorScreen
|
||||
code={t("code")}
|
||||
title={t("title")}
|
||||
subtitle={t("subtitle")}
|
||||
body={t("body")}
|
||||
actions={
|
||||
<>
|
||||
<Link className="btn btn-primary" href="/">
|
||||
Back home
|
||||
<Home className="error-screen-btn-icon" aria-hidden />
|
||||
{t("backHome")}
|
||||
</Link>
|
||||
<Link className="btn btn-outline" href="/news">
|
||||
Latest news
|
||||
<Newspaper className="error-screen-btn-icon" aria-hidden />
|
||||
{t("latestNews")}
|
||||
</Link>
|
||||
</div>
|
||||
</ContentCard>
|
||||
</main>
|
||||
</>
|
||||
}
|
||||
/>
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user