Expand description
<progress> bar behavior: determinate fill sync + indeterminate
sweep animation.
The markup parser desugars <progress> into a track element (tag
progress, carrying ProgressBar) with a single .progress-fill
child (carrying ProgressFill). Both are real elements, so all
styling - track / fill colors, height, radius, the indeterminate
sweep period - is CSS-reachable through the skins:
progress { bg: var(--lumen-track); height: 6; radius: 3; }
.progress-fill { bg: var(--lumen-accent); radius: 3; }
progress { progress-duration: var(--lumen-progress-period); }- Determinate (
value=, or abind-value=signal once it holds a number): the fill’s width tracksvalue / maxas a percent of the track. - Indeterminate (no
value, and no number yet in abind-valuesignal): a 30 %-wide chunk sweeps back and forth (GTK-style bounce; period fromprogress-duration, token--lumen-progress-period). The sweep keeps the frame loop awake viaAnimationsActiveonly while an indeterminate bar is actually visible. - Not focusable, no interaction -
<progress>never carriesTabIndexand none of these systems consume input.
Structs§
- Progress
Bar - State for one
<progress>element (the track entity). - Progress
Chunk - Width of the indeterminate chunk as a fraction of the track.
- Progress
Fill - Marker on the fill child spawned inside every
<progress>. Its width and left edge aresync_progress_fill’s, held inStyleOverrides. - Progress
Plugin - Plugin: registers the fill sync system.
Constants§
- PROGRESS_
PERIOD_ MS - Runtime fallback for the indeterminate sweep period. The single
Rust-side value; skins route
progress-duration: var(--lumen-progress-period)over it and markupduration=wins.
Functions§
- apply_
progress_ bindings - Pull
bind-valuesignal writes intoProgressBar::value. Same dirty-gated shape aslumen_core::signals::apply_value_bindings(which targets sliders - progress deliberately does not carry aSliderValue, or it would inherit wheel / click / drag mutation), and installed with the same ordering, after every store writer, so a write’s one-tick dirty flag is still set when this reads it. - sync_
progress_ fill - Keep every
.progress-fillchild in step with its parentProgressBar.