@icen.ai/ui 0.9.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 (431) hide show
  1. package/AGENTS.md +82 -254
  2. package/LICENSE +21 -0
  3. package/README.md +60 -96
  4. package/dist/base.css +258 -188
  5. package/dist/behaviors/accordion.mjs +8 -8
  6. package/dist/behaviors/ai-branch.d.mts +1 -1
  7. package/dist/behaviors/ai-branch.mjs +1011 -94
  8. package/dist/behaviors/ai-chat.d.mts +9 -9
  9. package/dist/behaviors/ai-chat.mjs +1122 -169
  10. package/dist/behaviors/ai-composer.d.mts +47 -15
  11. package/dist/behaviors/ai-composer.mjs +2018 -534
  12. package/dist/behaviors/ai-core.d.mts +1 -1
  13. package/dist/behaviors/ai-core.mjs +1017 -107
  14. package/dist/behaviors/ai-diff.mjs +1020 -127
  15. package/dist/behaviors/ai-feedback.d.mts +1 -1
  16. package/dist/behaviors/ai-feedback.mjs +1036 -126
  17. package/dist/behaviors/ai-panel.d.mts +10 -10
  18. package/dist/behaviors/ai-panel.mjs +1285 -266
  19. package/dist/behaviors/ai-provider.d.mts +1 -1
  20. package/dist/behaviors/ai-provider.mjs +1004 -101
  21. package/dist/behaviors/ai-threads.d.mts +1 -1
  22. package/dist/behaviors/ai-threads.mjs +1069 -154
  23. package/dist/behaviors/ai-tool.d.mts +3 -3
  24. package/dist/behaviors/ai-tool.mjs +2087 -413
  25. package/dist/behaviors/ai-tools.d.mts +89 -16
  26. package/dist/behaviors/ai-tools.mjs +5365 -380
  27. package/dist/behaviors/autocomplete.d.mts +53 -0
  28. package/dist/behaviors/autocomplete.mjs +1601 -0
  29. package/dist/behaviors/back-top.d.mts +1 -1
  30. package/dist/behaviors/back-top.mjs +952 -14
  31. package/dist/behaviors/carousel.d.mts +1 -1
  32. package/dist/behaviors/carousel.mjs +914 -12
  33. package/dist/behaviors/cascader.d.mts +48 -0
  34. package/dist/behaviors/cascader.mjs +1867 -0
  35. package/dist/behaviors/charts.d.mts +72 -8
  36. package/dist/behaviors/charts.mjs +1953 -272
  37. package/dist/behaviors/code-block.d.mts +36 -0
  38. package/dist/behaviors/code-block.mjs +1619 -0
  39. package/dist/behaviors/command-palette.d.mts +9 -6
  40. package/dist/behaviors/command-palette.mjs +164 -62
  41. package/dist/behaviors/context-menu.d.mts +10 -9
  42. package/dist/behaviors/context-menu.mjs +1113 -44
  43. package/dist/behaviors/controls.d.mts +21 -21
  44. package/dist/behaviors/controls.mjs +1024 -134
  45. package/dist/behaviors/copy.d.mts +21 -2
  46. package/dist/behaviors/copy.mjs +1207 -42
  47. package/dist/behaviors/datatable.d.mts +55 -5
  48. package/dist/behaviors/datatable.mjs +2033 -212
  49. package/dist/behaviors/date-picker.d.mts +0 -1
  50. package/dist/behaviors/date-picker.mjs +1341 -293
  51. package/dist/behaviors/design.d.mts +54 -0
  52. package/dist/behaviors/design.mjs +109 -0
  53. package/dist/behaviors/dropdown.d.mts +5 -6
  54. package/dist/behaviors/dropdown.mjs +262 -110
  55. package/dist/behaviors/events.d.mts +127 -10
  56. package/dist/behaviors/events.mjs +58 -3
  57. package/dist/behaviors/feedback.d.mts +30 -0
  58. package/dist/behaviors/feedback.mjs +296 -0
  59. package/dist/behaviors/focus.d.mts +8 -0
  60. package/dist/behaviors/focus.mjs +24 -0
  61. package/dist/behaviors/form-validate.d.mts +111 -0
  62. package/dist/behaviors/form-validate.mjs +1746 -0
  63. package/dist/behaviors/i18n.d.mts +790 -0
  64. package/dist/behaviors/i18n.mjs +1713 -0
  65. package/dist/behaviors/icons.d.mts +93 -0
  66. package/dist/behaviors/icons.mjs +113 -0
  67. package/dist/behaviors/input.d.mts +9 -1
  68. package/dist/behaviors/input.mjs +1059 -60
  69. package/dist/behaviors/kb-access.d.mts +3 -3
  70. package/dist/behaviors/kb-access.mjs +2135 -239
  71. package/dist/behaviors/kb-acl.d.mts +8 -8
  72. package/dist/behaviors/kb-acl.mjs +1120 -179
  73. package/dist/behaviors/kb-answer.d.mts +2 -2
  74. package/dist/behaviors/kb-answer.mjs +2120 -435
  75. package/dist/behaviors/kb-audit.d.mts +3 -3
  76. package/dist/behaviors/kb-audit.mjs +1077 -154
  77. package/dist/behaviors/kb-canvas.d.mts +3 -3
  78. package/dist/behaviors/kb-canvas.mjs +1101 -177
  79. package/dist/behaviors/kb-chain.d.mts +2 -2
  80. package/dist/behaviors/kb-chain.mjs +1023 -100
  81. package/dist/behaviors/kb-checkpoint.d.mts +3 -3
  82. package/dist/behaviors/kb-checkpoint.mjs +1320 -169
  83. package/dist/behaviors/kb-chunks.d.mts +2 -2
  84. package/dist/behaviors/kb-chunks.mjs +1153 -213
  85. package/dist/behaviors/kb-citation.d.mts +3 -3
  86. package/dist/behaviors/kb-citation.mjs +1221 -185
  87. package/dist/behaviors/kb-clarify.d.mts +2 -2
  88. package/dist/behaviors/kb-clarify.mjs +1059 -130
  89. package/dist/behaviors/kb-conflict.d.mts +2 -2
  90. package/dist/behaviors/kb-conflict.mjs +1042 -119
  91. package/dist/behaviors/kb-connector.d.mts +2 -2
  92. package/dist/behaviors/kb-connector.mjs +1105 -176
  93. package/dist/behaviors/kb-core.d.mts +7 -2
  94. package/dist/behaviors/kb-core.mjs +1078 -162
  95. package/dist/behaviors/kb-eval.d.mts +2 -2
  96. package/dist/behaviors/kb-eval.mjs +1977 -144
  97. package/dist/behaviors/kb-explain.d.mts +3 -3
  98. package/dist/behaviors/kb-explain.mjs +1037 -104
  99. package/dist/behaviors/kb-filter.d.mts +2 -2
  100. package/dist/behaviors/kb-filter.mjs +2014 -178
  101. package/dist/behaviors/kb-gap.d.mts +3 -3
  102. package/dist/behaviors/kb-gap.mjs +1044 -121
  103. package/dist/behaviors/kb-hittest.d.mts +3 -3
  104. package/dist/behaviors/kb-hittest.mjs +1095 -151
  105. package/dist/behaviors/kb-metadata.mjs +1058 -130
  106. package/dist/behaviors/kb-passage.d.mts +4 -4
  107. package/dist/behaviors/kb-passage.mjs +1102 -161
  108. package/dist/behaviors/kb-pipeline.d.mts +4 -4
  109. package/dist/behaviors/kb-pipeline.mjs +1083 -162
  110. package/dist/behaviors/kb-qa.mjs +1089 -160
  111. package/dist/behaviors/kb-rerank.d.mts +2 -2
  112. package/dist/behaviors/kb-rerank.mjs +1048 -114
  113. package/dist/behaviors/kb-retrieval.d.mts +2 -2
  114. package/dist/behaviors/kb-retrieval.mjs +2079 -226
  115. package/dist/behaviors/kb-review.d.mts +2 -2
  116. package/dist/behaviors/kb-review.mjs +1996 -159
  117. package/dist/behaviors/kb-sandbox.d.mts +3 -3
  118. package/dist/behaviors/kb-sandbox.mjs +1033 -105
  119. package/dist/behaviors/kb-segment.d.mts +2 -2
  120. package/dist/behaviors/kb-segment.mjs +1112 -179
  121. package/dist/behaviors/kb-select.d.mts +24 -0
  122. package/dist/behaviors/kb-select.mjs +1995 -0
  123. package/dist/behaviors/kb-sources.d.mts +3 -3
  124. package/dist/behaviors/kb-sources.mjs +1085 -170
  125. package/dist/behaviors/kb-sql.d.mts +3 -3
  126. package/dist/behaviors/kb-sql.mjs +1144 -226
  127. package/dist/behaviors/kb-trace.d.mts +3 -3
  128. package/dist/behaviors/kb-trace.mjs +1051 -131
  129. package/dist/behaviors/kb-visibility.d.mts +2 -2
  130. package/dist/behaviors/kb-visibility.mjs +1087 -158
  131. package/dist/behaviors/kb-who-can.d.mts +2 -2
  132. package/dist/behaviors/kb-who-can.mjs +1980 -137
  133. package/dist/behaviors/mentions.d.mts +93 -0
  134. package/dist/behaviors/mentions.mjs +2153 -0
  135. package/dist/behaviors/modal.d.mts +4 -3
  136. package/dist/behaviors/modal.mjs +1056 -33
  137. package/dist/behaviors/nav.d.mts +1 -1
  138. package/dist/behaviors/nav.mjs +6 -6
  139. package/dist/behaviors/notification.d.mts +16 -8
  140. package/dist/behaviors/notification.mjs +1629 -268
  141. package/dist/behaviors/panel.d.mts +4 -0
  142. package/dist/behaviors/panel.mjs +995 -0
  143. package/dist/behaviors/popover.d.mts +28 -5
  144. package/dist/behaviors/popover.mjs +225 -24
  145. package/dist/behaviors/scroll-area.d.mts +17 -0
  146. package/dist/behaviors/scroll-area.mjs +59 -0
  147. package/dist/behaviors/select.d.mts +5 -2
  148. package/dist/behaviors/select.mjs +1416 -117
  149. package/dist/behaviors/sidebar.d.mts +1 -1
  150. package/dist/behaviors/sidebar.mjs +13 -13
  151. package/dist/behaviors/slider.d.mts +1 -1
  152. package/dist/behaviors/slider.mjs +12 -12
  153. package/dist/behaviors/split-pane.d.mts +1 -1
  154. package/dist/behaviors/split-pane.mjs +9 -7
  155. package/dist/behaviors/suggestions.d.mts +27 -0
  156. package/dist/behaviors/suggestions.mjs +1090 -0
  157. package/dist/behaviors/svg-parse.d.mts +14 -0
  158. package/dist/behaviors/svg-parse.mjs +37 -0
  159. package/dist/behaviors/tabs.d.mts +2 -2
  160. package/dist/behaviors/tabs.mjs +35 -25
  161. package/dist/behaviors/tag-input.d.mts +23 -5
  162. package/dist/behaviors/tag-input.mjs +1360 -104
  163. package/dist/behaviors/theme-switcher.d.mts +24 -0
  164. package/dist/behaviors/theme-switcher.mjs +1996 -0
  165. package/dist/behaviors/theme.d.mts +15 -8
  166. package/dist/behaviors/theme.mjs +406 -30
  167. package/dist/behaviors/toast.d.mts +24 -25
  168. package/dist/behaviors/toast.mjs +1267 -88
  169. package/dist/behaviors/tooltip.d.mts +4 -0
  170. package/dist/behaviors/tooltip.mjs +378 -0
  171. package/dist/behaviors/tree-select.d.mts +69 -0
  172. package/dist/behaviors/tree-select.mjs +1921 -0
  173. package/dist/behaviors/tree.d.mts +1 -1
  174. package/dist/behaviors/tree.mjs +18 -18
  175. package/dist/behaviors/upload.d.mts +3 -2
  176. package/dist/behaviors/upload.mjs +1077 -66
  177. package/dist/behaviors/url-safety.d.mts +8 -0
  178. package/dist/behaviors/url-safety.mjs +11 -0
  179. package/dist/cli.mjs +5 -6
  180. package/dist/components/accordion.d.mts +2 -0
  181. package/dist/components/ai-branch.d.mts +2 -0
  182. package/dist/components/ai-chat.css +682 -582
  183. package/dist/components/ai-chat.d.mts +2 -0
  184. package/dist/components/ai-composer.d.mts +2 -0
  185. package/dist/components/ai-context.d.mts +2 -0
  186. package/dist/components/ai-context.mjs +1 -0
  187. package/dist/components/ai-diff.css +153 -132
  188. package/dist/components/ai-diff.d.mts +2 -0
  189. package/dist/components/ai-feedback.d.mts +2 -0
  190. package/dist/components/ai-files.d.mts +2 -0
  191. package/dist/components/ai-message.d.mts +2 -0
  192. package/dist/components/ai-panel.css +353 -343
  193. package/dist/components/ai-reasoning.d.mts +2 -0
  194. package/dist/components/ai-subagent.d.mts +2 -0
  195. package/dist/components/ai-subagent.mjs +1 -0
  196. package/dist/components/ai-threads.d.mts +2 -0
  197. package/dist/components/ai-todo.d.mts +2 -0
  198. package/dist/components/ai-todo.mjs +1 -0
  199. package/dist/components/ai-tool-call.d.mts +2 -0
  200. package/dist/components/ai-tool-call.mjs +1 -0
  201. package/dist/components/ai-tool.css +397 -242
  202. package/dist/components/ai-usage.d.mts +2 -0
  203. package/dist/components/alert.d.mts +2 -0
  204. package/dist/components/autocomplete.css +61 -0
  205. package/dist/components/autocomplete.d.mts +2 -0
  206. package/dist/components/autocomplete.mjs +3 -0
  207. package/dist/components/avatar.d.mts +2 -0
  208. package/dist/components/back-top.css +74 -40
  209. package/dist/components/back-top.d.mts +2 -0
  210. package/dist/components/badge.css +44 -41
  211. package/dist/components/badge.d.mts +2 -0
  212. package/dist/components/breadcrumb.css +85 -46
  213. package/dist/components/breadcrumb.d.mts +2 -0
  214. package/dist/components/btn.css +105 -94
  215. package/dist/components/btn.d.mts +2 -0
  216. package/dist/components/card.css +124 -113
  217. package/dist/components/card.d.mts +2 -0
  218. package/dist/components/carousel.d.mts +2 -0
  219. package/dist/components/cascader.css +332 -0
  220. package/dist/components/cascader.d.mts +2 -0
  221. package/dist/components/cascader.mjs +3 -0
  222. package/dist/components/chart-area.css +54 -2
  223. package/dist/components/chart-area.d.mts +2 -0
  224. package/dist/components/chart-bar.css +147 -38
  225. package/dist/components/chart-bar.d.mts +2 -0
  226. package/dist/components/chart-calendar.d.mts +2 -0
  227. package/dist/components/chart-gauge.css +36 -13
  228. package/dist/components/chart-gauge.d.mts +2 -0
  229. package/dist/components/chart-graph.css +35 -20
  230. package/dist/components/chart-graph.d.mts +2 -0
  231. package/dist/components/chart-heatmap.css +67 -39
  232. package/dist/components/chart-heatmap.d.mts +2 -0
  233. package/dist/components/chart-line.css +62 -3
  234. package/dist/components/chart-line.d.mts +2 -0
  235. package/dist/components/chart-map.d.mts +2 -0
  236. package/dist/components/chart-pie.css +38 -6
  237. package/dist/components/chart-pie.d.mts +2 -0
  238. package/dist/components/chart-radar.css +57 -5
  239. package/dist/components/chart-radar.d.mts +2 -0
  240. package/dist/components/chart-scatter.css +47 -7
  241. package/dist/components/chart-scatter.d.mts +2 -0
  242. package/dist/components/chart-sparkline.css +25 -2
  243. package/dist/components/chart-sparkline.d.mts +2 -0
  244. package/dist/components/chart-stack.css +27 -13
  245. package/dist/components/chart-stack.d.mts +2 -0
  246. package/dist/components/charts.css +220 -84
  247. package/dist/components/charts.d.mts +2 -0
  248. package/dist/components/code-block.css +420 -0
  249. package/dist/components/code-block.d.mts +2 -0
  250. package/dist/components/code-block.mjs +4 -0
  251. package/dist/components/command-palette.css +150 -122
  252. package/dist/components/command-palette.d.mts +2 -0
  253. package/dist/components/content.css +274 -263
  254. package/dist/components/context-menu.d.mts +2 -0
  255. package/dist/components/copy.css +73 -45
  256. package/dist/components/copy.d.mts +2 -0
  257. package/dist/components/datatable.css +457 -202
  258. package/dist/components/datatable.d.mts +2 -0
  259. package/dist/components/date-picker.css +136 -105
  260. package/dist/components/date-picker.d.mts +2 -0
  261. package/dist/components/desc.d.mts +2 -0
  262. package/dist/components/dropdown.d.mts +2 -0
  263. package/dist/components/empty.css +72 -69
  264. package/dist/components/empty.d.mts +2 -0
  265. package/dist/components/feedback.css +211 -191
  266. package/dist/components/form-validate.css +134 -0
  267. package/dist/components/form-validate.d.mts +2 -0
  268. package/dist/components/form-validate.mjs +3 -0
  269. package/dist/components/form.css +157 -131
  270. package/dist/components/form.d.mts +2 -0
  271. package/dist/components/icon.css +113 -0
  272. package/dist/components/icon.d.mts +2 -0
  273. package/dist/components/icon.mjs +3 -0
  274. package/dist/components/input.css +163 -108
  275. package/dist/components/input.d.mts +2 -0
  276. package/dist/components/kb-access.d.mts +2 -0
  277. package/dist/components/kb-acl.d.mts +2 -0
  278. package/dist/components/kb-agent.css +300 -206
  279. package/dist/components/kb-answer.d.mts +2 -0
  280. package/dist/components/kb-audit.d.mts +2 -0
  281. package/dist/components/kb-canvas.d.mts +2 -0
  282. package/dist/components/kb-chain.d.mts +2 -0
  283. package/dist/components/kb-checkpoint.d.mts +2 -0
  284. package/dist/components/kb-chunks.d.mts +2 -0
  285. package/dist/components/kb-citation.d.mts +2 -0
  286. package/dist/components/kb-clarify.d.mts +2 -0
  287. package/dist/components/kb-conflict.d.mts +2 -0
  288. package/dist/components/kb-connector.d.mts +2 -0
  289. package/dist/components/kb-data.css +431 -315
  290. package/dist/components/kb-eval.d.mts +2 -0
  291. package/dist/components/kb-explain.d.mts +2 -0
  292. package/dist/components/kb-filter.d.mts +2 -0
  293. package/dist/components/kb-gap.d.mts +2 -0
  294. package/dist/components/kb-ground.css +333 -229
  295. package/dist/components/kb-hittest.d.mts +2 -0
  296. package/dist/components/kb-ingest.css +613 -434
  297. package/dist/components/kb-metadata.d.mts +2 -0
  298. package/dist/components/kb-ops.css +422 -302
  299. package/dist/components/kb-passage.d.mts +2 -0
  300. package/dist/components/kb-perm.css +374 -314
  301. package/dist/components/kb-pipeline.d.mts +2 -0
  302. package/dist/components/kb-qa.d.mts +2 -0
  303. package/dist/components/kb-rerank.d.mts +2 -0
  304. package/dist/components/kb-retrieval.d.mts +2 -0
  305. package/dist/components/kb-review.d.mts +2 -0
  306. package/dist/components/kb-sandbox.d.mts +2 -0
  307. package/dist/components/kb-search.css +653 -459
  308. package/dist/components/kb-segment.d.mts +2 -0
  309. package/dist/components/kb-sources.d.mts +2 -0
  310. package/dist/components/kb-sql.d.mts +2 -0
  311. package/dist/components/kb-trace.d.mts +2 -0
  312. package/dist/components/kb-visibility.d.mts +2 -0
  313. package/dist/components/kb-who-can.d.mts +2 -0
  314. package/dist/components/kb.css +170 -135
  315. package/dist/components/kb.d.mts +2 -0
  316. package/dist/components/kbd.d.mts +2 -0
  317. package/dist/components/layout.css +86 -83
  318. package/dist/components/layout.d.mts +2 -0
  319. package/dist/components/list.d.mts +2 -0
  320. package/dist/components/material-chinese.css +83 -0
  321. package/dist/components/material-soviet.css +86 -0
  322. package/dist/components/material.css +318 -0
  323. package/dist/components/media-card.d.mts +2 -0
  324. package/dist/components/media.css +225 -176
  325. package/dist/components/mentions.css +190 -0
  326. package/dist/components/mentions.d.mts +2 -0
  327. package/dist/components/mentions.mjs +3 -0
  328. package/dist/components/menu.css +121 -109
  329. package/dist/components/modal.css +116 -118
  330. package/dist/components/modal.d.mts +2 -0
  331. package/dist/components/nav.css +136 -129
  332. package/dist/components/nav.d.mts +2 -0
  333. package/dist/components/notification.css +247 -177
  334. package/dist/components/notification.d.mts +2 -0
  335. package/dist/components/pagination.css +62 -57
  336. package/dist/components/pagination.d.mts +2 -0
  337. package/dist/components/panel.css +70 -68
  338. package/dist/components/panel.d.mts +2 -0
  339. package/dist/components/panel.mjs +1 -0
  340. package/dist/components/pill.css +83 -72
  341. package/dist/components/pill.d.mts +2 -0
  342. package/dist/components/popover.css +80 -57
  343. package/dist/components/popover.d.mts +2 -0
  344. package/dist/components/progress.d.mts +2 -0
  345. package/dist/components/rating.d.mts +2 -0
  346. package/dist/components/result.d.mts +2 -0
  347. package/dist/components/scroll-area.css +29 -54
  348. package/dist/components/scroll-area.d.mts +2 -0
  349. package/dist/components/scroll-area.mjs +1 -0
  350. package/dist/components/segmented.css +167 -146
  351. package/dist/components/segmented.d.mts +2 -0
  352. package/dist/components/select.css +250 -191
  353. package/dist/components/select.d.mts +2 -0
  354. package/dist/components/sidebar.css +157 -143
  355. package/dist/components/sidebar.d.mts +2 -0
  356. package/dist/components/skeleton.d.mts +2 -0
  357. package/dist/components/slider.css +135 -128
  358. package/dist/components/slider.d.mts +2 -0
  359. package/dist/components/spinner.d.mts +2 -0
  360. package/dist/components/split-pane.css +120 -108
  361. package/dist/components/split-pane.d.mts +2 -0
  362. package/dist/components/stat.css +116 -109
  363. package/dist/components/stat.d.mts +2 -0
  364. package/dist/components/steps.css +114 -108
  365. package/dist/components/steps.d.mts +2 -0
  366. package/dist/components/switch.css +192 -149
  367. package/dist/components/switch.d.mts +2 -0
  368. package/dist/components/table.css +158 -112
  369. package/dist/components/table.d.mts +2 -0
  370. package/dist/components/tabs.css +143 -116
  371. package/dist/components/tabs.d.mts +2 -0
  372. package/dist/components/tag-input.css +52 -133
  373. package/dist/components/tag-input.d.mts +2 -0
  374. package/dist/components/tag.css +90 -72
  375. package/dist/components/tag.d.mts +2 -0
  376. package/dist/components/theme-switcher.css +105 -0
  377. package/dist/components/theme-switcher.d.mts +2 -0
  378. package/dist/components/theme-switcher.mjs +3 -0
  379. package/dist/components/timeline.d.mts +2 -0
  380. package/dist/components/toast.css +115 -97
  381. package/dist/components/toast.d.mts +2 -0
  382. package/dist/components/toolbar.css +47 -43
  383. package/dist/components/toolbar.d.mts +2 -0
  384. package/dist/components/tooltip.css +103 -43
  385. package/dist/components/tooltip.d.mts +2 -0
  386. package/dist/components/tooltip.mjs +1 -0
  387. package/dist/components/tree-select.css +439 -0
  388. package/dist/components/tree-select.d.mts +2 -0
  389. package/dist/components/tree-select.mjs +3 -0
  390. package/dist/components/tree.d.mts +2 -0
  391. package/dist/components/upload.css +138 -97
  392. package/dist/components/upload.d.mts +2 -0
  393. package/dist/fonts/LICENSES/ark-pixel/OFL.txt +96 -0
  394. package/dist/fonts/LICENSES/cubic-11/OFL.txt +108 -0
  395. package/dist/fonts/LICENSES/galmuri/LICENSE.txt +93 -0
  396. package/dist/fonts/OFL.txt +96 -0
  397. package/dist/fonts/README.md +14 -0
  398. package/dist/fonts/fusion-pixel-12px-zh-hans.woff2 +0 -0
  399. package/dist/index.d.mts +85 -70
  400. package/dist/index.mjs +17330 -5773
  401. package/dist/react.d.mts +91 -0
  402. package/dist/react.mjs +8307 -0
  403. package/dist/registry.json +918 -70
  404. package/dist/tokens/chinese.css +44 -0
  405. package/dist/tokens/colors.css +371 -1222
  406. package/dist/tokens/design.css +209 -0
  407. package/dist/tokens/dtcg.json +15926 -0
  408. package/dist/tokens/figma.variables.json +10779 -0
  409. package/dist/tokens/icon-masks.css +78 -0
  410. package/dist/tokens/pixel.css +53 -0
  411. package/dist/tokens/scrollbars.css +40 -0
  412. package/dist/tokens/soviet.css +44 -0
  413. package/dist/tokens/style-profiles.css +36 -547
  414. package/dist/tokens/themes.json +308 -0
  415. package/dist/tokens/tokens-studio.json +11648 -0
  416. package/dist/tokens/typography.css +21 -18
  417. package/dist/tokens.css +1783 -1806
  418. package/dist/ui.css +14796 -10750
  419. package/dist/vue.d.mts +344 -0
  420. package/dist/vue.mjs +7876 -0
  421. package/docs/spec/ai-input-experience.md +75 -0
  422. package/docs/spec/ai-native.md +238 -147
  423. package/docs/spec/design-philosophy.md +189 -0
  424. package/docs/spec/design-primitives.md +196 -0
  425. package/docs/spec/kb-family.md +147 -115
  426. package/docs/spec/scrollbars.md +46 -0
  427. package/package.json +56 -8
  428. package/dist/retro-effects.css +0 -255
  429. package/dist/tokens/retro-effects.css +0 -255
  430. package/docs/research/2026-10-03-ai-kb-components.md +0 -392
  431. package/docs/research/2026-10-03-kb-permissions.md +0 -992
@@ -1,54 +1,5 @@
1
- /*
2
- * Icen Design System — 风格配置 (Style Profiles)
3
- *
4
- * 这是颜色主题之上的第二层抽象:
5
- * .style-modern → 默认现代风格(不覆盖)
6
- * .style-retro → 8-bit / 红白机 / 像素风
7
- * .style-terminal → 命令行 / CRT 终端(预留)
8
- *
9
- * 规则:
10
- * 1. 这些类挂在 <html> 上,与 .clay/.piano/.art/.vangogh/.ink/.retro 共存。
11
- * 2. 只覆盖与“风格”相关的变量:字体、圆角、阴影硬度、抗锯齿、图像渲染。
12
- * 3. 颜色仍由 preset 决定,保持正交。
13
- *
14
- * 注:选择器引用的是 base.css 的交互基元(.pressable / .control / .lift),
15
- * 而非源项目 opengal 的 .og-* 命名——切换 profile 时这些基元自动获得
16
- * 对应风格的几何/边框/阴影形态。
17
- */
18
-
19
- /* ══════════════════════════════════════════════════════════════
20
- 字体资源
21
- ══════════════════════════════════════════════════════════════ */
22
-
23
- /* Press Start 2P — 经典 8-bit 像素字体(西文) */
24
- @font-face {
25
- font-family: "Pixel Retro";
26
- src:
27
- local("Press Start 2P"),
28
- local("VT323"),
29
- url("https://fonts.gstatic.com/s/pressstart2p/v15/e3t4euO8T-267oIAQAu6jDQyK3nVivM.woff2") format("woff2");
30
- font-weight: 400;
31
- font-style: normal;
32
- font-display: swap;
33
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
34
- }
35
-
36
- /* 中文像素风回退:无通用免费像素中文字体,使用系统等宽/宋体保持清晰 */
37
- @font-face {
38
- font-family: "Pixel CJK Fallback";
39
- src:
40
- local("Zpix"),
41
- local("SimSun"),
42
- local("Songti SC"),
43
- local("STSong"),
44
- local("Noto Serif SC"),
45
- local("PingFang SC"),
46
- local("Microsoft YaHei");
47
- font-weight: 400;
48
- font-style: normal;
49
- font-display: swap;
50
- }
51
-
1
+ @layer icen.tokens {
2
+ /* Shared fallback defaults. Built-in primitive recipes live in design/pixel/chinese/soviet.css. */
52
3
  :root {
53
4
  /* ══════════════════════════════════════════════════════════════
54
5
  风格底层 token(兜底值)
@@ -56,507 +7,45 @@
56
7
  ══════════════════════════════════════════════════════════════ */
57
8
 
58
9
  /* ── Density 密度 ── */
59
- --density-space-xs: 0.25rem;
60
- --density-space-sm: 0.5rem;
61
- --density-space-md: 0.75rem;
62
- --density-space-lg: 1rem;
63
- --density-space-xl: 1.5rem;
64
- --density-space-2xl: 2rem;
65
- --density-space-3xl: 3rem;
66
- --density-space-4xl: 4rem;
67
- --density-input-height-sm: 28px;
68
- --density-input-height-md: 36px;
69
- --density-input-height-lg: 44px;
70
- --density-font-size-2xs: 10px;
71
- --density-font-size-xs: 11px;
72
- --density-font-size-sm: 12px;
73
- --density-font-size-md: 13px;
74
- --density-font-size-lg: 14px;
75
- --density-font-size-xl: 18px;
76
- --density-font-size-2xl: 22px;
10
+ --icen-density-space-2xs: 0.125rem;
11
+ --icen-density-space-xs: 0.25rem;
12
+ --icen-density-space-sm: 0.5rem;
13
+ --icen-density-space-md: 0.75rem;
14
+ --icen-density-space-lg: 1rem;
15
+ --icen-density-space-xl: 1.5rem;
16
+ --icen-density-space-2xl: 2rem;
17
+ --icen-density-space-3xl: 3rem;
18
+ --icen-density-space-4xl: 4rem;
19
+ --icen-density-input-height-sm: 28px;
20
+ --icen-density-input-height-md: 36px;
21
+ --icen-density-input-height-lg: 44px;
22
+ --icen-density-font-size-2xs: 10px;
23
+ --icen-density-font-size-xs: 11px;
24
+ --icen-density-font-size-sm: 12px;
25
+ --icen-density-font-size-md: 13px;
26
+ --icen-density-font-size-lg: 14px;
27
+ --icen-density-font-size-xl: 18px;
28
+ --icen-density-font-size-2xl: 22px;
77
29
 
78
30
  /* ── Motion 动效 ── */
79
- --duration-instant: 0ms;
80
- --duration-fast: 150ms;
81
- --duration-normal: 200ms;
82
- --duration-slow: 300ms;
83
- --ease-linear: linear;
84
- --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
85
- --ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
31
+ --icen-duration-instant: 0ms;
32
+ --icen-duration-fast: 150ms;
33
+ --icen-duration-normal: 200ms;
34
+ --icen-duration-slow: 300ms;
35
+ --icen-ease-linear: linear;
36
+ --icen-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
37
+ --icen-ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
86
38
 
87
39
  /* ── Typography 字体 ──
88
- --line-height-heading 不在此定义:typography.css 独家拥有(icen 品牌 1.2),
40
+ --icen-line-height-heading 不在此定义:typography.css 独家拥有(icen 品牌 1.2),
89
41
  各 .style-* profile 需要差异化时在自己的块里覆盖。 */
90
- --font-body: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif;
91
- --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
92
- --font-mono-paper: ui-monospace, SFMono-Regular, 'JetBrains Mono', 'Courier New', monospace;
93
- --font-heading: var(--font-body);
94
- --letter-spacing-body: 0;
95
- --letter-spacing-heading: 0;
96
- --line-height-body: 1.5;
97
- }
98
-
99
- /* ══════════════════════════════════════════════════════════════
100
- MODERN — 默认现代风格(兜底值即为现代值,显式声明便于阅读)
101
- ══════════════════════════════════════════════════════════════ */
102
-
103
- .style-modern {
104
- /* ── Density ── */
105
- --density-space-xs: 0.25rem;
106
- --density-space-sm: 0.5rem;
107
- --density-space-md: 0.75rem;
108
- --density-space-lg: 1rem;
109
- --density-space-xl: 1.5rem;
110
- --density-space-2xl: 2rem;
111
- --density-space-3xl: 3rem;
112
- --density-space-4xl: 4rem;
113
- --density-input-height-sm: 28px;
114
- --density-input-height-md: 36px;
115
- --density-input-height-lg: 44px;
116
- --density-font-size-2xs: 10px;
117
- --density-font-size-xs: 11px;
118
- --density-font-size-sm: 12px;
119
- --density-font-size-md: 13px;
120
- --density-font-size-lg: 14px;
121
- --density-font-size-xl: 18px;
122
- --density-font-size-2xl: 22px;
123
-
124
- /* ── Motion ── */
125
- --duration-fast: 150ms;
126
- --duration-normal: 200ms;
127
- --duration-slow: 300ms;
128
- --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
129
-
130
- /* ── Typography ── */
131
- --font-body: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif;
132
- --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
133
- --font-mono-paper: ui-monospace, SFMono-Regular, 'JetBrains Mono', 'Courier New', monospace;
134
- --font-heading: var(--font-body);
135
- --letter-spacing-body: 0;
136
- --letter-spacing-heading: 0;
137
- --line-height-body: 1.5;
138
- --line-height-heading: 1.2;
139
- }
140
-
141
- /* ══════════════════════════════════════════════════════════════
142
- RETRO — 8-bit / 红白机 / 像素风
143
- ══════════════════════════════════════════════════════════════ */
144
-
145
- .style-retro {
146
- /* ── Density:像素风更紧凑 ── */
147
- --density-space-xs: 0.125rem;
148
- --density-space-sm: 0.25rem;
149
- --density-space-md: 0.5rem;
150
- --density-space-lg: 0.75rem;
151
- --density-space-xl: 1rem;
152
- --density-space-2xl: 1.5rem;
153
- --density-space-3xl: 2rem;
154
- --density-space-4xl: 3rem;
155
- --density-input-height-sm: 24px;
156
- --density-input-height-md: 32px;
157
- --density-input-height-lg: 40px;
158
- --density-font-size-2xs: 9px;
159
- --density-font-size-xs: 9px;
160
- --density-font-size-sm: 10px;
161
- --density-font-size-md: 11px;
162
- --density-font-size-lg: 12px;
163
- --density-font-size-xl: 14px;
164
- --density-font-size-2xl: 16px;
165
-
166
- /* ── Motion:像素风瞬间切换 ── */
167
- --duration-fast: 0ms;
168
- --duration-normal: 0ms;
169
- --duration-slow: 0ms;
170
- --ease-out: linear;
171
-
172
- /* ── Typography:像素字体 ── */
173
- --font-body: "Pixel Retro", "Pixel CJK Fallback", "Press Start 2P", "VT323", "SimSun", "Songti SC", "STSong", monospace;
174
- --font-mono: "Pixel Retro", "VT323", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
175
- --font-mono-paper: "Pixel Retro", "JetBrains Mono", "Courier New", monospace;
176
- --font-heading: "Pixel Retro", "Press Start 2P", "VT323", var(--font-body);
177
- --letter-spacing-body: 0.02em;
178
- --letter-spacing-heading: 0.04em;
179
- --line-height-body: 1.5;
180
- --line-height-heading: 1.2;
181
-
182
- /* ── 圆角:像素风几乎无圆角 ── */
183
- --radius-xs: 0px;
184
- --radius-sm: 0px;
185
- --radius-md: 2px;
186
- --radius-lg: 2px;
187
- --radius-xl: 2px;
188
- --radius-full: 0px;
189
-
190
- /* ── 滚动条 ── */
191
- --token-scrollbar-size: 10px;
192
-
193
- /* ── icen 原语覆盖:retro 的聚焦环/按下/悬停全部像素化 ── */
194
- --icen-ring: 2px solid var(--token-accent);
195
- --icen-ring-soft: 2px solid var(--token-accent);
196
- --icen-ring-error: 2px solid var(--token-error);
197
- --icen-ring-success: 2px solid var(--token-success);
198
- --icen-press: translate(2px, 2px);
199
- --icen-press-soft: translate(1px, 1px);
200
- --icen-hover-border: var(--token-accent);
201
- --icen-hover-border-strong: var(--token-accent);
202
- --icen-control-focus-shadow: inset 2px 2px 0 var(--token-line-soft), inset -1px -1px 0 var(--token-surface-strong);
203
- --icen-control-focus-border: var(--token-accent);
204
- --icen-control-error-shadow: inset 2px 2px 0 var(--token-line-soft), inset -1px -1px 0 var(--token-surface-strong);
205
-
206
- /* ── 渲染 ── */
207
- image-rendering: pixelated;
208
- -webkit-font-smoothing: none;
209
- -moz-osx-font-smoothing: unset;
210
- }
211
-
212
- /* 全局排版覆盖 */
213
- .style-retro body {
214
- font-family: "Numeric Math", var(--font-body);
215
- line-height: var(--line-height-body);
216
- letter-spacing: var(--letter-spacing-body);
217
- }
218
-
219
- /* 标题强化像素感 */
220
- .style-retro h1,
221
- .style-retro h2,
222
- .style-retro h3,
223
- .style-retro h4,
224
- .style-retro h5,
225
- .style-retro h6 {
226
- font-family: var(--font-heading);
227
- letter-spacing: var(--letter-spacing-heading);
228
- line-height: var(--line-height-heading);
229
- text-transform: uppercase;
230
- }
231
-
232
- /* ══════════════════════════════════════════════════════════════
233
- 按钮 / 可点击元素 — 8-bit 像素按钮
234
- base.css 的 .pressable / 原生 button / [role=button] / 复位按钮
235
- 注:聚焦环 / 按下形变 / 悬停边框 由 --icen-* 原语驱动,
236
- 在 .style-retro 块里已统一覆盖;这里只补"按钮的像素投影",
237
- 这是 .pressable::after 高光无法表达的形态。
238
- ══════════════════════════════════════════════════════════════ */
239
-
240
- .style-retro .pressable,
241
- .style-retro button,
242
- .style-retro [role="button"],
243
- .style-retro input[type="button"],
244
- .style-retro input[type="submit"],
245
- .style-retro input[type="reset"] {
246
- position: relative;
247
- border-radius: var(--radius-md);
248
- border: 2px solid var(--token-line-strong);
249
- box-shadow:
250
- inset -2px -2px 0 var(--token-line-soft),
251
- inset 2px 2px 0 var(--token-surface-strong),
252
- 2px 2px 0 var(--token-line);
253
- transition: all var(--duration-fast) var(--ease-out);
254
- }
255
-
256
- /* 禁用 .pressable::after 的现代渐变高光,retro 用硬投影表达层级 */
257
- .style-retro .pressable::after,
258
- .style-retro button::after {
259
- display: none;
260
- }
261
-
262
- /* 悬停:边框高亮(聚焦环由 --icen-ring 接管,不再硬覆盖 outline) */
263
- .style-retro .pressable:hover,
264
- .style-retro button:hover,
265
- .style-retro [role="button"]:hover {
266
- border-color: var(--token-accent);
267
- }
268
-
269
- /* 按下:内移 + 阴影消失(位移值由 --icen-press 驱动) */
270
- .style-retro .pressable:active,
271
- .style-retro button:active,
272
- .style-retro [role="button"]:active {
273
- box-shadow:
274
- inset -2px -2px 0 var(--token-line-soft),
275
- inset 2px 2px 0 var(--token-surface-strong);
276
- }
277
-
278
- /* 禁用状态 */
279
- .style-retro .pressable:where(:disabled, [aria-disabled="true"], [data-disabled]),
280
- .style-retro button:disabled {
281
- box-shadow: none;
282
- outline: none;
283
- }
284
-
285
- /* ══════════════════════════════════════════════════════════════
286
- 输入框 / 表单元素 — 像素输入框
287
- base.css 的 .control 是 wrapper 基元;原生 input/textarea/select 同样适用
288
- 注:聚焦阴影/边框已由 --icen-control-focus-* 接管,这里只补像素 inset 阴影
289
- ══════════════════════════════════════════════════════════════ */
290
-
291
- .style-retro .control,
292
- .style-retro input,
293
- .style-retro textarea,
294
- .style-retro select {
295
- border-radius: var(--radius-md);
296
- border: 2px solid var(--token-line);
297
- background: var(--token-bg);
298
- box-shadow:
299
- inset 2px 2px 0 var(--token-line-soft),
300
- inset -1px -1px 0 var(--token-surface-strong);
301
- transition: none;
302
- }
303
-
304
- /* 被 .control 容器包裹的输入框:自身边框透明化,
305
- 完全交给外层容器承担像素边框,避免常驻/聚焦状态出现双层内框。 */
306
- .style-retro .control input:not([type="checkbox"]):not([type="radio"]),
307
- .style-retro .control textarea,
308
- .style-retro .control select,
309
- .style-retro .control [contenteditable="true"] {
310
- border-color: transparent !important;
311
- box-shadow: none !important;
312
- background: transparent !important;
313
- }
314
-
315
- .style-retro input:hover,
316
- .style-retro textarea:hover,
317
- .style-retro select:hover,
318
- .style-retro .control:hover {
319
- border-color: var(--icen-hover-border);
320
- }
321
-
322
- /* 文本输入区自身无焦点环,完全交给外层容器;
323
- .control:focus-within 的 box-shadow / border 由 --icen-control-focus-* 自动驱动 */
324
- .style-retro input:focus,
325
- .style-retro textarea:focus,
326
- .style-retro select:focus,
327
- .style-retro input:focus-visible,
328
- .style-retro textarea:focus-visible,
329
- .style-retro select:focus-visible,
330
- .style-retro [contenteditable="true"]:focus,
331
- .style-retro [contenteditable="true"]:focus-visible {
332
- outline: none !important;
333
- box-shadow: none !important;
334
- border-color: transparent !important;
335
- }
336
-
337
- /* 占位符文字 */
338
- .style-retro input::placeholder,
339
- .style-retro textarea::placeholder {
340
- color: var(--token-text-faint);
341
- opacity: 0.7;
342
- }
343
-
344
- /* ══════════════════════════════════════════════════════════════
345
- 开关 / 复选框 — 像素开关
346
- ══════════════════════════════════════════════════════════════ */
347
-
348
- .style-retro input[type="checkbox"],
349
- .style-retro input[type="radio"] {
350
- appearance: none;
351
- width: 16px;
352
- height: 16px;
353
- border: 2px solid var(--token-line-strong);
354
- background: var(--token-bg);
355
- box-shadow:
356
- inset -2px -2px 0 var(--token-line-soft),
357
- inset 2px 2px 0 var(--token-surface-strong);
358
- cursor: pointer;
359
- }
360
-
361
- .style-retro input[type="checkbox"]:checked,
362
- .style-retro input[type="radio"]:checked {
363
- background: var(--token-accent);
364
- border-color: var(--token-accent);
365
- box-shadow:
366
- inset 2px 2px 0 color-mix(in srgb, var(--token-on-accent) 50%, transparent),
367
- inset -2px -2px 0 color-mix(in srgb, var(--token-accent-cold) 30%, transparent);
368
- }
369
-
370
- .style-retro input[type="checkbox"]:checked::after {
371
- content: "";
372
- display: block;
373
- width: 6px;
374
- height: 10px;
375
- margin: 1px 0 0 4px;
376
- border: solid var(--token-on-accent);
377
- border-width: 0 2px 2px 0;
378
- transform: rotate(45deg);
379
- }
380
-
381
- .style-retro input[type="radio"] {
382
- border-radius: 0;
383
- }
384
-
385
- .style-retro input[type="radio"]:checked::after {
386
- content: "";
387
- display: block;
388
- width: 6px;
389
- height: 6px;
390
- margin: 3px;
391
- background: var(--token-on-accent);
392
- }
393
-
394
- /* ══════════════════════════════════════════════════════════════
395
- 卡片 / 面板 / 表面 — 硬像素边框
396
- ══════════════════════════════════════════════════════════════ */
397
-
398
- .style-retro .surface-elevated,
399
- .style-retro [class*="shadow-[var(--token-shadow-card)"] {
400
- box-shadow:
401
- 2px 2px 0 var(--token-line);
402
- border-width: 2px;
403
- border-style: solid;
404
- border-color: var(--token-line-strong);
405
- }
406
-
407
- /* 禁用平滑悬停提升;.lift 在 retro 下用硬投影 + 边框色变化表达悬停 */
408
- .style-retro .lift:hover {
409
- transform: none;
410
- box-shadow:
411
- 2px 2px 0 var(--token-accent);
412
- border-color: var(--token-accent);
413
- }
414
-
415
- /* ══════════════════════════════════════════════════════════════
416
- 滚动条 — 方块像素滚动条
417
- ══════════════════════════════════════════════════════════════ */
418
-
419
- .style-retro * {
420
- scrollbar-width: thin;
421
- scrollbar-color: var(--token-accent) var(--token-bg-soft);
422
- }
423
-
424
- .style-retro ::-webkit-scrollbar {
425
- width: var(--token-scrollbar-size);
426
- height: var(--token-scrollbar-size);
427
- }
428
-
429
- .style-retro ::-webkit-scrollbar-track {
430
- background: var(--token-bg-soft);
431
- border: 1px solid var(--token-line);
432
- }
433
-
434
- .style-retro ::-webkit-scrollbar-thumb {
435
- background: var(--token-accent);
436
- border: 1px solid var(--token-line-strong);
437
- border-radius: 0;
438
- }
439
-
440
- .style-retro ::-webkit-scrollbar-thumb:hover {
441
- background: var(--token-accent-cold);
442
- }
443
-
444
- .style-retro ::-webkit-scrollbar-button {
445
- display: block;
446
- width: var(--token-scrollbar-size);
447
- height: var(--token-scrollbar-size);
448
- background: var(--token-bg-soft);
449
- border: 1px solid var(--token-line);
450
- }
451
-
452
- .style-retro ::-webkit-scrollbar-button:hover {
453
- background: var(--token-accent-subtle);
454
- }
455
-
456
- /* ══════════════════════════════════════════════════════════════
457
- 光标 / caret
458
- ══════════════════════════════════════════════════════════════ */
459
-
460
- .style-retro * {
461
- caret-color: var(--token-accent);
462
- }
463
-
464
- /* ══════════════════════════════════════════════════════════════
465
- 悬停效果 — 像素高亮
466
- ══════════════════════════════════════════════════════════════ */
467
-
468
- .style-retro a:hover,
469
- .style-retro [role="link"]:hover {
470
- text-decoration: underline;
471
- text-decoration-style: dashed;
472
- text-underline-offset: 3px;
473
- }
474
-
475
- /* ══════════════════════════════════════════════════════════════
476
- Markdown / 富文本 — 禁用圆角
477
- ══════════════════════════════════════════════════════════════ */
478
-
479
- .style-retro .markdown-body img,
480
- .style-retro .markdown-body blockquote,
481
- .style-retro .markdown-body code,
482
- .style-retro .markdown-body pre {
483
- border-radius: 0;
484
- }
485
-
486
- /* ══════════════════════════════════════════════════════════════
487
- RETRO 全局硬化 — 处理无法仅靠 token 表达的现代风残留
488
- ══════════════════════════════════════════════════════════════ */
489
-
490
- /* 禁用现代毛玻璃,用实色面板替代 */
491
- .style-retro .backdrop-blur-sm,
492
- .style-retro .backdrop-blur-md,
493
- .style-retro .backdrop-blur-xl,
494
- .style-retro .backdrop-blur-2xl {
495
- backdrop-filter: none;
496
- -webkit-backdrop-filter: none;
497
- }
498
-
499
- /* 兜底:覆盖仍使用固定 Tailwind 圆角工具类的组件/页面元素。
500
- 组件层已迁移到 radiusClass() 读取 --radius-*,但 feature 页面和
501
- 第三方类名可能仍残留 rounded-*,这里做最后一层保险。 */
502
- .style-retro .rounded-none { border-radius: 0; }
503
- .style-retro .rounded-sm,
504
- .style-retro .rounded,
505
- .style-retro .rounded-md,
506
- .style-retro .rounded-lg,
507
- .style-retro .rounded-xl,
508
- .style-retro .rounded-2xl,
509
- .style-retro .rounded-3xl {
510
- border-radius: var(--radius-md);
511
- }
512
- /* Note: we do NOT override .rounded-full globally. Components that should be
513
- theme-aware use radiusClass('full') which reads --radius-full; elements that
514
- are inherently circular (e.g. loading spinners) keep Tailwind's rounded-full. */
515
-
516
- /* 兜底:现代柔和阴影在 retro 下转为硬像素投影 */
517
- .style-retro .shadow-sm,
518
- .style-retro .shadow-md,
519
- .style-retro .shadow-lg,
520
- .style-retro .shadow-xl,
521
- .style-retro .shadow-2xl {
522
- box-shadow: var(--token-shadow-card);
523
- }
524
-
525
- /* 非文本元素的硬像素焦点环 */
526
- .style-retro :focus-visible:not(input):not(textarea):not(select):not([contenteditable="true"]) {
527
- outline: 2px solid var(--token-accent);
528
- outline-offset: -2px;
529
- box-shadow: none;
530
- border-radius: var(--radius-md);
531
- }
532
-
533
- /* ══════════════════════════════════════════════════════════════
534
- TERMINAL — 命令行 / CRT 终端(预留,可组合任意 dark preset)
535
- ══════════════════════════════════════════════════════════════ */
536
-
537
- .style-terminal {
538
- /* ── 字体 ── */
539
- --font-body: ui-monospace, SFMono-Regular, "JetBrains Mono", "Courier New", "Noto Sans Mono CJK SC", "SimSun", monospace;
540
- --font-mono: ui-monospace, SFMono-Regular, "JetBrains Mono", "Consolas", "Noto Sans Mono CJK SC", monospace;
541
- --font-mono-paper: "JetBrains Mono", "Courier New", monospace;
542
-
543
- /* ── 圆角 ── */
544
- --radius-xs: 0px;
545
- --radius-sm: 0px;
546
- --radius-md: 0px;
547
- --radius-lg: 0px;
548
- --radius-xl: 0px;
549
- --radius-full: 0px;
550
-
551
- /* ── 滚动条 ── */
552
- --token-scrollbar-size: 8px;
553
-
554
- /* ── 渲染 ── */
555
- -webkit-font-smoothing: antialiased;
556
- -moz-osx-font-smoothing: grayscale;
42
+ --icen-font-body: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif;
43
+ --icen-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
44
+ --icen-font-mono-paper: ui-monospace, SFMono-Regular, 'JetBrains Mono', 'Courier New', monospace;
45
+ --icen-font-heading: var(--icen-font-body);
46
+ --icen-letter-spacing-body: 0;
47
+ --icen-letter-spacing-heading: 0;
48
+ --icen-line-height-body: 1.5;
557
49
  }
558
50
 
559
- .style-terminal body {
560
- font-family: var(--font-body);
561
- line-height: 1.4;
562
51
  }