AhaSlides Design
v0.52.0React · Vue · Lit

Components · Feedback

Progress

A determinate progress indicator — completion, upload, a quiz timer — as a line, segmented steps, or a circle.

Examples

Type
Status
Percent
Line · steps · circle — default fill + status colours

API

PropTypeDefaultNotes
percentnumber0Completion 0–100; clamped and drives the fill
type'line' | 'circle'lineShape: horizontal bar or SVG ring
stepsnumber0Split a line into N discrete segments (line type only)
size'default' | 'small'defaultCompact Mini variant (thinner bar / smaller ring)
statusdefault | active | success | warning | exceptiondefaultFill colour (exception aliases error)
show-infobooleantrueShow the trailing percent/glyph label (set 'false' to hide)

Install

# .npmrc — once: point the @ahaslides-product scope at GitHub Packages
@ahaslides-product:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}   # a GitHub token with read:packages

npm i @ahaslides-product/design
import '@ahaslides-product/design/tokens.css';   // once, at the app root
import '@ahaslides-product/design/aha-progress';   // registers <aha-progress>

Agent feed for this component (absolute, fetchable anywhere): progress.agent.json · progress.md · progress.llms.txt

When to use

When to use
  • Progress — a determinate task with a known percentage (upload, steps, a timer)
  • Spin — an indeterminate wait with no measurable percentage
  • Skeleton — content is loading and you want to hold its layout
Use Progress only when you can measure completion. A line for inline flow, steps for a discrete multi-stage task, a circle for a compact score dial. Let the fill colour carry success/exception, not a separate label. For an indeterminate wait use Spin.
Surfaces
editor dashboard audience

Spec

Track line height 8 (small 6) · radius pill · #F1F1F1 · Fill default primary #6A1EBB · width (line) or stroke-dashoffset (circle) = percent · Type line (default) · circle (SVG ring, box 96 / small 40) · Steps steps=N → N equal segments, first round(percent) filled · Status active primary · success #16C49A · warning #FF7747 · exception #F5222D · Motion width / stroke-dashoffset animate on --aha-motion-slow / --aha-ease-out · Info percent label (✓/✕ glyph at success/exception); hide with show-info=false · A11y role=progressbar · aria-valuemin 0 / valuemax 100 / valuenow synced to percent