Progress Bar
Loading/transfer progress indicator with gradient fill
Size
Material
TRANSFER65%
<div class="progress-wrap">
<div class="progress-track"><div class="progress-fill" style="width:65%"></div></div>
<div class="progress-label"><span>TRANSFER</span><span>65%</span></div>
</div> .progress-wrap { display: flex; flex-direction: column; gap: 4px; width: 180px; }
.progress-track {
width: 100%; height: 8px; border-radius: 4px;
background: var(--bg-inset); border: 1px solid var(--border-subtle);
overflow: hidden; box-shadow: var(--shadow-inset);
}
.progress-fill { height: 100%; border-radius: 3px; background: linear-gradient(90deg, var(--blue-info), var(--green-on)); transition: width 0.3s var(--ease-out); }
.progress-label {
display: flex; justify-content: space-between;
font-family: var(--font-ui); font-size: 9px; font-weight: 500;
color: var(--text-muted); letter-spacing: 1px;
} API
| Class | Type | Description |
|---|---|---|
.progress-track | Base | Primary component class |
.md | Size | Medium (default) variant |
Design Notes
Physical Analog
Reference devices: iPod file transfer progress, Windows XP file copy dialog, CD burning progress. Mechanism: Linear indicator showing completion percentage of time-bound process. Track = total work, fill = completed work.
Geometry
| Property | Value |
|---|---|
| Track | 100% width x 8px height |
| Fill gradient | Blue-to-green |
| Container width | 180px |
CSS Recipe
Wrapper
.progress-wrap { display: flex; flex-direction: column; gap: 4px; width: 180px; }
Track
.progress-track {
width: 100%; height: 8px; border-radius: 4px;
background: var(--bg-inset); border: 1px solid var(--border-subtle);
overflow: hidden; box-shadow: var(--shadow-inset);
}
Fill
.progress-fill { height: 100%; border-radius: 3px; background: linear-gradient(90deg, var(--blue-info), var(--green-on)); transition: width 0.3s var(--ease-out); }
Label
.progress-label {
display: flex; justify-content: space-between;
font-family: var(--font-ui); font-size: 9px; font-weight: 500;
color: var(--text-muted); letter-spacing: 1px;
}
HTML Structure
<div class="progress-wrap">
<div class="progress-track"><div class="progress-fill" style="width:65%"></div></div>
<div class="progress-label"><span>TRANSFER</span><span>65%</span></div>
</div>
Size Variants
No explicit size variants.
Material Variants
- Track: Recessed panel
- Fill: Blue-to-green gradient
Theme Behavior
- Track adapts via tokens
- Fill gradient colors are fixed
Constraints
- Fill transition MUST use
--ease-outwith 0.3s duration for smooth progress animation. - Track has
overflow: hiddento clip the fill at edges. - Label row shows description on left, percentage on right.
Accessibility
- Use
role="progressbar"witharia-valuenow,aria-valuemin="0",aria-valuemax="100" aria-labelshould describe the process
♿
Accessibility
- Element
- Use semantic HTML with appropriate ARIA roles
- Keyboard
- Follow WAI-ARIA patterns for this control type
- Focus
-
Visible focus indicator required. Use native browser focus ring or custom
:focus-visiblestyles.