Skip to content
Mizen UI
Docs

IntroductionInstallationCLIStylingFoundationsThemingCompositionIntegrationsAccessibilityFor agents

useCopyToClipboard

AccordionAspect RatioCardCollapsibleFrameGridGroupInlineScroll AreaSectionSeparatorSpacerStack

BlockquoteCitationCodeHeadingKbdLabelLinkTextVisually Hidden

ButtonButton GroupToggleToggle groupToolbar

CalendarCheckboxCheckbox groupComboboxDate pickerDate range pickerDate-Time InputFieldFieldsetFile UploadFormInputInput groupNumber fieldOTP FieldRadio groupSelectSliderSwitchTextareaTime Input

BreadcrumbMenubarNavigation MenuPaginationSegmented ControlStepperTabs

Alert dialogCommandContext MenuDialogDrawerMenuPopoverPreview CardSheetTooltip

AlertBadgeEmptyError StateMeterProgressSkeletonSpinnerStatus dotToast

Activity FeedAvatarAvatar GroupData TableListMetricOverflow ListProperty ListTableTokenTree

Area ChartBar ListCalendar HeatmapCategory ComparisonChart FrameChart LegendChart TooltipDistributionFunnelHeatmapMetric TrendPart-to-WholeProgress RingsRadar ChartRadial BarsSankey ChartScatter ChartScore GaugeTime Series

Diagram

AttachmentCarouselCode BlockLightboxMarkdownThumbnailTimestamp

Agent ThinkingApproval CardComposerConversationInline CitationMessageMessage ScrollerQuestion CardSourcesStreaming TextSuggestionTask ListTerminalTool Call

On this page

  • Preview
  • Usage
  • Anatomy
  • Examples
  • Create a project
  • Vertical progress
  • Numbered markers
  • Indicators on the track
  • Interactive steps and content
  • Indicator modes
  • Progress motion
  • Recommendations
  • Usage boundaries
  • API reference

Navigation

Stepper

Shows ordered progress while the application owns workflow state and actions.

idle

Usage

import {
	Stepper,
	StepperIndicator,
	StepperItem,
	StepperTitle,
} from "@mizen-labs/ui";

Anatomy

The parts and how they nest, taken from the preview above.

<Stepper>
	<StepperItem>
		<StepperIndicator />
		<StepperTitle />
	</StepperItem>
</Stepper>

Examples

Create a project

Set up a shared space for your next release.

Vertical progress

A connected rail keeps longer labels and descriptions readable.

Numbered markers

Keep the step number visible in every state.

Indicators on the track

A continuous rail connects centered markers, with labels below.

Interactive steps and content

Revisit an earlier step with a native button. Fields stay outside its clickable heading.

Indicator modes

Automatic status markers, persistent numbers, custom icons, and reserved empty marker space.

Progress motion

Advance one step to animate the connecting rail. Revisit any step without waiting for motion to finish.

Recommendations

GuidancePractice
Do

Name each step and show completed, current, and upcoming states. Explain how users can return to earlier work.

Usage boundaries

GuidanceBoundary
Scope

The application owns transitions and validation. A step indicator does not authorize skipping required steps.

API reference

Public props from @mizen-labs/ui. Use exported prop types for the complete TypeScript contract.

PropTypeDefaultDescription
aria-label / aria-labelledbystringRequiredNames the ordered workflow.
StepperItem.status"complete" | "current" | "upcoming"RequiredSets visual progress and aria-current="step" for the current item.
StepperIndicatorDecorative partundefinedDisplays a caller-supplied step number or icon.
StepperTitle / StepperDescriptionText partsundefinedProvide the step label and optional supporting text.
childrenReactNodeundefinedCompose StepperItem children. Steps do not become tabs or buttons; use existing actions beside the list.
orientation"horizontal" | "vertical"horizontalHorizontal tracks collapse to the current label below 28rem. Vertical rails retain every description and content slot.
StepperIndicator.mode"auto" | "number" | "custom" | "none"autoAuto follows progress. Number and custom preserve the supplied marker. None reserves its space without displaying it.
layout"separated" | "on-track"separatedShows progress segments above labels or connects markers on a continuous rail.
StepperTriggerNative button propsbuttonAn optional clickable heading with native keyboard, disabled, and focus behavior. The application handles selection.
StepperContentNative div props—Places step content below its heading, aligned with the label and outside the clickable target.
activeStep / StepperItem.stepnumber—Zero-based indices derive progress. Adjacent forward changes animate; mounting, backward moves, jumps, and reduced motion update immediately. Explicit statuses remain static.
onStepClick(step: number) => void—Receives native StepperTrigger activation. The application validates and updates activeStep. Preventing the click default cancels this callback.
density"compact" | "balanced" | "spacious"balancedControls the spacing between vertical steps without changing marker size or text alignment.
StepperItem.optional / disabledbooleanfalseOptional adds a quiet label suffix. Disabled dims the step and disables its native trigger.
PreviousSegmented ControlNextTabs
  1. Completed: 1Workspace
  2. Completed: 2Team
  3. 3Integrations
  4. 4Review
  5. 5Launch
  1. 1Details

    Choose a name and workspace.

  2. 2Members

    Invite the people you work with.

  3. 3Review

    Check the project before publishing.

Step 1 of 3: Details

  1. Completed: 1Prepare the build

    Dependencies and checks passed.

  2. 2Deploy to production

    Publish the reviewed build to your workspace.

  3. 3Verify the release

    Check the live application before sharing it.

  1. Completed: 1Workspace
  2. 2Team
  3. 3Launch
  1. Completed: 1Workspace
  2. Completed: 2Team
  3. 3Integrations
  4. 4Review
  5. 5Launch
  1. Completed:
  1. Completed: 1auto
  2. Completed: 2number
  3. Completed: custom
  4. Completed: 4none

Step 1 of 4: Prepare