UI PRIMITIVES
Every component ships fully typed and prop-driven. Customize colors via @theme tokens in globals.css. No component edits needed.
THEME SYSTEM
SWAP 3 TOKENS. NEW THEME.
Every component inherits from --color-retro-green, --color-retro-green-dim, and --color-retro-magenta. Override all three and the entire UI transforms.
GREEN
The default. Classic arcade phosphor: green neon on black.
CURRENTLY VIEWING
CYAN
Electric blue-cyan primary with warm orange accent. Cyberpunk ocean.
→ VIEW CYAN VARIANT
PINK
Hot pink primary with electric violet accent. Vaporwave neon arcade.
→ VIEW PINK VARIANT
BADGE COMPONENT
COLOR VARIANTS
GAME CONTEXT
TEXT COMPONENT
BODY
Regular paragraph copy. Descriptions, explanations, readable blocks.
Regular paragraph copy in VT323. Used for descriptions, explanations, and any block of readable text. Scales from 18px to 22px.
<Text variant="body"> Your paragraph content here. </Text>
CAPTION
Supplementary text: dates, meta info, footnotes, helper hints.
Smaller supplementary text: dates, meta info, footnotes, helper hints below inputs. Scales from 16px to 20px, dimmer opacity.
<Text variant="caption">Published March 4, 2026</Text>
LABEL
Section sub-labels and identifiers. Supports color overrides via className.
SECTION SUB-LABELS
CYAN OVERRIDE
ACCENT OVERRIDE
<Text variant="label">SECTION TITLE</Text> // with color override <Text variant="label" className="text-retro-cyan!">CATEGORY</Text>
CODE
File paths, token names, inline code references.
src/app/globals.css
@/components/ui/Button
variant="body" as="div"
<Text variant="code">src/app/globals.css</Text> <Text variant="code">@/components/ui/Button</Text>
AS PROP: SEMANTIC ELEMENT
The as prop controls the rendered HTML element while keeping the same visual style. Use as="span" to place text inline within a paragraph.
Block paragraph text.
<Text variant="body">...</Text>
<Text as="div">...</Text>
Use the as prop inline.
<Text as="span">...</Text>
SECTIONHEADER COMPONENT
LEFT ALIGNED (DEFAULT)
YOUR SECTION TITLE
CENTER ALIGNED
CENTERED HEADING
STATBLOCK COMPONENT
LEVELS
DEVS
IN DEV
HEART
CARD COMPONENT
DYNAMIC WORLDS
Procedurally generated environments that shift and breathe with the player's emotional state.
LIGHT MECHANICS
Darkness consumes. Every beam of light is earned. Physics-based illumination reacts to your every move.
EMOTIONAL SCORE
An adaptive soundtrack that mirrors the player's journey from void to radiance. 40+ hours of music.
SCOREBOARD COMPONENT
| RANK | PLAYER | STAGE | SCORE | DATE |
|---|---|---|---|---|
| 01 | A>D>WNEW | STAGE 12 | 9,824,750 | 26.03.04 |
| 02 | L>I>T | STAGE 11 | 7,314,200 | 26.02.14 |
| 03 | G>H>O | STAGE 10 | 5,980,100 | 25.12.31 |
| 04 | V>O>I | STAGE 09 | 4,200,000 | 25.11.08 |
| 05 | D>A>R | STAGE 08 | 2,999,999 | 25.10.22 |
PIXELCHARACTER COMPONENT
HERO
GHOST
COIN
SIZE 48
SIZE 32
COLOR TOKENS
retro-green
#00ff41
retro-magenta
#ff00a8
retro-cyan
#00e5ff
retro-yellow
#ffe600
retro-white
#e8eaf0
retro-black
#070810
retro-deep
#0d0f1a
retro-green-dim
#00aa2a
HOW TO SWAP THE THEME
All tokens live in src/app/globals.css under @theme. Change any value and every component updates. No component edits needed.
SYSTEM PAGES
Game Over: Page Not Found screen shown when a route doesn't exist.
→ PREVIEWCritical System Failure screen shown when an unexpected error occurs.
→ PREVIEWThe 404 page is live at any unknown route. Try /this-does-not-exist. The error page triggers on runtime exceptions.