Steps

A progress indicator for multi-step flows. Supports circles, bullets, and progress-bar variants. Each step has complete, current, or upcoming status.

Atom

Progress

When To Use

  • Use Steps when information needs to be scanned quickly and compared across multiple rows, cards, or values.
  • Choose the example that best matches whether the user is browsing, monitoring, or drilling into structured data.
  • Lean on these patterns when you want consistent spacing and hierarchy before tuning the visual treatment.

When Not To Use

  • Do not use a dense data pattern when the primary task is storytelling, onboarding, or one-off explanation.
  • Do not flatten nuanced data into a compact summary card if the user still needs the underlying structure to make a decision.

Accessibility Notes

  • Mark the current item clearly with visual state and the appropriate ARIA current/selected semantics.
  • Ensure arrow-key or tab-key movement stays predictable when the pattern behaves like a composite widget.
  • Do not rely on icon-only navigation unless every control has a clear accessible name.

Key Props / API

Props

steps, variant, className

Example Code

import { Steps } from "@hilum/ui"
import type { Step } from "@hilum/ui"

const steps: Step[] = [
  { name: "Details", status: "complete" },
  { name: "Review", status: "complete" },
  { name: "Confirm", status: "current" },
  { name: "Payment", status: "upcoming" },
  { name: "Done", status: "upcoming" },
]

<Steps steps={steps} variant="circles" />

Steps · Circles

Circles

Circle indicators with connector lines

Steps · Bullets

Bullets

Minimal dots with step counter

Steps · Progress bar

Progress bar

Horizontal fill bar with step labels

Details
Review
Confirm
Payment
Done

Steps · With descriptions

Circles with descriptions

Each step has a sub-label