UI Design System
build dev

Composer

输入提示词、附件和发送操作。中文惯用名:输入区。
稳定本期新增已接入

元信息

字段值
规范 IDcomponent.composer
名称Composer
二级分类AI 与会话(ai-chat)
用途输入提示词、附件和发送操作
描述中文惯用名:输入区。

预览

静态结构:列 = 附件区(Attachment,attachments 非空时渲染,onRemoveAttachment / onRetryAttachment 透出)+ 输入区(ChatInput:自适应高度、Enter 发送 / Shift+Enter 换行 / IME 保护、非受控发送后自动清空);loading 禁用发送。

DSL 结构

DslNode
{
  "type": "Composer",
  "props": {
    "value": "${state.draft}",
    "placeholder": "输入消息,Enter 发送",
    "rows": 3
  },
  "events": {
    "onChange": {
      "action": "setState",
      "params": {
        "draft": "${event}"
      }
    },
    "onSubmit": {
      "action": "setState",
      "params": {
        "draft": ""
      }
    }
  }
}

何时用

何时使用

  • 输入提示词、附件和发送操作:会话输入区。

何时不用

  • 只要输入框结构(自定义工具栏槽):使用 ChatInput。
  • 完整会话产品输入(transport / 提及):使用 @pactor-app/chat 的 Composer。

变体

变体视觉形态适用场景
纯输入ChatInput常规提问
带附件附件 chips + 输入带上下文文件提问

API 属性

属性类型默认值说明
valuestring—受控值
placeholderstring—占位提示
disabled / loadingbooleanfalse禁用 / 发送中(禁用发送)
rowsnumber3最小行数
attachmentsAttachmentItemData[][]附件列表
onRemoveAttachment / onRetryAttachmentevent—附件移除 / 重试,传出 id / 下标
onChangeevent—输入事件,传出 string
onSubmitevent—发送事件,传出当前文本(${event})
className / stylestring / CSSProperties—通用:根节点 class 合并 / 内联样式

使用规范

  • 附件的上传与存储由调用方负责,组件只呈现与上报事件。

正例

  • ✓ 最小会话页:MessageList + Composer,onSubmit 接入数据源发送。

反例

  • ✕ 在 Composer 里塞业务提交逻辑(应走 service / action)。

Design Token 映射

不适用:组件 tokenRefs 为空:样式 Token 数据尚未接入,三层映射(Primitive → Semantic → Component)待样式 Token 接入后回填。