Progress

Linear progress bars with semantic color variants, multiple sizes, striped and animated styles, and indeterminate mode. Progress bars are fully CSS-driven — set the width via inline style or utility classes and the bar animates smoothly.

Semantic Variants

Primary (default)

Success

Warning

Error

Info

<!-- Primary (default) -->
<div class="vd-progress">
  <div class="vd-progress-bar" style="width: 45%;"></div>
</div>

<!-- Success, Warning, Error, Info -->
<div class="vd-progress-bar vd-progress-success" style="width: 75%;"></div>
<div class="vd-progress-bar vd-progress-warning" style="width: 60%;"></div>
<div class="vd-progress-bar vd-progress-error" style="width: 90%;"></div>
<div class="vd-progress-bar vd-progress-info" style="width: 30%;"></div>
Sizes & Striped

Extra Small (3px)

Small (5px)

Default (8px)

Large (13px)

Extra Large (21px)

60%

Striped & Animated

<!-- Sizes -->
<div class="vd-progress vd-progress-xs">...</div>
<div class="vd-progress vd-progress-sm">...</div>
<div class="vd-progress vd-progress-lg">...</div>
<div class="vd-progress vd-progress-xl">...</div>

<!-- Striped + Animated -->
<div class="vd-progress vd-progress-striped vd-progress-animated">
  <div class="vd-progress-bar" style="width: 75%;"></div>
</div>

<!-- Indeterminate (animated loading bar) -->
<div class="vd-progress vd-progress-indeterminate">
  <div class="vd-progress-bar"></div>
</div>
Indeterminate

Use when the exact progress percentage is unknown.

<!-- Indeterminate (no width needed) -->
<div class="vd-progress vd-progress-indeterminate">
  <div class="vd-progress-bar"></div>
</div>
Multiple Bars & Labeled

Stack multiple bars to show segmented progress.

25%
15%
10%

With percentage label (XL size only)

82%
<!-- Multiple bars -->
<div class="vd-progress vd-progress-lg">
  <div class="vd-progress-bar vd-progress-success"
       style="width: 25%;">25%</div>
  <div class="vd-progress-bar vd-progress-warning"
       style="width: 15%;">15%</div>
  <div class="vd-progress-bar"
       style="width: 10%;">10%</div>
</div>

<!-- Labeled (XL) -->
<div class="vd-progress vd-progress-xl">
  <div class="vd-progress-bar vd-progress-success"
       style="width: 82%;">82%</div>
</div>
CSS Variables
VariableDefaultDescription
--vd-progress-height8pxDefault track height
--vd-progress-bgvar(--vd-bg-tertiary)Track background color
--vd-progress-bar-bgvar(--vd-color-primary)Default bar fill color
--vd-progress-border-radiusvar(--vd-radius-fib-5, 5px)Track and bar rounding
API Reference

Usage

<script setup lang="ts">
import { VdProgress } from "@vanduo-oss/vd3";
</script>

<template>
  <VdProgress :value="60" :max="100" label="Uploading" />
  <VdProgress indeterminate label="Working…" />
</template>

CSS Classes

ClassDescription
.vd-progressBase track container with rounded overflow.
.vd-progress-barThe colored fill bar. Width controlled via inline style or utility class.
.vd-progress-successGreen fill variant.
.vd-progress-warningAmber fill variant.
.vd-progress-errorRed fill variant.
.vd-progress-infoCyan fill variant.
.vd-progress-xsExtra small track height (3px).
.vd-progress-smSmall track height (5px).
.vd-progress-lgLarge track height (13px).
.vd-progress-xlExtra large track height (21px). Supports text labels inside the bar.
.vd-progress-stripedDiagonal stripe overlay on the bar.
.vd-progress-animatedAnimates the stripes scrolling horizontally.
.vd-progress-indeterminateAnimates a partial-width bar back and forth across the track.

Component API (Vue 3)

PropDescription
:valueCurrent value (default 0).
:maxMaximum value (default 100).
:indeterminateAnimated indeterminate bar (ignores value).
:labelAccessible label / visible text for the bar.
Accessibility
  • Wrap progress bars in an element with role="progressbar", aria-valuenow, aria-valuemin="0", and aria-valuemax="100".
  • Provide an aria-label or aria-labelledby describing what is progressing (e.g., "Uploading file.jpg").
  • For indeterminate bars, omit aria-valuenow and add aria-valuetext="Loading..." instead.
  • Animations respect prefers-reduced-motion: reduce — stripes and indeterminate motion are disabled.
  • Dark mode automatically adjusts --vd-progress-bg for sufficient contrast.