Steps Composition

Position in an ordered sequence — the thing Tabs must not be used for, because tabs let a person skip straight to step three.

Usage

  1. Account (completed)Who is signing up
  2. Workspace (current step)Name and members
  3. BillingPlan and payment
  4. Done
  1. Account (completed)Who is signing up
  2. Workspace (completed)Name and members
  3. Billing (current step)Plan and payment
  4. Done
tsx
<Steps current={1} steps={[  { label: 'Account', description: 'Who is signing up' },  { label: 'Workspace', description: 'Name and members' },]} />

What it announces

Completed and current steps carry a visually hidden "(completed)" and "(current step)". Without them the state is a colour and a tick, and neither reaches a screen reader.

Do

Keep it to five steps or fewer; past that a progress bar with a count reads better.

Don't

Make the markers clickable to jump ahead — if steps can be visited in any order, they were not steps.

Props

PropTypeDefaultNotes
stepsArray<{ label, description? }>In order.
currentnumberZero-based index of the step in progress. Everything before it renders as done.
orientation'horizontal' | 'vertical''horizontal'Vertical suits a sidebar or a long form.