← All @molecule/* packages · App templates
@molecule/app-stepper-reactFeature · stepper · App (browser) · v1.0.1 · Apache-2.0
Multi-step progress indicator: dots / bar / cards variants
npm install @molecule/app-stepper-react@molecule/app-stepper-react is a ready-made stepper feature for the app (browser) side. It composes the core interfaces it needs, so it works with whichever providers your app has bonded.
import { Stepper } from '@molecule/app-stepper-react'
const steps = [
{ id: 'account', label: 'Account' },
{ id: 'plan', label: 'Choose plan' },
{ id: 'payment', label: 'Payment' },
]
<Stepper steps={steps} currentStep={1} variant="dots" />Works with: @molecule/app-react, @molecule/app-ui, @molecule/app-ui-react
Auto-generated, AI-first package reference for the molecule.dev ecosystem. It is written to be read by coding agents as much as by people, and is generated from this package's source — edit
src/index.tsJSDoc, not this file.
React multi-step progress indicator.
Exports:
<Stepper> — steps with dots / bar / cards variants and horizontal / vertical orientations.StepperStep, StepStatus types.Use for checkout flows, onboarding wizards, course module progress, multi-page forms.
import { Stepper } from '@molecule/app-stepper-react'
const steps = [
{ id: 'account', label: 'Account' },
{ id: 'plan', label: 'Choose plan' },
{ id: 'payment', label: 'Payment' },
]
<Stepper steps={steps} currentStep={1} variant="dots" />
feature
npm install @molecule/app-stepper-react @molecule/app-react @molecule/app-ui @molecule/app-ui-react react
npm install -D @types/react
StepperPropsProps for the {@link Stepper} component.
interface StepperProps {
/** Steps to render. */
steps: StepperStep[]
/** Index of the current step (0-based). */
currentStep: number
/** Visual variant. */
variant?: 'dots' | 'bar' | 'cards'
/** Layout orientation. */
orientation?: 'horizontal' | 'vertical'
/**
* Optional navigation click handler. Variant-dependent: in `cards` it
* fires only for completed steps (others render disabled); in `dots`
* it fires for ANY step — guard inside the handler if backward-only
* navigation is required. The `bar` variant is not clickable.
*/
onStepClick?: (stepId: string, index: number) => void
/** Extra classes. */
className?: string
}
StepperStepDescriptor for a single step rendered inside a Stepper.
interface StepperStep {
/** Step id. */
id: string
/** Step label. */
label: ReactNode
/** Optional description. */
description?: ReactNode
/** Explicit status — when omitted, derived from `currentStep`. */
status?: StepStatus
}
StepStatusPossible visual/semantic states for a single stepper step.
type StepStatus = 'completed' | 'current' | 'pending' | 'error'
Stepper(props)Multi-step progress indicator — useful for checkout flows, onboarding wizards, course module progress, etc.
Variants:
'dots' — small numbered circles connected by a line.'bar' — horizontal filled bar with step labels above.'cards' — each step is a card with title + description.function Stepper({
steps,
currentStep,
variant = 'dots',
orientation = 'horizontal',
onStepClick,
className,
}: StepperProps): JSX.Element
props — Component props (see {@link StepperProps}).Peer dependencies:
@molecule/app-react ^1.0.1@molecule/app-ui ^1.0.1@molecule/app-ui-react ^1.0.1react ^18.0.0 || ^19.0.0@molecule/app-react
@molecule/app-ui
@molecule/app-ui-react
react
Purely visual and unrelated to @molecule/app-stepper (the headless
step-STATE core with its own bond) — do NOT wire bond('stepper')
for this component; you own currentStep in app state and this
package only renders it.
Requires a wired ClassMap bond (getClassMap() throws before
bonding). Step labels are ReactNode — pass translated strings.
Status is derived from currentStep unless a step sets an explicit
status. The 'error' member of StepStatus currently renders
IDENTICALLY to 'pending' (no error styling is implemented).
onStepClick behavior differs by variant: in cards only completed
steps are clickable (others are disabled); in dots the handler
fires for ANY step — guard inside your handler if backward-only
navigation is required. The bar variant is not clickable.
Dots show state via checkmark/number and label weight only — there is no color fill per status.