Skip to main content

Storybook

Progress Stepper

Displays a user's current position within a multi-step process. Use in wizards or guided workflows to communicate progress. Don't use for processes with more than 7 steps.

Figma Storybook Docs

Description

What it does

Renders a horizontal or vertical sequence of labelled steps, highlighting the active step and visually distinguishing completed steps from upcoming ones.

Where it appears

Multi-step forms and wizards — for example, the stakeholder onboarding wizard in Open Point, or the consultation submission flow in Social Point.

Why it exists

Government workflows often span multiple screens of structured data entry. A persistent progress indicator reduces abandonment by showing users how much work remains and confirming what they have already completed.

Dependencies

Button, Form

Anatomy

PartRequired?Notes
Step indicator (circle) Required Numbered circle that marks each step. Shows the step number when upcoming, a check icon when complete, and a filled active style on the current step.
Step connector (line) Required Horizontal or vertical line linking adjacent step indicators. Uses --op-color-border-default for upcoming segments and --op-color-interactive-default for completed segments.
Step label Recommended Short text directly beneath or beside the step indicator. Describes the step's purpose (e.g. 'Contact details', 'Review'). Omit only when space is critically constrained and step numbers alone are sufficient.
Step sub-label Optional Secondary line of text below the step label. Use for brief clarification (e.g. 'Required fields only'). Keep to one line.
Step error indicator Optional Replaces the step circle icon with an error icon and applies --op-color-status-error when a completed step contains a validation error that requires the user to return to it.

Variants

Horizontal

Steps flow left-to-right across the page

Default layout. Use when there are 2–5 steps and sufficient horizontal space (desktop and tablet viewports).

Vertical

Steps stack top-to-bottom

Use on narrow viewports, in side panels, or when step labels are long. Also appropriate when there are 6–7 steps and the horizontal layout would become crowded.

Compact (no labels)

Only numbered circles and connecting lines with no text labels

Use sparingly when space is extremely limited and the surrounding UI provides sufficient context. Always include a descriptive aria-label on each step indicator.

States

State Behaviour
Upcoming Step circle displays the step number. Circle border uses --op-color-border-default; number text uses --op-color-text-secondary. Connector line uses --op-color-border-default.
Active Step circle is filled with --op-color-interactive-default; number text uses --op-color-text-on-interactive. Label text weight increases to semibold. Connector line to the left/above uses --op-color-interactive-default.
Completed Step circle filled with --op-color-interactive-default; displays a checkmark icon instead of a number. Connector lines on both sides use --op-color-interactive-default. Label text uses --op-color-text-secondary.
Error Replaces the checkmark with an error icon. Circle border and icon use --op-color-status-error. Label text uses --op-color-status-error. Indicates the user must revisit this step before proceeding.
Disabled Applies when a step cannot be accessed until a preceding step is completed. Circle border and label use --op-color-text-disabled. The step must not be keyboard-focusable in this state.
Clickable (completed step) Completed steps may be made interactive to allow non-linear navigation. Apply a hover underline to the label and a pointer cursor. Focus ring: 3px solid --op-color-interactive-focus, offset 2px.

Usage guidelines

When to use

  • Multi-step form wizards where each step is a distinct page or panel (e.g. creating a new stakeholder record in Open Point across Contact, Organisation, and Tags steps).
  • Guided submission flows where users must complete steps sequentially before submitting (e.g. a public consultation response in Social Point).
  • Onboarding sequences where orientation through a fixed set of screens is required.

When not to use

  • Processes with more than 7 steps — consider splitting into sub-workflows or using a different navigation pattern such as a sidebar task list.
  • Simple single-screen forms — a progress stepper adds visual noise without benefit. Use a standard form layout instead.
  • Non-linear processes where the user may complete steps in any order — use a checklist or task list component instead.
  • Progress through a continuous value (e.g. a file upload percentage) — use a progress bar instead.

Do / Don't

Do

Keep step labels concise — two to three words per step (e.g. 'Your details', 'Preferences', 'Review').

Don't

Don't write sentence-length labels. Long labels break horizontal layouts and are harder to scan.

Do

Allow completed steps to be clicked so users can review or correct earlier input without losing later progress.

Don't

Don't reset all subsequent steps when a user edits an earlier one unless the data genuinely depends on it.

Do

Persist the stepper at the top of each step screen so users always know where they are.

Don't

Don't hide or remove the stepper between steps — users need continuous orientation in government forms.

Do

Validate each step before advancing and surface errors on the relevant step indicator if the user returns.

Don't

Don't surface all validation errors only on the final review step — this forces unnecessary back-navigation.

Was this page helpful?

Updated 9 September 2026