{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "progress",
  "title": "Progress",
  "dependencies": [
    "@base-ui/react"
  ],
  "registryDependencies": [
    "https://ui.hotfix.jobs/r/tokens.json",
    "https://ui.hotfix.jobs/r/utils.json"
  ],
  "files": [
    {
      "path": "registry/components/ui/progress.tsx",
      "content": "\"use client\";\n\nimport { Progress as ProgressPrimitive } from \"@base-ui/react/progress\";\nimport type * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type ProgressVariant = \"default\" | \"success\" | \"warning\" | \"error\";\nexport type ProgressSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ProgressProps\n  extends Omit<React.ComponentProps<typeof ProgressPrimitive.Root>, \"value\"> {\n  /** Current value (0-max). Pass null for indeterminate. */\n  value?: number | null;\n  /** Maximum value. Default 100. */\n  max?: number;\n  /** Intent variant. */\n  variant?: ProgressVariant;\n  /** Height preset: `sm` (4px), `md` (6px), `lg` (10px). Ignored when `height` is set. */\n  size?: ProgressSize;\n  /** Exact bar height in pixels. Overrides `size`. */\n  height?: number;\n  /** Exact bar width in pixels or CSS length. Defaults to 100%. */\n  width?: number | string;\n  /** Accessible label for the progress bar. */\n  label?: string;\n}\n\nconst fillByVariant: Record<ProgressVariant, string> = {\n  default: \"bg-primary\",\n  success: \"bg-success\",\n  warning: \"bg-warning\",\n  error: \"bg-error\",\n};\n\nconst heightBySize: Record<ProgressSize, string> = {\n  sm: \"h-1\",\n  md: \"h-1.5\",\n  lg: \"h-2.5\",\n};\n\nexport function Progress({\n  value = 0,\n  max = 100,\n  variant = \"default\",\n  size = \"md\",\n  height,\n  width,\n  label = \"Progress\",\n  className,\n  style,\n  ...props\n}: ProgressProps): React.ReactElement {\n  const trackStyle: React.CSSProperties = {\n    ...(height != null ? { height } : {}),\n    ...(width != null\n      ? { width: typeof width === \"number\" ? `${width}px` : width }\n      : {}),\n    ...style,\n  };\n\n  return (\n    <ProgressPrimitive.Root\n      value={value}\n      max={max}\n      aria-label={label}\n      data-slot=\"progress\"\n      className={cn(\"w-full\", className)}\n      {...props}\n    >\n      <ProgressPrimitive.Track\n        data-slot=\"progress-track\"\n        className={cn(\n          \"relative w-full overflow-hidden rounded-full bg-fill-2\",\n          height == null && heightBySize[size],\n        )}\n        style={trackStyle}\n      >\n        <ProgressPrimitive.Indicator\n          data-slot=\"progress-indicator\"\n          className={cn(\n            \"block h-full rounded-full\",\n            \"transition-[width] duration-[var(--duration-overlay)] ease-[var(--ease-standard)]\",\n            \"data-[indeterminate]:absolute data-[indeterminate]:inset-y-0 data-[indeterminate]:w-1/3\",\n            \"data-[indeterminate]:animate-[patch-progress-indeterminate_1.4s_ease-in-out_infinite]\",\n            \"motion-reduce:data-[indeterminate]:animate-none\",\n            fillByVariant[variant],\n          )}\n        />\n      </ProgressPrimitive.Track>\n    </ProgressPrimitive.Root>\n  );\n}\n\nexport { ProgressPrimitive };\n",
      "type": "registry:ui",
      "target": "components/ui/progress.tsx"
    }
  ],
  "type": "registry:ui"
}