{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "progress",
  "title": "Progress",
  "description": "Progress bar on radix-ui with 6 tones (neutral, brand, success, warning, danger, info) and 3 sizes. Fill animates using ai2 motion tokens.",
  "dependencies": [
    "class-variance-authority@^0.7.1",
    "radix-ui@^1.6.1"
  ],
  "registryDependencies": [
    "@ai2/tokens",
    "@ai2/primitives"
  ],
  "files": [
    {
      "path": "registry/ai2/ui/progress.tsx",
      "content": "\"use client\"\n\nimport type * as React from \"react\"\nimport { Progress as ProgressPrimitive } from \"@/registry/ai2/ui/primitives\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst progressVariants = cva(\"relative w-full overflow-hidden rounded-full bg-surface-3\", {\n  variants: {\n    size: {\n      sm: \"h-1.5\",\n      md: \"h-2\",\n      lg: \"h-3\",\n    },\n  },\n  defaultVariants: { size: \"md\" },\n})\n\nconst indicatorVariants = cva(\n  \"h-full w-full flex-1 rounded-full transition-transform duration-(--motion-slow) ease-(--motion-ease)\",\n  {\n    variants: {\n      tone: {\n        neutral: \"bg-primary\",\n        brand: \"bg-brand\",\n        success: \"bg-success\",\n        warning: \"bg-warning\",\n        danger: \"bg-danger\",\n        info: \"bg-info\",\n      },\n    },\n    defaultVariants: { tone: \"neutral\" },\n  }\n)\n\ninterface ProgressProps\n  extends React.ComponentProps<typeof ProgressPrimitive.Root>,\n    VariantProps<typeof progressVariants>,\n    VariantProps<typeof indicatorVariants> {}\n\nfunction Progress({ className, value, size, tone, ...props }: ProgressProps) {\n  return (\n    <ProgressPrimitive.Root\n      data-slot=\"progress\"\n      data-tone={tone ?? \"neutral\"}\n      className={cn(progressVariants({ size, className }))}\n      value={value}\n      {...props}\n    >\n      <ProgressPrimitive.Indicator\n        data-slot=\"progress-indicator\"\n        className={cn(indicatorVariants({ tone }))}\n        style={{ transform: `translateX(-${100 - (value ?? 0)}%)` }}\n      />\n    </ProgressPrimitive.Root>\n  )\n}\n\nexport { Progress, progressVariants, type ProgressProps }\n",
      "type": "registry:ui"
    }
  ],
  "docs": "Pass value 0-100. tone conveys status (success for complete, danger for over-quota).",
  "categories": [
    "display",
    "feedback"
  ],
  "type": "registry:ui"
}