Components

Progress

Indicate progress with UiProgressBar and UiProgressSpinner.

UiProgressBar shows determinate or indeterminate progress; UiProgressSpinner is a simple circular loader.

Add a progress bar

<template>
  <UiProgressBar :value="60" aria-label="Upload progress" text="60%" />
  <UiProgressBar :value="40" size="sm" animated />
  <UiProgressBar :value="0" indeterminate aria-label="Loading" />
</template>

Use a gradient

<template>
  <UiProgressBar :value="75" gradient bar-class="gradient-cyan" />
</template>

The gradient-<name> class goes on the fill through barClass: primary … info, or a named palette such as cyan or violet. Without one, the fill uses the default gradient.

Add a spinner

<template>
  <UiProgressSpinner size="2rem" />
</template>

UiProgressBar props

PropTypeDefaultDescription
valuenumber—Fill width as a percentage of the track (0–100).
ariaLabelstring—Accessible name.
size'sm' | 'lg'—Bar height.
animatedbooleanfalseAnimated stripes.
gradientbooleanfalseGradient fill; pick the colors with a gradient-<name> class in barClass.
indeterminatebooleanfalseUnknown-progress mode.
textstring | null—Label inside the bar.
ariaValuemin / ariaValuemaxnumber0 / 100ARIA range only; the fill width always reads value as a percentage.
customClass / customStylesclass value / style—Classes and inline styles for the track.
barClass / barStylesclass value / style—Classes and inline styles for the fill, including gradient-<name>.

Slots: default — content inside the fill, after text.

UiProgressSpinner props

PropTypeDefaultDescription
sizestring'1.25rem'CSS size (e.g. 2rem, 24px).
customClassstring | string[] | Record<string, boolean> | null—Extra classes.
customStylesstring | Record<string, string | number> | null—Inline styles for the spinner.

CSS variables

Set these on :root or on a wrapper. The sm and lg sizes keep their own height (and lg its radius). The spinner's size comes from its size prop.

:root {
  --cffy-progress-color: var(--cffy-success-a10);
  --cffy-progress-height: .5rem;
}
VariableDefaultControls
--cffy-progress-bg-color--cffy-surface-container-highTrack
--cffy-progress-color--cffy-primary-a10Fill
--cffy-progress-value50%Fill width; UiProgressBar's value prop sets it. Set it on .progress for every bar inside, or on one .progress-bar
--cffy-progress-label-color / --cffy-progress-font-size--cffy-on-primary / --cffy-fs-4xsLabel inside the fill
--cffy-progress-height / --cffy-progress-radius.85rem / --cffy-radius-mdBar size and corners
--cffy-progress-easing / --cffy-progress-duration--cffy-ease-emphasized / --cffy-duration-800Fill transition
--cffy-progress-spinner-color--cffy-muted-a10UiProgressSpinner color
--cffy-progress-spinner-size1.25remUiProgressSpinner size; its size prop sets it
--cffy-loading-shapes-color--cffy-primary-a10Blurred shapes of the shapes loader
Copyright © 2026