@logicplanes/kaeso-ui 0.4.4 → 0.4.6

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 (482) hide show
  1. package/ai/component-guides.md +250 -98
  2. package/ai/component-registry.json +264 -236
  3. package/ai/component-registry.md +222 -218
  4. package/ai/icons.md +1 -1
  5. package/ai/tokens.md +18 -14
  6. package/dist/blocks/delete-resource.js +3 -3
  7. package/dist/blocks/delete-resource.js.map +1 -1
  8. package/dist/blocks/pages.js +47 -42
  9. package/dist/blocks/pages.js.map +1 -1
  10. package/dist/blocks/resource-list.js +68 -55
  11. package/dist/blocks/resource-list.js.map +1 -1
  12. package/dist/chunks/agent-avatar-DHieggHK.js +188 -0
  13. package/dist/chunks/agent-avatar-DHieggHK.js.map +1 -0
  14. package/dist/chunks/app-frame-DysOel2X.js +232 -0
  15. package/dist/chunks/app-frame-DysOel2X.js.map +1 -0
  16. package/dist/chunks/arrow-focus-B0KdRFX8.js +20 -0
  17. package/dist/chunks/arrow-focus-B0KdRFX8.js.map +1 -0
  18. package/dist/chunks/avatar-CYNMK7uY.js +110 -0
  19. package/dist/chunks/avatar-CYNMK7uY.js.map +1 -0
  20. package/dist/chunks/badge-C0GC3B9X.js +27 -0
  21. package/dist/chunks/badge-C0GC3B9X.js.map +1 -0
  22. package/dist/chunks/banner-B3DGLTBu.js +88 -0
  23. package/dist/chunks/banner-B3DGLTBu.js.map +1 -0
  24. package/dist/chunks/button-IblhXUyZ.js +202 -0
  25. package/dist/chunks/button-IblhXUyZ.js.map +1 -0
  26. package/dist/chunks/{calendar-BWaf2MXc.js → calendar-Dc6_dl0f.js} +4 -4
  27. package/dist/chunks/calendar-Dc6_dl0f.js.map +1 -0
  28. package/dist/chunks/checkbox-9tbimmF3.js +141 -0
  29. package/dist/chunks/checkbox-9tbimmF3.js.map +1 -0
  30. package/dist/chunks/{cn-Dj6sRgkF.js → cn-BjnOAUrA.js} +45 -4
  31. package/dist/chunks/cn-BjnOAUrA.js.map +1 -0
  32. package/dist/chunks/code-block-64e-Cy1S.js +346 -0
  33. package/dist/chunks/code-block-64e-Cy1S.js.map +1 -0
  34. package/dist/chunks/{code-block-DdNPHEzI.js → code-block-KIvuE8jg.js} +122 -114
  35. package/dist/chunks/code-block-KIvuE8jg.js.map +1 -0
  36. package/dist/chunks/{code-tqj0uhBL.js → code-xqjww4Pv.js} +5 -6
  37. package/dist/chunks/code-xqjww4Pv.js.map +1 -0
  38. package/dist/chunks/combobox-DkcjkWc6.js +352 -0
  39. package/dist/chunks/combobox-DkcjkWc6.js.map +1 -0
  40. package/dist/chunks/command-list-CypqsC4T.js +456 -0
  41. package/dist/chunks/command-list-CypqsC4T.js.map +1 -0
  42. package/dist/chunks/{copy-button-FJvPJn72.js → copy-button-CwU8t_9_.js} +22 -15
  43. package/dist/chunks/copy-button-CwU8t_9_.js.map +1 -0
  44. package/dist/chunks/core-CmK-8ObW.js +505 -0
  45. package/dist/chunks/core-CmK-8ObW.js.map +1 -0
  46. package/dist/chunks/data-table-CqY8_6IS.js +581 -0
  47. package/dist/chunks/data-table-CqY8_6IS.js.map +1 -0
  48. package/dist/chunks/date-popup-DAnjptFt.js +58 -0
  49. package/dist/chunks/date-popup-DAnjptFt.js.map +1 -0
  50. package/dist/chunks/{de-D_0mmG-k.js → de-CqC4aSIV.js} +74 -40
  51. package/dist/chunks/de-CqC4aSIV.js.map +1 -0
  52. package/dist/chunks/{dialog-Cg9A_6SF.js → dialog-2zb6ClNR.js} +156 -134
  53. package/dist/chunks/dialog-2zb6ClNR.js.map +1 -0
  54. package/dist/chunks/disclosure-BtYRTDO3.js +22 -0
  55. package/dist/chunks/disclosure-BtYRTDO3.js.map +1 -0
  56. package/dist/chunks/domain-obd_w9xk.js +28 -0
  57. package/dist/chunks/domain-obd_w9xk.js.map +1 -0
  58. package/dist/chunks/{empty-DvhyMXQq.js → empty-BpiUgGzm.js} +2 -2
  59. package/dist/chunks/{empty-DvhyMXQq.js.map → empty-BpiUgGzm.js.map} +1 -1
  60. package/dist/chunks/{field-TviMvYa2.js → field-D7m-yl-D.js} +37 -34
  61. package/dist/chunks/field-D7m-yl-D.js.map +1 -0
  62. package/dist/chunks/{icon-D7ja-_Yk.js → icon-CBzOwqrX.js} +7 -6
  63. package/dist/chunks/{icon-D7ja-_Yk.js.map → icon-CBzOwqrX.js.map} +1 -1
  64. package/dist/chunks/{icon-button-CrdF_eMG.js → icon-button-Dfwpvmav.js} +7 -6
  65. package/dist/chunks/icon-button-Dfwpvmav.js.map +1 -0
  66. package/dist/chunks/{identity-BmhQ6BQ-.js → identity-3Foi5F8w.js} +7 -7
  67. package/dist/chunks/{identity-BmhQ6BQ-.js.map → identity-3Foi5F8w.js.map} +1 -1
  68. package/dist/chunks/{input-2VJuj_M4.js → input-Bo5-UZg2.js} +15 -9
  69. package/dist/chunks/input-Bo5-UZg2.js.map +1 -0
  70. package/dist/chunks/{input-group-DQ_4DoXg.js → input-group-jPcK9T_a.js} +42 -29
  71. package/dist/chunks/input-group-jPcK9T_a.js.map +1 -0
  72. package/dist/chunks/iso-field-DoqHBg8n.js +52 -0
  73. package/dist/chunks/iso-field-DoqHBg8n.js.map +1 -0
  74. package/dist/chunks/json-view-DZ2nL2Ir.js +253 -0
  75. package/dist/chunks/json-view-DZ2nL2Ir.js.map +1 -0
  76. package/dist/chunks/{kbd-BF1vKXJf.js → kbd-8A0ML_up.js} +30 -28
  77. package/dist/chunks/kbd-8A0ML_up.js.map +1 -0
  78. package/dist/chunks/label-DW24Aj0Z.js +26 -0
  79. package/dist/chunks/label-DW24Aj0Z.js.map +1 -0
  80. package/dist/chunks/{link-KWI7PevW.js → link-CMjkcLQK.js} +14 -14
  81. package/dist/chunks/link-CMjkcLQK.js.map +1 -0
  82. package/dist/chunks/list-B4G-sWwV.js +540 -0
  83. package/dist/chunks/list-B4G-sWwV.js.map +1 -0
  84. package/dist/chunks/{loader-DCfPndXa.js → loader-zo8CCIGJ.js} +2 -2
  85. package/dist/chunks/{loader-DCfPndXa.js.map → loader-zo8CCIGJ.js.map} +1 -1
  86. package/dist/chunks/markdown-C565aBR7.js +338 -0
  87. package/dist/chunks/markdown-C565aBR7.js.map +1 -0
  88. package/dist/chunks/menu-Clvv6ftq.js +485 -0
  89. package/dist/chunks/menu-Clvv6ftq.js.map +1 -0
  90. package/dist/chunks/merge-refs-BN1FyQt9.js +20 -0
  91. package/dist/chunks/merge-refs-BN1FyQt9.js.map +1 -0
  92. package/dist/chunks/meter-CASMHlxl.js +100 -0
  93. package/dist/chunks/meter-CASMHlxl.js.map +1 -0
  94. package/dist/chunks/nav-sheet-Dt6JSvzX.js +67 -0
  95. package/dist/chunks/nav-sheet-Dt6JSvzX.js.map +1 -0
  96. package/dist/chunks/{nav-wordmark-_pjheAsZ.js → nav-wordmark-J4pB_vjr.js} +4 -8
  97. package/dist/chunks/nav-wordmark-J4pB_vjr.js.map +1 -0
  98. package/dist/chunks/page-header-kS5tdmvb.js +45 -0
  99. package/dist/chunks/page-header-kS5tdmvb.js.map +1 -0
  100. package/dist/chunks/pagination-D7fAm8qg.js +147 -0
  101. package/dist/chunks/pagination-D7fAm8qg.js.map +1 -0
  102. package/dist/chunks/picker-popover-1FHb1LQG.js +119 -0
  103. package/dist/chunks/picker-popover-1FHb1LQG.js.map +1 -0
  104. package/dist/chunks/popover-Bl5QYqnh.js +51 -0
  105. package/dist/chunks/popover-Bl5QYqnh.js.map +1 -0
  106. package/dist/chunks/{portal-context-BBbzDKmY.js → portal-context-CTatR2Z8.js} +14 -4
  107. package/dist/chunks/portal-context-CTatR2Z8.js.map +1 -0
  108. package/dist/chunks/{radio-CDDFpdtL.js → radio-C6GtzF_t.js} +38 -23
  109. package/dist/chunks/radio-C6GtzF_t.js.map +1 -0
  110. package/dist/chunks/range-popup-lGiZsG3s.js +160 -0
  111. package/dist/chunks/range-popup-lGiZsG3s.js.map +1 -0
  112. package/dist/chunks/reasoning-frame-C3HdQRRS.js +51 -0
  113. package/dist/chunks/reasoning-frame-C3HdQRRS.js.map +1 -0
  114. package/dist/chunks/release-art-ChiT4T2S.js +582 -0
  115. package/dist/chunks/release-art-ChiT4T2S.js.map +1 -0
  116. package/dist/chunks/rights-B68ocZuq.js +312 -0
  117. package/dist/chunks/rights-B68ocZuq.js.map +1 -0
  118. package/dist/chunks/{scroll-area-D8MD7Vpo.js → scroll-area-_Ljh4-bG.js} +11 -6
  119. package/dist/chunks/scroll-area-_Ljh4-bG.js.map +1 -0
  120. package/dist/chunks/section-CFBYhsUi.js +77 -0
  121. package/dist/chunks/section-CFBYhsUi.js.map +1 -0
  122. package/dist/chunks/section-header-DU1Q4Tdf.js +28 -0
  123. package/dist/chunks/section-header-DU1Q4Tdf.js.map +1 -0
  124. package/dist/chunks/segmented-D9i1avik.js +119 -0
  125. package/dist/chunks/segmented-D9i1avik.js.map +1 -0
  126. package/dist/chunks/select-BqjmQOqx.js +222 -0
  127. package/dist/chunks/select-BqjmQOqx.js.map +1 -0
  128. package/dist/chunks/{separator-D7TzNHmX.js → separator-BNWf6BBj.js} +13 -8
  129. package/dist/chunks/separator-BNWf6BBj.js.map +1 -0
  130. package/dist/chunks/sidebar-Dq7oGOje.js +664 -0
  131. package/dist/chunks/sidebar-Dq7oGOje.js.map +1 -0
  132. package/dist/chunks/{sidebar-menu-BN3jkTlK.js → sidebar-menu-QSSNu1jJ.js} +2 -2
  133. package/dist/chunks/{sidebar-menu-BN3jkTlK.js.map → sidebar-menu-QSSNu1jJ.js.map} +1 -1
  134. package/dist/chunks/{skeleton-Dcz57Zyp.js → skeleton-D-qk3mes.js} +3 -3
  135. package/dist/chunks/skeleton-D-qk3mes.js.map +1 -0
  136. package/dist/chunks/slider-CcE8GtuV.js +58 -0
  137. package/dist/chunks/slider-CcE8GtuV.js.map +1 -0
  138. package/dist/chunks/{status-dot-QJTF0Yv4.js → status-dot-CP6runiC.js} +4 -4
  139. package/dist/chunks/{status-dot-QJTF0Yv4.js.map → status-dot-CP6runiC.js.map} +1 -1
  140. package/dist/chunks/{styles-CVJU9t9v.js → styles-hkFkoBbi.js} +2 -2
  141. package/dist/chunks/{styles-CVJU9t9v.js.map → styles-hkFkoBbi.js.map} +1 -1
  142. package/dist/chunks/{swap-text-Dr0Irxz6.js → swap-text-SlUjrTlG.js} +3 -3
  143. package/dist/chunks/swap-text-SlUjrTlG.js.map +1 -0
  144. package/dist/chunks/switch-ngywMQdl.js +76 -0
  145. package/dist/chunks/switch-ngywMQdl.js.map +1 -0
  146. package/dist/chunks/table-CTK5E0J7.js +102 -0
  147. package/dist/chunks/table-CTK5E0J7.js.map +1 -0
  148. package/dist/chunks/tag-BGr6lTSV.js +100 -0
  149. package/dist/chunks/tag-BGr6lTSV.js.map +1 -0
  150. package/dist/chunks/{text-CIXH8rmT.js → text-DkKdTVUf.js} +9 -9
  151. package/dist/chunks/text-DkKdTVUf.js.map +1 -0
  152. package/dist/chunks/{textarea--4FRL3Pb.js → textarea-CO0HP6fK.js} +47 -36
  153. package/dist/chunks/textarea-CO0HP6fK.js.map +1 -0
  154. package/dist/chunks/timeseries-Ck-q0wWn.js +381 -0
  155. package/dist/chunks/timeseries-Ck-q0wWn.js.map +1 -0
  156. package/dist/chunks/toolbar-u0Gm7Q7-.js +61 -0
  157. package/dist/chunks/toolbar-u0Gm7Q7-.js.map +1 -0
  158. package/dist/chunks/tooltip-Tkm-urbi.js +202 -0
  159. package/dist/chunks/tooltip-Tkm-urbi.js.map +1 -0
  160. package/dist/chunks/tooltip-root-BC_RNNiP.js +70 -0
  161. package/dist/chunks/tooltip-root-BC_RNNiP.js.map +1 -0
  162. package/dist/chunks/truncated-d1afmUJT.js +33 -0
  163. package/dist/chunks/truncated-d1afmUJT.js.map +1 -0
  164. package/dist/chunks/use-coarse-pointer-Ml5oE6oX.js +28 -0
  165. package/dist/chunks/use-coarse-pointer-Ml5oE6oX.js.map +1 -0
  166. package/dist/chunks/use-hydrating-COtYVRo4.js +8 -0
  167. package/dist/chunks/use-hydrating-COtYVRo4.js.map +1 -0
  168. package/dist/chunks/use-scroll-fade-uc8mWSDX.js +30 -0
  169. package/dist/chunks/use-scroll-fade-uc8mWSDX.js.map +1 -0
  170. package/dist/chunks/{zh-CN-Bm6UPIbW.js → zh-CN-BlpsT6d_.js} +73 -39
  171. package/dist/chunks/zh-CN-BlpsT6d_.js.map +1 -0
  172. package/dist/components/agent-avatar.js +1 -1
  173. package/dist/components/app-frame.js +2 -2
  174. package/dist/components/avatar.js +1 -1
  175. package/dist/components/badge.js +1 -1
  176. package/dist/components/banner.js +1 -1
  177. package/dist/components/button-group.js +22 -22
  178. package/dist/components/button-group.js.map +1 -1
  179. package/dist/components/button.js +1 -1
  180. package/dist/components/calendar.js +1 -1
  181. package/dist/components/charts/bar.js +235 -160
  182. package/dist/components/charts/bar.js.map +1 -1
  183. package/dist/components/charts/donut.js +144 -99
  184. package/dist/components/charts/donut.js.map +1 -1
  185. package/dist/components/charts/gauge.js +61 -49
  186. package/dist/components/charts/gauge.js.map +1 -1
  187. package/dist/components/charts/heatmap.js +179 -70
  188. package/dist/components/charts/heatmap.js.map +1 -1
  189. package/dist/components/charts/sankey.js +144 -77
  190. package/dist/components/charts/sankey.js.map +1 -1
  191. package/dist/components/charts/sparkline.js +54 -38
  192. package/dist/components/charts/sparkline.js.map +1 -1
  193. package/dist/components/charts/timeseries.js +1 -1
  194. package/dist/components/charts.js +2 -2
  195. package/dist/components/checkbox.js +1 -1
  196. package/dist/components/code-block.js +3 -3
  197. package/dist/components/code.js +1 -1
  198. package/dist/components/collapsible.js +77 -1
  199. package/dist/components/collapsible.js.map +1 -0
  200. package/dist/components/combobox.js +1 -1
  201. package/dist/components/command-list.js +2 -2
  202. package/dist/components/command-palette.js +89 -66
  203. package/dist/components/command-palette.js.map +1 -1
  204. package/dist/components/copy-button.js +1 -1
  205. package/dist/components/data-table.js +1 -459
  206. package/dist/components/date-picker.js +162 -151
  207. package/dist/components/date-picker.js.map +1 -1
  208. package/dist/components/dialog.js +74 -63
  209. package/dist/components/dialog.js.map +1 -1
  210. package/dist/components/display-options.js +76 -64
  211. package/dist/components/display-options.js.map +1 -1
  212. package/dist/components/empty.js +1 -1
  213. package/dist/components/field.js +1 -1
  214. package/dist/components/figure.js +2 -2
  215. package/dist/components/filter-chip.js +36 -27
  216. package/dist/components/filter-chip.js.map +1 -1
  217. package/dist/components/filter-row.js +4 -4
  218. package/dist/components/filter-row.js.map +1 -1
  219. package/dist/components/flow.js +94 -63
  220. package/dist/components/flow.js.map +1 -1
  221. package/dist/components/heading.js +1 -1
  222. package/dist/components/icon-button.js +1 -1
  223. package/dist/components/icon.js +1 -1
  224. package/dist/components/input.js +176 -98
  225. package/dist/components/input.js.map +1 -1
  226. package/dist/components/kaeso/conversation.js +51 -46
  227. package/dist/components/kaeso/conversation.js.map +1 -1
  228. package/dist/components/kaeso/identity.js +1 -1
  229. package/dist/components/kaeso/moments.js +23 -20
  230. package/dist/components/kaeso/moments.js.map +1 -1
  231. package/dist/components/kaeso/rights.js +1 -1
  232. package/dist/components/kaeso/usage.js +90 -74
  233. package/dist/components/kaeso/usage.js.map +1 -1
  234. package/dist/components/kaeso.js +200 -187
  235. package/dist/components/kaeso.js.map +1 -1
  236. package/dist/components/kbd.js +1 -1
  237. package/dist/components/key-value.js +32 -47
  238. package/dist/components/key-value.js.map +1 -1
  239. package/dist/components/label.js +1 -25
  240. package/dist/components/layout.js +2 -2
  241. package/dist/components/layout.js.map +1 -1
  242. package/dist/components/link.js +1 -1
  243. package/dist/components/list.js +1 -1
  244. package/dist/components/loader.js +11 -10
  245. package/dist/components/loader.js.map +1 -1
  246. package/dist/components/logo.js +2 -2
  247. package/dist/components/markdown.js +1 -1
  248. package/dist/components/menu.js +2 -2
  249. package/dist/components/meter.js +1 -1
  250. package/dist/components/page-header.js +1 -1
  251. package/dist/components/pagination.js +1 -1
  252. package/dist/components/playground.js +644 -529
  253. package/dist/components/playground.js.map +1 -1
  254. package/dist/components/popover.js +4 -4
  255. package/dist/components/popover.js.map +1 -1
  256. package/dist/components/portal.js +1 -1
  257. package/dist/components/qr-code.js +2 -2
  258. package/dist/components/qr-code.js.map +1 -1
  259. package/dist/components/radio.js +1 -1
  260. package/dist/components/release-art.js +1 -1
  261. package/dist/components/scroll-area.js +1 -1
  262. package/dist/components/section.js +1 -1
  263. package/dist/components/segmented.js +1 -1
  264. package/dist/components/select.js +1 -1
  265. package/dist/components/separator.js +1 -1
  266. package/dist/components/settings.js +39 -46
  267. package/dist/components/settings.js.map +1 -1
  268. package/dist/components/sheet.js +10 -9
  269. package/dist/components/sheet.js.map +1 -1
  270. package/dist/components/sidebar.js +1 -1
  271. package/dist/components/skeleton.js +1 -1
  272. package/dist/components/slider.js +1 -1
  273. package/dist/components/stat.js +98 -84
  274. package/dist/components/stat.js.map +1 -1
  275. package/dist/components/status-dot.js +1 -1
  276. package/dist/components/surface.js +1 -1
  277. package/dist/components/swap-text.js +1 -1
  278. package/dist/components/switch.js +1 -1
  279. package/dist/components/table.js +1 -1
  280. package/dist/components/tabs.js +73 -55
  281. package/dist/components/tabs.js.map +1 -1
  282. package/dist/components/tag.js +1 -1
  283. package/dist/components/text.js +1 -1
  284. package/dist/components/theme-image.js +1 -1
  285. package/dist/components/theme-menu.js +5 -2
  286. package/dist/components/theme-menu.js.map +1 -1
  287. package/dist/components/theme-select.js +1 -1
  288. package/dist/components/thumbnail.js +35 -24
  289. package/dist/components/thumbnail.js.map +1 -1
  290. package/dist/components/timeline.js +51 -35
  291. package/dist/components/timeline.js.map +1 -1
  292. package/dist/components/toast.js +76 -66
  293. package/dist/components/toast.js.map +1 -1
  294. package/dist/components/toc.js +14 -8
  295. package/dist/components/toc.js.map +1 -1
  296. package/dist/components/toolbar.js +1 -1
  297. package/dist/components/tooltip.js +1 -1
  298. package/dist/components/visually-hidden.js +1 -1
  299. package/dist/i18n-provider.js +1 -1
  300. package/dist/index.js +100 -100
  301. package/dist/kaeso.css +605 -67
  302. package/dist/styles.css +1 -1
  303. package/dist/tailwind.css +1 -1
  304. package/dist/types/blocks/delete-resource/delete-resource.d.ts +2 -2
  305. package/dist/types/components/agent-avatar/agent-avatar.d.ts +24 -19
  306. package/dist/types/components/badge/badge.d.ts +3 -3
  307. package/dist/types/components/banner/banner.d.ts +3 -3
  308. package/dist/types/components/button/button.d.ts +2 -2
  309. package/dist/types/components/button-group/button-group.d.ts +1 -1
  310. package/dist/types/components/charts/domain.d.ts +11 -0
  311. package/dist/types/components/charts/marks.d.ts +1 -0
  312. package/dist/types/components/code/code.d.ts +3 -3
  313. package/dist/types/components/code-block/json-view.d.ts +2 -1
  314. package/dist/types/components/code-block/numbers.d.ts +1 -0
  315. package/dist/types/components/collapsible/collapsible.d.ts +2 -2
  316. package/dist/types/components/collapsible/disclosure.d.ts +2 -0
  317. package/dist/types/components/data-table/data-table.d.ts +6 -5
  318. package/dist/types/components/data-table/docs.d.ts +1 -0
  319. package/dist/types/components/data-table/time-columns.d.ts +1 -0
  320. package/dist/types/components/date-picker/focus-day.d.ts +1 -0
  321. package/dist/types/components/date-picker/iso-field.d.ts +8 -1
  322. package/dist/types/components/dialog/dialog.d.ts +7 -7
  323. package/dist/types/components/field/field.d.ts +1 -1
  324. package/dist/types/components/flow/flow.d.ts +1 -1
  325. package/dist/types/components/icon-button/icon-button.d.ts +1 -1
  326. package/dist/types/components/input/input-group.d.ts +2 -0
  327. package/dist/types/components/input/number-input.d.ts +4 -4
  328. package/dist/types/components/input/otp-input.d.ts +3 -3
  329. package/dist/types/components/kaeso/client-button.d.ts +2 -1
  330. package/dist/types/components/kaeso/provider-picker.d.ts +1 -0
  331. package/dist/types/components/kaeso/rights.d.ts +1 -1
  332. package/dist/types/components/kaeso/role-picker.d.ts +1 -0
  333. package/dist/types/components/key-value/key-value.d.ts +2 -2
  334. package/dist/types/components/layout/layout.d.ts +2 -2
  335. package/dist/types/components/link/link.d.ts +4 -4
  336. package/dist/types/components/list/list.d.ts +2 -2
  337. package/dist/types/components/menu/menu.d.ts +2 -1
  338. package/dist/types/components/menu/styles.d.ts +3 -3
  339. package/dist/types/components/meter/meter.d.ts +3 -3
  340. package/dist/types/components/page-header/page-header.d.ts +1 -1
  341. package/dist/types/components/pagination/pagination.d.ts +2 -2
  342. package/dist/types/components/playground/prompt-suggestions.d.ts +1 -0
  343. package/dist/types/components/playground/reasoning-frame.d.ts +14 -0
  344. package/dist/types/components/playground/reasoning.d.ts +1 -0
  345. package/dist/types/components/popover/popover.d.ts +1 -1
  346. package/dist/types/components/scroll-area/scroll-area.d.ts +2 -2
  347. package/dist/types/components/section/section-header.d.ts +6 -0
  348. package/dist/types/components/segmented/segmented.d.ts +1 -0
  349. package/dist/types/components/select/select.d.ts +1 -1
  350. package/dist/types/components/sheet/sheet.d.ts +3 -3
  351. package/dist/types/components/sidebar/sidebar.d.ts +1 -0
  352. package/dist/types/components/slider/slider.d.ts +2 -2
  353. package/dist/types/components/stat/stat.d.ts +1 -1
  354. package/dist/types/components/tabs/tabs.d.ts +6 -4
  355. package/dist/types/components/text/truncated.d.ts +7 -0
  356. package/dist/types/components/timeline/timeline.d.ts +5 -5
  357. package/dist/types/components/toc/toc.d.ts +1 -1
  358. package/dist/types/components/toolbar/toolbar.d.ts +1 -1
  359. package/dist/types/components/tooltip/tooltip.d.ts +2 -2
  360. package/dist/types/components/tooltip/trigger-props.d.ts +1 -0
  361. package/dist/types/hooks/use-coarse-pointer.d.ts +1 -0
  362. package/dist/types/hooks/use-hydrating.d.ts +1 -0
  363. package/dist/types/utils/arrow-focus.d.ts +4 -1
  364. package/dist/types/utils/cn.d.ts +33 -0
  365. package/dist/types/utils/portal-context.d.ts +7 -1
  366. package/dist/utils.js +2 -2
  367. package/foundations/accessibility.md +3 -2
  368. package/foundations/color.md +5 -1
  369. package/foundations/elevation.md +1 -0
  370. package/foundations/motion.md +1 -1
  371. package/foundations/shape.md +2 -2
  372. package/foundations/typography.md +12 -12
  373. package/package.json +2 -2
  374. package/dist/chunks/agent-avatar-0pdBTWkR.js +0 -171
  375. package/dist/chunks/agent-avatar-0pdBTWkR.js.map +0 -1
  376. package/dist/chunks/app-frame-DogGRmsu.js +0 -221
  377. package/dist/chunks/app-frame-DogGRmsu.js.map +0 -1
  378. package/dist/chunks/arrow-focus-BcySmwwU.js +0 -11
  379. package/dist/chunks/arrow-focus-BcySmwwU.js.map +0 -1
  380. package/dist/chunks/avatar-CWbdwbJv.js +0 -83
  381. package/dist/chunks/avatar-CWbdwbJv.js.map +0 -1
  382. package/dist/chunks/badge-C2KtxCLB.js +0 -26
  383. package/dist/chunks/badge-C2KtxCLB.js.map +0 -1
  384. package/dist/chunks/banner-BA2ALw9M.js +0 -85
  385. package/dist/chunks/banner-BA2ALw9M.js.map +0 -1
  386. package/dist/chunks/button-CzuxqawA.js +0 -164
  387. package/dist/chunks/button-CzuxqawA.js.map +0 -1
  388. package/dist/chunks/calendar-BWaf2MXc.js.map +0 -1
  389. package/dist/chunks/checkbox-CQjwCPkc.js +0 -126
  390. package/dist/chunks/checkbox-CQjwCPkc.js.map +0 -1
  391. package/dist/chunks/cn-Dj6sRgkF.js.map +0 -1
  392. package/dist/chunks/code-block-BZIe_B9l.js +0 -334
  393. package/dist/chunks/code-block-BZIe_B9l.js.map +0 -1
  394. package/dist/chunks/code-block-DdNPHEzI.js.map +0 -1
  395. package/dist/chunks/code-tqj0uhBL.js.map +0 -1
  396. package/dist/chunks/collapsible-CKrCX_T9.js +0 -87
  397. package/dist/chunks/collapsible-CKrCX_T9.js.map +0 -1
  398. package/dist/chunks/combobox-DjDI7SUC.js +0 -319
  399. package/dist/chunks/combobox-DjDI7SUC.js.map +0 -1
  400. package/dist/chunks/command-list-C2Y7V_lt.js +0 -418
  401. package/dist/chunks/command-list-C2Y7V_lt.js.map +0 -1
  402. package/dist/chunks/copy-button-FJvPJn72.js.map +0 -1
  403. package/dist/chunks/core-BYns5ytV.js +0 -472
  404. package/dist/chunks/core-BYns5ytV.js.map +0 -1
  405. package/dist/chunks/date-popup-CPA_zt6o.js +0 -35
  406. package/dist/chunks/date-popup-CPA_zt6o.js.map +0 -1
  407. package/dist/chunks/de-D_0mmG-k.js.map +0 -1
  408. package/dist/chunks/dialog-Cg9A_6SF.js.map +0 -1
  409. package/dist/chunks/field-TviMvYa2.js.map +0 -1
  410. package/dist/chunks/hidden-description-B2zSmLcn.js +0 -23
  411. package/dist/chunks/hidden-description-B2zSmLcn.js.map +0 -1
  412. package/dist/chunks/icon-button-CrdF_eMG.js.map +0 -1
  413. package/dist/chunks/input-2VJuj_M4.js.map +0 -1
  414. package/dist/chunks/input-group-DQ_4DoXg.js.map +0 -1
  415. package/dist/chunks/iso-field-B2rTwiBo.js +0 -33
  416. package/dist/chunks/iso-field-B2rTwiBo.js.map +0 -1
  417. package/dist/chunks/json-view-Dqd2TDkc.js +0 -175
  418. package/dist/chunks/json-view-Dqd2TDkc.js.map +0 -1
  419. package/dist/chunks/kbd-BF1vKXJf.js.map +0 -1
  420. package/dist/chunks/link-KWI7PevW.js.map +0 -1
  421. package/dist/chunks/list-M1csq-d4.js +0 -494
  422. package/dist/chunks/list-M1csq-d4.js.map +0 -1
  423. package/dist/chunks/markdown-BupwFOae.js +0 -313
  424. package/dist/chunks/markdown-BupwFOae.js.map +0 -1
  425. package/dist/chunks/menu-DEmBfdPm.js +0 -450
  426. package/dist/chunks/menu-DEmBfdPm.js.map +0 -1
  427. package/dist/chunks/meter-Bj4N3Xuh.js +0 -84
  428. package/dist/chunks/meter-Bj4N3Xuh.js.map +0 -1
  429. package/dist/chunks/nav-sheet-CzgIwgAm.js +0 -60
  430. package/dist/chunks/nav-sheet-CzgIwgAm.js.map +0 -1
  431. package/dist/chunks/nav-wordmark-_pjheAsZ.js.map +0 -1
  432. package/dist/chunks/page-header-DL2y2iZp.js +0 -41
  433. package/dist/chunks/page-header-DL2y2iZp.js.map +0 -1
  434. package/dist/chunks/pagination-Cn_qF4cg.js +0 -86
  435. package/dist/chunks/pagination-Cn_qF4cg.js.map +0 -1
  436. package/dist/chunks/picker-popover-BxyU1U9F.js +0 -106
  437. package/dist/chunks/picker-popover-BxyU1U9F.js.map +0 -1
  438. package/dist/chunks/popover-DNN4S47w.js +0 -50
  439. package/dist/chunks/popover-DNN4S47w.js.map +0 -1
  440. package/dist/chunks/portal-context-BBbzDKmY.js.map +0 -1
  441. package/dist/chunks/radio-CDDFpdtL.js.map +0 -1
  442. package/dist/chunks/range-popup-CRyWYUB1.js +0 -128
  443. package/dist/chunks/range-popup-CRyWYUB1.js.map +0 -1
  444. package/dist/chunks/release-art-ZwfFQImt.js +0 -561
  445. package/dist/chunks/release-art-ZwfFQImt.js.map +0 -1
  446. package/dist/chunks/rights-Cyp0Pzp-.js +0 -279
  447. package/dist/chunks/rights-Cyp0Pzp-.js.map +0 -1
  448. package/dist/chunks/scroll-area-D8MD7Vpo.js.map +0 -1
  449. package/dist/chunks/scroll-parent-WXvzQcUo.js +0 -14
  450. package/dist/chunks/scroll-parent-WXvzQcUo.js.map +0 -1
  451. package/dist/chunks/section-Ce1efbsP.js +0 -87
  452. package/dist/chunks/section-Ce1efbsP.js.map +0 -1
  453. package/dist/chunks/segmented-CErcoxwi.js +0 -114
  454. package/dist/chunks/segmented-CErcoxwi.js.map +0 -1
  455. package/dist/chunks/select-x4XVsdCI.js +0 -210
  456. package/dist/chunks/select-x4XVsdCI.js.map +0 -1
  457. package/dist/chunks/separator-D7TzNHmX.js.map +0 -1
  458. package/dist/chunks/sidebar-3r1ZRXlN.js +0 -621
  459. package/dist/chunks/sidebar-3r1ZRXlN.js.map +0 -1
  460. package/dist/chunks/skeleton-Dcz57Zyp.js.map +0 -1
  461. package/dist/chunks/slider-Ci83PGtj.js +0 -57
  462. package/dist/chunks/slider-Ci83PGtj.js.map +0 -1
  463. package/dist/chunks/swap-text-Dr0Irxz6.js.map +0 -1
  464. package/dist/chunks/switch-BNMq_kGt.js +0 -59
  465. package/dist/chunks/switch-BNMq_kGt.js.map +0 -1
  466. package/dist/chunks/table-BeOSKl_3.js +0 -84
  467. package/dist/chunks/table-BeOSKl_3.js.map +0 -1
  468. package/dist/chunks/tag-D_M1s2qS.js +0 -87
  469. package/dist/chunks/tag-D_M1s2qS.js.map +0 -1
  470. package/dist/chunks/text-CIXH8rmT.js.map +0 -1
  471. package/dist/chunks/textarea--4FRL3Pb.js.map +0 -1
  472. package/dist/chunks/timeseries-D1xjRXfk.js +0 -339
  473. package/dist/chunks/timeseries-D1xjRXfk.js.map +0 -1
  474. package/dist/chunks/toolbar-WA_oZgu-.js +0 -37
  475. package/dist/chunks/toolbar-WA_oZgu-.js.map +0 -1
  476. package/dist/chunks/tooltip-OcwO0VUT.js +0 -154
  477. package/dist/chunks/tooltip-OcwO0VUT.js.map +0 -1
  478. package/dist/chunks/tooltip-root-DzahJDVj.js +0 -60
  479. package/dist/chunks/tooltip-root-DzahJDVj.js.map +0 -1
  480. package/dist/chunks/zh-CN-Bm6UPIbW.js.map +0 -1
  481. package/dist/components/data-table.js.map +0 -1
  482. package/dist/components/label.js.map +0 -1
@@ -0,0 +1,253 @@
1
+ "use client";
2
+ import { t as e } from "./cn-BjnOAUrA.js";
3
+ import { i as t } from "./context-BELWW79w.js";
4
+ import { t as n } from "./icon-CBzOwqrX.js";
5
+ import { t as r } from "./use-copy-Dm2ncvMX.js";
6
+ import { createContext as i, forwardRef as a, useContext as o, useLayoutEffect as s, useMemo as c, useRef as l, useState as u } from "react";
7
+ import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
8
+ import { ArrowRight01Icon as m, Copy01Icon as h, Tick02Icon as g } from "@hugeicons/core-free-icons";
9
+ //#region src/components/code-block/json-view.tsx
10
+ var _ = { surface: {
11
+ well: { classes: "rounded-well bg-fill-1 p-16" },
12
+ plain: { classes: "" }
13
+ } }, v = { surface: "well" }, y = /* @__PURE__ */ i({
14
+ active: "",
15
+ setActive: () => void 0,
16
+ announce: () => void 0
17
+ });
18
+ function b({ text: e, query: t }) {
19
+ if (!t) return /* @__PURE__ */ f(d, { children: e });
20
+ let n = e.toLowerCase().indexOf(t.toLowerCase());
21
+ return n < 0 ? /* @__PURE__ */ f(d, { children: e }) : /* @__PURE__ */ p(d, { children: [
22
+ e.slice(0, n),
23
+ /* @__PURE__ */ f("mark", {
24
+ className: "rounded-cell bg-warning-tint text-inherit ring-mark",
25
+ children: e.slice(n, n + t.length)
26
+ }),
27
+ e.slice(n + t.length)
28
+ ] });
29
+ }
30
+ function x({ v: e, query: t }) {
31
+ return e === null ? /* @__PURE__ */ f("span", {
32
+ className: "font-semibold text-fg",
33
+ children: "null"
34
+ }) : typeof e == "boolean" ? /* @__PURE__ */ f("span", {
35
+ className: "font-semibold text-fg",
36
+ children: String(e)
37
+ }) : typeof e == "number" ? /* @__PURE__ */ f("span", {
38
+ className: "text-warning-text tabular",
39
+ children: e
40
+ }) : /* @__PURE__ */ p("span", {
41
+ className: "text-info-text wrap-anywhere",
42
+ children: [
43
+ "\"",
44
+ /* @__PURE__ */ f(b, {
45
+ text: String(e),
46
+ query: t
47
+ }),
48
+ "\""
49
+ ]
50
+ });
51
+ }
52
+ function S(e) {
53
+ let { copied: n, copy: i } = r(), { announce: a } = o(y), s = t();
54
+ return {
55
+ copied: n,
56
+ copyPath: () => {
57
+ i(e).then((e) => e && a(s("jsonView.pathCopied", "Path copied")));
58
+ }
59
+ };
60
+ }
61
+ function C({ path: r, copied: i, onCopy: a }) {
62
+ let o = t();
63
+ return /* @__PURE__ */ f("button", {
64
+ type: "button",
65
+ tabIndex: -1,
66
+ "aria-hidden": !0,
67
+ title: i ? o("jsonView.pathCopied", "Path copied") : o("jsonView.copyPath", "Copy path {path}", { path: r }),
68
+ onClick: (e) => {
69
+ e.stopPropagation(), a();
70
+ },
71
+ className: e("relative ml-8 inline-flex size-20 shrink-0 cursor-pointer items-center justify-center rounded-pill text-fg-tertiary tap-target transition-control hover:bg-fill-2 hover:text-fg group-hover/row:opacity-100 group-focus-within/row:opacity-100", i ? "text-fg opacity-100" : "opacity-0"),
72
+ children: /* @__PURE__ */ f(n, {
73
+ icon: i ? g : h,
74
+ size: "xs"
75
+ })
76
+ });
77
+ }
78
+ var w = (e, t) => e !== t && (t === "" || e.startsWith(`${t}.`) || e.startsWith(`${t}[`));
79
+ function T(e, t) {
80
+ let n = e.closest("[role=tree]");
81
+ if (!n) return !1;
82
+ let r = [...n.querySelectorAll("[role=treeitem]")], i = r.indexOf(e), a = t === "ArrowDown" ? r[i + 1] : t === "ArrowUp" ? r[i - 1] : t === "Home" ? r[0] : t === "End" ? r[r.length - 1] : void 0;
83
+ return a ? (a.focus(), !0) : t === "ArrowDown" || t === "ArrowUp" || t === "Home" || t === "End";
84
+ }
85
+ function E({ name: r, value: i, path: a, depth: s, open: c, query: l, last: h }) {
86
+ let [g, _] = u(s < c), v = t(), D = o(y), { copied: O, copyPath: k } = S(a), A = typeof i == "object" && !!i, j = A ? Array.isArray(i) ? i.map((e, t) => [t, e]) : Object.entries(i) : [], M = r === void 0 ? null : typeof r == "number" ? /* @__PURE__ */ p("span", {
87
+ className: "text-fg-tertiary tabular",
88
+ children: [r, ": "]
89
+ }) : /* @__PURE__ */ p("span", {
90
+ className: "text-fg",
91
+ children: [
92
+ "\"",
93
+ /* @__PURE__ */ f(b, {
94
+ text: r,
95
+ query: l
96
+ }),
97
+ "\"",
98
+ /* @__PURE__ */ f("span", {
99
+ className: "text-fg-tertiary",
100
+ children: ": "
101
+ })
102
+ ]
103
+ }), N = h ? "" : ",", P = (e) => {
104
+ _(e), !e && w(D.active, a) && D.setActive(a);
105
+ }, F = {
106
+ role: "treeitem",
107
+ "aria-level": s + 1,
108
+ tabIndex: D.active === a ? 0 : -1,
109
+ onKeyDown: (e) => {
110
+ e.target === e.currentTarget && ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "c" && a ? (e.preventDefault(), k()) : A && (e.key === "Enter" || e.key === " ") ? (e.preventDefault(), P(!g)) : A && e.key === "ArrowRight" ? (e.preventDefault(), g ? j.length && T(e.currentTarget, "ArrowDown") : _(!0)) : e.key === "ArrowLeft" ? (e.preventDefault(), A && g ? P(!1) : e.currentTarget.parentElement?.parentElement?.closest("[data-json-node]")?.querySelector("[role=treeitem]")?.focus()) : T(e.currentTarget, e.key) && e.preventDefault());
111
+ },
112
+ onFocus: (e) => {
113
+ e.target === e.currentTarget && D.setActive(a);
114
+ }
115
+ };
116
+ if (!A) return /* @__PURE__ */ f("div", {
117
+ "data-json-node": "",
118
+ children: /* @__PURE__ */ p("div", {
119
+ ...F,
120
+ className: "group/row flex min-h-20 items-start rounded-cell focus-ring-inset",
121
+ style: { paddingLeft: s * 16 + 20 },
122
+ children: [/* @__PURE__ */ p("span", {
123
+ className: "min-w-0",
124
+ children: [
125
+ M,
126
+ /* @__PURE__ */ f(x, {
127
+ v: i,
128
+ query: l
129
+ }),
130
+ /* @__PURE__ */ f("span", {
131
+ className: "text-fg-tertiary",
132
+ children: N
133
+ })
134
+ ]
135
+ }), a && /* @__PURE__ */ f(C, {
136
+ path: a,
137
+ copied: O,
138
+ onCopy: k
139
+ })]
140
+ })
141
+ });
142
+ let [I, L] = Array.isArray(i) ? ["[", "]"] : ["{", "}"];
143
+ return /* @__PURE__ */ p("div", {
144
+ "data-json-node": "",
145
+ children: [/* @__PURE__ */ p("div", {
146
+ ...F,
147
+ "aria-expanded": g,
148
+ className: "group/row flex min-h-24 items-center rounded-cell focus-ring-inset",
149
+ style: { paddingLeft: s * 16 },
150
+ children: [
151
+ /* @__PURE__ */ f("button", {
152
+ type: "button",
153
+ tabIndex: -1,
154
+ "aria-hidden": !0,
155
+ onClick: () => P(!g),
156
+ className: "relative -ml-4 inline-flex size-24 shrink-0 cursor-pointer items-center justify-center rounded-pill text-fg-tertiary tap-target hover:bg-fill-2 hover:text-fg",
157
+ children: /* @__PURE__ */ f(n, {
158
+ icon: m,
159
+ size: "xs",
160
+ className: e("transition-transform duration-180", g && "rotate-90")
161
+ })
162
+ }),
163
+ /* @__PURE__ */ p("span", {
164
+ className: "min-w-0",
165
+ children: [
166
+ M,
167
+ /* @__PURE__ */ f("span", {
168
+ className: "text-fg-tertiary",
169
+ children: I
170
+ }),
171
+ !g && /* @__PURE__ */ f("button", {
172
+ type: "button",
173
+ tabIndex: -1,
174
+ onClick: () => _(!0),
175
+ className: "relative mx-4 cursor-pointer rounded-code px-4 text-fg-tertiary tap-target hover:bg-fill-2 hover:text-fg",
176
+ children: Array.isArray(i) ? v("jsonView.items", "{count, plural, one {{n} item} other {{n} items}}", {
177
+ count: j.length,
178
+ n: String(j.length)
179
+ }) : v("jsonView.keys", "{count, plural, one {{n} key} other {{n} keys}}", {
180
+ count: j.length,
181
+ n: String(j.length)
182
+ })
183
+ }),
184
+ !g && /* @__PURE__ */ p("span", {
185
+ className: "text-fg-tertiary",
186
+ children: [L, N]
187
+ })
188
+ ]
189
+ }),
190
+ a && /* @__PURE__ */ f(C, {
191
+ path: a,
192
+ copied: O,
193
+ onCopy: k
194
+ })
195
+ ]
196
+ }), g && /* @__PURE__ */ p(d, { children: [j.map(([e, t], n) => /* @__PURE__ */ f(E, {
197
+ name: e,
198
+ value: t,
199
+ path: typeof e == "number" ? `${a}[${e}]` : a ? `${a}.${e}` : String(e),
200
+ depth: s + 1,
201
+ open: c,
202
+ query: l,
203
+ last: n === j.length - 1
204
+ }, e)), /* @__PURE__ */ p("div", {
205
+ "aria-hidden": !0,
206
+ className: "min-h-20 text-fg-tertiary",
207
+ style: { paddingLeft: s * 16 + 20 },
208
+ children: [L, N]
209
+ })] })]
210
+ });
211
+ }
212
+ var D = /* @__PURE__ */ a(function({ value: n, defaultDepth: r = 2, query: i, surface: a = "well", className: o }, d) {
213
+ let m = t(), [h, g] = u(""), [v, b] = u(""), x = l(void 0), S = l(null);
214
+ s(() => {
215
+ S.current?.querySelector("[role=treeitem][tabindex=\"0\"]") || g("");
216
+ }, [n]);
217
+ let C = c(() => ({
218
+ active: h,
219
+ setActive: g,
220
+ announce: (e) => {
221
+ b(""), clearTimeout(x.current), x.current = setTimeout(() => b(e), 50);
222
+ }
223
+ }), [h]);
224
+ return /* @__PURE__ */ p("div", {
225
+ ref: d,
226
+ className: e("mono overflow-x-auto text-small leading-code text-fg scrollbar-quiet", _.surface[a].classes, o),
227
+ children: [/* @__PURE__ */ f(y.Provider, {
228
+ value: C,
229
+ children: /* @__PURE__ */ f("div", {
230
+ ref: S,
231
+ role: "tree",
232
+ "aria-label": m("jsonView.label", "JSON"),
233
+ children: /* @__PURE__ */ f(E, {
234
+ value: n,
235
+ path: "",
236
+ depth: 0,
237
+ open: r,
238
+ query: i,
239
+ last: !0
240
+ })
241
+ })
242
+ }), /* @__PURE__ */ f("div", {
243
+ role: "status",
244
+ className: "sr-only",
245
+ children: v
246
+ })]
247
+ });
248
+ });
249
+ process.env.NODE_ENV !== "production" && (D.displayName = "JsonView");
250
+ //#endregion
251
+ export { v as n, _ as r, D as t };
252
+
253
+ //# sourceMappingURL=json-view-DZ2nL2Ir.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-view-DZ2nL2Ir.js","names":["_Fragment","__icon_Tick02Icon","__icon_Copy01Icon","__icon_ArrowRight01Icon","cn","useUiText","Icon","useCopy","Fragment$1","KAESO_JSON_VIEW_VARIANTS","KAESO_JSON_VIEW_DEFAULT_VARIANTS","TreeContext","Mark","query","text","i","Scalar","v","useCopyPath","useContext","t","path","ok","announce","CopyPath","copied","onCopy","Tick02Icon","Copy01Icon","isInside","branch","moveFocus","tree","from","items","next","key","Node","initialOpen","open","setOpen","useState","depth","isObj","value","entries","keyLabel","name","comma","last","toggle","item","copyPath","o","c","ArrowRight01Icon","k","JsonView","active","setActive","said","setSaid","timer","useRef","root","useMemo","surface","className","defaultDepth"],"sources":["../../src/components/code-block/json-view.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport { createContext, forwardRef, useContext, useLayoutEffect, useMemo, useRef, useState, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Tick02Icon as __icon_Tick02Icon, Copy01Icon as __icon_Copy01Icon, ArrowRight01Icon as __icon_ArrowRight01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon } from \"../icon/icon.js\";\nimport { useCopy } from \"../../hooks/use-copy.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_JSON_VIEW_VARIANTS = {\n surface: {\n well: { classes: \"rounded-well bg-fill-1 p-16\" },\n plain: { classes: \"\" },\n },\n} as const;\nexport const KAESO_JSON_VIEW_DEFAULT_VARIANTS = { surface: \"well\" } as const;\n\ntype Json = string | number | boolean | null | Json[] | { [k: string]: Json };\n\nexport interface JsonViewProps {\n value: unknown;\n defaultDepth?: number | undefined;\n query?: string | undefined;\n surface?: keyof typeof KAESO_JSON_VIEW_VARIANTS.surface | undefined;\n className?: string | undefined;\n}\n\ninterface Tree {\n active: string;\n setActive: (path: string) => void;\n announce: (text: string) => void;\n}\nconst TreeContext = /* @__PURE__ */ createContext<Tree>({ active: \"\", setActive: () => undefined, announce: () => undefined });\n\nfunction Mark({ text, query }: { text: string; query?: string | undefined }) {\n if (!query) return <>{text}</>;\n const i = text.toLowerCase().indexOf(query.toLowerCase());\n if (i < 0) return <>{text}</>;\n return (\n <>\n {text.slice(0, i)}\n <mark className=\"rounded-cell bg-warning-tint text-inherit ring-mark\">{text.slice(i, i + query.length)}</mark>\n {text.slice(i + query.length)}\n </>\n );\n}\n\nfunction Scalar({ v, query }: { v: Json; query?: string | undefined }) {\n if (v === null) return <span className=\"font-semibold text-fg\">null</span>;\n if (typeof v === \"boolean\") return <span className=\"font-semibold text-fg\">{String(v)}</span>;\n if (typeof v === \"number\") return <span className=\"text-warning-text tabular\">{v}</span>;\n return (\n <span className=\"text-info-text wrap-anywhere\">\n \"<Mark text={String(v)} query={query} />\"\n </span>\n );\n}\n\nfunction useCopyPath(path: string) {\n const { copied, copy } = useCopy();\n const { announce } = useContext(TreeContext);\n const t = useUiText();\n return {\n copied,\n copyPath: () => {\n void copy(path).then((ok) => ok && announce(t(\"jsonView.pathCopied\", \"Path copied\")));\n },\n };\n}\n\nfunction CopyPath({ path, copied, onCopy }: { path: string; copied: boolean; onCopy: () => void }) {\n const t = useUiText();\n return (\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden\n title={copied ? t(\"jsonView.pathCopied\", \"Path copied\") : t(\"jsonView.copyPath\", \"Copy path {path}\", { path })}\n onClick={(e) => {\n e.stopPropagation();\n onCopy();\n }}\n className={cn(\n \"relative ml-8 inline-flex size-20 shrink-0 cursor-pointer items-center justify-center rounded-pill text-fg-tertiary tap-target transition-control hover:bg-fill-2 hover:text-fg group-hover/row:opacity-100 group-focus-within/row:opacity-100\",\n copied ? \"text-fg opacity-100\" : \"opacity-0\",\n )}\n >\n <Icon icon={copied ? __icon_Tick02Icon : __icon_Copy01Icon} size=\"xs\" />\n </button>\n );\n}\n\nconst isInside = (path: string, branch: string) => path !== branch && (branch === \"\" || path.startsWith(`${branch}.`) || path.startsWith(`${branch}[`));\n\nfunction moveFocus(from: HTMLElement, key: string): boolean {\n const tree = from.closest(\"[role=tree]\");\n if (!tree) return false;\n const items = [...tree.querySelectorAll<HTMLElement>(\"[role=treeitem]\")];\n const i = items.indexOf(from);\n const next =\n key === \"ArrowDown\" ? items[i + 1] : key === \"ArrowUp\" ? items[i - 1] : key === \"Home\" ? items[0] : key === \"End\" ? items[items.length - 1] : undefined;\n if (!next) return key === \"ArrowDown\" || key === \"ArrowUp\" || key === \"Home\" || key === \"End\";\n next.focus();\n return true;\n}\n\nfunction Node({\n name,\n value,\n path,\n depth,\n open: initialOpen,\n query,\n last,\n}: {\n name?: string | number | undefined;\n value: Json;\n path: string;\n depth: number;\n open: number;\n query?: string | undefined;\n last: boolean;\n}) {\n const [open, setOpen] = useState(depth < initialOpen);\n const t = useUiText();\n const tree = useContext(TreeContext);\n const { copied, copyPath } = useCopyPath(path);\n const isObj = value !== null && typeof value === \"object\";\n const entries: [string | number, Json][] = isObj ? (Array.isArray(value) ? value.map((v, i) => [i, v]) : Object.entries(value)) : [];\n const keyLabel: ReactNode =\n name === undefined ? null : typeof name === \"number\" ? (\n <span className=\"text-fg-tertiary tabular\">{name}: </span>\n ) : (\n <span className=\"text-fg\">\n \"<Mark text={name} query={query} />\"<span className=\"text-fg-tertiary\">: </span>\n </span>\n );\n const comma = last ? \"\" : \",\";\n const toggle = (next: boolean) => {\n setOpen(next);\n if (!next && isInside(tree.active, path)) tree.setActive(path);\n };\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.target !== e.currentTarget) return;\n if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === \"c\" && path) {\n e.preventDefault();\n copyPath();\n return;\n }\n if (isObj && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault();\n toggle(!open);\n return;\n }\n if (isObj && e.key === \"ArrowRight\") {\n e.preventDefault();\n if (!open) setOpen(true);\n else if (entries.length) moveFocus(e.currentTarget, \"ArrowDown\");\n return;\n }\n if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n if (isObj && open) toggle(false);\n else e.currentTarget.parentElement?.parentElement?.closest<HTMLElement>(\"[data-json-node]\")?.querySelector<HTMLElement>(\"[role=treeitem]\")?.focus();\n return;\n }\n if (moveFocus(e.currentTarget, e.key)) e.preventDefault();\n };\n const item = {\n role: \"treeitem\",\n \"aria-level\": depth + 1,\n tabIndex: tree.active === path ? 0 : -1,\n onKeyDown,\n onFocus: (e: React.FocusEvent<HTMLDivElement>) => {\n if (e.target === e.currentTarget) tree.setActive(path);\n },\n } as const;\n if (!isObj) {\n return (\n <div data-json-node=\"\">\n <div {...item} className=\"group/row flex min-h-20 items-start rounded-cell focus-ring-inset\" style={{ paddingLeft: depth * 16 + 20 }}>\n <span className=\"min-w-0\">\n {keyLabel}\n <Scalar v={value} query={query} />\n <span className=\"text-fg-tertiary\">{comma}</span>\n </span>\n {path && <CopyPath path={path} copied={copied} onCopy={copyPath} />}\n </div>\n </div>\n );\n }\n const [o, c] = Array.isArray(value) ? [\"[\", \"]\"] : [\"{\", \"}\"];\n return (\n <div data-json-node=\"\">\n <div {...item} aria-expanded={open} className=\"group/row flex min-h-24 items-center rounded-cell focus-ring-inset\" style={{ paddingLeft: depth * 16 }}>\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden\n onClick={() => toggle(!open)}\n className=\"relative -ml-4 inline-flex size-24 shrink-0 cursor-pointer items-center justify-center rounded-pill text-fg-tertiary tap-target hover:bg-fill-2 hover:text-fg\"\n >\n <Icon icon={__icon_ArrowRight01Icon} size=\"xs\" className={cn(\"transition-transform duration-180\", open && \"rotate-90\")} />\n </button>\n <span className=\"min-w-0\">\n {keyLabel}\n <span className=\"text-fg-tertiary\">{o}</span>\n {!open && (\n <button\n type=\"button\"\n tabIndex={-1}\n onClick={() => setOpen(true)}\n className=\"relative mx-4 cursor-pointer rounded-code px-4 text-fg-tertiary tap-target hover:bg-fill-2 hover:text-fg\"\n >\n {Array.isArray(value)\n ? t(\"jsonView.items\", \"{count, plural, one {{n} item} other {{n} items}}\", { count: entries.length, n: String(entries.length) })\n : t(\"jsonView.keys\", \"{count, plural, one {{n} key} other {{n} keys}}\", { count: entries.length, n: String(entries.length) })}\n </button>\n )}\n {!open && (\n <span className=\"text-fg-tertiary\">\n {c}\n {comma}\n </span>\n )}\n </span>\n {path && <CopyPath path={path} copied={copied} onCopy={copyPath} />}\n </div>\n {open && (\n <>\n {entries.map(([k, v], i) => (\n <Node\n key={k}\n name={k}\n value={v}\n path={typeof k === \"number\" ? `${path}[${k}]` : path ? `${path}.${k}` : String(k)}\n depth={depth + 1}\n open={initialOpen}\n query={query}\n last={i === entries.length - 1}\n />\n ))}\n <div aria-hidden className=\"min-h-20 text-fg-tertiary\" style={{ paddingLeft: depth * 16 + 20 }}>\n {c}\n {comma}\n </div>\n </>\n )}\n </div>\n );\n}\n\nexport const JsonView = /* @__PURE__ */ forwardRef<HTMLDivElement, JsonViewProps>(function JsonView({ value, defaultDepth = 2, query, surface = \"well\", className }, ref) {\n const t = useUiText();\n const [active, setActive] = useState(\"\");\n const [said, setSaid] = useState(\"\");\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const root = useRef<HTMLDivElement>(null);\n useLayoutEffect(() => {\n if (!root.current?.querySelector('[role=treeitem][tabindex=\"0\"]')) setActive(\"\");\n }, [value]);\n const tree = useMemo<Tree>(\n () => ({\n active,\n setActive,\n announce: (text) => {\n setSaid(\"\");\n clearTimeout(timer.current);\n timer.current = setTimeout(() => setSaid(text), 50);\n },\n }),\n [active],\n );\n return (\n <div\n ref={ref}\n className={cn(\"mono overflow-x-auto text-small leading-code text-fg scrollbar-quiet\", KAESO_JSON_VIEW_VARIANTS.surface[surface].classes, className)}\n >\n <TreeContext.Provider value={tree}>\n <div ref={root} role=\"tree\" aria-label={t(\"jsonView.label\", \"JSON\")}>\n <Node value={value as Json} path=\"\" depth={0} open={defaultDepth} query={query} last />\n </div>\n </TreeContext.Provider>\n <div role=\"status\" className=\"sr-only\">\n {said}\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") JsonView.displayName = \"JsonView\";\n"],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  "use client";
2
- import { t as e } from "./cn-Dj6sRgkF.js";
2
+ import { t as e } from "./cn-BjnOAUrA.js";
3
3
  import { i as t, n } from "./context-BELWW79w.js";
4
4
  import { Fragment as r, forwardRef as i, useSyncExternalStore as a } from "react";
5
- import { jsx as o, jsxs as s } from "react/jsx-runtime";
5
+ import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
6
6
  //#region src/components/kbd/kbd.tsx
7
- var c = { tone: {
7
+ var l = { tone: {
8
8
  default: { classes: "bg-fill-1 text-fg-secondary shadow-ring" },
9
9
  onInk: { classes: "bg-on-ink/15 text-on-ink/80 shadow-none" }
10
- } }, l = { tone: "default" }, u = () => typeof navigator < "u" && /Mac|iPhone|iPad/.test(navigator.platform || navigator.userAgent), d = () => () => void 0, f = () => a(d, u, () => !1);
11
- function p(e) {
10
+ } }, u = { tone: "default" }, d = () => typeof navigator < "u" && /Mac|iPhone|iPad/.test(navigator.platform || navigator.userAgent), f = () => () => void 0, p = () => a(f, d, () => !1);
11
+ function m(e) {
12
12
  let t = e("kbd.ctrl", "Ctrl"), n = e("kbd.optionName", "Option");
13
13
  return {
14
14
  mod: [
@@ -83,8 +83,8 @@ function p(e) {
83
83
  ]
84
84
  };
85
85
  }
86
- function m(e, t = n, r = u()) {
87
- let i = p(t)[e.toLowerCase()];
86
+ function h(e, t = n, r = d()) {
87
+ let i = m(t)[e.toLowerCase()];
88
88
  return i ? {
89
89
  visual: r ? i[0] : i[1],
90
90
  spoken: i[2]
@@ -93,40 +93,42 @@ function m(e, t = n, r = u()) {
93
93
  spoken: e
94
94
  };
95
95
  }
96
- var h = /* @__PURE__ */ i(function({ children: n, tone: r = "default", className: i, ...a }, s) {
97
- let l = t(), u = f(), d = typeof n == "string" ? m(n, l, u) : null;
98
- return /* @__PURE__ */ o("kbd", {
99
- ref: s,
100
- className: e("inline-flex h-20 min-w-20 shrink-0 items-center justify-center rounded-kbd px-5 font-sans text-micro font-medium tabular", c.tone[r].classes, i),
101
- ...d && d.spoken !== d.visual ? {
102
- "aria-label": d.spoken,
103
- title: d.spoken
104
- } : {},
96
+ var g = /* @__PURE__ */ i(function({ children: n, tone: r = "default", className: i, ...a }, u) {
97
+ let d = t(), f = p(), m = typeof n == "string" ? h(n, d, f) : null, g = m && m.spoken.toLowerCase() !== m.visual.toLowerCase() ? m.spoken : null;
98
+ return /* @__PURE__ */ s("kbd", {
99
+ ref: u,
100
+ className: e("relative inline-flex h-20 min-w-20 shrink-0 items-center justify-center rounded-kbd px-5 font-sans text-caption font-medium tabular", l.tone[r].classes, i),
105
101
  ...a,
106
- children: d ? d.visual : n
102
+ children: g ? /* @__PURE__ */ c(o, { children: [/* @__PURE__ */ s("span", {
103
+ "aria-hidden": "true",
104
+ children: m?.visual
105
+ }), /* @__PURE__ */ s("span", {
106
+ className: "sr-only",
107
+ children: g
108
+ })] }) : m ? m.visual : n
107
109
  });
108
110
  });
109
- process.env.NODE_ENV !== "production" && (h.displayName = "Kbd");
110
- var g = /* @__PURE__ */ i(function({ keys: n, tone: i = "default", className: a, ...c }, l) {
111
+ process.env.NODE_ENV !== "production" && (g.displayName = "Kbd");
112
+ var _ = /* @__PURE__ */ i(function({ keys: n, tone: i = "default", className: a, ...o }, l) {
111
113
  let u = t(), d = n.length > 0 && Array.isArray(n[0]) ? n : [n];
112
- return /* @__PURE__ */ o("span", {
114
+ return /* @__PURE__ */ s("span", {
113
115
  ref: l,
114
116
  className: e("inline-flex items-center gap-4 align-middle", a),
115
- ...c,
116
- children: d.map((t, n) => /* @__PURE__ */ s(r, { children: [n > 0 && /* @__PURE__ */ o("span", {
117
+ ...o,
118
+ children: d.map((t, n) => /* @__PURE__ */ c(r, { children: [n > 0 && /* @__PURE__ */ s("span", {
117
119
  className: e("text-caption font-medium", i === "onInk" ? "text-on-ink/70" : "text-fg-secondary"),
118
120
  children: u("kbd.then", "then")
119
- }), /* @__PURE__ */ o("span", {
121
+ }), /* @__PURE__ */ s("span", {
120
122
  className: "inline-flex items-center gap-2",
121
- children: t.map((e) => /* @__PURE__ */ o(h, {
123
+ children: t.map((e, t) => /* @__PURE__ */ s(g, {
122
124
  tone: i,
123
125
  children: e
124
- }, e))
126
+ }, `${e}-${t}`))
125
127
  })] }, n))
126
128
  });
127
129
  });
128
- process.env.NODE_ENV !== "production" && (g.displayName = "KbdSequence");
130
+ process.env.NODE_ENV !== "production" && (_.displayName = "KbdSequence");
129
131
  //#endregion
130
- export { m as a, g as i, c as n, h as r, l as t };
132
+ export { h as a, _ as i, l as n, g as r, u as t };
131
133
 
132
- //# sourceMappingURL=kbd-BF1vKXJf.js.map
134
+ //# sourceMappingURL=kbd-8A0ML_up.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kbd-8A0ML_up.js","names":["_Fragment","cn","useUiText","Fragment$1","KAESO_KBD_VARIANTS","KAESO_KBD_DEFAULT_VARIANTS","isMac","subscribePlatform","useMac","useSyncExternalStore","modifiers","ctrl","t","option","keyLabel","englishText","m","key","mac","Kbd","props","label","children","spoken","tone","className","KbdSequence","steps","keys","Fragment","i","chord","k","j"],"sources":["../../src/components/kbd/kbd.tsx"],"sourcesContent":["import { forwardRef, Fragment, useSyncExternalStore, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { englishText, useUiText, type UiText } from \"../../i18n/context.js\";\n\nexport const KAESO_KBD_VARIANTS = {\n tone: {\n default: { classes: \"bg-fill-1 text-fg-secondary shadow-ring\" },\n onInk: { classes: \"bg-on-ink/15 text-on-ink/80 shadow-none\" },\n },\n} as const;\nexport const KAESO_KBD_DEFAULT_VARIANTS = { tone: \"default\" } as const;\n\nconst isMac = () => typeof navigator !== \"undefined\" && /Mac|iPhone|iPad/.test(navigator.platform || navigator.userAgent);\nconst subscribePlatform = () => () => undefined;\nconst useMac = () => useSyncExternalStore(subscribePlatform, isMac, () => false);\n\nfunction modifiers(t: UiText): Record<string, [mac: string, other: string, name: string]> {\n const ctrl = t(\"kbd.ctrl\", \"Ctrl\");\n const option = t(\"kbd.optionName\", \"Option\");\n return {\n mod: [\"⌘\", ctrl, t(\"kbd.commandName\", \"Command\")],\n cmd: [\"⌘\", ctrl, t(\"kbd.commandName\", \"Command\")],\n ctrl: [\"⌃\", ctrl, t(\"kbd.controlName\", \"Control\")],\n alt: [\"⌥\", \"Alt\", option],\n option: [\"⌥\", \"Alt\", option],\n shift: [\"⇧\", t(\"kbd.shift\", \"Shift\"), t(\"kbd.shiftName\", \"Shift\")],\n enter: [\"↵\", \"Enter\", t(\"kbd.enterName\", \"Enter\")],\n esc: [\"esc\", \"Esc\", t(\"kbd.escapeName\", \"Escape\")],\n backspace: [\"⌫\", t(\"kbd.backspace\", \"Backspace\"), t(\"kbd.backspaceName\", \"Backspace\")],\n up: [\"↑\", \"↑\", t(\"kbd.upName\", \"Up\")],\n down: [\"↓\", \"↓\", t(\"kbd.downName\", \"Down\")],\n left: [\"←\", \"←\", t(\"kbd.leftName\", \"Left\")],\n right: [\"→\", \"→\", t(\"kbd.rightName\", \"Right\")],\n tab: [\"⇥\", \"Tab\", t(\"kbd.tabName\", \"Tab\")],\n };\n}\n\nexport function keyLabel(key: string, t: UiText = englishText, mac: boolean = isMac()): { visual: string; spoken: string } {\n const m = modifiers(t)[key.toLowerCase()];\n if (!m) return { visual: key.length === 1 ? key.toUpperCase() : key, spoken: key };\n return { visual: mac ? m[0] : m[1], spoken: m[2] };\n}\n\nexport interface KbdProps extends HTMLAttributes<HTMLElement> {\n children: ReactNode;\n tone?: keyof typeof KAESO_KBD_VARIANTS.tone | undefined;\n}\n\nexport const Kbd = /* @__PURE__ */ forwardRef<HTMLElement, KbdProps>(function Kbd({ children, tone = \"default\", className, ...props }, ref) {\n const t = useUiText();\n const mac = useMac();\n const label = typeof children === \"string\" ? keyLabel(children, t, mac) : null;\n const spoken = label && label.spoken.toLowerCase() !== label.visual.toLowerCase() ? label.spoken : null;\n return (\n <kbd\n ref={ref}\n className={cn(\n \"relative inline-flex h-20 min-w-20 shrink-0 items-center justify-center rounded-kbd px-5 font-sans text-caption font-medium tabular\",\n KAESO_KBD_VARIANTS.tone[tone].classes,\n className,\n )}\n {...props}\n >\n {spoken ? (\n <>\n <span aria-hidden=\"true\">{label?.visual}</span>\n <span className=\"sr-only\">{spoken}</span>\n </>\n ) : label ? (\n label.visual\n ) : (\n children\n )}\n </kbd>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Kbd.displayName = \"Kbd\";\n\nexport interface KbdSequenceProps extends HTMLAttributes<HTMLSpanElement> {\n keys: string[][] | string[];\n tone?: keyof typeof KAESO_KBD_VARIANTS.tone | undefined;\n}\n\nexport const KbdSequence = /* @__PURE__ */ forwardRef<HTMLSpanElement, KbdSequenceProps>(function KbdSequence({ keys, tone = \"default\", className, ...props }, ref) {\n const t = useUiText();\n const steps: string[][] = keys.length > 0 && Array.isArray(keys[0]) ? (keys as string[][]) : [keys as string[]];\n return (\n <span ref={ref} className={cn(\"inline-flex items-center gap-4 align-middle\", className)} {...props}>\n {steps.map((chord, i) => (\n <Fragment key={i}>\n {i > 0 && <span className={cn(\"text-caption font-medium\", tone === \"onInk\" ? \"text-on-ink/70\" : \"text-fg-secondary\")}>{t(\"kbd.then\", \"then\")}</span>}\n <span className=\"inline-flex items-center gap-2\">\n {chord.map((k, j) => (\n <Kbd key={`${k}-${j}`} tone={tone}>\n {k}\n </Kbd>\n ))}\n </span>\n </Fragment>\n ))}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") KbdSequence.displayName = \"KbdSequence\";\n"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ "use client";
2
+ import { t as e } from "./cn-BjnOAUrA.js";
3
+ import { i as t } from "./context-BELWW79w.js";
4
+ import { forwardRef as n } from "react";
5
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
6
+ //#region src/components/label/label.tsx
7
+ var a = { size: {
8
+ md: { classes: "text-body font-medium" },
9
+ sm: { classes: "text-small font-medium" }
10
+ } }, o = { size: "md" }, s = /* @__PURE__ */ n(function({ size: n = "md", optional: o, className: s, children: c, ...l }, u) {
11
+ let d = t();
12
+ return /* @__PURE__ */ i("label", {
13
+ ref: u,
14
+ className: e("inline-flex items-baseline gap-6 text-fg disabled:text-fg-disabled", a.size[n].classes, s),
15
+ ...l,
16
+ children: [c, o && /* @__PURE__ */ r("span", {
17
+ className: e("font-regular text-fg-tertiary", n === "sm" ? "text-caption" : "text-small"),
18
+ children: d("label.optional", "Optional")
19
+ })]
20
+ });
21
+ });
22
+ process.env.NODE_ENV !== "production" && (s.displayName = "Label");
23
+ //#endregion
24
+ export { a as n, s as r, o as t };
25
+
26
+ //# sourceMappingURL=label-DW24Aj0Z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label-DW24Aj0Z.js","names":["cn","useUiText","KAESO_LABEL_VARIANTS","KAESO_LABEL_DEFAULT_VARIANTS","Label","props","t","size","className","children","optional"],"sources":["../../src/components/label/label.tsx"],"sourcesContent":["import { forwardRef, type LabelHTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_LABEL_VARIANTS = {\n size: {\n md: { classes: \"text-body font-medium\" },\n sm: { classes: \"text-small font-medium\" },\n },\n} as const;\nexport const KAESO_LABEL_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface LabelProps extends LabelHTMLAttributes<HTMLLabelElement> {\n size?: keyof typeof KAESO_LABEL_VARIANTS.size | undefined;\n optional?: boolean | undefined;\n children: ReactNode;\n}\n\nexport const Label = /* @__PURE__ */ forwardRef<HTMLLabelElement, LabelProps>(function Label({ size = \"md\", optional, className, children, ...props }, ref) {\n const t = useUiText();\n return (\n <label\n ref={ref}\n className={cn(\"inline-flex items-baseline gap-6 text-fg disabled:text-fg-disabled\", KAESO_LABEL_VARIANTS.size[size].classes, className)}\n {...props}\n >\n {children}\n {optional && (\n <span className={cn(\"font-regular text-fg-tertiary\", size === \"sm\" ? \"text-caption\" : \"text-small\")}>{t(\"label.optional\", \"Optional\")}</span>\n )}\n </label>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Label.displayName = \"Label\";\n"],"mappings":";;;;;;AAIA,IAAaE,IAAuB,EAClC,MAAM;CACJ,IAAI,EAAE,SAAS,wBAAwB;CACvC,IAAI,EAAE,SAAS,yBAAyB;AAC1C,EACF,GACaC,IAA+B,EAAE,MAAM,KAAK,GAQ5CC,IAAwB,kBAAyC,SAAe,EAAE,UAAO,MAAM,aAAU,cAAW,aAAU,GAAGC,KAAS,GAAK;CAC1J,IAAMC,IAAIL,EAAU;CACpB,OACE,kBAAC,SAAD;EACO;EACL,WAAWD,EAAG,sEAAsEE,EAAqB,KAAKK,EAAK,CAAC,SAASC,CAAS;EACtI,GAAIH;EAHN,UAAA,CAKGI,GACAC,KACC,kBAAC,QAAD;GAAM,WAAWV,EAAG,iCAAiCO,MAAS,OAAO,iBAAiB,YAAY;GAAI,UAAAD,EAAE,kBAAkB,UAAU;EAAQ,CAAA,CAEzI;;AAEX,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAM,cAAc"}
@@ -1,24 +1,24 @@
1
1
  "use client";
2
- import { t as e } from "./cn-Dj6sRgkF.js";
2
+ import { t as e } from "./cn-BjnOAUrA.js";
3
3
  import { n as t, r as n } from "./link-provider-cvl8lSTT.js";
4
4
  import { i as r } from "./context-BELWW79w.js";
5
- import { t as i } from "./icon-D7ja-_Yk.js";
5
+ import { t as i } from "./icon-CBzOwqrX.js";
6
6
  import { forwardRef as a } from "react";
7
7
  import { jsx as o, jsxs as s } from "react/jsx-runtime";
8
8
  import { ArrowUpRight01Icon as c } from "@hugeicons/core-free-icons";
9
9
  //#region src/components/link/link.tsx
10
10
  var l = { variant: {
11
- inline: { classes: "text-inherit underline decoration-line-strong decoration-1 underline-offset-3 hover:decoration-current" },
11
+ inline: { classes: "text-inherit underline decoration-fg-tertiary decoration-1 underline-offset-3 hover:decoration-current" },
12
12
  quiet: { classes: "text-fg-secondary no-underline hover:text-fg" },
13
- standalone: { classes: "font-medium text-fg no-underline hover:underline hover:decoration-line-strong hover:underline-offset-3" },
13
+ standalone: { classes: "font-medium text-fg no-underline hover:underline hover:decoration-fg-tertiary hover:underline-offset-3" },
14
14
  heading: { classes: "group/heading text-inherit no-underline" },
15
- card: { classes: "mx-0 flex flex-col gap-4 rounded-well bg-fill-1 px-16 py-12 text-fg no-underline hover:bg-fill-2" }
15
+ card: { classes: "mx-0 flex flex-col gap-4 rounded-well bg-fill-1 px-16 py-12 text-fg no-underline outline-offset-2 hover:bg-fill-2" }
16
16
  } }, u = { variant: "inline" }, d = /* @__PURE__ */ a(function({ href: a, variant: u = "inline", external: d, className: f, children: p, ...m }, h) {
17
17
  let g = n(), _ = r(), v = d ?? t(a);
18
18
  return /* @__PURE__ */ s(g, {
19
19
  ref: h,
20
20
  href: a,
21
- className: e("relative -mx-2 box-decoration-clone rounded-code px-2 transition-control focus-ring tap-target", l.variant[u].classes, f),
21
+ className: e("relative -mx-2 box-decoration-clone rounded-code px-2 outline-offset-0 transition-control focus-ring tap-target", l.variant[u].classes, u === "card" && v && "pe-36", f),
22
22
  ...v ? {
23
23
  target: "_blank",
24
24
  rel: "noopener noreferrer"
@@ -26,20 +26,20 @@ var l = { variant: {
26
26
  ...m,
27
27
  children: [
28
28
  p,
29
- u === "heading" && /* @__PURE__ */ o("span", {
30
- "aria-hidden": "true",
31
- className: "ml-8 inline-block text-fg-tertiary opacity-0 transition-control group-hover/heading:opacity-100 group-focus-visible/heading:opacity-100",
32
- children: "#"
33
- }),
34
29
  v && /* @__PURE__ */ s("span", {
35
30
  "aria-hidden": "true",
36
- className: "whitespace-nowrap",
31
+ className: e("whitespace-nowrap", u === "card" && "absolute end-16 top-12"),
37
32
  children: ["⁠", /* @__PURE__ */ o(i, {
38
33
  icon: c,
39
34
  size: "xs",
40
- className: "ml-2 inline-block align-middle"
35
+ className: "ms-2 inline-block align-middle"
41
36
  })]
42
37
  }),
38
+ u === "heading" && /* @__PURE__ */ o("span", {
39
+ "aria-hidden": "true",
40
+ className: "ms-8 inline-block text-fg-tertiary opacity-0 transition-control group-hover/heading:opacity-100 group-focus-visible/heading:opacity-100",
41
+ children: "#"
42
+ }),
43
43
  v && /* @__PURE__ */ o("span", {
44
44
  className: "sr-only",
45
45
  children: _("link.opensInNewTab", " (opens in a new tab)")
@@ -51,4 +51,4 @@ process.env.NODE_ENV !== "production" && (d.displayName = "Link");
51
51
  //#endregion
52
52
  export { l as n, d as r, u as t };
53
53
 
54
- //# sourceMappingURL=link-KWI7PevW.js.map
54
+ //# sourceMappingURL=link-CMjkcLQK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-CMjkcLQK.js","names":["__icon_ArrowUpRight01Icon","cn","isExternalHref","useLinkComponent","useUiText","Icon","KAESO_LINK_VARIANTS","KAESO_LINK_DEFAULT_VARIANTS","Link","props","LinkComp","t","isExternal","external","href","variant","className","children","ArrowUpRight01Icon"],"sources":["../../src/components/link/link.tsx"],"sourcesContent":["import { forwardRef, type AnchorHTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { isExternalHref, useLinkComponent } from \"../../utils/link-provider.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { ArrowUpRight01Icon as __icon_ArrowUpRight01Icon } from \"@hugeicons/core-free-icons\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_LINK_VARIANTS = {\n variant: {\n inline: {\n classes: \"text-inherit underline decoration-fg-tertiary decoration-1 underline-offset-3 hover:decoration-current\",\n },\n quiet: {\n classes: \"text-fg-secondary no-underline hover:text-fg\",\n },\n standalone: {\n classes: \"font-medium text-fg no-underline hover:underline hover:decoration-fg-tertiary hover:underline-offset-3\",\n },\n heading: {\n classes: \"group/heading text-inherit no-underline\",\n },\n card: {\n classes: \"mx-0 flex flex-col gap-4 rounded-well bg-fill-1 px-16 py-12 text-fg no-underline outline-offset-2 hover:bg-fill-2\",\n },\n },\n} as const;\nexport const KAESO_LINK_DEFAULT_VARIANTS = { variant: \"inline\" } as const;\n\nexport interface LinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n href: string;\n variant?: keyof typeof KAESO_LINK_VARIANTS.variant | undefined;\n external?: boolean | undefined;\n children: ReactNode;\n}\n\nexport const Link = /* @__PURE__ */ forwardRef<HTMLAnchorElement, LinkProps>(function Link({ href, variant = \"inline\", external, className, children, ...props }, ref) {\n const LinkComp = useLinkComponent();\n const t = useUiText();\n const isExternal = external ?? isExternalHref(href);\n return (\n <LinkComp\n ref={ref}\n href={href}\n className={cn(\n \"relative -mx-2 box-decoration-clone rounded-code px-2 outline-offset-0 transition-control focus-ring tap-target\",\n KAESO_LINK_VARIANTS.variant[variant].classes,\n variant === \"card\" && isExternal && \"pe-36\",\n className,\n )}\n {...(isExternal ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {})}\n {...props}\n >\n {children}\n {isExternal && (\n <span aria-hidden=\"true\" className={cn(\"whitespace-nowrap\", variant === \"card\" && \"absolute end-16 top-12\")}>\n {\"\\u2060\"}\n <Icon icon={__icon_ArrowUpRight01Icon} size=\"xs\" className=\"ms-2 inline-block align-middle\" />\n </span>\n )}\n {variant === \"heading\" && (\n <span\n aria-hidden=\"true\"\n className=\"ms-8 inline-block text-fg-tertiary opacity-0 transition-control group-hover/heading:opacity-100 group-focus-visible/heading:opacity-100\"\n >\n #\n </span>\n )}\n {isExternal && <span className=\"sr-only\">{t(\"link.opensInNewTab\", \" (opens in a new tab)\")}</span>}\n </LinkComp>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Link.displayName = \"Link\";\n"],"mappings":";;;;;;;;;AAOA,IAAaM,IAAsB,EACjC,SAAS;CACP,QAAQ,EACN,SAAS,yGACX;CACA,OAAO,EACL,SAAS,+CACX;CACA,YAAY,EACV,SAAS,yGACX;CACA,SAAS,EACP,SAAS,0CACX;CACA,MAAM,EACJ,SAAS,oHACX;AACF,EACF,GACaC,IAA8B,EAAE,SAAS,SAAS,GASlDC,IAAuB,kBAAyC,SAAc,EAAE,SAAM,aAAU,UAAU,aAAU,cAAW,aAAU,GAAGC,KAAS,GAAK;CACrK,IAAMC,IAAWP,EAAiB,GAC5BQ,IAAIP,EAAU,GACdQ,IAAaC,KAAYX,EAAeY,CAAI;CAClD,OACE,kBAACJ,GAAD;EACO;EACC;EACN,WAAWT,EACT,mHACAK,EAAoB,QAAQS,EAAQ,CAAC,SACrCA,MAAY,UAAUH,KAAc,SACpCI,CACF;EACA,GAAKJ,IAAa;GAAE,QAAQ;GAAU,KAAK;EAAsB,IAAI,CAAC;EACtE,GAAIH;EAVN,UAAA;GAYGQ;GACAL,KACC,kBAAC,QAAD;IAAM,eAAY;IAAO,WAAWX,EAAG,qBAAqBc,MAAY,UAAU,wBAAwB;IAA1G,UAAA,CACG,KACD,kBAACV,GAAD;KAAM,MAAML;KAA2B,MAAK;KAAK,WAAU;IAAkC,CAAA,CACzF;;GAEPe,MAAY,aACX,kBAAC,QAAD;IACE,eAAY;IACZ,WAAU;IACX,UAAA;GAEK,CAAA;GAEPH,KAAc,kBAAC,QAAD;IAAM,WAAU;IAAW,UAAAD,EAAE,sBAAsB,uBAAuB;GAAQ,CAAA;EACzF;;AAEd,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAK,cAAc"}