@icen.ai/ui 0.10.0 → 0.11.1

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.
Files changed (362) hide show
  1. package/AGENTS.md +79 -309
  2. package/LICENSE +21 -0
  3. package/README.md +43 -54
  4. package/dist/base.css +68 -22
  5. package/dist/behaviors/accordion.mjs +1 -1
  6. package/dist/behaviors/ai-branch.mjs +14 -0
  7. package/dist/behaviors/ai-chat.d.mts +2 -2
  8. package/dist/behaviors/ai-chat.mjs +66 -10
  9. package/dist/behaviors/ai-composer.d.mts +5 -5
  10. package/dist/behaviors/ai-composer.mjs +34 -10
  11. package/dist/behaviors/ai-core.mjs +14 -0
  12. package/dist/behaviors/ai-diff.mjs +14 -0
  13. package/dist/behaviors/ai-feedback.mjs +14 -0
  14. package/dist/behaviors/ai-panel.d.mts +2 -2
  15. package/dist/behaviors/ai-panel.mjs +14 -0
  16. package/dist/behaviors/ai-provider.d.mts +1 -1
  17. package/dist/behaviors/ai-provider.mjs +14 -0
  18. package/dist/behaviors/ai-threads.mjs +14 -0
  19. package/dist/behaviors/ai-tool.d.mts +1 -1
  20. package/dist/behaviors/ai-tool.mjs +299 -24
  21. package/dist/behaviors/ai-tools.mjs +1179 -28
  22. package/dist/behaviors/autocomplete.d.mts +1 -1
  23. package/dist/behaviors/autocomplete.mjs +14 -0
  24. package/dist/behaviors/back-top.mjs +14 -0
  25. package/dist/behaviors/carousel.mjs +21 -1
  26. package/dist/behaviors/cascader.mjs +27 -0
  27. package/dist/behaviors/charts.d.mts +12 -1
  28. package/dist/behaviors/charts.mjs +298 -20
  29. package/dist/behaviors/code-block.mjs +22 -1
  30. package/dist/behaviors/command-palette.mjs +3 -3
  31. package/dist/behaviors/context-menu.d.mts +2 -2
  32. package/dist/behaviors/context-menu.mjs +14 -0
  33. package/dist/behaviors/controls.d.mts +8 -8
  34. package/dist/behaviors/controls.mjs +50 -6
  35. package/dist/behaviors/copy.mjs +14 -0
  36. package/dist/behaviors/datatable.d.mts +3 -3
  37. package/dist/behaviors/datatable.mjs +89 -11
  38. package/dist/behaviors/date-picker.mjs +14 -0
  39. package/dist/behaviors/events.d.mts +10 -10
  40. package/dist/behaviors/events.mjs +11 -1
  41. package/dist/behaviors/form-validate.d.mts +10 -1
  42. package/dist/behaviors/form-validate.mjs +279 -4611
  43. package/dist/behaviors/i18n.d.mts +14 -0
  44. package/dist/behaviors/i18n.mjs +28 -0
  45. package/dist/behaviors/input.mjs +16 -0
  46. package/dist/behaviors/kb-access.d.mts +2 -2
  47. package/dist/behaviors/kb-access.mjs +21 -2
  48. package/dist/behaviors/kb-acl.d.mts +2 -2
  49. package/dist/behaviors/kb-acl.mjs +14 -0
  50. package/dist/behaviors/kb-answer.d.mts +2 -2
  51. package/dist/behaviors/kb-answer.mjs +298 -23
  52. package/dist/behaviors/kb-audit.d.mts +2 -2
  53. package/dist/behaviors/kb-audit.mjs +14 -0
  54. package/dist/behaviors/kb-canvas.d.mts +3 -3
  55. package/dist/behaviors/kb-canvas.mjs +14 -0
  56. package/dist/behaviors/kb-chain.d.mts +2 -2
  57. package/dist/behaviors/kb-chain.mjs +14 -0
  58. package/dist/behaviors/kb-checkpoint.d.mts +2 -2
  59. package/dist/behaviors/kb-checkpoint.mjs +14 -0
  60. package/dist/behaviors/kb-chunks.d.mts +2 -2
  61. package/dist/behaviors/kb-chunks.mjs +14 -0
  62. package/dist/behaviors/kb-citation.d.mts +2 -2
  63. package/dist/behaviors/kb-citation.mjs +33 -6
  64. package/dist/behaviors/kb-clarify.d.mts +2 -2
  65. package/dist/behaviors/kb-clarify.mjs +14 -0
  66. package/dist/behaviors/kb-conflict.d.mts +2 -2
  67. package/dist/behaviors/kb-conflict.mjs +14 -0
  68. package/dist/behaviors/kb-connector.d.mts +2 -2
  69. package/dist/behaviors/kb-connector.mjs +14 -0
  70. package/dist/behaviors/kb-core.d.mts +1 -1
  71. package/dist/behaviors/kb-core.mjs +14 -0
  72. package/dist/behaviors/kb-eval.d.mts +2 -2
  73. package/dist/behaviors/kb-eval.mjs +21 -2
  74. package/dist/behaviors/kb-explain.d.mts +2 -2
  75. package/dist/behaviors/kb-explain.mjs +26 -2
  76. package/dist/behaviors/kb-filter.d.mts +2 -2
  77. package/dist/behaviors/kb-filter.mjs +21 -2
  78. package/dist/behaviors/kb-gap.d.mts +2 -2
  79. package/dist/behaviors/kb-gap.mjs +14 -0
  80. package/dist/behaviors/kb-hittest.d.mts +2 -2
  81. package/dist/behaviors/kb-hittest.mjs +15 -1
  82. package/dist/behaviors/kb-metadata.mjs +19 -0
  83. package/dist/behaviors/kb-passage.d.mts +2 -2
  84. package/dist/behaviors/kb-passage.mjs +14 -0
  85. package/dist/behaviors/kb-pipeline.d.mts +2 -2
  86. package/dist/behaviors/kb-pipeline.mjs +14 -0
  87. package/dist/behaviors/kb-qa.mjs +14 -0
  88. package/dist/behaviors/kb-rerank.d.mts +2 -2
  89. package/dist/behaviors/kb-rerank.mjs +14 -0
  90. package/dist/behaviors/kb-retrieval.d.mts +2 -2
  91. package/dist/behaviors/kb-retrieval.mjs +31 -4
  92. package/dist/behaviors/kb-review.d.mts +2 -2
  93. package/dist/behaviors/kb-review.mjs +21 -2
  94. package/dist/behaviors/kb-sandbox.d.mts +2 -2
  95. package/dist/behaviors/kb-sandbox.mjs +20 -1
  96. package/dist/behaviors/kb-segment.d.mts +2 -2
  97. package/dist/behaviors/kb-segment.mjs +15 -1
  98. package/dist/behaviors/kb-select.mjs +21 -2
  99. package/dist/behaviors/kb-sources.d.mts +2 -2
  100. package/dist/behaviors/kb-sources.mjs +14 -0
  101. package/dist/behaviors/kb-sql.d.mts +2 -2
  102. package/dist/behaviors/kb-sql.mjs +14 -0
  103. package/dist/behaviors/kb-trace.d.mts +2 -2
  104. package/dist/behaviors/kb-trace.mjs +22 -3
  105. package/dist/behaviors/kb-visibility.d.mts +2 -2
  106. package/dist/behaviors/kb-visibility.mjs +14 -0
  107. package/dist/behaviors/kb-who-can.d.mts +2 -2
  108. package/dist/behaviors/kb-who-can.mjs +21 -2
  109. package/dist/behaviors/mentions.d.mts +1 -1
  110. package/dist/behaviors/mentions.mjs +14 -0
  111. package/dist/behaviors/modal.d.mts +1 -1
  112. package/dist/behaviors/modal.mjs +14 -0
  113. package/dist/behaviors/motion.d.mts +16 -0
  114. package/dist/behaviors/motion.mjs +39 -0
  115. package/dist/behaviors/notification.d.mts +2 -2
  116. package/dist/behaviors/notification.mjs +27 -3
  117. package/dist/behaviors/panel.mjs +14 -0
  118. package/dist/behaviors/scroll-area.d.mts +17 -0
  119. package/dist/behaviors/scroll-area.mjs +59 -0
  120. package/dist/behaviors/select.mjs +21 -2
  121. package/dist/behaviors/slider.mjs +3 -3
  122. package/dist/behaviors/split-pane.mjs +2 -0
  123. package/dist/behaviors/suggestions.mjs +14 -0
  124. package/dist/behaviors/tabs.mjs +10 -0
  125. package/dist/behaviors/tag-input.mjs +14 -0
  126. package/dist/behaviors/theme-switcher.d.mts +2 -2
  127. package/dist/behaviors/theme-switcher.mjs +30 -2
  128. package/dist/behaviors/theme.mjs +16 -2
  129. package/dist/behaviors/toast.d.mts +2 -2
  130. package/dist/behaviors/toast.mjs +14 -0
  131. package/dist/behaviors/tree-select.mjs +27 -0
  132. package/dist/behaviors/tree.mjs +4 -4
  133. package/dist/behaviors/upload.mjs +14 -0
  134. package/dist/behaviors/url-safety.d.mts +8 -0
  135. package/dist/behaviors/url-safety.mjs +11 -0
  136. package/dist/components/accordion.d.mts +2 -0
  137. package/dist/components/ai-branch.d.mts +2 -0
  138. package/dist/components/ai-chat.css +40 -33
  139. package/dist/components/ai-chat.d.mts +2 -0
  140. package/dist/components/ai-composer.d.mts +2 -0
  141. package/dist/components/ai-context.d.mts +2 -0
  142. package/dist/components/ai-context.mjs +1 -0
  143. package/dist/components/ai-diff.css +6 -6
  144. package/dist/components/ai-diff.d.mts +2 -0
  145. package/dist/components/ai-feedback.d.mts +2 -0
  146. package/dist/components/ai-files.d.mts +2 -0
  147. package/dist/components/ai-message.d.mts +2 -0
  148. package/dist/components/ai-panel.css +12 -10
  149. package/dist/components/ai-reasoning.d.mts +2 -0
  150. package/dist/components/ai-subagent.d.mts +2 -0
  151. package/dist/components/ai-subagent.mjs +1 -0
  152. package/dist/components/ai-threads.d.mts +2 -0
  153. package/dist/components/ai-todo.d.mts +2 -0
  154. package/dist/components/ai-todo.mjs +1 -0
  155. package/dist/components/ai-tool-call.d.mts +2 -0
  156. package/dist/components/ai-tool-call.mjs +1 -0
  157. package/dist/components/ai-tool.css +16 -16
  158. package/dist/components/ai-usage.d.mts +2 -0
  159. package/dist/components/alert.d.mts +2 -0
  160. package/dist/components/autocomplete.css +12 -12
  161. package/dist/components/autocomplete.d.mts +2 -0
  162. package/dist/components/avatar.d.mts +2 -0
  163. package/dist/components/back-top.css +47 -16
  164. package/dist/components/back-top.d.mts +2 -0
  165. package/dist/components/badge.css +1 -1
  166. package/dist/components/badge.d.mts +2 -0
  167. package/dist/components/breadcrumb.css +26 -8
  168. package/dist/components/breadcrumb.d.mts +2 -0
  169. package/dist/components/btn.css +67 -62
  170. package/dist/components/btn.d.mts +2 -0
  171. package/dist/components/card.css +22 -22
  172. package/dist/components/card.d.mts +2 -0
  173. package/dist/components/carousel.d.mts +2 -0
  174. package/dist/components/cascader.css +56 -35
  175. package/dist/components/cascader.d.mts +2 -0
  176. package/dist/components/chart-area.css +46 -0
  177. package/dist/components/chart-area.d.mts +2 -0
  178. package/dist/components/chart-bar.css +66 -19
  179. package/dist/components/chart-bar.d.mts +2 -0
  180. package/dist/components/chart-calendar.d.mts +2 -0
  181. package/dist/components/chart-gauge.css +23 -3
  182. package/dist/components/chart-gauge.d.mts +2 -0
  183. package/dist/components/chart-graph.css +15 -3
  184. package/dist/components/chart-graph.d.mts +2 -0
  185. package/dist/components/chart-heatmap.css +117 -95
  186. package/dist/components/chart-heatmap.d.mts +2 -0
  187. package/dist/components/chart-line.css +54 -0
  188. package/dist/components/chart-line.d.mts +2 -0
  189. package/dist/components/chart-map.d.mts +2 -0
  190. package/dist/components/chart-pie.css +29 -0
  191. package/dist/components/chart-pie.d.mts +2 -0
  192. package/dist/components/chart-radar.css +50 -1
  193. package/dist/components/chart-radar.d.mts +2 -0
  194. package/dist/components/chart-scatter.css +39 -2
  195. package/dist/components/chart-scatter.d.mts +2 -0
  196. package/dist/components/chart-sparkline.css +20 -0
  197. package/dist/components/chart-sparkline.d.mts +2 -0
  198. package/dist/components/chart-stack.css +16 -5
  199. package/dist/components/chart-stack.d.mts +2 -0
  200. package/dist/components/charts.css +109 -35
  201. package/dist/components/charts.d.mts +2 -0
  202. package/dist/components/code-block.css +10 -8
  203. package/dist/components/code-block.d.mts +2 -0
  204. package/dist/components/command-palette.css +45 -38
  205. package/dist/components/command-palette.d.mts +2 -0
  206. package/dist/components/content.css +62 -57
  207. package/dist/components/context-menu.d.mts +2 -0
  208. package/dist/components/copy.css +10 -10
  209. package/dist/components/copy.d.mts +2 -0
  210. package/dist/components/datatable.css +72 -59
  211. package/dist/components/datatable.d.mts +2 -0
  212. package/dist/components/date-picker.css +26 -26
  213. package/dist/components/date-picker.d.mts +2 -0
  214. package/dist/components/desc.d.mts +2 -0
  215. package/dist/components/dropdown.d.mts +2 -0
  216. package/dist/components/empty.css +16 -16
  217. package/dist/components/empty.d.mts +2 -0
  218. package/dist/components/feedback.css +31 -29
  219. package/dist/components/form-validate.css +20 -6
  220. package/dist/components/form-validate.d.mts +2 -0
  221. package/dist/components/form.css +17 -14
  222. package/dist/components/form.d.mts +2 -0
  223. package/dist/components/icon.css +21 -10
  224. package/dist/components/icon.d.mts +2 -0
  225. package/dist/components/input.css +22 -22
  226. package/dist/components/input.d.mts +2 -0
  227. package/dist/components/kb-access.d.mts +2 -0
  228. package/dist/components/kb-acl.d.mts +2 -0
  229. package/dist/components/kb-agent.css +134 -55
  230. package/dist/components/kb-answer.d.mts +2 -0
  231. package/dist/components/kb-audit.d.mts +2 -0
  232. package/dist/components/kb-canvas.d.mts +2 -0
  233. package/dist/components/kb-chain.d.mts +2 -0
  234. package/dist/components/kb-checkpoint.d.mts +2 -0
  235. package/dist/components/kb-chunks.d.mts +2 -0
  236. package/dist/components/kb-citation.d.mts +2 -0
  237. package/dist/components/kb-clarify.d.mts +2 -0
  238. package/dist/components/kb-conflict.d.mts +2 -0
  239. package/dist/components/kb-connector.d.mts +2 -0
  240. package/dist/components/kb-data.css +192 -80
  241. package/dist/components/kb-eval.d.mts +2 -0
  242. package/dist/components/kb-explain.d.mts +2 -0
  243. package/dist/components/kb-filter.d.mts +2 -0
  244. package/dist/components/kb-gap.d.mts +2 -0
  245. package/dist/components/kb-ground.css +165 -73
  246. package/dist/components/kb-hittest.d.mts +2 -0
  247. package/dist/components/kb-ingest.css +308 -113
  248. package/dist/components/kb-metadata.d.mts +2 -0
  249. package/dist/components/kb-ops.css +189 -75
  250. package/dist/components/kb-passage.d.mts +2 -0
  251. package/dist/components/kb-perm.css +158 -87
  252. package/dist/components/kb-pipeline.d.mts +2 -0
  253. package/dist/components/kb-qa.d.mts +2 -0
  254. package/dist/components/kb-rerank.d.mts +2 -0
  255. package/dist/components/kb-retrieval.d.mts +2 -0
  256. package/dist/components/kb-review.d.mts +2 -0
  257. package/dist/components/kb-sandbox.d.mts +2 -0
  258. package/dist/components/kb-search.css +353 -116
  259. package/dist/components/kb-segment.d.mts +2 -0
  260. package/dist/components/kb-sources.d.mts +2 -0
  261. package/dist/components/kb-sql.d.mts +2 -0
  262. package/dist/components/kb-trace.d.mts +2 -0
  263. package/dist/components/kb-visibility.d.mts +2 -0
  264. package/dist/components/kb-who-can.d.mts +2 -0
  265. package/dist/components/kb.css +60 -36
  266. package/dist/components/kb.d.mts +2 -0
  267. package/dist/components/kbd.d.mts +2 -0
  268. package/dist/components/layout.css +10 -10
  269. package/dist/components/layout.d.mts +2 -0
  270. package/dist/components/list.d.mts +2 -0
  271. package/dist/components/material-chinese.css +10 -0
  272. package/dist/components/material-soviet.css +10 -0
  273. package/dist/components/material.css +61 -18
  274. package/dist/components/media-card.d.mts +2 -0
  275. package/dist/components/media.css +22 -27
  276. package/dist/components/mentions.css +18 -17
  277. package/dist/components/mentions.d.mts +2 -0
  278. package/dist/components/menu.css +32 -28
  279. package/dist/components/modal.css +30 -27
  280. package/dist/components/modal.d.mts +2 -0
  281. package/dist/components/nav.css +48 -44
  282. package/dist/components/nav.d.mts +2 -0
  283. package/dist/components/notification.css +31 -25
  284. package/dist/components/notification.d.mts +2 -0
  285. package/dist/components/pagination.css +15 -13
  286. package/dist/components/pagination.d.mts +2 -0
  287. package/dist/components/panel.css +19 -20
  288. package/dist/components/panel.d.mts +2 -0
  289. package/dist/components/pill.css +8 -7
  290. package/dist/components/pill.d.mts +2 -0
  291. package/dist/components/popover.css +32 -23
  292. package/dist/components/popover.d.mts +2 -0
  293. package/dist/components/progress.d.mts +2 -0
  294. package/dist/components/rating.d.mts +2 -0
  295. package/dist/components/result.d.mts +2 -0
  296. package/dist/components/scroll-area.css +84 -112
  297. package/dist/components/scroll-area.d.mts +2 -0
  298. package/dist/components/scroll-area.mjs +1 -0
  299. package/dist/components/segmented.css +47 -29
  300. package/dist/components/segmented.d.mts +2 -0
  301. package/dist/components/select.css +80 -41
  302. package/dist/components/select.d.mts +2 -0
  303. package/dist/components/sidebar.css +42 -38
  304. package/dist/components/sidebar.d.mts +2 -0
  305. package/dist/components/skeleton.d.mts +2 -0
  306. package/dist/components/slider.css +26 -22
  307. package/dist/components/slider.d.mts +2 -0
  308. package/dist/components/spinner.d.mts +2 -0
  309. package/dist/components/split-pane.css +16 -7
  310. package/dist/components/split-pane.d.mts +2 -0
  311. package/dist/components/stat.css +17 -16
  312. package/dist/components/stat.d.mts +2 -0
  313. package/dist/components/steps.css +26 -26
  314. package/dist/components/steps.d.mts +2 -0
  315. package/dist/components/switch.css +78 -39
  316. package/dist/components/switch.d.mts +2 -0
  317. package/dist/components/table.css +54 -32
  318. package/dist/components/table.d.mts +2 -0
  319. package/dist/components/tabs.css +53 -32
  320. package/dist/components/tabs.d.mts +2 -0
  321. package/dist/components/tag-input.css +12 -8
  322. package/dist/components/tag-input.d.mts +2 -0
  323. package/dist/components/tag.css +20 -12
  324. package/dist/components/tag.d.mts +2 -0
  325. package/dist/components/theme-switcher.css +7 -7
  326. package/dist/components/theme-switcher.d.mts +2 -0
  327. package/dist/components/timeline.d.mts +2 -0
  328. package/dist/components/toast.css +34 -30
  329. package/dist/components/toast.d.mts +2 -0
  330. package/dist/components/toolbar.css +19 -18
  331. package/dist/components/toolbar.d.mts +2 -0
  332. package/dist/components/tooltip.css +9 -8
  333. package/dist/components/tooltip.d.mts +2 -0
  334. package/dist/components/tree-select.css +63 -40
  335. package/dist/components/tree-select.d.mts +2 -0
  336. package/dist/components/tree.d.mts +2 -0
  337. package/dist/components/upload.css +9 -11
  338. package/dist/components/upload.d.mts +2 -0
  339. package/dist/index.d.mts +85 -84
  340. package/dist/index.mjs +14644 -13935
  341. package/dist/react.d.mts +18 -18
  342. package/dist/react.mjs +377 -36
  343. package/dist/registry.json +797 -64
  344. package/dist/tokens/colors.css +6 -0
  345. package/dist/tokens/design.css +137 -31
  346. package/dist/tokens/dtcg.json +9592 -2008
  347. package/dist/tokens/figma.variables.json +7451 -2141
  348. package/dist/tokens/motion.css +51 -0
  349. package/dist/tokens/pixel.css +10 -0
  350. package/dist/tokens/scrollbars.css +40 -0
  351. package/dist/tokens/tokens-studio.json +8390 -1142
  352. package/dist/tokens/typography.css +33 -0
  353. package/dist/tokens.css +402 -82
  354. package/dist/ui.css +4196 -2163
  355. package/dist/vue.d.mts +17 -17
  356. package/dist/vue.mjs +371 -34
  357. package/docs/spec/charts-scale-a11y.md +115 -0
  358. package/docs/spec/design-philosophy.md +5 -5
  359. package/docs/spec/design-primitives.md +10 -10
  360. package/docs/spec/motion-typography.md +105 -0
  361. package/docs/spec/scrollbars.md +46 -0
  362. package/package.json +17 -3
@@ -30,16 +30,16 @@
30
30
  .icen-kb-filter-value {
31
31
  box-sizing: border-box;
32
32
  min-inline-size: 0;
33
- block-size: var(--input-height, var(--icen-density-input-height-md));
34
- padding: 0 var(--input-padding-inline, var(--icen-density-space-sm));
33
+ block-size: var(--input-height, var(--icen-control-height-md));
34
+ padding: 0 var(--input-padding-inline, var(--icen-field-padding-inline));
35
35
  font-family: var(--icen-font-body);
36
- font-size: var(--input-font-size, var(--icen-density-font-size-md));
37
- line-height: 1.5;
36
+ font-size: var(--input-font-size, var(--icen-font-size-control));
37
+ line-height: 1.4;
38
38
  color: var(--icen-token-text);
39
39
  background: var(--icen-token-control);
40
- border: 1px solid var(--icen-token-outline-soft);
41
- border-radius: var(--icen-radius-md);
42
- box-shadow: var(--icen-token-shadow-inset);
40
+ border: var(--icen-control-border-width) solid var(--icen-token-control-border);
41
+ border-radius: var(--icen-control-radius);
42
+ box-shadow: var(--icen-token-shadow-field);
43
43
  transition: border-color var(--icen-tx-fast), box-shadow var(--icen-tx-fast);
44
44
  }
45
45
  .icen-input-wrap {
@@ -50,7 +50,7 @@
50
50
  inline-size: 100%;
51
51
  }
52
52
  :is(.icen-input-wrap,.icen-input-control,.icen-kb-input,.icen-kb-retrieval-query,.icen-kb-hittest-input,.icen-kb-filter-field,.icen-kb-filter-value):hover {
53
- border-color: var(--icen-hover-border);
53
+ border-color: var(--icen-token-control-border-hover);
54
54
  }
55
55
  :is(.icen-input-wrap,.icen-input-control,.icen-kb-input,.icen-kb-retrieval-query,.icen-kb-hittest-input,.icen-kb-filter-field,.icen-kb-filter-value):focus-within {
56
56
  outline: none;
@@ -77,13 +77,13 @@
77
77
  /* 尺寸变体 */
78
78
  .icen-input-wrap--sm, .icen-input-control--sm,
79
79
  .icen-kb-input, .icen-kb-retrieval-query, .icen-kb-hittest-input, .icen-kb-filter-field, .icen-kb-filter-value {
80
- --input-height: var(--icen-density-input-height-sm);
81
- --input-padding-inline: max(8px, calc(var(--icen-density-space-sm) * 1.25));
80
+ --input-height: var(--icen-control-height-sm);
81
+ --input-padding-inline: var(--icen-field-padding-inline-sm);
82
82
  --input-font-size: var(--icen-density-font-size-sm);
83
83
  }
84
84
  .icen-input-wrap--lg, .icen-input-control--lg {
85
- --input-height: var(--icen-density-input-height-lg);
86
- --input-padding-inline: var(--icen-density-space-md);
85
+ --input-height: var(--icen-control-height-lg);
86
+ --input-padding-inline: var(--icen-control-padding-inline-lg);
87
87
  --input-font-size: var(--icen-density-font-size-lg);
88
88
  }
89
89
 
@@ -99,7 +99,7 @@
99
99
  font: inherit;
100
100
  }
101
101
  .icen-input::placeholder {
102
- color: color-mix(in srgb, var(--icen-token-text-faint) 60%, transparent);
102
+ color: var(--icen-token-text-faint); /* 全量 faint:60% 混透浅色仅 ~2.4:1 低于 AA(faint 全量 ≥4.9:1) */
103
103
  }
104
104
  .icen-input:read-only {
105
105
  color: var(--icen-token-text-muted);
@@ -162,7 +162,7 @@
162
162
  align-items: center;
163
163
  justify-content: center;
164
164
  flex-shrink: 0;
165
- width: 22px; height: 22px;
165
+ width: 24px; height: 24px; /* WCAG 2.5.8 下限(22 → 24) */
166
166
  padding: 0;
167
167
  border: none;
168
168
  background: transparent;
@@ -191,14 +191,14 @@
191
191
  display: flex;
192
192
  width: 100%;
193
193
  background: var(--icen-token-control);
194
- border: 1px solid var(--icen-token-outline-soft);
195
- border-radius: var(--icen-radius-md);
196
- box-shadow: var(--icen-token-shadow-inset);
194
+ border: var(--icen-control-border-width) solid var(--icen-token-control-border);
195
+ border-radius: var(--icen-control-radius);
196
+ box-shadow: var(--icen-token-shadow-field);
197
197
  transition: border-color var(--icen-tx-fast),
198
198
  box-shadow var(--icen-tx-fast);
199
199
  }
200
200
  .icen-textarea-wrap:hover {
201
- border-color: var(--icen-hover-border);
201
+ border-color: var(--icen-token-control-border-hover);
202
202
  }
203
203
  .icen-textarea-wrap:focus-within {
204
204
  box-shadow: var(--icen-control-focus-shadow);
@@ -221,19 +221,19 @@
221
221
 
222
222
  .icen-textarea {
223
223
  width: 100%;
224
- padding: var(--icen-density-space-sm) var(--icen-density-space-md);
224
+ padding: var(--icen-density-space-sm) var(--icen-field-padding-inline);
225
225
  background: transparent;
226
226
  border: none;
227
227
  outline: none;
228
228
  resize: vertical;
229
229
  color: var(--icen-token-text);
230
230
  font: inherit;
231
- font-size: var(--icen-density-font-size-md);
231
+ font-size: var(--icen-font-size-control);
232
232
  line-height: 1.5;
233
- min-height: calc(3 * 1.5em + 24px);
233
+ min-height: calc(3 * 1.5em + 22px);
234
234
  }
235
235
  .icen-textarea::placeholder {
236
- color: color-mix(in srgb, var(--icen-token-text-faint) 60%, transparent);
236
+ color: var(--icen-token-text-faint); /* 全量 faint:60% 混透浅色仅 ~2.4:1 低于 AA(faint 全量 ≥4.9:1) */
237
237
  }
238
238
 
239
239
  /* 字符计数(behavior 可挂到 .icen-input-wrap 或 .icen-textarea-wrap 内行内末端) */
@@ -0,0 +1,2 @@
1
+ // kit: input 类型面(构建产物,勿手改)
2
+ export * from '../behaviors/input.mjs';
@@ -0,0 +1,2 @@
1
+ // kit: kb-access 类型面(构建产物,勿手改)
2
+ export * from '../behaviors/kb-access.mjs';
@@ -0,0 +1,2 @@
1
+ // kit: kb-acl 类型面(构建产物,勿手改)
2
+ export * from '../behaviors/kb-acl.mjs';
@@ -44,11 +44,11 @@
44
44
  position: relative;
45
45
  margin: 0;
46
46
  border: none;
47
- border-radius: 2px;
48
47
  /* guard:allow-radius 微构件(bar/dot/track/指示器等图形级,不属容器圆角面) */
48
+ border-radius: 2px; /* guard:allow-radius 分隔条的图形圆角 */
49
49
  background: var(--icen-token-line-soft);
50
50
  cursor: col-resize;
51
51
  touch-action: none; /* 拖拽需接管触摸滚动(指针事件 preventDefault 的对偶) */
52
- transition: background-color 0.16s ease-out;
52
+ transition: background-color var(--icen-tx-fast);
53
53
  }
54
54
  .icen-kb-canvas-divider::after {
55
55
  content: '';
@@ -58,9 +58,9 @@
58
58
  transform: translate(-50%, -50%);
59
59
  width: 2px;
60
60
  height: 18px;
61
- border-radius: 1px;
62
61
  /* guard:allow-radius 微构件(bar/dot/track/指示器等图形级,不属容器圆角面) */
62
+ border-radius: 1px; /* guard:allow-radius 拖动握柄的图形圆角 */
63
63
  background: var(--icen-token-line);
64
- transition: background-color 0.16s ease-out;
64
+ transition: background-color var(--icen-tx-fast);
65
65
  }
66
66
  .icen-kb-canvas-divider:hover,
67
67
  .icen-kb-canvas-divider.is-active {
@@ -71,8 +71,8 @@
71
71
  background: var(--icen-token-accent);
72
72
  }
73
73
  .icen-kb-canvas-divider:focus-visible {
74
- outline: 2px solid var(--icen-token-accent);
75
- outline-offset: -2px;
74
+ outline: none;
75
+ box-shadow: var(--icen-ring);
76
76
  }
77
77
 
78
78
  /* 拖拽中:禁文本选择(防划词误触)+ 冻结两栏 hover 抖动 */
@@ -109,25 +109,32 @@
109
109
  .icen-kb-canvas-ver {
110
110
  display: inline-flex;
111
111
  align-items: center;
112
+ justify-content: center;
112
113
  gap: 6px;
113
114
  flex: 0 0 auto;
114
- padding: 2px 9px;
115
+ min-block-size: 24px;
116
+ padding: 0 9px;
115
117
  border: 1px solid var(--icen-token-line-soft);
116
118
  border-radius: var(--icen-radius-full);
117
119
  background: var(--icen-token-bg-soft);
118
120
  font: inherit;
119
- font-size: 11.5px;
121
+ font-size: var(--icen-font-size-caption);
122
+ line-height: 1;
120
123
  color: var(--icen-token-text-muted);
121
124
  cursor: pointer;
122
- transition: color 0.16s ease-out, border-color 0.16s ease-out;
125
+ transition: color var(--icen-tx-fast), background-color var(--icen-tx-fast), border-color var(--icen-tx-fast);
123
126
  }
124
127
  .icen-kb-canvas-ver:hover {
125
128
  color: var(--icen-token-text);
126
129
  border-color: var(--icen-token-line);
130
+ background: var(--icen-token-fill-hover);
131
+ }
132
+ .icen-kb-canvas-ver:active {
133
+ background: var(--icen-token-fill-pressed);
127
134
  }
128
135
  .icen-kb-canvas-ver:focus-visible {
129
- outline: 2px solid var(--icen-token-accent);
130
- outline-offset: -2px;
136
+ outline: none;
137
+ box-shadow: var(--icen-ring);
131
138
  }
132
139
  .icen-kb-canvas-ver-dot {
133
140
  width: 6px;
@@ -135,7 +142,7 @@
135
142
  border-radius: 50%;
136
143
  flex: 0 0 auto;
137
144
  background: var(--icen-token-text-faint);
138
- transition: background-color 0.16s ease-out;
145
+ transition: background-color var(--icen-tx-fast);
139
146
  }
140
147
  .icen-kb-canvas-ver-label {
141
148
  color: var(--icen-token-text);
@@ -144,10 +151,11 @@
144
151
  text-overflow: ellipsis;
145
152
  white-space: nowrap;
146
153
  }
147
- /* current 高亮:点线同色 accent(语义=当前所在版本,非装饰) */
154
+ /* current 高亮:点线同色 accent + 选中底色(语义=当前所在版本,非装饰) */
148
155
  .icen-kb-canvas-ver.is-current {
149
- color: var(--icen-token-accent);
156
+ color: var(--icen-token-accent-text);
150
157
  border-color: color-mix(in srgb, var(--icen-token-accent) 45%, transparent);
158
+ background: var(--icen-token-fill-selected);
151
159
  }
152
160
  .icen-kb-canvas-ver.is-current .icen-kb-canvas-ver-dot {
153
161
  background: var(--icen-token-accent);
@@ -161,34 +169,42 @@
161
169
  gap: 2px;
162
170
  padding: 3px;
163
171
  border-radius: var(--icen-radius-md);
164
- background: color-mix(in srgb, var(--icen-token-card-strong) 94%, transparent);
165
- border: 1px solid var(--icen-token-outline);
166
- box-shadow: var(--icen-token-shadow-overlay);
167
- animation: icen-pop-in var(--icen-tx-fast) ease-out;
172
+ background: var(--icen-token-surface-raised);
173
+ border: 1px solid var(--icen-token-line-soft);
174
+ box-shadow: var(--icen-token-shadow-elevated);
175
+ animation: icen-pop-in var(--icen-tx-fast);
168
176
  user-select: none;
169
177
  }
170
178
  .icen-kb-canvas-selbar[hidden] {
171
179
  display: none;
172
180
  }
173
181
  .icen-kb-canvas-selbar-btn {
182
+ display: inline-flex;
183
+ align-items: center;
184
+ justify-content: center;
185
+ min-block-size: 24px;
186
+ padding: 0 9px;
174
187
  border: none;
175
188
  background: none;
176
189
  border-radius: var(--icen-radius-sm);
177
- padding: 3px 9px;
178
190
  font: inherit;
179
- font-size: 12px;
191
+ font-size: var(--icen-font-size-caption);
192
+ line-height: 1;
180
193
  color: var(--icen-token-text-muted);
181
194
  cursor: pointer;
182
195
  white-space: nowrap;
183
- transition: color 0.16s ease-out, background-color 0.16s ease-out;
196
+ transition: color var(--icen-tx-fast), background-color var(--icen-tx-fast);
184
197
  }
185
198
  .icen-kb-canvas-selbar-btn:hover {
186
199
  color: var(--icen-token-text);
187
- background: var(--icen-token-bg-soft);
200
+ background: var(--icen-token-fill-hover);
201
+ }
202
+ .icen-kb-canvas-selbar-btn:active {
203
+ background: var(--icen-token-fill-pressed);
188
204
  }
189
205
  .icen-kb-canvas-selbar-btn:focus-visible {
190
- outline: 2px solid var(--icen-token-accent);
191
- outline-offset: -2px;
206
+ outline: none;
207
+ box-shadow: var(--icen-ring);
192
208
  }
193
209
 
194
210
  /* ═══════════════ kb-checkpoint 检查点(§5.24) ═══════════════ */
@@ -204,24 +220,28 @@
204
220
  display: inline-flex;
205
221
  align-items: center;
206
222
  gap: 6px;
207
- min-height: 28px;
208
- padding: 2px 10px;
223
+ min-height: var(--icen-density-item-height);
224
+ padding: 0 10px;
209
225
  border: 1px solid var(--icen-token-line-soft);
210
226
  border-radius: var(--icen-radius-sm);
211
227
  background: var(--icen-token-bg-soft);
212
228
  font: inherit;
213
- font-size: 12px;
229
+ font-size: var(--icen-font-size-caption);
214
230
  color: var(--icen-token-text-muted);
215
231
  cursor: pointer;
216
- transition: color 0.16s ease-out, border-color 0.16s ease-out;
232
+ transition: color var(--icen-tx-fast), background-color var(--icen-tx-fast), border-color var(--icen-tx-fast);
217
233
  }
218
234
  .icen-kb-checkpoint:hover {
219
235
  color: var(--icen-token-text);
220
236
  border-color: var(--icen-token-line);
237
+ background: var(--icen-token-fill-hover);
238
+ }
239
+ .icen-kb-checkpoint:active {
240
+ background: var(--icen-token-fill-pressed);
221
241
  }
222
242
  .icen-kb-checkpoint:focus-visible {
223
- outline: 2px solid var(--icen-token-accent);
224
- outline-offset: -2px;
243
+ outline: none;
244
+ box-shadow: var(--icen-ring);
225
245
  }
226
246
  .icen-kb-checkpoint-icon {
227
247
  display: inline-flex;
@@ -232,7 +252,7 @@
232
252
  height: 14px;
233
253
  }
234
254
  .icen-kb-checkpoint-time {
235
- font-size: 11px;
255
+ font-size: var(--icen-density-font-size-xs);
236
256
  }
237
257
  .icen-kb-checkpoint-label {
238
258
  max-width: 180px;
@@ -241,7 +261,7 @@
241
261
  white-space: nowrap;
242
262
  }
243
263
 
244
- /* Restore menu: shared floating material; selection uses a contained surface. */
264
+ /* 恢复菜单:复用浮层材质;选中范围用克制的内嵌表面表达。 */
245
265
  .icen-kb-checkpoint-menu {
246
266
  position: fixed;
247
267
  z-index: var(--icen-z-popover);
@@ -251,14 +271,15 @@
251
271
  overscroll-behavior: contain;
252
272
  margin: 0;
253
273
  padding: 6px;
254
- background: color-mix(in srgb, var(--icen-token-card-strong) 94%, transparent);
255
- border: 1px solid var(--icen-token-outline);
256
- box-shadow: var(--icen-token-shadow-overlay);
274
+ background: var(--icen-token-surface-raised);
275
+ border: 1px solid var(--icen-token-line-soft);
276
+ box-shadow: var(--icen-token-shadow-elevated);
257
277
  border-radius: var(--icen-radius-md);
258
- animation: icen-pop-in var(--icen-tx-fast) ease-out;
278
+ animation: icen-pop-in var(--icen-tx-fast);
259
279
  }
260
280
  .icen-kb-checkpoint-menu-title {
261
- font-size: 11.5px;
281
+ font-size: var(--icen-density-font-size-xs);
282
+ letter-spacing: 0.3px;
262
283
  color: var(--icen-token-text-faint);
263
284
  padding: 4px 8px 6px;
264
285
  }
@@ -267,30 +288,34 @@
267
288
  align-items: flex-start;
268
289
  gap: 8px;
269
290
  inline-size: 100%;
291
+ min-block-size: var(--icen-density-item-height);
270
292
  padding: 6px 8px;
271
293
  border: none;
272
294
  background: none;
273
- border-radius: var(--icen-radius-sm);
295
+ border-radius: var(--icen-radius-xs);
274
296
  font: inherit;
275
- font-size: 12.5px;
297
+ font-size: var(--icen-font-size-control);
276
298
  color: var(--icen-token-text);
277
299
  text-align: start;
278
300
  cursor: pointer;
279
- transition: background-color 0.16s ease-out;
301
+ transition: background-color var(--icen-tx-fast), color var(--icen-tx-fast);
280
302
  }
281
303
  .icen-kb-checkpoint-menu-item:hover {
282
- background: var(--icen-token-bg-soft);
304
+ background: var(--icen-token-fill-hover);
305
+ }
306
+ .icen-kb-checkpoint-menu-item:active {
307
+ background: var(--icen-token-fill-pressed);
283
308
  }
284
309
  .icen-kb-checkpoint-menu-item:focus-visible {
285
- outline: 2px solid var(--icen-token-accent);
286
- outline-offset: -2px;
310
+ outline: none;
311
+ box-shadow: var(--icen-ring);
287
312
  }
288
313
  @media (pointer: coarse) {
289
314
  .icen-kb-checkpoint-menu-item { min-block-size: 44px; }
290
315
  }
291
316
  .icen-kb-checkpoint-menu-item.is-disabled,
292
317
  .icen-kb-checkpoint-menu-item:disabled {
293
- opacity: 0.45;
318
+ opacity: var(--icen-disabled-opacity);
294
319
  cursor: not-allowed;
295
320
  }
296
321
  .icen-kb-checkpoint-menu-item:disabled:hover {
@@ -301,7 +326,7 @@
301
326
  display: inline-flex;
302
327
  justify-content: center;
303
328
  color: var(--icen-token-accent);
304
- font-size: 12px;
329
+ font-size: var(--icen-density-font-size-xs);
305
330
  line-height: 1.4;
306
331
  }
307
332
  .icen-kb-checkpoint-menu-main {
@@ -311,7 +336,7 @@
311
336
  min-width: 0;
312
337
  }
313
338
  .icen-kb-checkpoint-menu-note {
314
- font-size: 11px;
339
+ font-size: var(--icen-density-font-size-xs);
315
340
  color: var(--icen-token-text-faint);
316
341
  }
317
342
 
@@ -369,7 +394,7 @@
369
394
  }
370
395
  .icen-kb-sandbox-err {
371
396
  color: var(--icen-token-error);
372
- font-size: 12.5px;
397
+ font-size: var(--icen-font-size-control);
373
398
  text-align: center;
374
399
  }
375
400
 
@@ -386,13 +411,16 @@
386
411
  .icen-kb-chain-step {
387
412
  display: inline-flex;
388
413
  align-items: center;
414
+ justify-content: center;
389
415
  gap: 6px;
390
416
  flex: 0 0 auto;
391
- padding: 3px 10px;
417
+ min-block-size: var(--icen-density-item-height);
418
+ padding: 0 10px;
392
419
  border-radius: var(--icen-radius-full);
393
- font-size: 12px;
420
+ font-size: var(--icen-font-size-caption);
421
+ line-height: 1;
394
422
  color: var(--icen-token-text-muted);
395
- transition: color 0.16s ease-out, background-color 0.16s ease-out;
423
+ transition: color var(--icen-tx-fast), background-color var(--icen-tx-fast);
396
424
  }
397
425
  /* 可点(running 及之前):hover 提供可点暗示,仍走中性色 */
398
426
  .icen-kb-chain-step[aria-disabled='false'] {
@@ -400,11 +428,14 @@
400
428
  }
401
429
  .icen-kb-chain-step[aria-disabled='false']:hover {
402
430
  color: var(--icen-token-text);
403
- background: var(--icen-token-bg-soft);
431
+ background: var(--icen-token-fill-hover);
432
+ }
433
+ .icen-kb-chain-step[aria-disabled='false']:active {
434
+ background: var(--icen-token-fill-pressed);
404
435
  }
405
436
  .icen-kb-chain-step[aria-disabled='false']:focus-visible {
406
- outline: 2px solid var(--icen-token-accent);
407
- outline-offset: -2px;
437
+ outline: none;
438
+ box-shadow: var(--icen-ring);
408
439
  }
409
440
  .icen-kb-chain-step[aria-disabled='true'] {
410
441
  color: var(--icen-token-text-faint);
@@ -418,7 +449,7 @@
418
449
  height: 8px;
419
450
  border-radius: 50%;
420
451
  flex: 0 0 auto;
421
- transition: background-color 0.16s ease-out, border-color 0.16s ease-out;
452
+ transition: background-color var(--icen-tx-fast), border-color var(--icen-tx-fast);
422
453
  }
423
454
  .icen-kb-chain-step.is-pending .icen-kb-chain-dot {
424
455
  border: 1.5px solid var(--icen-token-line);
@@ -484,6 +515,17 @@
484
515
  }
485
516
  }
486
517
 
518
+ /* ═══════════════ 密度档(compact:收紧留白,可点面保持 24px 下限) ═══════════════ */
519
+
520
+ [data-icen-density='compact'] .icen-kb-canvas-chat,
521
+ [data-icen-density='compact'] .icen-kb-canvas-doc { padding: 8px 10px; }
522
+ [data-icen-density='compact'] .icen-kb-canvas-versions { padding-block: 4px; }
523
+ [data-icen-density='compact'] .icen-kb-checkpoints { gap: 6px; }
524
+ [data-icen-density='compact'] .icen-kb-checkpoint { min-height: var(--icen-density-item-height); }
525
+ [data-icen-density='compact'] .icen-kb-checkpoint-menu-item { min-block-size: 24px; padding-block: 4px; }
526
+ [data-icen-density='compact'] .icen-kb-chain-step { min-block-size: 24px; }
527
+ [data-icen-density='compact'] .icen-kb-sandbox-stage { min-height: 280px; }
528
+
487
529
  /* ── RTL:步骤链行进箭头镜像(翻转到行内末端并改为左指) ── */
488
530
  :is([dir='rtl']) .icen-kb-chain-link::after {
489
531
  right: auto; /* guard:allow-physical RTL 镜像规则:箭头移到行内末端(视觉左) */
@@ -491,6 +533,43 @@
491
533
  transform: translateY(-50%) rotate(45deg) scaleX(-1);
492
534
  }
493
535
 
494
- .icen-kb-checkpoint-menu-check { display: none; }
536
+ /* ═══════════════ 高对比模式:材质回落到系统面,选中/焦点换 Highlight ═══════════════ */
537
+
538
+ @media (forced-colors: active) {
539
+ .icen-kb-canvas-selbar,
540
+ .icen-kb-checkpoint-menu {
541
+ background: Canvas;
542
+ border-color: CanvasText;
543
+ box-shadow: none;
544
+ }
545
+ .icen-kb-canvas-selbar-btn,
546
+ .icen-kb-checkpoint-menu-item { border: 1px solid CanvasText; }
547
+ .icen-kb-canvas-ver.is-current,
548
+ .icen-kb-chain-step.is-running,
549
+ .icen-kb-chain-step.is-error {
550
+ outline: 2px solid Highlight;
551
+ outline-offset: -2px;
552
+ }
553
+ .icen-kb-canvas-divider { background: CanvasText; }
554
+ .icen-kb-canvas-divider::after { background: Canvas; }
555
+ .icen-kb-chain-link { background: CanvasText; }
556
+ .icen-kb-chain-link::after { border-color: CanvasText; }
557
+ .icen-kb-chain-dot { border: 1px solid CanvasText; }
558
+ .icen-kb-chain-step.is-running .icen-kb-chain-dot,
559
+ .icen-kb-chain-step.is-done .icen-kb-chain-dot,
560
+ .icen-kb-chain-step.is-error .icen-kb-chain-dot { background: CanvasText; }
561
+ .icen-kb-sandbox-stage { border-color: CanvasText; }
562
+ .icen-kb-sandbox-err { border: 1px solid CanvasText; }
563
+ .icen-kb-canvas-divider:focus-visible,
564
+ .icen-kb-canvas-ver:focus-visible,
565
+ .icen-kb-canvas-selbar-btn:focus-visible,
566
+ .icen-kb-checkpoint:focus-visible,
567
+ .icen-kb-checkpoint-menu-item:focus-visible,
568
+ .icen-kb-chain-step[aria-disabled='false']:focus-visible {
569
+ outline: 2px solid Highlight;
570
+ outline-offset: -2px;
571
+ box-shadow: none;
572
+ }
573
+ }
495
574
 
496
575
  }
@@ -0,0 +1,2 @@
1
+ // kit: kb-answer 类型面(构建产物,勿手改)
2
+ export * from '../behaviors/kb-answer.mjs';
@@ -0,0 +1,2 @@
1
+ // kit: kb-audit 类型面(构建产物,勿手改)
2
+ export * from '../behaviors/kb-audit.mjs';
@@ -0,0 +1,2 @@
1
+ // kit: kb-canvas 类型面(构建产物,勿手改)
2
+ export * from '../behaviors/kb-canvas.mjs';
@@ -0,0 +1,2 @@
1
+ // kit: kb-chain 类型面(构建产物,勿手改)
2
+ export * from '../behaviors/kb-chain.mjs';
@@ -0,0 +1,2 @@
1
+ // kit: kb-checkpoint 类型面(构建产物,勿手改)
2
+ export * from '../behaviors/kb-checkpoint.mjs';
@@ -0,0 +1,2 @@
1
+ // kit: kb-chunks 类型面(构建产物,勿手改)
2
+ export * from '../behaviors/kb-chunks.mjs';
@@ -0,0 +1,2 @@
1
+ // kit: kb-citation 类型面(构建产物,勿手改)
2
+ export * from '../behaviors/kb-citation.mjs';
@@ -0,0 +1,2 @@
1
+ // kit: kb-clarify 类型面(构建产物,勿手改)
2
+ export * from '../behaviors/kb-clarify.mjs';
@@ -0,0 +1,2 @@
1
+ // kit: kb-conflict 类型面(构建产物,勿手改)
2
+ export * from '../behaviors/kb-conflict.mjs';
@@ -0,0 +1,2 @@
1
+ // kit: kb-connector 类型面(构建产物,勿手改)
2
+ export * from '../behaviors/kb-connector.mjs';