Agent Loading States
通过进度、推理和微光显示传达助手工作仍在进行。
适用场景
- 当界面需要以下行为时使用 Agent Loading States:通过进度、推理和微光显示传达助手工作仍在进行。
安装
选择安装方式,用法示例将同步更新导入路径。
$ bunx --bun shadcn-vue@2.8.2 add https://orvui.efu.me/r/loading-states.json https://orvui.efu.me/r/reasoning-text.json https://orvui.efu.me/r/thinking-shimmer.json https://orvui.efu.me/r/agent-progress.json
首次使用时,将安装的 src/components/orvui/styles.css 导入项目样式入口。
示例
Reasoning Text
reasoning-text.vue呈现持续变化的推理文字,并明确表示工作尚未结束。
CascadeThinking
SwapThinking
ScrambleThinking
packages/vue/src/agents/loading-states/examples/reasoning-text.vue
<script setup lang="ts">
import { ReasoningText, type ReasoningTextVariant } from "@/components/orvui/agents/loading-states";
const ordinary = [
"Thinking",
"Reading the request",
"Working through the details",
"Preparing the answer",
];
const examples = (
["cascade", "swap", "scramble"] as ReasoningTextVariant[]
).map((variant) => ({
variant,
label: variant[0].toUpperCase() + variant.slice(1),
phrases:
variant === "scramble"
? ["Thinking", "Searching", "Reasoning", "Composing"]
: ordinary,
}));
</script>
<template>
<div class="grid w-full max-w-sm gap-7">
<div v-for="example in examples" :key="example.variant" class="grid gap-2">
<span
class="text-[11px] font-medium uppercase tracking-wider text-muted-foreground/60"
>{{ example.label }}</span
><ReasoningText
:variant="example.variant"
:phrases="example.phrases"
class="text-base"
/>
</div>
</div>
</template>
packages/vue/src/agents/loading-states/src/ReasoningText.vue
Thinking Shimmer
thinking-shimmer.vue在移动文字高光下保持可读的等待标签。
Thinking…
packages/vue/src/agents/loading-states/examples/thinking-shimmer.vue
<script setup lang="ts">
import { ThinkingShimmer } from "@/components/orvui/agents/loading-states";
const duration = 1.8;
</script>
<template>
<ThinkingShimmer class="text-lg" :duration="duration"
>Thinking…</ThinkingShimmer
>
</template>
packages/vue/src/agents/loading-states/src/ThinkingShimmer.vue
Agent Progress
agent-progress.vue将进度指示器与描述当前阶段的标签组合。
Churning
packages/vue/src/agents/loading-states/examples/agent-progress.vue
<script setup lang="ts">
import { AgentProgress } from "@/components/orvui/agents/loading-states";
const initial = 151.6;
</script>
<template>
<AgentProgress
label="Churning"
:initial-seconds="initial"
class="text-base"
/>
</template>
packages/vue/src/agents/loading-states/src/AgentProgress.vue
组合结构
使用公开部件 AgentProgress, ReasoningText, ThinkingShimmer 组合 Agent Loading States,并从该组件的公开入口导入。
Message
└── MessageContent
├── ThinkingShimmer
├── AgentProgress
└── ReasoningText说明: Agent Activity 将持续变化的助手活动组织为可展开步骤与完成摘要。 Todo List 展示带展开详情和明确任务状态的工作条目序列。 Streaming Response 组合持续变化的助手回复,包括文字、附件、引用和操作。
工作方式
通过进度、推理和微光显示传达助手工作仍在进行。
状态与事件
此示例组合没有声明成对的受控属性与 update 事件。使用已列出的属性、原生事件和插槽组合内容;不要为它添加未公开的 v-model。
API 参考
Reasoning Text
ReasoningText
phrases?string[]() => [
"Thinking",
"Reading the context",
"Connecting the details",
"Forming a response",
]variant?"cascade" | "scramble" | "swap""cascade"interval?number1800shimmerDuration?number2.2indicator?boolean | null | string | number | void | VNode<RendererNode, RendererElement, { [key: string]: any; }> | VNodeArrayChildren | ComponentOptions<any, any, any, ComputedOptions, MethodOptions, any, any, any, string, {}, {}, string, {}, {}, {}, string, ComponentProvideOptions> | FunctionalComponent<any, {}, any, {}> | ComponentPublicInstanceConstructor<any, any, any, any, ComputedOptions, MethodOptions>undefined插槽
indicator() => VNodeChild#indicatorThinkingShimmer
duration?number1.8插槽
default() => VNodeChild#defaultThinking Shimmer
duration?number1.8插槽
default() => VNodeChild#defaultAgent Progress
label?string"Churning"elapsedSeconds?numberinternal.valueinitialSeconds?number0running?booleantrue无障碍
为交互控件提供明确的无障碍名称。保留文档中的键盘路径、可见焦点与减少动态效果状态;自定义插槽应继续保留所替代部件的语义。
常见问题
- 如何配置 Agent Loading States?
- 通过 label、elapsedSeconds、initialSeconds、running 配置 Agent Loading States;API 表列出其类型与默认值。
- 如何连接到应用状态?
- 通过文档中的组合方式提供内容,应用副作用由调用方管理。
- 可以在服务端渲染吗?
- 可以在 Vue SSR 应用中正常渲染。服务端与客户端的初始 props 应保持一致;浏览器测量与交互资源在挂载后启动。
更新于
来源与许可 ↗MIT · 0.1.1