跳到正文
册页

网站

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'