Skip to content

AiBubble 对话气泡

承载对话消息的冒泡显示。

基础用法

可以展示 userassistant 的样式差异,以及加载动画效果!

人工智能(AI)是一种能够执行通常需要人类智能的任务的技术。

那它能自己写代码吗?

基础用法

进阶功能与变体

AiBubble 直接内置了强大的 Markdown 引擎与 highlight.js 代码高亮解析。并提供了丰富的变体 (variant) 与形制 (shape)、以及时间等信息传递的支持。

10:23 AM

这是一段 Markdown 的渲染示例。来看一段代码:

const greeting = 'Hello World';
console.log(greeting);

真棒!可以更换样式吗?

当然可以,这是 outlined 模式。

看起来非常有质感。

如果您不喜欢外轮廓,可以使用 borderless 模式。

进阶组合

打字特效与 60fps 流式渲染防抖

这不仅仅是一个空 loading,它允许文字在一个一个吐出时跟随一个强烈的闪烁光标(类似光标指针的效果),以模仿正在被 AI 书写的感觉。

  • 极致性能 (Streaming Performance):在底层我们引入了 requestAnimationFrame 截流刷新机制。当在 typing 模式下接收大量文本包进行 Markdown 复杂频繁重绘时,不仅能防止引发页面主线程卡死,更能将您的打印机的刷新率恒定在舒适的 60 帧每秒!
打字特效动画

引用来源与幻觉标注 (Citations & Reference Tooltip)

AI 回复的信息通常需要来源支撑以避免模型幻觉。除了底部展示详细的长串被引地址,我们在底层注入了智能学术脚注(Citation)解析器。 当且仅当属性 citations 数组有内容时,若大模型在 Markdown 返回内容中包含 [1][2] 这样的结构:气泡将其自动转义拦截拦截为带有交互光效状态的学术悬浮角标! 💡 试一试: 停留在下方的 [1], [2], [3] 等文字段落上悬浮,观察动态出现带有链接及标题的精细化气泡弹出组件。

根据最新的 YH-UI 指南 1,我们建议在处理 AI 对话时使用组合式 API 2。此外,Vite 的构建优化 3 也能显著提升用户体验。

引用来源

多模态渲染 (Multimodal)

组件支持多种媒体格式的直接展示,包括图片网格、带波形动画的语音播放器以及标准化的文件/下载卡片。

设计稿预览 1
设计稿预览 2

这是我为你生成的语音素材和参考文档。

0:02
YH-UI-Requirement.pdf
1.2 MB
多模态展示

主题定制 (Theme Overrides)

除了全局 CSS 变量外,您还可以通过 theme-overrides 属性对单个气泡进行精细化的外观定制。

我已经根据您的品牌色调整了我的外观。

实例级主题覆盖

API

Props

属性名说明类型默认值
content会话文本string''
markdown开启 Markdown 和代码高亮解析引擎booleantrue
role发送方身份'user' | 'assistant' | 'system''assistant'
placement气泡排列位置'start' | 'end'根据 role 自动推断
shape气泡边角形制'corner' | 'round''corner'
variant气泡视觉变体风格'filled' | 'outlined' | 'shadow' | 'borderless''filled'
time气泡顶部时间标签string
avatar自定义气泡头像地址string
loading是否正在输出booleanfalse
typing显示打字特效动画booleanfalse
citations参考引用列表AiCitation[][]
multimodal多模态内容 (图片、音频、文件等)AiMultimodal[][]
themeOverrides主题变量覆盖ComponentThemeVars

AiCitation

属性名说明类型
id引用索引,对应文本中的标识string | number
title来源标题string
url详细链接string
source来源站点名称string
icon来源图标string

AiMultimodal

属性名说明类型
type媒体类型'image' | 'audio' | 'file' | 'video'
title标题/文件名string
url资源链接string
size文件大小string
extra额外参数(如语音 duration)Record<string, unknown>

Slots

插槽名说明参数
default内容自定义
avatar自定义头像
header自定义头部区域
footer自定义尾部区域

在 Nuxt 中使用

该组件完美支持 Nuxt 3/4。在 Nuxt 项目中,组件会被自动按需导入。

有关详细配置,请阅读 Nuxt 集成文档

主题变量

变量名说明默认值
--yh-ai-bubble-user-bg用户气泡背景色var(--yh-color-primary)
--yh-ai-bubble-user-color用户气泡文字颜色var(--yh-color-white)
--yh-ai-bubble-assistant-bgAI 气泡背景色var(--yh-fill-color-light)
--yh-ai-bubble-assistant-colorAI 气泡文字颜色var(--yh-text-color-primary)
--yh-ai-bubble-border-radius气泡圆角大小12px

Released under the MIT License.