TypeScript 97.6%
SQL 1.4%
JavaScript 0.5%
1"use client";23/**4 * Dispatcher for the Beyond Slots originals: picks the scene component from5 * `definition.presentation.scene` and hosts it in the shared ArcadeShell.6 * (Minimal harness — the integrator owns the final version.)7 */8import type { ComponentType } from "react";9import type { GameInfo } from "@spinza/shared";10import type { ArcadeGameDefinition } from "@spinza/game-core/client";11import { ArcadeShell } from "./arcade-shell";12import type { ArcadeGameProps } from "./contract";13import { VaultGame } from "./vault";14import { EscapeGame } from "./escape";15import { DropzoneGame } from "./dropzone";16import { GridbreakGame } from "./gridbreak";17import { OrbitGame } from "./orbit";1819const SCENES: Partial<Record<ArcadeGameDefinition["presentation"]["scene"], ComponentType<ArcadeGameProps>>> = {20 vault: VaultGame,21 escape: EscapeGame,22 dropzone: DropzoneGame,23 gridbreak: GridbreakGame,24 orbit: OrbitGame,25};2627export function ArcadeClient({ game, definition }: { game: GameInfo; definition: ArcadeGameDefinition }) {28 const Game = SCENES[definition.presentation.scene];29 if (!Game) return null;30 return <ArcadeShell game={game} definition={definition} Game={Game} />;31}32