HeroUI Pro

Chat ToolNew

Collapsible tool-call cards for inputs, outputs, errors, approvals, and grouped tool activity.

Usage

Use ChatTool to show tool calls emitted by an agent or assistant.

Streaming

Use streaming state while tool input is still being generated.

Error

Use error state for failed tool calls.

Approval

Use approval state when a tool requires user confirmation.

Grouped

Use ChatToolGroup to group consecutive tool calls.

Composable

Tool cards expose slots for custom trigger and content layouts.

Anatomy

import {ChatTool, ChatToolGroup} from "@heroui-pro/react";

<ChatTool
  input={{query: "HeroUI Pro"}}
  output={{matches: 3}}
  state="output-available"
  toolName="searchDocs"
  triggerPrefix="Used tool: "
/>

<ChatTool state="output-available" toolName="searchDocs">
  <ChatTool.Trigger>
    <ChatTool.StatusIcon />
    Used tool: <strong>searchDocs</strong>
  </ChatTool.Trigger>
  <ChatTool.Content>
    <ChatTool.Args input={{query: "HeroUI Pro"}} label="Input" />
    <ChatTool.Result label="Result" value={{matches: 3}} />
  </ChatTool.Content>
</ChatTool>

CSS Classes

  • .chat-tool - Tool card root
  • .chat-tool__trigger - Collapsible trigger
  • .chat-tool__content - Disclosure content panel
  • .chat-tool__args - Tool input content
  • .chat-tool__result - Tool output content
  • .chat-tool__error - Tool error content
  • .chat-tool-group - Grouped tool root

API Reference

ChatTool

PropTypeDefaultDescription
toolNamestring-Tool display name
state'input-streaming' | 'input-available' | 'output-available' | 'output-error' | 'requires-action'-Tool state
triggerPrefixReactNode-Optional label rendered before toolName in preset mode
inputunknown-Tool input rendered as JSON in preset mode
outputunknown-Tool output rendered as JSON in preset mode
argsTextstring-Preformatted tool input text, useful while streaming partial JSON
errorTextstring-Error details rendered for output-error state
onApprove() => void-Called by the preset approval action in requires-action state
onReject() => void-Called by the preset rejection action in requires-action state
defaultExpandedboolean-Open by default
isExpandedboolean-Controlled expanded state

ChatTool.Trigger

Renders the collapsible tool trigger.

ChatTool.Content

Renders the expanded tool body.

ChatTool.Args, Result, Error, Approval

Semantic slots for tool input, output, error details, and approval controls.

ChatToolGroup

Groups multiple ChatTool items. Extends HeroUI Disclosure props.

On this page