Skip to content

Stepper

A horizontal or vertical step indicator for multi-step workflows. Shows completed, active, and upcoming steps.

Preview

Account
2
Profile
3
Review

Vertical variant

Create account
2
Set up profile
3
Review and submit

Step states

StateCircleLabelConnector
CompletedBrand fill, white checkmarkSecondary textBrand colour
ActiveBrand border, brand text, glowBold primary textDefault border colour
UpcomingDefault border, muted numberMuted textDefault border colour

Props

PropTypeDefaultDescription
steps{ label: string }[]--Step definitions
activeStepnumber0Current step index (0-based)
orientation'horizontal' | 'vertical''horizontal'Layout direction

Code example

React

tsx
import { Stepper } from '@thepace/lexicon/components';

<Stepper
  steps={[
    { label: 'Account' },
    { label: 'Profile' },
    { label: 'Review' },
  ]}
  activeStep={1}
/>

Vanilla HTML

html
<div class="lex-stepper">
  <div class="lex-stepper__step lex-stepper__step--completed">
    <div class="lex-stepper__circle">✓</div>
    <span class="lex-stepper__label">Account</span>
  </div>
  <div class="lex-stepper__connector lex-stepper__connector--completed"></div>
  <div class="lex-stepper__step lex-stepper__step--active">
    <div class="lex-stepper__circle">2</div>
    <span class="lex-stepper__label">Profile</span>
  </div>
  <div class="lex-stepper__connector"></div>
  <div class="lex-stepper__step">
    <div class="lex-stepper__circle">3</div>
    <span class="lex-stepper__label">Review</span>
  </div>
</div>

CSS class reference

ClassPurpose
.lex-stepperContainer
.lex-stepper--verticalVertical layout
.lex-stepper__stepIndividual step
.lex-stepper__step--completedCompleted state
.lex-stepper__step--activeActive state
.lex-stepper__circleStep number/icon circle
.lex-stepper__labelStep label text
.lex-stepper__connectorLine between steps
.lex-stepper__connector--completedFilled connector

Accessibility

  • Use role="list" on the stepper and role="listitem" on each step.
  • Active step has aria-current="step".
  • Completed steps include an aria-label like "Step 1: Account (completed)".
  • The stepper is not navigable by default — use buttons for clickable steps.

Guidelines

Do

  • Keep steps to 3–5 for horizontal layouts.
  • Use the vertical variant for more than 5 steps.
  • Show clear labels describing each step's purpose.

Don't

  • Don't allow skipping ahead to incomplete steps without validation.
  • Don't use a stepper for single-step flows.

Released under the MIT License. A product by the pace.