/** * Progress Bar Component * * Simple progress bar with customizable appearance. */ 'use client'; import { cn } from '@/lib/utils'; interface ProgressBarProps { /** Progress value (0-100) */ value: number; /** Color variant */ variant?: 'default' | 'success' | 'warning' | 'error'; /** Height size */ size?: 'sm' | 'md' | 'lg'; /** Show percentage label */ showLabel?: boolean; /** Additional CSS classes for the container */ className?: string; /** Aria label for accessibility */ 'aria-label'?: string; } const variantClasses = { default: 'bg-primary', success: 'bg-green-500', warning: 'bg-yellow-500', error: 'bg-red-500', }; const sizeClasses = { sm: 'h-1', md: 'h-2', lg: 'h-3', }; export function ProgressBar({ value, variant = 'default', size = 'md', showLabel = false, className, 'aria-label': ariaLabel, }: ProgressBarProps) { const clampedValue = Math.min(100, Math.max(0, value)); return (
{showLabel && (
Progress {Math.round(clampedValue)}%
)}
); }