Skip to main content
BEEQ Steps component overview
Steps guide users through a sequential process such as a wizard, onboarding flow, or multistep form. Use them to show progress, the current step, completed steps, and steps that still need attention.
Use bq-step-item inside bq-steps. The parent component passes type, orientation, size, and divider settings down to each step item.

When to use

Use steps when
  • Users need to complete a sequential, multistep process
  • The workflow has a clear order and progress state
  • Users benefit from seeing current, completed, remaining, or error states

Do not use steps when
  • Users can complete tasks in any order
  • The process has only one or two simple actions
  • A status message or progress bar communicates the state more clearly

Patterns

Multistep forms

Split long forms into clear stages so users can see what is complete, where they are, and what remains.

Onboarding and wizards

Guide users through setup flows where each step depends on the previous one.

Process overviews

Summarize a task, service, or project flow when readers need the full sequence before they start.

Progress tracking

Show completed, current, upcoming, blocked, or disabled stages in a process that changes over time.

Anatomy

BEEQ Steps component anatomy
Steps are composed of a label or prefix, title, optional description, and divider. Together they communicate position, meaning, and progress through the process.
PartElementDescription
1PrefixDot, number, or icon that visually identifies the step
2TitleStep label that describes the task or stage
3DescriptionOptional supporting text for more context
4DividerConnector that shows sequence between steps

Design guidelines

Label and icon

Labels describe each step, while icons provide visual cues. Use meaningful titles and reserve icons for cases where the symbol helps users understand the action or context.

Usage

Start with bq-steps and one bq-step-item for each stage. There are three types of steps: numeric, dot, and icon.
You must specify the type you want to use on bq-steps. If you don’t, the default styles will apply, but it may not match your content or design intent.

Numeric

Start with the numeric type to show a clear sequence and position in the process. Each step should have a number prefix that matches its order.

Dot

Use type="dot" for a minimal progress indicator when the sequence is clear and the step labels carry most of the meaning.

Icon

Use type="icon" when each step benefits from a recognizable symbol. Icons should support the label, not replace it.

Status

Use the status attribute to show progress and guide users through the process. The current step should be visually distinct from completed and remaining steps.
The status should be applied to the bq-step-item element. This ensures that the entire step, including the label and description, reflects the current state.
StatusDescription
defaultThe default state for steps that have not been reached yet. It should be visually distinct from current and completed steps.
currentThe step the user is currently on. It should be visually highlighted to indicate focus.
completedA step that has been finished. It should be visually distinct from the current and remaining steps.
disabledA step that is not available for interaction, often because a previous step has not been completed. It should be visually subdued to indicate it cannot be accessed yet.
errorA step that has an issue that needs attention. It should be visually distinct to indicate a problem.

Options

Orientation

Use orientation="vertical" when the process should unfold from top to bottom or when labels and descriptions need more room.
Vertical steps adapt to the height of their container. You must ensure that the container holding the steps has enough block size to allow the divider to span the desired area.

Size and divider color

Use size="small" in compact layouts. Use divider-color with a declarative color token when the connector needs a different emphasis.

Best practices

DoUse one steps component per page so the process stays clear and cohesive.

Don’tAvoid multiple steppers in the same view because they can compete for attention and disrupt the flow.

DoWrite labels that describe the task or destination for each step.

Don’tAvoid labels that only repeat the status, such as current or completed.

DoConfirm progress with status, text, and icon changes after a step is completed.

Don’tDo not rely on color alone to communicate the state of a step.

DoKeep the number of steps manageable so users feel the process is achievable.

Don’tAvoid turning long or non-linear workflows into a single rigid step sequence.

Accessibility

The bq-steps container renders with role="list", and each bq-step-item renders with role="listitem" around an interactive button. The current step maps to aria-current="step", and disabled items use the native disabled button state.
  • Keyboard - users can move through step items with Tab and Shift + Tab. They can activate an enabled step with Enter or Space.
  • Current step - set status="current" on one step item so assistive technology can announce the current position.
  • Status communication - pair color with text, icon shape, or description changes so users do not need color perception to understand progress.
  • Icons and numbers - mark decorative icons with aria-hidden="true". When numeric prefixes are used, provide an aria-label such as Step 1.
  • Descriptions - use the description slot when users need more context about a step, an error, or the expected next action.

API reference

Properties

bq-steps

PropertyAttributeDescriptionTypeDefault
dividerColordivider-colorColor token for the line that connects stepsstring'stroke--primary'
orientationorientationDirection of the steps'horizontal' | 'vertical''horizontal'
sizesizeSize of the steps'medium' | 'small''medium'
typetypePrefix type passed to step items'numeric' | 'icon' | 'dot'undefined

bq-step-item

PropertyAttributeDescriptionTypeDefault
dividerColordivider-colorColor token for the divider after this item; usually inherited from bq-stepsstring'stroke--primary'
orientationorientationDirection of the item; usually inherited from bq-steps'horizontal' | 'vertical''horizontal'
sizesizePrefix size; usually inherited from bq-steps'medium' | 'small''medium'
statusstatusVisual and semantic state of the item'default' | 'current' | 'completed' | 'error' | 'disabled''default'
typetypePrefix type; usually inherited from bq-steps'numeric' | 'icon' | 'dot'undefined

Slots

bq-steps

SlotDescription
(default)Step items

bq-step-item

SlotDescription
(default)Step item title content
prefixDot, icon, or number shown before the title
descriptionSupporting text shown below the title

Shadow parts

bq-steps

PartDescription
containerContainer wrapper of the Steps component
divider-baseBase wrapper of the divider component
divider-dash-startStart dash of the divider component
divider-dash-endEnd dash of the divider component

bq-step-item

PartDescription
baseStep item button wrapper
titleStep item title
descriptionStep item description

Events

bq-step-item

EventDescriptionType
bqClickFires when an enabled step item is clickedCustomEvent<HTMLBqStepItemElement>
bqFocusFires when a step item receives focusCustomEvent<HTMLBqStepItemElement>
bqBlurFires when a step item loses focusCustomEvent<HTMLBqStepItemElement>
  • In React, prefix events with on: onBqClick, onBqFocus, onBqBlur.
  • In Angular, use event binding syntax: (bqClick), (bqFocus), (bqBlur).
  • In Vue, use the @ shorthand: @bqClick, @bqFocus, @bqBlur.

Methods

bq-steps

MethodDescriptionReturns
setCurrentStepItem(newCurrentStep)Sets the provided step item as current and resets the previous current item to defaultPromise<void>

CSS custom properties

bq-steps

VariableDescriptionDefault
--bq-steps--divider-colorDivider colorvar(--bq-stroke--primary)
--bq-steps--gapGap between stepsvar(--bq-spacing-m)

bq-step-item

VariableDescriptionDefault
--bq-step-item--prefix-colorPrefix icon colorvar(--bq-icon--secondary)
--bq-step-item--prefix-color-currentPrefix icon color for the current statevar(--bq-icon--brand)
--bq-step-item--prefix-color-completedPrefix icon color for the completed statevar(--bq-icon--success)
--bq-step-item--prefix-color-errorPrefix icon color for the error statevar(--bq-icon--danger)
--bq-step-item--prefix-num-sizePrefix number sizevar(--bq-spacing-xl)
--bq-step-item--prefix-num-bg-colorPrefix number background colorvar(--bq-background--secondary)

Resources

Interactive playground

Explore Steps variants and states in Storybook

Source code

View the component source on GitHub