Prompts

一列可点选的 AI 快捷提示卡片:图标 + 标题 + 描述,支持子提示(父项下方的紧凑标签)、列数栅格、禁用、加载骨架与空态,点选经 OnPrompt 回传命中项。

最后更新

说明

面向 AI 助手起手建议与追问引导的提示集组件,纯展示、不依赖任何浏览器 API。Items 为 PromptItem 列表(Key / Icon / Title / Description / Disabled / Children),其中标题与描述视为业务内容、直接展示不本地化,图标名为 Icon Type 也不本地化。每项渲染为一张卡片(左侧 Icon、主文本 Title、可选 Description);带 Children 时在卡片下方再排一串紧凑标签,形成两级引导。点父卡片或任一子标签都经 OnPrompt 回传对应的 PromptItem,宿主据此把提问送进会话(常与 Bubble 配合)。Columns 控制栅格:默认 0 按容器宽度自适应,设为 1 即纵向列表,设为 N 即固定 N 列。Title(作为翻译键)给出提示区标题,Loading 显示骨架卡片,无数据时显示 EmptyText(默认“暂无提示”,作为翻译键),Disabled 项不可点选。所有外观通过 CSS 令牌接入框架明暗主题;组件自身不修改数据,宿主在回调里更新 Items 即可。

常见能力:

  • 图标 + 标题 + 描述的提示卡片,父项下方可挂子提示标签(两级引导)
  • OnPrompt 回传命中的 PromptItem(父项或子项均可点),常与 Bubble 衔接会话
  • Columns:0 自适应 / 1 单列列表 / N 固定 N 列栅格
  • Disabled 禁用项不可点,Loading 显示骨架卡片,无数据显示 EmptyText 空态
  • Title 提示区标题(走词条),提示文本视为业务内容不本地化
  • 纯展示、无 JS 互操作、受控数据,明暗主题随 CSS 令牌自动适配

用法

<Prompts Title="起手建议" Items="@_items" Columns="0"
          Loading="@_loading" OnPrompt="Ask" />

@code {
    List<PromptItem> _items = new()
    {
        new("帮我设计一个数据模型", "database")
        {
            Description = "从一句话需求生成实体与字段",
            Children = new List<PromptItem> { new("订单:客户+金额", "hash"), new("客户:名称+电话", "id-card") },
        },
        new("解答框架用法", "book-open") { Description = "组件参数、i18n、主题令牌" },
    };
    void Ask(PromptItem p) => _draft = p.Title; // 送入会话
}

API 参数

参数 类型 默认值 说明
Columns int 0 栅格列数。默认 0 = 按容器宽度自适应;设为 1 即纵向列表,设为 N 即固定 N 列。
EmptyText string "暂无提示" 空态文本(作为翻译键)。
Items List<PromptItem> null 提示项数据。其中标题 / 描述视为业务内容、直接展示不本地化。
Loading bool false 加载态:显示骨架卡片。
OnPrompt EventCallback<PromptItem> — 事件 点击某条提示(父项或子项)的回调,回传命中的提示项。
Title string null 提示区标题(作为翻译键)。留空则不显示标题行。
Visible bool true 取得或设置组件是否可见,默认为false。
VisibleChanged EventCallback<bool> — 事件 取得或设置组件可见性变化时的回调事件。
Class string null 取得或设置组件的CSS类名,用于自定义样式。
Disabled bool false 取得或设置组件是否禁用,默认为false。
Style string null 取得或设置组件的内联样式,用于自定义样式。

所有组件均继承 BaseComponent,除上表参数外还支持 Class、Style、Disabled、Visible。

微信公众号二维码 扫码关注公众号
QQ 交流群二维码 扫码加入 QQ 群