"use client"; import { useState, type ChangeEvent } from "react"; import Button, { buttonClassName } from "@/components/ui/Button"; import { formatBytes } from "@/lib/format"; const ROM_FILE_INPUT_ID = "rom-file-input"; export interface TableStagingProps { vpxFile: File; onPlay: (romFile: File | undefined, saveToLibrary: boolean) => void; onCancel: () => void; } export default function TableStaging({ vpxFile, onPlay, onCancel }: TableStagingProps) { const [romFile, setRomFile] = useState(null); const [saveToLibrary, setSaveToLibrary] = useState(true); const [error, setError] = useState(null); const handleRomChange = (e: ChangeEvent) => { const file = e.target.files?.[0]; e.target.value = ""; if (!file) return; if (!file.name.toLowerCase().endsWith(".zip")) { setError(`"${file.name}" isn't a .zip file.`); return; } setError(null); setRomFile(file); }; return (

TABLE SELECTED

{vpxFile.name}

{formatBytes(vpxFile.size)}

Real-hardware ("SS") tables need a matching PinMAME ROM. Attach its zip if you have one — most tables don't need this.

{romFile && ( )}
{error && (

{error}

)}
); }