@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,206 +1,245 @@
1
+ @layer icen.components {
1
2
  /*
2
3
  * @icen.ai/ui — Component: upload(拖放上传区)
3
4
  * 规格源自 opengal primitives/advanced-input.tsx 的 Upload;与 behaviors/upload.ts 配套。
4
5
  *
5
- * 完整契约:
6
- * <div class="upload control lift focus-ring [--compact] [.is-drag] [.is-disabled] [.is-loading]"
7
- * role="button" tabindex="0" aria-label="拖放或点击上传文件">
8
- * <input type="file" multiple accept="…" />
9
- * <div class="upload-icon">…svg…</div>
10
- * <p class="upload-title">拖放文件到此处,或<span class="upload-link">点击选择</span></p>
11
- * <p class="upload-desc">支持 PDF / PNG / JPG,单个 ≤ 5 MB</p>
12
- * <p class="upload-error" hidden role="alert">文件超过 5 MB</p>
6
+ * 完整契约(推荐结构——列表模式务必用此,避免交互嵌套):
7
+ * <div class="icen-upload" role="group" aria-label="上传文件">
8
+ * <div class="icen-upload-dropzone" role="button" tabindex="0" aria-label="拖放或点击选择文件">
9
+ * <input type="file" multiple accept="…" />
10
+ * <div class="icen-upload-icon">…svg…</div>
11
+ * <p class="icen-upload-title">拖放文件到此处,或<span class="icen-upload-link">点击选择</span></p>
12
+ * <p class="icen-upload-desc">支持 PDF / PNG / JPG,单个 ≤ 5 MB</p>
13
+ * <p class="icen-upload-error" hidden role="alert">文件超过 5 MB</p>
14
+ * </div>
15
+ * <!-- behavior 生成的 .icen-upload-list 是 dropzone 的兄弟,不在可点区域内 -->
13
16
  * </div>
14
17
  *
18
+ * 单元素结构:.icen-upload 自身带 role="button" 且没有 dropzone 子级时,
19
+ * 视觉与行为全部回落到 zone 本体(但列表模式的移除钮会与外层 role=button 构成嵌套交互,
20
+ * 请迁移到推荐结构)。
21
+ *
15
22
  * behavior 维护:
16
23
  * - dragenter/dragover 加 .is-drag,dragleave/drop 移除
17
- * - 校验 accept/size,错误写 .upload-error[hidden=false]
18
- * - 文件列表(可选)渲染到 .upload + <ul class="upload-list">,behavior 提供
24
+ * - 校验 accept/size/maxFiles(截断也派发 icen:upload-error)
25
+ * - 文件列表(可选)渲染为 dropzone 的兄弟 <ul class="icen-upload-list">
19
26
  */
20
27
 
21
- .upload {
28
+ /* 交互外壳:默认 zone 本体(单元素结构);有 dropzone 子级时镀铬迁移到它(推荐结构) */
29
+ .icen-upload {
30
+ display: flex;
31
+ flex-direction: column;
32
+ align-items: center;
33
+ justify-content: center;
34
+ text-align: center;
35
+ }
36
+ .icen-upload:not(:has(.icen-upload-dropzone)),
37
+ .icen-upload-dropzone {
38
+ width: 100%;
22
39
  display: flex;
23
40
  flex-direction: column;
24
41
  align-items: center;
25
42
  justify-content: center;
26
43
  text-align: center;
27
- padding: var(--density-space-lg) var(--density-space-md);
28
- border: 2px dashed var(--token-outline-soft);
29
- border-radius: var(--radius-lg);
30
- background: var(--token-bg-soft);
44
+ padding: var(--icen-density-space-lg) var(--icen-density-space-md);
45
+ border: 1px dashed var(--icen-token-control-border);
46
+ border-radius: var(--icen-control-radius-lg);
47
+ background: var(--icen-token-surface);
31
48
  cursor: pointer;
32
49
  transition:
33
50
  border-color var(--icen-tx-fast),
34
- background-color var(--icen-tx-fast),
35
- transform var(--icen-tx-fast);
51
+ background-color var(--icen-tx-fast);
36
52
  }
37
- .upload:hover:not(.is-disabled) {
38
- border-color: color-mix(in srgb, var(--token-accent) 60%, transparent);
39
- background: var(--token-control-hover);
53
+ .icen-upload:hover:not(.is-disabled):not(:has(.icen-upload-dropzone)),
54
+ .icen-upload-dropzone:hover:not(.is-disabled) {
55
+ border-color: var(--icen-token-control-border-hover);
56
+ background: var(--icen-token-fill-hover);
40
57
  }
41
- .upload:focus-visible {
58
+ .icen-upload:focus-visible,
59
+ .icen-upload-dropzone:focus-visible {
42
60
  outline: none;
43
61
  border-color: var(--icen-control-focus-border);
44
62
  box-shadow: var(--icen-control-focus-shadow);
45
63
  }
46
- .upload.is-drag {
47
- border-color: var(--token-accent);
64
+ .icen-upload.is-drag,
65
+ .icen-upload-dropzone.is-drag {
66
+ border-color: var(--icen-token-accent);
48
67
  border-style: solid;
49
- background: var(--token-accent-subtle);
50
- transform: scale(1.005);
68
+ background: var(--icen-token-accent-subtle);
51
69
  }
52
- .upload.is-disabled,
53
- .upload[aria-disabled='true'],
54
- .upload[data-disabled] {
70
+ .icen-upload.is-disabled,
71
+ .icen-upload[aria-disabled='true'],
72
+ .icen-upload[data-icen-disabled] {
55
73
  opacity: var(--icen-disabled-opacity);
56
74
  cursor: not-allowed;
57
75
  pointer-events: none;
58
76
  }
59
- .upload.is-loading,
60
- .upload[aria-busy='true'] {
77
+ .icen-upload.is-loading,
78
+ .icen-upload[aria-busy='true'] {
61
79
  cursor: progress;
62
80
  pointer-events: none;
63
81
  }
64
82
 
65
- .upload--compact { padding: var(--density-space-sm) var(--density-space-md); }
66
- .upload--compact .upload-icon { width: 28px; height: 28px; margin-bottom: 4px; }
83
+ .icen-upload--compact .icen-upload-dropzone, .icen-upload--compact:not(:has(.icen-upload-dropzone)) { padding: var(--icen-density-space-sm) var(--icen-density-space-md); }
84
+ .icen-upload--compact .icen-upload-icon { width: 28px; height: 28px; margin-bottom: 4px; }
67
85
 
68
- .upload input[type='file'] { display: none; }
86
+ .icen-upload input[type='file'] { display: none; }
69
87
 
70
- .upload-icon {
88
+ .icen-upload-icon {
71
89
  display: flex;
72
90
  align-items: center;
73
91
  justify-content: center;
74
- width: 40px;
75
- height: 40px;
76
- margin-bottom: var(--density-space-sm);
77
- border-radius: var(--radius-lg);
78
- background: var(--token-accent-subtle);
79
- color: var(--token-accent);
92
+ width: 38px;
93
+ height: 38px;
94
+ margin-bottom: var(--icen-density-space-sm);
95
+ border-radius: var(--icen-control-radius-lg);
96
+ background: var(--icen-token-accent-subtle);
97
+ color: var(--icen-token-accent);
80
98
  transition: transform var(--icen-tx-fast);
81
99
  }
82
- .upload:hover:not(.is-disabled) .upload-icon,
83
- .upload.is-drag .upload-icon {
100
+ /* 图标放大反馈:拖拽态全设备生效;hover 仅可悬停设备(触屏关闭,AGENTS 动效守卫) */
101
+ .icen-upload.is-drag .icen-upload-icon,
102
+ .icen-upload-dropzone.is-drag .icen-upload-icon {
84
103
  transform: scale(1.08);
85
104
  }
86
- .upload-icon svg { width: 20px; height: 20px; }
105
+ @media (hover: hover) and (pointer: fine) {
106
+ .icen-upload:hover:not(.is-disabled) .icen-upload-icon,
107
+ .icen-upload-dropzone:hover:not(.is-disabled) .icen-upload-icon {
108
+ transform: scale(1.08);
109
+ }
110
+ }
111
+ .icen-upload-icon svg { width: 20px; height: 20px; }
87
112
 
88
- .upload-title {
113
+ .icen-upload-title {
89
114
  margin: 0;
90
- font-size: var(--density-font-size-md);
115
+ font-size: var(--icen-density-font-size-md);
91
116
  font-weight: 500;
92
- color: var(--token-text);
117
+ color: var(--icen-token-text);
93
118
  }
94
- .upload-link {
95
- color: var(--token-accent);
119
+ .icen-upload-link {
120
+ color: var(--icen-token-accent);
96
121
  text-decoration: underline;
97
122
  text-underline-offset: 3px;
98
123
  }
99
- .upload-desc {
124
+ .icen-upload-desc {
100
125
  margin: 2px 0 0;
101
- font-size: var(--density-font-size-xs);
102
- color: var(--token-text-faint);
126
+ font-size: var(--icen-density-font-size-xs);
127
+ color: var(--icen-token-text-faint);
103
128
  }
104
- .upload-error {
105
- margin: var(--density-space-xs) 0 0;
129
+ .icen-upload-error {
130
+ margin: var(--icen-density-space-xs) 0 0;
106
131
  padding: 6px 10px;
107
- font-size: var(--density-font-size-xs);
108
- color: var(--token-error);
109
- background: var(--token-error-muted);
110
- border-radius: var(--radius-sm);
132
+ font-size: var(--icen-density-font-size-xs);
133
+ color: var(--icen-token-error);
134
+ background: var(--icen-token-error-muted);
135
+ border-radius: var(--icen-radius-sm);
111
136
  }
112
137
 
113
138
  /* 文件列表(behavior 可选渲染) */
114
- .upload-list {
139
+ .icen-upload-list {
115
140
  list-style: none;
116
141
  padding: 0;
117
- margin: var(--density-space-sm) 0 0;
142
+ margin: var(--icen-density-space-sm) 0 0;
118
143
  width: 100%;
119
144
  display: flex;
120
145
  flex-direction: column;
121
- gap: var(--density-space-xs);
146
+ gap: var(--icen-density-space-xs);
122
147
  }
123
- .upload-list-item {
148
+ .icen-upload-list-item {
124
149
  display: flex;
125
150
  align-items: center;
126
- gap: var(--density-space-sm);
127
- padding: var(--density-space-xs) var(--density-space-sm);
128
- background: var(--token-surface);
129
- border: 1px solid var(--token-outline-soft);
130
- border-radius: var(--radius-sm);
131
- font-size: var(--density-font-size-sm);
151
+ gap: var(--icen-density-space-sm);
152
+ padding: var(--icen-density-space-xs) var(--icen-density-space-sm);
153
+ background: var(--icen-token-surface);
154
+ border: 1px solid var(--icen-token-outline-soft);
155
+ border-radius: var(--icen-radius-sm);
156
+ font-size: var(--icen-density-font-size-sm);
132
157
  animation: upload-item-in var(--icen-tx-fast);
133
158
  transition: border-color var(--icen-tx-fast);
134
159
  }
135
- .upload-list-item:hover {
136
- border-color: var(--token-outline);
160
+ .icen-upload-list-item:hover {
161
+ border-color: var(--icen-token-outline);
137
162
  }
138
- .upload-list-item-thumb {
163
+ .icen-upload-list-item-thumb {
139
164
  width: 32px;
140
165
  height: 32px;
141
166
  object-fit: cover;
142
- border-radius: var(--radius-xs);
167
+ border-radius: var(--icen-radius-xs);
143
168
  flex-shrink: 0;
144
- background: var(--token-bg-soft);
169
+ background: var(--icen-token-bg-soft);
145
170
  }
146
- .upload-list-item-icon {
171
+ .icen-upload-list-item-icon {
147
172
  display: inline-flex;
148
173
  align-items: center;
149
174
  justify-content: center;
150
175
  width: 32px;
151
176
  height: 32px;
152
177
  flex-shrink: 0;
153
- border-radius: var(--radius-xs);
154
- background: var(--token-fill-1);
155
- color: var(--token-text-faint);
178
+ border-radius: var(--icen-radius-xs);
179
+ background: var(--icen-token-fill-1);
180
+ color: var(--icen-token-text-faint);
156
181
  }
157
- .upload-list-item-icon svg { width: 16px; height: 16px; }
158
- .upload-list-item-info {
182
+ .icen-upload-list-item-icon svg { width: 16px; height: 16px; }
183
+ .icen-upload-list-item-info {
159
184
  flex: 1;
160
185
  min-width: 0;
161
186
  display: flex;
162
187
  flex-direction: column;
163
188
  gap: 1px;
164
189
  }
165
- .upload-list-item-name {
190
+ .icen-upload-list-item-name {
166
191
  overflow: hidden;
167
192
  text-overflow: ellipsis;
168
193
  white-space: nowrap;
169
- color: var(--token-text);
194
+ color: var(--icen-token-text);
170
195
  }
171
- .upload-list-item-size {
172
- color: var(--token-text-faint);
196
+ .icen-upload-list-item-size {
197
+ color: var(--icen-token-text-faint);
173
198
  font-variant-numeric: tabular-nums;
174
- font-size: var(--density-font-size-xs);
199
+ font-size: var(--icen-density-font-size-xs);
175
200
  }
176
- .upload-list-item-x {
201
+ .icen-upload-list-item-x {
177
202
  border: none;
178
203
  background: transparent;
179
204
  cursor: pointer;
180
- color: var(--token-text-faint);
205
+ color: var(--icen-token-text-faint);
181
206
  padding: 4px;
182
- border-radius: var(--radius-full);
207
+ border-radius: var(--icen-radius-full);
183
208
  display: inline-flex;
184
209
  align-items: center;
185
210
  justify-content: center;
186
211
  flex-shrink: 0;
187
- transition: color var(--icen-tx-fast), background-color var(--icen-tx-fast);
212
+ position: relative;
213
+ transition:
214
+ opacity var(--icen-tx-fast),
215
+ color var(--icen-tx-fast),
216
+ background-color var(--icen-tx-fast);
217
+ }
218
+ /* 隐式移除:可悬停设备上随行浮现;触屏常显并带隐形 44px 命中区 */
219
+ @media (hover: hover) and (pointer: fine) {
220
+ .icen-upload-list-item-x { opacity: 0; }
221
+ .icen-upload-list-item:hover .icen-upload-list-item-x,
222
+ .icen-upload-list-item:focus-within .icen-upload-list-item-x,
223
+ .icen-upload-list-item-x:focus-visible { opacity: 1; }
188
224
  }
189
- .upload-list-item-x:hover {
190
- color: var(--token-error);
191
- background: var(--token-error-muted);
225
+ @media (pointer: coarse) {
226
+ .icen-upload-list-item-x::after { content: ''; position: absolute; inset: -10px; }
192
227
  }
193
- .upload-list-item-x:focus-visible {
228
+ .icen-upload-list-item-x:hover {
229
+ color: var(--icen-token-error);
230
+ background: var(--icen-token-error-muted);
231
+ }
232
+ .icen-upload-list-item-x:focus-visible {
194
233
  outline: none;
195
234
  box-shadow: var(--icen-ring);
196
235
  }
197
236
 
198
- .upload-list-item.is-error {
199
- border-color: var(--token-error);
237
+ .icen-upload-list-item.is-error {
238
+ border-color: var(--icen-token-error);
200
239
  }
201
- .upload-list-item.is-error .upload-list-item-icon {
202
- background: var(--token-error-muted);
203
- color: var(--token-error);
240
+ .icen-upload-list-item.is-error .icen-upload-list-item-icon {
241
+ background: var(--icen-token-error-muted);
242
+ color: var(--icen-token-error);
204
243
  }
205
244
 
206
245
  @keyframes upload-item-in {
@@ -208,5 +247,7 @@
208
247
  to { opacity: 1; transform: translateY(0); }
209
248
  }
210
249
  @media (prefers-reduced-motion: reduce) {
211
- .upload-list-item, .upload-icon { animation: none; transition: none; }
250
+ .icen-upload-list-item, .icen-upload-icon { animation: none; transition: none; }
251
+ }
252
+
212
253
  }
@@ -0,0 +1,2 @@
1
+ // kit: upload 类型面(构建产物,勿手改)
2
+ export * from '../behaviors/upload.mjs';
@@ -0,0 +1,96 @@
1
+ Ark Pixel Font
2
+ https://github.com/TakWolf/ark-pixel-font
3
+
4
+ Copyright (c) 2021, TakWolf (https://takwolf.com).
5
+
6
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
7
+ This license is copied below, and is also available with a FAQ at:
8
+ https://openfontlicense.org
9
+
10
+
11
+ -----------------------------------------------------------
12
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
13
+ -----------------------------------------------------------
14
+
15
+ PREAMBLE
16
+ The goals of the Open Font License (OFL) are to stimulate worldwide
17
+ development of collaborative font projects, to support the font creation
18
+ efforts of academic and linguistic communities, and to provide a free and
19
+ open framework in which fonts may be shared and improved in partnership
20
+ with others.
21
+
22
+ The OFL allows the licensed fonts to be used, studied, modified and
23
+ redistributed freely as long as they are not sold by themselves. The
24
+ fonts, including any derivative works, can be bundled, embedded,
25
+ redistributed and/or sold with any software provided that any reserved
26
+ names are not used by derivative works. The fonts and derivatives,
27
+ however, cannot be released under any other type of license. The
28
+ requirement for fonts to remain under this license does not apply
29
+ to any document created using the fonts or their derivatives.
30
+
31
+ DEFINITIONS
32
+ "Font Software" refers to the set of files released by the Copyright
33
+ Holder(s) under this license and clearly marked as such. This may
34
+ include source files, build scripts and documentation.
35
+
36
+ "Reserved Font Name" refers to any names specified as such after the
37
+ copyright statement(s).
38
+
39
+ "Original Version" refers to the collection of Font Software components as
40
+ distributed by the Copyright Holder(s).
41
+
42
+ "Modified Version" refers to any derivative made by adding to, deleting,
43
+ or substituting -- in part or in whole -- any of the components of the
44
+ Original Version, by changing formats or by porting the Font Software to a
45
+ new environment.
46
+
47
+ "Author" refers to any designer, engineer, programmer, technical
48
+ writer or other person who contributed to the Font Software.
49
+
50
+ PERMISSION & CONDITIONS
51
+ Permission is hereby granted, free of charge, to any person obtaining
52
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
53
+ redistribute, and sell modified and unmodified copies of the Font
54
+ Software, subject to the following conditions:
55
+
56
+ 1) Neither the Font Software nor any of its individual components,
57
+ in Original or Modified Versions, may be sold by itself.
58
+
59
+ 2) Original or Modified Versions of the Font Software may be bundled,
60
+ redistributed and/or sold with any software, provided that each copy
61
+ contains the above copyright notice and this license. These can be
62
+ included either as stand-alone text files, human-readable headers or
63
+ in the appropriate machine-readable metadata fields within text or
64
+ binary files as long as those fields can be easily viewed by the user.
65
+
66
+ 3) No Modified Version of the Font Software may use the Reserved Font
67
+ Name(s) unless explicit written permission is granted by the corresponding
68
+ Copyright Holder. This restriction only applies to the primary font name as
69
+ presented to the users.
70
+
71
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
72
+ Software shall not be used to promote, endorse or advertise any
73
+ Modified Version, except to acknowledge the contribution(s) of the
74
+ Copyright Holder(s) and the Author(s) or with their explicit written
75
+ permission.
76
+
77
+ 5) The Font Software, modified or unmodified, in part or in whole,
78
+ must be distributed entirely under this license, and must not be
79
+ distributed under any other license. The requirement for fonts to
80
+ remain under this license does not apply to any document created
81
+ using the Font Software.
82
+
83
+ TERMINATION
84
+ This license becomes null and void if any of the above conditions are
85
+ not met.
86
+
87
+ DISCLAIMER
88
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
89
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
90
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
91
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
92
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
93
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
94
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
95
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
96
+ OTHER DEALINGS IN THE FONT SOFTWARE.
@@ -0,0 +1,108 @@
1
+ [Cubic 11]
2
+ These fonts are free software.
3
+ Unlimited permission is granted to use, copy, and distribute them, with or without modification, either commercially or noncommercially.
4
+ THESE FONTS ARE PROVIDED "AS IS" WITHOUT WARRANTY.
5
+ 此字型是免費的。
6
+ 無論您是否進行對本字型進行商業或非商業性修改,均可無限制地使用,複製和分發它們。
7
+ 本字型的衍生品之授權必須與此字型相同,且不作任何擔保。
8
+ [JF Dot M+H 12]
9
+ Copyright(c) 2005 M+ FONTS PROJECT
10
+ [M+ BITMAP FONTS]
11
+ Copyright (C) 2002-2004 COZ
12
+ These fonts are free software.
13
+ Unlimited permission is granted to use, copy, and distribute it, with or without modification, either commercially and noncommercially.
14
+ THESE FONTS ARE PROVIDED "AS IS" WITHOUT WARRANTY.
15
+ これらのフォントはフリー(自由な)ソフトウエアです。
16
+ あらゆる改変の有無に関わらず、また商業的な利用であっても、自由にご利用、複製、再配布することができますが、全て無保証とさせていただきます。
17
+
18
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
19
+ This license is copied below, and is also available with a FAQ at:
20
+ https://scripts.sil.org/OFL
21
+
22
+
23
+ -----------------------------------------------------------
24
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
25
+ -----------------------------------------------------------
26
+
27
+ PREAMBLE
28
+ The goals of the Open Font License (OFL) are to stimulate worldwide
29
+ development of collaborative font projects, to support the font creation
30
+ efforts of academic and linguistic communities, and to provide a free and
31
+ open framework in which fonts may be shared and improved in partnership
32
+ with others.
33
+
34
+ The OFL allows the licensed fonts to be used, studied, modified and
35
+ redistributed freely as long as they are not sold by themselves. The
36
+ fonts, including any derivative works, can be bundled, embedded,
37
+ redistributed and/or sold with any software provided that any reserved
38
+ names are not used by derivative works. The fonts and derivatives,
39
+ however, cannot be released under any other type of license. The
40
+ requirement for fonts to remain under this license does not apply
41
+ to any document created using the fonts or their derivatives.
42
+
43
+ DEFINITIONS
44
+ "Font Software" refers to the set of files released by the Copyright
45
+ Holder(s) under this license and clearly marked as such. This may
46
+ include source files, build scripts and documentation.
47
+
48
+ "Reserved Font Name" refers to any names specified as such after the
49
+ copyright statement(s).
50
+
51
+ "Original Version" refers to the collection of Font Software components as
52
+ distributed by the Copyright Holder(s).
53
+
54
+ "Modified Version" refers to any derivative made by adding to, deleting,
55
+ or substituting -- in part or in whole -- any of the components of the
56
+ Original Version, by changing formats or by porting the Font Software to a
57
+ new environment.
58
+
59
+ "Author" refers to any designer, engineer, programmer, technical
60
+ writer or other person who contributed to the Font Software.
61
+
62
+ PERMISSION & CONDITIONS
63
+ Permission is hereby granted, free of charge, to any person obtaining
64
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
65
+ redistribute, and sell modified and unmodified copies of the Font
66
+ Software, subject to the following conditions:
67
+
68
+ 1) Neither the Font Software nor any of its individual components,
69
+ in Original or Modified Versions, may be sold by itself.
70
+
71
+ 2) Original or Modified Versions of the Font Software may be bundled,
72
+ redistributed and/or sold with any software, provided that each copy
73
+ contains the above copyright notice and this license. These can be
74
+ included either as stand-alone text files, human-readable headers or
75
+ in the appropriate machine-readable metadata fields within text or
76
+ binary files as long as those fields can be easily viewed by the user.
77
+
78
+ 3) No Modified Version of the Font Software may use the Reserved Font
79
+ Name(s) unless explicit written permission is granted by the corresponding
80
+ Copyright Holder. This restriction only applies to the primary font name as
81
+ presented to the users.
82
+
83
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
84
+ Software shall not be used to promote, endorse or advertise any
85
+ Modified Version, except to acknowledge the contribution(s) of the
86
+ Copyright Holder(s) and the Author(s) or with their explicit written
87
+ permission.
88
+
89
+ 5) The Font Software, modified or unmodified, in part or in whole,
90
+ must be distributed entirely under this license, and must not be
91
+ distributed under any other license. The requirement for fonts to
92
+ remain under this license does not apply to any document created
93
+ using the Font Software.
94
+
95
+ TERMINATION
96
+ This license becomes null and void if any of the above conditions are
97
+ not met.
98
+
99
+ DISCLAIMER
100
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
101
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
102
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
103
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
104
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
105
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
106
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
107
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
108
+ OTHER DEALINGS IN THE FONT SOFTWARE.
@@ -0,0 +1,93 @@
1
+ Copyright (c) 2019–2025 Lee Minseo (quiple@quiple.dev)
2
+
3
+ This font software is licensed under the SIL Open Font License, Version 1.1.
4
+ This license is copied below, and is also available with a FAQ at:
5
+ https://openfontlicense.org
6
+
7
+
8
+ -----------------------------------------------------------
9
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10
+ -----------------------------------------------------------
11
+
12
+ PREAMBLE
13
+ The goals of the Open Font License (OFL) are to stimulate worldwide
14
+ development of collaborative font projects, to support the font creation
15
+ efforts of academic and linguistic communities, and to provide a free and
16
+ open framework in which fonts may be shared and improved in partnership
17
+ with others.
18
+
19
+ The OFL allows the licensed fonts to be used, studied, modified and
20
+ redistributed freely as long as they are not sold by themselves. The
21
+ fonts, including any derivative works, can be bundled, embedded,
22
+ redistributed and/or sold with any software provided that any reserved
23
+ names are not used by derivative works. The fonts and derivatives,
24
+ however, cannot be released under any other type of license. The
25
+ requirement for fonts to remain under this license does not apply
26
+ to any document created using the fonts or their derivatives.
27
+
28
+ DEFINITIONS
29
+ "Font Software" refers to the set of files released by the Copyright
30
+ Holder(s) under this license and clearly marked as such. This may
31
+ include source files, build scripts and documentation.
32
+
33
+ "Reserved Font Name" refers to any names specified as such after the
34
+ copyright statement(s).
35
+
36
+ "Original Version" refers to the collection of Font Software components as
37
+ distributed by the Copyright Holder(s).
38
+
39
+ "Modified Version" refers to any derivative made by adding to, deleting,
40
+ or substituting -- in part or in whole -- any of the components of the
41
+ Original Version, by changing formats or by porting the Font Software to a
42
+ new environment.
43
+
44
+ "Author" refers to any designer, engineer, programmer, technical
45
+ writer or other person who contributed to the Font Software.
46
+
47
+ PERMISSION & CONDITIONS
48
+ Permission is hereby granted, free of charge, to any person obtaining
49
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
50
+ redistribute, and sell modified and unmodified copies of the Font
51
+ Software, subject to the following conditions:
52
+
53
+ 1) Neither the Font Software nor any of its individual components,
54
+ in Original or Modified Versions, may be sold by itself.
55
+
56
+ 2) Original or Modified Versions of the Font Software may be bundled,
57
+ redistributed and/or sold with any software, provided that each copy
58
+ contains the above copyright notice and this license. These can be
59
+ included either as stand-alone text files, human-readable headers or
60
+ in the appropriate machine-readable metadata fields within text or
61
+ binary files as long as those fields can be easily viewed by the user.
62
+
63
+ 3) No Modified Version of the Font Software may use the Reserved Font
64
+ Name(s) unless explicit written permission is granted by the corresponding
65
+ Copyright Holder. This restriction only applies to the primary font name as
66
+ presented to the users.
67
+
68
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69
+ Software shall not be used to promote, endorse or advertise any
70
+ Modified Version, except to acknowledge the contribution(s) of the
71
+ Copyright Holder(s) and the Author(s) or with their explicit written
72
+ permission.
73
+
74
+ 5) The Font Software, modified or unmodified, in part or in whole,
75
+ must be distributed entirely under this license, and must not be
76
+ distributed under any other license. The requirement for fonts to
77
+ remain under this license does not apply to any document created
78
+ using the Font Software.
79
+
80
+ TERMINATION
81
+ This license becomes null and void if any of the above conditions are
82
+ not met.
83
+
84
+ DISCLAIMER
85
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93
+ OTHER DEALINGS IN THE FONT SOFTWARE.