Press Start has a deliberately shallow component tree. The rootDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/press-start/llms.txt
Use this file to discover all available pages before exploring further.
App component (Q in the minified bundle) owns a single piece of state — a boolean that tracks whether the player has pressed start — and uses it to decide between rendering the PressStartGate splash screen and the full application shell. Once the gate is cleared, the shell renders a persistent chrome layer (CRTOverlay, ArcadeMenu, footer) wrapped around a PageWrapper that manages route transitions. All page content renders inside Routes at the leaf level.
Component hierarchy
BrowserRouter (imported as B / Np) wraps the entire tree and is the outermost element returned by App.
Component reference
PressStartGate
Renders a full-screen black splash with the “PLAYER ONE” heading, an animated “PRESS START” button, and a coin-credit counter. It accepts a single onStart callback prop. When the button is clicked, the component fades to opacity 0 over 300 ms — triggering a white flash overlay — then calls onStart after a 600 ms delay. App stores the gate-cleared boolean in useState and passes () => setStarted(true) as the callback.
CRTOverlay
A fixed, pointer-events-none overlay that renders the phosphor scanline and RGB-split visual effects across the entire viewport. It is always present in the tree — both before and after the gate — so the CRT aesthetic applies to the splash screen as well as the main application. The component has no props and no internal state.
ArcadeMenu
The sticky navigation bar rendered at the top of the application shell. It maps the seven named routes to <Link> elements styled with the arcade green/magenta palette. The active route is highlighted with a ► indicator and an underline. ArcadeMenu also owns the global keydown listener that cycles through routes on ArrowLeft / ArrowRight / ArrowUp / ArrowDown key presses. See ArcadeMenu component reference for full documentation.
PageWrapper
A layout wrapper that sits directly inside <main> and surrounds the <Routes> block. It watches useLocation() and, on every route change, performs a two-phase animation: the content fades out over 150 ms while a green scanline div flashes across the screen, then the new route’s content fades back in. The component accepts a single children prop.
HighScoreTable
Renders an animated high-score leaderboard display on the Home page. It uses an IntersectionObserver to trigger entrance animations when scrolled into view.
PixelSprite
Renders a pixel-art character sprite on the Home page using inline SVG <rect> elements. The component is self-contained with no props and acts as a decorative visual accent consistent with the arcade theme.
Component quick-reference
PressStartGate
Intro splash screen that gates the app behind a “PRESS START” interaction with a fade-out and white-flash transition.
ArcadeMenu
Sticky navigation bar with active-route highlighting, keyboard arrow-key cycling, and retro arcade styling.
CRTOverlay
Full-screen fixed overlay that applies phosphor scanline and RGB-split effects to the entire viewport.
HighScoreTable
Scroll-triggered animated leaderboard displayed on the Home page, built with IntersectionObserver.
PixelSprite
Decorative pixel-art sprite rendered with SVG rectangles on the Home page hero section.