{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "progress",
  "type": "registry:ui",
  "dependencies": [
    "class-variance-authority",
    "clsx",
    "tailwind-merge"
  ],
  "registryDependencies": [],
  "files": [
    {
      "path": "progress.tsx",
      "target": "components/ui/progress.tsx",
      "type": "registry:ui",
      "content": "import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport const progressVariants = cva(\n  \"w-full overflow-hidden rounded-full bg-border-strong\",\n  {\n    variants: {\n      size: {\n        sm: \"h-1\",\n        md: \"h-2\",\n        lg: \"h-3\",\n      },\n    },\n    defaultVariants: { size: \"md\" },\n  },\n);\n\nexport interface ProgressProps\n  extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\">,\n    VariantProps<typeof progressVariants> {\n  value?: number;\n  max?: number;\n  glow?: boolean;\n}\n\nexport const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n  ({ className, size, value, max = 100, glow = false, ...props }, ref) => {\n    const indeterminate = value === undefined;\n    const pct = indeterminate\n      ? 0\n      : Math.max(0, Math.min(100, (value / max) * 100));\n    const complete = !indeterminate && pct >= 100;\n\n    return (\n      <div\n        ref={ref}\n        role=\"progressbar\"\n        aria-valuemin={0}\n        aria-valuemax={max}\n        aria-valuenow={indeterminate ? undefined : value}\n        className={cn(progressVariants({ size }), className)}\n        {...props}\n      >\n        <div\n          className={cn(\n            \"h-full rounded-full\",\n            complete ? \"bg-live\" : \"bg-accent bg-gradient-accent\",\n            glow && \"glow-accent\",\n            indeterminate\n              ? \"w-full animate-shimmer motion-reduce:animate-none\"\n              : \"transition-layout duration-ambient ease-soft motion-reduce:transition-none\",\n          )}\n          style={indeterminate ? undefined : { width: `${pct}%` }}\n        />\n      </div>\n    );\n  },\n);\nProgress.displayName = \"Progress\";\n"
    }
  ]
}