Next.js app that plays real .vpx tables via @valknar/vpinball-wasm (WebAssembly Visual Pinball). Demo mode with the bundled default table, drag-and-drop custom table upload, a cabinet-styled UI with a coin-door HUD (fullscreen/stats/info/eject), a custom 404 page, PWA support (hand-rolled service worker), and a static Docker Compose deployment behind nginx. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012hQoM3jJT1Lx7CMTciMzvD
20 lines
710 B
TypeScript
20 lines
710 B
TypeScript
import Link from "next/link";
|
|
import { buttonClassName } from "@/components/ui/Button";
|
|
|
|
export default function NotFound() {
|
|
return (
|
|
<main className="flex flex-1 flex-col items-center justify-center gap-6 px-4 py-24 text-center">
|
|
<p className="font-mono text-sm tracking-[0.3em] text-arc">TILT</p>
|
|
<h1 className="font-display text-5xl font-black tracking-wide text-marquee sm:text-7xl">
|
|
TABLE NOT FOUND
|
|
</h1>
|
|
<p className="max-w-md font-body text-chrome">
|
|
That page drained down the outlane. Head back to the cabinet and pick a table.
|
|
</p>
|
|
<Link href="/" className={buttonClassName("primary")}>
|
|
Back to Start
|
|
</Link>
|
|
</main>
|
|
);
|
|
}
|