No.307 · Sections· New
Quickstart Checklist
Onboarding as a short stack of numbered, hard-edged cards: the next step is open and lifted, marking it done stamps and folds it, and a segmented bar keeps count.
The prompt
Written for the variant you picked above: Light
Build an onboarding checklist in a playful-technical, diagrammatic style: warm off-white page #f4efea, white cards, ink #383838, 2px ink borders, 2px corners, flat hard shadows, DM Mono uppercase for headings, numbers and buttons, Inter light for prose. A header with the title ('GET WALLY RUNNING', 22–28px DM Mono) and '1 of 4 done' on the right. Under it, a segmented progress bar: one 12px bordered segment per step with 6px gaps, filling teal #16aa98 as steps finish. Then an ordered stack of step cards, 12px apart. Each card's header is a full-width disclosure button: a 34×30 bordered yellow #ffde00 number chip ('01'), the step title at 16px 500, and a chevron that flips when open. The open card lifts (translate −2px, −2px) onto a 4px 4px 0 hard shadow and shows its body indented under the title: muted prose (inline code in small bordered mono), then a sky #6fc2ff primary action button and an outlined 'MARK AS DONE'. Finished cards turn a pale teal, their chip becomes a teal ✓, the title strikes through, and a small teal-outlined 'DONE' stamp tilted −4° drops in from 160% scale. Buttons lift 2px with a 2px hard shadow on hover. Selected variant — Light (light): Light theme: page #f4efea, cards #ffffff, ink, borders and hard shadows #383838, muted #6f6a64, faint #a39e97, yellow chips #ffde00, sky action #6fc2ff, teal progress and done #16aa98, finished card #eaf6f3. 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: One step is open at a time; headers toggle their own step. Mark as done saves, opens the next unfinished step and moves focus to its header; Mark as not done reopens a step. With storageKey, finished steps persist (try/catch, ignoring unknown ids). onComplete fires once when the last step is finished. Motion: Cards lift and shadows appear over 160ms; segments fill over 260ms; the stamp drops with a slight overshoot. Reduced motion removes the lift, fill transition and stamp drop. Accessibility: Each step header is a real button inside a heading with aria-expanded and aria-controls; collapsed bodies use hidden. The segmented bar is a progressbar with value and maximum, and the count is announced politely. Focus moves to the next step header after marking one done. Responsive behavior: Fluid width; under 28rem the step body drops its indent. Touch: Every control is a tap target; nothing depends on hover. 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
- One step is open at a time; headers toggle their own step. Mark as done saves, opens the next unfinished step and moves focus to its header; Mark as not done reopens a step. With storageKey, finished steps persist (try/catch, ignoring unknown ids). onComplete fires once when the last step is finished.
- Motion
- Cards lift and shadows appear over 160ms; segments fill over 260ms; the stamp drops with a slight overshoot. Reduced motion removes the lift, fill transition and stamp drop.
- Accessibility
- Each step header is a real button inside a heading with aria-expanded and aria-controls; collapsed bodies use hidden. The segmented bar is a progressbar with value and maximum, and the count is announced politely. Focus moves to the next step header after marking one done.
- Responsive
- Fluid width; under 28rem the step body drops its indent.
- On touch
- Every control is a tap target; nothing depends on hover.