{
  "$schema": "https://abackui.com/schema/registry-item.json",
  "name": "spinner",
  "type": "registry:ui",
  "title": "Spinner",
  "description": "A loading indicator with a screen-reader label.",
  "dependencies": [
    "@tabler/icons-react"
  ],
  "registryDependencies": [
    "https://abackui.com/r/utils.json"
  ],
  "categories": [
    "Feedback"
  ],
  "docs": "https://abackui.com/docs/components/spinner",
  "meta": {
    "status": "stable",
    "usedIn": [
      "aback-tools",
      "aback-launch"
    ]
  },
  "files": [
    {
      "path": "components/ui/spinner.tsx",
      "content": "import * as React from \"react\";\nimport { IconLoader2 } from \"@tabler/icons-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst spinnerSizes = {\n  sm: \"size-4\",\n  md: \"size-5\",\n  lg: \"size-6\",\n} as const;\n\nexport interface SpinnerProps extends React.ComponentProps<\"span\"> {\n  /** Announced to assistive technology. */\n  label?: string;\n  size?: keyof typeof spinnerSizes;\n}\n\nfunction Spinner({\n  label = \"Loading\",\n  size = \"md\",\n  className,\n  ...props\n}: SpinnerProps) {\n  return (\n    <span\n      data-slot=\"spinner\"\n      role=\"status\"\n      className={cn(\"inline-flex items-center justify-center text-muted-foreground\", className)}\n      {...props}\n    >\n      <IconLoader2 aria-hidden=\"true\" className={cn(\"animate-spin\", spinnerSizes[size])} />\n      <span className=\"sr-only\">{label}</span>\n    </span>\n  );\n}\n\nexport { Spinner };\n",
      "type": "registry:ui",
      "target": "components/ui/spinner.tsx"
    }
  ]
}
