feat: add 6 more skins (PS1, PS3, Wii, NDS, Dreamcast, JV2002)

Brings the catalog to nine. Each is a single scoped [data-theme="..."]
CSS file plus a registry entry — no markup changes.

- ps1: charcoal BIOS, gray panels, uppercase letterspacing
- ps3: animated XMB sky gradient + drifting wave, black glass
- wii: white channels, rounded pills, soft blue glow
- nds: silver shell with content framed as the touch screen
- dreamcast: cream BIOS, conic-gradient orange swirl, lowercase blue
- jv2002: dense boxy portal, Verdana 11px, red masthead, blue nav tabs

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-07 00:49:52 +02:00
parent 37ba9b3e19
commit 91244a5a2b
32 changed files with 3093 additions and 29 deletions
+23
View File
@@ -0,0 +1,23 @@
import { NextResponse, type NextRequest } from "next/server";
import { ADMIN_COOKIE, verifySessionToken } from "@/lib/session";
// Gate every /admin route behind a valid session, except the login page and its
// POST action. Runs on the Edge runtime, so it relies only on Web Crypto
// (see lib/session.ts) — no Node APIs.
export async function proxy(req: NextRequest) {
const { pathname } = req.nextUrl;
if (pathname === "/admin/login") return NextResponse.next();
const token = req.cookies.get(ADMIN_COOKIE)?.value;
if (await verifySessionToken(token)) return NextResponse.next();
const url = req.nextUrl.clone();
url.pathname = "/admin/login";
url.searchParams.set("next", pathname);
return NextResponse.redirect(url);
}
export const config = {
matcher: ["/admin/:path*"],
};