The Writing page (Documentation 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.
q component, route /writing) presents articles as a horizontal shelf of game manual spines — tall, narrow cards with left-spine detailing, type badges, and colour-coded borders. Visitors scroll horizontally across the shelf and click any spine to open a full-screen paper modal that renders the article in a warm off-white book layout with a pageTurn CSS animation. The first card in the shelf is intentionally taller than the rest to give the featured article a visually dominant position.
Route
/writing
Shelf layout
The shelf is a horizontally scrollable flex container withsnap-x snap-mandatory so cards snap to the centre of the viewport as the user scrolls. The container fills the available height (flex-grow) of an 80 vh page and sits between two border-y-4 dividers. A custom scrollbar class keeps the horizontal track styled to match the arcade theme.
Cards hover with hover:-translate-y-4 for a “pick up the manual” lift effect.
Article data
Articles are defined in the$ array inside the q component block:
Field reference
| Field | Type | Notes |
|---|---|---|
id | number | Unique key; also drives VOL. 01 numbering (zero-padded to 2) |
title | string | Uppercase; rendered in Press Start 2P on the card spine and in the modal header |
type | string | Short category label displayed as a badge (e.g. TECHNICAL, BUG LOG, REFLECTION, ARTICLE) |
date | string | ISO 8601 date string; displayed as PUBLISHED: YYYY-MM-DD in the modal |
excerpt | string | One-sentence teaser; shown on the card and as the opening bold paragraph in the modal |
content | string | Full article body; currently plain text — see note below about CMS integration |
color | string | CSS custom property, e.g. "var(--neon-magenta)"; sets card border, badge colour, and title colour |
Adding an article
- Append a new object to the
$array with the next sequentialid. - Provide all six fields. The
typestring can be anything — it appears as a raw badge label. - The first card in the array renders at a larger size (
w-80 h-[28rem]vsw-64 h-[24rem]). To feature a different article, move it to index0.
Card anatomy
Article modal
Clicking a card setsselectedArticle state to the clicked article object. The modal renders as a fixed full-screen overlay (z-50) with a pageTurn CSS keyframe animation:
- Background: warm off-white (
#f4f4f0) with a subtle paper-grain texture overlay. - Header block: type badge in accent colour, title in Press Start 2P, and the publication date.
- Body: the
excerptrendered as a large bold paragraph, followed by thecontentstring, then two lorem ipsum paragraphs as filler body text.
✕ button (top-right), which sets selectedArticle back to null.
Page-turn animation
The modal container hasanimate-[pageTurn_0.5s_ease-out] applied on mount. The pageTurn keyframe is defined in the global CSS:
The modal does not trap keyboard focus or restore focus to the triggering card on close. If accessibility is a priority, add a focus-trap and restore focus to the card element after the modal unmounts.
Horizontal scroll on touch devices
The shelf uses-webkit-overflow-scrolling: touch behaviour via Tailwind’s overflow-x-auto and snap-x. On iOS Safari, momentum scrolling is automatic. On desktop, horizontal scroll works with a trackpad two-finger swipe or by holding Shift and using the mouse wheel.