- Implementation
- StepperBase Props
- StepperBase.List Props
- StepperBase.Step Props
- StepperBase.Panel Props
The
StepperBase provides a controllable stepper primitive. The caller sets the current step and each step’s outcome. Use Stepper for the linear wizard.StepperBase uses the same visual tokens as Stepper.Common Examples
Current and complete together
Completeness is the stepstate, not “this index is behind current.” A step can be current and complete at the same time.Step outcomes
Setstate on each StepperBase.Step to "not started", "started", or "complete". The default is "not started". Outcome does not change when index changes.Adding panel content
Content can be added withStepperBase.Panel. The step prop on a panel must match the id on its StepperBase.Step. This is the inverse of Stepper, where the step’s controls prop names the panel.A step id is required only when a panel points at that step. Panel id is optional and is generated for aria-controls when omitted.Interactive navigation
The track is display-only by default. Setinteractive to let click and keyboard change the current step. Pair a controlled index with onIndexChange. disabled on a step blocks activation from the track. Step onClick notifies only and does not replace onIndexChange.Do not mix
Stepper and StepperBase children in the same tree.React Accessibility
- The list uses
role="tablist". Each step is arole="tab". A visible panel usesrole="tabpanel" - The current step has
aria-selected="true" - When a panel is present, the step sets
aria-controlsto the panel id - Disabled steps use
aria-disabledsoonClickstill fires - Steps are
tabIndex={-1}unlessinteractiveis true, the step is current, and the step is not disabled - When
interactiveis true, Arrow Left and Arrow Right move among steps that are not disabled. Enter and Space activate the focused step