Stepper

A React component in Beamline's Navigation category.

Where someone is in a multi-step flow: done steps carry a check, the current one a ring, and the line between marks fills as steps complete.

Use it for

  • Multi-step flows such as onboarding or checkout.
  • Stages of a record (deal stages) with onStepSelect.

Not for

  • Switching views (tabs).
  • Progress of a background job (progress).

Anatomy

  • list
  • mark (number / check; a done mark is an accent solid, the current one an accent ring, upcoming a hairline ring)
  • connector (between marks, never under them)
  • label
  • description (two lines at most)
  • narrow caption (n/total, current label and description)
  • status line

Variants

  • orientation: horizontal, vertical
  • details: all, current
  • compact: false, true

States

  • done
  • current
  • upcoming
  • complete
  • narrow horizontal (under ~480px, ~350px compact): marks only in the row, the current step said under it; names stay readable to screen readers

Keyboard

  • With onStepSelect each step is a button

Motion

The connector fills over --pui-duration-considered (360 ms) on the standard ease; marks change paint on the look's transition. Reduced motion: instant.

Props

PropTypeDefaultDescription
steps{ id, label, description? }[]—
currentnumber (steps.length = complete)—
onStepSelect(index) => void—
orientation / details / compactstring / string / boolean—
completeLabelstring"Complete"
style / refCSSProperties / native Ref—native HTMLDivElement
classNamesStepperClassNames—

Dependencies

lucide-react

Import

import { Stepper } from "@/components/stepper/stepper";

Get it

Stepper is part of Beamline: 190 React components and screens your coding agent (Claude Code, Codex, Cursor or any MCP client) installs into your app through Beamline's MCP server, as a ready-built package or as plain React source you can change. $49 one payment (regular $200), no subscription, a year of updates, one licence for your whole team. Get Beamline · Connect your agent

More in Navigation

  • Breadcrumb: Where a page sits and the way back up; long paths keep the first and last two levels and fold the middle into a menu.
  • Menu bar: A desktop-style File / Edit / View bar for editor-like apps; each menu takes the same rows as the dropdown menu, and pointing moves between open menus.
  • Navigation menu: A site or docs header whose sections open into one panel that resizes and slides between them; NavigationMenuCard is the standard link row.
  • Pagination: Moves through pages of a known length: first, last and the current page's neighbours, with an optional “41–60 of 468”; a phone shows “Page 6 of 24”.
  • Sidebar: The app's main navigation: sections, items with counts and one level of sub-pages, an icon rail with tooltips (⌘B, the trigger or the edge), and a sheet…
  • Tabs: Switches between panels of one object; one indicator slides to the active tab, counts sit beside labels, and a long row scrolls instead of wrapping.
  • Tree view: Nested folders and records with the full tree keyboard model (arrows, Home/End, *, type to jump), depth guides, counts and animated opening.
  • User menu: The account menu behind the avatar: who is signed in, status, theme, account pages and sign out with progress; a bottom sheet on phones.