基于 assistant-ui 的
React 聊天 UI 组件库

开箱即用 · 可组合 · TypeScript 友好
一行 <Thread /> 即可渲染完整聊天界面

aui-components 基于 assistant-ui 的 React 聊天 UI 组件库 banner

开箱即用的核心功能

覆盖聊天界面所需的完整交互能力,预配置、可组合、可覆盖

Thread

主聊天线程组件,预组装消息列表、输入框、滚动控制,一行代码渲染完整界面

MarkdownText

富文本渲染引擎,支持 GFM 语法与 KaTeX 数学公式,代码块自动高亮

Reasoning

思维链展示组件,支持流式输出、折叠展开,呈现 AI 推理过程

ToolGroup

工具调用分组容器,统一管理工具调用 UI 与通用回退渲染

Image / Attachment

图片消息渲染与附件上传展示,支持拖拽上传与预览

FollowupSuggestions

对话追问建议组件,在消息底部展示后续问题引导

设计理念

在 assistant-ui primitives 之上提供预配置、可组合的组件层

复合组件模式

复杂组件采用 Compound Components 模式,子组件作为静态属性挂载在父组件上,既可预设组合,也可自由拆解。

<Reasoning.Root streaming>
  <Reasoning.Trigger active />
  <Reasoning.Content>
    <Reasoning.Text>思考过程...</Reasoning.Text>
  </Reasoning.Content>
</Reasoning.Root>

CVA 视觉变体

通过 class-variance-authority 提供一致的视觉变体系统,variant 与 size 统一管理,覆盖全组件。

// variant: "outline" | "ghost" | "muted"
// size: "sm" | "default" | "lg" | "full"
<Image src="..." variant="outline" size="lg" />

Tailwind CSS v4 + data-slot

样式完全基于 Tailwind CSS v4,使用 data-slot 属性作为样式钩子,无样式冲突,方便自定义覆盖。

/* 通过 data-slot 精准覆盖样式 */
[data-slot="message-text"] {
  font-size: 0.95rem;
  line-height: 1.6;
}

完整 TypeScript 类型

所有组件提供完整类型定义,Props 自动推导,泛型组件支持运行时类型校验,开发体验友好。

type ThreadProps = {
  components?: ThreadComponents;
  isHistoryThread?: boolean;
  isHistoryThreadLoaded?: boolean;
};