Steps

Visual progress indicator for multi-step flows with horizontal and vertical orientations

Category: navigation · WCAG 2.2-AA · steps, wizard, stepper, progress, navigation, onboarding, checkout

States

Props

PropTypeDefaultDescription
labelstringAlias of `ariaLabel` — the same invisible accessible name under the other spelling. Neither is deprecated.
ariaLabelstringAccessible label for the steps navigation; defaults to the built-in i18n string.
itemsStep[]Alias of `steps` — the catalog-wide name for a config-driven collection. Exactly one of the two is required.
stepsStep[]Array of step objects with label and optional explicit state
activeStepnumber0Index of the currently active step (0-based)
orientation'horizontal' | 'vertical''horizontal'Axis the steps flow along: `horizontal` runs them across with connectors between, `vertical` stacks them down the page.
classNamestringAdditional CSS class names merged onto the root element.

Design tokens

When to use

When not to use

How to build an accessible Steps in React →

Examples

Horizontal (default)

Standard checkout or onboarding progress tracker

<Steps
  steps={[
    { label: 'Cart' },
    { label: 'Shipping' },
    { label: 'Payment' },
    { label: 'Confirm' },
  ]}
  activeStep={1}
/>

Vertical

Sidebar-style progress for tall forms

<Steps
  orientation="vertical"
  steps={[
    { label: 'Account info' },
    { label: 'Profile details' },
    { label: 'Preferences' },
  ]}
  activeStep={0}
/>

With explicit error state

Override derived state on a specific step

<Steps
  steps={[
    { label: 'Upload' },
    { label: 'Validate', state: 'error' },
    { label: 'Process' },
  ]}
  activeStep={1}
/>

Related components

← Back to docs