Founding sponsorYour name here
  1. 1Cart
  2. Shipping
  3. Payment
  4. 4Review

Click Shipping or Payment. The solid blue circle is the current step, marked aria-current="step"

Steps

/ aria-current="step" · <ol> /

also called stepper, wizard progress indicator, step indicator, step-by-step indicator, multi-step progress, step bar

“The numbered circles showing step 1 2 3 at checkout” are Steps (Material UI calls the component a Stepper, Ant Design and Chakra UI call it Steps). Each stage is a circular step indicator with a label, joined by a step connector; completed stages swap their number for a checkmark, the stage you are on is marked aria-current="step", and stages ahead stay muted. Careful with the word stepper: on macOS a Stepper (NSStepper) is the tiny pair of up/down arrows that changes one number, nothing to do with wizards. It is also not pagination (equal, addressable pages of one collection), not breadcrumbs (where you sit in a hierarchy), not tabs (peer views that use aria-selected), and not a progress bar (a percentage, with no named stages).

If you called it…

the numbered circles showing step 1 2 3 at checkoutseries of badges that indicate stepsteps onboarding indicatortab as stepsstep based input formmulti-step process流程链

…you meant a steps.

Anatomy — every part, named

  1. 1
    Step indicatorSteps.Indicator

    “The numbered circle” is the step indicator (Material UI calls it StepIcon): one compact circle per stage, holding the stage number.

  2. 2
    Step connector<StepConnector />

    “The line connecting the circles” is the step connector (Chakra: Steps.Separator; Ant Design names it itemRail): tinted behind you, muted ahead.

  3. 3
    Completed stepSteps.Status

    “The circle that turns into a checkmark” is a completed step: the finished stage swaps its number for a check and keeps its label.

  4. 4
    Current steparia-current="step"

    “The highlighted circle, the one I'm on now” is the current step. Material UI calls it the active step, Ant Design gives it status="process".

  5. 5
    Step label<StepLabel />

    “The text under each number” is the step label (Chakra: Steps.Title; Ant Design: the item's title): the short stage name, like Shipping or Payment.

Prompt — paste into your agent

Build a Steps indicator for this checkout as an <ol> of labeled stages, with the current item marked aria-current="step". Show each stage as a numbered circular Steps.Indicator (Material UI StepIcon), join adjacent stages with a StepConnector (Steps.Separator), replace completed numbers with checkmarks, and keep future stages muted. Drive it from one zero-based index (Material UI activeStep / Ant Design current) and derive completed, current and upcoming from that single value; the arrival state should be step 2, Payment, so all three states are visible at once.

Debug prompt — when it misbehaves

Paste this, then describe what you’re seeing — it hands your agent the classic failure modes to rule out first.

Debug my Steps / stepper (aria-current="step", activeStep / current index, StepConnector tint). Rule out: more than one stage carrying aria-current="step", or none at all, so assistive tech announces the wrong position; the zero-based activeStep mixed with the 1-based number printed inside the circle (convert in exactly one place); completed state derived from a separate flag that drifts from the current index, so a checkmark sits ahead of the current stage; the connector fill tracking a different index than the indicators, leaving a tinted line into an upcoming step; the whole thing built as role="progressbar" or a plain bar, so screen readers hear "60%" instead of "Payment, step 3 of 4"; stages rendered as divs with no ordered-list semantics and no accessible name on each step; the step label associated with nothing, so the circle announces a bare number; the index kept only in component state, so a refresh or the browser Back button drops the user to step 1; a validation-gated flow letting a click jump ahead to an unreached stage. The symptom:

In code

The exact names this thing goes by in code — each row is one framework’s word for it. Use the row that matches your project (or paste it into your prompt).

ARIAaria-current="step"marks the ONE stage you are on now
HTML<ol>WAI builds its step-by-step indicator as an ordered list; the stages have real sequence
Material UI<Stepper activeStep={2}>activeStep is zero-based; orientation is horizontal or vertical
Ant Design<Steps current={2} items={items} />current is zero-based; per-step status is wait, process, finish or error
Chakra UI<Steps.Root step={2} count={4}>compound parts: Steps.List, Steps.Item, Steps.Indicator, Steps.Separator, Steps.Title
Material UI<StepConnector />the line between stages; <StepIcon /> is the circle, <StepLabel /> the caption

See also

Search

Describe the UI element you're thinking of