@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
@@ -1,115 +1,87 @@
1
1
  @layer icen.components {
2
- /*
3
- * @icen.ai/ui — Component: scroll-area(自定义滚动容器)
4
- *
5
- * 全局 base.css 已经提供细薄滚动条(所有元素默认生效)。
6
- * 本组件提供"显式带视觉边界的滚动区"——常用于:
7
- * - 侧边栏长列表
8
- * - 下拉面板内的滚动区
9
- * - 需要限定高度并强调"这里可以滚"的容器
10
- *
11
- * 完整契约:
12
- * <div class="icen-scroll-area [--sm|--lg] [--both]">
13
- * 任意超长内容…
14
- * </div>
15
- *
16
- * 横向专用:<div class="icen-scroll-area icen-scroll-area--x">…</div>
17
- * 垂直专用:<div class="icen-scroll-area icen-scroll-area--y">…</div>
18
- *
19
- * 变体:
20
- * --x 仅横向滚动(纵向裁剪)
21
- * --y 仅纵向滚动(横向裁剪)
22
- * --both 双向滚动
23
- * --sm 窄滚动条(6px 宽)
24
- * --lg 正常滚动条(10px 宽,默认 8px)
25
- * --inset 内嵌阴影式(类似 code 编辑器)
26
- */
27
-
28
- .icen-scroll-area {
29
- overflow: auto;
30
- overscroll-behavior: contain;
31
- -webkit-overflow-scrolling: touch;
32
- scroll-behavior: smooth;
33
- }
34
-
35
- .icen-scroll-area--x { overflow-x: auto; overflow-y: hidden; }
36
- .icen-scroll-area--y { overflow-x: hidden; overflow-y: auto; }
37
- .icen-scroll-area--both { overflow: auto; }
38
-
39
- /* ── 尺寸变体:覆盖全局滚动条宽度 ── */
40
- .icen-scroll-area--sm {
41
- scrollbar-width: thin;
42
- }
43
- .icen-scroll-area--sm::-webkit-scrollbar {
44
- width: 6px;
45
- height: 6px;
46
- }
47
- .icen-scroll-area--sm::-webkit-scrollbar-thumb {
48
- background: color-mix(in srgb, var(--icen-token-text-faint) 28%, transparent);
49
- border-radius: 3px;
50
2
  /* guard:allow-radius 微构件(bar/dot/track/指示器等图形级,不属容器圆角面) */
51
- border: 0;
52
- }
53
-
54
- .icen-scroll-area--lg {
55
- scrollbar-width: auto;
56
- }
57
- .icen-scroll-area--lg::-webkit-scrollbar {
58
- width: 12px;
59
- height: 12px;
60
- }
61
- .icen-scroll-area--lg::-webkit-scrollbar-thumb {
62
- background: color-mix(in srgb, var(--icen-token-text-faint) 35%, transparent);
63
- border-radius: var(--icen-radius-xs);
64
- border: 2px solid transparent;
65
- background-clip: padding-box;
66
- }
67
- .icen-scroll-area--lg::-webkit-scrollbar-thumb:hover {
68
- background: color-mix(in srgb, var(--icen-token-text-faint) 50%, transparent);
69
- background-clip: padding-box;
70
- }
71
-
72
- /* ── 内嵌变体:带视觉边界 ── */
73
- .icen-scroll-area--inset {
74
- background: var(--icen-token-bg-soft);
75
- border: 1px solid var(--icen-token-line-soft);
76
- border-radius: var(--icen-radius-md);
77
- box-shadow: var(--icen-token-shadow-inset);
78
- padding: var(--icen-density-space-sm);
79
- }
80
- .icen-scroll-area--inset:focus-visible {
81
- outline: none;
82
- border-color: var(--icen-control-focus-border);
83
- box-shadow: var(--icen-control-focus-shadow);
84
- }
85
-
86
- /* ── 渐隐遮罩(可选):上下边缘渐隐,暗示可滚动 ── */
87
- .icen-scroll-area--fade {
88
- -webkit-mask-image: linear-gradient(
89
- to bottom,
90
- transparent 0,
91
- transparent 0,
92
- #000 var(--icen-density-space-sm),
93
- #000 calc(100% - var(--icen-density-space-sm)),
94
- transparent 100%
95
- );
96
- mask-image: linear-gradient(
97
- to bottom,
98
- transparent 0,
99
- #000 var(--icen-density-space-sm),
100
- #000 calc(100% - var(--icen-density-space-sm)),
101
- transparent 100%
102
- );
103
- }
104
-
105
- /* ── 可被键盘聚焦的滚动容器 ── */
106
- .icen-scroll-area[tabindex='0']:focus-visible {
107
- outline: none;
108
- box-shadow: var(--icen-ring-soft);
109
- border-radius: var(--icen-radius-md);
110
- }
111
-
112
- @media (prefers-reduced-motion: reduce) {
113
- .icen-scroll-area { scroll-behavior: auto; }
114
- }
3
+ /*
4
+ * @icen.ai/ui — Component: scroll-area(自定义滚动容器)
5
+ *
6
+ * 全局 base.css 已经提供细薄滚动条(所有元素默认生效)。
7
+ * 本组件提供"显式带视觉边界的滚动区"——常用于:
8
+ * - 侧边栏长列表
9
+ * - 下拉面板内的滚动区
10
+ * - 需要限定高度并强调"这里可以滚"的容器
11
+ *
12
+ * 完整契约:
13
+ * <div class="icen-scroll-area [--sm|--lg] [--both]">
14
+ * 任意超长内容…
15
+ * </div>
16
+ *
17
+ * 横向专用:<div class="icen-scroll-area icen-scroll-area--x">…</div>
18
+ * 垂直专用:<div class="icen-scroll-area icen-scroll-area--y">…</div>
19
+ *
20
+ * 变体:
21
+ * --x 仅横向滚动(纵向裁剪)
22
+ * --y 仅纵向滚动(横向裁剪)
23
+ * --both 双向滚动
24
+ * --sm 窄滚动条(6px 宽)
25
+ * --lg 正常滚动条(12px 宽,默认 8px)
26
+ * --inset 内嵌阴影式(类似 code 编辑器)
27
+ */
28
+
29
+ .icen-scroll-area {
30
+ overflow: auto;
31
+ overscroll-behavior: contain;
32
+ -webkit-overflow-scrolling: touch;
33
+ scroll-behavior: smooth;
34
+ }
35
+
36
+ .icen-scroll-area--x { overflow-x: auto; overflow-y: hidden; }
37
+ .icen-scroll-area--y { overflow-x: hidden; overflow-y: auto; }
38
+ .icen-scroll-area--both { overflow: auto; }
39
+
40
+ /* Size variants share the global track, thumb and visibility policy. */
41
+ .icen-scroll-area--sm { --icen-token-scrollbar-size: var(--icen-token-scrollbar-size-sm); }
42
+ .icen-scroll-area--lg { --icen-token-scrollbar-size: var(--icen-token-scrollbar-size-lg); }
43
+
44
+ /* ── 内嵌变体:带视觉边界 ── */
45
+ .icen-scroll-area--inset {
46
+ background: var(--icen-token-control);
47
+ border: 1px solid var(--icen-token-separator-soft);
48
+ border-radius: var(--icen-control-radius-lg);
49
+ box-shadow: var(--icen-token-shadow-field);
50
+ padding: var(--icen-density-space-sm);
51
+ }
52
+ .icen-scroll-area--inset:focus-visible {
53
+ outline: none;
54
+ border-color: var(--icen-control-focus-border);
55
+ box-shadow: var(--icen-control-focus-shadow);
56
+ }
57
+
58
+ /* ── 渐隐遮罩(可选):上下边缘渐隐,暗示可滚动 ── */
59
+ .icen-scroll-area--fade {
60
+ -webkit-mask-image: linear-gradient(
61
+ to bottom,
62
+ transparent 0,
63
+ transparent 0,
64
+ #000 var(--icen-density-space-sm),
65
+ #000 calc(100% - var(--icen-density-space-sm)),
66
+ transparent 100%
67
+ );
68
+ mask-image: linear-gradient(
69
+ to bottom,
70
+ transparent 0,
71
+ #000 var(--icen-density-space-sm),
72
+ #000 calc(100% - var(--icen-density-space-sm)),
73
+ transparent 100%
74
+ );
75
+ }
76
+
77
+ /* ── 可被键盘聚焦的滚动容器 ── */
78
+ .icen-scroll-area[tabindex='0']:focus-visible {
79
+ outline: none;
80
+ box-shadow: var(--icen-ring-soft);
81
+ border-radius: var(--icen-radius-md);
82
+ }
83
+
84
+ @media (prefers-reduced-motion: reduce) {
85
+ .icen-scroll-area { scroll-behavior: auto; }
86
+ }
115
87
 
116
88
  }
@@ -0,0 +1,2 @@
1
+ // kit: scroll-area 类型面(构建产物,勿手改)
2
+ export * from '../behaviors/scroll-area.mjs';
@@ -1,2 +1,3 @@
1
1
  // @icen.ai/ui — kit: scroll-area(CSS + behavior 一行入口;构建产物,勿手改)
2
2
  import './scroll-area.css';
3
+ export * from '../behaviors/scroll-area.mjs';
@@ -45,24 +45,26 @@
45
45
  display: inline-flex;
46
46
  align-items: center;
47
47
  gap: 2px;
48
- padding: 2px;
48
+ padding: 3px;
49
49
  background: var(--icen-token-panel);
50
- border: 1px solid var(--icen-token-outline-soft);
51
- border-radius: var(--icen-radius-md);
52
- box-shadow: var(--icen-token-shadow-inset);
50
+ border: 1px solid var(--icen-token-control-border);
51
+ border-radius: var(--icen-control-radius-lg);
52
+ box-shadow: var(--icen-token-shadow-field);
53
53
  }
54
54
 
55
55
  .icen-segmented-item {
56
56
  display: flex;
57
57
  align-items: center;
58
- gap: var(--icen-density-space-xs);
59
- padding: var(--icen-density-space-xs) calc(var(--icen-density-space-sm) + 2px);
60
- font-size: var(--icen-density-font-size-sm);
61
- font-weight: 500;
58
+ justify-content: center;
59
+ gap: var(--icen-control-gap-sm);
60
+ min-block-size: calc(var(--icen-control-height-sm) - 8px);
61
+ padding: 0 var(--icen-control-padding-inline-sm);
62
+ font-size: var(--icen-font-size-control);
63
+ font-weight: var(--icen-font-weight-control);
62
64
  border: none;
63
65
  background: transparent;
64
66
  cursor: pointer;
65
- border-radius: var(--icen-radius-sm);
67
+ border-radius: max(0px, calc(var(--icen-control-radius-lg) - 3px));
66
68
  color: var(--icen-token-text-muted);
67
69
  -webkit-tap-highlight-color: transparent;
68
70
  transition:
@@ -72,7 +74,7 @@
72
74
  }
73
75
  .icen-segmented-item:hover:not(.is-active):not(:disabled) {
74
76
  color: var(--icen-token-text);
75
- background: var(--icen-token-surface-hover);
77
+ background: var(--icen-token-fill-hover);
76
78
  }
77
79
  .icen-segmented-item:focus-visible {
78
80
  outline: none;
@@ -82,47 +84,51 @@
82
84
  .icen-segmented-item[aria-checked='true'] {
83
85
  background: var(--icen-token-accent-strong);
84
86
  color: var(--icen-token-on-accent);
85
- box-shadow: var(--icen-token-shadow-elevated);
87
+ box-shadow: var(--icen-token-shadow-control);
86
88
  }
87
89
  .icen-segmented-item:disabled,
88
90
  .icen-segmented-item[aria-disabled='true'] {
89
91
  opacity: var(--icen-disabled-opacity);
90
92
  cursor: not-allowed;
91
93
  }
92
- .icen-segmented-item svg { width: 13px; height: 13px; flex-shrink: 0; }
94
+ .icen-segmented-item svg { width: 14px; height: 14px; flex-shrink: 0; }
93
95
 
94
96
  /* 尺寸 */
95
97
  .icen-segmented--sm .icen-segmented-item {
96
- padding: 2px var(--icen-density-space-sm);
97
- font-size: var(--icen-density-font-size-xs);
98
+ min-block-size: calc(var(--icen-control-height-sm) - 12px);
99
+ padding: 0 var(--icen-density-space-sm);
100
+ font-size: var(--icen-density-font-size-sm);
98
101
  }
99
102
  .icen-segmented--lg .icen-segmented-item {
100
- padding: var(--icen-density-space-xs) var(--icen-density-space-md);
101
- font-size: var(--icen-density-font-size-md);
103
+ min-block-size: calc(var(--icen-control-height-md) - 6px);
104
+ padding: 0 var(--icen-density-space-md);
105
+ font-size: var(--icen-font-size-control);
102
106
  }
103
107
 
104
108
  /* ── 切换组(segmented 同族变体) ── */
105
109
  .icen-toggle-group {
106
110
  display: inline-flex;
107
111
  align-items: center;
108
- gap: var(--icen-density-space-xs);
109
- padding: var(--icen-density-space-xs);
112
+ gap: 2px;
113
+ padding: 3px;
110
114
  background: var(--icen-token-panel);
111
- border: 1px solid var(--icen-token-outline-soft);
112
- border-radius: var(--icen-radius-md);
115
+ border: 1px solid var(--icen-token-control-border);
116
+ border-radius: var(--icen-control-radius-lg);
113
117
  }
114
118
 
115
119
  .icen-toggle-item {
116
120
  display: flex;
117
121
  align-items: center;
118
- gap: var(--icen-density-space-xs);
119
- padding: var(--icen-density-space-xs) var(--icen-density-space-sm);
120
- font-size: var(--icen-density-font-size-sm);
121
- font-weight: 500;
122
+ justify-content: center;
123
+ gap: var(--icen-control-gap-sm);
124
+ min-block-size: calc(var(--icen-control-height-sm) - 8px);
125
+ padding: 0 var(--icen-control-padding-inline-sm);
126
+ font-size: var(--icen-font-size-control);
127
+ font-weight: var(--icen-font-weight-control);
122
128
  border: none;
123
129
  background: transparent;
124
130
  cursor: pointer;
125
- border-radius: var(--icen-radius-xs);
131
+ border-radius: max(0px, calc(var(--icen-control-radius-lg) - 3px));
126
132
  color: var(--icen-token-text-muted);
127
133
  transition:
128
134
  background-color var(--icen-tx-fast),
@@ -130,7 +136,7 @@
130
136
  }
131
137
  .icen-toggle-item:hover:not(.is-active):not(:disabled) {
132
138
  color: var(--icen-token-text);
133
- background: var(--icen-token-control-hover);
139
+ background: var(--icen-token-fill-hover);
134
140
  }
135
141
  .icen-toggle-item:focus-visible {
136
142
  outline: none;
@@ -156,13 +162,14 @@
156
162
  .icen-stepper {
157
163
  display: inline-flex;
158
164
  align-items: stretch;
165
+ min-block-size: var(--icen-control-height-md);
159
166
  background: var(--icen-token-control);
160
- border: 1px solid var(--icen-token-outline-soft);
161
- border-radius: var(--icen-radius-md);
167
+ border: 1px solid var(--icen-token-control-border);
168
+ border-radius: var(--icen-control-radius);
162
169
  overflow: hidden;
163
170
  transition: border-color var(--icen-tx-fast), box-shadow var(--icen-tx-fast);
164
171
  }
165
- .icen-stepper:hover { border-color: var(--icen-hover-border); }
172
+ .icen-stepper:hover { border-color: var(--icen-token-control-border-hover); }
166
173
  .icen-stepper:focus-within {
167
174
  border-color: var(--icen-control-focus-border);
168
175
  box-shadow: var(--icen-control-focus-shadow);
@@ -344,4 +351,15 @@
344
351
  background: color-mix(in srgb, var(--icen-token-success) 8%, transparent);
345
352
  }
346
353
 
354
+ /* 高对比模式:分段/切换组的选中段不能只靠白面阴影 */
355
+ @media (forced-colors: active) {
356
+ .icen-segmented-item.is-active,
357
+ .icen-segmented-item[aria-checked='true'],
358
+ .icen-toggle-item.is-active,
359
+ .icen-toggle-group-btn.is-active {
360
+ outline: 1px solid Highlight;
361
+ outline-offset: -1px;
362
+ }
363
+ }
364
+
347
365
  }
@@ -0,0 +1,2 @@
1
+ // kit: segmented 类型面(构建产物,勿手改)
2
+ export { initInput, initSegmented, initStepper } from '../behaviors/controls.mjs';
@@ -45,7 +45,7 @@
45
45
  */
46
46
 
47
47
  .icen-select {
48
- --select-height: var(--icen-density-input-height-md);
48
+ --select-height: var(--icen-control-height-md);
49
49
  position: relative;
50
50
  inline-size: 100%;
51
51
  }
@@ -54,25 +54,28 @@
54
54
  position: relative;
55
55
  display: flex;
56
56
  align-items: center;
57
- gap: var(--icen-density-space-xs);
57
+ gap: var(--icen-control-gap-sm);
58
58
  inline-size: 100%;
59
59
  height: var(--select-height);
60
- padding: 0 var(--icen-density-space-sm);
61
- font-size: var(--icen-density-font-size-md);
60
+ padding: 0 var(--icen-field-padding-inline);
61
+ font-family: var(--icen-font-body);
62
+ font-size: var(--icen-font-size-control);
63
+ line-height: 1.4;
62
64
  text-align: start;
63
65
  background: var(--icen-token-control);
64
66
  color: var(--icen-token-text);
65
- border: 1px solid var(--icen-token-outline-soft);
66
- border-radius: var(--icen-radius-md);
67
- box-shadow: var(--icen-token-shadow-inset);
67
+ border: var(--icen-control-border-width) solid var(--icen-token-control-border);
68
+ border-radius: var(--icen-control-radius);
69
+ box-shadow: var(--icen-token-shadow-field);
68
70
  cursor: pointer;
69
71
  transition:
72
+ background-color var(--icen-tx-fast),
70
73
  border-color var(--icen-tx-fast),
71
74
  box-shadow var(--icen-tx-fast);
72
- padding-inline-end: var(--icen-density-space-sm);
75
+ padding-inline-end: calc(var(--icen-field-padding-inline) + 18px);
73
76
  }
74
77
  .icen-select-trigger:hover:not(:disabled) {
75
- border-color: var(--icen-hover-border);
78
+ border-color: var(--icen-token-control-border-hover);
76
79
  }
77
80
  .icen-select-trigger:focus-visible {
78
81
  outline: none;
@@ -88,8 +91,8 @@
88
91
  }
89
92
 
90
93
  /* 尺寸变体(与 input-wrap 对齐) */
91
- .icen-select-trigger--sm { height: var(--icen-density-input-height-sm); padding: 0 10px; font-size: var(--icen-density-font-size-sm); }
92
- .icen-select-trigger--lg { height: var(--icen-density-input-height-lg); padding: 0 var(--icen-density-space-md); font-size: var(--icen-density-font-size-lg); }
94
+ .icen-select-trigger--sm { height: var(--icen-control-height-sm); padding-inline: var(--icen-field-padding-inline-sm); font-size: var(--icen-density-font-size-sm); }
95
+ .icen-select-trigger--lg { height: var(--icen-control-height-lg); padding-inline: var(--icen-control-padding-inline-lg); font-size: var(--icen-density-font-size-lg); }
93
96
 
94
97
  .icen-select-leading {
95
98
  display: inline-flex;
@@ -107,20 +110,21 @@
107
110
  white-space: nowrap;
108
111
  }
109
112
  .icen-select-value.is-empty {
110
- color: color-mix(in srgb, var(--icen-token-text-faint) 60%, transparent);
113
+ color: var(--icen-token-text-faint); /* 全量 faint:60% 混透浅色仅 ~2.4:1 低于 AA(faint 全量 ≥4.9:1) */
111
114
  }
112
115
 
113
116
  .icen-select-chevron {
114
117
  position: absolute;
115
- inset-inline-end: var(--icen-density-space-sm);
118
+ inset-inline-end: var(--icen-field-padding-inline);
116
119
  inset-block-start: 50%;
117
120
  translate: 0 -50%;
118
- inline-size: 16px;
119
- block-size: 16px;
121
+ inline-size: 12px;
122
+ block-size: 12px;
120
123
  flex: none;
121
124
  color: var(--icen-token-text-muted);
125
+ opacity: .82;
122
126
  pointer-events: none;
123
- transition: transform var(--icen-tx-fast);
127
+ transition: transform var(--icen-tx-fast), opacity var(--icen-tx-fast);
124
128
  }
125
129
  .icen-select.is-open .icen-select-chevron { transform: rotate(180deg); }
126
130
 
@@ -131,11 +135,11 @@
131
135
  z-index: var(--icen-z-popover);
132
136
  overflow-y: auto;
133
137
  overscroll-behavior: contain;
134
- padding: var(--icen-density-space-sm);
135
- background: var(--icen-token-card-strong);
136
- border: 1px solid var(--icen-token-outline);
138
+ padding: var(--icen-density-space-xs);
139
+ background: var(--icen-token-surface);
140
+ border: 1px solid var(--icen-token-material-edge);
137
141
  border-radius: var(--icen-radius-lg);
138
- box-shadow: var(--icen-token-shadow-overlay);
142
+ box-shadow: var(--icen-token-material-light), var(--icen-token-shadow-elevated);
139
143
  transform-origin: top center;
140
144
  animation: icen-pop-in var(--icen-tx-fast);
141
145
  }
@@ -146,29 +150,47 @@
146
150
  .icen-select-option {
147
151
  display: flex;
148
152
  align-items: center;
149
- gap: var(--icen-density-space-xs);
153
+ gap: var(--icen-control-gap-sm);
150
154
  width: 100%;
151
- padding: 6px var(--icen-density-space-sm);
152
- font-size: var(--icen-density-font-size-sm);
155
+ min-block-size: var(--icen-control-height-sm);
156
+ padding: 4px var(--icen-density-space-sm);
157
+ font-size: var(--icen-font-size-control);
153
158
  text-align: start;
154
159
  border: none;
155
160
  background: transparent;
156
161
  color: var(--icen-token-text);
157
- border-radius: var(--icen-radius-sm);
162
+ border-radius: var(--icen-radius-xs);
158
163
  cursor: pointer;
159
164
  transition:
160
165
  background-color var(--icen-tx-fast),
161
166
  color var(--icen-tx-fast);
162
167
  }
163
- .icen-select-option:hover:not(.is-disabled) { background: var(--icen-token-fill-1); }
168
+ .icen-select-option:hover:not(.is-disabled) { background: var(--icen-token-fill-hover); }
164
169
  .icen-select-option.is-focused {
165
- background: var(--icen-token-fill-2);
170
+ background: var(--icen-token-fill-selected);
166
171
  color: var(--icen-token-text);
167
172
  }
173
+ /* A checked popup item carries a trailing glyph, the desktop convention; color
174
+ * and weight remain redundant signals rather than the only distinction. */
168
175
  .icen-select-option.is-selected {
169
- color: var(--icen-token-accent-text);
170
- font-weight: 500;
171
- background: var(--icen-token-accent-subtle);
176
+ color: var(--icen-token-text);
177
+ font-weight: var(--icen-font-weight-control);
178
+ background: var(--icen-token-fill-selected);
179
+ }
180
+ .icen-select-option.is-selected::after {
181
+ content: '';
182
+ inline-size: 12px;
183
+ block-size: 12px;
184
+ flex: none;
185
+ margin-inline-start: auto;
186
+ background: currentColor;
187
+ mask: var(--icen-token-icon-check) center / contain no-repeat;
188
+ -webkit-mask: var(--icen-token-icon-check) center / contain no-repeat;
189
+ }
190
+ .icen-select-option.is-selected.is-focused,
191
+ .icen-select-option.is-selected:focus-visible {
192
+ outline: 2px solid var(--icen-token-accent);
193
+ outline-offset: -2px;
172
194
  }
173
195
  .icen-select-option.is-disabled {
174
196
  opacity: 0.4;
@@ -181,11 +203,11 @@
181
203
  margin-top: 4px;
182
204
  }
183
205
  .icen-select-group-label {
184
- padding: 6px var(--icen-density-space-sm) 2px;
185
- font-size: var(--icen-density-font-size-xs);
186
- color: var(--icen-token-text-faint);
187
- text-transform: uppercase;
188
- letter-spacing: 0.05em;
206
+ padding: 8px var(--icen-density-space-sm) 3px;
207
+ font-size: var(--icen-font-size-caption);
208
+ font-weight: 600;
209
+ color: var(--icen-token-text-muted);
210
+ letter-spacing: var(--icen-letter-spacing-caption);
189
211
  }
190
212
 
191
213
  /* 空状态(behavior 渲染 no-match) */
@@ -199,11 +221,11 @@
199
221
  /* ── 搜索框(data-icen-select-search 时 behavior 自动注入) ── */
200
222
  .icen-select-search {
201
223
  padding: var(--icen-density-space-xs);
202
- border-bottom: 1px solid var(--icen-token-outline-soft);
203
- margin-bottom: 4px;
224
+ border-bottom: 1px solid var(--icen-token-separator-soft);
225
+ margin-bottom: var(--icen-density-space-xs);
204
226
  position: sticky;
205
227
  top: 0;
206
- background: var(--icen-token-card-strong);
228
+ background: var(--icen-token-surface);
207
229
  z-index: 1;
208
230
  }
209
231
  .icen-select-search-input { min-inline-size: 0; }
@@ -261,8 +283,8 @@
261
283
  align-items: center;
262
284
  justify-content: center;
263
285
  flex: none;
264
- inline-size: 16px;
265
- block-size: 20px;
286
+ inline-size: 24px; /* WCAG 2.5.8 下限:16px 的移除钮在桌面端也易误触(移除是删数据操作) */
287
+ block-size: 24px;
266
288
  margin-inline-start: var(--icen-density-space-xs);
267
289
  padding: 0;
268
290
  border: 0;
@@ -284,6 +306,13 @@
284
306
  padding-bottom: 4px;
285
307
  flex-wrap: wrap;
286
308
  }
309
+ /* sm 档的 chips 需要压到 24px 拇指高度内:24px chip + 2px×2 内距 = 28px 控件高。 */
310
+ .icen-select[data-icen-select-multiple]:has(> .icen-select-trigger--sm) .icen-select-trigger {
311
+ padding-block: 2px;
312
+ }
313
+ .icen-select[data-icen-select-multiple]:has(> .icen-select-trigger--sm) > .icen-select-chips {
314
+ padding-block: 2px;
315
+ }
287
316
 
288
317
  @media (prefers-reduced-motion: reduce) {
289
318
  .icen-select-panel { animation: none; }
@@ -344,7 +373,17 @@
344
373
 
345
374
  .icen-select-panel:has(> .icen-select-search) { scroll-padding-block-start: calc(var(--icen-density-input-height-sm) + 3 * var(--icen-density-space-xs) + var(--icen-density-space-sm) + 1px); }
346
375
 
347
- /* Popup affordance is carried by the control surface, not a direction glyph. */
348
- .icen-select-chevron { display: none; }
376
+ /* Clear affordance replaces the popup glyph in the trailing slot; the two are
377
+ * never shown together, so the trigger keeps one stable optical end. */
378
+ .icen-select:has(.icen-select-clear:not([hidden])) .icen-select-chevron { display: none; }
379
+
380
+ /* 高对比模式:选中项用系统高亮,勾选 glyph 保留在 HighlightText 上 */
381
+ @media (forced-colors: active) {
382
+ .icen-select-option.is-selected {
383
+ background: Highlight;
384
+ color: HighlightText;
385
+ }
386
+ .icen-select-option.is-selected::after { background: HighlightText; }
387
+ }
349
388
 
350
389
  }
@@ -0,0 +1,2 @@
1
+ // kit: select 类型面(构建产物,勿手改)
2
+ export * from '../behaviors/select.mjs';