UIPackage
Menu

Progress Item

progress-item ui
Edit on GitHub

Labeled progress row — item name on the left, progress bar in the middle, percent or count on the right. Use for batched task lists, file upload queues, or onboarding checklists.

Also available for React ->

Installation

$ npx shadcn-vue@latest add https://uipkge.dev/r/vue/progress-item.json
Named registry: npx shadcn-vue@latest add @uipkge/progress-item Installs to: app/components/ui/progress-item/

Examples

Props

Name Type / Values Default Required
label string required
value number required
secondaryLabel string optional
barClass string optional
class string optional
colorIndex number optional

Includes

Used by

Files installed (2)

  • app/components/ui/progress-item/ProgressItem.vue 1.3 kB
    <script setup lang="ts">
    import { computed } from 'vue'
    import { cn } from '@/lib/utils'
    import { Progress } from '@/components/ui/progress'
    
    const props = defineProps<{
      label: string
      value: number
      secondaryLabel?: string
      barClass?: string
      class?: string
      colorIndex?: number
    }>()
    
    // Maps to canonical shadcn chart tokens (chart-1..5). Cycles through 5 hues.
    const barColors = [
      '[&_[data-slot=progress-indicator]]:bg-primary',
      '[&_[data-slot=progress-indicator]]:bg-[var(--chart-1)]',
      '[&_[data-slot=progress-indicator]]:bg-[var(--chart-2)]',
      '[&_[data-slot=progress-indicator]]:bg-[var(--chart-3)]',
      '[&_[data-slot=progress-indicator]]:bg-[var(--chart-4)]',
      '[&_[data-slot=progress-indicator]]:bg-[var(--chart-5)]',
    ]
    
    const colorClass = computed(() =>
      props.colorIndex !== undefined ? barColors[props.colorIndex % barColors.length] : '',
    )
    </script>
    
    <template>
      <div :class="cn('group/progress space-y-1.5', props.class)">
        <div class="flex items-center justify-between text-sm">
          <span class="font-medium">{{ label }}</span>
          <span class="text-muted-foreground text-xs tabular-nums">{{ secondaryLabel ?? `${value}%` }}</span>
        </div>
        <Progress :model-value="value" :class="cn('h-2 transition-colors duration-200', colorClass, barClass)" />
      </div>
    </template>
  • app/components/ui/progress-item/index.ts 0.1 kB
    export { default as ProgressItem } from './ProgressItem.vue'

Raw manifest: https://uipkge.dev/r/vue/progress-item.json