Skip to Content
MavKitOne is in beta. @mav-labs-inc/mavkit-react is not public packages yet.
ComponentsProgress Stepper

Progress Stepper

A multi-step wizard / flow indicator. Works uncontrolled (drive it via a ref) or controlled (you own steps[i].state and currentStep, applying transitions reported through onStepChange).

Usage

import { ProgressStepper } from '@mav-labs-inc/mavkit-react' // Uncontrolled — internal state, drive it via ref <ProgressStepper steps={[{ label: 'Details' }, { label: 'Payment' }, { label: 'Confirm' }]} mode="linear" onStepChange={onStepChange} ref={stepperRef} /> // Controlled — you own steps[i].state and currentStep <ProgressStepper steps={steps} currentStep={current} onStepChange={({ index, states }) => { setCurrent(index) setSteps(prev => prev.map((s, i) => ({ ...s, state: states[i] }))) }} />

Examples

Uncontrolled, driven by ref

  1. Details
  2. Payment
  3. Confirm

Vertical, with preset states

  1. Order placed
  2. Shipped
  3. Out for delivery
  4. Delivered

Props

PropTypeDefaultDescription
steps*{ label: string; state?: StepState; errorMessage?: string; icon?: ReactNode }[]—
mode'linear' | 'non-linear''linear'
orientation'horizontal' | 'vertical''horizontal'
initialStepnumber0Uncontrolled mode only — initial active step index.
currentStepnumber—Controlled active step index — pair with onStepChange. Once provided, each step's state comes from steps[i].state and the ref API stops applying its own state changes.
ariaLabelstring—
onStepChange(event: StepChangeEvent) => void—{ index, state, states, errorMessage? } — states is every step's next state, in order.
onComplete() => void—
classNamestring—
refRef<ProgressStepperHandle>—{ goto(index), next(), prev(), completeAndNext(), setState(index, state, errorMsg?), setError(msg, index?), getStep() }

StepState is 'pending' | 'active' | 'done' | 'error' | 'disabled'.

Last updated on