Progress indicators for multi-stage flows. Use visible labels for task-heavy screens, compact numbered steps for tight layouts, and HTMX swaps when the server owns the current step.
DefaultRendered example
completedCreate an account
2Select a plan
3Checkout
4Get started
Usage Example
@steps.Steps(steps.Config{ShowLabels:true,AriaLabel:"registration progress",Steps:[]steps.Step{{Label:"Create an account",Status:steps.StatusCompleted},{Label:"Select a plan",Status:steps.StatusCurrent},{Label:"Checkout",Status:steps.StatusUpcoming},{Label:"Get started",Status:steps.StatusUpcoming},},})
Default Steps
Horizontal progress without visible labels. Matches PenguinUI default number-only flow.
Default StepsRendered example
completed
2
3
4
Default Steps
@steps.Steps(steps.Config{AriaLabel:"registration progress",Steps:[]steps.Step{{AriaLabel:"Create an account",Status:steps.StatusCompleted},{AriaLabel:"Select a plan",Status:steps.StatusCurrent},{AriaLabel:"Checkout",Status:steps.StatusUpcoming},{AriaLabel:"Get started",Status:steps.StatusUpcoming},},})
HTMX State Swap
Server owns state. Buttons swap the whole progress block with prev/next states, so no Alpine local state gets stranded or reset incorrectly.
HTMX State SwapRendered example
completedCreate an account
2Select a plan
3Checkout
4Get started
Current server state: step 2 of 4.
HTMX State Swap
<divid="steps-demo-shell">@components.StepsHTMXFlow(2)</div>// Server handler returns @components.StepsHTMXFlow(step)// Buttons use hx-get + hx-target="#steps-demo-shell" + hx-swap="outerHTML"
Vertical Steps
Vertical flow for tighter sidebars, setup assistants, or stacked onboarding guides.
Vertical StepsRendered example
completed
Create an account
2
Select a plan
3
Checkout
4
Get started
Vertical Steps
@steps.Steps(steps.Config{Orientation:steps.OrientationVertical,ShowLabels:true,AriaLabel:"registration progress",Steps:[]steps.Step{{Label:"Create an account",Status:steps.StatusCompleted},{Label:"Select a plan",Status:steps.StatusCurrent},{Label:"Checkout",Status:steps.StatusUpcoming},{Label:"Get started",Status:steps.StatusUpcoming},},})
Go API
v0.2.7
The examples above cover behavior and composition. pkg.go.dev is the canonical reference for exported types, functions, methods, and Go documentation.
Goshtoso can store preferences and demo state in your browser. Some examples use cookies and IndexedDB to persist local demo state. There is no analytics, advertising, or third-party tracking. You can use the site without storage, but preferences and some examples will reset or stop persisting. Details in our Privacy Policy.