Progress bar
Determinate: drag the slider; mark it complete or failed
Indeterminate: work of unknown length (streaming). Reduced-motion freezes it
Buffer: a lighter secondary track (e.g. received) ahead of the primary (played)
Segmented: discrete steps (step 3 of 5)
Sizes: thin (the app's 3 to 4dp) and thick
Status: complete and failed (icon + text, never color alone)
Circular: determinate ring with a center % (indeterminate circular is the spinner)
Track + fill are all var(--token). The track is a recessed well at radius-track (the app's 2dp squared shape), and the fill is the plain cyan accent with no threshold banding (that is the context gauge). The width grows; the fill never tweens. The island is live.
Parameters
Section titled “Parameters”Use the progress bar for general determinate/indeterminate progress with the plain cyan fill. It is not the context gauge (the threshold-banded cyan → amber → red token-budget meter) and not the spinner (the indeterminate circular loader), so the ring here is determinate only.
- Android shipped forms: only the determinate linear bar is real
(
LinearProgressIndicatorin TodoWidget / AgentWidget / ClusterSheet). The indeterminate linear, buffer, segmented, and determinate ring forms are not shipped on Android; itsCircularProgressIndicatoris indeterminate-only (the spinner). (The determinate ring + indeterminate linear now ship on Swift via NockerlDesign; buffer + segmented remain design-only.) - Swift: NockerlDesign now publishes the determinate + indeterminate linear
bar (
NockerlProgressBar) and the determinate ring (NockerlProgressRing). The buffer and segmented forms are still Swift-unshipped (web/Android-first). - Track radius: both the real Android track and Swift’s
NockerlProgressBarare squared (radius-track= 2dp/2pt), not a pill. The web demo matches this. - Height: Android uses 3 to 4dp; web exposes
thin/thickas a convenience.