跳到正文
册页

网站

Conversation - 对话界面

对话记录、回答、引用、输入区与悬浮聊天界面。

用法

什么时候用它

构建本地化助手界面,流式响应、历史记录和服务请求由应用管理。

来自@misoto22/folio/website

TSX
import { ConversationLayout } from '@misoto22/folio/website'

说明

适合阅读的对话区域,配有独立且可吸附的证据栏。

实践建议

推荐

  • 提供本地化标签、含义明确的链接和有用的图片替代文本。

避免

  • 不要在展示组件中放入服务凭据、路由逻辑或后端模型。

示例

本地对话示例

应用管理问题和已渲染的回答节点,组件负责它们的阅读顺序。这个本地示例只记录问题,不会调用助手服务。

Explore the library

Try a question to preview the conversation layout.

Start with

组成部分

在调用处组合,而不是通过 props 配置——所以这个组件没有预料到的布局,依然表达得出来。

ConversationFacts

ConversationFacts props
属性类型默认值说明
items必填DescriptionListItem[]—

同时接受 HTMLAttributes<HTMLDListElement> 里的全部属性,它们会直接透传给底层元素,不再逐条列出。

ConversationSuggestions

ConversationSuggestions props
属性类型默认值说明
items必填ConversationSuggestion[]—
label必填string—

同时接受 HTMLAttributes<HTMLDivElement> 里的全部属性,它们会直接透传给底层元素,不再逐条列出。

ConversationThread

应用管理对话轮次和折叠状态;组件负责内容层级及操作控件。

ConversationThread props
属性类型默认值说明
composer必填ReactNode—
hasTurns必填boolean—
label必填string—
controlsConversationControl[][]—
intro{ title: ReactNode; description: ReactNode; suggestionsLabel: string; suggestions: ConversationSuggestion[] }—
proposalReactNode—
summaryReactNode—

同时接受 HTMLAttributes<HTMLElement> 里的全部属性,它们会直接透传给底层元素,不再逐条列出。

ConversationLog

ConversationLog props
属性类型默认值说明
compactboolean—

同时接受 HTMLAttributes<HTMLDivElement> 里的全部属性,它们会直接透传给底层元素,不再逐条列出。

QuestionComposer

具名受控输入区。请求限制与发送仍由应用负责。

QuestionComposer props
属性类型默认值说明
id必填string—
label必填string—
onSubmit必填() => void—
onValueChange必填(value: string) => void—
submitLabel必填string—
value必填string—
actionsReactNode—
compactboolean—
counterReactNode—
disabledboolean—
hideHintboolean—
hideLabelboolean—
hintReactNode—
inputRefRef<HTMLInputElement>—
maxLengthnumber—
pendingboolean—
placeholderstring—
submitDisabledboolean—

同时接受 Omit<HTMLAttributes<HTMLFormElement>, 'onSubmit'> 里的全部属性,它们会直接透传给底层元素,不再逐条列出。

ConversationTurn

ConversationTurn props
属性类型默认值说明
bodyId必填string—
expanded必填boolean—
onToggle必填() => void—
title必填ReactNode—
metadataReactNode—
previewReactNode—

同时接受 Omit<HTMLAttributes<HTMLElement>, 'title'> 里的全部属性,它们会直接透传给底层元素,不再逐条列出。

ConversationQuote

ConversationQuote props
属性类型默认值说明
label必填string—
compactboolean—

同时接受 HTMLAttributes<HTMLElement> 里的全部属性,它们会直接透传给底层元素,不再逐条列出。

ConversationAnswer

ConversationAnswer props
属性类型默认值说明
question必填ReactNode—
questionLabel必填string—
quoteReactNode—

同时接受 HTMLAttributes<HTMLDivElement> 里的全部属性,它们会直接透传给底层元素,不再逐条列出。

ConversationProse

接收应用经过净化的回答解析器所生成的可信 React 节点,不接收模型原始 HTML。

这个组件没有自己的属性。

ConversationAnswerHeading

模型生成的标题作为正文标签展示,不改变页面标题层级。

这个组件没有自己的属性。

StreamingCaret

这个组件没有自己的属性。

ConversationSources

ConversationSources props
属性类型默认值说明
count必填ReactNode—
items必填ConversationSource[]—
label必填string—

同时接受 HTMLAttributes<HTMLDivElement> 里的全部属性,它们会直接透传给底层元素,不再逐条列出。

ActionProposal

ActionProposal props
属性类型默认值说明
approveLabel必填string—
destination必填ReactNode—
dismissLabel必填string—
label必填string—
onApprove必填() => void—
onDismiss必填() => void—
approvalAttributesRecord<`data-${string}`, string>—
detailReactNode—

同时接受 HTMLAttributes<HTMLDivElement> 里的全部属性,它们会直接透传给底层元素,不再逐条列出。

ConversationLauncher

ConversationLauncher props
属性类型默认值说明
visible必填boolean—
buttonRefRef<HTMLButtonElement>—

同时接受 ButtonHTMLAttributes<HTMLButtonElement> 里的全部属性,它们会直接透传给底层元素,不再逐条列出。

ConversationDock

应用提供位置、关闭行为和流式状态,悬浮面板负责展示。

ConversationDock props
属性类型默认值说明
card必填boolean—
closeLabel必填string—
composer必填ReactNode—
corner必填ConversationDockCorner—
label必填string—
onClose必填() => void—
open必填boolean—
roomLink必填ReactElement—
draggingboolean—
handlesReactNode—
logRefRef<HTMLDivElement>—
movingboolean—
noticeReactNode—
onHeaderPointerDown(event: PointerEvent<HTMLElement>) => void—
panelRefRef<HTMLElement>—
proposalReactNode—

同时接受 HTMLAttributes<HTMLElement> 里的全部属性,它们会直接透传给底层元素,不再逐条列出。

ConversationDockWelcome

ConversationDockWelcome props
属性类型默认值说明
lead必填ReactNode—
suggestions必填ConversationSuggestion[]—
suggestionsLabel必填string—

同时接受 HTMLAttributes<HTMLDivElement> 里的全部属性,它们会直接透传给底层元素,不再逐条列出。

ConversationResizeHandle

为应用的指针缩放控制器提供对应的键盘操作。

ConversationResizeHandle props
属性类型默认值说明
axis必填'size-vertical' | 'size-horizontal'—
dragging必填boolean—
label必填string—
onNudge必填(axis: 'size-vertical' | 'size-horizontal', delta: number) => void—
onStart必填(axis: 'size-vertical' | 'size-horizontal', event: PointerEvent<HTMLElement>) => void—
side必填'top' | 'bottom' | 'left' | 'right'—

SelectionToolbar

文本选择操作使用真实工具栏的单一 Tab 焦点入口与方向键导航。

SelectionToolbar props
属性类型默认值说明
actions必填SelectionToolbarAction[]—
floating必填boolean—
label必填string—
styleCSSProperties—
toolbarRefRef<HTMLDivElement>—

同时接受 HTMLAttributes<HTMLDivElement> 里的全部属性,它们会直接透传给底层元素,不再逐条列出。

ConversationRoomLink

路由链接在标准操作样式内保留自己的目的地和行为。

这个组件没有自己的属性。

类型

TSX
export type ConversationDockCorner = 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right'