Stepper

Navigation

Shows progress through a sequence of steps.

Completed steps show a check, the active step is ringed, and upcoming steps are muted. Pass onStepChange to make steps clickable.

npx shadcn@latest add stepper

Horizontal

Numbered circles connected by progress lines with labels below.

Preview
Live
  1. Details
  2. Address
  3. Payment
  4. Confirm
tsx
1<Stepper
2 steps={["Details", "Address", "Payment", "Confirm"]}
3 current={current}
4 onStepChange={setCurrent}
5/>

Vertical

A compact left rail for forms and wizards.

Preview
Live
  1. Account

  2. Team

  3. Billing

tsx
1<Stepper
2 steps={["Account", "Team", "Billing"]}
3 current={1}
4 orientation="vertical"
5/>

API reference

All props of the underlying Base UI primitive are forwarded. The table below documents the Shelf-specific props.

PropTypeDescription
stepsstring[]The labels of each step in order.
currentnumberThe index of the active step, 0-based.
onStepChange(step: number) => voidMakes steps clickable; called with the clicked index.
orientation"horizontal" | "vertical"= "horizontal"The layout direction.