{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "progress-bar", "title": "Progress Bar", "description": "Animated progress bar with default, gradient, and striped variants", "dependencies": [ "motion" ], "files": [ { "path": "registry/pioneerui/progress-bar.tsx", "content": "\"use client\"\n\nimport React, { useEffect, useRef, useState } from \"react\"\nimport { motion } from \"motion/react\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface ProgressBarProps extends React.HTMLAttributes {\n value: number\n max?: number\n label?: string\n showValue?: boolean\n variant?: \"default\" | \"gradient\" | \"striped\"\n size?: \"sm\" | \"md\" | \"lg\"\n animated?: boolean\n}\n\nexport function ProgressBar({\n value,\n max = 100,\n label,\n showValue = false,\n variant = \"default\",\n size = \"md\",\n animated = true,\n className,\n ...props\n}: ProgressBarProps) {\n const percentage = Math.min(100, Math.max(0, (value / max) * 100))\n\n const sizeClass = {\n sm: \"h-1.5\",\n md: \"h-2.5\",\n lg: \"h-4\",\n }[size]\n\n const fillClass = {\n default: \"bg-primary\",\n gradient: \"bg-gradient-to-r from-indigo-500 via-purple-500 to-pink-500\",\n striped:\n \"bg-primary bg-[repeating-linear-gradient(45deg,transparent,transparent_10px,rgba(255,255,255,0.15)_10px,rgba(255,255,255,0.15)_20px)]\",\n }[variant]\n\n return (\n
\n {(label || showValue) && (\n
\n {label && {label}}\n {showValue && (\n {Math.round(percentage)}%\n )}\n
\n )}\n \n {animated ? (\n \n ) : (\n \n )}\n
\n \n )\n}\n\nexport interface MultiProgressBarProps extends React.HTMLAttributes {\n segments: { value: number; color: string; label?: string }[]\n total?: number\n size?: \"sm\" | \"md\" | \"lg\"\n}\n\nexport function MultiProgressBar({\n segments,\n total = 100,\n size = \"md\",\n className,\n ...props\n}: MultiProgressBarProps) {\n const sizeClass = { sm: \"h-1.5\", md: \"h-2.5\", lg: \"h-4\" }[size]\n\n return (\n
\n
\n {segments.map((seg, i) => (\n \n ))}\n
\n {segments.some((s) => s.label) && (\n
\n {segments.map((seg, i) =>\n seg.label ? (\n
\n \n {seg.label}\n
\n ) : null,\n )}\n
\n )}\n
\n )\n}\n", "type": "registry:ui", "target": "components/pioneerui/progress-bar.tsx" } ], "type": "registry:ui" }