Getting started
Components
Not all multi-step tasks need Progress Steps. Tasks that are short, straightforward, and linear probably don't need the extra layer of information that Progress Steps provides.
Each step can communicate one of these statuses:
title
role=list
role=listitem
aria-current
step
Use Progress Steps as buttons when each step triggers an in-page action and doesn't have a unique URL. We recommend using this button action to save information in each step.
Only button steps may be disabled.
Use Progress Steps as anchors when each step links to other pages and has a unique URL.
Use Progress Steps as divs when steps have no need for user interaction.
You can use vertical Progress Steps when the content of the task is tall and narrow, or you need to add additional content to each step.
Use ProgressStepContent to add additional content to non-interactive vertical Progress Steps.
ProgressStepContent
Implement the logic locally to ensure the step's status is accurately reflected within the Progress Steps component.
Each step within the Progress Steps component has a label which can be set to adjust the icon's title for internationalization.
ProgressStepSeparator is no longer required starting v2.2.1. The separator is now automatically added between each step using CSS. It is backwards compatible, so previous versions will still work.
Show the error status on a step when it's not the current step they're on. When a user navigates to the step that has errors, use ProgressStepCurrent to set the status of the step to current, and use in-page validation to then communicate the errors in the current page.
ProgressStepCurrent
Use Progress Steps for complex tasks with 3–5 steps that can't be completed in one session.
Don't use Progress Steps for every single kind of task that has multiple steps. A line of text can be used as an alternative to show progression (e.g., "Step 1 of 2")
Make the labels of each step short, descriptive, and consistent. Use fewer than 5 words for each step label.
Don't use long or inconsistent labels with mismatched parts of speech.
Keep Progress Steps in a consistent location between steps or pages.
Don't change the placement of Progress Steps between steps or pages.
Include only one Progress Steps component per task or page.
Don't embed a Progress Steps component within a task that's already being tracked with another Progress Steps component. Don't use multiple Progress Steps per page.
Help us improve this component by providing feedback, asking questions on Slack, or updating this file on GitHub.