stepper

Stepper

Numbered steps through a flow such as checkout, marking done, current and upcoming, joined by a line that fills as each step is done; spans its row, and on a narrow screen names only the current step.

States: Default, Focus, Disabled

Parts

PartFileDoes
StepperStepper.vueGroups all parts of the stepper, which guides the user through a sequence of steps.
StepperDescriptionStepperDescription.vueExplains in a short line what happens in a step.
StepperIndicatorStepperIndicator.vueMarks the number or progress state of a step.
StepperItemStepperItem.vueGroups the trigger, title and description of one step in the stepper.
StepperSeparatorStepperSeparator.vueJoins one step of the stepper to the next with a line that fills once the step is done.
StepperTitleStepperTitle.vueNames a step of the stepper.
StepperTriggerStepperTrigger.vueLets the user jump to its step.

Anatomy

<Stepper>
  <StepperItem>
    <StepperTrigger>
      <StepperIndicator />
      <StepperTitle />
      <StepperDescription />
    </StepperTrigger>
    <StepperSeparator />
  </StepperItem>
</Stepper>

Styling

PartRecipe
Stepperstepper
Stepperstepper-status
StepperDescriptionstepper-description
StepperIndicatorstepper-indicator
StepperItemstepper-item
StepperSeparatorstepper-separator-root
StepperSeparatorstepper-separator
StepperSeparatorstepper-separator-fill
StepperTitlestepper-title
StepperTriggerstepper-trigger

Install

Writes 8 files into components/ui/stepper/. For agents, npx @frontic/ui docs stepper prints this reference as markdown; the MCP server serves the same.

npm packages
@vueuse/core
class-variance-authority
reka-ui

API reference

Stepper Stepper.vue

Groups all parts of the stepper, which guides the user through a sequence of steps.

PropTypeDefault
defaultValuenumber1
orientationDataOrientation'horizontal'
dirDirection—
modelValuenumber—
linearbooleantrue
asChildbooleanfalse
asAsTag | Component—
classClassValue—
statusLabel((step: number, total: number) => string)`Step ${step} of ${total}`
EventPayload
update:modelValuepayload: number | undefined
SlotSlot props
default{ modelValue: number | undefined; totalSteps: number; isNextDisabled: boolean; isPrevDisabled: boolean; isFirstStep: boolean; isLastStep: boolean; goToStep: (step: number) => void; nextStep: () => void; prevStep: () => void; hasNext: () => boolean; hasPrev: () => boolean; }
Data attributeValues
data-horizontal—
data-linear—
data-orientation'vertical' | 'horizontal'
data-vertical—
Recipe stepperSets
base: stepper 2 properties
Recipe stepper-statusSets
base: stepper-status 2 properties

StepperDescription StepperDescription.vue

StepperIndicator StepperIndicator.vue

StepperItem StepperItem.vue

StepperSeparator StepperSeparator.vue

StepperTitle StepperTitle.vue

StepperTrigger StepperTrigger.vue

Example
State