{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "pulsating-dots",
  "dependencies": ["motion"],
  "files": [
    {
      "path": "registry/components/loading-ui/pulsating-dots.tsx",
      "content": "\"use client\";\n\nimport { motion } from \"motion/react\";\nimport { cn } from \"@/lib/utils\";\n\nfunction PulsatingDots({\n  className,\n  dots = 3,\n  duration = 1,\n  ...props\n}: React.ComponentProps<\"span\"> & { dots?: number; duration?: number }) {\n  const dotCount = Number.isFinite(dots) ? Math.max(1, Math.floor(dots)) : 3;\n\n  return (\n    <span\n      role=\"status\"\n      className={cn(\"inline-flex items-center justify-center\", className)}\n      {...props}\n    >\n      <span aria-hidden=\"true\" className=\"inline-flex w-full gap-[16%]\">\n        {Array.from({ length: dotCount }, (_, index) => (\n          <motion.span\n            key={index}\n            className=\"inline-block aspect-square grow rounded-full bg-current\"\n            animate={{\n              scale: [1, 1.5, 1],\n              opacity: [0.5, 1, 0.5],\n            }}\n            transition={{\n              duration,\n              ease: \"easeInOut\",\n              repeat: Infinity,\n              delay: index * 0.3,\n            }}\n          />\n        ))}\n      </span>\n      <span className=\"sr-only\">Loading</span>\n    </span>\n  );\n}\n\nexport { PulsatingDots };\n",
      "type": "registry:component",
      "target": ""
    }
  ],
  "type": "registry:component"
}
