{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "spinner",
  "title": "Spinner",
  "description": "The smallest way to say something is happening, for a control that is working.",
  "registryDependencies": [
    "utils"
  ],
  "files": [
    {
      "path": "registry/default/spinner/spinner.tsx",
      "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nexport type SpinnerProps = Omit<\n  React.HTMLAttributes<HTMLSpanElement>,\n  \"children\"\n> & {\n  size?: number\n  /**\n   * Announced while it turns. Without one the spinner is decoration, which is\n   * right when the text beside it already says what is happening.\n   */\n  label?: string\n}\n\n/**\n * The smallest way to say something is happening: a control that is working,\n * a row that is refreshing. Skeleton is for content that has not arrived;\n * this is for work that is under way.\n */\nexport function Spinner({\n  size = 16,\n  label,\n  className,\n  ...rootProps\n}: SpinnerProps) {\n  return (\n    <span\n      data-slot=\"spinner\"\n      role={label ? \"status\" : undefined}\n      aria-hidden={label ? undefined : \"true\"}\n      className={cn(\"inline-flex items-center\", className)}\n      {...rootProps}\n    >\n      <svg\n        viewBox=\"0 0 24 24\"\n        width={size}\n        height={size}\n        fill=\"none\"\n        aria-hidden=\"true\"\n        /* Reduced motion stops the turn; the ring stays, so the control still\n           reads as busy rather than as an unexplained circle. */\n        className=\"animate-spin motion-reduce:animate-none\"\n      >\n        <circle\n          cx=\"12\"\n          cy=\"12\"\n          r=\"10\"\n          stroke=\"currentColor\"\n          strokeWidth=\"2.5\"\n          className=\"opacity-20\"\n        />\n        <path\n          d=\"M12 2a10 10 0 0 1 10 10\"\n          stroke=\"currentColor\"\n          strokeWidth=\"2.5\"\n          strokeLinecap=\"round\"\n        />\n      </svg>\n      {label ? <span className=\"sr-only\">{label}</span> : null}\n    </span>\n  )\n}\n",
      "type": "registry:ui"
    }
  ],
  "categories": [
    "feedback",
    "loading"
  ],
  "type": "registry:ui"
}