Skip to content

Path Stepper

Numbered stops connect into a clean vertical route with completed and current states.

LIVE PREVIEWInteract with the component
Just React. No extra dependencies.

Copy the component and its CSS module into your project.

CSS Modules

Usage

Matches your current playground settings.

jsx
import PathStepper from "./PathStepper";
export default function Example() {
return (
<PathStepper
items={[
{
"id": "idea",
"label": "The idea",
"description": "Give it a starting point."
},
{
"id": "form",
"label": "The form",
"description": "Find the right shape."
},
{
"id": "finish",
"label": "The finish",
"description": "Make the details count."
}
]}
defaultIndex={1}
color={"#b1c5cc"}
label={"Design progress"}
/>
);
}

Using Path Stepper

Supply the route through items and use activeIndex to reflect progress in your flow. onStepChange receives both the selected index and its item.

The component displays progress without enforcing business rules. Mark steps disabled when users must not jump ahead, and keep descriptions short enough to scan.

Props

NameTypeRequiredDefaultDescription
itemsArray<{ id?, label, description?, disabled? }>No[]Ordered step labels, descriptions and optional disabled states.
activeIndexnumberNoundefinedControlled current step index.
defaultIndexnumberNo0Initial uncontrolled step index.
onStepChangefunctionNoundefinedReceives the selected index and item.
colorstringNo"#b1c5cc"Completed and current step colour.
labelstringNo"Progress"Accessible navigation label.
classNamestringNo""Additional classes on the root element.
styleCSSPropertiesNoundefinedInline styles for sizing, typography and appearance.

Related components

Pagination Rail

Navigation

A raised selection moves through a compact row of numbered page controls.

Layered chevron tabs create a compact trail with a distinct current page.

Folding Menu

Navigation

Numbered navigation panels unfold beneath a compact, tactile trigger.

Bookmark Tabs

Navigation

Numbered paper tabs with a bookmark ribbon and an inset content panel.