Step indicator
Show progress through a multi-step process with step indicators, labels, and counters.
Examples
Default
Mobile
320pxMobile Lg
480pxTablet
640pxDesktop
1024px- Personal informationcomplete
- Household statuscomplete
- Supporting documentscurrent
- Signatureincomplete
- Review and submitincomplete
Segments shortcut
StepIndicator.Segments renders a ListItem and Segment for each step, passing the computed status to both. Inside StepIndicator.List, this:
<StepIndicator.List> <StepIndicator.Segments /></StepIndicator.List>is shorthand for the render function used in the full example above:
<StepIndicator.List> {({ steps }) => steps.map(step => ( <StepIndicator.ListItem key={step.label} status={step.status}> <StepIndicator.Segment status={step.status}> {step.label} </StepIndicator.Segment> </StepIndicator.ListItem> ))}</StepIndicator.List>Centered
Mobile
320pxMobile Lg
480pxTablet
640pxDesktop
1024px- Personal informationcomplete
- Household statuscomplete
- Supporting documentscurrent
- Signatureincomplete
- Review and submitincomplete
Counters
Mobile
320pxMobile Lg
480pxTablet
640pxDesktop
1024px- Personal informationcomplete
- Household statuscomplete
- Supporting documentscurrent
- Signatureincomplete
- Review and submitincomplete
Counters Small
Mobile
320pxMobile Lg
480pxTablet
640pxDesktop
1024px- Personal informationcomplete
- Household statuscomplete
- Supporting documentscurrent
- Signatureincomplete
- Review and submitincomplete
No Labels
Mobile
320pxMobile Lg
480pxTablet
640pxDesktop
1024px- Personal informationcomplete
- Household statuscomplete
- Supporting documentscurrent
- Signatureincomplete
- Review and submitincomplete
Component API
Root receives ordered steps and the current step number. List can render its children or use the Segments shortcut.
Root<div>
Computes each step status.
| Prop | Type | Default | Description |
|---|---|---|---|
steps | { label: string }[] | [] | Ordered step labels. |
currentStep | number (required) | — | One-based current step. |
variant | default | centered | noLabels | default | Controls label alignment and visibility. |
counters | unset | sm | lg | unset | Controls numbered circle styling. |
List<ol>
Put ListItem parts here or render them from computed step statuses.
| Prop | Type | Description |
|---|---|---|
children | ReactNode | ({ steps }) => ReactNode | Can render from computed step statuses. |
ListItem<li>
Pass its computed status to select complete, current, or incomplete styling.
| Prop | Type | Default | Description |
|---|---|---|---|
status | complete | current | incomplete | incomplete | Selects step styling. |
Segment<span>
Displays the status segment and optional counter.
| Prop | Type | Description |
|---|---|---|
status | complete | current | incomplete (required) | Selects segment styling. |
Label<span>
Displays a step label when the variant allows labels.
Summary<div>
Holds a text summary of progress.
Counter<span>
Displays the current and total steps.
| Prop | Type | Description |
|---|---|---|
children | ReactNode | (context) => ReactNode | A render function replaces the default counter content. |
Heading<span>
Displays a heading for the current step.
| Prop | Type | Description |
|---|---|---|
label | string | Overrides the computed heading text. |
Segments
Renders a ListItem and Segment for every computed step.