@icen.ai/ui 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +138 -80
- package/README.md +66 -91
- package/dist/base.css +208 -179
- package/dist/behaviors/accordion.mjs +8 -8
- package/dist/behaviors/ai-branch.d.mts +1 -1
- package/dist/behaviors/ai-branch.mjs +1010 -94
- package/dist/behaviors/ai-chat.d.mts +7 -7
- package/dist/behaviors/ai-chat.mjs +1071 -161
- package/dist/behaviors/ai-composer.d.mts +44 -12
- package/dist/behaviors/ai-composer.mjs +1997 -524
- package/dist/behaviors/ai-core.d.mts +1 -1
- package/dist/behaviors/ai-core.mjs +1016 -107
- package/dist/behaviors/ai-diff.mjs +1019 -127
- package/dist/behaviors/ai-feedback.d.mts +1 -1
- package/dist/behaviors/ai-feedback.mjs +1035 -126
- package/dist/behaviors/ai-panel.d.mts +8 -8
- package/dist/behaviors/ai-panel.mjs +1284 -266
- package/dist/behaviors/ai-provider.mjs +1003 -101
- package/dist/behaviors/ai-threads.d.mts +1 -1
- package/dist/behaviors/ai-threads.mjs +1068 -154
- package/dist/behaviors/ai-tool.d.mts +2 -2
- package/dist/behaviors/ai-tool.mjs +2037 -396
- package/dist/behaviors/ai-tools.d.mts +89 -16
- package/dist/behaviors/ai-tools.mjs +4448 -372
- package/dist/behaviors/autocomplete.d.mts +53 -0
- package/dist/behaviors/autocomplete.mjs +1600 -0
- package/dist/behaviors/back-top.d.mts +1 -1
- package/dist/behaviors/back-top.mjs +951 -14
- package/dist/behaviors/carousel.d.mts +1 -1
- package/dist/behaviors/carousel.mjs +906 -11
- package/dist/behaviors/cascader.d.mts +48 -0
- package/dist/behaviors/cascader.mjs +1853 -0
- package/dist/behaviors/charts.d.mts +72 -8
- package/dist/behaviors/charts.mjs +1901 -256
- package/dist/behaviors/code-block.d.mts +36 -0
- package/dist/behaviors/code-block.mjs +1611 -0
- package/dist/behaviors/command-palette.d.mts +9 -6
- package/dist/behaviors/command-palette.mjs +161 -59
- package/dist/behaviors/context-menu.d.mts +9 -8
- package/dist/behaviors/context-menu.mjs +1112 -44
- package/dist/behaviors/controls.d.mts +13 -13
- package/dist/behaviors/controls.mjs +989 -130
- package/dist/behaviors/copy.d.mts +21 -2
- package/dist/behaviors/copy.mjs +1206 -42
- package/dist/behaviors/datatable.d.mts +53 -3
- package/dist/behaviors/datatable.mjs +1963 -207
- package/dist/behaviors/date-picker.d.mts +0 -1
- package/dist/behaviors/date-picker.mjs +1340 -293
- package/dist/behaviors/design.d.mts +54 -0
- package/dist/behaviors/design.mjs +109 -0
- package/dist/behaviors/dropdown.d.mts +5 -6
- package/dist/behaviors/dropdown.mjs +262 -110
- package/dist/behaviors/events.d.mts +120 -3
- package/dist/behaviors/events.mjs +47 -2
- package/dist/behaviors/feedback.d.mts +30 -0
- package/dist/behaviors/feedback.mjs +296 -0
- package/dist/behaviors/focus.d.mts +8 -0
- package/dist/behaviors/focus.mjs +24 -0
- package/dist/behaviors/form-validate.d.mts +102 -0
- package/dist/behaviors/form-validate.mjs +6091 -0
- package/dist/behaviors/i18n.d.mts +789 -0
- package/dist/behaviors/i18n.mjs +1711 -0
- package/dist/behaviors/icons.d.mts +93 -0
- package/dist/behaviors/icons.mjs +113 -0
- package/dist/behaviors/input.d.mts +9 -1
- package/dist/behaviors/input.mjs +1056 -60
- package/dist/behaviors/kb-access.d.mts +1 -1
- package/dist/behaviors/kb-access.mjs +2129 -239
- package/dist/behaviors/kb-acl.d.mts +6 -6
- package/dist/behaviors/kb-acl.mjs +1119 -179
- package/dist/behaviors/kb-answer.mjs +2070 -418
- package/dist/behaviors/kb-audit.d.mts +1 -1
- package/dist/behaviors/kb-audit.mjs +1076 -154
- package/dist/behaviors/kb-canvas.mjs +1100 -177
- package/dist/behaviors/kb-chain.mjs +1022 -100
- package/dist/behaviors/kb-checkpoint.d.mts +1 -1
- package/dist/behaviors/kb-checkpoint.mjs +1319 -169
- package/dist/behaviors/kb-chunks.mjs +1152 -213
- package/dist/behaviors/kb-citation.d.mts +1 -1
- package/dist/behaviors/kb-citation.mjs +1201 -179
- package/dist/behaviors/kb-clarify.mjs +1058 -130
- package/dist/behaviors/kb-conflict.mjs +1041 -119
- package/dist/behaviors/kb-connector.mjs +1104 -176
- package/dist/behaviors/kb-core.d.mts +6 -1
- package/dist/behaviors/kb-core.mjs +1077 -162
- package/dist/behaviors/kb-eval.mjs +1971 -144
- package/dist/behaviors/kb-explain.d.mts +1 -1
- package/dist/behaviors/kb-explain.mjs +1024 -102
- package/dist/behaviors/kb-filter.mjs +2008 -178
- package/dist/behaviors/kb-gap.d.mts +1 -1
- package/dist/behaviors/kb-gap.mjs +1043 -121
- package/dist/behaviors/kb-hittest.d.mts +1 -1
- package/dist/behaviors/kb-hittest.mjs +1093 -150
- package/dist/behaviors/kb-metadata.mjs +1052 -130
- package/dist/behaviors/kb-passage.d.mts +2 -2
- package/dist/behaviors/kb-passage.mjs +1101 -161
- package/dist/behaviors/kb-pipeline.d.mts +2 -2
- package/dist/behaviors/kb-pipeline.mjs +1082 -162
- package/dist/behaviors/kb-qa.mjs +1088 -160
- package/dist/behaviors/kb-rerank.mjs +1047 -114
- package/dist/behaviors/kb-retrieval.mjs +2063 -224
- package/dist/behaviors/kb-review.mjs +1990 -159
- package/dist/behaviors/kb-sandbox.d.mts +1 -1
- package/dist/behaviors/kb-sandbox.mjs +1026 -104
- package/dist/behaviors/kb-segment.mjs +1111 -179
- package/dist/behaviors/kb-select.d.mts +24 -0
- package/dist/behaviors/kb-select.mjs +1989 -0
- package/dist/behaviors/kb-sources.d.mts +1 -1
- package/dist/behaviors/kb-sources.mjs +1084 -170
- package/dist/behaviors/kb-sql.d.mts +1 -1
- package/dist/behaviors/kb-sql.mjs +1143 -226
- package/dist/behaviors/kb-trace.d.mts +1 -1
- package/dist/behaviors/kb-trace.mjs +1042 -128
- package/dist/behaviors/kb-visibility.mjs +1086 -158
- package/dist/behaviors/kb-who-can.mjs +1974 -137
- package/dist/behaviors/mentions.d.mts +93 -0
- package/dist/behaviors/mentions.mjs +2152 -0
- package/dist/behaviors/modal.d.mts +4 -3
- package/dist/behaviors/modal.mjs +1055 -33
- package/dist/behaviors/nav.d.mts +1 -1
- package/dist/behaviors/nav.mjs +6 -6
- package/dist/behaviors/notification.d.mts +16 -8
- package/dist/behaviors/notification.mjs +1615 -265
- package/dist/behaviors/panel.d.mts +4 -0
- package/dist/behaviors/panel.mjs +994 -0
- package/dist/behaviors/popover.d.mts +28 -5
- package/dist/behaviors/popover.mjs +225 -24
- package/dist/behaviors/select.d.mts +5 -2
- package/dist/behaviors/select.mjs +1410 -117
- package/dist/behaviors/sidebar.d.mts +1 -1
- package/dist/behaviors/sidebar.mjs +13 -13
- package/dist/behaviors/slider.d.mts +1 -1
- package/dist/behaviors/slider.mjs +9 -9
- package/dist/behaviors/split-pane.d.mts +1 -1
- package/dist/behaviors/split-pane.mjs +7 -7
- package/dist/behaviors/suggestions.d.mts +27 -0
- package/dist/behaviors/suggestions.mjs +1089 -0
- package/dist/behaviors/svg-parse.d.mts +14 -0
- package/dist/behaviors/svg-parse.mjs +37 -0
- package/dist/behaviors/tabs.d.mts +2 -2
- package/dist/behaviors/tabs.mjs +25 -25
- package/dist/behaviors/tag-input.d.mts +23 -5
- package/dist/behaviors/tag-input.mjs +1359 -104
- package/dist/behaviors/theme-switcher.d.mts +24 -0
- package/dist/behaviors/theme-switcher.mjs +1981 -0
- package/dist/behaviors/theme.d.mts +15 -8
- package/dist/behaviors/theme.mjs +390 -28
- package/dist/behaviors/toast.d.mts +24 -25
- package/dist/behaviors/toast.mjs +1266 -88
- package/dist/behaviors/tooltip.d.mts +4 -0
- package/dist/behaviors/tooltip.mjs +378 -0
- package/dist/behaviors/tree-select.d.mts +69 -0
- package/dist/behaviors/tree-select.mjs +1907 -0
- package/dist/behaviors/tree.d.mts +1 -1
- package/dist/behaviors/tree.mjs +15 -15
- package/dist/behaviors/upload.d.mts +3 -2
- package/dist/behaviors/upload.mjs +1076 -66
- package/dist/cli.mjs +5 -6
- package/dist/components/ai-chat.css +666 -573
- package/dist/components/ai-diff.css +153 -132
- package/dist/components/ai-panel.css +351 -343
- package/dist/components/ai-tool.css +393 -238
- package/dist/components/autocomplete.css +61 -0
- package/dist/components/autocomplete.mjs +3 -0
- package/dist/components/back-top.css +34 -31
- package/dist/components/badge.css +44 -41
- package/dist/components/breadcrumb.css +67 -46
- package/dist/components/btn.css +80 -74
- package/dist/components/card.css +117 -106
- package/dist/components/cascader.css +311 -0
- package/dist/components/cascader.mjs +3 -0
- package/dist/components/chart-area.css +8 -2
- package/dist/components/chart-bar.css +95 -33
- package/dist/components/chart-gauge.css +14 -11
- package/dist/components/chart-graph.css +20 -17
- package/dist/components/chart-heatmap.css +96 -90
- package/dist/components/chart-line.css +8 -3
- package/dist/components/chart-pie.css +9 -6
- package/dist/components/chart-radar.css +8 -5
- package/dist/components/chart-scatter.css +9 -6
- package/dist/components/chart-sparkline.css +5 -2
- package/dist/components/chart-stack.css +14 -11
- package/dist/components/charts.css +164 -73
- package/dist/components/code-block.css +418 -0
- package/dist/components/code-block.mjs +4 -0
- package/dist/components/command-palette.css +138 -117
- package/dist/components/content.css +257 -251
- package/dist/components/copy.css +72 -44
- package/dist/components/datatable.css +423 -181
- package/dist/components/date-picker.css +135 -104
- package/dist/components/empty.css +68 -65
- package/dist/components/feedback.css +201 -183
- package/dist/components/form-validate.css +120 -0
- package/dist/components/form-validate.mjs +3 -0
- package/dist/components/form.css +150 -127
- package/dist/components/icon.css +102 -0
- package/dist/components/icon.mjs +3 -0
- package/dist/components/input.css +159 -104
- package/dist/components/kb-agent.css +188 -173
- package/dist/components/kb-data.css +257 -253
- package/dist/components/kb-ground.css +197 -185
- package/dist/components/kb-ingest.css +334 -350
- package/dist/components/kb-ops.css +265 -259
- package/dist/components/kb-perm.css +260 -271
- package/dist/components/kb-search.css +317 -360
- package/dist/components/kb.css +120 -109
- package/dist/components/layout.css +85 -82
- package/dist/components/material-chinese.css +73 -0
- package/dist/components/material-soviet.css +76 -0
- package/dist/components/material.css +275 -0
- package/dist/components/media.css +220 -166
- package/dist/components/mentions.css +189 -0
- package/dist/components/mentions.mjs +3 -0
- package/dist/components/menu.css +113 -105
- package/dist/components/modal.css +107 -112
- package/dist/components/nav.css +118 -115
- package/dist/components/notification.css +238 -174
- package/dist/components/pagination.css +56 -53
- package/dist/components/panel.css +66 -63
- package/dist/components/panel.mjs +1 -0
- package/dist/components/pill.css +81 -71
- package/dist/components/popover.css +67 -53
- package/dist/components/scroll-area.css +113 -110
- package/dist/components/segmented.css +146 -143
- package/dist/components/select.css +206 -186
- package/dist/components/sidebar.css +137 -127
- package/dist/components/slider.css +117 -114
- package/dist/components/split-pane.css +112 -109
- package/dist/components/stat.css +112 -106
- package/dist/components/steps.css +109 -103
- package/dist/components/switch.css +138 -134
- package/dist/components/table.css +131 -107
- package/dist/components/tabs.css +114 -108
- package/dist/components/tag-input.css +48 -133
- package/dist/components/tag.css +81 -71
- package/dist/components/theme-switcher.css +105 -0
- package/dist/components/theme-switcher.mjs +3 -0
- package/dist/components/toast.css +100 -86
- package/dist/components/toolbar.css +45 -42
- package/dist/components/tooltip.css +102 -43
- package/dist/components/tooltip.mjs +1 -0
- package/dist/components/tree-select.css +416 -0
- package/dist/components/tree-select.mjs +3 -0
- package/dist/components/upload.css +135 -92
- package/dist/fonts/LICENSES/ark-pixel/OFL.txt +96 -0
- package/dist/fonts/LICENSES/cubic-11/OFL.txt +108 -0
- package/dist/fonts/LICENSES/galmuri/LICENSE.txt +93 -0
- package/dist/fonts/OFL.txt +96 -0
- package/dist/fonts/README.md +14 -0
- package/dist/fonts/fusion-pixel-12px-zh-hans.woff2 +0 -0
- package/dist/index.d.mts +28 -14
- package/dist/index.mjs +20705 -9601
- package/dist/react.d.mts +91 -0
- package/dist/react.mjs +8208 -0
- package/dist/registry.json +130 -13
- package/dist/tokens/chinese.css +44 -0
- package/dist/tokens/colors.css +365 -1222
- package/dist/tokens/design.css +109 -0
- package/dist/tokens/dtcg.json +11198 -0
- package/dist/tokens/figma.variables.json +7017 -0
- package/dist/tokens/icon-masks.css +78 -0
- package/dist/tokens/pixel.css +50 -0
- package/dist/tokens/soviet.css +44 -0
- package/dist/tokens/style-profiles.css +36 -547
- package/dist/tokens/themes.json +308 -0
- package/dist/tokens/tokens-studio.json +6728 -0
- package/dist/tokens/typography.css +21 -18
- package/dist/tokens.css +1555 -1801
- package/dist/ui.css +11975 -9831
- package/dist/vue.d.mts +344 -0
- package/dist/vue.mjs +7781 -0
- package/docs/spec/ai-input-experience.md +75 -0
- package/docs/spec/ai-native.md +238 -147
- package/docs/spec/design-philosophy.md +189 -0
- package/docs/spec/design-primitives.md +196 -0
- package/docs/spec/kb-family.md +147 -115
- package/package.json +43 -8
- package/dist/retro-effects.css +0 -255
- package/dist/tokens/retro-effects.css +0 -255
- package/docs/research/2026-10-03-ai-kb-components.md +0 -392
- package/docs/research/2026-10-03-kb-permissions.md +0 -992
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# AI 输入体验:先看见意图,再决定动作
|
|
2
|
+
|
|
3
|
+
本轮落地到 `ai-composer`,适配现代、中式、苏式、像素四套原语与六套配色。它是一组可组合的输入能力,不绑定某个模型、框架、上传服务或工具执行器。
|
|
4
|
+
|
|
5
|
+
## 三层信息
|
|
6
|
+
|
|
7
|
+
1. **正在写的内容**:一个连续的原生 textarea。选择资源、切模型、删除附件不会重建编辑器;保留输入法、浏览器选择与编辑能力。输入面保持实色,浮层负责层级。
|
|
8
|
+
2. **这次请求的上下文**:技能、工具、文件、文档和代理使用“图标块 + 名称 + 可移除操作”。目录中的说明占独立次行,长名称省略但保留完整 title;附件还有体积。选中以轻填充与内描边呈现,不使用勾号或“已选”文字。
|
|
9
|
+
3. **浏览与操作**:`+` 提供可发现的分类目录;`@` 为引用的快捷入口;`/` 为执行命令的快捷入口。目录可多选上下文,命令先填入草稿并保留原任务,避免浏览时意外执行。`/` 的既有直接执行行为继续兼容。
|
|
10
|
+
|
|
11
|
+
技能与工具的“选入”只表示这次消息携带的意图。真正加载技能、开放工具、获取授权和执行工具由宿主决定。组件不把视觉选中当成权限授予。
|
|
12
|
+
|
|
13
|
+
## 接入与兼容
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
import {
|
|
17
|
+
initAiComposer, setComposerRefs, setComposerCommands,
|
|
18
|
+
openComposerLibrary, getComposerDraft, bindComposer,
|
|
19
|
+
} from '@icen.ai/ui/kit/ai-composer';
|
|
20
|
+
|
|
21
|
+
const destroy = initAiComposer(composer);
|
|
22
|
+
setComposerRefs(composer, [
|
|
23
|
+
{kind:'skill', id:'design', label:'界面设计', description:'排版、材料与交互打磨', keywords:['design']},
|
|
24
|
+
{kind:'tool', id:'search', label:'工作区搜索', icon:'search', description:'定位项目文件'},
|
|
25
|
+
{kind:'file', id:'main', label:'src/main.ts', sub:'工作区'},
|
|
26
|
+
{kind:'tool', id:'github', label:'GitHub', description:'连接后可用', disabled:true},
|
|
27
|
+
]);
|
|
28
|
+
setComposerCommands(composer, [
|
|
29
|
+
{name:'review', label:'审查实现', group:'工作流', icon:'eye', description:'查找缺陷', argsHint:'[路径]'},
|
|
30
|
+
]);
|
|
31
|
+
// 可选:侧栏等窄空间使用 compact;不需要手写另一套组件。
|
|
32
|
+
composer.dataset.icenComposerSize = 'compact';
|
|
33
|
+
openComposerLibrary(composer, 'skill');
|
|
34
|
+
const draft = getComposerDraft(composer);
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
- `setComposerRefs` / `setComposerCommands` 的新增字段全部可选。类别仍允许 `registerRefKind` 扩展;资源身份为 `(kind, id)`。
|
|
38
|
+
- 配置资源或命令后自动补充 `+`;未配置时保留轻量输入。工具条装配时既有按钮被移动而非重建,监听仍有效。
|
|
39
|
+
- `icon` 接受共享 `IconName`,也支持通过 `registerIcon` 注册的名称;既有注册类别的 SVG 和 provider SVG 继续支持。
|
|
40
|
+
- `data-icen-panel-*` 与绑定的 `popoverSizing` 同时作用于模型、命令、引用及目录弹层,仍由共享 popover 限制视口边界。浮层按实际高度定位并观察面板/锚点尺寸,关闭时回收;目录锚定整个输入台,不覆盖草稿。测量保留内部滚动位置,内部滚动不触发自身重定位。
|
|
41
|
+
|
|
42
|
+
## 一条请求是一份独立快照
|
|
43
|
+
|
|
44
|
+
`icen:ai-send` / `icen:ai-queue` 为 `{text, refs?, files?}`,无上下文时仍严格为 `{text}`。发送或入队后清空当前附件、引用;后续草稿独立。空输入按 ↑ 取回待发消息时恢复该请求的文件与资源。停止或失败暂停队列,成功后才继续。
|
|
45
|
+
|
|
46
|
+
附件按钮、文件粘贴、文件拖放都写入同一真实状态。移除后派 `icen:ai-attachment-remove {file, files}`,不再只是删除视觉 chip;`getComposerDraft` 可读当前快照。文件由宿主上传,不猜地址或 provider 文件格式。
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
const binding = bindComposer(composer, {
|
|
50
|
+
client, messages,
|
|
51
|
+
usage: {from:'context'},
|
|
52
|
+
async prepareMessage(draft, {signal}) {
|
|
53
|
+
// upload / resolveReferences 为应用自己的适配器;返回 provider-neutral AiContent。
|
|
54
|
+
const parts = await uploadAndResolve(draft, {signal});
|
|
55
|
+
return parts;
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
// binding.retry() 就地重试最后一次失败/停止的响应,保留下一条草稿。
|
|
59
|
+
// binding.unbind() 中止流与准备过程;迟到结果不会影响新会话。
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
没有 `prepareMessage` 时纯文本维持原行为,引用以消息文本/资源名称提供基本意图;附件会显示可重试的接入错误,避免无声丢失。准备过程失败也可重试;上传适配器应支持 signal,并自行处理重复上传。多模态能力仍由 provider 决定。
|
|
63
|
+
|
|
64
|
+
托管 client 的用量环只消费自己请求的完成结果,独立输入台互不串用量。纯事件绑定默认监听 document 保持兼容;多会话应用传 `eventTarget` 限定各自的完成事件。
|
|
65
|
+
|
|
66
|
+
## 键盘与视觉约束
|
|
67
|
+
|
|
68
|
+
- 搜索和文本编辑保留 DOM 焦点,`aria-activedescendant` 描述实际活动行。方向键浏览并跳过不可用项,Enter 确认,Escape 返回入口。
|
|
69
|
+
- 搜索文本安全地生成 `mark`,不解释 HTML。Home/End 保留光标移动;Ctrl/Meta + Home/End 可跳至首尾选项。
|
|
70
|
+
- 输入法组合期间不打开候选层、不发送,组合完成后再探测。
|
|
71
|
+
- 目录类别按钮正常进入 Tab 顺序;搜索 Tab 不意外确认选项。
|
|
72
|
+
- 触屏目标至少 44px,输入至少 16px;RTL 使用逻辑布局;强制颜色下选中与焦点有轮廓;减少动态时取消进场与边框过渡。
|
|
73
|
+
- 原语决定几何和字体,主题决定颜色。共享默认符号为 20×20 / 1.6 stroke;AI 工具卡的内置 kind 与消息操作沿用同一图标源。
|
|
74
|
+
|
|
75
|
+
可读性与不丢工作比持续动画更值得重复使用。设计参考 [Apple Materials](https://developer.apple.com/design/human-interface-guidelines/materials) 的层级分工,并按 [WAI-ARIA APG](https://www.w3.org/WAI/ARIA/apg/patterns/combobox/) 校核焦点和编辑键。测试通过只证明记录的行为范围,不能据此声称优于所有业界产品;屏幕阅读器实机、真实模型与上传后端的端到端验收仍须由具体产品补足。
|