TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/retro-cosmic-arcade/llms.txt
Use this file to discover all available pages before exploring further.
Footer component lives at the bottom of every page in Retro Cosmic Arcade and does two jobs: it displays a row of classic 88×31 pixel web badges and provides an interactive CRT scanline toggle that applies a full-viewport scan-line overlay to the entire site. It accepts no props and manages its own internal state.
Usage
Drop<Footer /> once at the bottom of each page layout, after all main content:
The Footer has no props. All behavior — badge rendering and scanline toggling — is managed internally via
useState and useEffect.CRT Scanline Toggle
The Footer initialises ascanlines boolean state that defaults to true (scanlines ON). A useEffect hook watches this value and adds or removes the CSS class scanlines-active from document.body on every change.
scanlines-active is present on <body>, external CSS rules can target body.scanlines-active to apply additional global effects. Separately — and independently driven by the same state boolean — the Footer component conditionally renders a fixed, full-viewport <div className="scanlines"> overlay directly in its JSX at z-40. Both the body class and the overlay div are added/removed together whenever the toggle state changes.
CSS Definition
The scan-line visual is produced by a repeating linear gradient defined inassets/main.css:
pointer-events: none ensures the overlay never blocks clicks or hover events on page content.
Toggle Behavior Summary
Page loads
scanlines initialises as true. useEffect fires and adds scanlines-active to document.body. At the same time, the JSX conditional {scanlines && <div className="scanlines ...">} renders the fixed full-viewport overlay div inside the footer.User clicks the toggle button
setScanlines(!scanlines) flips the state to false. useEffect re-runs, removing scanlines-active from document.body. The JSX conditional simultaneously removes the overlay div from the DOM.Retro 88×31 Badges
The Footer renders three classic 88×31 web badges — a staple of late-1990s/early-2000s personal home pages. Each badge is sized with Tailwind’sh-[31px] w-[88px] to match the canonical badge dimensions.
BEST VIEWED IN NETSCAPE
Background: black (
Text: lime (
A tongue-in-cheek nod to the browser wars of the 1990s.
bg-black)Text: lime (
text-y2k-lime)A tongue-in-cheek nod to the browser wars of the 1990s.
HTML 4.0 VALID!
Background: dark blue (
Text: white (
Parodies the W3C HTML validation badges that proud webmasters once displayed.
bg-blue-900)Text: white (
text-white)Parodies the W3C HTML validation badges that proud webmasters once displayed.
ANTI-BOOTSTRAP
Background: magenta (
Text: black (
A playful dig at the ubiquity of CSS frameworks — ironic given the site uses Tailwind.
bg-y2k-magenta)Text: black (
text-black)A playful dig at the ubiquity of CSS frameworks — ironic given the site uses Tailwind.
Footer Text
Below the badges, the footer renders two lines of flavour copy intext-y2k-silver:
font-vt323 text-lg size; the second uses text-sm for a subtle typographic hierarchy.
Styling Reference
| Tailwind Class | Purpose |
|---|---|
mt-16 border-t-2 border-y2k-cyan | Top border separating footer from page content |
bg-y2k-panel | Dark panel background consistent with the site’s Y2K palette |
font-vt323 text-lg | VT323 monospace font at large size throughout the footer |
h-[31px] w-[88px] | Canonical 88×31 pixel badge dimensions |
fixed inset-0 z-40 pointer-events-none | Full-viewport scanline overlay that sits above content but below modals |