RoadieRoadie
  • Home
  • Brand
  • Foundations
  • Content
  • Tokens
  • Components
  • Charts
  • Widgets
  • Appearance
HomeBrandFoundations
Appearance

Components

  • Navigation

    • Breadcrumb
    • LinkBeta
    • NavigatorAlpha
    • Steps
    • Tabs
  • Layout

    • Accordion
    • CollapsibleBeta
    • PaneAlpha
    • ScrollArea
    • Separator
  • Actions

    • Button
    • IconButton
    • ToggleBeta
    • Toggle groupBeta
    • ToolbarBeta
  • Fields

    • EditorAlpha
    • Field
    • Fieldset
    • Input
    • Label
    • Number fieldBeta
    • OTP fieldBeta
    • Query fieldAlpha
    • Textarea
  • Choices

    • Autocomplete
    • CheckboxBeta
    • Combobox
    • Radio group
    • Select
    • SliderBeta
    • SwitchBeta
  • Date and time

    • CalendarBeta
    • CalendarTile
    • Countdown
    • Dashboard periodBeta
    • Date fieldBeta
    • Date pickerBeta
    • Date range pickerBeta
    • DateTime
    • Duration
    • Time fieldBeta
  • Collections

    • Card
    • Carousel
    • DataTableBeta
    • ListAlpha
    • Marquee
    • RecordGridAlpha
    • RecordTableAlpha
    • SortableAlpha
    • TableBeta
  • Overlays

    • Dialog
    • Drawer
    • MenuBeta
    • Popover
    • ToastBeta
    • Tooltip
  • Status

    • Badge
    • CalloutBeta
    • DeltaBeta
    • Empty state
    • MeterBeta
    • ProgressBeta
    • SkeletonBeta
    • SparklineBeta
    • StatTileBeta
  • Media & brand

    • AvatarBeta
    • Icon Tile
    • Image
    • Logo
    • PatternBeta
    • QR codeBeta
    • SpotIllustration
  • Text

    • Code
    • Highlight
    • KbdBeta
    • Mark
    • Prose

Steps

Status
Stable
Added
Components 2.0.08 Apr 2026
Docs updated
19 Oct 2026

A multi-step wizard for guiding users through sequential tasks.

Import

import { Steps } from '@oztix/roadie-components/steps'

Examples

Default

A horizontal stepper with three steps. Click a step trigger to navigate.

<Steps count={3}>
<Steps.List>
<Steps.Item index={0}>
<Steps.Trigger>
<Steps.Indicator>1</Steps.Indicator>
<Steps.TriggerText>Details</Steps.TriggerText>

Direction

Use the direction prop to switch between horizontal and vertical layouts.

<Steps count={3} direction='vertical'>
<Steps.List>
<Steps.Item index={0}>
<Steps.Trigger>
<Steps.Indicator>1</Steps.Indicator>
<Steps.TriggerText>Account</Steps.TriggerText>

States

Use linear to restrict navigation to sequential order. In linear mode, users cannot click ahead. Only the next step is reachable.

{/* Free navigation (default) */}
<Steps count={3}>
<Steps.List>
<Steps.Item index={0}>
<Steps.Trigger>
<Steps.Indicator>1</Steps.Indicator>

Invalid step

Set invalid on a Steps.Item to show a danger state on its indicator and text. Use this when a step has validation errors that prevent progression. When a completed step is invalid, the check icon is replaced with the step number.

{/* Current step invalid */}
<Steps count={3} defaultStep={1}>
<Steps.List>
<Steps.Item index={0}>
<Steps.Trigger>
<Steps.Indicator>1</Steps.Indicator>

Composition

Steps is a compound component. Use Steps.List, Steps.Item, Steps.Trigger, Steps.Indicator, Steps.Separator, Steps.Content, and Steps.CompletedContent to build the stepper.

With progress bar

Use Steps.Progress to show a fill bar based on completion percentage.

<Steps count={3} defaultStep={1}>
<Steps.Progress />
<Steps.List>
<Steps.Item index={0}>
<Steps.Trigger>
<Steps.Indicator>1</Steps.Indicator>

With Button navigation

Use Steps.NextTrigger and Steps.PrevTrigger with asChild to compose with Roadie Button.

<Steps count={3}>
<Steps.List>
<Steps.Item index={0}>
<Steps.Trigger>
<Steps.Indicator>1</Steps.Indicator>
<Steps.TriggerText>Details</Steps.TriggerText>

With custom component

Use Steps.RootProvider with the useSteps hook for external state control.

import { Steps, useSteps } from '@oztix/roadie-components/steps'
function MyWizard() {
const steps = useSteps({ count: 3 })
return (

Accessibility

  • Keyboard: Arrow keys navigate between step triggers. Enter or Space activates a trigger.
  • ARIA: List renders as role="tablist", triggers as role="tab", content panels as role="tabpanel". aria-selected marks the active trigger. aria-controls links triggers to panels.
  • Screen readers: Announce step state via aria-selected. Disabled triggers in linear mode receive aria-disabled.

Hooks

useSteps

function useSteps(props?: UseStepsProps): UseStepsReturn

Ark UI's stepper state, re-exported so Steps.RootProvider can take a value you control. props takes the same step / defaultStep / onStepChange / linear / count / orientation as Steps itself. The fields most calls reach for:

FieldTypeDescription
valuenumberThe current step index.
countnumberThe total number of steps.
hasNextStepbooleanWhether there is a step after this one.
hasPrevStepbooleanWhether there is a step before this one.
isCompletedbooleanWhether the stepper has finished.
setStep(step: number) => voidJump to a step.
goToNextStep() => voidAdvance one step.
goToPrevStep() => voidGo back one step.
resetStep() => voidReturn to the first step.

API reference

Steps

direction"horizontal" | "vertical" | null

Steps.CompletedContent

No additional props. It forwards all standard HTML attributes to the underlying element.

Steps.Content

indexnumber
Required
classNamestring

Steps.Context

No additional props. It forwards all standard HTML attributes to the underlying element.

Steps.Indicator

No additional props. It forwards all standard HTML attributes to the underlying element.

Steps.Item

indexnumber
Required
invalidboolean
classNamestring

Steps.ItemContext

No additional props. It forwards all standard HTML attributes to the underlying element.

Steps.List

No additional props. It forwards all standard HTML attributes to the underlying element.

Steps.NextTrigger

No additional props. It forwards all standard HTML attributes to the underlying element.

Steps.PrevTrigger

No additional props. It forwards all standard HTML attributes to the underlying element.

Steps.Progress

No additional props. It forwards all standard HTML attributes to the underlying element.

Steps.RootProvider

No additional props. It forwards all standard HTML attributes to the underlying element.

Steps.Separator

No additional props. It forwards all standard HTML attributes to the underlying element.

Steps.Trigger

No additional props. It forwards all standard HTML attributes to the underlying element.

Steps.TriggerText

No additional props. It forwards all standard HTML attributes to the underlying element.

Previous page← NavigatorNext pageTabs →