Components
A Progress Bar is a visual UI element that indicates the completion status of a task or process, commonly used in software applications for tasks like file downloads and software installations.
Included in free version
Free
8 Variants
Free
16 Variants
96 Variants
Free
1128 Variants
Free
36 Variants
Free
340 Variants
336 Variants
Free
960 Variants
86 Variants
70 Variants
Free
128 Variants
Free
100 Variants
Free
2404 Variants
Free
16 Variants
Free
256 Variants
Free
12 Variants
Free
20 Variants
Free
50 Variants
Free
896 Variants
196 Variants
Free
784 Variants
Free
840 Variants
149 Variants
22 Variants
Free
50 Variants
Free
1792 Variants
Free
64 Variants
6 Variants
256 Variants
Free
64 Variants
580 Variants
Free
144 Variants
36 Variants
7 Variants
441 Variants
8 Variants
Free
14 Variants
Free
12 Variants
16 Variants
32 Variants
The Progress component in Emvi UI communicates task advancement and system status using linear and circular indicators. It supports determinate (%) and indeterminate (ongoing) modes, optional labels, and success/error handoffs. Designed for consistency across Figma mockups and Tailwind code, it aligns with tokens for track, fill, label, and motion. Use the component for uploads, installs, background processing, and multi-step flows. Keywords integrated for SEO: progress bar UI, UI progress bar, progress bar UI Figma, circle progress bar UI, bar progression.
Common variants:
- Linear — Determinate (0–100), Indeterminate (animated bar), Buffer (secondary track indicating preloaded data), Segmented (steps/milestones).
- Circular — Determinate (stroke arc shows %), Indeterminate (spinner), With center label (value or icon).
- Label placement — none / leading / trailing / top / inside bar (compact).
- Validation — success, warning, error (color + icon), paused.
All variants are theme-aware (light/dark) and use tokens like progress.track, progress.fill, progress.buffer, progress.label, progress.ring, progress.indeterminate, progress.success, progress.error.
Provide SM/MD/LG scales:
- Linear heights: 4–6–8px (SM/MD/LG) with radius matching input/button radius.
- Circular diameters: 16–24–48px with 2–4px stroke widths.
- Label spacing: 6–8px between bar and label; inside-bar labels use bold text for legibility.
Maintain ≥44×44px touch targets for any interactive wrapper (e.g., cancel button) and preserve a consistent vertical rhythm with adjacent form controls and alerts.
Determinate bars expose value and min/max (0–100 by default). Indeterminate bars loop with subtle motion; respect prefers-reduced-motion. Buffer bars show a secondary track for downloaded/preprocessed data. Use paused for halted tasks and switch to success/error upon completion. Avoid fake jumps; changes should be smooth and truthful. RTL: reverse fill direction for linear bars when appropriate.
Use role="progressbar" with aria-valuemin, aria-valuemax, and aria-valuenow for determinate progress. Provide an accessible label (visible or aria-label). For indeterminate, omit aria-valuenow and announce context (e.g., “Loading data”). Keep 4.5:1 contrast between fill and track in all themes. Avoid rapid live-region updates; batch announcements (e.g., 10% increments). Ensure focus is on the task, not the bar, unless there are interactive controls (pause/cancel).
Figma: variants for linear/circular, determinate/indeterminate, label positions, sizes (SM/MD/LG), and outcomes (success/error). Tokens map to styles: progress.track, progress.fill, progress.buffer, progress.label. Autolayout keeps consistent gaps; component properties toggle labels and icons.
Tailwind: compose with relative, rounded-full, and utility-driven animations; expose CSS variables (--progress-track, --progress-fill) or design tokens to sync themes. Provide utilities for RTL reversing and prefers-reduced-motion fallbacks.
- Prefer determinate bars when total work is known; fall back to indeterminate temporarily.
- Keep motion subtle; respect reduced-motion preferences.
- Pair bars with concise labels or ETA when helpful; avoid redundant numbers.
- For large lists, defer rendering with skeletons and only show progress where meaningful.
- Align heights and typography with adjacent inputs/buttons to preserve rhythm.
- On completion, switch to success state briefly or collapse the bar to reduce visual noise.