{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "thinking-dots",
  "title": "Thinking Dots",
  "description": "A minimal typing indicator — bouncing dots or a sliding bar.",
  "files": [
    {
      "path": "components/spectrumui/blocks/ai-assistants/thinking-dots.tsx",
      "content": "'use client';\n\nimport { cn } from '@/lib/utils';\n\nconst KEYFRAMES = `\n@keyframes su-dot { 0%, 60%, 100% { opacity: 0.25; transform: translateY(0) } 30% { opacity: 1; transform: translateY(-2px) } }\n@keyframes su-bar-slide { 0% { transform: translateX(-100%) } 100% { transform: translateX(400%) } }\n`;\n\nexport type ThinkingDotsVariant = 'Dots' | 'Bar';\n\nexport interface ThinkingDotsProps {\n  label?: string;\n  variant?: ThinkingDotsVariant;\n  className?: string;\n}\n\nexport function ThinkingDots({\n  label = 'Assistant is thinking',\n  variant = 'Dots',\n  className,\n}: ThinkingDotsProps) {\n  return (\n    <div\n      role=\"status\"\n      aria-label={label}\n      className={cn(\n        'flex w-fit items-center gap-2.5 text-neutral-500 dark:text-neutral-400',\n        className,\n      )}\n    >\n      <style dangerouslySetInnerHTML={{ __html: KEYFRAMES }} />\n\n      {variant === 'Dots' ? (\n        <span aria-hidden className=\"flex items-center gap-1\">\n          {[0, 1, 2].map((index) => (\n            <span\n              key={index}\n              className=\"size-1.5 rounded-full bg-current motion-reduce:!animate-none\"\n              style={{ animation: `su-dot 1.2s ease-in-out ${index * 160}ms infinite` }}\n            />\n          ))}\n        </span>\n      ) : (\n        <span\n          aria-hidden\n          className=\"relative h-1 w-10 overflow-hidden rounded-full bg-black/[0.07] dark:bg-white/[0.09]\"\n        >\n          <span\n            className=\"absolute inset-y-0 w-1/4 rounded-full bg-current motion-reduce:!animate-none\"\n            style={{ animation: 'su-bar-slide 1.1s ease-in-out infinite' }}\n          />\n        </span>\n      )}\n\n      <span className=\"text-[12.5px]\">{label}</span>\n    </div>\n  );\n}\n\nexport default ThinkingDots;\n",
      "type": "registry:block",
      "target": "components/spectrumui/blocks/ai-assistants/thinking-dots.tsx"
    }
  ],
  "type": "registry:block"
}
