Progress

Display progress relative to a limit or related to a task.

Default

code
<script setup>
  const value = ref(30)
</script>

<template>
  <PStack gap="4">
    <PProgress v-model="value" size="sm" />
    <PProgress v-model="value" />
    <PProgress v-model="value" size="lg" />
  </PStack>
</template>

Custom min/max

code
<script setup>
  const value = ref(30)
</script>

<template>
  <PProgress v-model="value" :min="20" :max="40" />
</template>

Dynamic colors

Customize the colors of the display at different stages.

0
0 / 100
code
<script setup>
  const progress = ref(0)

  const colors = {
    0: 'var(--color-foreground)',
    25: 'var(--color-red-700)',
    50: 'var(--color-amber-700)',
    75: 'var(--color-pink-700)',
    100: 'var(--color-blue-700)'
  }

  function increase() {
    if (progress.value < 100) {
      progress.value += 10
    }
  }

  function decrease() {
    if (progress.value > 0) {
      progress.value -= 10
    }
  }
</script>

<template>
  <PProgress v-model="progress" :colors="colors" label />
  <PProgress v-model="progress" :colors="colors">
    {{ progress }} / 100
  </PProgress>

  <PStack class="mt-4">
    <PButton variant="primary" @click="increase">Increase</PButton>
    <PButton @click="decrease">Decrease</PButton>
  </PStack>
</template>

Themed

code
<template>
  <PStack gap="6">
    <PProgress :model-value="80" variant="success" />
    <PProgress :model-value="10" variant="error" />
    <PProgress :model-value="40" variant="warning" />
    <PProgress :model-value="70" variant="secondary" />
  </PStack>
</template>