Add vpinball: a browser Visual Pinball player
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
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
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>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user