Index that is in an error state (only when it is also the current step).
onStepClick
(index: number) => void
n/a
Jump handler - when set, DONE steps become real buttons.
Also accepts the native <ol> attributes (e.g. onClick, disabled, id, aria-*, data-*), forwarded straight through, plus a forwarded ref.
Parameter
Type
Default
Description
steps *
List<NockerlStep>
n/a
NockerlStep(label, description = null, icon = null). description renders in the vertical rail; icon is a leading @Composable slot shown until the stop is done/error.
current *
Int
n/a
Zero-based active stop. Drives the done / current / upcoming split and the connector fill.
orientation
NockerlStepperOrientation
HORIZONTAL
Layout axis: HORIZONTAL · VERTICAL.
errorStep
Int?
null
Stop to render in the error state (status error color + alert icon + state semantics). Honored when it equals current.
onStepClick
((Int) -> Unit)?
null
When non-null, completed stops are clickable (ripple + role = button). Null = a passive indicator.
modifier
Modifier
Modifier
Outer modifier. Pass Modifier.fillMaxWidth() for a full-width horizontal tracker.
The Swift tab models the tracker as a NockerlStepper view; status comes from current
(+ optional errorStep), not per-stop flags. State styling reads from
NockerlTheme (accent, success, error, surface highlight).
Style
Type
Default
Description
steps *
[NockerlStep]
n/a
NockerlStep(label:description:systemImage:). description shows in the vertical rail; systemImage is an optional SF Symbol shown until the stop is done/error.
current *
Int
n/a
Zero-based active stop. Earlier = done (success checkmark), later = upcoming (recessed, muted).
Stop rendered with the error tint + exclamationmark symbol + accessibility state. Applied when it equals current.
onStepTap
((Int) -> Void)?
nil
When provided, completed stops become tappable buttons; otherwise the tracker is presentational.
Cross-platform drift (tracked for reconciliation)
The Stepper is the step indicator primitive, not a flow and not a bar:
Stepper vs Wizard: the Wizard is the full guided
container (renders each step’s content + next/back); the Stepper is only the
discs + connectors it shows at the top. A Wizard uses a Stepper.
Stepper vs progress bar: the bar is one
continuous fill for indeterminate / percentage progress; the Stepper is
discrete, named stops with per-step status.
Web ships it.NockerlStepper is exported from @dizyx/nockerl-react (the
TypeScript signature above). The Kotlin and Swift tabs document an intended API
drawn from the laws + the real precedents (Android NockerlSegmented’s muted-track /
one-cyan-stop treatment; Voice OnboardingView’s checkmark / x / circle status
checklist); the per-platform note at the foot of this page carries their status. A
separate numeric +/- stepper input is a different control, queued under
Inputs.