Add complete production-ready Ysterbaard PocketBase registry browser frontend: - Next.js 14 App Router with TypeScript, Tailwind CSS, and TanStack React Query - Secure server-side PocketBase API proxy to avoid exposing superuser tokens - Read-only directors and companies registry browse pages with search, filtering, and pagination - Client onboarding workflow for creating and managing client submissions - Docker container configuration for easy deployment - All supporting UI components, utility functions, and configuration files
38 lines
1.4 KiB
TypeScript
38 lines
1.4 KiB
TypeScript
// app/not-found.tsx
|
|
// 404 surface, also must be a Client-renderable style. Keeps links
|
|
// to both registries so the user can recover with one click.
|
|
|
|
import Link from "next/link";
|
|
|
|
export default function NotFound() {
|
|
return (
|
|
<section className="container-x py-20">
|
|
<div className="max-w-xl mx-auto bg-surface border border-border rounded-lg p-10 flex flex-col gap-4">
|
|
<p className="text-xs uppercase tracking-[0.08em] text-muted font-semibold">
|
|
404
|
|
</p>
|
|
<h1 className="text-2xl font-bold text-fg leading-tight">
|
|
That record isn't in the registry
|
|
</h1>
|
|
<p className="text-base text-muted">
|
|
The link may be stale, or the record may have been removed since
|
|
it was last scraped.
|
|
</p>
|
|
<div className="flex gap-3 pt-2">
|
|
<Link
|
|
href="/directors"
|
|
className="inline-flex items-center px-5 py-3 rounded-md bg-accent text-accent-on font-semibold text-sm no-underline hover:bg-accent-hover transition-colors"
|
|
>
|
|
Browse directors
|
|
</Link>
|
|
<Link
|
|
href="/companies"
|
|
className="inline-flex items-center px-5 py-3 rounded-md border border-border text-fg font-semibold text-sm no-underline hover:bg-surface-warm transition-colors"
|
|
>
|
|
Browse companies
|
|
</Link>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
);
|
|
}
|