{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "progress",
  "title": "Progress",
  "description": "A progress bar component with color and size variants and an optional shimmer animation.",
  "dependencies": [
    "@base-ui/react"
  ],
  "registryDependencies": [
    "https://ui.ask.mir-ai.it/r/utils.json"
  ],
  "files": [
    {
      "path": "src/registry/ask-ui/components/ui/progress/progress.tsx",
      "content": "import { Progress as ProgressPrimitive } from \"@base-ui/react/progress\";\n\nimport { cn } from \"@/registry/ask-ui/lib/utils\";\n\n/**\n * A composable progress component designed to display task completion or an\n * indeterminate loading state, with color and size variants and an optional\n * CSS-only shimmer animation while progressing.\n */\nfunction Progress({\n  className,\n  children,\n  value,\n  variant = \"default\",\n  size = \"default\",\n  animated = false,\n  rounded = true,\n  ...props\n}: ProgressPrimitive.Root.Props & {\n  variant?: \"default\" | \"destructive\";\n  size?: \"default\" | \"sm\" | \"lg\";\n  animated?: boolean;\n  rounded?: boolean;\n}) {\n  return (\n    <ProgressPrimitive.Root\n      value={value}\n      data-slot=\"progress\"\n      data-variant={variant}\n      data-size={size}\n      data-animated={animated || undefined}\n      data-rounded={rounded || undefined}\n      className={cn(\"group/progress flex flex-wrap gap-3\", className)}\n      {...props}\n    >\n      {children}\n      <ProgressTrack>\n        <ProgressIndicator />\n      </ProgressTrack>\n    </ProgressPrimitive.Root>\n  );\n}\n\nfunction ProgressTrack({ className, ...props }: ProgressPrimitive.Track.Props) {\n  return (\n    <ProgressPrimitive.Track\n      className={cn(\n        \"relative flex h-2 w-full items-center overflow-x-hidden rounded-full bg-muted group-data-[size=lg]/progress:h-3 group-data-[size=sm]/progress:h-1 group-data-[variant=destructive]/progress:bg-destructive/20\",\n        className,\n      )}\n      data-slot=\"progress-track\"\n      {...props}\n    />\n  );\n}\n\nfunction ProgressIndicator({\n  className,\n  ...props\n}: ProgressPrimitive.Indicator.Props) {\n  return (\n    <ProgressPrimitive.Indicator\n      data-slot=\"progress-indicator\"\n      className={cn(\n        \"h-full bg-primary transition-all group-data-rounded/progress:rounded-r-full group-data-[variant=destructive]/progress:bg-destructive group-data-indeterminate/progress:w-1/2 group-data-indeterminate/progress:animate-pulse motion-safe:group-data-animated/progress:group-data-progressing/progress:sheen\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction ProgressLabel({ className, ...props }: ProgressPrimitive.Label.Props) {\n  return (\n    <ProgressPrimitive.Label\n      className={cn(\"text-sm font-medium\", className)}\n      data-slot=\"progress-label\"\n      {...props}\n    />\n  );\n}\n\nfunction ProgressValue({ className, ...props }: ProgressPrimitive.Value.Props) {\n  return (\n    <ProgressPrimitive.Value\n      className={cn(\n        \"ml-auto text-sm text-muted-foreground tabular-nums\",\n        className,\n      )}\n      data-slot=\"progress-value\"\n      {...props}\n    />\n  );\n}\n\nexport {\n  Progress,\n  ProgressTrack,\n  ProgressIndicator,\n  ProgressLabel,\n  ProgressValue,\n};\n",
      "type": "registry:ui"
    }
  ],
  "cssVars": {
    "theme": {
      "--animate-sheen": "sheen 2s ease-in-out infinite"
    }
  },
  "css": {
    "@keyframes sheen": {
      "from": {
        "background-position": "-100% 0"
      },
      "to": {
        "background-position": "200% 0"
      }
    },
    "@utility sheen": {
      "background-image": "linear-gradient(90deg, transparent, var(--sheen-color, rgb(255 255 255 / 0.4)), transparent)",
      "background-size": "50% 100%",
      "background-repeat": "no-repeat",
      "animation": "var(--animate-sheen)"
    }
  },
  "type": "registry:ui"
}