Step Indicator
A step indicator updates users on their progress through a multi-step process.
Default Step Indicator
Component Preview
- Personal information completed
- Household status completed
- Supporting documents
- Signature not completed
- Review and submit not completed
Step 3 of 5 Supporting documents
Component Code
<div class="usa-step-indicator"> <ol class="usa-step-indicator__segments"> <li class="usa-step-indicator__segment usa-step-indicator__segment--complete"> <span class="usa-step-indicator__segment-label"> Personal information <span class="usa-sr-only">completed</span> </span> </li> <li class="usa-step-indicator__segment usa-step-indicator__segment--current" aria-current="true"> <span class="usa-step-indicator__segment-label">Supporting documents</span> </li> <li class="usa-step-indicator__segment"> <span class="usa-step-indicator__segment-label"> Signature <span class="usa-sr-only">not completed</span> </span> </li> </ol> <div class="usa-step-indicator__header"> <h4 class="usa-step-indicator__heading"> <span class="usa-step-indicator__heading-counter"> <span class="usa-sr-only">Step</span> <span class="usa-step-indicator__current-step">2</span> <span class="usa-step-indicator__total-steps">of 3</span> </span> <span class="usa-step-indicator__heading-text">Supporting documents</span> </h4> </div> </div>
No Labels
Component Preview
- Personal information completed
- Household status completed
- Supporting documents
- Signature not completed
- Review and submit not completed
Step 3 of 5 Supporting documents
Component Code
<div class="usa-step-indicator usa-step-indicator--no-labels"> <ol class="usa-step-indicator__segments"> <!-- segments --> </ol> <div class="usa-step-indicator__header"> <!-- heading --> </div> </div>
Centered
Component Preview
- Personal information completed
- Household status completed
- Supporting documents
- Signature not completed
- Review and submit not completed
Step 3 of 5 Supporting documents
Component Code
<div class="usa-step-indicator usa-step-indicator--center"> <ol class="usa-step-indicator__segments"> <!-- segments --> </ol> <div class="usa-step-indicator__header"> <!-- heading --> </div> </div>
Counters
Component Preview
- Personal information completed
- Household status completed
- Supporting documents
- Signature not completed
- Review and submit not completed
Step 3 of 5 Supporting documents
Component Code
<div class="usa-step-indicator usa-step-indicator--counters"> <ol class="usa-step-indicator__segments"> <!-- segments --> </ol> <div class="usa-step-indicator__header"> <!-- heading --> </div> </div>
Small Counters
Component Preview
- Personal information completed
- Household status completed
- Supporting documents
- Signature not completed
- Review and submit not completed
Step 3 of 5 Supporting documents
Component Code
<div class="usa-step-indicator usa-step-indicator--counters-sm"> <ol class="usa-step-indicator__segments"> <!-- segments --> </ol> <div class="usa-step-indicator__header"> <!-- heading --> </div> </div>
Guidance
When to use the step indicator component
- Multiple steps and screens
- Use the step indicator when the user is working through a form or process that will span several different pages that can be organized into three or more high-level steps or chapters.
- Linear progression
- The step indicator is designed to complement standard back/next navigation in a linear sequence, not to be navigation of its own.
When to consider something else
- Long forms with conditional logic
- Consider another approach if the number of steps might change due to user input.
- Nonlinear progression
- The step indicator isn't appropriate for nonlinear forms or interactions that might be completed in any order.
- Very short forms
- Don't use a step indicator for short forms without chapters or sections. If a form or process has fewer than three sections, don't use a step indicator.
Usability guidance
- Indicate where a user is in the process
- Use a color and text treatment for the current step segment that is distinct from both the completed and pending step segments.
- Use short or single-word labels
- If labelling the step indicators, stick to very short words.
- Provide navigation separately
- Use navigation like a button group to step forward and backward through a form.
- Place a heading directly below the step indicator
- Each step needs an explicit heading. The step indicator segments are not sufficient as a heading for a page or screen.
Accessibility guidance
- Use semantic heading levels
- Though the default code uses an
<h4>, use the correct heading level in your own implementation. - Use visually hidden text on labels
- Use visually hidden text to make the completion status of each step explicit.
- Indicate the current step
- When using labeled segments, use
aria-current="true"on the list item representing the current step.
Settings
| Variable | Description |
|---|---|
$step-indicator-background-color
|
Background color of the component and the gaps around the counters. |
$theme-step-indicator-counter-gap
|
Gap between the counter and the segment. |
$theme-step-indicator-font-family
|
Font family of the labels and counter numbers. |
$theme-step-indicator-heading-font-family
|
Font family of the heading. |
$theme-step-indicator-heading-color
|
Color of the heading. |
$theme-step-indicator-segment-color-pending
|
Color of pending step segments. |
$theme-step-indicator-segment-color-complete
|
Color of complete step segments. |
$theme-step-indicator-segment-color-current
|
Color of the current step segment. |
Variants
| Variant | Class | Description |
|---|---|---|
| No labels | usa-step-indicator--no-labels |
Don't show step labels. |
| Counters | usa-step-indicator--counters |
Show step counters. |
| Small counters | usa-step-indicator--counters-sm |
Show small step counters. |
| Centered | usa-step-indicator--center |
Center counters and labels in each step. |