Steps
Shows progress through a multi-step flow: which steps are done, which is current and what comes next.
Preview
- Details, completed
- Upload
- Review
Step 2 of 3Upload
Installation
pnpm add @syntara/react @syntara/tokensimport { Steps } from '@syntara/react';Usage
import { Steps } from '@syntara/react';
const steps = [
{ id: 'details', label: 'Details' },
{ id: 'upload', label: 'Upload' },
{ id: 'review', label: 'Review' },
];
export function ClaimProgress() {
return <Steps current="upload" steps={steps} />;
}Examples
Go back to a step
onStepPress turns completed steps into buttons.
- HealthA few questions
- PaymentMonthly or yearly
Step 3 of 4Health
Vertical with descriptions
A second line per step, stacked for side panels and narrow layouts.
- Incident details, completedDate, place and what happened
- Treatment, completedHospital or clinic and doctor
- DocumentsInvoices, prescriptions, reports
- Bank accountWhere we send the payment
- Review and submit
Accessibility
| Keys | Action |
|---|---|
| Tab | With onStepPress, moves between completed steps. |
| EnterorSpace | Goes back to the focused completed step. |
- An ordered list; the current step has aria-current="step".
- Completed steps show a check mark and carry visually hidden text (", completed"); status never relies on colour.
- Step numbers in the markers are decorative — the list order conveys them.
- Horizontal steps respond to their own width: under 480px (3 steps) or 640px (4+), they collapse to a text summary and a segmented bar.
Guidelines
Do
- Keep to 3–5 steps with one- or two-word labels.
- Let people go back to completed steps when their answers are kept.
- Put the same step names in the page headings.
Don’t
- Don't make upcoming steps clickable when earlier answers are required.
- Don't use Steps for tabs or navigation between unrelated pages.
- Don't show more than about 6 steps — group them.
API reference
Steps
stepsRequired{ id: string; label: ReactNode; description?: ReactNode }[]The steps in order.
currentRequiredstringId of the current step. Earlier steps are complete, later ones upcoming.
orientationhorizontaldefaultvertical
Horizontal collapses to "Step 2 of 3 · Upload" and a segmented bar when its container is narrow.
onStepPress(id: string) => voidMakes completed steps buttons that go back to that step.
aria-labelstringName of the list.
Default
'Progress'completedLabelstringRead after a completed step's label by screen readers ("Details, completed").
Default
'completed'stepLabelstringWord used in the narrow summary.
Default
'Step'ofLabelstringWord used in the narrow summary.
Default
'of'
Tokens
The semantic tokens this component reads, grouped by what they control. Swatches show this site’s theme; change a tenant’s brand and the component follows with no code change.
- Colour9
focus.ringaction.primary.hoverborder.strongtext.subtleaction.primary.bgaction.primary.fgsurface.defaulttext.defaultborder.default- Type5
font.size.smfont.weight.mediumline-height.snugfont.size.xsfont.weight.semibold- Space and size6
control-heightspace.2space.3space.6space.4space.1- Shape2
radius.badgeradius.pill- Depth2
shadow.highlightshadow.raised- Motion7
motion.duration.normalmotion.easingmotion.duration.slowmotion.duration.fastmotion.easing-outmotion.duration.springmotion.spring