Navigation
Steps
Progress through a multi-step task (checkout, a payment, onboarding): numbered markers joined by hairlines; completed steps can link back.
Installation
Install the package (React 19):
terminal
terminal
terminal
Import the styles once, in your app entry or root layout:
/src/main.tsx
Use it anywhere inside your app's <Theme> (see Installation):
/src/StepsExample.tsx
Examples
Read-only, with five steps
Without onStepChange the steps are plain text. Under 640px only the current step keeps its label.
All complete
current={steps.length} marks every step complete.
API Reference
Steps
A <nav> (all its props pass through) around an ordered list. Adds:
| Prop | Type | Default |
|---|---|---|
steps | { label: ReactNode; description?: ReactNode }[] | |
current | number | |
onStepChange | (index: number) => void | |
label | string | "Progress" |
stepsVariants
| Prop | Type | Default |
|---|---|---|
slots | tv recipe |
Accessibility
- A labelled
navaround an ordered list; the current step hasaria-current="step". - Each step announces its position and state ("Amount, step 2 of 3, current step"); markers and connectors are hidden from assistive tech.
- With
onStepChange, completed steps are buttons (Tab, Enter / Space); current and upcoming steps are not interactive. - On phones the labels of other steps are visually hidden but still announced.
Usage
- Use for a linear task of 3–5 steps where people benefit from knowing how far along they are.
- Pair it with Back / Next buttons; let people return to completed steps with
onStepChange. - Don't use it to switch between independent panels: use Tabs.
- Don't use it for a single percentage: use Progress.
© 2026 Motion. Internal documentation.