Stepper
A progress indicator for multi-step workflows. States auto-compute from the current step.
-
Profile
Tell us about yourself
-
2
Workspace
Configure team defaults
-
3
Invite
Bring in teammates
Vertical
Use
orientation="vertical"
for side panels or mobile flows. The connector line runs vertically
between markers.
-
Account
Email and password
-
Team
Invite collaborators
-
3
Billing
Choose a plan
-
4
Launch
Go live
Responsive
Set
orientation="responsive"
to stack vertically on mobile and switch to horizontal on larger
screens.
-
Design
Wireframes
-
2
Build
Implementation
-
3
Review
QA pass
-
4
Ship
Deploy
Clickable Steps
Pass a
select_event
and a
value
on each step to make markers clickable. The event fires with
phx-value-step
set to the step's value.
-
Profile
Tell us about yourself
-
Workspace
Configure defaults
-
Invite
Bring in teammates
Click any marker above to jump to that step. Currently on step 2.
Error State
Pass an
errors
map keyed by step index (1-based). The step auto-marks as error and
shows the message — no per-step state attrs needed.
-
Select plan
-
Payment
-
Confirm
Card declined
Variants
The
default
variant uses solid markers.
variant="outline"
gives a lighter, bordered look that reads well on muted backgrounds.
-
Design
Wireframes
-
2
Build
Implementation
-
3
Ship
Deploy
Custom Markers
Use the
icon
slot attr to replace the marker content with text or an emoji. This
overrides both the number and the auto-state check/error icons.
-
✓
Order placed
-
✓
Shipped
-
🚚
In transit
Arriving today
-
📦
Delivered
Wizard Form
Use the stepper as navigation chrome for larger LiveView forms. The parent LiveView owns validation and decides when to advance.
Notes
-
Step states auto-compute from
current(1-based): before = complete, at = current, after = pending. -
The
errorsmap overrides auto-state — a step with an error entry shows the error icon and message regardless of its position. -
When
select_eventis set, markers render as buttons with keyboard focus and hover states. Without it, they're non-interactive spans. -
Use
orientation="responsive"for wizards that need to work on both mobile and desktop.