{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "message",
  "registryDependencies": [
    "utils"
  ],
  "files": [
    {
      "path": "src/registry/ui/message.tsx",
      "content": "import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type MessageRole = \"user\" | \"assistant\";\n\nexport function Message({\n  role = \"assistant\",\n  label,\n  className,\n  children,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  role?: MessageRole;\n  /** Spoken before the message so screen readers know the speaker. Pass false to omit. */\n  label?: string | false;\n}) {\n  const speaker = label ?? (role === \"user\" ? \"You said:\" : \"Assistant said:\");\n  return (\n    <div\n      data-role={role}\n      className={cn(\n        \"group flex w-full gap-3\",\n        role === \"user\" && \"justify-end\",\n        className,\n      )}\n      {...props}\n    >\n      {speaker && <span className=\"sr-only\">{speaker}</span>}\n      {children}\n    </div>\n  );\n}\n\nexport function MessageContent({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      className={cn(\n        \"min-w-0 text-[15px] leading-relaxed\",\n        \"group-data-[role=assistant]:max-w-[44rem] group-data-[role=assistant]:flex-1\",\n        \"group-data-[role=user]:max-w-[85%] group-data-[role=user]:rounded group-data-[role=user]:bg-muted group-data-[role=user]:px-4 group-data-[role=user]:py-2.5\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport function MessageActions({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      className={cn(\n        \"mt-1 flex items-center gap-0.5 transition-opacity [@media(hover:hover)]:opacity-0 group-hover:opacity-100 focus-within:opacity-100\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}