{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "spinner",
  "title": "spinner",
  "description": "A spinning ring for work in progress, with role status. size sm, md or lg; tone current, muted or accent. Button's pending prop shows it.",
  "dependencies": [
    "class-variance-authority@^0.7"
  ],
  "registryDependencies": [
    "@dwellir/dwellir-theme",
    "@dwellir/utils",
    "@dwellir/rune-icons"
  ],
  "files": [
    {
      "path": "components/ui/spinner.tsx",
      "content": "import { cva, type VariantProps } from 'class-variance-authority';\nimport type { ComponentProps } from 'react';\nimport { RuneLoader } from '@/components/brand/rune-icons';\nimport { cn } from '@/lib/utils';\n\n/*\n * A spinning ring for work in progress. It takes the text colour of its parent\n * unless a tone sets one. A null size leaves the size to the parent, as a\n * Button's icon rule does for its pending spinner.\n */\nconst spinnerVariants = cva('shrink-0 animate-spin', {\n  variants: {\n    size: {\n      sm: 'size-3',\n      md: 'size-4',\n      lg: 'size-6',\n    },\n    tone: {\n      current: '',\n      muted: 'text-muted-foreground',\n      accent: 'text-accent-ink',\n    },\n  },\n  defaultVariants: { size: 'md', tone: 'current' },\n});\n\nfunction Spinner({\n  className,\n  size,\n  tone,\n  ...props\n}: ComponentProps<'svg'> & VariantProps<typeof spinnerVariants>) {\n  return (\n    <RuneLoader\n      size={24}\n      role=\"status\"\n      aria-label=\"Loading\"\n      // The rune is decorative by default; the spinner is a status unless a caller hides it.\n      aria-hidden={false}\n      data-slot=\"spinner\"\n      className={cn(spinnerVariants({ size, tone }), className)}\n      {...props}\n    />\n  );\n}\n\nexport { Spinner, spinnerVariants };\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}