No.97 · Cards· New
Filter Step Card
A numbered feature card that shows the feature working: stacked dark sheets hold a real filter panel with place, price and date tabs and a live match count, over a field of drifting characters lit by a warm glow behind the step number.
The prompt
Written for the variant you picked above: Copper
Build a numbered feature card that demonstrates its feature with a working mini UI (React + CSS, no libraries). Card: 40em × 44em (16px base), radius 2em, clipped. Background near-black at the top warming toward a dark tint of the glow colour at the bottom; a hairline rim tinted with the glow, brighter along the top edge. Upper half, a stack of sheets: a faint outlined back sheet (inset 1em, 25.6em tall, fading out at its foot) and a front sheet (inset 3.3em each side, 23.7em tall, #1a1817 → #0f0d0d, hairline, deep shadow) holding the panel: - a three-tab segmented control (Place, Price, Date) in a hairline tray; each tab has a grey icon (pin, coin, calendar), its label and a small square count badge in the badge colour showing how many constraints that tab applies (dimmed at 0). Tabs follow the ARIA tabs pattern: arrows and Home/End move, roving tabindex. - the active panel: Price shows "From" and "To" money fields ($0 / $720; an empty field means open-ended), Place a distance slider, Date seven day toggles. - a wide frosted action bar: an ✕ that clears every filter and "See 156 matching events", where the number is counted live from a small seeded list of events (a polite live region announces it). Lower half: a dashed 1.5px rule across the card at 65% with a frosted step pill ("04") on it; behind it a warm glow (a white-hot core, a glow-colour ellipse and a broad wash, breathing). Behind everything, rows of random alphanumeric strings in a dim glow colour, staggered every other row and masked to fade from the glow, with a few characters re-rolling every 160ms. Under the rule, a centred title (2.5em, 500, tracking −0.04em) whose first word is dimmed, and a 1.38em description with a few words set brighter. Reduced motion stops the re-rolling and the breathing. Props: step, title, children (description), tone {glow, badge, page}, onApply(filters, count). Selected variant — Copper (copper): Glow #e07a3f with #ff8a4c badges on a #070b14 navy page. This selection takes precedence over references to other themes or options in the general brief. Implement this selected appearance; do not add a variant picker or alternative appearances unless requested. Implementation requirements: Use React and TypeScript. Keep the component self-contained, with uniquely scoped CSS and no animation libraries. Include required imports, styles and font setup in the result. Interaction: Switch tabs by click or arrow keys; type prices, drag the distance or toggle days and the match count updates; ✕ clears every filter; the action reports the filters and count. Motion: Glyphs re-roll a few characters every 160ms; the glow breathes over 6s; tab and badge states ease over 0.2s. Accessibility: Tabs use tablist, tab and tabpanel with roving focus; fields have labels; day toggles use aria-pressed; the clear button is labelled; the match count is announced politely; the title carries the step number for screen readers. The glyph field and glow are aria-hidden. Reduced motion stops all loops. Responsive behavior: 40em wide, shrinking to its container; under 520px the type steps down and the sheet insets tighten so the fields still fit side by side. Touch: Every control is a normal tap target; the glyph field drifts on its own. Preserve keyboard access, visible focus and reduced-motion behavior. Keep fictional demo data and simulated service calls in a separate usage example; expose callbacks for real actions and recover from rejected requests. Keep usage-example links inside the demo: use local buttons or prevent navigation. Demonstration links must not navigate to Vitrine routes or open other pages; preserve real URL support in the reusable component itself. Verify the result at narrow and wide viewport sizes, with keyboard input and reduced motion enabled.
Notes
- Interaction
- Switch tabs by click or arrow keys; type prices, drag the distance or toggle days and the match count updates; ✕ clears every filter; the action reports the filters and count.
- Motion
- Glyphs re-roll a few characters every 160ms; the glow breathes over 6s; tab and badge states ease over 0.2s.
- Accessibility
- Tabs use tablist, tab and tabpanel with roving focus; fields have labels; day toggles use aria-pressed; the clear button is labelled; the match count is announced politely; the title carries the step number for screen readers. The glyph field and glow are aria-hidden. Reduced motion stops all loops.
- Responsive
- 40em wide, shrinking to its container; under 520px the type steps down and the sheet insets tighten so the fields still fit side by side.
- On touch
- Every control is a normal tap target; the glyph field drifts on its own.