{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "message-actions",
  "type": "registry:ui",
  "title": "Message actions",
  "description": "A row of ghost icon buttons for chat replies: copy, retry, good response and bad response, each with an aria label and callback. Place it under AI messages.",
  "dependencies": [
    "lucide-react"
  ],
  "registryDependencies": [
    "https://ui.minidev.pro/r/icon-button.json",
    "utils"
  ],
  "files": [
    {
      "path": "registry/ui/message-actions.tsx",
      "type": "registry:ui",
      "target": "components/ui/message-actions.tsx",
      "content": "\"use client\"\nimport * as React from \"react\"\nimport { CopyIcon, RefreshCwIcon, ThumbsDownIcon, ThumbsUpIcon } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { IconButton } from \"@/components/ui/icon-button\"\n\nfunction MessageActions({\n  onCopy,\n  onRetry,\n  onGood,\n  onBad,\n  className,\n}: {\n  onCopy?: () => void\n  onRetry?: () => void\n  onGood?: () => void\n  onBad?: () => void\n  className?: string\n}) {\n  return (\n    <div data-slot=\"message-actions\" className={cn(\"flex items-center gap-0.5\", className)}>\n      <IconButton type=\"button\" size=\"icon-sm\" variant=\"ghost\" aria-label=\"Copy\" onClick={onCopy}><CopyIcon /></IconButton>\n      <IconButton type=\"button\" size=\"icon-sm\" variant=\"ghost\" aria-label=\"Retry\" onClick={onRetry}><RefreshCwIcon /></IconButton>\n      <IconButton type=\"button\" size=\"icon-sm\" variant=\"ghost\" aria-label=\"Good response\" onClick={onGood}><ThumbsUpIcon /></IconButton>\n      <IconButton type=\"button\" size=\"icon-sm\" variant=\"ghost\" aria-label=\"Bad response\" onClick={onBad}><ThumbsDownIcon /></IconButton>\n    </div>\n  )\n}\nexport { MessageActions }\n"
    }
  ]
}
