{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "speech-bubble",
  "type": "registry:ui",
  "description": "Speech bubble component",
  "files": [
    {
      "path": "registry/default/ui/speech-bubble.tsx",
      "content": "\"use client\"\n\nimport { cn } from \"@/lib/utils\"\n\ninterface SpeechBubbleProps {\n  children: React.ReactNode\n  className?: string\n  showCursor?: boolean\n}\n\nfunction SpeechBubbleRoot({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"speech-bubble\"\n      className={cn(\"mr-12\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SpeechBubbleBody({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"speech-bubble-body\"\n      className={cn(\n        \"relative flex w-fit items-center rounded-full bg-foreground px-6 py-6 text-background transition-colors lg:px-10 lg:py-5\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SpeechBubbleTail({\n  className,\n  ...props\n}: React.ComponentProps<\"svg\">) {\n  return (\n    <svg\n      data-slot=\"speech-bubble-tail\"\n      aria-hidden=\"true\"\n      className={cn(\n        \"absolute right-[-17px] bottom-0 h-6 -rotate-5 transition-colors md:right-[-7px] md:h-auto lg:right-[-9px]\",\n        className\n      )}\n      fill=\"none\"\n      focusable=\"false\"\n      height=\"45\"\n      viewBox=\"0 0 53 45\"\n      width=\"53\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      {...props}\n    >\n      <path\n        className=\"fill-foreground transition-colors\"\n        d=\"M44 0H0V0C0 24.8528 20.1472 45 45 45H53V45C47.1396 36.535 44 26.4842 44 16.1886V0Z\"\n      />\n    </svg>\n  )\n}\n\nfunction SpeechBubbleText({ className, ...props }: React.ComponentProps<\"h1\">) {\n  return (\n    <h1\n      data-slot=\"speech-bubble-text\"\n      className={cn(\n        \"relative text-balance font-semibold text-background text-base leading-[0.9] tracking-[-0.06em] md:text-2xl lg:text-[2rem]\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SpeechBubbleCursor({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"speech-bubble-cursor\"\n      className={cn(\n        \"relative ml-2 hidden h-6 w-4 animate-pulse bg-muted-foreground md:block\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SpeechBubble({\n  children,\n  className,\n  showCursor = true,\n}: SpeechBubbleProps) {\n  return (\n    <SpeechBubbleRoot className={className}>\n      <SpeechBubbleBody>\n        <SpeechBubbleTail />\n        <SpeechBubbleText>{children}</SpeechBubbleText>\n        {showCursor ? <SpeechBubbleCursor /> : null}\n      </SpeechBubbleBody>\n    </SpeechBubbleRoot>\n  )\n}\n\nexport {\n  SpeechBubble,\n  SpeechBubbleRoot,\n  SpeechBubbleBody,\n  SpeechBubbleTail,\n  SpeechBubbleText,\n  SpeechBubbleCursor,\n}\n",
      "type": "registry:ui"
    }
  ]
}