@logicplanes/kaeso-ui 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/ai/component-guides.md +1 -1
  2. package/ai/component-registry.json +10 -10
  3. package/ai/component-registry.md +9 -9
  4. package/ai/icons.md +1 -1
  5. package/ai/tokens.md +2 -1
  6. package/dist/blocks/delete-resource.js +1 -1
  7. package/dist/blocks/pages.js +5 -5
  8. package/dist/blocks/resource-list.js +4 -4
  9. package/dist/chunks/{app-frame-Cj_gCbmu.js → app-frame-DZPEf2NQ.js} +9 -9
  10. package/dist/chunks/{app-frame-Cj_gCbmu.js.map → app-frame-DZPEf2NQ.js.map} +1 -1
  11. package/dist/chunks/{avatar-DOzOhYJr.js → avatar-HnvBUoe5.js} +2 -2
  12. package/dist/chunks/{avatar-DOzOhYJr.js.map → avatar-HnvBUoe5.js.map} +1 -1
  13. package/dist/chunks/{badge-wUHlj7m3.js → badge-CM8ahjDR.js} +2 -2
  14. package/dist/chunks/{badge-wUHlj7m3.js.map → badge-CM8ahjDR.js.map} +1 -1
  15. package/dist/chunks/{banner-DY1jSc9Y.js → banner-CvYgPwCc.js} +4 -4
  16. package/dist/chunks/{banner-DY1jSc9Y.js.map → banner-CvYgPwCc.js.map} +1 -1
  17. package/dist/chunks/{button-h2IFCER2.js → button-9q66Ta23.js} +13 -13
  18. package/dist/chunks/button-9q66Ta23.js.map +1 -0
  19. package/dist/chunks/{calendar-cVuezHQ6.js → calendar-CeNcqLFd.js} +2 -2
  20. package/dist/chunks/{calendar-cVuezHQ6.js.map → calendar-CeNcqLFd.js.map} +1 -1
  21. package/dist/chunks/{checkbox-C5yvSS7O.js → checkbox-C_DrNA2N.js} +2 -2
  22. package/dist/chunks/{checkbox-C5yvSS7O.js.map → checkbox-C_DrNA2N.js.map} +1 -1
  23. package/dist/chunks/{cn-DUDmdLpZ.js → cn-Isw2DnQX.js} +10 -3
  24. package/dist/chunks/cn-Isw2DnQX.js.map +1 -0
  25. package/dist/chunks/{code-C49NzHUQ.js → code-Bp2p9AuD.js} +2 -2
  26. package/dist/chunks/{code-C49NzHUQ.js.map → code-Bp2p9AuD.js.map} +1 -1
  27. package/dist/chunks/code-block-mEH6Sy3h.js +309 -0
  28. package/dist/chunks/code-block-mEH6Sy3h.js.map +1 -0
  29. package/dist/chunks/{collapsible-CDQq1Y9x.js → collapsible-CtQNJn9b.js} +13 -13
  30. package/dist/chunks/collapsible-CtQNJn9b.js.map +1 -0
  31. package/dist/chunks/{combobox-B9ttar4C.js → combobox-D8ZOm8uT.js} +6 -6
  32. package/dist/chunks/{combobox-B9ttar4C.js.map → combobox-D8ZOm8uT.js.map} +1 -1
  33. package/dist/chunks/{command-list-DZMVrXWD.js → command-list-CzMbdtJs.js} +140 -139
  34. package/dist/chunks/command-list-CzMbdtJs.js.map +1 -0
  35. package/dist/chunks/copy-button-Cdea0wKl.js +142 -0
  36. package/dist/chunks/copy-button-Cdea0wKl.js.map +1 -0
  37. package/dist/chunks/{core-Bu6iq5uh.js → core-FtMDNELx.js} +10 -10
  38. package/dist/chunks/core-FtMDNELx.js.map +1 -0
  39. package/dist/chunks/{date-popup-BJPA_fBm.js → date-popup-NytWvSNh.js} +4 -4
  40. package/dist/chunks/{date-popup-BJPA_fBm.js.map → date-popup-NytWvSNh.js.map} +1 -1
  41. package/dist/chunks/{dialog-BLcP7v24.js → dialog-BZCVFmGF.js} +5 -5
  42. package/dist/chunks/{dialog-BLcP7v24.js.map → dialog-BZCVFmGF.js.map} +1 -1
  43. package/dist/chunks/{empty-YXmSkKzR.js → empty-By1qTJr6.js} +2 -2
  44. package/dist/chunks/{empty-YXmSkKzR.js.map → empty-By1qTJr6.js.map} +1 -1
  45. package/dist/chunks/{field-BZriODU7.js → field-DfITT6Jm.js} +2 -2
  46. package/dist/chunks/{field-BZriODU7.js.map → field-DfITT6Jm.js.map} +1 -1
  47. package/dist/chunks/{icon-BqujXDUc.js → icon-D5uD_mnL.js} +2 -2
  48. package/dist/chunks/{icon-BqujXDUc.js.map → icon-D5uD_mnL.js.map} +1 -1
  49. package/dist/chunks/{icon-button-DmKFxQbP.js → icon-button-C7Du4pvb.js} +3 -3
  50. package/dist/chunks/{icon-button-DmKFxQbP.js.map → icon-button-C7Du4pvb.js.map} +1 -1
  51. package/dist/chunks/{identity-Chj7fW89.js → identity-BcVQd-7H.js} +6 -6
  52. package/dist/chunks/{identity-Chj7fW89.js.map → identity-BcVQd-7H.js.map} +1 -1
  53. package/dist/chunks/{input-9y3afoiq.js → input-B6Docqrk.js} +5 -5
  54. package/dist/chunks/{input-9y3afoiq.js.map → input-B6Docqrk.js.map} +1 -1
  55. package/dist/chunks/{input-group-BoxjnN8I.js → input-group-Dgdb0JpZ.js} +4 -4
  56. package/dist/chunks/{input-group-BoxjnN8I.js.map → input-group-Dgdb0JpZ.js.map} +1 -1
  57. package/dist/chunks/{iso-field-DAa6iPWn.js → iso-field-SOZ7Z-yE.js} +2 -2
  58. package/dist/chunks/{iso-field-DAa6iPWn.js.map → iso-field-SOZ7Z-yE.js.map} +1 -1
  59. package/dist/chunks/{json-view-BkG2hTXV.js → json-view-DCTMY_j4.js} +3 -3
  60. package/dist/chunks/{json-view-BkG2hTXV.js.map → json-view-DCTMY_j4.js.map} +1 -1
  61. package/dist/chunks/{kbd-DqWmbr_e.js → kbd-9A9rX60U.js} +2 -2
  62. package/dist/chunks/{kbd-DqWmbr_e.js.map → kbd-9A9rX60U.js.map} +1 -1
  63. package/dist/chunks/{link-YMcxM-BZ.js → link-CtII7u3h.js} +3 -3
  64. package/dist/chunks/{link-YMcxM-BZ.js.map → link-CtII7u3h.js.map} +1 -1
  65. package/dist/chunks/{list-7VARol_x.js → list-CMXBTVkI.js} +8 -8
  66. package/dist/chunks/{list-7VARol_x.js.map → list-CMXBTVkI.js.map} +1 -1
  67. package/dist/chunks/{loader-ENBh2Fbt.js → loader-DqOUwS1j.js} +2 -2
  68. package/dist/chunks/{loader-ENBh2Fbt.js.map → loader-DqOUwS1j.js.map} +1 -1
  69. package/dist/chunks/{markdown-DBVNULWg.js → markdown-CwVQ0niB.js} +9 -9
  70. package/dist/chunks/{markdown-DBVNULWg.js.map → markdown-CwVQ0niB.js.map} +1 -1
  71. package/dist/chunks/{menu-Bnfi9P3t.js → menu-Cjg4RggA.js} +4 -4
  72. package/dist/chunks/{menu-Bnfi9P3t.js.map → menu-Cjg4RggA.js.map} +1 -1
  73. package/dist/chunks/{meter-DhTnem4k.js → meter-VrC2J2GF.js} +2 -2
  74. package/dist/chunks/{meter-DhTnem4k.js.map → meter-VrC2J2GF.js.map} +1 -1
  75. package/dist/chunks/{nav-sheet-D7wIF_OU.js → nav-sheet-Y2Ite-iF.js} +2 -2
  76. package/dist/chunks/{nav-sheet-D7wIF_OU.js.map → nav-sheet-Y2Ite-iF.js.map} +1 -1
  77. package/dist/chunks/{nav-wordmark-DmbT1Aiw.js → nav-wordmark-CjWM3NYa.js} +2 -2
  78. package/dist/chunks/{nav-wordmark-DmbT1Aiw.js.map → nav-wordmark-CjWM3NYa.js.map} +1 -1
  79. package/dist/chunks/{page-header-B3tV8Wog.js → page-header-CZCQVHYE.js} +4 -4
  80. package/dist/chunks/{page-header-B3tV8Wog.js.map → page-header-CZCQVHYE.js.map} +1 -1
  81. package/dist/chunks/{pagination-CLfsofo3.js → pagination-BStrMDqM.js} +4 -4
  82. package/dist/chunks/{pagination-CLfsofo3.js.map → pagination-BStrMDqM.js.map} +1 -1
  83. package/dist/chunks/{picker-popover-B5YdOxNm.js → picker-popover-BerQAEBT.js} +7 -7
  84. package/dist/chunks/{picker-popover-B5YdOxNm.js.map → picker-popover-BerQAEBT.js.map} +1 -1
  85. package/dist/chunks/{popover-bjxg020P.js → popover-CgLt_4yG.js} +2 -2
  86. package/dist/chunks/{popover-bjxg020P.js.map → popover-CgLt_4yG.js.map} +1 -1
  87. package/dist/chunks/{radio-DwYcXAzv.js → radio-07Muf4cX.js} +2 -2
  88. package/dist/chunks/{radio-DwYcXAzv.js.map → radio-07Muf4cX.js.map} +1 -1
  89. package/dist/chunks/{range-popup-ZunS8QSH.js → range-popup-BCov1iPe.js} +6 -6
  90. package/dist/chunks/{range-popup-ZunS8QSH.js.map → range-popup-BCov1iPe.js.map} +1 -1
  91. package/dist/chunks/{release-art-Ogl-L1Vh.js → release-art-69WpgVik.js} +2 -2
  92. package/dist/chunks/{release-art-Ogl-L1Vh.js.map → release-art-69WpgVik.js.map} +1 -1
  93. package/dist/chunks/{rights-CiIBzT9o.js → rights-UVngOX_4.js} +9 -9
  94. package/dist/chunks/{rights-CiIBzT9o.js.map → rights-UVngOX_4.js.map} +1 -1
  95. package/dist/chunks/{section-BsET7Fo-.js → section-Bvg0EUnr.js} +3 -3
  96. package/dist/chunks/{section-BsET7Fo-.js.map → section-Bvg0EUnr.js.map} +1 -1
  97. package/dist/chunks/{segmented-DxjnIuww.js → segmented-DRLDN8EW.js} +4 -4
  98. package/dist/chunks/{segmented-DxjnIuww.js.map → segmented-DRLDN8EW.js.map} +1 -1
  99. package/dist/chunks/{select-Bbv2f5F8.js → select-eFTHLeYG.js} +14 -14
  100. package/dist/chunks/select-eFTHLeYG.js.map +1 -0
  101. package/dist/chunks/{separator-CpAUELNs.js → separator-D86IW7Ge.js} +2 -2
  102. package/dist/chunks/{separator-CpAUELNs.js.map → separator-D86IW7Ge.js.map} +1 -1
  103. package/dist/chunks/{sidebar-ZSTPK9Jn.js → sidebar-DifJ5KgE.js} +7 -7
  104. package/dist/chunks/{sidebar-ZSTPK9Jn.js.map → sidebar-DifJ5KgE.js.map} +1 -1
  105. package/dist/chunks/{sidebar-menu-ct8IiL4z.js → sidebar-menu-XKOiwrQp.js} +2 -2
  106. package/dist/chunks/{sidebar-menu-ct8IiL4z.js.map → sidebar-menu-XKOiwrQp.js.map} +1 -1
  107. package/dist/chunks/{skeleton-BM797MAg.js → skeleton-Cu74kGJA.js} +2 -2
  108. package/dist/chunks/{skeleton-BM797MAg.js.map → skeleton-Cu74kGJA.js.map} +1 -1
  109. package/dist/chunks/{slider-Ds-tqY-1.js → slider-Dh0qq1wa.js} +2 -2
  110. package/dist/chunks/{slider-Ds-tqY-1.js.map → slider-Dh0qq1wa.js.map} +1 -1
  111. package/dist/chunks/{status-dot-BqVOlShY.js → status-dot-u4Izk-uC.js} +3 -3
  112. package/dist/chunks/{status-dot-BqVOlShY.js.map → status-dot-u4Izk-uC.js.map} +1 -1
  113. package/dist/chunks/{swap-text-Cica0pUr.js → swap-text-CC77iKJF.js} +2 -2
  114. package/dist/chunks/{swap-text-Cica0pUr.js.map → swap-text-CC77iKJF.js.map} +1 -1
  115. package/dist/chunks/{switch-Cq1OfeBr.js → switch-CbU9m9gi.js} +5 -5
  116. package/dist/chunks/switch-CbU9m9gi.js.map +1 -0
  117. package/dist/chunks/{table-D-36EM7f.js → table-CTxDp7zC.js} +2 -2
  118. package/dist/chunks/{table-D-36EM7f.js.map → table-CTxDp7zC.js.map} +1 -1
  119. package/dist/chunks/{tag-XgPXKoxi.js → tag-CqSk8F7M.js} +4 -4
  120. package/dist/chunks/{tag-XgPXKoxi.js.map → tag-CqSk8F7M.js.map} +1 -1
  121. package/dist/chunks/{text-IoDy3Vxi.js → text-hFc6TDp9.js} +3 -3
  122. package/dist/chunks/{text-IoDy3Vxi.js.map → text-hFc6TDp9.js.map} +1 -1
  123. package/dist/chunks/{textarea-jOiTkfMf.js → textarea-17Ftvph_.js} +5 -5
  124. package/dist/chunks/{textarea-jOiTkfMf.js.map → textarea-17Ftvph_.js.map} +1 -1
  125. package/dist/chunks/{timeseries-BBWsSM4Q.js → timeseries-CbnSFD5q.js} +3 -3
  126. package/dist/chunks/{timeseries-BBWsSM4Q.js.map → timeseries-CbnSFD5q.js.map} +1 -1
  127. package/dist/chunks/{toolbar-nVLFWH2i.js → toolbar-B_960Ttx.js} +2 -2
  128. package/dist/chunks/{toolbar-nVLFWH2i.js.map → toolbar-B_960Ttx.js.map} +1 -1
  129. package/dist/chunks/{tooltip-CTBnfiDH.js → tooltip-CRApbLF6.js} +4 -4
  130. package/dist/chunks/{tooltip-CTBnfiDH.js.map → tooltip-CRApbLF6.js.map} +1 -1
  131. package/dist/chunks/{tooltip-root-B0zWodAJ.js → tooltip-root-Dssjjp-E.js} +4 -4
  132. package/dist/chunks/{tooltip-root-B0zWodAJ.js.map → tooltip-root-Dssjjp-E.js.map} +1 -1
  133. package/dist/components/app-frame.js +2 -2
  134. package/dist/components/avatar.js +1 -1
  135. package/dist/components/badge.js +1 -1
  136. package/dist/components/banner.js +1 -1
  137. package/dist/components/button-group.js +4 -4
  138. package/dist/components/button.js +1 -1
  139. package/dist/components/calendar.js +1 -1
  140. package/dist/components/charts/bar.js +2 -2
  141. package/dist/components/charts/donut.js +2 -2
  142. package/dist/components/charts/gauge.js +2 -2
  143. package/dist/components/charts/heatmap.js +1 -1
  144. package/dist/components/charts/sankey.js +2 -2
  145. package/dist/components/charts/sparkline.js +1 -1
  146. package/dist/components/charts/timeseries.js +1 -1
  147. package/dist/components/charts.js +2 -2
  148. package/dist/components/checkbox.js +1 -1
  149. package/dist/components/code-block.js +2 -2
  150. package/dist/components/code.js +1 -1
  151. package/dist/components/collapsible.js +1 -1
  152. package/dist/components/combobox.js +1 -1
  153. package/dist/components/command-list.js +2 -2
  154. package/dist/components/command-palette.js +4 -4
  155. package/dist/components/copy-button.js +1 -1
  156. package/dist/components/data-table.js +14 -14
  157. package/dist/components/data-table.js.map +1 -1
  158. package/dist/components/date-picker.js +7 -7
  159. package/dist/components/date-picker.js.map +1 -1
  160. package/dist/components/dialog.js +2 -2
  161. package/dist/components/display-options.js +8 -8
  162. package/dist/components/empty.js +1 -1
  163. package/dist/components/field.js +1 -1
  164. package/dist/components/filter-chip.js +5 -5
  165. package/dist/components/filter-row.js +1 -1
  166. package/dist/components/flow.js +2 -2
  167. package/dist/components/heading.js +1 -1
  168. package/dist/components/icon-button.js +1 -1
  169. package/dist/components/icon.js +1 -1
  170. package/dist/components/input.js +7 -7
  171. package/dist/components/kaeso/conversation.js +8 -8
  172. package/dist/components/kaeso/identity.js +1 -1
  173. package/dist/components/kaeso/moments.js +5 -5
  174. package/dist/components/kaeso/rights.js +1 -1
  175. package/dist/components/kaeso/usage.js +5 -5
  176. package/dist/components/kaeso.js +10 -10
  177. package/dist/components/kbd.js +1 -1
  178. package/dist/components/key-value.js +3 -3
  179. package/dist/components/label.js +1 -1
  180. package/dist/components/layout.js +1 -1
  181. package/dist/components/link.js +1 -1
  182. package/dist/components/list.js +1 -1
  183. package/dist/components/loader.js +2 -2
  184. package/dist/components/logo.js +2 -2
  185. package/dist/components/markdown.js +1 -1
  186. package/dist/components/menu.js +1 -1
  187. package/dist/components/meter.js +1 -1
  188. package/dist/components/page-header.js +1 -1
  189. package/dist/components/pagination.js +1 -1
  190. package/dist/components/playground.js +16 -16
  191. package/dist/components/popover.js +2 -2
  192. package/dist/components/qr-code.js +2 -2
  193. package/dist/components/qr-code.js.map +1 -1
  194. package/dist/components/radio.js +1 -1
  195. package/dist/components/release-art.js +1 -1
  196. package/dist/components/scroll-area.js +1 -1
  197. package/dist/components/section.js +1 -1
  198. package/dist/components/segmented.js +1 -1
  199. package/dist/components/select.js +1 -1
  200. package/dist/components/separator.js +1 -1
  201. package/dist/components/settings.js +5 -4
  202. package/dist/components/settings.js.map +1 -1
  203. package/dist/components/sheet.js +4 -4
  204. package/dist/components/sheet.js.map +1 -1
  205. package/dist/components/sidebar.js +1 -1
  206. package/dist/components/skeleton.js +1 -1
  207. package/dist/components/slider.js +1 -1
  208. package/dist/components/stat.js +3 -3
  209. package/dist/components/status-dot.js +1 -1
  210. package/dist/components/surface.js +1 -1
  211. package/dist/components/swap-text.js +1 -1
  212. package/dist/components/switch.js +1 -1
  213. package/dist/components/table.js +1 -1
  214. package/dist/components/tabs.js +2 -2
  215. package/dist/components/tag.js +1 -1
  216. package/dist/components/text.js +1 -1
  217. package/dist/components/theme-image.js +1 -1
  218. package/dist/components/theme-menu.js +2 -2
  219. package/dist/components/theme-select.js +1 -1
  220. package/dist/components/timeline.js +1 -1
  221. package/dist/components/toast.js +4 -4
  222. package/dist/components/toc.js +1 -1
  223. package/dist/components/toolbar.js +1 -1
  224. package/dist/components/tooltip.js +1 -1
  225. package/dist/components/visually-hidden.js +1 -1
  226. package/dist/index.js +55 -55
  227. package/dist/kaeso.css +45 -0
  228. package/dist/styles.css +1 -1
  229. package/dist/types/blocks/delete-resource/delete-resource.d.ts +1 -1
  230. package/dist/types/blocks/pages/pages.d.ts +3 -3
  231. package/dist/types/blocks/resource-list/resource-list.d.ts +1 -1
  232. package/dist/types/components/app-frame/app-frame.d.ts +1 -1
  233. package/dist/types/components/app-frame/nav-sheet.d.ts +1 -1
  234. package/dist/types/components/button/button.d.ts +6 -6
  235. package/dist/types/components/calendar/calendar.d.ts +1 -1
  236. package/dist/types/components/charts/core.d.ts +5 -5
  237. package/dist/types/components/combobox/combobox.d.ts +1 -1
  238. package/dist/types/components/command-list/picker-popover.d.ts +1 -1
  239. package/dist/types/components/command-palette/command-palette.d.ts +1 -1
  240. package/dist/types/components/data-table/data-table.d.ts +1 -1
  241. package/dist/types/components/date-picker/date-popup.d.ts +1 -1
  242. package/dist/types/components/date-picker/iso-field.d.ts +1 -1
  243. package/dist/types/components/date-picker/range-popup.d.ts +1 -1
  244. package/dist/types/components/dialog/dialog.d.ts +3 -3
  245. package/dist/types/components/dialog/scope.d.ts +1 -1
  246. package/dist/types/components/dialog/step-dialog.d.ts +1 -1
  247. package/dist/types/components/display-options/display-options.d.ts +1 -1
  248. package/dist/types/components/field/field.d.ts +1 -1
  249. package/dist/types/components/list/list.d.ts +1 -1
  250. package/dist/types/components/list/row-checkbox.d.ts +1 -1
  251. package/dist/types/components/list/virtual-rows.d.ts +1 -1
  252. package/dist/types/components/menu/menu.d.ts +8 -8
  253. package/dist/types/components/playground/model-picker.d.ts +3 -3
  254. package/dist/types/components/playground/parameter-panel.d.ts +1 -1
  255. package/dist/types/components/popover/hover-card.d.ts +2 -2
  256. package/dist/types/components/popover/popover-root.d.ts +3 -3
  257. package/dist/types/components/radio/radio.d.ts +1 -1
  258. package/dist/types/components/select/option-checkbox.d.ts +1 -1
  259. package/dist/types/components/select/select.d.ts +4 -4
  260. package/dist/types/components/sheet/sheet.d.ts +4 -4
  261. package/dist/types/components/sidebar/sidebar-menu.d.ts +1 -1
  262. package/dist/types/components/sidebar/sidebar.d.ts +7 -7
  263. package/dist/types/components/theme-menu/theme-menu.d.ts +1 -1
  264. package/dist/types/components/toast/toast.d.ts +3 -3
  265. package/dist/types/components/toolbar/toolbar.d.ts +1 -1
  266. package/dist/types/components/tooltip/tooltip-provider.d.ts +1 -1
  267. package/dist/types/components/tooltip/tooltip-root.d.ts +1 -1
  268. package/dist/types/components/tooltip/tooltip.d.ts +2 -2
  269. package/dist/types/hooks/use-scroll-fade.d.ts +2 -0
  270. package/dist/types/i18n/provider.d.ts +1 -1
  271. package/dist/types/theme/theme-provider.d.ts +1 -1
  272. package/dist/types/utils/cn.d.ts +3 -0
  273. package/dist/types/utils/inset.d.ts +2 -2
  274. package/dist/types/utils/link-provider.d.ts +1 -1
  275. package/dist/types/utils/portal-context.d.ts +1 -1
  276. package/dist/utils.js +1 -1
  277. package/foundations/color.md +1 -0
  278. package/package.json +8 -8
  279. package/dist/chunks/button-h2IFCER2.js.map +0 -1
  280. package/dist/chunks/cn-DUDmdLpZ.js.map +0 -1
  281. package/dist/chunks/code-block-BU8gYeZQ.js +0 -280
  282. package/dist/chunks/code-block-BU8gYeZQ.js.map +0 -1
  283. package/dist/chunks/collapsible-CDQq1Y9x.js.map +0 -1
  284. package/dist/chunks/command-list-DZMVrXWD.js.map +0 -1
  285. package/dist/chunks/copy-button-CXJ7fA9z.js +0 -109
  286. package/dist/chunks/copy-button-CXJ7fA9z.js.map +0 -1
  287. package/dist/chunks/core-Bu6iq5uh.js.map +0 -1
  288. package/dist/chunks/select-Bbv2f5F8.js.map +0 -1
  289. package/dist/chunks/switch-Cq1OfeBr.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"field-BZriODU7.js","names":["cn","useUiText","KAESO_FIELD_VARIANTS","KAESO_FIELD_DEFAULT_VARIANTS","FieldContext","useField","useContext","Field","invalidProp","props","auto","useId","t","controlId","id","labelId","label","descriptionId","description","errorId","error","invalid","describedBy","value","required","layout","className","disabled","optional","children","Fieldset","legend","useFieldControl","field","withField","control"],"sources":["../../src/components/field/field.tsx"],"sourcesContent":["import { createContext, forwardRef, useContext, useId, type FieldsetHTMLAttributes, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_FIELD_VARIANTS = {\n layout: {\n vertical: { classes: \"flex flex-col gap-8\" },\n horizontal: {\n classes: \"grid grid-cols-1 gap-8 md:grid-cols-label md:gap-x-24\",\n },\n },\n} as const;\nexport const KAESO_FIELD_DEFAULT_VARIANTS = { layout: \"vertical\" } as const;\n\nexport interface FieldContextValue {\n controlId: string;\n labelId: string | undefined;\n descriptionId: string | undefined;\n errorId: string | undefined;\n invalid: boolean;\n disabled: boolean;\n required: boolean;\n controlProps: { id: string; \"aria-describedby\"?: string | undefined; \"aria-invalid\"?: true | undefined; \"aria-required\"?: true | undefined };\n}\n\nconst FieldContext = /* @__PURE__ */ createContext<FieldContextValue | null>(null);\nexport const useField = () => useContext(FieldContext);\n\nexport interface FieldProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n label?: ReactNode | undefined;\n description?: ReactNode | undefined;\n invalid?: boolean | undefined;\n error?: ReactNode | undefined;\n optional?: boolean | undefined;\n required?: boolean | undefined;\n disabled?: boolean | undefined;\n layout?: keyof typeof KAESO_FIELD_VARIANTS.layout | undefined;\n id?: string | undefined;\n children: ReactNode;\n}\n\nexport const Field = /* @__PURE__ */ forwardRef<HTMLDivElement, FieldProps>(function Field(\n { label, description, invalid: invalidProp, error, optional, required = false, disabled = false, layout = \"vertical\", id, className, children, ...props },\n ref,\n) {\n const auto = useId();\n const t = useUiText();\n const controlId = id ?? `k-field-${auto}`;\n const labelId = label ? `${controlId}-label` : undefined;\n const descriptionId = description ? `${controlId}-description` : undefined;\n const errorId = error ? `${controlId}-error` : undefined;\n const invalid = !!invalidProp || !!error;\n const describedBy = [descriptionId, errorId].filter(Boolean).join(\" \") || undefined;\n const value: FieldContextValue = {\n controlId,\n labelId,\n descriptionId,\n errorId,\n invalid,\n disabled,\n required,\n controlProps: {\n id: controlId,\n ...(describedBy ? { \"aria-describedby\": describedBy } : {}),\n ...(invalid ? { \"aria-invalid\": true as const } : {}),\n ...(required ? { \"aria-required\": true as const } : {}),\n },\n };\n return (\n <FieldContext.Provider value={value}>\n <div ref={ref} className={cn(KAESO_FIELD_VARIANTS.layout[layout].classes, className)} data-disabled={disabled || undefined} {...props}>\n {label && (\n <label\n id={labelId}\n htmlFor={controlId}\n className={cn(\"flex items-baseline gap-6 text-body font-medium text-fg\", layout === \"horizontal\" && \"md:pt-8\", disabled && \"text-fg-disabled\")}\n >\n {label}\n {optional && <span className=\"text-small font-regular text-fg-tertiary\">{t(\"field.optional\", \"Optional\")}</span>}\n </label>\n )}\n <div className=\"flex min-w-0 flex-col gap-6\">\n {children}\n {description && (\n <p id={descriptionId} className=\"text-small text-fg-secondary\">\n {description}\n </p>\n )}\n {error && (\n <p id={errorId} className=\"text-small text-danger-text\">\n {error}\n </p>\n )}\n </div>\n </div>\n </FieldContext.Provider>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Field.displayName = \"Field\";\n\nexport interface FieldsetProps extends FieldsetHTMLAttributes<HTMLFieldSetElement> {\n legend: ReactNode;\n description?: ReactNode | undefined;\n}\n\nexport const Fieldset = /* @__PURE__ */ forwardRef<HTMLFieldSetElement, FieldsetProps>(function Fieldset({ legend, description, className, children, ...props }, ref) {\n return (\n <fieldset ref={ref} className={cn(\"flex min-w-0 flex-col gap-16\", className)} {...props}>\n <div className=\"flex flex-col gap-4\">\n <legend className=\"text-body-lg font-semibold text-fg\">{legend}</legend>\n {description && <p className=\"text-small text-fg-secondary\">{description}</p>}\n </div>\n {children}\n </fieldset>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Fieldset.displayName = \"Fieldset\";\n\nexport function useFieldControl(props: {\n label?: ReactNode | undefined;\n description?: ReactNode | undefined;\n error?: ReactNode | undefined;\n invalid?: boolean | undefined;\n required?: boolean | undefined;\n id?: string | undefined;\n}) {\n const field = useField();\n const auto = useId();\n if (field) return { controlProps: field.controlProps as Record<string, unknown>, wrapId: undefined };\n const wraps = props.label !== undefined || props.description !== undefined || props.error !== undefined;\n if (!wraps) return { controlProps: (props.invalid ? { \"aria-invalid\": true } : {}) as Record<string, unknown>, wrapId: undefined };\n const controlId = props.id ?? `k-field-${auto}`;\n const describedBy = [props.description ? `${controlId}-description` : \"\", props.error ? `${controlId}-error` : \"\"].filter(Boolean).join(\" \");\n return {\n controlProps: {\n id: controlId,\n ...(describedBy ? { \"aria-describedby\": describedBy } : {}),\n ...(props.error || props.invalid ? { \"aria-invalid\": true } : {}),\n ...(props.required ? { \"aria-required\": true } : {}),\n } as Record<string, unknown>,\n wrapId: controlId,\n };\n}\n\nexport interface FieldWrapProps {\n label?: ReactNode | undefined;\n description?: ReactNode | undefined;\n error?: ReactNode | undefined;\n optional?: boolean | undefined;\n required?: boolean | undefined;\n layout?: keyof typeof KAESO_FIELD_VARIANTS.layout | undefined;\n}\n\nexport function withField(\n props: FieldWrapProps & { id?: string | undefined; disabled?: boolean | undefined; invalid?: boolean | undefined; className?: string | undefined },\n control: ReactNode,\n) {\n const { label, description, error, optional, required, layout } = props;\n if (label === undefined && description === undefined && error === undefined) return control;\n return (\n <Field\n label={label}\n description={description}\n error={error}\n invalid={props.invalid}\n optional={optional}\n required={required}\n layout={layout}\n id={props.id}\n disabled={props.disabled}\n className={props.className}\n >\n {control}\n </Field>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"field-DfITT6Jm.js","names":["cn","useUiText","KAESO_FIELD_VARIANTS","KAESO_FIELD_DEFAULT_VARIANTS","FieldContext","useField","useContext","Field","invalidProp","props","auto","useId","t","controlId","id","labelId","label","descriptionId","description","errorId","error","invalid","describedBy","value","required","layout","className","disabled","optional","children","Fieldset","legend","useFieldControl","field","withField","control"],"sources":["../../src/components/field/field.tsx"],"sourcesContent":["import { createContext, forwardRef, useContext, useId, type FieldsetHTMLAttributes, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_FIELD_VARIANTS = {\n layout: {\n vertical: { classes: \"flex flex-col gap-8\" },\n horizontal: {\n classes: \"grid grid-cols-1 gap-8 md:grid-cols-label md:gap-x-24\",\n },\n },\n} as const;\nexport const KAESO_FIELD_DEFAULT_VARIANTS = { layout: \"vertical\" } as const;\n\nexport interface FieldContextValue {\n controlId: string;\n labelId: string | undefined;\n descriptionId: string | undefined;\n errorId: string | undefined;\n invalid: boolean;\n disabled: boolean;\n required: boolean;\n controlProps: { id: string; \"aria-describedby\"?: string | undefined; \"aria-invalid\"?: true | undefined; \"aria-required\"?: true | undefined };\n}\n\nconst FieldContext = /* @__PURE__ */ createContext<FieldContextValue | null>(null);\nexport const useField = () => useContext(FieldContext);\n\nexport interface FieldProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n label?: ReactNode | undefined;\n description?: ReactNode | undefined;\n invalid?: boolean | undefined;\n error?: ReactNode | undefined;\n optional?: boolean | undefined;\n required?: boolean | undefined;\n disabled?: boolean | undefined;\n layout?: keyof typeof KAESO_FIELD_VARIANTS.layout | undefined;\n id?: string | undefined;\n children: ReactNode;\n}\n\nexport const Field = /* @__PURE__ */ forwardRef<HTMLDivElement, FieldProps>(function Field(\n { label, description, invalid: invalidProp, error, optional, required = false, disabled = false, layout = \"vertical\", id, className, children, ...props },\n ref,\n) {\n const auto = useId();\n const t = useUiText();\n const controlId = id ?? `k-field-${auto}`;\n const labelId = label ? `${controlId}-label` : undefined;\n const descriptionId = description ? `${controlId}-description` : undefined;\n const errorId = error ? `${controlId}-error` : undefined;\n const invalid = !!invalidProp || !!error;\n const describedBy = [descriptionId, errorId].filter(Boolean).join(\" \") || undefined;\n const value: FieldContextValue = {\n controlId,\n labelId,\n descriptionId,\n errorId,\n invalid,\n disabled,\n required,\n controlProps: {\n id: controlId,\n ...(describedBy ? { \"aria-describedby\": describedBy } : {}),\n ...(invalid ? { \"aria-invalid\": true as const } : {}),\n ...(required ? { \"aria-required\": true as const } : {}),\n },\n };\n return (\n <FieldContext.Provider value={value}>\n <div ref={ref} className={cn(KAESO_FIELD_VARIANTS.layout[layout].classes, className)} data-disabled={disabled || undefined} {...props}>\n {label && (\n <label\n id={labelId}\n htmlFor={controlId}\n className={cn(\"flex items-baseline gap-6 text-body font-medium text-fg\", layout === \"horizontal\" && \"md:pt-8\", disabled && \"text-fg-disabled\")}\n >\n {label}\n {optional && <span className=\"text-small font-regular text-fg-tertiary\">{t(\"field.optional\", \"Optional\")}</span>}\n </label>\n )}\n <div className=\"flex min-w-0 flex-col gap-6\">\n {children}\n {description && (\n <p id={descriptionId} className=\"text-small text-fg-secondary\">\n {description}\n </p>\n )}\n {error && (\n <p id={errorId} className=\"text-small text-danger-text\">\n {error}\n </p>\n )}\n </div>\n </div>\n </FieldContext.Provider>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Field.displayName = \"Field\";\n\nexport interface FieldsetProps extends FieldsetHTMLAttributes<HTMLFieldSetElement> {\n legend: ReactNode;\n description?: ReactNode | undefined;\n}\n\nexport const Fieldset = /* @__PURE__ */ forwardRef<HTMLFieldSetElement, FieldsetProps>(function Fieldset({ legend, description, className, children, ...props }, ref) {\n return (\n <fieldset ref={ref} className={cn(\"flex min-w-0 flex-col gap-16\", className)} {...props}>\n <div className=\"flex flex-col gap-4\">\n <legend className=\"text-body-lg font-semibold text-fg\">{legend}</legend>\n {description && <p className=\"text-small text-fg-secondary\">{description}</p>}\n </div>\n {children}\n </fieldset>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Fieldset.displayName = \"Fieldset\";\n\nexport function useFieldControl(props: {\n label?: ReactNode | undefined;\n description?: ReactNode | undefined;\n error?: ReactNode | undefined;\n invalid?: boolean | undefined;\n required?: boolean | undefined;\n id?: string | undefined;\n}) {\n const field = useField();\n const auto = useId();\n if (field) return { controlProps: field.controlProps as Record<string, unknown>, wrapId: undefined };\n const wraps = props.label !== undefined || props.description !== undefined || props.error !== undefined;\n if (!wraps) return { controlProps: (props.invalid ? { \"aria-invalid\": true } : {}) as Record<string, unknown>, wrapId: undefined };\n const controlId = props.id ?? `k-field-${auto}`;\n const describedBy = [props.description ? `${controlId}-description` : \"\", props.error ? `${controlId}-error` : \"\"].filter(Boolean).join(\" \");\n return {\n controlProps: {\n id: controlId,\n ...(describedBy ? { \"aria-describedby\": describedBy } : {}),\n ...(props.error || props.invalid ? { \"aria-invalid\": true } : {}),\n ...(props.required ? { \"aria-required\": true } : {}),\n } as Record<string, unknown>,\n wrapId: controlId,\n };\n}\n\nexport interface FieldWrapProps {\n label?: ReactNode | undefined;\n description?: ReactNode | undefined;\n error?: ReactNode | undefined;\n optional?: boolean | undefined;\n required?: boolean | undefined;\n layout?: keyof typeof KAESO_FIELD_VARIANTS.layout | undefined;\n}\n\nexport function withField(\n props: FieldWrapProps & { id?: string | undefined; disabled?: boolean | undefined; invalid?: boolean | undefined; className?: string | undefined },\n control: ReactNode,\n) {\n const { label, description, error, optional, required, layout } = props;\n if (label === undefined && description === undefined && error === undefined) return control;\n return (\n <Field\n label={label}\n description={description}\n error={error}\n invalid={props.invalid}\n optional={optional}\n required={required}\n layout={layout}\n id={props.id}\n disabled={props.disabled}\n className={props.className}\n >\n {control}\n </Field>\n );\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { t as e } from "./cn-DUDmdLpZ.js";
2
+ import { t as e } from "./cn-Isw2DnQX.js";
3
3
  import { forwardRef as t } from "react";
4
4
  import { jsx as n } from "react/jsx-runtime";
5
5
  import { HugeiconsIcon as r } from "@hugeicons/react";
@@ -44,4 +44,4 @@ process.env.NODE_ENV !== "production" && (c.displayName = "Icon");
44
44
  //#endregion
45
45
  export { a as n, i as r, c as t };
46
46
 
47
- //# sourceMappingURL=icon-BqujXDUc.js.map
47
+ //# sourceMappingURL=icon-D5uD_mnL.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"icon-BqujXDUc.js","names":["cn","KAESO_ICON_VARIANTS","KAESO_ICON_DEFAULT_VARIANTS","PX","STROKE","Icon","props","HugeiconsIcon","size","className","label"],"sources":["../../src/components/icon/icon.tsx"],"sourcesContent":["import { forwardRef, type SVGAttributes } from \"react\";\nimport { HugeiconsIcon, type IconSvgElement } from \"@hugeicons/react\";\nimport { cn } from \"../../utils/cn.js\";\n\nexport type IconData = IconSvgElement;\n\nexport const KAESO_ICON_VARIANTS = {\n size: {\n xs: { classes: \"size-14\" },\n sm: { classes: \"size-16\" },\n md: { classes: \"size-18\" },\n lg: { classes: \"size-20\" },\n xl: { classes: \"size-24\" },\n },\n} as const;\nexport const KAESO_ICON_DEFAULT_VARIANTS = { size: \"sm\" } as const;\nexport type IconSize = keyof typeof KAESO_ICON_VARIANTS.size;\n\nconst PX: Record<IconSize, number> = { xs: 14, sm: 16, md: 18, lg: 20, xl: 24 };\nconst STROKE: Record<IconSize, number> = { xs: 1.75, sm: 1.5, md: 1.5, lg: 1.5, xl: 1.5 };\n\nexport interface IconProps extends Omit<SVGAttributes<SVGSVGElement>, \"children\" | \"strokeWidth\" | \"color\"> {\n icon: IconData;\n size?: IconSize | undefined;\n label?: string | undefined;\n}\n\nexport const Icon = /* @__PURE__ */ forwardRef<SVGSVGElement, IconProps>(function Icon({ icon, size = KAESO_ICON_DEFAULT_VARIANTS.size, label, className, ...props }, ref) {\n return (\n <HugeiconsIcon\n ref={ref}\n icon={icon}\n size={PX[size]}\n strokeWidth={STROKE[size]}\n color=\"currentColor\"\n className={cn(\"shrink-0\", KAESO_ICON_VARIANTS.size[size].classes, className)}\n {...(label ? { role: \"img\", \"aria-label\": label } : { \"aria-hidden\": true, focusable: false })}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Icon.displayName = \"Icon\";\n"],"mappings":";;;;;;AAMA,IAAaC,IAAsB,EACjC,MAAM;CACJ,IAAI,EAAE,SAAS,UAAU;CACzB,IAAI,EAAE,SAAS,UAAU;CACzB,IAAI,EAAE,SAAS,UAAU;CACzB,IAAI,EAAE,SAAS,UAAU;CACzB,IAAI,EAAE,SAAS,UAAU;AAC3B,EACF,GACaC,IAA8B,EAAE,MAAM,KAAK,GAGlDC,IAA+B;CAAE,IAAI;CAAI,IAAI;CAAI,IAAI;CAAI,IAAI;CAAI,IAAI;AAAG,GACxEC,IAAmC;CAAE,IAAI;CAAM,IAAI;CAAK,IAAI;CAAK,IAAI;CAAK,IAAI;AAAI,GAQ3EC,IAAuB,kBAAqC,SAAc,EAAE,SAAM,UAAOH,EAA4B,MAAM,UAAO,cAAW,GAAGI,KAAS,GAAK;CACzK,OACE,kBAACC,GAAD;EACO;EACC;EACN,MAAMJ,EAAGK;EACT,aAAaJ,EAAOI;EACpB,OAAM;EACN,WAAWR,EAAG,YAAYC,EAAoB,KAAKO,EAAK,CAAC,SAASC,CAAS;EAC3E,GAAKC,IAAQ;GAAE,MAAM;GAAO,cAAcA;EAAM,IAAI;GAAE,eAAe;GAAM,WAAW;EAAM;EAC5F,GAAIJ;CACL,CAAA;AAEL,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAK,cAAc"}
1
+ {"version":3,"file":"icon-D5uD_mnL.js","names":["cn","KAESO_ICON_VARIANTS","KAESO_ICON_DEFAULT_VARIANTS","PX","STROKE","Icon","props","HugeiconsIcon","size","className","label"],"sources":["../../src/components/icon/icon.tsx"],"sourcesContent":["import { forwardRef, type SVGAttributes } from \"react\";\nimport { HugeiconsIcon, type IconSvgElement } from \"@hugeicons/react\";\nimport { cn } from \"../../utils/cn.js\";\n\nexport type IconData = IconSvgElement;\n\nexport const KAESO_ICON_VARIANTS = {\n size: {\n xs: { classes: \"size-14\" },\n sm: { classes: \"size-16\" },\n md: { classes: \"size-18\" },\n lg: { classes: \"size-20\" },\n xl: { classes: \"size-24\" },\n },\n} as const;\nexport const KAESO_ICON_DEFAULT_VARIANTS = { size: \"sm\" } as const;\nexport type IconSize = keyof typeof KAESO_ICON_VARIANTS.size;\n\nconst PX: Record<IconSize, number> = { xs: 14, sm: 16, md: 18, lg: 20, xl: 24 };\nconst STROKE: Record<IconSize, number> = { xs: 1.75, sm: 1.5, md: 1.5, lg: 1.5, xl: 1.5 };\n\nexport interface IconProps extends Omit<SVGAttributes<SVGSVGElement>, \"children\" | \"strokeWidth\" | \"color\"> {\n icon: IconData;\n size?: IconSize | undefined;\n label?: string | undefined;\n}\n\nexport const Icon = /* @__PURE__ */ forwardRef<SVGSVGElement, IconProps>(function Icon({ icon, size = KAESO_ICON_DEFAULT_VARIANTS.size, label, className, ...props }, ref) {\n return (\n <HugeiconsIcon\n ref={ref}\n icon={icon}\n size={PX[size]}\n strokeWidth={STROKE[size]}\n color=\"currentColor\"\n className={cn(\"shrink-0\", KAESO_ICON_VARIANTS.size[size].classes, className)}\n {...(label ? { role: \"img\", \"aria-label\": label } : { \"aria-hidden\": true, focusable: false })}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Icon.displayName = \"Icon\";\n"],"mappings":";;;;;;AAMA,IAAaC,IAAsB,EACjC,MAAM;CACJ,IAAI,EAAE,SAAS,UAAU;CACzB,IAAI,EAAE,SAAS,UAAU;CACzB,IAAI,EAAE,SAAS,UAAU;CACzB,IAAI,EAAE,SAAS,UAAU;CACzB,IAAI,EAAE,SAAS,UAAU;AAC3B,EACF,GACaC,IAA8B,EAAE,MAAM,KAAK,GAGlDC,IAA+B;CAAE,IAAI;CAAI,IAAI;CAAI,IAAI;CAAI,IAAI;CAAI,IAAI;AAAG,GACxEC,IAAmC;CAAE,IAAI;CAAM,IAAI;CAAK,IAAI;CAAK,IAAI;CAAK,IAAI;AAAI,GAQ3EC,IAAuB,kBAAqC,SAAc,EAAE,SAAM,UAAOH,EAA4B,MAAM,UAAO,cAAW,GAAGI,KAAS,GAAK;CACzK,OACE,kBAACC,GAAD;EACO;EACC;EACN,MAAMJ,EAAGK;EACT,aAAaJ,EAAOI;EACpB,OAAM;EACN,WAAWR,EAAG,YAAYC,EAAoB,KAAKO,EAAK,CAAC,SAASC,CAAS;EAC3E,GAAKC,IAAQ;GAAE,MAAM;GAAO,cAAcA;EAAM,IAAI;GAAE,eAAe;GAAM,WAAW;EAAM;EAC5F,GAAIJ;CACL,CAAA;AAEL,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAK,cAAc"}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { r as e } from "./tooltip-CTBnfiDH.js";
3
- import { n as t } from "./button-h2IFCER2.js";
2
+ import { r as e } from "./tooltip-CRApbLF6.js";
3
+ import { n as t } from "./button-9q66Ta23.js";
4
4
  import { forwardRef as n } from "react";
5
5
  import { jsx as r } from "react/jsx-runtime";
6
6
  //#region src/components/icon-button/icon-button.tsx
@@ -47,4 +47,4 @@ process.env.NODE_ENV !== "production" && (o.displayName = "IconButton");
47
47
  //#endregion
48
48
  export { a as n, i as r, o as t };
49
49
 
50
- //# sourceMappingURL=icon-button-DmKFxQbP.js.map
50
+ //# sourceMappingURL=icon-button-C7Du4pvb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"icon-button-DmKFxQbP.js","names":["Tooltip","Button","KAESO_ICON_BUTTON_VARIANTS","KAESO_ICON_BUTTON_DEFAULT_VARIANTS","IconButton","label","props","btn","disabled","disabledReason","tooltip","tooltipSide","shortcut"],"sources":["../../src/components/icon-button/icon-button.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { Button, type ButtonSize, type ButtonVariant } from \"../button/button.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport type { IconData } from \"../icon/icon.js\";\n\nexport const KAESO_ICON_BUTTON_VARIANTS = {\n variant: {\n ghost: { classes: \"material-ghost\" },\n quiet: { classes: \"material-ghost text-fg-secondary hover:text-fg\" },\n secondary: { classes: \"material-secondary\" },\n soft: { classes: \"material-soft\" },\n primary: { classes: \"material-primary\" },\n danger: { classes: \"material-danger\" },\n \"danger-secondary\": { classes: \"material-danger-secondary\" },\n },\n size: {\n xs: { classes: \"size-24\" },\n sm: { classes: \"size-32\" },\n md: { classes: \"size-36\" },\n lg: { classes: \"size-40\" },\n xl: { classes: \"size-48\" },\n },\n} as const;\nexport const KAESO_ICON_BUTTON_DEFAULT_VARIANTS = { variant: \"ghost\", size: \"sm\" } as const;\n\nexport interface IconButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n icon: IconData;\n \"aria-label\": string;\n variant?: Exclude<ButtonVariant, \"link\"> | undefined;\n size?: ButtonSize | undefined;\n shortcut?: string[] | string[][] | undefined;\n tooltip?: boolean | undefined;\n tooltipSide?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined;\n loading?: boolean | undefined;\n disabledReason?: string | undefined;\n href?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport const IconButton = /* @__PURE__ */ forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n { icon, variant = \"ghost\", size = \"sm\", shortcut, tooltip = true, tooltipSide = \"top\", \"aria-label\": label, disabledReason, disabled, ...props },\n ref,\n) {\n const btn = (\n <Button\n ref={ref as React.Ref<HTMLButtonElement & HTMLAnchorElement>}\n shape=\"circle\"\n icon={icon}\n aria-label={label}\n variant={variant}\n size={size}\n {...(disabled !== undefined ? { disabled } : {})}\n {...(disabledReason !== undefined ? { disabledReason } : {})}\n {...props}\n />\n );\n if (!tooltip || disabled) return btn;\n return (\n <Tooltip content={label} side={tooltipSide} {...(shortcut ? { shortcut } : {})}>\n {btn}\n </Tooltip>\n );\n});\nif (process.env.NODE_ENV !== \"production\") IconButton.displayName = \"IconButton\";\n"],"mappings":";;;;;;AAMA,IAAaE,IAA6B;CACxC,SAAS;EACP,OAAO,EAAE,SAAS,iBAAiB;EACnC,OAAO,EAAE,SAAS,iDAAiD;EACnE,WAAW,EAAE,SAAS,qBAAqB;EAC3C,MAAM,EAAE,SAAS,gBAAgB;EACjC,SAAS,EAAE,SAAS,mBAAmB;EACvC,QAAQ,EAAE,SAAS,kBAAkB;EACrC,oBAAoB,EAAE,SAAS,4BAA4B;CAC7D;CACA,MAAM;EACJ,IAAI,EAAE,SAAS,UAAU;EACzB,IAAI,EAAE,SAAS,UAAU;EACzB,IAAI,EAAE,SAAS,UAAU;EACzB,IAAI,EAAE,SAAS,UAAU;EACzB,IAAI,EAAE,SAAS,UAAU;CAC3B;AACF,GACaC,IAAqC;CAAE,SAAS;CAAS,MAAM;AAAK,GAgBpEC,IAA6B,kBAA+C,SACvF,EAAE,SAAM,aAAU,SAAS,UAAO,MAAM,aAAU,aAAU,IAAM,iBAAc,OAAO,cAAcC,GAAO,mBAAgB,aAAU,GAAGC,KACzI,GACA;CACA,IAAMC,IACJ,kBAACN,GAAD;EACO;EACL,OAAM;EACA;EACN,cAAYI;EACH;EACH;EACN,GAAKG,MAAa,KAAA,IAA2B,CAAC,IAAhB,EAAE,YAAS;EACzC,GAAKC,MAAmB,KAAA,IAAiC,CAAC,IAAtB,EAAE,kBAAe;EACrD,GAAIH;CACL,CAAA;CAGH,OADI,CAACI,KAAWF,IAAiBD,IAE/B,kBAACP,GAAD;EAAS,SAASK;EAAO,MAAMM;EAAa,GAAKC,IAAW,EAAE,YAAS,IAAI,CAAC;EACzE,UAAAL;CACM,CAAA;AAEb,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAW,cAAc"}
1
+ {"version":3,"file":"icon-button-C7Du4pvb.js","names":["Tooltip","Button","KAESO_ICON_BUTTON_VARIANTS","KAESO_ICON_BUTTON_DEFAULT_VARIANTS","IconButton","label","props","btn","disabled","disabledReason","tooltip","tooltipSide","shortcut"],"sources":["../../src/components/icon-button/icon-button.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { Button, type ButtonSize, type ButtonVariant } from \"../button/button.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport type { IconData } from \"../icon/icon.js\";\n\nexport const KAESO_ICON_BUTTON_VARIANTS = {\n variant: {\n ghost: { classes: \"material-ghost\" },\n quiet: { classes: \"material-ghost text-fg-secondary hover:text-fg\" },\n secondary: { classes: \"material-secondary\" },\n soft: { classes: \"material-soft\" },\n primary: { classes: \"material-primary\" },\n danger: { classes: \"material-danger\" },\n \"danger-secondary\": { classes: \"material-danger-secondary\" },\n },\n size: {\n xs: { classes: \"size-24\" },\n sm: { classes: \"size-32\" },\n md: { classes: \"size-36\" },\n lg: { classes: \"size-40\" },\n xl: { classes: \"size-48\" },\n },\n} as const;\nexport const KAESO_ICON_BUTTON_DEFAULT_VARIANTS = { variant: \"ghost\", size: \"sm\" } as const;\n\nexport interface IconButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n icon: IconData;\n \"aria-label\": string;\n variant?: Exclude<ButtonVariant, \"link\"> | undefined;\n size?: ButtonSize | undefined;\n shortcut?: string[] | string[][] | undefined;\n tooltip?: boolean | undefined;\n tooltipSide?: \"top\" | \"bottom\" | \"left\" | \"right\" | undefined;\n loading?: boolean | undefined;\n disabledReason?: string | undefined;\n href?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport const IconButton = /* @__PURE__ */ forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n { icon, variant = \"ghost\", size = \"sm\", shortcut, tooltip = true, tooltipSide = \"top\", \"aria-label\": label, disabledReason, disabled, ...props },\n ref,\n) {\n const btn = (\n <Button\n ref={ref as React.Ref<HTMLButtonElement & HTMLAnchorElement>}\n shape=\"circle\"\n icon={icon}\n aria-label={label}\n variant={variant}\n size={size}\n {...(disabled !== undefined ? { disabled } : {})}\n {...(disabledReason !== undefined ? { disabledReason } : {})}\n {...props}\n />\n );\n if (!tooltip || disabled) return btn;\n return (\n <Tooltip content={label} side={tooltipSide} {...(shortcut ? { shortcut } : {})}>\n {btn}\n </Tooltip>\n );\n});\nif (process.env.NODE_ENV !== \"production\") IconButton.displayName = \"IconButton\";\n"],"mappings":";;;;;;AAMA,IAAaE,IAA6B;CACxC,SAAS;EACP,OAAO,EAAE,SAAS,iBAAiB;EACnC,OAAO,EAAE,SAAS,iDAAiD;EACnE,WAAW,EAAE,SAAS,qBAAqB;EAC3C,MAAM,EAAE,SAAS,gBAAgB;EACjC,SAAS,EAAE,SAAS,mBAAmB;EACvC,QAAQ,EAAE,SAAS,kBAAkB;EACrC,oBAAoB,EAAE,SAAS,4BAA4B;CAC7D;CACA,MAAM;EACJ,IAAI,EAAE,SAAS,UAAU;EACzB,IAAI,EAAE,SAAS,UAAU;EACzB,IAAI,EAAE,SAAS,UAAU;EACzB,IAAI,EAAE,SAAS,UAAU;EACzB,IAAI,EAAE,SAAS,UAAU;CAC3B;AACF,GACaC,IAAqC;CAAE,SAAS;CAAS,MAAM;AAAK,GAgBpEC,IAA6B,kBAA+C,SACvF,EAAE,SAAM,aAAU,SAAS,UAAO,MAAM,aAAU,aAAU,IAAM,iBAAc,OAAO,cAAcC,GAAO,mBAAgB,aAAU,GAAGC,KACzI,GACA;CACA,IAAMC,IACJ,kBAACN,GAAD;EACO;EACL,OAAM;EACA;EACN,cAAYI;EACH;EACH;EACN,GAAKG,MAAa,KAAA,IAA2B,CAAC,IAAhB,EAAE,YAAS;EACzC,GAAKC,MAAmB,KAAA,IAAiC,CAAC,IAAtB,EAAE,kBAAe;EACrD,GAAIH;CACL,CAAA;CAGH,OADI,CAACI,KAAWF,IAAiBD,IAE/B,kBAACP,GAAD;EAAS,SAASK;EAAO,MAAMM;EAAa,GAAKC,IAAW,EAAE,YAAS,IAAI,CAAC;EACzE,UAAAL;CACM,CAAA;AAEb,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAW,cAAc"}
@@ -1,11 +1,11 @@
1
1
  "use client";
2
- import { t as e } from "./cn-DUDmdLpZ.js";
2
+ import { t as e } from "./cn-Isw2DnQX.js";
3
3
  import { i as t } from "./context-BELWW79w.js";
4
4
  import { formatNumber as n } from "../format.js";
5
- import { t as r } from "./icon-BqujXDUc.js";
6
- import { r as i } from "./tooltip-CTBnfiDH.js";
7
- import { n as a } from "./copy-button-CXJ7fA9z.js";
8
- import { t as o } from "./badge-wUHlj7m3.js";
5
+ import { t as r } from "./icon-D5uD_mnL.js";
6
+ import { r as i } from "./tooltip-CRApbLF6.js";
7
+ import { n as a } from "./copy-button-Cdea0wKl.js";
8
+ import { t as o } from "./badge-CM8ahjDR.js";
9
9
  import { forwardRef as s } from "react";
10
10
  import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
11
11
  import { CpuIcon as d, Image01Icon as f, Pdf01Icon as p, SourceCodeIcon as m, ToolsIcon as h } from "@hugeicons/core-free-icons";
@@ -358,4 +358,4 @@ process.env.NODE_ENV !== "production" && (I.displayName = "ProviderCard");
358
358
  //#endregion
359
359
  export { E as a, F as c, j as i, P as l, v as n, S as o, _ as r, I as s, D as t, y as u };
360
360
 
361
- //# sourceMappingURL=identity-Chj7fW89.js.map
361
+ //# sourceMappingURL=identity-BcVQd-7H.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity-Chj7fW89.js","names":["__icon_ToolsIcon","__icon_CpuIcon","__icon_Image01Icon","__icon_Pdf01Icon","__icon_SourceCodeIcon","_Fragment","cn","useUiText","Icon","Tooltip","CopyButton","Badge","Fragment$1","PROVIDER_MARKS","KAESO_IDENTITY_VARIANTS","KAESO_IDENTITY_DEFAULT_VARIANTS","providerName","name","id","providerLetter","MARK_SIZE","ProviderBadge","mark","provider","label","tile","withName","size","className","CAP_ICON","ToolsIcon","CpuIcon","Image01Icon","Pdf01Icon","SourceCodeIcon","capabilityLabels","t","SHORT_ID","ModelLabel","providerDisplayName","model","capabilities","CapabilityIcons","capLabel","c","KEY_TONE","accessLabels","stateLabels","KeyDisplay","state","redacted","stateBadge","access","copy","STATUS_CLASS","code","statusTexts","StatusCode","text","tone","color","el","showText","RequestTimeline","ratio","totalMs","ttfbMs","fmt","ms","formatNumber","width","ProviderCard","status","connected","keyLabel","detail","actions"],"sources":["../../src/components/kaeso/provider-marks.ts","../../src/components/kaeso/identity.tsx"],"sourcesContent":["export interface ProviderMark {\n d: string;\n color: string;\n}\n\nexport const PROVIDER_MARKS: Record<string, ProviderMark> = {\n openai: {\n d: \"M9.205 8.765v-2.26c0-.19.071-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.567 0 .166 0 .356-.024.547l-4.71-2.76a.8.8 0 0 0-.856 0zm10.608 8.8v-5.399c0-.333-.142-.57-.428-.737l-5.97-3.472 1.95-1.118a.43.43 0 0 1 .476 0l4.544 2.616c1.308.761 2.188 2.379 2.188 3.948 0 1.808-1.07 3.473-2.76 4.163ZM7.802 12.81l-1.95-1.142a.45.45 0 0 1-.239-.428V6.006c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.174c-.285.166-.428.404-.428.737zM12 15.235l-2.795-1.57v-3.33L12 8.765l2.795 1.57v3.33zm1.796 7.23a4.45 4.45 0 0 1-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472Zm-5.638-5.303-4.543-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.48 4.48 0 0 1 4.21 6.434v5.424c0 .333.142.57.428.737l5.947 3.449-1.951 1.118a.43.43 0 0 1-.476 0m-.261 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71a.8.8 0 0 0 .857 0l5.97-3.448v2.26c0 .19-.072.333-.238.428l-4.543 2.616c-.619.357-1.356.524-2.117.524Zm5.899 2.831a5.95 5.95 0 0 0 5.828-4.757c2.663-.69 4.376-3.188 4.376-5.733a6 6 0 0 0-1.998-4.447c.119-.5.19-1 .19-1.499 0-3.401-2.759-5.947-5.946-5.947a5.7 5.7 0 0 0-1.88.31A5.96 5.96 0 0 0 10.205.107a5.95 5.95 0 0 0-5.828 4.757C1.712 5.554 0 8.052 0 10.597c0 1.665.713 3.282 1.998 4.448-.12.5-.19.999-.19 1.498 0 3.401 2.759 5.947 5.946 5.947a5.7 5.7 0 0 0 1.88-.31 5.96 5.96 0 0 0 4.162 1.713\",\n color: \"text-mark-openai\",\n },\n anthropic: {\n d: \"M17.304 3.541h-3.672l6.696 16.918H24zm-10.608 0L0 20.459h3.744l1.37-3.553h7.005l1.369 3.553h3.744L10.536 3.541zm-.372 10.223L8.616 7.82l2.292 5.945z\",\n color: \"text-fg\",\n },\n deepseek: {\n d: \"M23.748 4.651c-.254-.124-.364.113-.512.233-.051.04-.094.09-.137.137-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.155-.708-.311-.955-.65-.172-.24-.219-.509-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.094.172.187.129.323-.082.28-.18.553-.266.833-.055.179-.137.218-.328.14a5.5 5.5 0 0 1-1.737-1.179c-.857-.828-1.631-1.743-2.597-2.46a12 12 0 0 0-.689-.47c-.985-.957.13-1.743.387-1.836.27-.098.094-.433-.778-.428-.872.003-1.67.295-2.687.685a3 3 0 0 1-.465.136 9.6 9.6 0 0 0-2.883-.101c-1.885.21-3.39 1.1-4.497 2.622C.082 8.776-.231 10.854.152 13.02c.403 2.284 1.568 4.175 3.36 5.653 1.857 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.132-.284 4.994-1.86.47.234.962.328 1.78.398.629.058 1.235-.031 1.705-.129.735-.155.684-.836.418-.961-2.155-1.004-1.682-.595-2.112-.926 1.095-1.295 2.768-3.598 3.284-6.733.05-.346.115-.834.108-1.114-.005-.171.035-.238.23-.257a4.2 4.2 0 0 0 1.545-.475c1.397-.763 1.96-2.016 2.093-3.517.02-.23-.005-.467-.247-.588M11.58 18.168c-2.088-1.642-3.101-2.183-3.52-2.16-.39.024-.32.472-.234.763.09.288.207.487.371.74.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.168-1.361-.801-2.5-1.86-3.301-3.306-.775-1.393-1.225-2.888-1.299-4.482-.02-.385.094-.522.477-.592a4.7 4.7 0 0 1 1.53-.038c2.131.311 3.946 1.264 5.467 2.774.868.86 1.525 1.887 2.202 2.89.72 1.066 1.494 2.082 2.48 2.915.348.291.626.513.892.677-.802.09-2.14.109-3.055-.615zm1.001-6.44a.306.306 0 0 1 .415-.287.3.3 0 0 1 .113.074.3.3 0 0 1 .086.214c0 .17-.136.307-.308.307a.303.303 0 0 1-.306-.307m3.11 1.596c-.2.081-.4.151-.591.16a1.25 1.25 0 0 1-.798-.254c-.274-.23-.47-.358-.551-.758a1.7 1.7 0 0 1 .015-.588c.07-.327-.007-.537-.238-.727-.188-.156-.426-.199-.689-.199a.6.6 0 0 1-.254-.078.253.253 0 0 1-.114-.358 1 1 0 0 1 .192-.21c.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.392.451.462.576.685.915.176.264.336.536.446.848.066.194-.02.353-.25.45\",\n color: \"text-fg\",\n },\n xai: {\n d: \"M7.168 12.02.391 7.035h5.766l4.182 3.01q-1.677.964-3.17 1.975m9.512 7.1-5.077-3.745q1.7-1.287 2.872-2.114l7.995 5.859Zm-10.844 0H0l.69-.644q3.17-3.101 8.741-6.812Q14.622 8.207 24 4.88v1.931q-1.085.482-2.196 1.005-8.846 4.158-15.968 11.304\",\n color: \"text-mark-xai\",\n },\n togetherai: {\n d: \"M21.33 5.172a5 5 0 0 0-6.83-1.83 4.98 4.98 0 0 0-2.496 4.111L17 7.46v.428h-4.996a5 5 0 1 0 9.325-2.716M2.67 5.17A5 5 0 0 0 4.5 12a4.98 4.98 0 0 0 4.808.105l-2.492-4.33.371-.214 2.498 4.327A5 5 0 1 0 2.67 5.17M11.999 21.33a5 5 0 0 0 4.999-5c0-1.775-.916-3.33-2.312-4.216l-2.504 4.324-.37-.215 2.497-4.327A5 5 0 1 0 12 21.33Z\",\n color: \"text-mark-togetherai\",\n },\n groq: {\n d: \"M15.955 0 3.944 12.538l7.43 1.904L8.045 24l12.011-12.538-7.43-1.904z\",\n color: \"text-fg\",\n },\n openrouter: {\n d: \"M18.376 3.806c2.693 0 4.876 2.201 4.876 4.917s-2.183 4.916-4.876 4.916l4.836 4.876c.615.62.18 1.679-.689 1.679H8.626C4.138 20.194.5 16.525.5 12s3.638-8.194 8.126-8.194zm-9.75 3.278c-2.693 0-4.876 2.2-4.876 4.916 0 2.715 2.183 4.916 4.876 4.916 2.692 0 4.875-2.2 4.875-4.916 0-2.715-2.183-4.916-4.875-4.916\",\n color: \"text-mark-openrouter\",\n },\n mistral: {\n d: \"M8 5H5v3h3zm0 9H5v3h3zm3 3H2v3h9zm0-9H5v3h6zm3 6h-3v3h3zm6-3H5v3h15zm0-3h-6v3h6zm0-3h-3v3h3zm0 9h-3v3h3zm3 3h-9v3h9z\",\n color: \"text-mark-mistral\",\n },\n};\n","import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { ToolsIcon as __icon_ToolsIcon, CpuIcon as __icon_CpuIcon, Image01Icon as __icon_Image01Icon, Pdf01Icon as __icon_Pdf01Icon, SourceCodeIcon as __icon_SourceCodeIcon } from \"@hugeicons/core-free-icons\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport { Badge } from \"../badge/badge.js\";\nimport { CopyButton } from \"../copy-button/copy-button.js\";\nimport { PROVIDER_MARKS } from \"./provider-marks.js\";\nimport { formatNumber } from \"../../format/index.js\";\nimport { useUiText, type UiText } from \"../../i18n/context.js\";\n\nexport const KAESO_IDENTITY_VARIANTS = {\n provider: {\n sm: { classes: \"size-16 rounded-cell text-micro\" },\n md: { classes: \"size-20 rounded-avatar text-micro\" },\n lg: { classes: \"size-28 rounded-org text-caption\" },\n xl: { classes: \"size-40 rounded-org text-body\" },\n },\n} as const;\nexport const KAESO_IDENTITY_DEFAULT_VARIANTS = { provider: \"md\" } as const;\n\nexport const providerName = (id: string, name?: string | undefined) => name?.trim() || id;\nconst providerLetter = (id: string, name?: string | undefined) => (/[\\p{L}\\p{N}]/u.exec(providerName(id, name))?.[0] ?? id.slice(0, 1)).toLocaleUpperCase();\n\nconst MARK_SIZE = { sm: \"size-10\", md: \"size-12\", lg: \"size-16\", xl: \"size-24\" } as const;\n\nexport const ProviderBadge = /* @__PURE__ */ forwardRef<\n HTMLSpanElement,\n {\n provider: string;\n name?: string | undefined;\n size?: keyof typeof KAESO_IDENTITY_VARIANTS.provider | undefined;\n withName?: boolean | undefined;\n className?: string | undefined;\n }\n>(function ProviderBadge({ provider, name, size = \"md\", withName, className }, ref) {\n const mark = PROVIDER_MARKS[provider];\n const label = providerName(provider, name);\n const tile = (\n <span\n aria-hidden={withName || undefined}\n {...(!withName ? { role: \"img\", \"aria-label\": label } : {})}\n className={cn(\n \"inline-flex shrink-0 items-center justify-center bg-fill-1 font-semibold shadow-ring\",\n mark ? mark.color : \"text-fg-secondary\",\n KAESO_IDENTITY_VARIANTS.provider[size].classes,\n )}\n >\n {mark ? (\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" fillRule=\"evenodd\" aria-hidden focusable=\"false\" className={MARK_SIZE[size]}>\n <path d={mark.d} />\n </svg>\n ) : (\n providerLetter(provider, name)\n )}\n </span>\n );\n if (!withName)\n return (\n <span ref={ref} className={cn(\"inline-flex\", className)}>\n {tile}\n </span>\n );\n return (\n <span ref={ref} className={cn(\"inline-flex max-w-full min-w-0 items-center gap-8 text-body text-fg\", className)}>\n {tile}\n <span className=\"min-w-0 truncate\">{label}</span>\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ProviderBadge.displayName = \"ProviderBadge\";\n\nexport type Capability = \"tools\" | \"reasoning\" | \"vision\" | \"pdf\" | \"structuredOutput\";\nconst CAP_ICON: Record<Capability, IconData> = {\n tools: __icon_ToolsIcon,\n reasoning: __icon_CpuIcon,\n vision: __icon_Image01Icon,\n pdf: __icon_Pdf01Icon,\n structuredOutput: __icon_SourceCodeIcon,\n};\nfunction capabilityLabels(t: UiText): Record<Capability, string> {\n return {\n tools: t(\"modelLabel.toolCalling\", \"Tool calling\"),\n reasoning: t(\"modelLabel.reasoning\", \"Reasoning\"),\n vision: t(\"modelLabel.imageInput\", \"Image input\"),\n pdf: t(\"modelLabel.pdfInput\", \"PDF input\"),\n structuredOutput: t(\"modelLabel.structuredOutput\", \"Structured output\"),\n };\n}\n\nconst SHORT_ID = 14;\n\nexport interface ModelLabelProps {\n provider: string;\n providerName?: string | undefined;\n model: string;\n name?: string | undefined;\n capabilities?: Capability[] | undefined;\n mark?: boolean | undefined;\n className?: string | undefined;\n}\n\nexport const ModelLabel = /* @__PURE__ */ forwardRef<HTMLSpanElement, ModelLabelProps>(function ModelLabel(\n { provider, providerName: providerDisplayName, model, name, capabilities = [], mark = true, className },\n ref,\n) {\n return (\n <span ref={ref} className={cn(\"inline-flex max-w-full min-w-0 items-center gap-8\", className)}>\n {mark && <ProviderBadge provider={provider} name={providerDisplayName} />}\n {name ? (\n <>\n <span className=\"min-w-0 truncate text-body text-fg\">{name}</span>\n <span className=\"flex h-20 min-w-0 flex-1 basis-0 flex-wrap content-start items-center overflow-hidden\">\n <span aria-hidden className=\"h-20 w-0\" />\n <span className={cn(\"flex-1 truncate mono text-small text-fg-secondary\", model.length <= SHORT_ID ? \"min-w-max\" : \"min-w-96\")}>{model}</span>\n </span>\n </>\n ) : (\n <span className=\"min-w-0 truncate mono text-small text-fg\">{model}</span>\n )}\n {capabilities.length > 0 && <CapabilityIcons capabilities={capabilities} className=\"hidden sm:flex\" />}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ModelLabel.displayName = \"ModelLabel\";\n\nexport const CapabilityIcons = /* @__PURE__ */ forwardRef<HTMLSpanElement, { capabilities: Capability[]; className?: string | undefined }>(function CapabilityIcons(\n { capabilities, className },\n ref,\n) {\n const t = useUiText();\n const capLabel = capabilityLabels(t);\n if (capabilities.length === 0) return null;\n return (\n <span\n ref={ref}\n role=\"img\"\n className={cn(\"flex shrink-0 items-center gap-2\", className)}\n aria-label={t(\"modelLabel.capabilities\", \"Capabilities: {list}\", {\n list: capabilities.map((c) => capLabel[c]).join(t(\"modelLabel.listSeparator\", \", \")),\n })}\n >\n {capabilities.map((c) => (\n <Tooltip key={c} content={capLabel[c]}>\n <span className=\"inline-flex size-20 items-center justify-center rounded-pill text-fg-tertiary hover:text-fg\">\n <Icon icon={CAP_ICON[c]} size=\"xs\" />\n </span>\n </Tooltip>\n ))}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") CapabilityIcons.displayName = \"CapabilityIcons\";\n\nexport type KeyState = \"active\" | \"disabled\" | \"expired\" | \"archived\";\nconst KEY_TONE: Record<KeyState, \"success\" | \"neutral\" | \"warning\"> = { active: \"success\", disabled: \"neutral\", expired: \"warning\", archived: \"neutral\" };\n\nexport interface KeyDisplayProps {\n redacted: string;\n state?: KeyState | undefined;\n access?: \"inference\" | \"platform\" | \"both\" | undefined;\n copy?: boolean | undefined;\n className?: string | undefined;\n stateBadge?: boolean | undefined;\n}\n\nfunction accessLabels(t: UiText) {\n return {\n inference: t(\"keyDisplay.inference\", \"Inference\"),\n platform: t(\"keyDisplay.platform\", \"Platform\"),\n both: t(\"keyDisplay.inferenceAndPlatform\", \"Inference + platform\"),\n };\n}\n\nfunction stateLabels(t: UiText): Record<KeyState, string> {\n return {\n active: t(\"keyDisplay.active\", \"Active\"),\n disabled: t(\"keyDisplay.disabled\", \"Disabled\"),\n expired: t(\"keyDisplay.expired\", \"Expired\"),\n archived: t(\"keyDisplay.archived\", \"Archived\"),\n };\n}\n\nexport const KeyDisplay = /* @__PURE__ */ forwardRef<HTMLSpanElement, KeyDisplayProps>(function KeyDisplay(\n { redacted, state = \"active\", stateBadge = true, access, copy = true, className },\n ref,\n) {\n const t = useUiText();\n return (\n <span ref={ref} className={cn(\"group/key inline-flex max-w-full min-w-0 items-center gap-8\", className)}>\n <span className={cn(\"min-w-0 truncate mono text-small\", state === \"active\" ? \"text-fg\" : \"text-fg-secondary\")}>{redacted}</span>\n {stateBadge && state !== \"active\" && <Badge tone={KEY_TONE[state] === \"warning\" ? \"warning\" : \"neutral\"}>{stateLabels(t)[state]}</Badge>}\n {access && <Badge tone={access === \"inference\" ? \"neutral\" : \"outline\"}>{accessLabels(t)[access]}</Badge>}\n {copy && (\n <span className=\"opacity-0 transition-control group-hover/key:opacity-100 coarse:opacity-100 focus-within:opacity-100\">\n <CopyButton value={redacted} size=\"xs\" label={t(\"keyDisplay.copyRedactedKey\", \"Copy redacted key\")} />\n </span>\n )}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") KeyDisplay.displayName = \"KeyDisplay\";\n\nconst STATUS_CLASS = (code: number) => (code >= 500 ? \"danger\" : code >= 400 ? \"warning\" : \"neutral\") as \"danger\" | \"warning\" | \"neutral\";\nfunction statusTexts(t: UiText): Record<number, string> {\n return {\n 200: t(\"statusCode.ok\", \"OK\"),\n 201: t(\"statusCode.created\", \"Created\"),\n 204: t(\"statusCode.noContent\", \"No content\"),\n 400: t(\"statusCode.badRequest\", \"Bad request\"),\n 401: t(\"statusCode.unauthorized\", \"Unauthorized\"),\n 403: t(\"statusCode.forbidden\", \"Forbidden\"),\n 404: t(\"statusCode.notFound\", \"Not found\"),\n 408: t(\"statusCode.timeout\", \"Timeout\"),\n 409: t(\"statusCode.conflict\", \"Conflict\"),\n 413: t(\"statusCode.tooLarge\", \"Too large\"),\n 422: t(\"statusCode.unprocessable\", \"Unprocessable\"),\n 429: t(\"statusCode.rateLimited\", \"Rate limited\"),\n 499: t(\"statusCode.clientClosed\", \"Client closed\"),\n 500: t(\"statusCode.serverError\", \"Server error\"),\n 502: t(\"statusCode.badGateway\", \"Bad gateway\"),\n 503: t(\"statusCode.unavailable\", \"Unavailable\"),\n 504: t(\"statusCode.gatewayTimeout\", \"Gateway timeout\"),\n 529: t(\"statusCode.overloaded\", \"Overloaded\"),\n };\n}\n\nexport const StatusCode = /* @__PURE__ */ forwardRef<HTMLSpanElement, { code: number; showText?: boolean | undefined; className?: string | undefined }>(function StatusCode(\n { code, showText, className },\n ref,\n) {\n const t = useUiText();\n const text = statusTexts(t)[code];\n const tone = STATUS_CLASS(code);\n const color = { danger: \"text-danger-text\", warning: \"text-warning-text\", neutral: code >= 200 && code < 300 ? \"text-fg\" : \"text-fg-secondary\" }[tone];\n const el = (\n <span ref={ref} tabIndex={showText ? undefined : 0} className={cn(\"inline-flex items-center gap-6 outline-none\", className)}>\n <span className={cn(\"mono text-small font-medium tabular\", color)}>{code}</span>\n {showText && <span className=\"text-small text-fg-secondary\">{text ?? \"\"}</span>}\n <span className=\"sr-only\">{text ?? \"\"}</span>\n </span>\n );\n return showText || !text ? el : <Tooltip content={t(\"statusCode.tooltip\", \"{code} {text}\", { code: String(code), text })}>{el}</Tooltip>;\n});\nif (process.env.NODE_ENV !== \"production\") StatusCode.displayName = \"StatusCode\";\n\nexport const RequestTimeline = /* @__PURE__ */ forwardRef<\n HTMLDivElement,\n { ttfbMs: number; totalMs: number; width?: 160 | 240 | \"full\" | undefined; className?: string | undefined }\n>(function RequestTimeline({ ttfbMs, totalMs, width = 240, className }, ref) {\n const t = useUiText();\n const ratio = totalMs > 0 ? Math.min(1, ttfbMs / totalMs) : 0;\n const fmt = (ms: number) =>\n ms < 1000 ? `${Math.round(ms)} ms` : `${formatNumber(ms / 1000, { minimumFractionDigits: 1, maximumFractionDigits: 1, useGrouping: false })} s`;\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-col gap-6\", width === \"full\" ? \"w-full\" : width === 240 ? \"w-240\" : \"w-160\", className)}\n role=\"img\"\n aria-label={t(\"requestTimeline.label\", \"Time to first byte {ttfb} of {total} total\", { ttfb: fmt(ttfbMs), total: fmt(totalMs) })}\n >\n <div className=\"flex h-6 w-full gap-2 overflow-hidden rounded-pill\">\n <span className=\"h-full rounded-l-pill bg-viz-1\" style={{ width: `${ratio * 100}%` }} />\n <span className=\"h-full flex-1 rounded-r-pill bg-fill-3\" />\n </div>\n <div className=\"flex justify-between gap-8 text-caption font-medium text-fg-tertiary\">\n <span className=\"flex min-w-0 flex-col\">\n <span className=\"whitespace-nowrap text-fg-secondary tabular\">{fmt(ttfbMs)}</span>\n <span className=\"wrap-break-word\">{t(\"requestTimeline.firstByte\", \"First byte\")}</span>\n </span>\n <span className=\"flex min-w-0 flex-col items-end text-right\">\n <span className=\"whitespace-nowrap text-fg-secondary tabular\">{fmt(totalMs)}</span>\n <span className=\"wrap-break-word\">{t(\"requestTimeline.totalTime\", \"Total\")}</span>\n </span>\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") RequestTimeline.displayName = \"RequestTimeline\";\n\nexport interface ProviderCardProps {\n provider: string;\n name?: string | undefined;\n connected: boolean;\n status: ReactNode;\n keyLabel?: ReactNode | undefined;\n detail?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n className?: string | undefined;\n}\n\nexport const ProviderCard = /* @__PURE__ */ forwardRef<HTMLDivElement, ProviderCardProps>(function ProviderCard(\n { provider, name, connected, status, keyLabel, detail, actions, className },\n ref,\n) {\n const t = useUiText();\n const label = providerName(provider, name);\n return (\n <section ref={ref} aria-label={label} className={cn(\"flex min-w-0 flex-col gap-16 rounded-group bg-raised p-20 shadow-xs\", className)}>\n <div className=\"flex min-w-0 items-center gap-12\">\n <ProviderBadge provider={provider} name={name} size=\"xl\" />\n <div className=\"flex min-w-0 flex-1 flex-col gap-2\">\n <h3 className=\"truncate text-body-lg font-semibold text-fg\">{label}</h3>\n <span className=\"text-small text-fg-secondary text-pretty\">{status}</span>\n </div>\n <Badge tone={connected ? \"success\" : \"neutral\"}>\n {connected ? t(\"providerCard.connected\", \"Connected\") : t(\"providerCard.notConnected\", \"Not connected\")}\n </Badge>\n </div>\n {(keyLabel || detail) && (\n <div className=\"flex min-w-0 flex-col gap-2 rounded-well bg-fill-1 px-12 py-10\">\n {keyLabel && <span className=\"truncate text-body text-fg\">{keyLabel}</span>}\n {detail && <span className=\"truncate text-small text-fg-tertiary\">{detail}</span>}\n </div>\n )}\n {actions && <div className=\"mt-auto flex flex-wrap items-center gap-8\">{actions}</div>}\n </section>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ProviderCard.displayName = \"ProviderCard\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"identity-BcVQd-7H.js","names":["__icon_ToolsIcon","__icon_CpuIcon","__icon_Image01Icon","__icon_Pdf01Icon","__icon_SourceCodeIcon","_Fragment","cn","useUiText","Icon","Tooltip","CopyButton","Badge","Fragment$1","PROVIDER_MARKS","KAESO_IDENTITY_VARIANTS","KAESO_IDENTITY_DEFAULT_VARIANTS","providerName","name","id","providerLetter","MARK_SIZE","ProviderBadge","mark","provider","label","tile","withName","size","className","CAP_ICON","ToolsIcon","CpuIcon","Image01Icon","Pdf01Icon","SourceCodeIcon","capabilityLabels","t","SHORT_ID","ModelLabel","providerDisplayName","model","capabilities","CapabilityIcons","capLabel","c","KEY_TONE","accessLabels","stateLabels","KeyDisplay","state","redacted","stateBadge","access","copy","STATUS_CLASS","code","statusTexts","StatusCode","text","tone","color","el","showText","RequestTimeline","ratio","totalMs","ttfbMs","fmt","ms","formatNumber","width","ProviderCard","status","connected","keyLabel","detail","actions"],"sources":["../../src/components/kaeso/provider-marks.ts","../../src/components/kaeso/identity.tsx"],"sourcesContent":["export interface ProviderMark {\n d: string;\n color: string;\n}\n\nexport const PROVIDER_MARKS: Record<string, ProviderMark> = {\n openai: {\n d: \"M9.205 8.765v-2.26c0-.19.071-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.567 0 .166 0 .356-.024.547l-4.71-2.76a.8.8 0 0 0-.856 0zm10.608 8.8v-5.399c0-.333-.142-.57-.428-.737l-5.97-3.472 1.95-1.118a.43.43 0 0 1 .476 0l4.544 2.616c1.308.761 2.188 2.379 2.188 3.948 0 1.808-1.07 3.473-2.76 4.163ZM7.802 12.81l-1.95-1.142a.45.45 0 0 1-.239-.428V6.006c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.174c-.285.166-.428.404-.428.737zM12 15.235l-2.795-1.57v-3.33L12 8.765l2.795 1.57v3.33zm1.796 7.23a4.45 4.45 0 0 1-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472Zm-5.638-5.303-4.543-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.48 4.48 0 0 1 4.21 6.434v5.424c0 .333.142.57.428.737l5.947 3.449-1.951 1.118a.43.43 0 0 1-.476 0m-.261 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71a.8.8 0 0 0 .857 0l5.97-3.448v2.26c0 .19-.072.333-.238.428l-4.543 2.616c-.619.357-1.356.524-2.117.524Zm5.899 2.831a5.95 5.95 0 0 0 5.828-4.757c2.663-.69 4.376-3.188 4.376-5.733a6 6 0 0 0-1.998-4.447c.119-.5.19-1 .19-1.499 0-3.401-2.759-5.947-5.946-5.947a5.7 5.7 0 0 0-1.88.31A5.96 5.96 0 0 0 10.205.107a5.95 5.95 0 0 0-5.828 4.757C1.712 5.554 0 8.052 0 10.597c0 1.665.713 3.282 1.998 4.448-.12.5-.19.999-.19 1.498 0 3.401 2.759 5.947 5.946 5.947a5.7 5.7 0 0 0 1.88-.31 5.96 5.96 0 0 0 4.162 1.713\",\n color: \"text-mark-openai\",\n },\n anthropic: {\n d: \"M17.304 3.541h-3.672l6.696 16.918H24zm-10.608 0L0 20.459h3.744l1.37-3.553h7.005l1.369 3.553h3.744L10.536 3.541zm-.372 10.223L8.616 7.82l2.292 5.945z\",\n color: \"text-fg\",\n },\n deepseek: {\n d: \"M23.748 4.651c-.254-.124-.364.113-.512.233-.051.04-.094.09-.137.137-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.155-.708-.311-.955-.65-.172-.24-.219-.509-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.094.172.187.129.323-.082.28-.18.553-.266.833-.055.179-.137.218-.328.14a5.5 5.5 0 0 1-1.737-1.179c-.857-.828-1.631-1.743-2.597-2.46a12 12 0 0 0-.689-.47c-.985-.957.13-1.743.387-1.836.27-.098.094-.433-.778-.428-.872.003-1.67.295-2.687.685a3 3 0 0 1-.465.136 9.6 9.6 0 0 0-2.883-.101c-1.885.21-3.39 1.1-4.497 2.622C.082 8.776-.231 10.854.152 13.02c.403 2.284 1.568 4.175 3.36 5.653 1.857 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.132-.284 4.994-1.86.47.234.962.328 1.78.398.629.058 1.235-.031 1.705-.129.735-.155.684-.836.418-.961-2.155-1.004-1.682-.595-2.112-.926 1.095-1.295 2.768-3.598 3.284-6.733.05-.346.115-.834.108-1.114-.005-.171.035-.238.23-.257a4.2 4.2 0 0 0 1.545-.475c1.397-.763 1.96-2.016 2.093-3.517.02-.23-.005-.467-.247-.588M11.58 18.168c-2.088-1.642-3.101-2.183-3.52-2.16-.39.024-.32.472-.234.763.09.288.207.487.371.74.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.168-1.361-.801-2.5-1.86-3.301-3.306-.775-1.393-1.225-2.888-1.299-4.482-.02-.385.094-.522.477-.592a4.7 4.7 0 0 1 1.53-.038c2.131.311 3.946 1.264 5.467 2.774.868.86 1.525 1.887 2.202 2.89.72 1.066 1.494 2.082 2.48 2.915.348.291.626.513.892.677-.802.09-2.14.109-3.055-.615zm1.001-6.44a.306.306 0 0 1 .415-.287.3.3 0 0 1 .113.074.3.3 0 0 1 .086.214c0 .17-.136.307-.308.307a.303.303 0 0 1-.306-.307m3.11 1.596c-.2.081-.4.151-.591.16a1.25 1.25 0 0 1-.798-.254c-.274-.23-.47-.358-.551-.758a1.7 1.7 0 0 1 .015-.588c.07-.327-.007-.537-.238-.727-.188-.156-.426-.199-.689-.199a.6.6 0 0 1-.254-.078.253.253 0 0 1-.114-.358 1 1 0 0 1 .192-.21c.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.392.451.462.576.685.915.176.264.336.536.446.848.066.194-.02.353-.25.45\",\n color: \"text-fg\",\n },\n xai: {\n d: \"M7.168 12.02.391 7.035h5.766l4.182 3.01q-1.677.964-3.17 1.975m9.512 7.1-5.077-3.745q1.7-1.287 2.872-2.114l7.995 5.859Zm-10.844 0H0l.69-.644q3.17-3.101 8.741-6.812Q14.622 8.207 24 4.88v1.931q-1.085.482-2.196 1.005-8.846 4.158-15.968 11.304\",\n color: \"text-mark-xai\",\n },\n togetherai: {\n d: \"M21.33 5.172a5 5 0 0 0-6.83-1.83 4.98 4.98 0 0 0-2.496 4.111L17 7.46v.428h-4.996a5 5 0 1 0 9.325-2.716M2.67 5.17A5 5 0 0 0 4.5 12a4.98 4.98 0 0 0 4.808.105l-2.492-4.33.371-.214 2.498 4.327A5 5 0 1 0 2.67 5.17M11.999 21.33a5 5 0 0 0 4.999-5c0-1.775-.916-3.33-2.312-4.216l-2.504 4.324-.37-.215 2.497-4.327A5 5 0 1 0 12 21.33Z\",\n color: \"text-mark-togetherai\",\n },\n groq: {\n d: \"M15.955 0 3.944 12.538l7.43 1.904L8.045 24l12.011-12.538-7.43-1.904z\",\n color: \"text-fg\",\n },\n openrouter: {\n d: \"M18.376 3.806c2.693 0 4.876 2.201 4.876 4.917s-2.183 4.916-4.876 4.916l4.836 4.876c.615.62.18 1.679-.689 1.679H8.626C4.138 20.194.5 16.525.5 12s3.638-8.194 8.126-8.194zm-9.75 3.278c-2.693 0-4.876 2.2-4.876 4.916 0 2.715 2.183 4.916 4.876 4.916 2.692 0 4.875-2.2 4.875-4.916 0-2.715-2.183-4.916-4.875-4.916\",\n color: \"text-mark-openrouter\",\n },\n mistral: {\n d: \"M8 5H5v3h3zm0 9H5v3h3zm3 3H2v3h9zm0-9H5v3h6zm3 6h-3v3h3zm6-3H5v3h15zm0-3h-6v3h6zm0-3h-3v3h3zm0 9h-3v3h3zm3 3h-9v3h9z\",\n color: \"text-mark-mistral\",\n },\n};\n","import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { ToolsIcon as __icon_ToolsIcon, CpuIcon as __icon_CpuIcon, Image01Icon as __icon_Image01Icon, Pdf01Icon as __icon_Pdf01Icon, SourceCodeIcon as __icon_SourceCodeIcon } from \"@hugeicons/core-free-icons\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport { Badge } from \"../badge/badge.js\";\nimport { CopyButton } from \"../copy-button/copy-button.js\";\nimport { PROVIDER_MARKS } from \"./provider-marks.js\";\nimport { formatNumber } from \"../../format/index.js\";\nimport { useUiText, type UiText } from \"../../i18n/context.js\";\n\nexport const KAESO_IDENTITY_VARIANTS = {\n provider: {\n sm: { classes: \"size-16 rounded-cell text-micro\" },\n md: { classes: \"size-20 rounded-avatar text-micro\" },\n lg: { classes: \"size-28 rounded-org text-caption\" },\n xl: { classes: \"size-40 rounded-org text-body\" },\n },\n} as const;\nexport const KAESO_IDENTITY_DEFAULT_VARIANTS = { provider: \"md\" } as const;\n\nexport const providerName = (id: string, name?: string | undefined) => name?.trim() || id;\nconst providerLetter = (id: string, name?: string | undefined) => (/[\\p{L}\\p{N}]/u.exec(providerName(id, name))?.[0] ?? id.slice(0, 1)).toLocaleUpperCase();\n\nconst MARK_SIZE = { sm: \"size-10\", md: \"size-12\", lg: \"size-16\", xl: \"size-24\" } as const;\n\nexport const ProviderBadge = /* @__PURE__ */ forwardRef<\n HTMLSpanElement,\n {\n provider: string;\n name?: string | undefined;\n size?: keyof typeof KAESO_IDENTITY_VARIANTS.provider | undefined;\n withName?: boolean | undefined;\n className?: string | undefined;\n }\n>(function ProviderBadge({ provider, name, size = \"md\", withName, className }, ref) {\n const mark = PROVIDER_MARKS[provider];\n const label = providerName(provider, name);\n const tile = (\n <span\n aria-hidden={withName || undefined}\n {...(!withName ? { role: \"img\", \"aria-label\": label } : {})}\n className={cn(\n \"inline-flex shrink-0 items-center justify-center bg-fill-1 font-semibold shadow-ring\",\n mark ? mark.color : \"text-fg-secondary\",\n KAESO_IDENTITY_VARIANTS.provider[size].classes,\n )}\n >\n {mark ? (\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" fillRule=\"evenodd\" aria-hidden focusable=\"false\" className={MARK_SIZE[size]}>\n <path d={mark.d} />\n </svg>\n ) : (\n providerLetter(provider, name)\n )}\n </span>\n );\n if (!withName)\n return (\n <span ref={ref} className={cn(\"inline-flex\", className)}>\n {tile}\n </span>\n );\n return (\n <span ref={ref} className={cn(\"inline-flex max-w-full min-w-0 items-center gap-8 text-body text-fg\", className)}>\n {tile}\n <span className=\"min-w-0 truncate\">{label}</span>\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ProviderBadge.displayName = \"ProviderBadge\";\n\nexport type Capability = \"tools\" | \"reasoning\" | \"vision\" | \"pdf\" | \"structuredOutput\";\nconst CAP_ICON: Record<Capability, IconData> = {\n tools: __icon_ToolsIcon,\n reasoning: __icon_CpuIcon,\n vision: __icon_Image01Icon,\n pdf: __icon_Pdf01Icon,\n structuredOutput: __icon_SourceCodeIcon,\n};\nfunction capabilityLabels(t: UiText): Record<Capability, string> {\n return {\n tools: t(\"modelLabel.toolCalling\", \"Tool calling\"),\n reasoning: t(\"modelLabel.reasoning\", \"Reasoning\"),\n vision: t(\"modelLabel.imageInput\", \"Image input\"),\n pdf: t(\"modelLabel.pdfInput\", \"PDF input\"),\n structuredOutput: t(\"modelLabel.structuredOutput\", \"Structured output\"),\n };\n}\n\nconst SHORT_ID = 14;\n\nexport interface ModelLabelProps {\n provider: string;\n providerName?: string | undefined;\n model: string;\n name?: string | undefined;\n capabilities?: Capability[] | undefined;\n mark?: boolean | undefined;\n className?: string | undefined;\n}\n\nexport const ModelLabel = /* @__PURE__ */ forwardRef<HTMLSpanElement, ModelLabelProps>(function ModelLabel(\n { provider, providerName: providerDisplayName, model, name, capabilities = [], mark = true, className },\n ref,\n) {\n return (\n <span ref={ref} className={cn(\"inline-flex max-w-full min-w-0 items-center gap-8\", className)}>\n {mark && <ProviderBadge provider={provider} name={providerDisplayName} />}\n {name ? (\n <>\n <span className=\"min-w-0 truncate text-body text-fg\">{name}</span>\n <span className=\"flex h-20 min-w-0 flex-1 basis-0 flex-wrap content-start items-center overflow-hidden\">\n <span aria-hidden className=\"h-20 w-0\" />\n <span className={cn(\"flex-1 truncate mono text-small text-fg-secondary\", model.length <= SHORT_ID ? \"min-w-max\" : \"min-w-96\")}>{model}</span>\n </span>\n </>\n ) : (\n <span className=\"min-w-0 truncate mono text-small text-fg\">{model}</span>\n )}\n {capabilities.length > 0 && <CapabilityIcons capabilities={capabilities} className=\"hidden sm:flex\" />}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ModelLabel.displayName = \"ModelLabel\";\n\nexport const CapabilityIcons = /* @__PURE__ */ forwardRef<HTMLSpanElement, { capabilities: Capability[]; className?: string | undefined }>(function CapabilityIcons(\n { capabilities, className },\n ref,\n) {\n const t = useUiText();\n const capLabel = capabilityLabels(t);\n if (capabilities.length === 0) return null;\n return (\n <span\n ref={ref}\n role=\"img\"\n className={cn(\"flex shrink-0 items-center gap-2\", className)}\n aria-label={t(\"modelLabel.capabilities\", \"Capabilities: {list}\", {\n list: capabilities.map((c) => capLabel[c]).join(t(\"modelLabel.listSeparator\", \", \")),\n })}\n >\n {capabilities.map((c) => (\n <Tooltip key={c} content={capLabel[c]}>\n <span className=\"inline-flex size-20 items-center justify-center rounded-pill text-fg-tertiary hover:text-fg\">\n <Icon icon={CAP_ICON[c]} size=\"xs\" />\n </span>\n </Tooltip>\n ))}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") CapabilityIcons.displayName = \"CapabilityIcons\";\n\nexport type KeyState = \"active\" | \"disabled\" | \"expired\" | \"archived\";\nconst KEY_TONE: Record<KeyState, \"success\" | \"neutral\" | \"warning\"> = { active: \"success\", disabled: \"neutral\", expired: \"warning\", archived: \"neutral\" };\n\nexport interface KeyDisplayProps {\n redacted: string;\n state?: KeyState | undefined;\n access?: \"inference\" | \"platform\" | \"both\" | undefined;\n copy?: boolean | undefined;\n className?: string | undefined;\n stateBadge?: boolean | undefined;\n}\n\nfunction accessLabels(t: UiText) {\n return {\n inference: t(\"keyDisplay.inference\", \"Inference\"),\n platform: t(\"keyDisplay.platform\", \"Platform\"),\n both: t(\"keyDisplay.inferenceAndPlatform\", \"Inference + platform\"),\n };\n}\n\nfunction stateLabels(t: UiText): Record<KeyState, string> {\n return {\n active: t(\"keyDisplay.active\", \"Active\"),\n disabled: t(\"keyDisplay.disabled\", \"Disabled\"),\n expired: t(\"keyDisplay.expired\", \"Expired\"),\n archived: t(\"keyDisplay.archived\", \"Archived\"),\n };\n}\n\nexport const KeyDisplay = /* @__PURE__ */ forwardRef<HTMLSpanElement, KeyDisplayProps>(function KeyDisplay(\n { redacted, state = \"active\", stateBadge = true, access, copy = true, className },\n ref,\n) {\n const t = useUiText();\n return (\n <span ref={ref} className={cn(\"group/key inline-flex max-w-full min-w-0 items-center gap-8\", className)}>\n <span className={cn(\"min-w-0 truncate mono text-small\", state === \"active\" ? \"text-fg\" : \"text-fg-secondary\")}>{redacted}</span>\n {stateBadge && state !== \"active\" && <Badge tone={KEY_TONE[state] === \"warning\" ? \"warning\" : \"neutral\"}>{stateLabels(t)[state]}</Badge>}\n {access && <Badge tone={access === \"inference\" ? \"neutral\" : \"outline\"}>{accessLabels(t)[access]}</Badge>}\n {copy && (\n <span className=\"opacity-0 transition-control group-hover/key:opacity-100 coarse:opacity-100 focus-within:opacity-100\">\n <CopyButton value={redacted} size=\"xs\" label={t(\"keyDisplay.copyRedactedKey\", \"Copy redacted key\")} />\n </span>\n )}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") KeyDisplay.displayName = \"KeyDisplay\";\n\nconst STATUS_CLASS = (code: number) => (code >= 500 ? \"danger\" : code >= 400 ? \"warning\" : \"neutral\") as \"danger\" | \"warning\" | \"neutral\";\nfunction statusTexts(t: UiText): Record<number, string> {\n return {\n 200: t(\"statusCode.ok\", \"OK\"),\n 201: t(\"statusCode.created\", \"Created\"),\n 204: t(\"statusCode.noContent\", \"No content\"),\n 400: t(\"statusCode.badRequest\", \"Bad request\"),\n 401: t(\"statusCode.unauthorized\", \"Unauthorized\"),\n 403: t(\"statusCode.forbidden\", \"Forbidden\"),\n 404: t(\"statusCode.notFound\", \"Not found\"),\n 408: t(\"statusCode.timeout\", \"Timeout\"),\n 409: t(\"statusCode.conflict\", \"Conflict\"),\n 413: t(\"statusCode.tooLarge\", \"Too large\"),\n 422: t(\"statusCode.unprocessable\", \"Unprocessable\"),\n 429: t(\"statusCode.rateLimited\", \"Rate limited\"),\n 499: t(\"statusCode.clientClosed\", \"Client closed\"),\n 500: t(\"statusCode.serverError\", \"Server error\"),\n 502: t(\"statusCode.badGateway\", \"Bad gateway\"),\n 503: t(\"statusCode.unavailable\", \"Unavailable\"),\n 504: t(\"statusCode.gatewayTimeout\", \"Gateway timeout\"),\n 529: t(\"statusCode.overloaded\", \"Overloaded\"),\n };\n}\n\nexport const StatusCode = /* @__PURE__ */ forwardRef<HTMLSpanElement, { code: number; showText?: boolean | undefined; className?: string | undefined }>(function StatusCode(\n { code, showText, className },\n ref,\n) {\n const t = useUiText();\n const text = statusTexts(t)[code];\n const tone = STATUS_CLASS(code);\n const color = { danger: \"text-danger-text\", warning: \"text-warning-text\", neutral: code >= 200 && code < 300 ? \"text-fg\" : \"text-fg-secondary\" }[tone];\n const el = (\n <span ref={ref} tabIndex={showText ? undefined : 0} className={cn(\"inline-flex items-center gap-6 outline-none\", className)}>\n <span className={cn(\"mono text-small font-medium tabular\", color)}>{code}</span>\n {showText && <span className=\"text-small text-fg-secondary\">{text ?? \"\"}</span>}\n <span className=\"sr-only\">{text ?? \"\"}</span>\n </span>\n );\n return showText || !text ? el : <Tooltip content={t(\"statusCode.tooltip\", \"{code} {text}\", { code: String(code), text })}>{el}</Tooltip>;\n});\nif (process.env.NODE_ENV !== \"production\") StatusCode.displayName = \"StatusCode\";\n\nexport const RequestTimeline = /* @__PURE__ */ forwardRef<\n HTMLDivElement,\n { ttfbMs: number; totalMs: number; width?: 160 | 240 | \"full\" | undefined; className?: string | undefined }\n>(function RequestTimeline({ ttfbMs, totalMs, width = 240, className }, ref) {\n const t = useUiText();\n const ratio = totalMs > 0 ? Math.min(1, ttfbMs / totalMs) : 0;\n const fmt = (ms: number) =>\n ms < 1000 ? `${Math.round(ms)} ms` : `${formatNumber(ms / 1000, { minimumFractionDigits: 1, maximumFractionDigits: 1, useGrouping: false })} s`;\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-col gap-6\", width === \"full\" ? \"w-full\" : width === 240 ? \"w-240\" : \"w-160\", className)}\n role=\"img\"\n aria-label={t(\"requestTimeline.label\", \"Time to first byte {ttfb} of {total} total\", { ttfb: fmt(ttfbMs), total: fmt(totalMs) })}\n >\n <div className=\"flex h-6 w-full gap-2 overflow-hidden rounded-pill\">\n <span className=\"h-full rounded-l-pill bg-viz-1\" style={{ width: `${ratio * 100}%` }} />\n <span className=\"h-full flex-1 rounded-r-pill bg-fill-3\" />\n </div>\n <div className=\"flex justify-between gap-8 text-caption font-medium text-fg-tertiary\">\n <span className=\"flex min-w-0 flex-col\">\n <span className=\"whitespace-nowrap text-fg-secondary tabular\">{fmt(ttfbMs)}</span>\n <span className=\"wrap-break-word\">{t(\"requestTimeline.firstByte\", \"First byte\")}</span>\n </span>\n <span className=\"flex min-w-0 flex-col items-end text-right\">\n <span className=\"whitespace-nowrap text-fg-secondary tabular\">{fmt(totalMs)}</span>\n <span className=\"wrap-break-word\">{t(\"requestTimeline.totalTime\", \"Total\")}</span>\n </span>\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") RequestTimeline.displayName = \"RequestTimeline\";\n\nexport interface ProviderCardProps {\n provider: string;\n name?: string | undefined;\n connected: boolean;\n status: ReactNode;\n keyLabel?: ReactNode | undefined;\n detail?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n className?: string | undefined;\n}\n\nexport const ProviderCard = /* @__PURE__ */ forwardRef<HTMLDivElement, ProviderCardProps>(function ProviderCard(\n { provider, name, connected, status, keyLabel, detail, actions, className },\n ref,\n) {\n const t = useUiText();\n const label = providerName(provider, name);\n return (\n <section ref={ref} aria-label={label} className={cn(\"flex min-w-0 flex-col gap-16 rounded-group bg-raised p-20 shadow-xs\", className)}>\n <div className=\"flex min-w-0 items-center gap-12\">\n <ProviderBadge provider={provider} name={name} size=\"xl\" />\n <div className=\"flex min-w-0 flex-1 flex-col gap-2\">\n <h3 className=\"truncate text-body-lg font-semibold text-fg\">{label}</h3>\n <span className=\"text-small text-fg-secondary text-pretty\">{status}</span>\n </div>\n <Badge tone={connected ? \"success\" : \"neutral\"}>\n {connected ? t(\"providerCard.connected\", \"Connected\") : t(\"providerCard.notConnected\", \"Not connected\")}\n </Badge>\n </div>\n {(keyLabel || detail) && (\n <div className=\"flex min-w-0 flex-col gap-2 rounded-well bg-fill-1 px-12 py-10\">\n {keyLabel && <span className=\"truncate text-body text-fg\">{keyLabel}</span>}\n {detail && <span className=\"truncate text-small text-fg-tertiary\">{detail}</span>}\n </div>\n )}\n {actions && <div className=\"mt-auto flex flex-wrap items-center gap-8\">{actions}</div>}\n </section>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ProviderCard.displayName = \"ProviderCard\";\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import { i as e } from "./dev-CR1p7gCm.js";
3
3
  import { i as t } from "./context-BELWW79w.js";
4
- import { t as n } from "./icon-BqujXDUc.js";
5
- import { i as r } from "./kbd-DqWmbr_e.js";
6
- import { a as i, o as a, s as o } from "./field-BZriODU7.js";
7
- import { n as s, t as c } from "./input-group-BoxjnN8I.js";
4
+ import { t as n } from "./icon-D5uD_mnL.js";
5
+ import { i as r } from "./kbd-9A9rX60U.js";
6
+ import { a as i, o as a, s as o } from "./field-DfITT6Jm.js";
7
+ import { n as s, t as c } from "./input-group-Dgdb0JpZ.js";
8
8
  import { forwardRef as l, useRef as u, useState as d } from "react";
9
9
  import { jsx as f, jsxs as p } from "react/jsx-runtime";
10
10
  import { Cancel01Icon as m, Search01Icon as h } from "@hugeicons/core-free-icons";
@@ -111,4 +111,4 @@ process.env.NODE_ENV !== "production" && (b.displayName = "SearchInput");
111
111
  //#endregion
112
112
  export { b as i, _ as n, g as r, v as t };
113
113
 
114
- //# sourceMappingURL=input-9y3afoiq.js.map
114
+ //# sourceMappingURL=input-B6Docqrk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-9y3afoiq.js","names":["__icon_Search01Icon","__icon_Cancel01Icon","warnStylingClassName","useUiText","Icon","KbdSequence","useField","useFieldControl","withField","InputGroup","INPUT_ICON_SIZE","KAESO_INPUT_VARIANTS","KAESO_INPUT_DEFAULT_VARIANTS","Input","force","rest","props","className","field","fc","inner","InputGroupFromField","invalid","error","label","description","align","id","leadingIcon","trailing","size","prefix","children","suffix","SearchInput","t","setInner","useState","defaultValue","controlled","value","current","input","useRef","clear","el","onClear","ref","Search01Icon","placeholder","onChange","onKeyDown","Cancel01Icon","shortcut"],"sources":["../../src/components/input/input.tsx"],"sourcesContent":["import { forwardRef, useRef, useState, type InputHTMLAttributes, type KeyboardEvent, type ReactNode } from \"react\";\nimport { warnStylingClassName } from \"../../utils/dev.js\";\nimport { useField, useFieldControl, withField, type FieldWrapProps } from \"../field/field.js\";\nimport { InputGroup, INPUT_ICON_SIZE, type InputSize } from \"./input-group.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { KbdSequence } from \"../kbd/kbd.js\";\nimport { Search01Icon as __icon_Search01Icon, Cancel01Icon as __icon_Cancel01Icon } from \"@hugeicons/core-free-icons\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_INPUT_VARIANTS = {\n size: {\n sm: { classes: \"h-32\" },\n md: { classes: \"h-36\" },\n lg: { classes: \"h-40\" },\n xl: { classes: \"h-48\" },\n },\n} as const;\nexport const KAESO_INPUT_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\" | \"prefix\">, FieldWrapProps {\n size?: InputSize | undefined;\n leadingIcon?: IconData | undefined;\n prefix?: ReactNode | undefined;\n suffix?: ReactNode | undefined;\n trailing?: ReactNode | undefined;\n invalid?: boolean | undefined;\n align?: \"start\" | \"end\" | undefined;\n \"data-force\"?: string | undefined;\n className?: string | undefined;\n}\n\nexport const Input = /* @__PURE__ */ forwardRef<HTMLInputElement, InputProps>(function Input(props, ref) {\n const {\n size = \"md\",\n leadingIcon,\n prefix,\n suffix,\n trailing,\n invalid,\n align,\n label,\n description,\n error,\n optional,\n required,\n layout,\n className,\n disabled,\n readOnly,\n id,\n \"data-force\": force,\n ...rest\n } = props;\n warnStylingClassName(\"Input\", className);\n const field = useField();\n const fc = useFieldControl(props);\n const inner = (\n <InputGroupFromField\n size={size}\n leadingIcon={leadingIcon}\n prefix={prefix}\n suffix={suffix}\n trailing={trailing}\n invalid={invalid || !!error}\n disabled={disabled}\n readOnly={readOnly}\n force={force}\n className={label || description || error ? undefined : className}\n >\n <InputGroup.Input\n ref={ref}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n className={align === \"end\" ? \"text-right tabular\" : undefined}\n {...(id ? { id } : {})}\n {...fc.controlProps}\n {...(invalid || error ? { \"aria-invalid\": true } : {})}\n {...rest}\n />\n </InputGroupFromField>\n );\n if (field) return inner;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId ?? id, disabled, className }, inner);\n});\nif (process.env.NODE_ENV !== \"production\") Input.displayName = \"Input\";\n\nfunction InputGroupFromField({\n size,\n leadingIcon,\n prefix,\n suffix,\n trailing,\n invalid,\n disabled,\n readOnly,\n force,\n className,\n children,\n}: {\n size: InputSize;\n leadingIcon?: IconData | undefined;\n prefix?: ReactNode | undefined;\n suffix?: ReactNode | undefined;\n trailing?: ReactNode | undefined;\n invalid?: boolean | undefined;\n disabled?: boolean | undefined;\n readOnly?: boolean | undefined;\n force?: string | undefined;\n className?: string | undefined;\n children: ReactNode;\n}) {\n return (\n <InputGroup\n size={size}\n leadingIcon={!!leadingIcon}\n trailingButton={!!trailing}\n invalid={invalid}\n disabled={disabled}\n readOnly={readOnly}\n className={className}\n {...(force ? { \"data-force\": force } : {})}\n >\n {leadingIcon && <Icon icon={leadingIcon} size={INPUT_ICON_SIZE[size]} className=\"text-fg-tertiary\" />}\n {prefix && <InputGroup.Addon>{prefix}</InputGroup.Addon>}\n {children}\n {suffix && <InputGroup.Addon>{suffix}</InputGroup.Addon>}\n {trailing}\n </InputGroup>\n );\n}\n\nexport interface SearchInputProps extends Omit<InputProps, \"leadingIcon\" | \"type\" | \"prefix\" | \"suffix\"> {\n shortcut?: string[] | undefined;\n onClear?: (() => void) | undefined;\n placeholder?: string | undefined;\n}\n\nexport const SearchInput = /* @__PURE__ */ forwardRef<HTMLInputElement, SearchInputProps>(function SearchInput(\n { shortcut, onClear, value, defaultValue, onChange, onKeyDown, placeholder, size = \"sm\", ...props },\n ref,\n) {\n const t = useUiText();\n const [inner, setInner] = useState(String(defaultValue ?? \"\"));\n const controlled = value !== undefined;\n const current = controlled ? String(value) : inner;\n const input = useRef<HTMLInputElement | null>(null);\n const clear = () => {\n const el = input.current;\n if (!controlled) setInner(\"\");\n else if (el && !onClear) {\n Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, \"value\")?.set?.call(el, \"\");\n el.dispatchEvent(new Event(\"input\", { bubbles: true }));\n }\n onClear?.();\n el?.focus();\n };\n return (\n <Input\n ref={(el) => {\n input.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n }}\n type=\"search\"\n size={size}\n leadingIcon={__icon_Search01Icon}\n placeholder={placeholder ?? t(\"searchInput.placeholder\", \"Search\")}\n autoComplete=\"off\"\n spellCheck={false}\n value={current}\n onChange={(e) => {\n if (!controlled) setInner(e.target.value);\n onChange?.(e);\n }}\n onKeyDown={(e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Escape\" && current) {\n e.stopPropagation();\n clear();\n }\n onKeyDown?.(e);\n }}\n trailing={current ? <InputGroup.Button icon={__icon_Cancel01Icon} aria-label={t(\"searchInput.clear\", \"Clear search\")} onClick={clear} /> : undefined}\n suffix={!current && shortcut ? <KbdSequence keys={shortcut} /> : undefined}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") SearchInput.displayName = \"SearchInput\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"input-B6Docqrk.js","names":["__icon_Search01Icon","__icon_Cancel01Icon","warnStylingClassName","useUiText","Icon","KbdSequence","useField","useFieldControl","withField","InputGroup","INPUT_ICON_SIZE","KAESO_INPUT_VARIANTS","KAESO_INPUT_DEFAULT_VARIANTS","Input","force","rest","props","className","field","fc","inner","InputGroupFromField","invalid","error","label","description","align","id","leadingIcon","trailing","size","prefix","children","suffix","SearchInput","t","setInner","useState","defaultValue","controlled","value","current","input","useRef","clear","el","onClear","ref","Search01Icon","placeholder","onChange","onKeyDown","Cancel01Icon","shortcut"],"sources":["../../src/components/input/input.tsx"],"sourcesContent":["import { forwardRef, useRef, useState, type InputHTMLAttributes, type KeyboardEvent, type ReactNode } from \"react\";\nimport { warnStylingClassName } from \"../../utils/dev.js\";\nimport { useField, useFieldControl, withField, type FieldWrapProps } from \"../field/field.js\";\nimport { InputGroup, INPUT_ICON_SIZE, type InputSize } from \"./input-group.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { KbdSequence } from \"../kbd/kbd.js\";\nimport { Search01Icon as __icon_Search01Icon, Cancel01Icon as __icon_Cancel01Icon } from \"@hugeicons/core-free-icons\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_INPUT_VARIANTS = {\n size: {\n sm: { classes: \"h-32\" },\n md: { classes: \"h-36\" },\n lg: { classes: \"h-40\" },\n xl: { classes: \"h-48\" },\n },\n} as const;\nexport const KAESO_INPUT_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\" | \"prefix\">, FieldWrapProps {\n size?: InputSize | undefined;\n leadingIcon?: IconData | undefined;\n prefix?: ReactNode | undefined;\n suffix?: ReactNode | undefined;\n trailing?: ReactNode | undefined;\n invalid?: boolean | undefined;\n align?: \"start\" | \"end\" | undefined;\n \"data-force\"?: string | undefined;\n className?: string | undefined;\n}\n\nexport const Input = /* @__PURE__ */ forwardRef<HTMLInputElement, InputProps>(function Input(props, ref) {\n const {\n size = \"md\",\n leadingIcon,\n prefix,\n suffix,\n trailing,\n invalid,\n align,\n label,\n description,\n error,\n optional,\n required,\n layout,\n className,\n disabled,\n readOnly,\n id,\n \"data-force\": force,\n ...rest\n } = props;\n warnStylingClassName(\"Input\", className);\n const field = useField();\n const fc = useFieldControl(props);\n const inner = (\n <InputGroupFromField\n size={size}\n leadingIcon={leadingIcon}\n prefix={prefix}\n suffix={suffix}\n trailing={trailing}\n invalid={invalid || !!error}\n disabled={disabled}\n readOnly={readOnly}\n force={force}\n className={label || description || error ? undefined : className}\n >\n <InputGroup.Input\n ref={ref}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n className={align === \"end\" ? \"text-right tabular\" : undefined}\n {...(id ? { id } : {})}\n {...fc.controlProps}\n {...(invalid || error ? { \"aria-invalid\": true } : {})}\n {...rest}\n />\n </InputGroupFromField>\n );\n if (field) return inner;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId ?? id, disabled, className }, inner);\n});\nif (process.env.NODE_ENV !== \"production\") Input.displayName = \"Input\";\n\nfunction InputGroupFromField({\n size,\n leadingIcon,\n prefix,\n suffix,\n trailing,\n invalid,\n disabled,\n readOnly,\n force,\n className,\n children,\n}: {\n size: InputSize;\n leadingIcon?: IconData | undefined;\n prefix?: ReactNode | undefined;\n suffix?: ReactNode | undefined;\n trailing?: ReactNode | undefined;\n invalid?: boolean | undefined;\n disabled?: boolean | undefined;\n readOnly?: boolean | undefined;\n force?: string | undefined;\n className?: string | undefined;\n children: ReactNode;\n}) {\n return (\n <InputGroup\n size={size}\n leadingIcon={!!leadingIcon}\n trailingButton={!!trailing}\n invalid={invalid}\n disabled={disabled}\n readOnly={readOnly}\n className={className}\n {...(force ? { \"data-force\": force } : {})}\n >\n {leadingIcon && <Icon icon={leadingIcon} size={INPUT_ICON_SIZE[size]} className=\"text-fg-tertiary\" />}\n {prefix && <InputGroup.Addon>{prefix}</InputGroup.Addon>}\n {children}\n {suffix && <InputGroup.Addon>{suffix}</InputGroup.Addon>}\n {trailing}\n </InputGroup>\n );\n}\n\nexport interface SearchInputProps extends Omit<InputProps, \"leadingIcon\" | \"type\" | \"prefix\" | \"suffix\"> {\n shortcut?: string[] | undefined;\n onClear?: (() => void) | undefined;\n placeholder?: string | undefined;\n}\n\nexport const SearchInput = /* @__PURE__ */ forwardRef<HTMLInputElement, SearchInputProps>(function SearchInput(\n { shortcut, onClear, value, defaultValue, onChange, onKeyDown, placeholder, size = \"sm\", ...props },\n ref,\n) {\n const t = useUiText();\n const [inner, setInner] = useState(String(defaultValue ?? \"\"));\n const controlled = value !== undefined;\n const current = controlled ? String(value) : inner;\n const input = useRef<HTMLInputElement | null>(null);\n const clear = () => {\n const el = input.current;\n if (!controlled) setInner(\"\");\n else if (el && !onClear) {\n Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, \"value\")?.set?.call(el, \"\");\n el.dispatchEvent(new Event(\"input\", { bubbles: true }));\n }\n onClear?.();\n el?.focus();\n };\n return (\n <Input\n ref={(el) => {\n input.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n }}\n type=\"search\"\n size={size}\n leadingIcon={__icon_Search01Icon}\n placeholder={placeholder ?? t(\"searchInput.placeholder\", \"Search\")}\n autoComplete=\"off\"\n spellCheck={false}\n value={current}\n onChange={(e) => {\n if (!controlled) setInner(e.target.value);\n onChange?.(e);\n }}\n onKeyDown={(e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Escape\" && current) {\n e.stopPropagation();\n clear();\n }\n onKeyDown?.(e);\n }}\n trailing={current ? <InputGroup.Button icon={__icon_Cancel01Icon} aria-label={t(\"searchInput.clear\", \"Clear search\")} onClick={clear} /> : undefined}\n suffix={!current && shortcut ? <KbdSequence keys={shortcut} /> : undefined}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") SearchInput.displayName = \"SearchInput\";\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import { t as e } from "./cn-DUDmdLpZ.js";
3
- import { t } from "./icon-BqujXDUc.js";
4
- import { n } from "./button-h2IFCER2.js";
2
+ import { t as e } from "./cn-Isw2DnQX.js";
3
+ import { t } from "./icon-D5uD_mnL.js";
4
+ import { n } from "./button-9q66Ta23.js";
5
5
  import { createContext as r, forwardRef as i, useContext as a } from "react";
6
6
  import { jsx as o, jsxs as s } from "react/jsx-runtime";
7
7
  //#region src/utils/field-press.ts
@@ -90,4 +90,4 @@ var y = /* @__PURE__ */ Object.assign(h, {
90
90
  //#endregion
91
91
  export { b as a, l as i, y as n, u as r, p as t };
92
92
 
93
- //# sourceMappingURL=input-group-BoxjnN8I.js.map
93
+ //# sourceMappingURL=input-group-Dgdb0JpZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-group-BoxjnN8I.js","names":["cn","focusInputOnPress","input","KAESO_INPUT_GROUP_VARIANTS","KAESO_INPUT_GROUP_DEFAULT_VARIANTS","LEADING","TRAILING_BUTTON","INPUT_ICON_SIZE","Ctx","Root","props","size","leadingIcon","trailingButton","disabled","className","invalid","readOnly","Input","Addon","useContext","icon","Icon","children","GroupButton","Button","InputGroup","useInputGroupSize"],"sources":["../../src/utils/field-press.ts","../../src/components/input/input-group.tsx"],"sourcesContent":["import type { MouseEvent } from \"react\";\n\nexport function focusInputOnPress(e: MouseEvent<HTMLElement>) {\n if (e.target !== e.currentTarget) return;\n const input = e.currentTarget.querySelector(\"input:not([type=hidden])\") as HTMLInputElement | null;\n if (!input || input.disabled) return;\n e.preventDefault();\n input.focus();\n}\n","import type * as React from \"react\";\nimport { createContext, forwardRef, useContext, type HTMLAttributes, type InputHTMLAttributes } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { focusInputOnPress } from \"../../utils/field-press.js\";\nimport { Icon, type IconData, type IconSize } from \"../icon/icon.js\";\nimport { Button } from \"../button/button.js\";\n\nexport const KAESO_INPUT_GROUP_VARIANTS = {\n size: {\n sm: { classes: \"h-32 px-12 gap-6 text-body\" },\n md: { classes: \"h-36 px-16 gap-8 text-body\" },\n lg: { classes: \"h-40 px-18 gap-8 text-body\" },\n xl: { classes: \"h-48 px-22 gap-8 text-body-lg\" },\n },\n} as const;\nexport const KAESO_INPUT_GROUP_DEFAULT_VARIANTS = { size: \"md\" } as const;\nexport type InputSize = keyof typeof KAESO_INPUT_GROUP_VARIANTS.size;\n\nconst LEADING: Record<InputSize, string> = { sm: \"pl-10\", md: \"pl-14\", lg: \"pl-16\", xl: \"pl-20\" };\nconst TRAILING_BUTTON: Record<InputSize, string> = { sm: \"pr-4\", md: \"pr-2\", lg: \"pr-4\", xl: \"pr-6\" };\nexport const INPUT_ICON_SIZE: Record<InputSize, IconSize> = { sm: \"sm\", md: \"sm\", lg: \"md\", xl: \"lg\" };\n\nconst Ctx = /* @__PURE__ */ createContext<{ size: InputSize }>({ size: \"md\" });\n\nexport interface InputGroupProps extends HTMLAttributes<HTMLDivElement> {\n size?: InputSize | undefined;\n leadingIcon?: boolean | undefined;\n trailingButton?: boolean | undefined;\n invalid?: boolean | undefined;\n disabled?: boolean | undefined;\n readOnly?: boolean | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst Root = /* @__PURE__ */ forwardRef<HTMLDivElement, InputGroupProps>(function InputGroup(\n { size = \"md\", leadingIcon, trailingButton, invalid, disabled, readOnly, className, children, ...props },\n ref,\n) {\n return (\n <Ctx.Provider value={{ size }}>\n <div\n ref={ref}\n className={cn(\n \"relative flex w-full min-w-0 items-center rounded-pill material-field transition-control cursor-text\",\n KAESO_INPUT_GROUP_VARIANTS.size[size].classes,\n leadingIcon && LEADING[size],\n trailingButton && TRAILING_BUTTON[size],\n disabled && \"cursor-not-allowed\",\n className,\n )}\n {...(invalid ? { \"data-invalid\": \"\" } : {})}\n {...(disabled ? { \"data-disabled\": \"\" } : {})}\n {...(readOnly ? { \"data-readonly\": \"\" } : {})}\n onMouseDown={focusInputOnPress}\n {...props}\n >\n {children}\n </div>\n </Ctx.Provider>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Root.displayName = \"InputGroup\";\n\nexport interface InputGroupInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\"> {}\n\nconst Input = /* @__PURE__ */ forwardRef<HTMLInputElement, InputGroupInputProps>(function InputGroupInput({ className, ...props }, ref) {\n return (\n <input\n ref={ref}\n className={cn(\n \"min-w-0 flex-1 bg-transparent bidi-plaintext text-inherit text-fg outline-none placeholder:text-fg-tertiary disabled:cursor-not-allowed disabled:text-fg-disabled read-only:cursor-text\",\n className,\n )}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Input.displayName = \"InputGroup.Input\";\n\nexport interface InputGroupAddonProps extends HTMLAttributes<HTMLSpanElement> {\n icon?: IconData | undefined;\n}\n\nconst Addon = /* @__PURE__ */ forwardRef<HTMLSpanElement, InputGroupAddonProps>(function InputGroupAddon({ icon, className, children, ...props }, ref) {\n const { size } = useContext(Ctx);\n return (\n <span ref={ref} className={cn(\"inline-flex shrink-0 items-center gap-4 bidi-plaintext text-fg-secondary select-none\", className)} {...props}>\n {icon && <Icon icon={icon} size={INPUT_ICON_SIZE[size]} />}\n {children}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Addon.displayName = \"InputGroup.Addon\";\n\nexport interface InputGroupButtonProps {\n icon: IconData;\n \"aria-label\": string;\n onClick?: (() => void) | undefined;\n disabled?: boolean | undefined;\n className?: string | undefined;\n}\n\nconst GroupButton = /* @__PURE__ */ forwardRef<HTMLButtonElement, InputGroupButtonProps>(function InputGroupButton({ icon, className, ...props }, ref) {\n const { size } = useContext(Ctx);\n return (\n <Button\n ref={ref as React.Ref<HTMLButtonElement & HTMLAnchorElement>}\n shape=\"circle\"\n variant=\"quiet\"\n size={size === \"xl\" ? \"md\" : size === \"lg\" ? \"sm\" : size === \"md\" ? \"sm\" : \"xs\"}\n icon={icon}\n className={className}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") GroupButton.displayName = \"InputGroup.Button\";\n\nexport const InputGroup = /* @__PURE__ */ Object.assign(Root, { Input, Addon, Button: GroupButton });\nexport const useInputGroupSize = () => useContext(Ctx).size;\n"],"mappings":";;;;;;;AAEA,SAAgBC,EAAkB,GAA4B;CAC5D,IAAI,EAAE,WAAW,EAAE,eAAe;CAClC,IAAMC,IAAQ,EAAE,cAAc,cAAc,0BAA0B;CACtE,AAAKA,KAAS,GAAM,aACpB,EAAE,eAAe,GACjBA,EAAM,MAAM;AACd;;;ACDA,IAAaC,IAA6B,EACxC,MAAM;CACJ,IAAI,EAAE,SAAS,6BAA6B;CAC5C,IAAI,EAAE,SAAS,6BAA6B;CAC5C,IAAI,EAAE,SAAS,6BAA6B;CAC5C,IAAI,EAAE,SAAS,gCAAgC;AACjD,EACF,GACaC,IAAqC,EAAE,MAAM,KAAK,GAGzDC,IAAqC;CAAE,IAAI;CAAS,IAAI;CAAS,IAAI;CAAS,IAAI;AAAQ,GAC1FC,IAA6C;CAAE,IAAI;CAAQ,IAAI;CAAQ,IAAI;CAAQ,IAAI;AAAO,GACvFC,IAA+C;CAAE,IAAI;CAAM,IAAI;CAAM,IAAI;CAAM,IAAI;AAAK,GAE/FC,IAAsB,kBAAmC,EAAE,MAAM,KAAK,CAAC,GAYvEC,IAAuB,kBAA4C,SACvE,EAAE,UAAO,MAAM,gBAAa,mBAAgB,YAAS,aAAU,aAAU,cAAW,aAAU,GAAGC,KACjG,GACA;CACA,OACE,kBAACF,EAAI,UAAL;EAAc,OAAO,EAAE,QAAK;EAC1B,UAAA,kBAAC,OAAD;GACO;GACL,WAAWR,EACT,wGACAG,EAA2B,KAAKQ,EAAK,CAAC,SACtCC,KAAeP,EAAQM,IACvBE,KAAkBP,EAAgBK,IAClCG,KAAY,sBACZC,CACF;GACA,GAAKC,IAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;GACzC,GAAKF,IAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;GAC3C,GAAKG,IAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;GAC3C,aAAahB;GACb,GAAIS;GAEH;EACE,CAAA;CACO,CAAA;AAElB,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAK,cAAc;AAI9D,IAAMQ,IAAwB,kBAAmD,SAAyB,EAAE,cAAW,GAAGR,KAAS,GAAK;CACtI,OACE,kBAAC,SAAD;EACO;EACL,WAAWV,EACT,2LACAe,CACF;EACA,GAAIL;CACL,CAAA;AAEL,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAM,cAAc;AAM/D,IAAMS,IAAwB,kBAAkD,SAAyB,EAAE,SAAM,cAAW,aAAU,GAAGT,KAAS,GAAK;CACrJ,IAAM,EAAE,YAASU,EAAWZ,CAAG;CAC/B,OACE,kBAAC,QAAD;EAAW;EAAK,WAAWR,EAAG,wFAAwFe,CAAS;EAAG,GAAIL;EAAtI,UAAA,CACGW,KAAQ,kBAACC,GAAD;GAAY;GAAM,MAAMf,EAAgBI;EAAQ,CAAA,GACxDY,CACG;;AAEV,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAM,cAAc;AAU/D,IAAMC,IAA8B,kBAAqD,SAA0B,EAAE,SAAM,cAAW,GAAGd,KAAS,GAAK;CACrJ,IAAM,EAAE,YAASU,EAAWZ,CAAG;CAC/B,OACE,kBAACiB,GAAD;EACO;EACL,OAAM;EACN,SAAQ;EACR,MAAMd,MAAS,OAAO,OAAOA,MAAS,QAAcA,MAAS,OAAhB,OAA8B;EACrE;EACK;EACX,GAAID;CACL,CAAA;AAEL,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAY,cAAc;AAErE,IAAagB,IAA6B,uBAAO,OAAOjB,GAAM;CAAE;CAAO;CAAO,QAAQe;AAAY,CAAC,GACtFG,UAA0BP,EAAWZ,CAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"input-group-Dgdb0JpZ.js","names":["cn","focusInputOnPress","input","KAESO_INPUT_GROUP_VARIANTS","KAESO_INPUT_GROUP_DEFAULT_VARIANTS","LEADING","TRAILING_BUTTON","INPUT_ICON_SIZE","Ctx","Root","props","size","leadingIcon","trailingButton","disabled","className","invalid","readOnly","Input","Addon","useContext","icon","Icon","children","GroupButton","Button","InputGroup","useInputGroupSize"],"sources":["../../src/utils/field-press.ts","../../src/components/input/input-group.tsx"],"sourcesContent":["import type { MouseEvent } from \"react\";\n\nexport function focusInputOnPress(e: MouseEvent<HTMLElement>) {\n if (e.target !== e.currentTarget) return;\n const input = e.currentTarget.querySelector(\"input:not([type=hidden])\") as HTMLInputElement | null;\n if (!input || input.disabled) return;\n e.preventDefault();\n input.focus();\n}\n","import type * as React from \"react\";\nimport { createContext, forwardRef, useContext, type HTMLAttributes, type InputHTMLAttributes } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { focusInputOnPress } from \"../../utils/field-press.js\";\nimport { Icon, type IconData, type IconSize } from \"../icon/icon.js\";\nimport { Button } from \"../button/button.js\";\n\nexport const KAESO_INPUT_GROUP_VARIANTS = {\n size: {\n sm: { classes: \"h-32 px-12 gap-6 text-body\" },\n md: { classes: \"h-36 px-16 gap-8 text-body\" },\n lg: { classes: \"h-40 px-18 gap-8 text-body\" },\n xl: { classes: \"h-48 px-22 gap-8 text-body-lg\" },\n },\n} as const;\nexport const KAESO_INPUT_GROUP_DEFAULT_VARIANTS = { size: \"md\" } as const;\nexport type InputSize = keyof typeof KAESO_INPUT_GROUP_VARIANTS.size;\n\nconst LEADING: Record<InputSize, string> = { sm: \"pl-10\", md: \"pl-14\", lg: \"pl-16\", xl: \"pl-20\" };\nconst TRAILING_BUTTON: Record<InputSize, string> = { sm: \"pr-4\", md: \"pr-2\", lg: \"pr-4\", xl: \"pr-6\" };\nexport const INPUT_ICON_SIZE: Record<InputSize, IconSize> = { sm: \"sm\", md: \"sm\", lg: \"md\", xl: \"lg\" };\n\nconst Ctx = /* @__PURE__ */ createContext<{ size: InputSize }>({ size: \"md\" });\n\nexport interface InputGroupProps extends HTMLAttributes<HTMLDivElement> {\n size?: InputSize | undefined;\n leadingIcon?: boolean | undefined;\n trailingButton?: boolean | undefined;\n invalid?: boolean | undefined;\n disabled?: boolean | undefined;\n readOnly?: boolean | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst Root = /* @__PURE__ */ forwardRef<HTMLDivElement, InputGroupProps>(function InputGroup(\n { size = \"md\", leadingIcon, trailingButton, invalid, disabled, readOnly, className, children, ...props },\n ref,\n) {\n return (\n <Ctx.Provider value={{ size }}>\n <div\n ref={ref}\n className={cn(\n \"relative flex w-full min-w-0 items-center rounded-pill material-field transition-control cursor-text\",\n KAESO_INPUT_GROUP_VARIANTS.size[size].classes,\n leadingIcon && LEADING[size],\n trailingButton && TRAILING_BUTTON[size],\n disabled && \"cursor-not-allowed\",\n className,\n )}\n {...(invalid ? { \"data-invalid\": \"\" } : {})}\n {...(disabled ? { \"data-disabled\": \"\" } : {})}\n {...(readOnly ? { \"data-readonly\": \"\" } : {})}\n onMouseDown={focusInputOnPress}\n {...props}\n >\n {children}\n </div>\n </Ctx.Provider>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Root.displayName = \"InputGroup\";\n\nexport interface InputGroupInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\"> {}\n\nconst Input = /* @__PURE__ */ forwardRef<HTMLInputElement, InputGroupInputProps>(function InputGroupInput({ className, ...props }, ref) {\n return (\n <input\n ref={ref}\n className={cn(\n \"min-w-0 flex-1 bg-transparent bidi-plaintext text-inherit text-fg outline-none placeholder:text-fg-tertiary disabled:cursor-not-allowed disabled:text-fg-disabled read-only:cursor-text\",\n className,\n )}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Input.displayName = \"InputGroup.Input\";\n\nexport interface InputGroupAddonProps extends HTMLAttributes<HTMLSpanElement> {\n icon?: IconData | undefined;\n}\n\nconst Addon = /* @__PURE__ */ forwardRef<HTMLSpanElement, InputGroupAddonProps>(function InputGroupAddon({ icon, className, children, ...props }, ref) {\n const { size } = useContext(Ctx);\n return (\n <span ref={ref} className={cn(\"inline-flex shrink-0 items-center gap-4 bidi-plaintext text-fg-secondary select-none\", className)} {...props}>\n {icon && <Icon icon={icon} size={INPUT_ICON_SIZE[size]} />}\n {children}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Addon.displayName = \"InputGroup.Addon\";\n\nexport interface InputGroupButtonProps {\n icon: IconData;\n \"aria-label\": string;\n onClick?: (() => void) | undefined;\n disabled?: boolean | undefined;\n className?: string | undefined;\n}\n\nconst GroupButton = /* @__PURE__ */ forwardRef<HTMLButtonElement, InputGroupButtonProps>(function InputGroupButton({ icon, className, ...props }, ref) {\n const { size } = useContext(Ctx);\n return (\n <Button\n ref={ref as React.Ref<HTMLButtonElement & HTMLAnchorElement>}\n shape=\"circle\"\n variant=\"quiet\"\n size={size === \"xl\" ? \"md\" : size === \"lg\" ? \"sm\" : size === \"md\" ? \"sm\" : \"xs\"}\n icon={icon}\n className={className}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") GroupButton.displayName = \"InputGroup.Button\";\n\nexport const InputGroup = /* @__PURE__ */ Object.assign(Root, { Input, Addon, Button: GroupButton });\nexport const useInputGroupSize = () => useContext(Ctx).size;\n"],"mappings":";;;;;;;AAEA,SAAgBC,EAAkB,GAA4B;CAC5D,IAAI,EAAE,WAAW,EAAE,eAAe;CAClC,IAAMC,IAAQ,EAAE,cAAc,cAAc,0BAA0B;CACtE,AAAKA,KAAS,GAAM,aACpB,EAAE,eAAe,GACjBA,EAAM,MAAM;AACd;;;ACDA,IAAaC,IAA6B,EACxC,MAAM;CACJ,IAAI,EAAE,SAAS,6BAA6B;CAC5C,IAAI,EAAE,SAAS,6BAA6B;CAC5C,IAAI,EAAE,SAAS,6BAA6B;CAC5C,IAAI,EAAE,SAAS,gCAAgC;AACjD,EACF,GACaC,IAAqC,EAAE,MAAM,KAAK,GAGzDC,IAAqC;CAAE,IAAI;CAAS,IAAI;CAAS,IAAI;CAAS,IAAI;AAAQ,GAC1FC,IAA6C;CAAE,IAAI;CAAQ,IAAI;CAAQ,IAAI;CAAQ,IAAI;AAAO,GACvFC,IAA+C;CAAE,IAAI;CAAM,IAAI;CAAM,IAAI;CAAM,IAAI;AAAK,GAE/FC,IAAsB,kBAAmC,EAAE,MAAM,KAAK,CAAC,GAYvEC,IAAuB,kBAA4C,SACvE,EAAE,UAAO,MAAM,gBAAa,mBAAgB,YAAS,aAAU,aAAU,cAAW,aAAU,GAAGC,KACjG,GACA;CACA,OACE,kBAACF,EAAI,UAAL;EAAc,OAAO,EAAE,QAAK;EAC1B,UAAA,kBAAC,OAAD;GACO;GACL,WAAWR,EACT,wGACAG,EAA2B,KAAKQ,EAAK,CAAC,SACtCC,KAAeP,EAAQM,IACvBE,KAAkBP,EAAgBK,IAClCG,KAAY,sBACZC,CACF;GACA,GAAKC,IAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;GACzC,GAAKF,IAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;GAC3C,GAAKG,IAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;GAC3C,aAAahB;GACb,GAAIS;GAEH;EACE,CAAA;CACO,CAAA;AAElB,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAK,cAAc;AAI9D,IAAMQ,IAAwB,kBAAmD,SAAyB,EAAE,cAAW,GAAGR,KAAS,GAAK;CACtI,OACE,kBAAC,SAAD;EACO;EACL,WAAWV,EACT,2LACAe,CACF;EACA,GAAIL;CACL,CAAA;AAEL,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAM,cAAc;AAM/D,IAAMS,IAAwB,kBAAkD,SAAyB,EAAE,SAAM,cAAW,aAAU,GAAGT,KAAS,GAAK;CACrJ,IAAM,EAAE,YAASU,EAAWZ,CAAG;CAC/B,OACE,kBAAC,QAAD;EAAW;EAAK,WAAWR,EAAG,wFAAwFe,CAAS;EAAG,GAAIL;EAAtI,UAAA,CACGW,KAAQ,kBAACC,GAAD;GAAY;GAAM,MAAMf,EAAgBI;EAAQ,CAAA,GACxDY,CACG;;AAEV,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAM,cAAc;AAU/D,IAAMC,IAA8B,kBAAqD,SAA0B,EAAE,SAAM,cAAW,GAAGd,KAAS,GAAK;CACrJ,IAAM,EAAE,YAASU,EAAWZ,CAAG;CAC/B,OACE,kBAACiB,GAAD;EACO;EACL,OAAM;EACN,SAAQ;EACR,MAAMd,MAAS,OAAO,OAAOA,MAAS,QAAcA,MAAS,OAAhB,OAA8B;EACrE;EACK;EACX,GAAID;CACL,CAAA;AAEL,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAY,cAAc;AAErE,IAAagB,IAA6B,uBAAO,OAAOjB,GAAM;CAAE;CAAO;CAAO,QAAQe;AAAY,CAAC,GACtFG,UAA0BP,EAAWZ,CAAG,CAAC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { i as e } from "./context-BELWW79w.js";
3
3
  import { formatISODate as t, parseISODate as n } from "../format.js";
4
- import { n as r } from "./input-group-BoxjnN8I.js";
4
+ import { n as r } from "./input-group-Dgdb0JpZ.js";
5
5
  import { useState as i } from "react";
6
6
  import { jsx as a } from "react/jsx-runtime";
7
7
  //#region src/components/date-picker/iso-field.tsx
@@ -30,4 +30,4 @@ function o({ label: o, value: s, onCommit: c }) {
30
30
  //#endregion
31
31
  export { o as t };
32
32
 
33
- //# sourceMappingURL=iso-field-DAa6iPWn.js.map
33
+ //# sourceMappingURL=iso-field-SOZ7Z-yE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"iso-field-DAa6iPWn.js","names":["useUiText","InputGroup","IsoField","t","text","setText","useState","value","formatISODate","shown","setShown","label","d","parseISODate","onCommit"],"sources":["../../src/components/date-picker/iso-field.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { InputGroup } from \"../input/input-group.js\";\nimport { formatISODate, parseISODate } from \"../../format/index.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport function IsoField({ label, value, onCommit }: { label: string; value: Date | undefined; onCommit: (d: Date) => boolean | void }) {\n const t = useUiText();\n const [text, setText] = useState(value ? formatISODate(value) : \"\");\n const [shown, setShown] = useState(value);\n if (value !== shown) {\n setShown(value);\n setText(value ? formatISODate(value) : \"\");\n }\n return (\n <InputGroup size=\"sm\" className=\"flex-1\">\n <InputGroup.Input\n aria-label={label}\n placeholder={t(\"datePicker.isoPlaceholder\", \"YYYY-MM-DD\")}\n value={text}\n inputMode=\"numeric\"\n className=\"mono text-small\"\n onChange={(e) => setText(e.target.value)}\n onBlur={() => {\n const d = parseISODate(text);\n if (!d || onCommit(d) === false) setText(value ? formatISODate(value) : \"\");\n }}\n onKeyDown={(e) => {\n if (e.key !== \"Enter\") return;\n e.preventDefault();\n (e.target as HTMLInputElement).blur();\n }}\n />\n </InputGroup>\n );\n}\n"],"mappings":";;;;;;;AAKA,SAAgBE,EAAS,EAAE,UAAO,UAAO,eAA+F;CACtI,IAAMC,IAAIH,EAAU,GACd,CAACI,GAAMC,KAAWC,EAASC,IAAQC,EAAcD,CAAK,IAAI,EAAE,GAC5D,CAACE,GAAOC,KAAYJ,EAASC,CAAK;CAKxC,OAJIA,MAAUE,MACZC,EAASH,CAAK,GACdF,EAAQE,IAAQC,EAAcD,CAAK,IAAI,EAAE,IAGzC,kBAACN,GAAD;EAAY,MAAK;EAAK,WAAU;EAC9B,UAAA,kBAACA,EAAW,OAAZ;GACE,cAAYU;GACZ,aAAaR,EAAE,6BAA6B,YAAY;GACxD,OAAOC;GACP,WAAU;GACV,WAAU;GACV,WAAW,MAAMC,EAAQ,EAAE,OAAO,KAAK;GACvC,cAAc;IACZ,IAAMO,IAAIC,EAAaT,CAAI;IAC3B,CAAI,CAACQ,KAAKE,EAASF,CAAC,MAAM,OAAOP,EAAQE,IAAQC,EAAcD,CAAK,IAAI,EAAE;GAC5E;GACA,YAAY,MAAM;IAChB,AAAI,EAAE,QAAQ,YACd,EAAE,eAAe,GACjB,EAAG,OAA4B,KAAK;GACtC;EACD,CAAA;CACS,CAAA;AAEhB"}
1
+ {"version":3,"file":"iso-field-SOZ7Z-yE.js","names":["useUiText","InputGroup","IsoField","t","text","setText","useState","value","formatISODate","shown","setShown","label","d","parseISODate","onCommit"],"sources":["../../src/components/date-picker/iso-field.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { InputGroup } from \"../input/input-group.js\";\nimport { formatISODate, parseISODate } from \"../../format/index.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport function IsoField({ label, value, onCommit }: { label: string; value: Date | undefined; onCommit: (d: Date) => boolean | void }) {\n const t = useUiText();\n const [text, setText] = useState(value ? formatISODate(value) : \"\");\n const [shown, setShown] = useState(value);\n if (value !== shown) {\n setShown(value);\n setText(value ? formatISODate(value) : \"\");\n }\n return (\n <InputGroup size=\"sm\" className=\"flex-1\">\n <InputGroup.Input\n aria-label={label}\n placeholder={t(\"datePicker.isoPlaceholder\", \"YYYY-MM-DD\")}\n value={text}\n inputMode=\"numeric\"\n className=\"mono text-small\"\n onChange={(e) => setText(e.target.value)}\n onBlur={() => {\n const d = parseISODate(text);\n if (!d || onCommit(d) === false) setText(value ? formatISODate(value) : \"\");\n }}\n onKeyDown={(e) => {\n if (e.key !== \"Enter\") return;\n e.preventDefault();\n (e.target as HTMLInputElement).blur();\n }}\n />\n </InputGroup>\n );\n}\n"],"mappings":";;;;;;;AAKA,SAAgBE,EAAS,EAAE,UAAO,UAAO,eAA+F;CACtI,IAAMC,IAAIH,EAAU,GACd,CAACI,GAAMC,KAAWC,EAASC,IAAQC,EAAcD,CAAK,IAAI,EAAE,GAC5D,CAACE,GAAOC,KAAYJ,EAASC,CAAK;CAKxC,OAJIA,MAAUE,MACZC,EAASH,CAAK,GACdF,EAAQE,IAAQC,EAAcD,CAAK,IAAI,EAAE,IAGzC,kBAACN,GAAD;EAAY,MAAK;EAAK,WAAU;EAC9B,UAAA,kBAACA,EAAW,OAAZ;GACE,cAAYU;GACZ,aAAaR,EAAE,6BAA6B,YAAY;GACxD,OAAOC;GACP,WAAU;GACV,WAAU;GACV,WAAW,MAAMC,EAAQ,EAAE,OAAO,KAAK;GACvC,cAAc;IACZ,IAAMO,IAAIC,EAAaT,CAAI;IAC3B,CAAI,CAACQ,KAAKE,EAASF,CAAC,MAAM,OAAOP,EAAQE,IAAQC,EAAcD,CAAK,IAAI,EAAE;GAC5E;GACA,YAAY,MAAM;IAChB,AAAI,EAAE,QAAQ,YACd,EAAE,eAAe,GACjB,EAAG,OAA4B,KAAK;GACtC;EACD,CAAA;CACS,CAAA;AAEhB"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import { t as e } from "./cn-DUDmdLpZ.js";
2
+ import { t as e } from "./cn-Isw2DnQX.js";
3
3
  import { i as t } from "./context-BELWW79w.js";
4
- import { t as n } from "./icon-BqujXDUc.js";
4
+ import { t as n } from "./icon-D5uD_mnL.js";
5
5
  import { t as r } from "./use-copy-Dm2ncvMX.js";
6
6
  import { forwardRef as i, useState as a } from "react";
7
7
  import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
@@ -172,4 +172,4 @@ process.env.NODE_ENV !== "production" && (v.displayName = "JsonView");
172
172
  //#endregion
173
173
  export { p as n, f as r, v as t };
174
174
 
175
- //# sourceMappingURL=json-view-BkG2hTXV.js.map
175
+ //# sourceMappingURL=json-view-DCTMY_j4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-view-BkG2hTXV.js","names":["_Fragment","__icon_Tick02Icon","__icon_Copy01Icon","__icon_ArrowRight01Icon","cn","useUiText","Icon","useCopy","Fragment$1","KAESO_JSON_VIEW_VARIANTS","KAESO_JSON_VIEW_DEFAULT_VARIANTS","Mark","query","text","i","Scalar","v","CopyPath","t","copied","e","copy","path","Tick02Icon","Copy01Icon","Node","initialOpen","open","setOpen","useState","depth","isObj","value","entries","keyLabel","name","comma","last","o","c","ArrowRight01Icon","k","JsonView","surface","className","defaultDepth"],"sources":["../../src/components/code-block/json-view.tsx"],"sourcesContent":["import { forwardRef, 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\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=\"break-all text-info-text\">\n \"<Mark text={String(v)} query={query} />\"\n </span>\n );\n}\n\nfunction CopyPath({ path }: { path: string }) {\n const { copied, copy } = useCopy();\n const t = useUiText();\n return (\n <button\n type=\"button\"\n aria-label={copied ? t(\"jsonView.pathCopied\", \"Path copied\") : t(\"jsonView.copyPath\", \"Copy path {path}\", { path })}\n onClick={(e) => {\n e.stopPropagation();\n void copy(path);\n }}\n className=\"relative ml-8 inline-flex size-20 items-center justify-center rounded-pill text-fg-tertiary tap-target opacity-0 transition-control group-hover/row:opacity-100 coarse:opacity-100 hover:bg-fill-2 hover:text-fg focus-visible:opacity-100\"\n >\n <Icon icon={copied ? __icon_Tick02Icon : __icon_Copy01Icon} size=\"xs\" />\n </button>\n );\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 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 if (!isObj) {\n return (\n <div className=\"group/row flex min-h-20 items-start pl-20\" style={{ paddingLeft: depth * 16 + 20 }}>\n <span>\n {keyLabel}\n <Scalar v={value} query={query} />\n <span className=\"text-fg-tertiary\">{comma}</span>\n </span>\n {path && <CopyPath path={path} />}\n </div>\n );\n }\n const [o, c] = Array.isArray(value) ? [\"[\", \"]\"] : [\"{\", \"}\"];\n return (\n <div>\n <div className=\"group/row flex min-h-24 items-center\" style={{ paddingLeft: depth * 16 }}>\n <button\n type=\"button\"\n aria-expanded={open}\n aria-label={\n path\n ? open\n ? t(\"jsonView.collapsePath\", \"Collapse {path}\", { path })\n : t(\"jsonView.expandPath\", \"Expand {path}\", { path })\n : open\n ? t(\"jsonView.collapse\", \"Collapse\")\n : t(\"jsonView.expand\", \"Expand\")\n }\n onClick={() => setOpen(!open)}\n className=\"-ml-4 inline-flex size-24 cursor-pointer items-center justify-center rounded-pill text-fg-tertiary hover:bg-fill-2 hover:text-fg focus-ring\"\n >\n <Icon icon={__icon_ArrowRight01Icon} size=\"xs\" className={cn(\"transition-transform duration-180\", open && \"rotate-90\")} />\n </button>\n <span>\n {keyLabel}\n <span className=\"text-fg-tertiary\">{o}</span>\n {!open && (\n <button type=\"button\" onClick={() => setOpen(true)} className=\"mx-4 cursor-pointer rounded-code px-4 text-fg-tertiary hover:bg-fill-2\">\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} />}\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 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 return (\n <div\n ref={ref}\n tabIndex={0}\n role=\"region\"\n aria-label={t(\"jsonView.label\", \"JSON\")}\n className={cn(\n \"mono overflow-x-auto text-small focus-ring-inset leading-code text-fg scrollbar-quiet\",\n KAESO_JSON_VIEW_VARIANTS.surface[surface].classes,\n className,\n )}\n >\n <Node value={value as Json} path=\"\" depth={0} open={defaultDepth} query={query} last />\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") JsonView.displayName = \"JsonView\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"json-view-DCTMY_j4.js","names":["_Fragment","__icon_Tick02Icon","__icon_Copy01Icon","__icon_ArrowRight01Icon","cn","useUiText","Icon","useCopy","Fragment$1","KAESO_JSON_VIEW_VARIANTS","KAESO_JSON_VIEW_DEFAULT_VARIANTS","Mark","query","text","i","Scalar","v","CopyPath","t","copied","e","copy","path","Tick02Icon","Copy01Icon","Node","initialOpen","open","setOpen","useState","depth","isObj","value","entries","keyLabel","name","comma","last","o","c","ArrowRight01Icon","k","JsonView","surface","className","defaultDepth"],"sources":["../../src/components/code-block/json-view.tsx"],"sourcesContent":["import { forwardRef, 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\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=\"break-all text-info-text\">\n \"<Mark text={String(v)} query={query} />\"\n </span>\n );\n}\n\nfunction CopyPath({ path }: { path: string }) {\n const { copied, copy } = useCopy();\n const t = useUiText();\n return (\n <button\n type=\"button\"\n aria-label={copied ? t(\"jsonView.pathCopied\", \"Path copied\") : t(\"jsonView.copyPath\", \"Copy path {path}\", { path })}\n onClick={(e) => {\n e.stopPropagation();\n void copy(path);\n }}\n className=\"relative ml-8 inline-flex size-20 items-center justify-center rounded-pill text-fg-tertiary tap-target opacity-0 transition-control group-hover/row:opacity-100 coarse:opacity-100 hover:bg-fill-2 hover:text-fg focus-visible:opacity-100\"\n >\n <Icon icon={copied ? __icon_Tick02Icon : __icon_Copy01Icon} size=\"xs\" />\n </button>\n );\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 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 if (!isObj) {\n return (\n <div className=\"group/row flex min-h-20 items-start pl-20\" style={{ paddingLeft: depth * 16 + 20 }}>\n <span>\n {keyLabel}\n <Scalar v={value} query={query} />\n <span className=\"text-fg-tertiary\">{comma}</span>\n </span>\n {path && <CopyPath path={path} />}\n </div>\n );\n }\n const [o, c] = Array.isArray(value) ? [\"[\", \"]\"] : [\"{\", \"}\"];\n return (\n <div>\n <div className=\"group/row flex min-h-24 items-center\" style={{ paddingLeft: depth * 16 }}>\n <button\n type=\"button\"\n aria-expanded={open}\n aria-label={\n path\n ? open\n ? t(\"jsonView.collapsePath\", \"Collapse {path}\", { path })\n : t(\"jsonView.expandPath\", \"Expand {path}\", { path })\n : open\n ? t(\"jsonView.collapse\", \"Collapse\")\n : t(\"jsonView.expand\", \"Expand\")\n }\n onClick={() => setOpen(!open)}\n className=\"-ml-4 inline-flex size-24 cursor-pointer items-center justify-center rounded-pill text-fg-tertiary hover:bg-fill-2 hover:text-fg focus-ring\"\n >\n <Icon icon={__icon_ArrowRight01Icon} size=\"xs\" className={cn(\"transition-transform duration-180\", open && \"rotate-90\")} />\n </button>\n <span>\n {keyLabel}\n <span className=\"text-fg-tertiary\">{o}</span>\n {!open && (\n <button type=\"button\" onClick={() => setOpen(true)} className=\"mx-4 cursor-pointer rounded-code px-4 text-fg-tertiary hover:bg-fill-2\">\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} />}\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 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 return (\n <div\n ref={ref}\n tabIndex={0}\n role=\"region\"\n aria-label={t(\"jsonView.label\", \"JSON\")}\n className={cn(\n \"mono overflow-x-auto text-small focus-ring-inset leading-code text-fg scrollbar-quiet\",\n KAESO_JSON_VIEW_VARIANTS.surface[surface].classes,\n className,\n )}\n >\n <Node value={value as Json} path=\"\" depth={0} open={defaultDepth} query={query} last />\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") JsonView.displayName = \"JsonView\";\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { t as e } from "./cn-DUDmdLpZ.js";
2
+ import { t as e } from "./cn-Isw2DnQX.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
5
  import { jsx as o, jsxs as s } from "react/jsx-runtime";
@@ -129,4 +129,4 @@ process.env.NODE_ENV !== "production" && (g.displayName = "KbdSequence");
129
129
  //#endregion
130
130
  export { m as a, g as i, c as n, h as r, l as t };
131
131
 
132
- //# sourceMappingURL=kbd-DqWmbr_e.js.map
132
+ //# sourceMappingURL=kbd-9A9rX60U.js.map