- 1Cart
- Shipping
- Payment
- 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…
…you meant a steps.
Anatomy — every part, named
- 1Step indicator
Steps.Indicator“The numbered circle” is the step indicator (Material UI calls it StepIcon): one compact circle per stage, holding the stage number.
- 2Step connector
<StepConnector />“The line connecting the circles” is the step connector (Chakra: Steps.Separator; Ant Design names it itemRail): tinted behind you, muted ahead.
- 3Completed step
Steps.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.
- 4Current step
aria-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".
- 5Step 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).
| ARIA | aria-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 |