import { Suspense } from "react"; import type { Metadata } from "next"; import type { GameCard } from "@spinza/shared"; import { apiServer } from "@/lib/api-server"; import { AppShell } from "@/components/shell/app-shell"; import { ServerUnavailable } from "@/components/shell/api-error"; import { GamesBrowser } from "@/components/lobby/games-browser"; import { GameCardSkeleton } from "@/components/lobby/game-card"; export const metadata: Metadata = { title: "Games", description: "Browse all twenty original Spinza games — cascades, expanding wilds, hold-and-respin jackpots and more. Free fictional credits, no cash value.", alternates: { canonical: "/games" }, }; export default async function GamesPage() { const data = await apiServer<{ games: GameCard[] }>("/api/games"); return (
Library

All games

Every title is a Spinza original, certified against its published math. Volatility tells you how the ride feels; open Game Info inside any game for the full details.

{data === null ? ( ) : ( {Array.from({ length: 10 }).map((_, i) => ( ))} } > )}
); }