{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "spinner",
  "type": "registry:ui",
  "title": "Spinner (MIAN)",
  "description": "Indeterminate loading indicators: ring and dots.",
  "categories": [
    "feedback",
    "spinner",
    "loader",
    "loading",
    "busy"
  ],
  "registryDependencies": [
    "https://mian.ro/r/mian-base.json"
  ],
  "files": [
    {
      "path": "mian/components/spinner.css",
      "type": "registry:file",
      "target": "mian/components/spinner.css",
      "content": ".mn-spinner {\n  --_s: 1.25rem;\n  display: inline-block; width: var(--_s); height: var(--_s); flex: none;\n  border: 2px solid color-mix(in oklab, var(--_c, currentColor) 20%, transparent);\n  border-top-color: var(--_c, currentColor);\n  border-radius: 50%; animation: mn-spin .7s linear infinite; vertical-align: middle;\n}\n.mn-spinner-sm { --_s: .9rem; } .mn-spinner-lg { --_s: 2rem; border-width: 3px; }\n.mn-dots { --_d: var(--_c, currentColor); display: inline-flex; gap: .25rem; }\n.mn-dots > span { width: .4rem; height: .4rem; border-radius: 50%; background: var(--_d); animation: mn-bounce 1s var(--mn-ease) infinite; }\n.mn-dots > span:nth-child(2) { animation-delay: .15s; } .mn-dots > span:nth-child(3) { animation-delay: .3s; }\n@keyframes mn-bounce { 0%, 80%, 100% { opacity: .3; transform: translateY(0); } 40% { opacity: 1; transform: translateY(-3px); } }\n@media (prefers-reduced-motion: reduce) { .mn-spinner { animation-duration: 2s; } .mn-dots > span { animation: none; opacity: .6; } }"
    },
    {
      "path": "mian/examples/spinner.html",
      "type": "registry:file",
      "target": "mian/examples/spinner.html",
      "content": "<!-- Ring and dots -->\n<span class=\"mn-spinner mn-spinner-sm\" role=\"status\" aria-label=\"Loading\"></span>\n<span class=\"mn-spinner\" role=\"status\" aria-label=\"Loading\"></span>\n<span class=\"mn-spinner mn-spinner-lg mn-primary\" role=\"status\" aria-label=\"Loading\"></span>\n<span class=\"mn-dots\" role=\"status\" aria-label=\"Typing\"><span></span><span></span><span></span></span>"
    }
  ],
  "docs": "MIAN components are HTML + CSS classes, not React components. The styles are already included in mian-base; this item adds the component's CSS section and example markup for reference. Docs: https://mian.ro/components/spinner",
  "meta": {
    "mian": {
      "license": "LicenseRef-MIAN-1.0",
      "requiresJs": false,
      "classes": [
        "mn-spinner",
        "mn-spinner-sm · mn-spinner-lg",
        "mn-dots"
      ],
      "accessibility": [
        "Give the spinner role=\"status\" and a label, or hide it and mark the loading region aria-busy=\"true\". Motion slows under reduced motion."
      ],
      "intents": [
        "spinner",
        "loading indicator",
        "busy"
      ]
    }
  }
}
