{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "progress",
  "type": "registry:ui",
  "title": "Progress",
  "description": "Linear progress / integrity bar with tactical tone variants.",
  "dependencies": [
    "@radix-ui/react-progress"
  ],
  "devDependencies": [],
  "registryDependencies": [
    "utils"
  ],
  "files": [
    {
      "path": "registry/blacksite/ui/progress.tsx",
      "type": "registry:ui",
      "target": "components/ui/progress.tsx",
      "content": "\"use client\";\n\nimport * as React from \"react\";\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst progressVariants = cva(\"relative h-1 w-full overflow-hidden rounded-[2px] bg-secondary\", {\n  variants: {\n    size: {\n      xs: \"h-0.5\",\n      sm: \"h-1\",\n      md: \"h-1.5\",\n      lg: \"h-2\",\n    },\n  },\n  defaultVariants: {\n    size: \"sm\",\n  },\n});\n\nconst indicatorVariants = cva(\"h-full transition-[width,background] duration-300 ease-out\", {\n  variants: {\n    tone: {\n      primary: \"bg-primary\",\n      success: \"bg-success\",\n      warning: \"bg-warning\",\n      danger: \"bg-danger\",\n      info: \"bg-info\",\n      gold: \"bg-gold\",\n      neutral: \"bg-foreground/70\",\n    },\n  },\n  defaultVariants: {\n    tone: \"primary\",\n  },\n});\n\nexport interface ProgressProps\n  extends\n    React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>,\n    VariantProps<typeof progressVariants>,\n    VariantProps<typeof indicatorVariants> {\n  value?: number;\n}\n\nconst Progress = React.memo(\n  React.forwardRef<React.ElementRef<typeof ProgressPrimitive.Root>, ProgressProps>(\n    ({ className, value = 0, tone, size, ...props }, ref) => (\n      <ProgressPrimitive.Root\n        ref={ref}\n        className={cn(progressVariants({ size }), className)}\n        {...props}\n      >\n        <ProgressPrimitive.Indicator\n          className={cn(indicatorVariants({ tone }))}\n          style={{ width: `${Math.max(0, Math.min(100, value))}%` }}\n        />\n      </ProgressPrimitive.Root>\n    ),\n  ),\n);\nProgress.displayName = \"Progress\";\n\nexport { Progress, progressVariants };\n"
    }
  ]
}
