Skip to main content
Vuetify0 is now in alpha!
Vuetify0 Logo
Theme
Mode
Palettes
Accessibility
Vuetify One
Sign in to Vuetify One

Access premium tools across the Vuetify ecosystem — Bin, Play, Studio, and more.

Not a subscriber? See what's included

Step

A headless component for navigation through multi-step processes like wizards and forms.


RenderlessIntermediateApr 5, 2026

Usage

The Step component extends Single with navigation methods for moving through a sequence of items. It provides methods for first, last, next, previous, and step-by-count navigation with automatic disabled item skipping.

Step Wizard

A 3-step wizard with next/previous navigation buttons and per-step content rendering.

Step 1

Content for step 1

Features

The default slot exposes navigation methods for moving through steps:

vue
<template>
  <Step.Root v-model="current">
    <template #default="{ first, last, next, prev, step }">
      <Step.Item value="details">Details</Step.Item>
      <Step.Item value="payment">Payment</Step.Item>
      <Step.Item value="confirm">Confirm</Step.Item>

      <button @click="prev">Back</button>
      <button @click="next">Continue</button>

      <!-- Jump by count: step(2) advances two steps, step(-1) goes back one -->
      <button @click="step(2)">Skip ahead</button>
    </template>
  </Step.Root>
</template>

Disabled Item Skipping

Disabled items are automatically skipped by next, prev, and step. Use this to conditionally hide steps based on form state:

vue
<template>
  <Step.Root v-model="current">
    <Step.Item value="details">Details</Step.Item>

    <!-- Skipped by next/prev when needsShipping is false -->
    <Step.Item value="shipping" :disabled="!needsShipping">Shipping</Step.Item>

    <Step.Item value="confirm">Confirm</Step.Item>
  </Step.Root>
</template>

Anatomy

Anatomy
<script setup lang="ts">
  import { Step } from '@vuetify/v0'
</script>

<template>
  <Step.Root>
    <Step.Item value="step-1" />

    <Step.Item value="step-2" />
  </Step.Root>
</template>

API Reference

The following API details are for all variations of the Step component.

Step.Root

Props

namespace

string | undefined

Namespace for dependency injection (must match StepItem namespace)

Default: "v0:step"

disabled

boolean | undefined

Disables the entire step instance

Default: false

enroll

boolean | undefined

Auto-select non-disabled items on registration

Default: false

mandatory

boolean | "force" | undefined

Controls mandatory step behavior: - false (default): No mandatory step enforcement - true: Prevents deselecting the last selected item - `force`: Automatically selects the first non-disabled item on registration

Default: false

modelValue

T | T[] | undefined

Slots

default

StepRootSlotProps

Step.Item

Props

id

string | undefined

Unique identifier (auto-generated if not provided)

label

string | undefined

Optional display label (passed through to slot, not used in registration)

value

V | undefined

Value associated with this item

disabled

MaybeRefOrGetter<boolean> | undefined

Disables this specific item

namespace

string | undefined

Namespace for dependency injection

Default: "v0:step"

Slots

default

StepItemSlotProps<V>
Was this page helpful?

© 2016-1970 Vuetify, LLC
Ctrl+/