Components · Explainer
The numbered how-it-works run that a policy panel drops in to answer “what happens next.” Steps lays markers on a spine — joined by connectors, each carrying a done / current / upcoming state — as a compact horizontal stepper for progress, or a vertical sequence with descriptions for a flow you're teaching. Below, both explain the same thing: how a rescuer earns team-lead access to PII.
Each .step is marker · body · connector, evenly stretched. Done markers fill accent and swap the number for a check; the current marker rings accent on a soft fill and carries aria-current="step"; upcoming stay neutral surface-2. State never rides color alone — the check glyph, fill, and title weight all shift.
The steps--vertical mode stacks the run and drops each .step__desc beneath its title — the shape a policy ExplainerPanel embeds as its “what to do.” The connector runs the marker rail down to the next marker; completed segments tint accent so progress reads down the spine. The last step carries no line.
steps: StepItem[] ( { title, desc?, marker? } ) plus current — the index that splits the run into done (before), current (at), and upcoming (after).--control-row-h pill: neutral surface-2 upcoming, accent-soft ring when current, filled accent when done. Shows marker ?? index+1 — pass a check for completed.--rule hairline, horizontal (flex:1) or vertical down the rail. Rendered for every step except the last; aria-hidden.vertical ( steps--vertical ) switches to a stacked column so descriptions have room — the how-it-works layout. Horizontal is the compact progress ribbon.<ol> keeps ordered-list semantics; the current <li> carries aria-current="step". State is glyph + fill + weight, never hue alone.Source · @phauna/ds Steps ( .steps / .step__marker / .step__line ) as embedded in ExplainerPanel.tsx & AuthExplainer.tsx “what to do” · design-system/explainers.