Skip to main content

Design system components

StageList

Places entries by the lifecycle stage they belong to, so a reader at any stage finds what applies now. Five layouts over one data model: sheet, rail, index, checklist and cards.

Status: beta. Group: content. Markdown version: /design-system/components/stage-list.md

When to use

StageList answers "what applies at this stage?". Each entry names its stages; the list places it under the first and writes out the later ones. Pick a layout for the reading task: sheet for scanning answers by stage (the default), rail when the order is the point, index for a long list read in two passes, checklist when the reader works through it on a project, cards for a looser overview.

When not to use

  • Do not use for a sequence the reader must follow step by step to finish a task; that is a stepper or an ordered list of instructions.
  • Do not use when entries have no stage; a plain List or Table reads better.
  • Do not use the checklist layout for state that must persist across devices or people; ticks stay in one browser.

Look-alikes

The contract names no look-alike with a deciding condition.

Props

StageList props
PropTypeDefaultDescriptionRequired
itemsStageListItem[]noneEntries to place by stage; each sits under the first stage it lists.Yes
stagesStageListStage[]noneLifecycle stages in order.Yes
phasesStageListPhase[]noneGroups consecutive stages into phases for the sheet, checklist and cards layouts.No
variant"sheet" | "rail" | "index" | "checklist" | "cards"sheetLayout of the list.No
headingLevel"2" | "3" | "4"3Level of the top headings the list renders.No
storageKeystringnoneChecklist only: localStorage key that keeps ticks between visits.No
indexLabelstringnoneAccessible name for the index layout's overview navigation.No
classNamestringnoneAdditional className for the root element.No

Variants

  • Available variants: sheet, rail, index, checklist, cards (default sheet).
  • Allowed headingLevel values: 2, 3, 4 (default 3).

Invalid combinations

The contract records no invalid combinations.

Keyboard

StageList keyboard behaviour
KeyBehaviour
TabMoves through the index links and the checklist tick boxes in reading order; the other layouts hold no controls.
SpaceToggles the focused tick box.
EnterFollows the focused index link to its entry.

Rules

Every item under When not to use is a MUST NOT. MUST and SHOULD follow RFC 2119.

StageList rules
LevelRuleHow it is checked
MUSTARIA: Phase and stage names are real headings, one level apart, starting at headingLevel so the list slots into the page outline.Not yet verified: no evidence record. WCAG 4.1.2.
MUSTARIA: The rail is an ordered list of stages; entries are list items.Not yet verified: no evidence record. WCAG 4.1.2.
MUSTARIA: The index overview is a navigation landmark named by indexLabel; each entry is an article named by its heading.Not yet verified: no evidence record. WCAG 4.1.2.
MUSTARIA: Each checklist stage is a fieldset named by its legend; each tick box is named by the entry's lead and described by the entry's detail.Not yet verified: no evidence record. WCAG 4.1.2.
MUSTARIA: The checklist count is a polite live region so ticking announces progress without moving focus.Not yet verified: no evidence record. WCAG 4.1.2.
MUSTARIA: Recurring stages are written out in text ("Again at ..."), never conveyed by position or colour alone.Not yet verified: no evidence record. WCAG 4.1.2.
MUSTRequired stories produce no axe violations at the configured severity.Automated by npm run test:stories:matrix:ci. WCAG 2.5.8.
MUSTThe accessibility tree (role, name, state) matches the committed snapshot for every required story.Automated by npm run test:stories:matrix:ci. WCAG 1.3.1, 4.1.2.
MUSTThe component remains legible and operable under a real browser forced-colors: active pass.Automated by npm run test:stories:hc.
MUSTEvery documented keyboard interaction works as specified.Not yet verified: no evidence record. WCAG 2.1.1, 2.1.2.
MUSTA human completed an end-to-end accessibility review of this component.Manual review, last on 2026-10-16.
SHOULDLead each entry with the answer the reader scans for (who to call, what to do) and keep the title as the smaller line.Not stated in the contract.
SHOULDGroup more than about five stages into phases so the list has a short outline.Not stated in the contract.
SHOULDSet headingLevel to one below the surrounding section heading.Not stated in the contract.
SHOULDGive each stage a phrase for the recurrence line when its label would read oddly mid-sentence.Not stated in the contract.
SHOULD NOTDo not encode stage or recurrence with colour or position alone; the text says it.Not stated in the contract.

Install and import

  • Install: npm install @digitaltableteur/react (version 0.9.1, restricted access on npm).
  • Import: import { StageList } from "@digitaltableteur/react";
  • Entry point: @digitaltableteur/react/content exports it too.
  • Styles: import @digitaltableteur/react/style.css once at the app boundary.