{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "spinner",
  "title": "Spinner",
  "description": "A compact indeterminate activity indicator with three sizes and reduced-motion support.",
  "files": [
    {
      "path": "registry/rivetui/components/spinner/spinner.tsx",
      "content": "import type * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\ntype SpinnerSize = \"sm\" | \"md\" | \"lg\";\n\ntype SpinnerProps = React.ComponentProps<\"svg\"> & {\n  size?: SpinnerSize;\n};\n\nconst spinnerSizes: Record<SpinnerSize, string> = {\n  sm: \"size-3.5\",\n  md: \"size-4\",\n  lg: \"size-6\",\n};\n\nfunction Spinner({\n  size = \"md\",\n  className,\n  \"aria-label\": ariaLabel = \"Loading\",\n  ...props\n}: SpinnerProps) {\n  return (\n    <svg\n      data-slot=\"spinner\"\n      role=\"status\"\n      aria-label={ariaLabel}\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      className={cn(\n        \"shrink-0 animate-spin text-current motion-reduce:animate-none\",\n        spinnerSizes[size],\n        className,\n      )}\n      {...props}\n    >\n      <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" strokeWidth=\"2\" opacity=\"0.2\" />\n      <path d=\"M12 3a9 9 0 0 1 9 9\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"square\" />\n    </svg>\n  );\n}\n\nexport type { SpinnerProps, SpinnerSize };\nexport { Spinner };\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}