Getting StartedComponentsDesign TokensThemingTheme SynthesizerFrameworksAccessibilityUtilitiesServer RenderingBrowser SupportContributingChangelogApp ShellAspect GridAuth ShellCenterContainerDashboard GridFloat BarInsetMasonryPage HeaderPage LayoutResizableResponsive SwitcherSectionSettings LayoutSplit PaneStatus BarStickyToolbarAnchor NavBottom NavBreadcrumbBreadcrumb MenuCommand BarDrawerFooterLinkMenubarNavigation MenuPage IndicatorPaginationRailScroll IndicatorScroll SpyScroll To TopSidebarSkip LinkStepper NavTabsTop BarTree ViewAccordionAspect RatioAvatarAvatar GroupCardCarouselCollapsibleColor SwatchCTA BannerDividerEmpty StateFeature CardIconImageImage CompareImage HotspotsInfinite ScrollLightboxMarqueeQR CodeScroll AreaSkeletonSpinnerStackVideoVirtual ListActivity HeatmapAnimated NumberBadgeBar ListChartClockComparisonCountdown TimerData GridDescription ListDiffGaugeJSON TreeKanbanLevel MeterListMeterSparklineStatStepperTagTimelineUptimeValue CardWaveformBlockquoteCode BlockCode GroupGradient TextHighlightKbdKeyboard MapMarkdownNumber FormatProseTerminalTextTime AgoTruncateTypewriterButtonButton GroupCalendarCheckboxChipColor PickerComboboxCopy ButtonDate PickerDate Range PickerField ListFieldsetFile UploadFormHotkeyIcon ButtonImage CropperInline EditInputInput GroupKnobLabelMasked InputMulti SelectNumber InputPassword InputPin InputRadio GroupRange SliderRatingSearchSegmented ControlSelectSignature PadSliderSortable ListSwitch GroupTag InputTextareaTheme ToggleTime PickerToggleTransfer ListTree SelectAlertAnnouncementBannerCommand PaletteConfirmConnection StatusContext MenuConversationDialogDropdown MenuHover CardLoading OverlayNotification PanelPopoverProgressSheetToastTooltip
ARC UIARC Radiant Components
v4.9DocsComponentsTokensSynthesizer
Getting StartedFrameworksServer RenderingDesign TokensThemingTheme SynthesizerTypographyUtilitiesAll ComponentsAccessibilityBrowser SupportChangelogContributingStatsApp ShellAspect GridAuth ShellCenterContainerDashboard GridFloat BarInsetMasonryPage HeaderPage LayoutResizableResponsive SwitcherSectionSettings LayoutSplit PaneStatus BarStickyToolbarAnchor NavBottom NavBreadcrumbBreadcrumb MenuCommand BarDrawerFooterLinkMenubarNavigation MenuPage IndicatorPaginationRailScroll IndicatorScroll SpyScroll To TopSidebarSkip LinkStepper NavTabsTop BarTree ViewAccordionAspect RatioAvatarAvatar GroupCardCarouselCollapsibleColor SwatchCTA BannerDividerEmpty StateFeature CardIconImageImage CompareImage HotspotsInfinite ScrollLightboxMarqueeQR CodeScroll AreaSkeletonSpinnerStackVideoVirtual ListActivity HeatmapAnimated NumberBadgeBar ListChartClockComparisonCountdown TimerData GridDescription ListDiffGaugeJSON TreeKanbanLevel MeterListMeterSparklineStatStepperTagTimelineUptimeValue CardWaveformBlockquoteCode BlockCode GroupGradient TextHighlightKbdKeyboard MapMarkdownNumber FormatProseTerminalTextTime AgoTruncateTypewriterButtonButton GroupCalendarCheckboxChipColor PickerComboboxCopy ButtonDate PickerDate Range PickerField ListFieldsetFile UploadFormHotkeyIcon ButtonImage CropperInline EditInputInput GroupKnobLabelMasked InputMulti SelectNumber InputPassword InputPin InputRadio GroupRange SliderRatingSearchSegmented ControlSelectSignature PadSliderSortable ListSwitch GroupTag InputTextareaTheme ToggleTime PickerToggleTransfer ListTree SelectAlertAnnouncementBannerCommand PaletteConfirmConnection StatusContext MenuConversationDialogDropdown MenuHover CardLoading OverlayNotification PanelPopoverProgressSheetToastTooltip

Stepper

Step indicator for multi-step workflows.

ComponentsStepper
datastatic
<arc-stepper>

Overview

Stepper is a horizontal progress indicator for multi-step workflows such as onboarding, checkout, and setup wizards. It renders numbered circles connected by horizontal lines, with each step in one of three visual states: completed (filled blue with a checkmark), active (blue outlined ring with glow), or upcoming (muted grey). The `active` property (zero-indexed) controls which step is current, and all steps before it are automatically marked as completed. The component uses a declarative child-element API: nest `<arc-step>` elements inside the stepper, each with a `label` property. The stepper collects these children via slotchange events and renders the visual step indicators. This keeps the markup readable and lets you add or remove steps without managing array data. Each step circle is 36px with the label centered below. Connecting lines between steps change color based on completion state: blue lines mark completed transitions, and default-colored lines mark upcoming ones. The active step circle has a `box-shadow` glow effect using `--accent-primary-rgb` to draw the eye. The component uses `role="list"` with `role="listitem"` on each step and `aria-current="step"` on the active step for accessibility.

Guidelines

When to use

  • Use 3-5 steps for a clear, manageable workflow: more than 6 gets cramped
  • Keep step labels to 1-2 words so they fit under the 32px circles
  • Update the active property as the user progresses through the workflow
  • Place the stepper at the top of a form or wizard for persistent progress context
  • Use alongside form validation: only advance active when the current step is valid

When not to use

  • Do not use stepper for navigation menus: it is a progress indicator, not a nav component
  • Do not allow users to skip ahead by clicking steps: enforce linear progression
  • Do not use more than 7 steps: if the workflow is that long, group steps into phases
  • Do not change step labels mid-flow: it confuses users about where they are
  • Do not use stepper for a single step: it needs at least 2 steps to be meaningful

Features

  • Three visual step states: completed (checkmark), active (glowing ring), upcoming (muted)
  • Declarative `<arc-step>` child elements with label property for readable markup
  • Zero-indexed active property: all steps before active are auto-completed
  • Horizontal connecting lines that change color based on completion state
  • Active step glow effect using box-shadow with `--accent-primary-rgb`
  • Accessible `role="list"` and aria-current="step" attributes
  • CSS parts (stepper, step, circle, line, label) for style customization
  • Checkmark icon replaces step number for completed steps

Preview

Usage

<arc-stepper active="1">
  <arc-step label="Account"></arc-step>
  <arc-step label="Profile"></arc-step>
  <arc-step label="Review"></arc-step>
</arc-stepper>

API

activenumber0
Zero-indexed active step; steps before this index show as completed. Clamped to the range of rendered steps.

Step

<arc-step>

Individual step within a Stepper.

labelstring''
Step label text

See Also