@logicplanes/kaeso-ui 0.4.4 → 0.4.5

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
@@ -1,18 +1,18 @@
1
1
  "use client";
2
- import { t as e } from "../../chunks/cn-Dj6sRgkF.js";
2
+ import { t as e } from "../../chunks/cn-BjnOAUrA.js";
3
3
  import { i as t } from "../../chunks/context-BELWW79w.js";
4
- import { t as n } from "../../chunks/icon-D7ja-_Yk.js";
5
- import { r } from "../../chunks/link-KWI7PevW.js";
6
- import { t as i } from "../../chunks/banner-BA2ALw9M.js";
7
- import { t as a } from "../../chunks/json-view-Dqd2TDkc.js";
8
- import { t as o } from "../../chunks/badge-C2KtxCLB.js";
9
- import { n as s } from "../../chunks/collapsible-CKrCX_T9.js";
4
+ import { t as n } from "../../chunks/icon-CBzOwqrX.js";
5
+ import { r } from "../../chunks/link-CMjkcLQK.js";
6
+ import { t as i } from "../../chunks/banner-B3DGLTBu.js";
7
+ import { t as a } from "../../chunks/json-view-DZ2nL2Ir.js";
8
+ import { t as o } from "../../chunks/badge-C0GC3B9X.js";
9
+ import { t as s } from "../../chunks/reasoning-frame-C3HdQRRS.js";
10
10
  import { t as c } from "../../chunks/safe-href-G5DBNVwm.js";
11
11
  import { Suspense as l, forwardRef as u, lazy as d } from "react";
12
12
  import { jsx as f, jsxs as p } from "react/jsx-runtime";
13
13
  import { Image01Icon as m, Pdf01Icon as h, ToolsIcon as g } from "@hugeicons/core-free-icons";
14
14
  //#region src/components/kaeso/conversation.tsx
15
- var _ = /* @__PURE__ */ d(() => import("../../chunks/markdown-BupwFOae.js").then((e) => e.o).then((e) => ({ default: e.Markdown }))), v = { density: {
15
+ var _ = /* @__PURE__ */ d(() => import("../../chunks/markdown-C565aBR7.js").then((e) => e.o).then((e) => ({ default: e.Markdown }))), v = { density: {
16
16
  default: { classes: "gap-24" },
17
17
  compact: { classes: "gap-16" }
18
18
  } }, y = { density: "default" };
@@ -89,7 +89,7 @@ function T({ blocks: e, markdown: c }) {
89
89
  })]
90
90
  }, t);
91
91
  case "tool_result": return /* @__PURE__ */ p("div", {
92
- className: "flex flex-col gap-8 pl-16 hairline-l",
92
+ className: "flex flex-col gap-8 pl-12 hairline-l",
93
93
  children: [/* @__PURE__ */ p("span", {
94
94
  className: "inline-flex items-center gap-8 text-small font-medium text-fg-secondary",
95
95
  children: [
@@ -103,11 +103,14 @@ function T({ blocks: e, markdown: c }) {
103
103
  children: l("conversationView.error", "Error")
104
104
  })
105
105
  ]
106
- }), typeof e.content == "string" ? c && !C(e.content) ? /* @__PURE__ */ f(w, {
106
+ }), typeof e.content == "string" ? C(e.content) ? /* @__PURE__ */ f(a, {
107
+ value: JSON.parse(e.content),
108
+ defaultDepth: 3
109
+ }) : c ? /* @__PURE__ */ f(w, {
107
110
  text: e.content,
108
111
  markdown: !0
109
112
  }) : /* @__PURE__ */ f("pre", {
110
- className: "mono text-small whitespace-pre-wrap wrap-anywhere text-fg",
113
+ className: "mono text-small whitespace-pre-wrap wrap-break-word text-fg",
111
114
  children: e.content
112
115
  }) : /* @__PURE__ */ f(T, {
113
116
  blocks: e.content,
@@ -115,11 +118,8 @@ function T({ blocks: e, markdown: c }) {
115
118
  })]
116
119
  }, t);
117
120
  case "reasoning": return /* @__PURE__ */ f(s, {
118
- title: /* @__PURE__ */ f("span", {
119
- className: "text-fg-secondary",
120
- children: l("conversationView.reasoning", "Reasoning")
121
- }),
122
- hint: e.redacted ? l("conversationView.redacted", "Redacted by the provider") : void 0,
121
+ heading: l("conversationView.reasoning", "Reasoning"),
122
+ preview: e.redacted ? l("conversationView.redacted", "Redacted by the provider") : void 0,
123
123
  children: e.redacted ? /* @__PURE__ */ f("p", {
124
124
  className: "max-w-prose text-small text-fg-secondary",
125
125
  children: l("conversationView.encrypted", "The provider returned this reasoning in encrypted form.")
@@ -146,7 +146,7 @@ function T({ blocks: e, markdown: c }) {
146
146
  className: "w-max max-w-full wrap-anywhere",
147
147
  children: l("conversationView.imageFrom", "Image from {host}", { host: new URL(i).host })
148
148
  }, t) : /* @__PURE__ */ p("span", {
149
- className: "inline-flex h-32 w-max items-center gap-8 rounded-pill bg-fill-1 px-12 text-small text-fg-secondary",
149
+ className: "inline-flex w-max max-w-full items-center gap-8 text-small text-fg-secondary",
150
150
  children: [
151
151
  /* @__PURE__ */ f(n, {
152
152
  icon: m,
@@ -154,24 +154,22 @@ function T({ blocks: e, markdown: c }) {
154
154
  }),
155
155
  " ",
156
156
  l("conversationView.image", "Image"),
157
- " ",
158
157
  e.media_type && /* @__PURE__ */ f("span", {
159
- className: "mono",
158
+ className: "mono text-fg-tertiary",
160
159
  children: e.media_type
161
160
  })
162
161
  ]
163
162
  }, t);
164
163
  }
165
164
  case "document": return /* @__PURE__ */ p("span", {
166
- className: "inline-flex h-32 w-max items-center gap-8 rounded-pill bg-fill-1 px-12 text-small text-fg-secondary",
167
- children: [
168
- /* @__PURE__ */ f(n, {
169
- icon: h,
170
- size: "xs"
171
- }),
172
- " ",
173
- e.name ?? l("conversationView.document", "Document")
174
- ]
165
+ className: "inline-flex w-max max-w-full items-center gap-8 text-small text-fg-secondary",
166
+ children: [/* @__PURE__ */ f(n, {
167
+ icon: h,
168
+ size: "xs"
169
+ }), /* @__PURE__ */ f("span", {
170
+ className: "min-w-0 wrap-break-word",
171
+ children: e.name ?? l("conversationView.document", "Document")
172
+ })]
175
173
  }, t);
176
174
  case "refusal": return /* @__PURE__ */ f(i, {
177
175
  tone: "warning",
@@ -183,27 +181,34 @@ function T({ blocks: e, markdown: c }) {
183
181
  });
184
182
  }
185
183
  var E = /* @__PURE__ */ u(function({ messages: n, density: r = "default", markdown: i = !1, className: a, footer: o }, s) {
186
- let c = b(t());
184
+ let c = t(), l = b(c);
187
185
  return /* @__PURE__ */ p("div", {
188
186
  ref: s,
189
187
  className: e("flex flex-col", v.density[r].classes, a),
190
- children: [n.map((t, n) => /* @__PURE__ */ p("section", {
191
- "aria-label": c[t.role],
192
- className: "flex flex-col gap-8",
193
- children: [/* @__PURE__ */ f("span", {
194
- className: e("text-caption font-medium", t.role === "assistant" ? "text-fg" : "text-fg-secondary"),
195
- children: c[t.role]
196
- }), /* @__PURE__ */ f("div", {
197
- className: e(t.role === "system" || t.role === "developer" ? "rounded-well bg-fill-1 px-16 py-12" : ""),
198
- children: /* @__PURE__ */ f(T, {
199
- blocks: typeof t.content == "string" ? [{
200
- type: "text",
201
- text: t.content
202
- }] : t.content,
203
- markdown: i
204
- })
205
- })]
206
- }, n)), o]
188
+ children: [
189
+ n.length === 0 && /* @__PURE__ */ f("p", {
190
+ className: "text-small text-fg-secondary",
191
+ children: c("conversationView.empty", "This request has no messages.")
192
+ }),
193
+ n.map((t, n) => /* @__PURE__ */ p("section", {
194
+ "aria-label": l[t.role],
195
+ className: "flex flex-col gap-8",
196
+ children: [/* @__PURE__ */ f("span", {
197
+ className: e("text-caption font-medium", t.role === "assistant" ? "text-fg" : "text-fg-secondary"),
198
+ children: l[t.role]
199
+ }), /* @__PURE__ */ f("div", {
200
+ className: e(t.role === "system" || t.role === "developer" ? "rounded-well bg-fill-1 px-12 py-12" : ""),
201
+ children: /* @__PURE__ */ f(T, {
202
+ blocks: typeof t.content == "string" ? [{
203
+ type: "text",
204
+ text: t.content
205
+ }] : t.content,
206
+ markdown: i
207
+ })
208
+ })]
209
+ }, n)),
210
+ o
211
+ ]
207
212
  });
208
213
  });
209
214
  process.env.NODE_ENV !== "production" && (E.displayName = "ConversationView");
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.js","names":["__icon_ToolsIcon","__icon_Image01Icon","__icon_Pdf01Icon","cn","useUiText","Icon","Banner","JsonView","Badge","Collapsible","safeHref","LazyMarkdown","n","m","KAESO_CONVERSATION_VARIANTS","KAESO_CONVERSATION_DEFAULT_VARIANTS","roleNames","t","DATA_IMAGE","webHref","href","src","isJson","s","Prose","plain","small","text","markdown","Suspense","Blocks","blocks","b","i","ToolsIcon","j","part","Link","Image01Icon","Pdf01Icon","ConversationView","role","density","className","messages","footer"],"sources":["../../../src/components/kaeso/conversation.tsx"],"sourcesContent":["import { forwardRef, lazy, Suspense, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { ToolsIcon as __icon_ToolsIcon, Image01Icon as __icon_Image01Icon, Pdf01Icon as __icon_Pdf01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon } from \"../icon/icon.js\";\nimport { Banner } from \"../banner/banner.js\";\nimport { Collapsible } from \"../collapsible/collapsible.js\";\nimport { JsonView } from \"../code-block/json-view.js\";\nimport { Badge } from \"../badge/badge.js\";\nimport { Link } from \"../link/link.js\";\nimport { safeHref } from \"../../utils/safe-href.js\";\nimport { useUiText, type UiText } from \"../../i18n/context.js\";\n\nconst LazyMarkdown = /* @__PURE__ */ lazy(() => import(\"../markdown/markdown.js\").then((m) => ({ default: m.Markdown })));\n\nexport const KAESO_CONVERSATION_VARIANTS = {\n density: {\n default: { classes: \"gap-24\" },\n compact: { classes: \"gap-16\" },\n },\n} as const;\nexport const KAESO_CONVERSATION_DEFAULT_VARIANTS = { density: \"default\" } as const;\n\nexport type ContentBlock =\n | { type: \"text\"; text: string }\n | { type: \"tool_call\"; id?: string | undefined; name: string; arguments: unknown }\n | { type: \"tool_result\"; tool_call_id?: string | undefined; content: string | ContentBlock[]; is_error?: boolean | undefined }\n | { type: \"reasoning\"; text: string; redacted?: boolean | undefined }\n | { type: \"image\"; src?: string | undefined; alt?: string | undefined; media_type?: string | undefined }\n | { type: \"document\"; name?: string | undefined; media_type?: string | undefined }\n | { type: \"refusal\"; text: string };\n\nexport interface ConversationMessage {\n role: \"system\" | \"user\" | \"assistant\" | \"tool\" | \"developer\";\n content: string | ContentBlock[];\n}\n\nfunction roleNames(t: UiText): Record<ConversationMessage[\"role\"], string> {\n return {\n system: t(\"conversationView.system\", \"System\"),\n developer: t(\"conversationView.developer\", \"Developer\"),\n user: t(\"conversationView.user\", \"User\"),\n assistant: t(\"conversationView.assistant\", \"Assistant\"),\n tool: t(\"conversationView.tool\", \"Tool\"),\n };\n}\n\nconst DATA_IMAGE = /^data:image\\/[a-z0-9.+-]+;/i;\n\nfunction webHref(src: string): string | null {\n const href = safeHref(src);\n return href && /^https?:/.test(href) ? href : null;\n}\n\nfunction isJson(s: string) {\n const t = s.trim();\n if (!/^[[{]/.test(t)) return false;\n try {\n JSON.parse(t);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction Prose({ text, markdown, small }: { text: string; markdown: boolean; small?: boolean | undefined }) {\n const plain = (\n <p className={cn(\"max-w-prose whitespace-pre-wrap wrap-break-word text-pretty\", small ? \"text-small text-fg-secondary\" : \"text-body text-fg\")}>{text}</p>\n );\n if (!markdown) return plain;\n return (\n <Suspense fallback={plain}>\n <LazyMarkdown text={text} {...(small ? { size: \"small\" as const, tone: \"secondary\" as const } : {})} />\n </Suspense>\n );\n}\n\nfunction Blocks({ blocks, markdown }: { blocks: ContentBlock[]; markdown: boolean }) {\n const t = useUiText();\n return (\n <div className=\"flex flex-col gap-12\">\n {blocks.map((b, i) => {\n switch (b.type) {\n case \"text\":\n return <Prose key={i} text={b.text} markdown={markdown} />;\n case \"tool_call\":\n return (\n <div key={i} className=\"flex flex-col gap-8\">\n <span className=\"inline-flex items-center gap-8 text-small font-medium text-fg-secondary\">\n <Icon icon={__icon_ToolsIcon} size=\"xs\" />\n {t(\"conversationView.called\", \"Called **{name}**\", { name: b.name })\n .split(\"**\")\n .map((part, j) =>\n j % 2 ? (\n <span key={j} className=\"mono text-fg\">\n {part}\n </span>\n ) : (\n part\n ),\n )}\n {b.id && <span className=\"mono text-fg-tertiary\">{b.id}</span>}\n </span>\n <JsonView value={b.arguments} defaultDepth={3} />\n </div>\n );\n case \"tool_result\":\n return (\n <div key={i} className=\"flex flex-col gap-8 pl-16 hairline-l\">\n <span className=\"inline-flex items-center gap-8 text-small font-medium text-fg-secondary\">\n {t(\"conversationView.result\", \"Result\")}\n {b.tool_call_id && <span className=\"mono text-fg-tertiary\">{b.tool_call_id}</span>}\n {b.is_error && <Badge tone=\"danger\">{t(\"conversationView.error\", \"Error\")}</Badge>}\n </span>\n {typeof b.content !== \"string\" ? (\n <Blocks blocks={b.content} markdown={markdown} />\n ) : markdown && !isJson(b.content) ? (\n <Prose text={b.content} markdown />\n ) : (\n <pre className=\"mono text-small whitespace-pre-wrap wrap-anywhere text-fg\">{b.content}</pre>\n )}\n </div>\n );\n case \"reasoning\":\n return (\n <Collapsible\n key={i}\n title={<span className=\"text-fg-secondary\">{t(\"conversationView.reasoning\", \"Reasoning\")}</span>}\n hint={b.redacted ? t(\"conversationView.redacted\", \"Redacted by the provider\") : undefined}\n >\n {b.redacted ? (\n <p className=\"max-w-prose text-small text-fg-secondary\">\n {t(\"conversationView.encrypted\", \"The provider returned this reasoning in encrypted form.\")}\n </p>\n ) : (\n <Prose text={b.text} markdown={markdown} small />\n )}\n </Collapsible>\n );\n case \"image\": {\n if (b.src && DATA_IMAGE.test(b.src))\n return (\n <span key={i} className=\"block w-120 overflow-hidden rounded-well ring-over ring-over-line\">\n <img src={b.src} alt={b.alt ?? t(\"conversationView.imageInput\", \"Image input\")} className=\"block h-120 w-120 object-cover\" />\n </span>\n );\n const href = b.src ? webHref(b.src) : null;\n return href ? (\n <Link key={i} href={href} external rel=\"noopener noreferrer nofollow\" className=\"w-max max-w-full wrap-anywhere\">\n {t(\"conversationView.imageFrom\", \"Image from {host}\", { host: new URL(href).host })}\n </Link>\n ) : (\n <span key={i} className=\"inline-flex h-32 w-max items-center gap-8 rounded-pill bg-fill-1 px-12 text-small text-fg-secondary\">\n <Icon icon={__icon_Image01Icon} size=\"xs\" /> {t(\"conversationView.image\", \"Image\")} {b.media_type && <span className=\"mono\">{b.media_type}</span>}\n </span>\n );\n }\n case \"document\":\n return (\n <span key={i} className=\"inline-flex h-32 w-max items-center gap-8 rounded-pill bg-fill-1 px-12 text-small text-fg-secondary\">\n <Icon icon={__icon_Pdf01Icon} size=\"xs\" /> {b.name ?? t(\"conversationView.document\", \"Document\")}\n </span>\n );\n case \"refusal\":\n return (\n <Banner key={i} tone=\"warning\" title={t(\"conversationView.refused\", \"The model refused.\")}>\n {b.text}\n </Banner>\n );\n }\n })}\n </div>\n );\n}\n\nexport interface ConversationViewProps {\n messages: ConversationMessage[];\n density?: keyof typeof KAESO_CONVERSATION_VARIANTS.density | undefined;\n markdown?: boolean | undefined;\n className?: string | undefined;\n footer?: ReactNode | undefined;\n}\n\nexport const ConversationView = /* @__PURE__ */ forwardRef<HTMLDivElement, ConversationViewProps>(function ConversationView(\n { messages, density = \"default\", markdown = false, className, footer },\n ref,\n) {\n const t = useUiText();\n const role = roleNames(t);\n return (\n <div ref={ref} className={cn(\"flex flex-col\", KAESO_CONVERSATION_VARIANTS.density[density].classes, className)}>\n {messages.map((m, i) => (\n <section key={i} aria-label={role[m.role]} className=\"flex flex-col gap-8\">\n <span className={cn(\"text-caption font-medium\", m.role === \"assistant\" ? \"text-fg\" : \"text-fg-secondary\")}>{role[m.role]}</span>\n <div className={cn(m.role === \"system\" || m.role === \"developer\" ? \"rounded-well bg-fill-1 px-16 py-12\" : \"\")}>\n <Blocks blocks={typeof m.content === \"string\" ? [{ type: \"text\", text: m.content }] : m.content} markdown={markdown} />\n </div>\n </section>\n ))}\n {footer}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ConversationView.displayName = \"ConversationView\";\n"],"mappings":";;;;;;;;;;;;;;AAYA,IAAMW,IAA+B,wBAAW,OAAO,oCAA0B,CAAA,MAAA,MAAAC,EAAA,CAAA,CAAA,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,SAAS,EAAE,CAAC,GAE3GC,IAA8B,EACzC,SAAS;CACP,SAAS,EAAE,SAAS,SAAS;CAC7B,SAAS,EAAE,SAAS,SAAS;AAC/B,EACF,GACaC,IAAsC,EAAE,SAAS,UAAU;AAgBxE,SAASC,EAAU,GAAwD;CACzE,OAAO;EACL,QAAQC,EAAE,2BAA2B,QAAQ;EAC7C,WAAWA,EAAE,8BAA8B,WAAW;EACtD,MAAMA,EAAE,yBAAyB,MAAM;EACvC,WAAWA,EAAE,8BAA8B,WAAW;EACtD,MAAMA,EAAE,yBAAyB,MAAM;CACzC;AACF;AAEA,IAAMC,IAAa;AAEnB,SAASC,EAAQ,GAA4B;CAC3C,IAAMC,IAAOV,EAASW,CAAG;CACzB,OAAOD,KAAQ,WAAW,KAAKA,CAAI,IAAIA,IAAO;AAChD;AAEA,SAASE,EAAO,GAAW;CACzB,IAAM,IAAIC,EAAE,KAAK;CACjB,IAAI,CAAC,QAAQ,KAAK,CAAC,GAAG,OAAO;CAC7B,IAAI;EAEF,OADA,KAAK,MAAM,CAAC,GACL;CACT,QAAQ;EACN,OAAO;CACT;AACF;AAEA,SAASC,EAAM,EAAE,SAAM,aAAU,YAA2E;CAC1G,IAAMC,IACJ,kBAAC,KAAD;EAAG,WAAWtB,EAAG,+DAA+DuB,IAAQ,iCAAiC,mBAAmB;EAAI,UAAAC;CAAQ,CAAA;CAG1J,OADKC,IAEH,kBAACC,GAAD;EAAU,UAAUJ;EAClB,UAAA,kBAACd,GAAD;GAAoB;GAAM,GAAKe,IAAQ;IAAE,MAAM;IAAkB,MAAM;GAAqB,IAAI,CAAC;EAAK,CAAA;CAC9F,CAAA,IAJUD;AAMxB;AAEA,SAASK,EAAO,EAAE,WAAQ,eAA2D;CACnF,IAAMb,IAAIb,EAAU;CACpB,OACE,kBAAC,OAAD;EAAK,WAAU;EACZ,UAAA2B,EAAO,KAAK,GAAG,MAAM;GACpB,QAAQC,EAAE,MAAV;IACE,KAAK,QACH,OAAO,kBAACR,GAAD;KAAe,MAAMQ,EAAE;KAAgB;IAAW,GAAtCC,CAAsC;IAC3D,KAAK,aACH,OACE,kBAAC,OAAD;KAAa,WAAU;KAAvB,UAAA,CACE,kBAAC,QAAD;MAAM,WAAU;MAAhB,UAAA;OACE,kBAAC5B,GAAD;QAAM,MAAML;QAAkB,MAAK;OAAM,CAAA;OACxCiB,EAAE,2BAA2B,qBAAqB,EAAE,MAAMe,EAAE,KAAK,CAAC,CAAC,CACjE,MAAM,IAAI,CAAC,CACX,KAAK,GAAM,MACVG,IAAI,IACF,kBAAC,QAAD;QAAc,WAAU;QACrB,UAAAC;OACG,GAFKD,CAEL,IAENC,CAEJ;OACDJ,EAAE,MAAM,kBAAC,QAAD;QAAM,WAAU;QAAyB,UAAAA,EAAE;OAAS,CAAA;MACzD;KACN,CAAA,GAAA,kBAACzB,GAAD;MAAU,OAAOyB,EAAE;MAAW,cAAc;KAAI,CAAA,CAC7C;IAjBK,GAAAC,CAiBL;IAET,KAAK,eACH,OACE,kBAAC,OAAD;KAAa,WAAU;KAAvB,UAAA,CACE,kBAAC,QAAD;MAAM,WAAU;MAAhB,UAAA;OACGhB,EAAE,2BAA2B,QAAQ;OACrCe,EAAE,gBAAgB,kBAAC,QAAD;QAAM,WAAU;QAAyB,UAAAA,EAAE;OAAmB,CAAA;OAChFA,EAAE,YAAY,kBAACxB,GAAD;QAAO,MAAK;QAAU,UAAAS,EAAE,0BAA0B,OAAO;OAAS,CAAA;MAC7E;KACL,CAAA,GAAA,OAAOe,EAAE,WAAY,WAElBJ,KAAY,CAACN,EAAOU,EAAE,OAAO,IAC/B,kBAACR,GAAD;MAAO,MAAMQ,EAAE;MAAS,UAAA;KAAU,CAAA,IAElC,kBAAC,OAAD;MAAK,WAAU;MAA6D,UAAAA,EAAE;KAAa,CAAA,IAJ3F,kBAACF,GAAD;MAAQ,QAAQE,EAAE;MAAmB;KAAW,CAAA,CAM/C;IAbK,GAAAC,CAaL;IAET,KAAK,aACH,OACE,kBAACxB,GAAD;KAEE,OAAO,kBAAC,QAAD;MAAM,WAAU;MAAqB,UAAAQ,EAAE,8BAA8B,WAAW;KAAQ,CAAA;KAC/F,MAAMe,EAAE,WAAWf,EAAE,6BAA6B,0BAA0B,IAAI,KAAA;KAE/E,UAAAe,EAAE,WACD,kBAAC,KAAD;MAAG,WAAU;MACV,UAAAf,EAAE,8BAA8B,yDAAyD;KACzF,CAAA,IAEH,kBAACO,GAAD;MAAO,MAAMQ,EAAE;MAAgB;MAAU,OAAA;KAAO,CAAA;IAEvC,GAXNC,CAWM;IAEjB,KAAK,SAAS;KACZ,IAAID,EAAE,OAAOd,EAAW,KAAKc,EAAE,GAAG,GAChC,OACE,kBAAC,QAAD;MAAc,WAAU;MACtB,UAAA,kBAAC,OAAD;OAAK,KAAKA,EAAE;OAAK,KAAKA,EAAE,OAAOf,EAAE,+BAA+B,aAAa;OAAG,WAAU;MAAkC,CAAA;KACxH,GAFKgB,CAEL;KAEV,IAAMb,IAAOY,EAAE,MAAMb,EAAQa,EAAE,GAAG,IAAI;KACtC,OAAOZ,IACL,kBAACiB,GAAD;MAAoB;MAAM,UAAA;MAAS,KAAI;MAA+B,WAAU;MAC7E,UAAApB,EAAE,8BAA8B,qBAAqB,EAAE,MAAM,IAAI,IAAIG,CAAI,CAAC,CAAC,KAAK,CAAC;KAC9E,GAFKa,CAEL,IAEN,kBAAC,QAAD;MAAc,WAAU;MAAxB,UAAA;OACE,kBAAC5B,GAAD;QAAM,MAAMJ;QAAoB,MAAK;OAAM,CAAA;OAAC;OAAEgB,EAAE,0BAA0B,OAAO;OAAE;OAAEe,EAAE,cAAc,kBAAC,QAAD;QAAM,WAAU;QAAQ,UAAAA,EAAE;OAAiB,CAAA;MAC5I;KAFK,GAAAC,CAEL;IAEV;IACA,KAAK,YACH,OACE,kBAAC,QAAD;KAAc,WAAU;KAAxB,UAAA;MACE,kBAAC5B,GAAD;OAAM,MAAMH;OAAkB,MAAK;MAAM,CAAA;MAAC;MAAE8B,EAAE,QAAQf,EAAE,6BAA6B,UAAU;KAC3F;IAFK,GAAAgB,CAEL;IAEV,KAAK,WACH,OACE,kBAAC3B,GAAD;KAAgB,MAAK;KAAU,OAAOW,EAAE,4BAA4B,oBAAoB;KACrF,UAAAe,EAAE;IACG,GAFKC,CAEL;GAEd;EACF,CAAC;CACE,CAAA;AAET;AAUA,IAAaO,IAAmC,kBAAkD,SAChG,EAAE,aAAU,aAAU,WAAW,cAAW,IAAO,cAAW,aAC9D,GACA;CAEA,IAAMC,IAAOzB,EADHZ,EACa,CAAC;CACxB,OACE,kBAAC,OAAD;EAAU;EAAK,WAAWD,EAAG,iBAAiBW,EAA4B,QAAQ4B,EAAQ,CAAC,SAASC,CAAS;EAA7G,UAAA,CACGC,EAAS,KAAK,GAAG,MAChB,kBAAC,WAAD;GAAiB,cAAYH,EAAK5B,EAAE;GAAO,WAAU;GAArD,UAAA,CACE,kBAAC,QAAD;IAAM,WAAWV,EAAG,4BAA4BU,EAAE,SAAS,cAAc,YAAY,mBAAmB;IAAI,UAAA4B,EAAK5B,EAAE;GAAY,CAAA,GAC/H,kBAAC,OAAD;IAAK,WAAWV,EAAGU,EAAE,SAAS,YAAYA,EAAE,SAAS,cAAc,uCAAuC,EAAE;IAC1G,UAAA,kBAACiB,GAAD;KAAQ,QAAQ,OAAOjB,EAAE,WAAY,WAAW,CAAC;MAAE,MAAM;MAAQ,MAAMA,EAAE;KAAQ,CAAC,IAAIA,EAAE;KAAmB;IAAW,CAAA;GACnH,CAAA,CACE;EALK,GAAAoB,CAKL,CACV,GACAY,CACE;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAiB,cAAc"}
1
+ {"version":3,"file":"conversation.js","names":["__icon_ToolsIcon","__icon_Image01Icon","__icon_Pdf01Icon","cn","useUiText","Icon","Banner","JsonView","Badge","ReasoningFrame","safeHref","LazyMarkdown","n","m","KAESO_CONVERSATION_VARIANTS","KAESO_CONVERSATION_DEFAULT_VARIANTS","roleNames","t","DATA_IMAGE","webHref","href","src","isJson","s","Prose","plain","small","text","markdown","Suspense","Blocks","blocks","b","i","ToolsIcon","j","part","Link","Image01Icon","Pdf01Icon","ConversationView","role","density","className","messages","footer"],"sources":["../../../src/components/kaeso/conversation.tsx"],"sourcesContent":["import { forwardRef, lazy, Suspense, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { ToolsIcon as __icon_ToolsIcon, Image01Icon as __icon_Image01Icon, Pdf01Icon as __icon_Pdf01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon } from \"../icon/icon.js\";\nimport { Banner } from \"../banner/banner.js\";\nimport { ReasoningFrame } from \"../playground/reasoning-frame.js\";\nimport { JsonView } from \"../code-block/json-view.js\";\nimport { Badge } from \"../badge/badge.js\";\nimport { Link } from \"../link/link.js\";\nimport { safeHref } from \"../../utils/safe-href.js\";\nimport { useUiText, type UiText } from \"../../i18n/context.js\";\n\nconst LazyMarkdown = /* @__PURE__ */ lazy(() => import(\"../markdown/markdown.js\").then((m) => ({ default: m.Markdown })));\n\nexport const KAESO_CONVERSATION_VARIANTS = {\n density: {\n default: { classes: \"gap-24\" },\n compact: { classes: \"gap-16\" },\n },\n} as const;\nexport const KAESO_CONVERSATION_DEFAULT_VARIANTS = { density: \"default\" } as const;\n\nexport type ContentBlock =\n | { type: \"text\"; text: string }\n | { type: \"tool_call\"; id?: string | undefined; name: string; arguments: unknown }\n | { type: \"tool_result\"; tool_call_id?: string | undefined; content: string | ContentBlock[]; is_error?: boolean | undefined }\n | { type: \"reasoning\"; text: string; redacted?: boolean | undefined }\n | { type: \"image\"; src?: string | undefined; alt?: string | undefined; media_type?: string | undefined }\n | { type: \"document\"; name?: string | undefined; media_type?: string | undefined }\n | { type: \"refusal\"; text: string };\n\nexport interface ConversationMessage {\n role: \"system\" | \"user\" | \"assistant\" | \"tool\" | \"developer\";\n content: string | ContentBlock[];\n}\n\nfunction roleNames(t: UiText): Record<ConversationMessage[\"role\"], string> {\n return {\n system: t(\"conversationView.system\", \"System\"),\n developer: t(\"conversationView.developer\", \"Developer\"),\n user: t(\"conversationView.user\", \"User\"),\n assistant: t(\"conversationView.assistant\", \"Assistant\"),\n tool: t(\"conversationView.tool\", \"Tool\"),\n };\n}\n\nconst DATA_IMAGE = /^data:image\\/[a-z0-9.+-]+;/i;\n\nfunction webHref(src: string): string | null {\n const href = safeHref(src);\n return href && /^https?:/.test(href) ? href : null;\n}\n\nfunction isJson(s: string) {\n const t = s.trim();\n if (!/^[[{]/.test(t)) return false;\n try {\n JSON.parse(t);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction Prose({ text, markdown, small }: { text: string; markdown: boolean; small?: boolean | undefined }) {\n const plain = (\n <p className={cn(\"max-w-prose whitespace-pre-wrap wrap-break-word text-pretty\", small ? \"text-small text-fg-secondary\" : \"text-body text-fg\")}>{text}</p>\n );\n if (!markdown) return plain;\n return (\n <Suspense fallback={plain}>\n <LazyMarkdown text={text} {...(small ? { size: \"small\" as const, tone: \"secondary\" as const } : {})} />\n </Suspense>\n );\n}\n\nfunction Blocks({ blocks, markdown }: { blocks: ContentBlock[]; markdown: boolean }) {\n const t = useUiText();\n return (\n <div className=\"flex flex-col gap-12\">\n {blocks.map((b, i) => {\n switch (b.type) {\n case \"text\":\n return <Prose key={i} text={b.text} markdown={markdown} />;\n case \"tool_call\":\n return (\n <div key={i} className=\"flex flex-col gap-8\">\n <span className=\"inline-flex items-center gap-8 text-small font-medium text-fg-secondary\">\n <Icon icon={__icon_ToolsIcon} size=\"xs\" />\n {t(\"conversationView.called\", \"Called **{name}**\", { name: b.name })\n .split(\"**\")\n .map((part, j) =>\n j % 2 ? (\n <span key={j} className=\"mono text-fg\">\n {part}\n </span>\n ) : (\n part\n ),\n )}\n {b.id && <span className=\"mono text-fg-tertiary\">{b.id}</span>}\n </span>\n <JsonView value={b.arguments} defaultDepth={3} />\n </div>\n );\n case \"tool_result\":\n return (\n <div key={i} className=\"flex flex-col gap-8 pl-12 hairline-l\">\n <span className=\"inline-flex items-center gap-8 text-small font-medium text-fg-secondary\">\n {t(\"conversationView.result\", \"Result\")}\n {b.tool_call_id && <span className=\"mono text-fg-tertiary\">{b.tool_call_id}</span>}\n {b.is_error && <Badge tone=\"danger\">{t(\"conversationView.error\", \"Error\")}</Badge>}\n </span>\n {typeof b.content !== \"string\" ? (\n <Blocks blocks={b.content} markdown={markdown} />\n ) : isJson(b.content) ? (\n <JsonView value={JSON.parse(b.content)} defaultDepth={3} />\n ) : markdown ? (\n <Prose text={b.content} markdown />\n ) : (\n <pre className=\"mono text-small whitespace-pre-wrap wrap-break-word text-fg\">{b.content}</pre>\n )}\n </div>\n );\n case \"reasoning\":\n return (\n <ReasoningFrame\n key={i}\n heading={t(\"conversationView.reasoning\", \"Reasoning\")}\n preview={b.redacted ? t(\"conversationView.redacted\", \"Redacted by the provider\") : undefined}\n >\n {b.redacted ? (\n <p className=\"max-w-prose text-small text-fg-secondary\">\n {t(\"conversationView.encrypted\", \"The provider returned this reasoning in encrypted form.\")}\n </p>\n ) : (\n <Prose text={b.text} markdown={markdown} small />\n )}\n </ReasoningFrame>\n );\n case \"image\": {\n if (b.src && DATA_IMAGE.test(b.src))\n return (\n <span key={i} className=\"block w-120 overflow-hidden rounded-well ring-over ring-over-line\">\n <img src={b.src} alt={b.alt ?? t(\"conversationView.imageInput\", \"Image input\")} className=\"block h-120 w-120 object-cover\" />\n </span>\n );\n const href = b.src ? webHref(b.src) : null;\n return href ? (\n <Link key={i} href={href} external rel=\"noopener noreferrer nofollow\" className=\"w-max max-w-full wrap-anywhere\">\n {t(\"conversationView.imageFrom\", \"Image from {host}\", { host: new URL(href).host })}\n </Link>\n ) : (\n <span key={i} className=\"inline-flex w-max max-w-full items-center gap-8 text-small text-fg-secondary\">\n <Icon icon={__icon_Image01Icon} size=\"xs\" /> {t(\"conversationView.image\", \"Image\")}\n {b.media_type && <span className=\"mono text-fg-tertiary\">{b.media_type}</span>}\n </span>\n );\n }\n case \"document\":\n return (\n <span key={i} className=\"inline-flex w-max max-w-full items-center gap-8 text-small text-fg-secondary\">\n <Icon icon={__icon_Pdf01Icon} size=\"xs\" />\n <span className=\"min-w-0 wrap-break-word\">{b.name ?? t(\"conversationView.document\", \"Document\")}</span>\n </span>\n );\n case \"refusal\":\n return (\n <Banner key={i} tone=\"warning\" title={t(\"conversationView.refused\", \"The model refused.\")}>\n {b.text}\n </Banner>\n );\n }\n })}\n </div>\n );\n}\n\nexport interface ConversationViewProps {\n messages: ConversationMessage[];\n density?: keyof typeof KAESO_CONVERSATION_VARIANTS.density | undefined;\n markdown?: boolean | undefined;\n className?: string | undefined;\n footer?: ReactNode | undefined;\n}\n\nexport const ConversationView = /* @__PURE__ */ forwardRef<HTMLDivElement, ConversationViewProps>(function ConversationView(\n { messages, density = \"default\", markdown = false, className, footer },\n ref,\n) {\n const t = useUiText();\n const role = roleNames(t);\n return (\n <div ref={ref} className={cn(\"flex flex-col\", KAESO_CONVERSATION_VARIANTS.density[density].classes, className)}>\n {messages.length === 0 && <p className=\"text-small text-fg-secondary\">{t(\"conversationView.empty\", \"This request has no messages.\")}</p>}\n {messages.map((m, i) => (\n <section key={i} aria-label={role[m.role]} className=\"flex flex-col gap-8\">\n <span className={cn(\"text-caption font-medium\", m.role === \"assistant\" ? \"text-fg\" : \"text-fg-secondary\")}>{role[m.role]}</span>\n <div className={cn(m.role === \"system\" || m.role === \"developer\" ? \"rounded-well bg-fill-1 px-12 py-12\" : \"\")}>\n <Blocks blocks={typeof m.content === \"string\" ? [{ type: \"text\", text: m.content }] : m.content} markdown={markdown} />\n </div>\n </section>\n ))}\n {footer}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ConversationView.displayName = \"ConversationView\";\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export { t as CapabilityIcons, n as KAESO_IDENTITY_DEFAULT_VARIANTS, r as KAESO_IDENTITY_VARIANTS, i as KAESO_KEY_DISPLAY_DEFAULT_VARIANTS, a as KAESO_KEY_DISPLAY_VARIANTS, o as KeyDisplay, s as ModelLabel, c as ProviderBadge, l as ProviderCard, u as RequestTimeline, d as StatusCode, f as providerName } from "../../chunks/identity-BmhQ6BQ-.js";
2
+ export { t as CapabilityIcons, n as KAESO_IDENTITY_DEFAULT_VARIANTS, r as KAESO_IDENTITY_VARIANTS, i as KAESO_KEY_DISPLAY_DEFAULT_VARIANTS, a as KAESO_KEY_DISPLAY_VARIANTS, o as KeyDisplay, s as ModelLabel, c as ProviderBadge, l as ProviderCard, u as RequestTimeline, d as StatusCode, f as providerName } from "../../chunks/identity-3Foi5F8w.js";
@@ -1,11 +1,11 @@
1
1
  "use client";
2
- import { t as e } from "../../chunks/cn-Dj6sRgkF.js";
2
+ import { t as e } from "../../chunks/cn-BjnOAUrA.js";
3
3
  import { i as t } from "../../chunks/context-BELWW79w.js";
4
- import { t as n } from "../../chunks/icon-D7ja-_Yk.js";
5
- import { n as r } from "../../chunks/button-CzuxqawA.js";
4
+ import { t as n } from "../../chunks/icon-CBzOwqrX.js";
5
+ import { n as r } from "../../chunks/button-IblhXUyZ.js";
6
6
  import { t as i } from "../../chunks/use-copy-Dm2ncvMX.js";
7
- import { t as a } from "../../chunks/copy-button-FJvPJn72.js";
8
- import { t as o } from "../../chunks/code-block-BZIe_B9l.js";
7
+ import { t as a } from "../../chunks/copy-button-CwU8t_9_.js";
8
+ import { t as o } from "../../chunks/code-block-64e-Cy1S.js";
9
9
  import { forwardRef as s } from "react";
10
10
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
11
11
  import { Alert02Icon as u, Copy01Icon as d, Tick02Icon as f } from "@hugeicons/core-free-icons";
@@ -32,7 +32,14 @@ function h({ baseUrl: e, apiKey: t = "$KAESO_API_KEY", model: n = "gpt-5" }) {
32
32
  ];
33
33
  }
34
34
  var g = /* @__PURE__ */ s(function({ secret: a, name: s, baseUrl: p, model: m, onCopied: g, snippets: _, className: v }, y) {
35
- let b = t(), { copied: x, copy: S } = i(2400), C = b("secretReveal.copyKey", "Copy key"), w = b("secretReveal.copied", "Copied");
35
+ let b = t(), { copied: x, copy: S } = i(2400), C = b("secretReveal.copyKey", "Copy key"), w = b("secretReveal.copied", "Key copied"), T = _ || [{
36
+ label: ".env",
37
+ lang: "bash",
38
+ code: `KAESO_BASE_URL=${p}/v1\nKAESO_API_KEY=${a}`
39
+ }, ...h({
40
+ baseUrl: p,
41
+ ...m ? { model: m } : {}
42
+ })];
36
43
  return /* @__PURE__ */ l("div", {
37
44
  ref: y,
38
45
  className: e("flex flex-col gap-24", v),
@@ -43,7 +50,7 @@ var g = /* @__PURE__ */ s(function({ secret: a, name: s, baseUrl: p, model: m, o
43
50
  tabIndex: 0,
44
51
  role: "textbox",
45
52
  "aria-readonly": !0,
46
- "aria-label": typeof s == "string" ? b("secretReveal.secretFor", "Secret for {name}", { name: s }) : b("secretReveal.secret", "Secret"),
53
+ "aria-label": typeof s == "string" ? b("secretReveal.keyFor", "Key for {name}", { name: s }) : b("secretReveal.key", "Key"),
47
54
  onClick: (e) => {
48
55
  let t = document.createRange();
49
56
  t.selectNodeContents(e.currentTarget);
@@ -53,6 +60,13 @@ var g = /* @__PURE__ */ s(function({ secret: a, name: s, baseUrl: p, model: m, o
53
60
  className: "w-full cursor-text rounded-well bg-fill-1 px-20 py-16 mono text-body-lg leading-code break-all text-fg select-all focus-ring",
54
61
  children: a
55
62
  }),
63
+ /* @__PURE__ */ l("p", {
64
+ className: "inline-flex items-center gap-6 text-body text-warning-text",
65
+ children: [/* @__PURE__ */ c(n, {
66
+ icon: u,
67
+ size: "sm"
68
+ }), b("secretReveal.shownOnce", "Shown once. Store it now.")]
69
+ }),
56
70
  /* @__PURE__ */ c(r, {
57
71
  variant: "primary",
58
72
  size: "xl",
@@ -62,21 +76,10 @@ var g = /* @__PURE__ */ s(function({ secret: a, name: s, baseUrl: p, model: m, o
62
76
  await S(a) && g?.();
63
77
  },
64
78
  children: x ? w : C
65
- }),
66
- /* @__PURE__ */ l("p", {
67
- className: "inline-flex items-center gap-6 text-body text-warning-text",
68
- children: [/* @__PURE__ */ c(n, {
69
- icon: u,
70
- size: "sm"
71
- }), b("secretReveal.shownOnce", "Shown once. Store it now.")]
72
79
  })
73
80
  ]
74
81
  }), _ !== !1 && /* @__PURE__ */ c(o, {
75
- tabs: _ ?? h({
76
- baseUrl: p,
77
- apiKey: a,
78
- ...m ? { model: m } : {}
79
- }),
82
+ tabs: T,
80
83
  copy: !0
81
84
  })]
82
85
  });
@@ -102,7 +105,7 @@ var _ = /* @__PURE__ */ s(function({ baseUrl: n, apiKey: r = "$KAESO_API_KEY", m
102
105
  className: "flex min-w-0 flex-col gap-6",
103
106
  children: [/* @__PURE__ */ c("span", {
104
107
  className: "text-small font-medium text-fg-secondary",
105
- children: d("environmentSnippet.apiKey", "API key")
108
+ children: d("environmentSnippet.apiKeyVariable", "API key variable")
106
109
  }), /* @__PURE__ */ c(a, {
107
110
  value: r,
108
111
  label: d("environmentSnippet.copyVariableName", "Copy variable name")
@@ -1 +1 @@
1
- {"version":3,"file":"moments.js","names":["__icon_Tick02Icon","__icon_Copy01Icon","__icon_Alert02Icon","cn","useUiText","Icon","Button","useCopy","ClipboardText","CodeBlock","KAESO_MOMENTS_VARIANTS","KAESO_MOMENTS_DEFAULT_VARIANTS","sdkSnippets","envKey","apiKey","nodeKey","baseUrl","model","SecretReveal","t","copyKey","done","className","name","range","selection","secret","copied","Tick02Icon","Copy01Icon","copy","onCopied","Alert02Icon","snippets","EnvironmentSnippet"],"sources":["../../../src/components/kaeso/moments.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Tick02Icon as __icon_Tick02Icon, Copy01Icon as __icon_Copy01Icon, Alert02Icon as __icon_Alert02Icon } from \"@hugeicons/core-free-icons\";\nimport { useCopy } from \"../../hooks/use-copy.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { Button } from \"../button/button.js\";\nimport { CodeBlock, type CodeTab } from \"../code-block/code-block.js\";\nimport { ClipboardText } from \"../copy-button/copy-button.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_MOMENTS_VARIANTS = {\n secret: { md: { classes: \"rounded-well bg-fill-1 px-20 py-16\" } },\n} as const;\nexport const KAESO_MOMENTS_DEFAULT_VARIANTS = { secret: \"md\" } as const;\n\nexport interface SnippetOptions {\n baseUrl: string;\n apiKey?: string | undefined;\n model?: string | undefined;\n}\n\nexport function sdkSnippets({ baseUrl, apiKey = \"$KAESO_API_KEY\", model = \"gpt-5\" }: SnippetOptions): CodeTab[] {\n const envKey = apiKey.startsWith(\"$\") ? `os.environ[\"${apiKey.slice(1)}\"]` : `\"${apiKey}\"`;\n const nodeKey = apiKey.startsWith(\"$\") ? `process.env.${apiKey.slice(1)}` : `\"${apiKey}\"`;\n return [\n {\n label: \"Python\",\n lang: \"python\",\n code: `from openai import OpenAI\\n${apiKey.startsWith(\"$\") ? \"import os\\n\" : \"\"}\\nclient = OpenAI(\\n base_url=\"${baseUrl}/v1\",\\n api_key=${envKey},\\n)\\n\\nresponse = client.responses.create(\\n model=\"${model}\",\\n input=\"Write one sentence about gateways.\",\\n)\\nprint(response.output_text)`,\n },\n {\n label: \"Node\",\n lang: \"ts\",\n code: `import OpenAI from \"openai\";\\n\\nconst client = new OpenAI({\\n baseURL: \"${baseUrl}/v1\",\\n apiKey: ${nodeKey},\\n});\\n\\nconst response = await client.responses.create({\\n model: \"${model}\",\\n input: \"Write one sentence about gateways.\",\\n});\\nconsole.log(response.output_text);`,\n },\n {\n label: \"curl\",\n lang: \"bash\",\n code: `${apiKey.startsWith(\"$\") ? \"\" : `KAESO_API_KEY=${apiKey}\\n`}curl ${baseUrl}/v1/responses \\\\\\n -H \"Authorization: Bearer ${apiKey.startsWith(\"$\") ? apiKey : \"$KAESO_API_KEY\"}\" \\\\\\n -H \"Content-Type: application/json\" \\\\\\n -d '{\\n \"model\": \"${model}\",\\n \"input\": \"Write one sentence about gateways.\"\\n }'`,\n },\n ];\n}\n\nexport interface SecretRevealProps extends SnippetOptions {\n secret: string;\n name?: ReactNode | undefined;\n onCopied?: (() => void) | undefined;\n snippets?: CodeTab[] | false | undefined;\n className?: string | undefined;\n}\n\nexport const SecretReveal = /* @__PURE__ */ forwardRef<HTMLDivElement, SecretRevealProps>(function SecretReveal(\n { secret, name, baseUrl, model, onCopied, snippets, className },\n ref,\n) {\n const t = useUiText();\n const { copied, copy } = useCopy(2400);\n const copyKey = t(\"secretReveal.copyKey\", \"Copy key\");\n const done = t(\"secretReveal.copied\", \"Copied\");\n return (\n <div ref={ref} className={cn(\"flex flex-col gap-24\", className)}>\n <div className=\"flex flex-col items-center gap-16 text-center\">\n <div\n tabIndex={0}\n role=\"textbox\"\n aria-readonly\n aria-label={typeof name === \"string\" ? t(\"secretReveal.secretFor\", \"Secret for {name}\", { name }) : t(\"secretReveal.secret\", \"Secret\")}\n onClick={(e) => {\n const range = document.createRange();\n range.selectNodeContents(e.currentTarget);\n const selection = window.getSelection();\n selection?.removeAllRanges();\n selection?.addRange(range);\n }}\n className=\"w-full cursor-text rounded-well bg-fill-1 px-20 py-16 mono text-body-lg leading-code break-all text-fg select-all focus-ring\"\n >\n {secret}\n </div>\n <Button\n variant=\"primary\"\n size=\"xl\"\n leadingIcon={copied ? __icon_Tick02Icon : __icon_Copy01Icon}\n reserveLabels={[copyKey, done]}\n onClick={async () => {\n if (await copy(secret)) onCopied?.();\n }}\n >\n {copied ? done : copyKey}\n </Button>\n <p className=\"inline-flex items-center gap-6 text-body text-warning-text\">\n <Icon icon={__icon_Alert02Icon} size=\"sm\" />\n {t(\"secretReveal.shownOnce\", \"Shown once. Store it now.\")}\n </p>\n </div>\n {snippets !== false && <CodeBlock tabs={snippets ?? sdkSnippets({ baseUrl, apiKey: secret, ...(model ? { model } : {}) })} copy />}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") SecretReveal.displayName = \"SecretReveal\";\n\nexport const EnvironmentSnippet = /* @__PURE__ */ forwardRef<HTMLDivElement, SnippetOptions & { className?: string | undefined }>(function EnvironmentSnippet(\n { baseUrl, apiKey = \"$KAESO_API_KEY\", model, className },\n ref,\n) {\n const t = useUiText();\n return (\n <div ref={ref} className={cn(\"flex flex-col gap-16\", className)}>\n <div className=\"grid gap-12 md:grid-cols-2\">\n <div className=\"flex min-w-0 flex-col gap-6\">\n <span className=\"text-small font-medium text-fg-secondary\">{t(\"environmentSnippet.baseUrl\", \"Base URL\")}</span>\n <ClipboardText value={`${baseUrl}/v1`} label={t(\"environmentSnippet.copyBaseUrl\", \"Copy base URL\")} />\n </div>\n <div className=\"flex min-w-0 flex-col gap-6\">\n <span className=\"text-small font-medium text-fg-secondary\">{t(\"environmentSnippet.apiKey\", \"API key\")}</span>\n <ClipboardText value={apiKey} label={t(\"environmentSnippet.copyVariableName\", \"Copy variable name\")} />\n </div>\n </div>\n <CodeBlock tabs={sdkSnippets({ baseUrl, apiKey, ...(model ? { model } : {}) })} />\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") EnvironmentSnippet.displayName = \"EnvironmentSnippet\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"moments.js","names":["__icon_Alert02Icon","__icon_Tick02Icon","__icon_Copy01Icon","cn","useUiText","Icon","Button","useCopy","ClipboardText","CodeBlock","KAESO_MOMENTS_VARIANTS","KAESO_MOMENTS_DEFAULT_VARIANTS","sdkSnippets","envKey","apiKey","nodeKey","baseUrl","model","SecretReveal","t","copyKey","done","tabs","snippets","secret","className","name","range","selection","Alert02Icon","copied","Tick02Icon","Copy01Icon","copy","onCopied","EnvironmentSnippet"],"sources":["../../../src/components/kaeso/moments.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Alert02Icon as __icon_Alert02Icon, Tick02Icon as __icon_Tick02Icon, Copy01Icon as __icon_Copy01Icon } from \"@hugeicons/core-free-icons\";\nimport { useCopy } from \"../../hooks/use-copy.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { Button } from \"../button/button.js\";\nimport { CodeBlock, type CodeTab } from \"../code-block/code-block.js\";\nimport { ClipboardText } from \"../copy-button/copy-button.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_MOMENTS_VARIANTS = {\n secret: { md: { classes: \"rounded-well bg-fill-1 px-20 py-16\" } },\n} as const;\nexport const KAESO_MOMENTS_DEFAULT_VARIANTS = { secret: \"md\" } as const;\n\nexport interface SnippetOptions {\n baseUrl: string;\n apiKey?: string | undefined;\n model?: string | undefined;\n}\n\nexport function sdkSnippets({ baseUrl, apiKey = \"$KAESO_API_KEY\", model = \"gpt-5\" }: SnippetOptions): CodeTab[] {\n const envKey = apiKey.startsWith(\"$\") ? `os.environ[\"${apiKey.slice(1)}\"]` : `\"${apiKey}\"`;\n const nodeKey = apiKey.startsWith(\"$\") ? `process.env.${apiKey.slice(1)}` : `\"${apiKey}\"`;\n return [\n {\n label: \"Python\",\n lang: \"python\",\n code: `from openai import OpenAI\\n${apiKey.startsWith(\"$\") ? \"import os\\n\" : \"\"}\\nclient = OpenAI(\\n base_url=\"${baseUrl}/v1\",\\n api_key=${envKey},\\n)\\n\\nresponse = client.responses.create(\\n model=\"${model}\",\\n input=\"Write one sentence about gateways.\",\\n)\\nprint(response.output_text)`,\n },\n {\n label: \"Node\",\n lang: \"ts\",\n code: `import OpenAI from \"openai\";\\n\\nconst client = new OpenAI({\\n baseURL: \"${baseUrl}/v1\",\\n apiKey: ${nodeKey},\\n});\\n\\nconst response = await client.responses.create({\\n model: \"${model}\",\\n input: \"Write one sentence about gateways.\",\\n});\\nconsole.log(response.output_text);`,\n },\n {\n label: \"curl\",\n lang: \"bash\",\n code: `${apiKey.startsWith(\"$\") ? \"\" : `KAESO_API_KEY=${apiKey}\\n`}curl ${baseUrl}/v1/responses \\\\\\n -H \"Authorization: Bearer ${apiKey.startsWith(\"$\") ? apiKey : \"$KAESO_API_KEY\"}\" \\\\\\n -H \"Content-Type: application/json\" \\\\\\n -d '{\\n \"model\": \"${model}\",\\n \"input\": \"Write one sentence about gateways.\"\\n }'`,\n },\n ];\n}\n\nexport interface SecretRevealProps extends SnippetOptions {\n secret: string;\n name?: ReactNode | undefined;\n onCopied?: (() => void) | undefined;\n snippets?: CodeTab[] | false | undefined;\n className?: string | undefined;\n}\n\nexport const SecretReveal = /* @__PURE__ */ forwardRef<HTMLDivElement, SecretRevealProps>(function SecretReveal(\n { secret, name, baseUrl, model, onCopied, snippets, className },\n ref,\n) {\n const t = useUiText();\n const { copied, copy } = useCopy(2400);\n const copyKey = t(\"secretReveal.copyKey\", \"Copy key\");\n const done = t(\"secretReveal.copied\", \"Key copied\");\n const tabs = snippets || [\n { label: \".env\", lang: \"bash\" as const, code: `KAESO_BASE_URL=${baseUrl}/v1\\nKAESO_API_KEY=${secret}` },\n ...sdkSnippets({ baseUrl, ...(model ? { model } : {}) }),\n ];\n return (\n <div ref={ref} className={cn(\"flex flex-col gap-24\", className)}>\n <div className=\"flex flex-col items-center gap-16 text-center\">\n <div\n tabIndex={0}\n role=\"textbox\"\n aria-readonly\n aria-label={typeof name === \"string\" ? t(\"secretReveal.keyFor\", \"Key for {name}\", { name }) : t(\"secretReveal.key\", \"Key\")}\n onClick={(e) => {\n const range = document.createRange();\n range.selectNodeContents(e.currentTarget);\n const selection = window.getSelection();\n selection?.removeAllRanges();\n selection?.addRange(range);\n }}\n className=\"w-full cursor-text rounded-well bg-fill-1 px-20 py-16 mono text-body-lg leading-code break-all text-fg select-all focus-ring\"\n >\n {secret}\n </div>\n <p className=\"inline-flex items-center gap-6 text-body text-warning-text\">\n <Icon icon={__icon_Alert02Icon} size=\"sm\" />\n {t(\"secretReveal.shownOnce\", \"Shown once. Store it now.\")}\n </p>\n <Button\n variant=\"primary\"\n size=\"xl\"\n leadingIcon={copied ? __icon_Tick02Icon : __icon_Copy01Icon}\n reserveLabels={[copyKey, done]}\n onClick={async () => {\n if (await copy(secret)) onCopied?.();\n }}\n >\n {copied ? done : copyKey}\n </Button>\n </div>\n {snippets !== false && <CodeBlock tabs={tabs} copy />}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") SecretReveal.displayName = \"SecretReveal\";\n\nexport const EnvironmentSnippet = /* @__PURE__ */ forwardRef<HTMLDivElement, SnippetOptions & { className?: string | undefined }>(function EnvironmentSnippet(\n { baseUrl, apiKey = \"$KAESO_API_KEY\", model, className },\n ref,\n) {\n const t = useUiText();\n return (\n <div ref={ref} className={cn(\"flex flex-col gap-16\", className)}>\n <div className=\"grid gap-12 md:grid-cols-2\">\n <div className=\"flex min-w-0 flex-col gap-6\">\n <span className=\"text-small font-medium text-fg-secondary\">{t(\"environmentSnippet.baseUrl\", \"Base URL\")}</span>\n <ClipboardText value={`${baseUrl}/v1`} label={t(\"environmentSnippet.copyBaseUrl\", \"Copy base URL\")} />\n </div>\n <div className=\"flex min-w-0 flex-col gap-6\">\n <span className=\"text-small font-medium text-fg-secondary\">{t(\"environmentSnippet.apiKeyVariable\", \"API key variable\")}</span>\n <ClipboardText value={apiKey} label={t(\"environmentSnippet.copyVariableName\", \"Copy variable name\")} />\n </div>\n </div>\n <CodeBlock tabs={sdkSnippets({ baseUrl, apiKey, ...(model ? { model } : {}) })} />\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") EnvironmentSnippet.displayName = \"EnvironmentSnippet\";\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export { t as KAESO_RIGHTS_MATRIX_DEFAULT_VARIANTS, n as KAESO_RIGHTS_MATRIX_VARIANTS, r as RightsMatrix } from "../../chunks/rights-Cyp0Pzp-.js";
2
+ export { t as KAESO_RIGHTS_MATRIX_DEFAULT_VARIANTS, n as KAESO_RIGHTS_MATRIX_VARIANTS, r as RightsMatrix } from "../../chunks/rights-B68ocZuq.js";
@@ -1,101 +1,117 @@
1
1
  "use client";
2
- import { t as e } from "../../chunks/cn-Dj6sRgkF.js";
2
+ import { t as e } from "../../chunks/cn-BjnOAUrA.js";
3
3
  import { i as t } from "../../chunks/context-BELWW79w.js";
4
4
  import { formatNumber as n, formatTokens as r } from "../../format.js";
5
- import { t as i } from "../../chunks/icon-D7ja-_Yk.js";
6
- import { a } from "../../chunks/meter-Bj4N3Xuh.js";
7
- import { t as o } from "../../chunks/badge-C2KtxCLB.js";
8
- import { C as s, c, l } from "../../chunks/core-BYns5ytV.js";
9
- import { forwardRef as u } from "react";
10
- import { jsx as d, jsxs as f } from "react/jsx-runtime";
11
- import { Layers01Icon as p, LeftToRightListBulletIcon as m, Wallet01Icon as h } from "@hugeicons/core-free-icons";
5
+ import { t as i } from "../../chunks/icon-CBzOwqrX.js";
6
+ import { r as a } from "../../chunks/tooltip-Tkm-urbi.js";
7
+ import { r as o } from "../../chunks/text-DkKdTVUf.js";
8
+ import { a as s } from "../../chunks/meter-CASMHlxl.js";
9
+ import { t as c } from "../../chunks/badge-C0GC3B9X.js";
10
+ import { C as l, M as u, c as d, l as f, w as p } from "../../chunks/core-CmK-8ObW.js";
11
+ import { forwardRef as m } from "react";
12
+ import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
13
+ import { Layers01Icon as v, LeftToRightListBulletIcon as y, Wallet01Icon as b } from "@hugeicons/core-free-icons";
12
14
  //#region src/components/kaeso/usage.tsx
13
- var g = { limit: {
15
+ var x = { limit: {
14
16
  hard: { classes: "" },
15
17
  soft: { classes: "" }
16
- } }, _ = { limit: "hard" }, v = l;
17
- function y(e) {
18
- return {
19
- input: e("usageBreakdown.input", "Input"),
20
- output: e("usageBreakdown.output", "Output"),
21
- cacheRead: e("usageBreakdown.cacheRead", "Cache read"),
22
- cacheWrite: e("usageBreakdown.cacheWrite", "Cache write"),
23
- reasoning: e("usageBreakdown.reasoning", "Reasoning")
24
- };
25
- }
26
- var b = {}, x = {}, S = /* @__PURE__ */ u(function({ tokens: i, className: a }, o) {
27
- let l = t(), u = y(l), p = v.filter((e) => (i[e] ?? 0) > 0), m = p.reduce((e, t) => e + (i[t] ?? 0), 0) || 1;
28
- return /* @__PURE__ */ f("div", {
29
- ref: o,
30
- className: e("flex flex-col gap-12", a),
31
- children: [/* @__PURE__ */ d("div", {
18
+ } }, S = { limit: "hard" }, C = f, w = {}, T = {}, E = /* @__PURE__ */ m(function({ tokens: i, className: o }, s) {
19
+ let c = t(), f = C.filter((e) => (i[e] ?? 0) > 0), m = f.reduce((e, t) => e + (i[t] ?? 0), 0) || 1;
20
+ return /* @__PURE__ */ _("div", {
21
+ ref: s,
22
+ className: e("flex flex-col gap-12", o),
23
+ children: [/* @__PURE__ */ g("div", {
32
24
  role: "img",
33
- "aria-label": l("usageBreakdown.tokens", "Tokens: {list}", { list: p.map((e) => l("usageBreakdown.kindCount", "{kind} {count}", {
34
- kind: u[e],
25
+ "aria-label": c("usageBreakdown.tokens", "Tokens: {list}", { list: f.map((e) => c("usageBreakdown.kindCount", "{kind} {count}", {
26
+ kind: p(e, c),
35
27
  count: n(i[e] ?? 0)
36
- })).join(l("usageBreakdown.listSeparator", ", ")) }),
37
- className: "flex h-8 w-full gap-2 overflow-hidden rounded-pill",
38
- children: p.map((e) => /* @__PURE__ */ d("span", {
39
- className: "h-full min-w-2 first:rounded-l-pill last:rounded-r-pill width-motion",
40
- style: {
41
- width: `${(i[e] ?? 0) / m * 100}%`,
42
- background: s(e)
43
- }
44
- }, e))
45
- }), /* @__PURE__ */ d("dl", {
28
+ })).join(c("usageBreakdown.listSeparator", ", ")) }),
29
+ className: e("flex h-8 w-full gap-2 overflow-hidden rounded-pill", f.length === 0 && "bg-fill-2"),
30
+ children: f.map((e) => {
31
+ let t = u(l(e));
32
+ return /* @__PURE__ */ g("span", {
33
+ className: "h-full min-w-2 data-mark first:rounded-l-pill last:rounded-r-pill width-motion",
34
+ style: {
35
+ width: `${(i[e] ?? 0) / m * 100}%`,
36
+ background: l(e),
37
+ ...t ? { boxShadow: `inset 0 0 0 1px ${t}` } : {}
38
+ }
39
+ }, e);
40
+ })
41
+ }), /* @__PURE__ */ g("dl", {
46
42
  className: "flex flex-wrap gap-x-24 gap-y-8",
47
- children: v.filter((e) => i[e] !== void 0).map((e) => /* @__PURE__ */ f("div", {
48
- className: "flex flex-col gap-2",
49
- children: [/* @__PURE__ */ f("dt", {
50
- className: "flex items-center gap-8 text-small text-fg-secondary",
51
- children: [/* @__PURE__ */ d(c, { color: s(e) }), u[e]]
52
- }), /* @__PURE__ */ d("dd", {
53
- className: "pl-18 text-body font-medium text-fg tabular",
54
- title: l("usageBreakdown.tokenCount", "{count} tokens", { count: n(i[e] ?? 0) }),
55
- children: r(i[e] ?? 0)
56
- })]
57
- }, e))
43
+ children: C.filter((e) => i[e] !== void 0).map((e) => {
44
+ let t = i[e] ?? 0, o = r(t), s = c("usageBreakdown.tokenCount", "{count} tokens", { count: n(t) });
45
+ return /* @__PURE__ */ _("div", {
46
+ className: "flex flex-col gap-2",
47
+ children: [/* @__PURE__ */ _("dt", {
48
+ className: "flex items-center gap-8 text-small text-fg-secondary",
49
+ children: [/* @__PURE__ */ g(d, { color: l(e) }), p(e, c)]
50
+ }), /* @__PURE__ */ g("dd", {
51
+ className: "pl-18 text-body font-medium text-fg tabular",
52
+ children: Math.abs(t) < 1e3 ? o : /* @__PURE__ */ g(a, {
53
+ content: s,
54
+ children: /* @__PURE__ */ g("span", {
55
+ tabIndex: 0,
56
+ "aria-label": s,
57
+ className: "rounded-code focus-ring",
58
+ children: o
59
+ })
60
+ })
61
+ })]
62
+ }, e);
63
+ })
58
64
  })]
59
65
  });
60
66
  });
61
- process.env.NODE_ENV !== "production" && (S.displayName = "UsageBreakdown");
62
- var C = {
63
- requests: m,
64
- tokens: p,
65
- spend: h
66
- }, w = /* @__PURE__ */ u(function({ kind: e, scope: n, window: r, used: s, limit: c, valueLabel: l, hard: u = !0, alerts: p = [.8], resets: m, className: h }, g) {
67
- let _ = t();
68
- return /* @__PURE__ */ d(a, {
69
- ref: g,
70
- className: h,
71
- value: c > 0 ? s / c : 0,
67
+ process.env.NODE_ENV !== "production" && (E.displayName = "UsageBreakdown");
68
+ var D = {
69
+ requests: y,
70
+ tokens: v,
71
+ spend: b
72
+ }, O = /* @__PURE__ */ m(function({ kind: n, scope: r, window: a, used: l, limit: u, valueLabel: d, hard: f = !0, alerts: p = [.8], resets: m, className: v }, y) {
73
+ let b = t(), x = u > 0 && l > u, S = b("limitMeter.label", "{kind, select, requests {requests limit} tokens {tokens limit} other {spend limit}}", { kind: n });
74
+ return /* @__PURE__ */ g(s, {
75
+ ref: y,
76
+ className: v,
77
+ value: u > 0 ? l / u : 0,
72
78
  thresholds: p,
73
- leading: /* @__PURE__ */ d(i, {
74
- icon: C[e],
79
+ leading: /* @__PURE__ */ g(i, {
80
+ icon: D[n],
75
81
  size: "sm",
76
82
  className: "text-fg-secondary"
77
83
  }),
78
- label: n,
79
- trailing: /* @__PURE__ */ d(o, {
80
- tone: u ? "neutral" : "outline",
81
- children: u ? _("limitMeter.hard", "Hard") : _("limitMeter.soft", "Soft")
84
+ label: typeof r == "string" ? /* @__PURE__ */ g(o, {
85
+ truncate: !0,
86
+ children: r
87
+ }) : r,
88
+ trailing: /* @__PURE__ */ g(c, {
89
+ tone: f ? "neutral" : "outline",
90
+ children: f ? b("limitMeter.hard", "Hard limit") : b("limitMeter.soft", "Soft limit")
82
91
  }),
83
- caption: /* @__PURE__ */ f("span", {
92
+ caption: /* @__PURE__ */ _("span", {
84
93
  className: "flex flex-wrap items-baseline justify-between gap-x-12 gap-y-2",
85
- children: [/* @__PURE__ */ f("span", { children: [
86
- /* @__PURE__ */ d("span", {
94
+ children: [/* @__PURE__ */ _("span", { children: [
95
+ x && /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g("span", {
96
+ className: e("font-medium", f ? "text-danger-text" : "text-warning-text"),
97
+ children: f ? b("limitMeter.overHard", "Over the limit, requests refused") : b("limitMeter.overSoft", "Over the limit, alerts only")
98
+ }), " · "] }),
99
+ /* @__PURE__ */ g("span", {
87
100
  className: "font-medium text-fg-secondary tabular",
88
- children: l
101
+ children: d
89
102
  }),
90
103
  " · ",
91
- r
92
- ] }), m && /* @__PURE__ */ d("span", { children: m })]
104
+ a
105
+ ] }), m && /* @__PURE__ */ g("span", { children: m })]
93
106
  }),
94
- "aria-label": _("limitMeter.label", "{kind, select, requests {requests limit} tokens {tokens limit} other {spend limit}}", { kind: e })
107
+ "aria-label": typeof r == "string" ? b("limitMeter.scopedLabel", "{scope}, {limit}", {
108
+ scope: r,
109
+ limit: S
110
+ }) : S
95
111
  });
96
112
  });
97
- process.env.NODE_ENV !== "production" && (w.displayName = "LimitMeter");
113
+ process.env.NODE_ENV !== "production" && (O.displayName = "LimitMeter");
98
114
  //#endregion
99
- export { x as KAESO_USAGE_BREAKDOWN_DEFAULT_VARIANTS, b as KAESO_USAGE_BREAKDOWN_VARIANTS, _ as KAESO_USAGE_DEFAULT_VARIANTS, g as KAESO_USAGE_VARIANTS, w as LimitMeter, S as UsageBreakdown };
115
+ export { T as KAESO_USAGE_BREAKDOWN_DEFAULT_VARIANTS, w as KAESO_USAGE_BREAKDOWN_VARIANTS, S as KAESO_USAGE_DEFAULT_VARIANTS, x as KAESO_USAGE_VARIANTS, O as LimitMeter, E as UsageBreakdown };
100
116
 
101
117
  //# sourceMappingURL=usage.js.map