分支切换
回答分支版本切换器「‹ 2/3 ›」:当前从 1 计的页码 + 边界方向钮禁用;count ≤ 1 时容器渲染为空并置 hidden + aria-hidden(单版本无切换语义)。initAiBranch 委托 prev/next 点击:DOM 自动同步页码 / data-index / 边界禁用态(宿主不重渲染也可用,重渲染覆盖亦安全),并派发 icen:ai-branch-change { index, count };按钮为原生 button,键盘走原生 click。
‹ 2/3 ›:边界方向钮禁用 · 切换派发 icen:ai-branch-change(宿主按 index 换分支内容)· count ≤ 1 时自动隐藏
<div id="ai-branch-demo"></div><p class="demo-label" id="ai-branch-log" style="margin-top:8px">‹ 2/3 ›:边界方向钮禁用 · 切换派发 icen:ai-branch-change(宿主按 index 换分支内容)· count ≤ 1 时自动隐藏</p> 安装
bun add @icen.ai/ui pnpm add @icen.ai/ui npm install @icen.ai/ui yarn add @icen.ai/ui 一行引入该组件(CSS 与 behavior 自动带上,无需关心内部 CSS 文件名):
import { initAiBranch } from '@icen.ai/ui/kit/ai-branch';initAiBranch(); 也可以用脚手架直接打印引入行:
bunx --bun @icen.ai/ui add ai-branch
Astro 项目注意:kit 入口里的 CSS import 在页面 <script> 里会被 Astro 的 client bundle 摇掉——请改在布局 frontmatter 里引 CSS(import '@icen.ai/ui/components/ai-chat.css';),JS 行为仍可走 kit。Vite SPA / webpack 项目无此问题。
用法
import { renderAiBranch, initAiBranch } from '@icen.ai/ui/kit/ai-branch'; initAiBranch(); // prev/next 委托(幂等);DOM 自动同步页码与禁用态renderAiBranch(el, { index: 1, count: 3 }); // index 0 起、渲染时钳制到 [0, count-1]// count ≤ 1 时容器清空并 hidden + aria-hidden(单版本无切换语义)el.addEventListener('icen:ai-branch-change', (e) => showBranch(e.detail.index, e.detail.count));