Components Components
Progress bar
Components progress
A labelled progress bar.
Markup
Drops in as data-pb-block="progress".
html
<div data-pb-block="progress" class="pb-progress" style="font-family:inherit;max-width:32rem;">
<div class="pb-progress__label" style="display:flex;justify-content:space-between;font-size:0.8125rem;color:var(--pb-muted,#64748b);margin-bottom:0.35rem;"><span>Progress</span><span>70%</span></div>
<div class="pb-progress__track" style="height:0.6rem;border-radius:999px;background:var(--pb-border,#e2e8f0);overflow:hidden;"><div class="pb-progress__bar" style="height:100%;width:70%;border-radius:999px;background:var(--pb-primary,#6366f1);"></div></div>
</div>Settings
Interactive behaviour is built in; on top of that every block supports:
- Bind to State
- Drive content reactively from a State with declarative Alpine —
x-text,x-showorx-modelover$store.app.<stateKey>. - On event → run a Flow
- Wire an interaction to a Flow: set
data-pb-flow="<slug>"anddata-pb-flow-event="click|submit|hover|change|…". The flow's returned actions update the page. - Link to a page
- Navigate to another published page on click with
data-pb-page="<slug>". - Styles & classes
- Edit spacing, colour and layout visually in the GrapesJS editor. The wrapper carries
data-pb-block="progress"so it imports as a labelled, editable component. - Interactive out of the box
- Ships with Alpine state baked in (
x-data,@click,x-show,x-transition) — open/close, tabs and toggles work with no wiring. These owner-authored blocks are trusted and keep their executable directives.