@icen.ai/ui 0.10.0 → 0.11.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.
Files changed (355) hide show
  1. package/AGENTS.md +79 -309
  2. package/LICENSE +21 -0
  3. package/README.md +43 -54
  4. package/dist/base.css +57 -16
  5. package/dist/behaviors/accordion.mjs +1 -1
  6. package/dist/behaviors/ai-branch.mjs +1 -0
  7. package/dist/behaviors/ai-chat.d.mts +2 -2
  8. package/dist/behaviors/ai-chat.mjs +53 -10
  9. package/dist/behaviors/ai-composer.d.mts +5 -5
  10. package/dist/behaviors/ai-composer.mjs +21 -10
  11. package/dist/behaviors/ai-core.mjs +1 -0
  12. package/dist/behaviors/ai-diff.mjs +1 -0
  13. package/dist/behaviors/ai-feedback.mjs +1 -0
  14. package/dist/behaviors/ai-panel.d.mts +2 -2
  15. package/dist/behaviors/ai-panel.mjs +1 -0
  16. package/dist/behaviors/ai-provider.d.mts +1 -1
  17. package/dist/behaviors/ai-provider.mjs +1 -0
  18. package/dist/behaviors/ai-threads.mjs +1 -0
  19. package/dist/behaviors/ai-tool.d.mts +1 -1
  20. package/dist/behaviors/ai-tool.mjs +57 -24
  21. package/dist/behaviors/ai-tools.mjs +937 -28
  22. package/dist/behaviors/autocomplete.d.mts +1 -1
  23. package/dist/behaviors/autocomplete.mjs +1 -0
  24. package/dist/behaviors/back-top.mjs +1 -0
  25. package/dist/behaviors/carousel.mjs +8 -1
  26. package/dist/behaviors/cascader.mjs +14 -0
  27. package/dist/behaviors/charts.mjs +56 -20
  28. package/dist/behaviors/code-block.mjs +9 -1
  29. package/dist/behaviors/command-palette.mjs +3 -3
  30. package/dist/behaviors/context-menu.d.mts +2 -2
  31. package/dist/behaviors/context-menu.mjs +1 -0
  32. package/dist/behaviors/controls.d.mts +8 -8
  33. package/dist/behaviors/controls.mjs +37 -6
  34. package/dist/behaviors/copy.mjs +1 -0
  35. package/dist/behaviors/datatable.d.mts +3 -3
  36. package/dist/behaviors/datatable.mjs +76 -11
  37. package/dist/behaviors/date-picker.mjs +1 -0
  38. package/dist/behaviors/events.d.mts +10 -10
  39. package/dist/behaviors/events.mjs +11 -1
  40. package/dist/behaviors/form-validate.d.mts +10 -1
  41. package/dist/behaviors/form-validate.mjs +266 -4611
  42. package/dist/behaviors/i18n.d.mts +1 -0
  43. package/dist/behaviors/i18n.mjs +2 -0
  44. package/dist/behaviors/input.mjs +3 -0
  45. package/dist/behaviors/kb-access.d.mts +2 -2
  46. package/dist/behaviors/kb-access.mjs +8 -2
  47. package/dist/behaviors/kb-acl.d.mts +2 -2
  48. package/dist/behaviors/kb-acl.mjs +1 -0
  49. package/dist/behaviors/kb-answer.d.mts +2 -2
  50. package/dist/behaviors/kb-answer.mjs +56 -23
  51. package/dist/behaviors/kb-audit.d.mts +2 -2
  52. package/dist/behaviors/kb-audit.mjs +1 -0
  53. package/dist/behaviors/kb-canvas.d.mts +3 -3
  54. package/dist/behaviors/kb-canvas.mjs +1 -0
  55. package/dist/behaviors/kb-chain.d.mts +2 -2
  56. package/dist/behaviors/kb-chain.mjs +1 -0
  57. package/dist/behaviors/kb-checkpoint.d.mts +2 -2
  58. package/dist/behaviors/kb-checkpoint.mjs +1 -0
  59. package/dist/behaviors/kb-chunks.d.mts +2 -2
  60. package/dist/behaviors/kb-chunks.mjs +1 -0
  61. package/dist/behaviors/kb-citation.d.mts +2 -2
  62. package/dist/behaviors/kb-citation.mjs +20 -6
  63. package/dist/behaviors/kb-clarify.d.mts +2 -2
  64. package/dist/behaviors/kb-clarify.mjs +1 -0
  65. package/dist/behaviors/kb-conflict.d.mts +2 -2
  66. package/dist/behaviors/kb-conflict.mjs +1 -0
  67. package/dist/behaviors/kb-connector.d.mts +2 -2
  68. package/dist/behaviors/kb-connector.mjs +1 -0
  69. package/dist/behaviors/kb-core.d.mts +1 -1
  70. package/dist/behaviors/kb-core.mjs +1 -0
  71. package/dist/behaviors/kb-eval.d.mts +2 -2
  72. package/dist/behaviors/kb-eval.mjs +8 -2
  73. package/dist/behaviors/kb-explain.d.mts +2 -2
  74. package/dist/behaviors/kb-explain.mjs +13 -2
  75. package/dist/behaviors/kb-filter.d.mts +2 -2
  76. package/dist/behaviors/kb-filter.mjs +8 -2
  77. package/dist/behaviors/kb-gap.d.mts +2 -2
  78. package/dist/behaviors/kb-gap.mjs +1 -0
  79. package/dist/behaviors/kb-hittest.d.mts +2 -2
  80. package/dist/behaviors/kb-hittest.mjs +2 -1
  81. package/dist/behaviors/kb-metadata.mjs +6 -0
  82. package/dist/behaviors/kb-passage.d.mts +2 -2
  83. package/dist/behaviors/kb-passage.mjs +1 -0
  84. package/dist/behaviors/kb-pipeline.d.mts +2 -2
  85. package/dist/behaviors/kb-pipeline.mjs +1 -0
  86. package/dist/behaviors/kb-qa.mjs +1 -0
  87. package/dist/behaviors/kb-rerank.d.mts +2 -2
  88. package/dist/behaviors/kb-rerank.mjs +1 -0
  89. package/dist/behaviors/kb-retrieval.d.mts +2 -2
  90. package/dist/behaviors/kb-retrieval.mjs +18 -4
  91. package/dist/behaviors/kb-review.d.mts +2 -2
  92. package/dist/behaviors/kb-review.mjs +8 -2
  93. package/dist/behaviors/kb-sandbox.d.mts +2 -2
  94. package/dist/behaviors/kb-sandbox.mjs +7 -1
  95. package/dist/behaviors/kb-segment.d.mts +2 -2
  96. package/dist/behaviors/kb-segment.mjs +2 -1
  97. package/dist/behaviors/kb-select.mjs +8 -2
  98. package/dist/behaviors/kb-sources.d.mts +2 -2
  99. package/dist/behaviors/kb-sources.mjs +1 -0
  100. package/dist/behaviors/kb-sql.d.mts +2 -2
  101. package/dist/behaviors/kb-sql.mjs +1 -0
  102. package/dist/behaviors/kb-trace.d.mts +2 -2
  103. package/dist/behaviors/kb-trace.mjs +9 -3
  104. package/dist/behaviors/kb-visibility.d.mts +2 -2
  105. package/dist/behaviors/kb-visibility.mjs +1 -0
  106. package/dist/behaviors/kb-who-can.d.mts +2 -2
  107. package/dist/behaviors/kb-who-can.mjs +8 -2
  108. package/dist/behaviors/mentions.d.mts +1 -1
  109. package/dist/behaviors/mentions.mjs +1 -0
  110. package/dist/behaviors/modal.d.mts +1 -1
  111. package/dist/behaviors/modal.mjs +1 -0
  112. package/dist/behaviors/notification.d.mts +2 -2
  113. package/dist/behaviors/notification.mjs +14 -3
  114. package/dist/behaviors/panel.mjs +1 -0
  115. package/dist/behaviors/scroll-area.d.mts +17 -0
  116. package/dist/behaviors/scroll-area.mjs +59 -0
  117. package/dist/behaviors/select.mjs +8 -2
  118. package/dist/behaviors/slider.mjs +3 -3
  119. package/dist/behaviors/split-pane.mjs +2 -0
  120. package/dist/behaviors/suggestions.mjs +1 -0
  121. package/dist/behaviors/tabs.mjs +10 -0
  122. package/dist/behaviors/tag-input.mjs +1 -0
  123. package/dist/behaviors/theme-switcher.d.mts +2 -2
  124. package/dist/behaviors/theme-switcher.mjs +17 -2
  125. package/dist/behaviors/theme.mjs +16 -2
  126. package/dist/behaviors/toast.d.mts +2 -2
  127. package/dist/behaviors/toast.mjs +1 -0
  128. package/dist/behaviors/tree-select.mjs +14 -0
  129. package/dist/behaviors/tree.mjs +4 -4
  130. package/dist/behaviors/upload.mjs +1 -0
  131. package/dist/behaviors/url-safety.d.mts +8 -0
  132. package/dist/behaviors/url-safety.mjs +11 -0
  133. package/dist/components/accordion.d.mts +2 -0
  134. package/dist/components/ai-branch.d.mts +2 -0
  135. package/dist/components/ai-chat.css +40 -33
  136. package/dist/components/ai-chat.d.mts +2 -0
  137. package/dist/components/ai-composer.d.mts +2 -0
  138. package/dist/components/ai-context.d.mts +2 -0
  139. package/dist/components/ai-context.mjs +1 -0
  140. package/dist/components/ai-diff.css +6 -6
  141. package/dist/components/ai-diff.d.mts +2 -0
  142. package/dist/components/ai-feedback.d.mts +2 -0
  143. package/dist/components/ai-files.d.mts +2 -0
  144. package/dist/components/ai-message.d.mts +2 -0
  145. package/dist/components/ai-panel.css +12 -10
  146. package/dist/components/ai-reasoning.d.mts +2 -0
  147. package/dist/components/ai-subagent.d.mts +2 -0
  148. package/dist/components/ai-subagent.mjs +1 -0
  149. package/dist/components/ai-threads.d.mts +2 -0
  150. package/dist/components/ai-todo.d.mts +2 -0
  151. package/dist/components/ai-todo.mjs +1 -0
  152. package/dist/components/ai-tool-call.d.mts +2 -0
  153. package/dist/components/ai-tool-call.mjs +1 -0
  154. package/dist/components/ai-tool.css +16 -16
  155. package/dist/components/ai-usage.d.mts +2 -0
  156. package/dist/components/alert.d.mts +2 -0
  157. package/dist/components/autocomplete.css +12 -12
  158. package/dist/components/autocomplete.d.mts +2 -0
  159. package/dist/components/avatar.d.mts +2 -0
  160. package/dist/components/back-top.css +47 -16
  161. package/dist/components/back-top.d.mts +2 -0
  162. package/dist/components/badge.css +1 -1
  163. package/dist/components/badge.d.mts +2 -0
  164. package/dist/components/breadcrumb.css +26 -8
  165. package/dist/components/breadcrumb.d.mts +2 -0
  166. package/dist/components/btn.css +67 -62
  167. package/dist/components/btn.d.mts +2 -0
  168. package/dist/components/card.css +22 -22
  169. package/dist/components/card.d.mts +2 -0
  170. package/dist/components/carousel.d.mts +2 -0
  171. package/dist/components/cascader.css +56 -35
  172. package/dist/components/cascader.d.mts +2 -0
  173. package/dist/components/chart-area.css +46 -0
  174. package/dist/components/chart-area.d.mts +2 -0
  175. package/dist/components/chart-bar.css +66 -19
  176. package/dist/components/chart-bar.d.mts +2 -0
  177. package/dist/components/chart-calendar.d.mts +2 -0
  178. package/dist/components/chart-gauge.css +23 -3
  179. package/dist/components/chart-gauge.d.mts +2 -0
  180. package/dist/components/chart-graph.css +15 -3
  181. package/dist/components/chart-graph.d.mts +2 -0
  182. package/dist/components/chart-heatmap.css +117 -95
  183. package/dist/components/chart-heatmap.d.mts +2 -0
  184. package/dist/components/chart-line.css +54 -0
  185. package/dist/components/chart-line.d.mts +2 -0
  186. package/dist/components/chart-map.d.mts +2 -0
  187. package/dist/components/chart-pie.css +29 -0
  188. package/dist/components/chart-pie.d.mts +2 -0
  189. package/dist/components/chart-radar.css +50 -1
  190. package/dist/components/chart-radar.d.mts +2 -0
  191. package/dist/components/chart-scatter.css +39 -2
  192. package/dist/components/chart-scatter.d.mts +2 -0
  193. package/dist/components/chart-sparkline.css +20 -0
  194. package/dist/components/chart-sparkline.d.mts +2 -0
  195. package/dist/components/chart-stack.css +16 -5
  196. package/dist/components/chart-stack.d.mts +2 -0
  197. package/dist/components/charts.css +80 -35
  198. package/dist/components/charts.d.mts +2 -0
  199. package/dist/components/code-block.css +10 -8
  200. package/dist/components/code-block.d.mts +2 -0
  201. package/dist/components/command-palette.css +45 -38
  202. package/dist/components/command-palette.d.mts +2 -0
  203. package/dist/components/content.css +62 -57
  204. package/dist/components/context-menu.d.mts +2 -0
  205. package/dist/components/copy.css +10 -10
  206. package/dist/components/copy.d.mts +2 -0
  207. package/dist/components/datatable.css +72 -59
  208. package/dist/components/datatable.d.mts +2 -0
  209. package/dist/components/date-picker.css +26 -26
  210. package/dist/components/date-picker.d.mts +2 -0
  211. package/dist/components/desc.d.mts +2 -0
  212. package/dist/components/dropdown.d.mts +2 -0
  213. package/dist/components/empty.css +16 -16
  214. package/dist/components/empty.d.mts +2 -0
  215. package/dist/components/feedback.css +31 -29
  216. package/dist/components/form-validate.css +20 -6
  217. package/dist/components/form-validate.d.mts +2 -0
  218. package/dist/components/form.css +17 -14
  219. package/dist/components/form.d.mts +2 -0
  220. package/dist/components/icon.css +21 -10
  221. package/dist/components/icon.d.mts +2 -0
  222. package/dist/components/input.css +22 -22
  223. package/dist/components/input.d.mts +2 -0
  224. package/dist/components/kb-access.d.mts +2 -0
  225. package/dist/components/kb-acl.d.mts +2 -0
  226. package/dist/components/kb-agent.css +134 -55
  227. package/dist/components/kb-answer.d.mts +2 -0
  228. package/dist/components/kb-audit.d.mts +2 -0
  229. package/dist/components/kb-canvas.d.mts +2 -0
  230. package/dist/components/kb-chain.d.mts +2 -0
  231. package/dist/components/kb-checkpoint.d.mts +2 -0
  232. package/dist/components/kb-chunks.d.mts +2 -0
  233. package/dist/components/kb-citation.d.mts +2 -0
  234. package/dist/components/kb-clarify.d.mts +2 -0
  235. package/dist/components/kb-conflict.d.mts +2 -0
  236. package/dist/components/kb-connector.d.mts +2 -0
  237. package/dist/components/kb-data.css +192 -80
  238. package/dist/components/kb-eval.d.mts +2 -0
  239. package/dist/components/kb-explain.d.mts +2 -0
  240. package/dist/components/kb-filter.d.mts +2 -0
  241. package/dist/components/kb-gap.d.mts +2 -0
  242. package/dist/components/kb-ground.css +165 -73
  243. package/dist/components/kb-hittest.d.mts +2 -0
  244. package/dist/components/kb-ingest.css +308 -113
  245. package/dist/components/kb-metadata.d.mts +2 -0
  246. package/dist/components/kb-ops.css +189 -75
  247. package/dist/components/kb-passage.d.mts +2 -0
  248. package/dist/components/kb-perm.css +158 -87
  249. package/dist/components/kb-pipeline.d.mts +2 -0
  250. package/dist/components/kb-qa.d.mts +2 -0
  251. package/dist/components/kb-rerank.d.mts +2 -0
  252. package/dist/components/kb-retrieval.d.mts +2 -0
  253. package/dist/components/kb-review.d.mts +2 -0
  254. package/dist/components/kb-sandbox.d.mts +2 -0
  255. package/dist/components/kb-search.css +353 -116
  256. package/dist/components/kb-segment.d.mts +2 -0
  257. package/dist/components/kb-sources.d.mts +2 -0
  258. package/dist/components/kb-sql.d.mts +2 -0
  259. package/dist/components/kb-trace.d.mts +2 -0
  260. package/dist/components/kb-visibility.d.mts +2 -0
  261. package/dist/components/kb-who-can.d.mts +2 -0
  262. package/dist/components/kb.css +60 -36
  263. package/dist/components/kb.d.mts +2 -0
  264. package/dist/components/kbd.d.mts +2 -0
  265. package/dist/components/layout.css +10 -10
  266. package/dist/components/layout.d.mts +2 -0
  267. package/dist/components/list.d.mts +2 -0
  268. package/dist/components/material-chinese.css +10 -0
  269. package/dist/components/material-soviet.css +10 -0
  270. package/dist/components/material.css +61 -18
  271. package/dist/components/media-card.d.mts +2 -0
  272. package/dist/components/media.css +22 -27
  273. package/dist/components/mentions.css +18 -17
  274. package/dist/components/mentions.d.mts +2 -0
  275. package/dist/components/menu.css +32 -28
  276. package/dist/components/modal.css +30 -27
  277. package/dist/components/modal.d.mts +2 -0
  278. package/dist/components/nav.css +48 -44
  279. package/dist/components/nav.d.mts +2 -0
  280. package/dist/components/notification.css +31 -25
  281. package/dist/components/notification.d.mts +2 -0
  282. package/dist/components/pagination.css +15 -13
  283. package/dist/components/pagination.d.mts +2 -0
  284. package/dist/components/panel.css +19 -20
  285. package/dist/components/panel.d.mts +2 -0
  286. package/dist/components/pill.css +8 -7
  287. package/dist/components/pill.d.mts +2 -0
  288. package/dist/components/popover.css +32 -23
  289. package/dist/components/popover.d.mts +2 -0
  290. package/dist/components/progress.d.mts +2 -0
  291. package/dist/components/rating.d.mts +2 -0
  292. package/dist/components/result.d.mts +2 -0
  293. package/dist/components/scroll-area.css +84 -112
  294. package/dist/components/scroll-area.d.mts +2 -0
  295. package/dist/components/scroll-area.mjs +1 -0
  296. package/dist/components/segmented.css +47 -29
  297. package/dist/components/segmented.d.mts +2 -0
  298. package/dist/components/select.css +80 -41
  299. package/dist/components/select.d.mts +2 -0
  300. package/dist/components/sidebar.css +42 -38
  301. package/dist/components/sidebar.d.mts +2 -0
  302. package/dist/components/skeleton.d.mts +2 -0
  303. package/dist/components/slider.css +26 -22
  304. package/dist/components/slider.d.mts +2 -0
  305. package/dist/components/spinner.d.mts +2 -0
  306. package/dist/components/split-pane.css +16 -7
  307. package/dist/components/split-pane.d.mts +2 -0
  308. package/dist/components/stat.css +17 -16
  309. package/dist/components/stat.d.mts +2 -0
  310. package/dist/components/steps.css +26 -26
  311. package/dist/components/steps.d.mts +2 -0
  312. package/dist/components/switch.css +78 -39
  313. package/dist/components/switch.d.mts +2 -0
  314. package/dist/components/table.css +54 -32
  315. package/dist/components/table.d.mts +2 -0
  316. package/dist/components/tabs.css +53 -32
  317. package/dist/components/tabs.d.mts +2 -0
  318. package/dist/components/tag-input.css +12 -8
  319. package/dist/components/tag-input.d.mts +2 -0
  320. package/dist/components/tag.css +20 -12
  321. package/dist/components/tag.d.mts +2 -0
  322. package/dist/components/theme-switcher.css +7 -7
  323. package/dist/components/theme-switcher.d.mts +2 -0
  324. package/dist/components/timeline.d.mts +2 -0
  325. package/dist/components/toast.css +34 -30
  326. package/dist/components/toast.d.mts +2 -0
  327. package/dist/components/toolbar.css +19 -18
  328. package/dist/components/toolbar.d.mts +2 -0
  329. package/dist/components/tooltip.css +9 -8
  330. package/dist/components/tooltip.d.mts +2 -0
  331. package/dist/components/tree-select.css +63 -40
  332. package/dist/components/tree-select.d.mts +2 -0
  333. package/dist/components/tree.d.mts +2 -0
  334. package/dist/components/upload.css +9 -11
  335. package/dist/components/upload.d.mts +2 -0
  336. package/dist/index.d.mts +85 -84
  337. package/dist/index.mjs +14764 -14311
  338. package/dist/react.d.mts +18 -18
  339. package/dist/react.mjs +135 -36
  340. package/dist/registry.json +795 -64
  341. package/dist/tokens/colors.css +6 -0
  342. package/dist/tokens/design.css +130 -30
  343. package/dist/tokens/dtcg.json +6189 -1461
  344. package/dist/tokens/figma.variables.json +4107 -345
  345. package/dist/tokens/pixel.css +3 -0
  346. package/dist/tokens/scrollbars.css +40 -0
  347. package/dist/tokens/tokens-studio.json +5191 -271
  348. package/dist/tokens.css +304 -81
  349. package/dist/ui.css +4050 -2148
  350. package/dist/vue.d.mts +17 -17
  351. package/dist/vue.mjs +129 -34
  352. package/docs/spec/design-philosophy.md +5 -5
  353. package/docs/spec/design-primitives.md +10 -10
  354. package/docs/spec/scrollbars.md +46 -0
  355. package/package.json +16 -3
@@ -47,11 +47,10 @@
47
47
  margin-top: var(--icen-density-space-sm);
48
48
  }
49
49
  .icen-sidebar-section-label {
50
- font-size: var(--icen-density-font-size-xs);
50
+ font-size: var(--icen-font-size-caption);
51
51
  font-weight: 600;
52
- color: var(--icen-token-text-faint);
53
- text-transform: uppercase;
54
- letter-spacing: 0.08em;
52
+ color: var(--icen-token-text-muted);
53
+ letter-spacing: var(--icen-letter-spacing-caption);
55
54
  }
56
55
 
57
56
  .icen-sidebar-group { margin-bottom: var(--icen-density-space-xs); }
@@ -61,13 +60,13 @@
61
60
  align-items: center;
62
61
  justify-content: space-between;
63
62
  gap: var(--icen-density-space-xs);
64
- padding: var(--icen-density-space-sm) var(--icen-density-space-sm);
65
- border-radius: var(--icen-radius-sm);
63
+ min-block-size: 26px;
64
+ padding: 3px var(--icen-density-space-sm);
65
+ border-radius: var(--icen-radius-xs);
66
66
  font-family: inherit;
67
- font-size: var(--icen-density-font-size-xs);
67
+ font-size: var(--icen-font-size-caption);
68
68
  font-weight: 600;
69
- text-transform: uppercase;
70
- letter-spacing: 0.05em;
69
+ letter-spacing: var(--icen-letter-spacing-caption);
71
70
  color: var(--icen-token-text-muted);
72
71
  background: none;
73
72
  border: 0;
@@ -77,7 +76,7 @@
77
76
  color var(--icen-tx-fast);
78
77
  }
79
78
  .icen-sidebar-group-title:hover {
80
- background: var(--icen-token-control-hover);
79
+ background: var(--icen-token-fill-hover);
81
80
  color: var(--icen-token-text);
82
81
  }
83
82
  .icen-sidebar-group-title:focus-visible {
@@ -121,10 +120,11 @@
121
120
  inline-size: 100%;
122
121
  display: flex;
123
122
  align-items: center;
124
- gap: var(--icen-density-space-xs);
125
- padding: var(--icen-density-space-sm) var(--icen-density-space-sm);
126
- border-radius: var(--icen-radius-md);
127
- font-size: var(--icen-density-font-size-md);
123
+ gap: 7px;
124
+ min-block-size: var(--icen-control-height-sm);
125
+ padding: 3px var(--icen-density-space-sm);
126
+ border-radius: var(--icen-radius-xs);
127
+ font-size: var(--icen-font-size-control);
128
128
  color: var(--icen-token-text);
129
129
  text-align: start;
130
130
  text-decoration: none;
@@ -136,19 +136,19 @@
136
136
  color var(--icen-tx-fast);
137
137
  }
138
138
  .icen-sidebar-item:hover {
139
- background: var(--icen-token-control-hover);
139
+ background: var(--icen-token-fill-hover);
140
140
  text-decoration: none;
141
141
  color: var(--icen-token-text);
142
142
  }
143
143
  .icen-sidebar-item:focus-visible {
144
144
  outline: none;
145
- box-shadow: var(--icen-ring);
145
+ box-shadow: var(--icen-ring-inset);
146
146
  }
147
147
  .icen-sidebar-item.is-active,
148
148
  .icen-sidebar-item[aria-current='page'] {
149
- background: var(--icen-token-accent-subtle);
150
- color: var(--icen-token-accent-text, var(--icen-token-accent-deep, var(--icen-token-accent)));
151
- font-weight: 500;
149
+ background: var(--icen-token-fill-selected);
150
+ color: var(--icen-token-text);
151
+ font-weight: var(--icen-font-weight-control);
152
152
  }
153
153
  .icen-sidebar-item.is-disabled,
154
154
  .icen-sidebar-item[aria-disabled='true'],
@@ -157,12 +157,12 @@
157
157
  pointer-events: none;
158
158
  }
159
159
  .icen-sidebar-item-icon {
160
- width: 14px;
161
- height: 14px;
160
+ width: 16px;
161
+ height: 16px;
162
162
  flex-shrink: 0;
163
163
  color: var(--icen-token-text-muted);
164
164
  }
165
- .icen-sidebar-item.is-active .icen-sidebar-item-icon { color: var(--icen-token-accent); }
165
+ .icen-sidebar-item.is-active .icen-sidebar-item-icon { color: var(--icen-token-accent-strong); }
166
166
  .icen-sidebar-item-label {
167
167
  flex: 1;
168
168
  overflow: hidden;
@@ -178,11 +178,16 @@
178
178
  padding: 0 5px;
179
179
  font-size: var(--icen-density-font-size-xs);
180
180
  font-weight: 600;
181
- color: var(--icen-token-on-accent);
182
- background: var(--icen-token-accent-strong);
181
+ color: var(--icen-token-text-muted);
182
+ background: var(--icen-token-fill-2);
183
183
  border-radius: var(--icen-radius-full);
184
184
  font-variant-numeric: tabular-nums;
185
185
  }
186
+ .icen-sidebar-item.is-active .icen-sidebar-item-badge,
187
+ .icen-sidebar-item[aria-current='page'] .icen-sidebar-item-badge {
188
+ color: var(--icen-token-on-accent);
189
+ background: var(--icen-token-accent-strong);
190
+ }
186
191
 
187
192
  @media (prefers-reduced-motion: reduce) {
188
193
  .icen-sidebar-group-panel,
@@ -241,22 +246,10 @@
241
246
  margin-top: auto;
242
247
  }
243
248
 
244
- /* 激活态起始缘侧指示条(RTL 镜像到右缘) */
245
- .icen-sidebar-item.is-active,
246
- .icen-sidebar-item[aria-current='page'] {
247
- position: relative;
248
- }
249
+ /* 选中项使用整行圆角底色,不再叠加起始缘指示条(源列表语义)。 */
249
250
  .icen-sidebar-item.is-active::before,
250
251
  .icen-sidebar-item[aria-current='page']::before {
251
- content: '';
252
- position: absolute;
253
- inset-inline-start: 0;
254
- top: 50%;
255
- transform: translateY(-50%);
256
- width: 3px;
257
- height: 60%;
258
- border-radius: var(--icen-radius-full);
259
- background: var(--icen-token-accent);
252
+ content: none;
260
253
  }
261
254
 
262
255
  /* 折叠/轨道模式(icon-only mini sidebar) */
@@ -307,4 +300,15 @@
307
300
  font-size: 0;
308
301
  }
309
302
 
303
+ /* 高对比模式:当前项不能只靠填充色 */
304
+ @media (forced-colors: active) {
305
+ .icen-sidebar-item.is-active,
306
+ .icen-sidebar-item[aria-current='page'] {
307
+ background: Highlight;
308
+ color: HighlightText;
309
+ }
310
+ .icen-sidebar-item.is-active .icen-sidebar-item-icon,
311
+ .icen-sidebar-item[aria-current='page'] .icen-sidebar-item-icon { color: HighlightText; }
312
+ }
313
+
310
314
  }
@@ -0,0 +1,2 @@
1
+ // kit: sidebar 类型面(构建产物,勿手改)
2
+ export * from '../behaviors/sidebar.mjs';
@@ -0,0 +1,2 @@
1
+ // kit: skeleton 类型面(构建产物,勿手改)
2
+ export {};
@@ -28,20 +28,20 @@
28
28
 
29
29
  .icen-slider {
30
30
  position: relative;
31
- height: 20px;
31
+ height: 24px;
32
32
  width: 100%;
33
- --slider-thumb-size: 16px;
34
- --slider-track-height: 6px;
33
+ --slider-thumb-size: 18px;
34
+ --slider-track-height: 4px;
35
35
  }
36
36
  .icen-slider--sm {
37
- height: 16px;
38
- --slider-thumb-size: 12px;
39
- --slider-track-height: 4px;
37
+ height: 18px;
38
+ --slider-thumb-size: 14px;
39
+ --slider-track-height: 3px;
40
40
  }
41
41
  .icen-slider--lg {
42
- height: 24px;
43
- --slider-thumb-size: 20px;
44
- --slider-track-height: 8px;
42
+ height: 28px;
43
+ --slider-thumb-size: 22px;
44
+ --slider-track-height: 5px;
45
45
  }
46
46
  .icen-slider.is-disabled,
47
47
  .icen-slider[aria-disabled='true'],
@@ -66,7 +66,8 @@
66
66
  transform: translateY(-50%);
67
67
  height: var(--slider-track-height);
68
68
  border-radius: var(--icen-radius-full);
69
- background: color-mix(in srgb, var(--icen-token-line-soft) 50%, transparent);
69
+ background: var(--icen-token-fill-3);
70
+ box-shadow: inset 0 0 0 .5px color-mix(in srgb, var(--icen-token-text) 8%, transparent);
70
71
  }
71
72
  .icen-slider--vertical .icen-slider-track {
72
73
  left: 50%; right: auto; /* guard:allow-physical 垂直变体轨道水平居中(translateX(-50%) 配套) */
@@ -83,7 +84,7 @@
83
84
  transform: translateY(-50%);
84
85
  height: var(--slider-track-height);
85
86
  border-radius: var(--icen-radius-full);
86
- background: var(--icen-token-accent);
87
+ background: var(--icen-token-accent-strong);
87
88
  transition: width var(--icen-tx-normal);
88
89
  }
89
90
  .icen-slider--vertical .icen-slider-fill {
@@ -102,7 +103,7 @@
102
103
  transform: translateY(-50%);
103
104
  height: var(--slider-track-height);
104
105
  border-radius: var(--icen-radius-full);
105
- background: var(--icen-token-accent);
106
+ background: var(--icen-token-accent-strong);
106
107
  transition:
107
108
  left var(--icen-tx-normal), /* guard:allow-physical 与 behavior 内联写入的物理 left 配套 */
108
109
  right var(--icen-tx-normal); /* guard:allow-physical 与 behavior 内联写入的物理 right 配套 */
@@ -125,9 +126,11 @@
125
126
  width: var(--slider-thumb-size);
126
127
  height: var(--slider-thumb-size);
127
128
  border-radius: var(--icen-radius-full);
128
- background: var(--icen-token-card);
129
- border: 2px solid var(--icen-token-accent);
130
- box-shadow: var(--icen-token-shadow-card);
129
+ background: var(--icen-token-surface);
130
+ border: .5px solid color-mix(in srgb, var(--icen-token-text) 24%, transparent);
131
+ box-shadow:
132
+ 0 1px 2px color-mix(in srgb, var(--icen-design-shadow-color) 26%, transparent),
133
+ 0 3px 8px -3px color-mix(in srgb, var(--icen-design-shadow-color) 22%, transparent);
131
134
  pointer-events: none;
132
135
  transition:
133
136
  transform var(--icen-tx-fast),
@@ -140,15 +143,16 @@
140
143
  transform: translate(-50%, 50%);
141
144
  }
142
145
  .icen-slider:hover .icen-slider-thumb {
143
- border-color: var(--icen-token-accent-deep, var(--icen-token-accent));
146
+ border-color: color-mix(in srgb, var(--icen-token-text) 34%, transparent);
144
147
  }
145
148
  /* 原生 input 透明,焦点环镜像到可见 thumb 上(消费 --icen-ring-soft) */
146
149
  .icen-slider:focus-within .icen-slider-thumb {
147
- transform: translate(-50%, -50%) scale(1.15);
148
- box-shadow: var(--icen-ring-soft), var(--icen-token-shadow-card);
150
+ transform: translate(-50%, -50%) scale(1.08);
151
+ border-color: var(--icen-token-accent-strong);
152
+ box-shadow: var(--icen-ring-soft), 0 1px 2px color-mix(in srgb, var(--icen-design-shadow-color) 26%, transparent);
149
153
  }
150
154
  .icen-slider--vertical:focus-within .icen-slider-thumb {
151
- transform: translate(-50%, 50%) scale(1.15);
155
+ transform: translate(-50%, 50%) scale(1.08);
152
156
  }
153
157
 
154
158
  .icen-slider-native {
@@ -289,12 +293,12 @@
289
293
  border-right-color: var(--icen-token-text); /* guard:allow-physical 垂直变体左指箭头(物理几何) */
290
294
  }
291
295
 
292
- /* ── 滑块拖拽态(active 时放大) ── */
296
+ /* ── 滑块拖拽态(active 时轻微放大) ── */
293
297
  .icen-slider:active .icen-slider-thumb {
294
- transform: translate(-50%, -50%) scale(1.25);
298
+ transform: translate(-50%, -50%) scale(1.12);
295
299
  }
296
300
  .icen-slider--vertical:active .icen-slider-thumb {
297
- transform: translate(-50%, 50%) scale(1.25);
301
+ transform: translate(-50%, 50%) scale(1.12);
298
302
  }
299
303
 
300
304
  /* ── 填充段带渐变(高级视觉) ── */
@@ -0,0 +1,2 @@
1
+ // kit: slider 类型面(构建产物,勿手改)
2
+ export * from '../behaviors/slider.mjs';
@@ -0,0 +1,2 @@
1
+ // kit: spinner 类型面(构建产物,勿手改)
2
+ export {};
@@ -23,8 +23,8 @@
23
23
  min-height: 200px;
24
24
  overflow: hidden;
25
25
  background: var(--icen-token-surface);
26
- border: 1px solid var(--icen-token-line-soft);
27
- border-radius: var(--icen-radius-md);
26
+ border: 1px solid var(--icen-token-separator-soft);
27
+ border-radius: var(--icen-control-radius-lg);
28
28
  }
29
29
 
30
30
  .icen-split-pane-first {
@@ -44,12 +44,18 @@
44
44
  .icen-split-pane-divider {
45
45
  flex: 0 0 6px;
46
46
  position: relative;
47
- background: var(--icen-token-line-soft);
47
+ background: var(--icen-token-separator-soft);
48
48
  cursor: col-resize;
49
49
  user-select: none;
50
50
  touch-action: none;
51
51
  transition: background var(--icen-tx-fast);
52
52
  }
53
+ .icen-split-pane-divider::before {
54
+ /* 不可见命中扩展(±9px → 24px 触达带宽):分隔条视觉 6px,触屏按 WCAG 2.5.8 打不中 */
55
+ content: '';
56
+ position: absolute;
57
+ inset: -9px 0;
58
+ }
53
59
  .icen-split-pane-divider::after {
54
60
  content: '';
55
61
  position: absolute;
@@ -57,7 +63,7 @@
57
63
  left: 50%; /* guard:allow-physical 分隔条圆点居中(translate(-50%,-50%) 配套) */
58
64
  width: 2px;
59
65
  height: 28px;
60
- border-radius: 1px;
61
66
  /* guard:allow-radius 微构件(bar/dot/track/指示器等图形级,不属容器圆角面) */
67
+ border-radius: 1px;
62
68
  /* guard:allow-radius 微构件(bar/dot/track/指示器等图形级,不属容器圆角面) */
63
69
  background: var(--icen-token-text-faint);
64
70
  opacity: 0.35;
65
71
  transform: translate(-50%, -50%);
@@ -70,11 +76,11 @@
70
76
  }
71
77
  .icen-split-pane-divider:hover,
72
78
  .icen-split-pane-divider.is-dragging {
73
- background: color-mix(in srgb, var(--icen-token-accent) 14%, var(--icen-token-line-soft));
79
+ background: color-mix(in srgb, var(--icen-token-accent) 14%, var(--icen-token-separator-soft));
74
80
  }
75
81
  .icen-split-pane-divider:focus-visible {
76
82
  outline: none;
77
- background: color-mix(in srgb, var(--icen-token-accent) 18%, var(--icen-token-line-soft));
83
+ background: color-mix(in srgb, var(--icen-token-accent) 18%, var(--icen-token-separator-soft));
78
84
  }
79
85
 
80
86
  /* ── 纵向布局(上下分栏) ── */
@@ -99,6 +105,9 @@
99
105
  width: 28px;
100
106
  height: 2px;
101
107
  }
108
+ .icen-split-pane--vertical .icen-split-pane-divider::before {
109
+ inset: 0 -9px; /* 横向变体的命中扩展方向镜像(上下 ±9px) */
110
+ }
102
111
 
103
112
  /* ── 嵌套分栏不应再有外边框 ── */
104
113
  .icen-split-pane .icen-split-pane {
@@ -109,6 +118,6 @@
109
118
  @media (prefers-reduced-motion: reduce) {
110
119
  .icen-split-pane-divider { transition: none; }
111
120
  .icen-split-pane-divider::after { transition: none; }
112
- }
121
+ }
113
122
 
114
123
  }
@@ -0,0 +1,2 @@
1
+ // kit: split-pane 类型面(构建产物,勿手改)
2
+ export * from '../behaviors/split-pane.mjs';
@@ -46,10 +46,10 @@
46
46
  flex-direction: column;
47
47
  gap: var(--icen-density-space-xs);
48
48
  background: var(--icen-token-surface);
49
- border: 1px solid var(--icen-token-line-soft);
50
- border-radius: var(--icen-radius-lg);
51
- padding: var(--icen-density-space-md);
52
- box-shadow: var(--icen-token-shadow-elevated);
49
+ border: 1px solid var(--icen-token-separator-soft);
50
+ border-radius: var(--icen-control-radius-lg);
51
+ padding: var(--icen-density-space-sm) var(--icen-density-space-md) var(--icen-density-space-md);
52
+ box-shadow: none;
53
53
  transition:
54
54
  border-color var(--icen-tx-fast),
55
55
  box-shadow var(--icen-tx-fast),
@@ -61,8 +61,8 @@
61
61
  /* hover 抬升仅可悬停设备生效(触屏关闭,AGENTS 动效守卫) */
62
62
  @media (hover: hover) and (pointer: fine) {
63
63
  .icen-stat-card--interactive:hover {
64
- transform: translateY(-1px);
65
- border-color: color-mix(in srgb, var(--icen-token-accent) 26%, var(--icen-token-outline-soft));
64
+ transform: none;
65
+ border-color: var(--icen-token-control-border-hover);
66
66
  box-shadow: var(--icen-token-shadow-card);
67
67
  }
68
68
  }
@@ -74,10 +74,10 @@
74
74
  gap: var(--icen-density-space-sm);
75
75
  }
76
76
  .icen-stat-label {
77
- color: var(--icen-token-text-faint);
78
- font-size: var(--icen-density-font-size-xs);
79
- letter-spacing: 0.05em;
80
- text-transform: uppercase;
77
+ color: var(--icen-token-text-muted);
78
+ font-size: var(--icen-font-size-caption);
79
+ font-weight: 600;
80
+ letter-spacing: var(--icen-letter-spacing-caption);
81
81
  }
82
82
  .icen-stat-icon {
83
83
  display: inline-flex;
@@ -85,9 +85,9 @@
85
85
  justify-content: center;
86
86
  width: 24px;
87
87
  height: 24px;
88
- border-radius: var(--icen-radius-sm);
88
+ border-radius: var(--icen-radius-xs);
89
89
  background: var(--icen-token-accent-subtle);
90
- color: var(--icen-token-accent);
90
+ color: var(--icen-token-accent-text);
91
91
  }
92
92
  .icen-stat-icon.icen-icon--success { background: color-mix(in srgb, var(--icen-token-success) 14%, transparent); color: var(--icen-token-success); }
93
93
  .icen-stat-icon.icen-icon--warning { background: color-mix(in srgb, var(--icen-token-warning) 14%, transparent); color: var(--icen-token-warning); }
@@ -103,14 +103,15 @@
103
103
  }
104
104
 
105
105
  .icen-stat-num {
106
- font-size: var(--icen-density-font-size-2xl);
107
- font-weight: 700;
106
+ font-size: var(--icen-density-font-size-xl);
107
+ font-weight: 600;
108
108
  line-height: 1.2;
109
+ letter-spacing: -.015em;
109
110
  font-variant-numeric: tabular-nums lining-nums;
110
111
  color: var(--icen-token-text);
111
112
  word-break: break-all;
112
113
  }
113
- .icen-stat-num--accent { color: var(--icen-token-accent); }
114
+ .icen-stat-num--accent { color: var(--icen-token-accent-text); }
114
115
  .icen-stat-num--warning { color: var(--icen-token-warning); }
115
116
  .icen-stat-num--error { color: var(--icen-token-error); }
116
117
  .icen-stat-num--info { color: var(--icen-token-info); }
@@ -206,7 +207,7 @@
206
207
  stroke-width: 3;
207
208
  stroke-linecap: round;
208
209
  stroke-dasharray: 0, 100;
209
- transition: stroke-dasharray var(--icen-tx-slow) var(--icen-ease-out);
210
+ transition: stroke-dasharray var(--icen-duration-slow) var(--icen-ease-out);
210
211
  }
211
212
  .icen-stat-card .icen-stat-ring-fill { stroke: var(--icen-token-accent); }
212
213
 
@@ -0,0 +1,2 @@
1
+ // kit: stat 类型面(构建产物,勿手改)
2
+ export {};
@@ -38,24 +38,24 @@
38
38
 
39
39
  .icen-step-line {
40
40
  position: absolute;
41
- top: 16px;
42
- inset-inline-start: calc(50% + 20px);
43
- inline-size: calc(100% - 40px);
41
+ top: 12px;
42
+ inset-inline-start: calc(50% + 16px);
43
+ inline-size: calc(100% - 32px);
44
44
  height: 1px;
45
- background: var(--icen-token-outline-soft);
45
+ background: var(--icen-token-separator);
46
46
  transition: background-color var(--icen-tx-normal);
47
47
  }
48
48
  .icen-step:last-child .icen-step-line { display: none; }
49
- .icen-step--finish .icen-step-line { background: color-mix(in srgb, var(--icen-token-accent) 40%, transparent); }
49
+ .icen-step--finish .icen-step-line { background: color-mix(in srgb, var(--icen-token-accent) 40%, var(--icen-token-separator)); }
50
50
 
51
51
  .icen-step-dot {
52
- width: 32px;
53
- height: 32px;
52
+ width: 24px;
53
+ height: 24px;
54
54
  border-radius: var(--icen-radius-full);
55
55
  display: inline-flex;
56
56
  align-items: center;
57
57
  justify-content: center;
58
- font-size: var(--icen-density-font-size-sm);
58
+ font-size: var(--icen-density-font-size-xs);
59
59
  font-weight: 600;
60
60
  font-variant-numeric: tabular-nums;
61
61
  position: relative;
@@ -70,33 +70,33 @@
70
70
  color: var(--icen-token-on-accent);
71
71
  }
72
72
  .icen-step--process .icen-step-dot {
73
- background: var(--icen-token-accent-subtle);
74
- color: var(--icen-token-accent);
75
- border: 2px solid var(--icen-token-accent);
73
+ background: var(--icen-token-surface);
74
+ color: var(--icen-token-accent-text);
75
+ border: 1.5px solid var(--icen-token-accent-strong);
76
76
  box-shadow: var(--icen-ring-soft);
77
77
  }
78
78
  .icen-step--wait .icen-step-dot {
79
- background: var(--icen-token-control);
80
- color: var(--icen-token-text-faint);
81
- border: 1px solid var(--icen-token-outline-soft);
79
+ background: var(--icen-token-surface-chrome);
80
+ color: var(--icen-token-text-muted);
81
+ border: 1px solid var(--icen-token-control-border);
82
82
  }
83
83
  .icen-step--error .icen-step-dot {
84
84
  background: var(--icen-token-error-muted);
85
85
  color: var(--icen-token-error);
86
- border: 2px solid var(--icen-token-error);
86
+ border: 1.5px solid var(--icen-token-error);
87
87
  }
88
88
 
89
89
  .icen-step-title {
90
- font-size: var(--icen-density-font-size-md);
91
- font-weight: 500;
90
+ font-size: var(--icen-font-size-control);
91
+ font-weight: var(--icen-font-weight-control);
92
92
  margin-top: var(--icen-density-space-xs);
93
93
  color: var(--icen-token-text);
94
94
  }
95
- .icen-step--wait .icen-step-title { color: var(--icen-token-text-muted); }
95
+ .icen-step--wait .icen-step-title { color: var(--icen-token-text-muted); font-weight: 400; }
96
96
  .icen-step--error .icen-step-title { color: var(--icen-token-error); }
97
97
  .icen-step-desc {
98
98
  font-size: var(--icen-density-font-size-xs);
99
- color: var(--icen-token-text-faint);
99
+ color: var(--icen-token-text-muted);
100
100
  margin-top: 2px;
101
101
  max-width: 160px;
102
102
  margin-inline: auto;
@@ -104,10 +104,10 @@
104
104
  }
105
105
 
106
106
  /* 尺寸变体 */
107
- .icen-steps--sm .icen-step-dot { width: 24px; height: 24px; font-size: var(--icen-density-font-size-xs); }
108
- .icen-steps--sm .icen-step-line { top: 12px; }
109
- .icen-steps--lg .icen-step-dot { width: 40px; height: 40px; font-size: var(--icen-density-font-size-md); }
110
- .icen-steps--lg .icen-step-line { top: 20px; }
107
+ .icen-steps--sm .icen-step-dot { width: 20px; height: 20px; font-size: var(--icen-density-font-size-2xs); }
108
+ .icen-steps--sm .icen-step-line { top: 10px; }
109
+ .icen-steps--lg .icen-step-dot { width: 28px; height: 28px; font-size: var(--icen-density-font-size-sm); }
110
+ .icen-steps--lg .icen-step-line { top: 14px; }
111
111
 
112
112
  /* ── 垂直变体 ── */
113
113
  .icen-steps--vertical {
@@ -122,9 +122,9 @@
122
122
  padding: 0;
123
123
  }
124
124
  .icen-steps--vertical .icen-step-line {
125
- top: 36px;
125
+ top: 28px;
126
126
  bottom: calc(-1 * var(--icen-density-space-md));
127
- inset-inline-start: 16px;
127
+ inset-inline-start: 12px;
128
128
  width: 1px;
129
129
  height: auto;
130
130
  }
@@ -198,7 +198,7 @@
198
198
  background: var(--icen-token-accent);
199
199
  transform-origin: left;
200
200
  transform: scaleX(0);
201
- transition: transform var(--icen-tx-slow) var(--icen-ease-out);
201
+ transition: transform var(--icen-duration-slow) var(--icen-ease-out);
202
202
  }
203
203
  .icen-steps--progress .icen-step--finish .icen-step-line::after { transform: scaleX(1); }
204
204
 
@@ -0,0 +1,2 @@
1
+ // kit: steps 类型面(构建产物,勿手改)
2
+ export { initSteps } from '../behaviors/controls.mjs';