@logicplanes/kaeso-ui 0.4.1 → 0.4.3

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 (372) hide show
  1. package/NOTICE.md +1 -1
  2. package/ai/component-guides.md +333 -21
  3. package/ai/component-registry.json +631 -32
  4. package/ai/component-registry.md +164 -28
  5. package/ai/icons.md +3 -3
  6. package/ai/tokens.md +1 -1
  7. package/dist/blocks/delete-resource.js +15 -14
  8. package/dist/blocks/delete-resource.js.map +1 -1
  9. package/dist/blocks/pages.js +5 -5
  10. package/dist/blocks/resource-list.js +42 -41
  11. package/dist/blocks/resource-list.js.map +1 -1
  12. package/dist/chunks/agent-avatar-0pdBTWkR.js +171 -0
  13. package/dist/chunks/agent-avatar-0pdBTWkR.js.map +1 -0
  14. package/dist/chunks/{app-frame-DZPEf2NQ.js → app-frame-DogGRmsu.js} +23 -22
  15. package/dist/chunks/app-frame-DogGRmsu.js.map +1 -0
  16. package/dist/chunks/{avatar-HnvBUoe5.js → avatar-CWbdwbJv.js} +2 -2
  17. package/dist/chunks/{avatar-HnvBUoe5.js.map → avatar-CWbdwbJv.js.map} +1 -1
  18. package/dist/chunks/{badge-CM8ahjDR.js → badge-C2KtxCLB.js} +2 -2
  19. package/dist/chunks/{badge-CM8ahjDR.js.map → badge-C2KtxCLB.js.map} +1 -1
  20. package/dist/chunks/{banner-CvYgPwCc.js → banner-BA2ALw9M.js} +4 -4
  21. package/dist/chunks/{banner-CvYgPwCc.js.map → banner-BA2ALw9M.js.map} +1 -1
  22. package/dist/chunks/{button-9q66Ta23.js → button-CzuxqawA.js} +8 -8
  23. package/dist/chunks/{button-9q66Ta23.js.map → button-CzuxqawA.js.map} +1 -1
  24. package/dist/chunks/{calendar-CeNcqLFd.js → calendar-BWaf2MXc.js} +58 -42
  25. package/dist/chunks/calendar-BWaf2MXc.js.map +1 -0
  26. package/dist/chunks/{checkbox-C_DrNA2N.js → checkbox-CQjwCPkc.js} +12 -10
  27. package/dist/chunks/checkbox-CQjwCPkc.js.map +1 -0
  28. package/dist/chunks/{cn-Isw2DnQX.js → cn-Dj6sRgkF.js} +8 -1
  29. package/dist/chunks/cn-Dj6sRgkF.js.map +1 -0
  30. package/dist/chunks/{code-block-mEH6Sy3h.js → code-block-D5A-CGXG.js} +75 -54
  31. package/dist/chunks/code-block-D5A-CGXG.js.map +1 -0
  32. package/dist/chunks/{code-Bp2p9AuD.js → code-tqj0uhBL.js} +2 -2
  33. package/dist/chunks/{code-Bp2p9AuD.js.map → code-tqj0uhBL.js.map} +1 -1
  34. package/dist/chunks/{collapsible-CtQNJn9b.js → collapsible-CKrCX_T9.js} +3 -3
  35. package/dist/chunks/{collapsible-CtQNJn9b.js.map → collapsible-CKrCX_T9.js.map} +1 -1
  36. package/dist/chunks/combobox-DjDI7SUC.js +319 -0
  37. package/dist/chunks/combobox-DjDI7SUC.js.map +1 -0
  38. package/dist/chunks/{command-list-CzMbdtJs.js → command-list-C2Y7V_lt.js} +54 -54
  39. package/dist/chunks/command-list-C2Y7V_lt.js.map +1 -0
  40. package/dist/chunks/{copy-button-Cdea0wKl.js → copy-button-FJvPJn72.js} +5 -5
  41. package/dist/chunks/{copy-button-Cdea0wKl.js.map → copy-button-FJvPJn72.js.map} +1 -1
  42. package/dist/chunks/{core-FtMDNELx.js → core-BYns5ytV.js} +146 -140
  43. package/dist/chunks/core-BYns5ytV.js.map +1 -0
  44. package/dist/chunks/{date-popup-NytWvSNh.js → date-popup-CPA_zt6o.js} +4 -4
  45. package/dist/chunks/{date-popup-NytWvSNh.js.map → date-popup-CPA_zt6o.js.map} +1 -1
  46. package/dist/chunks/{de-BnNQtBSV.js → de-CPXJh9cq.js} +3 -1
  47. package/dist/chunks/de-CPXJh9cq.js.map +1 -0
  48. package/dist/chunks/dialog-Cg9A_6SF.js +383 -0
  49. package/dist/chunks/dialog-Cg9A_6SF.js.map +1 -0
  50. package/dist/chunks/{empty-By1qTJr6.js → empty-DvhyMXQq.js} +2 -2
  51. package/dist/chunks/{empty-By1qTJr6.js.map → empty-DvhyMXQq.js.map} +1 -1
  52. package/dist/chunks/{field-DfITT6Jm.js → field-TviMvYa2.js} +2 -2
  53. package/dist/chunks/{field-DfITT6Jm.js.map → field-TviMvYa2.js.map} +1 -1
  54. package/dist/chunks/{icon-D5uD_mnL.js → icon-D7ja-_Yk.js} +2 -2
  55. package/dist/chunks/{icon-D5uD_mnL.js.map → icon-D7ja-_Yk.js.map} +1 -1
  56. package/dist/chunks/icon-DVooQfk4.js +94 -0
  57. package/dist/chunks/icon-DVooQfk4.js.map +1 -0
  58. package/dist/chunks/{icon-button-C7Du4pvb.js → icon-button-CrdF_eMG.js} +3 -3
  59. package/dist/chunks/{icon-button-C7Du4pvb.js.map → icon-button-CrdF_eMG.js.map} +1 -1
  60. package/dist/chunks/{identity-BcVQd-7H.js → identity-BmhQ6BQ-.js} +18 -18
  61. package/dist/chunks/identity-BmhQ6BQ-.js.map +1 -0
  62. package/dist/chunks/{input-B6Docqrk.js → input-2VJuj_M4.js} +13 -8
  63. package/dist/chunks/input-2VJuj_M4.js.map +1 -0
  64. package/dist/chunks/{input-group-Dgdb0JpZ.js → input-group-DQ_4DoXg.js} +4 -4
  65. package/dist/chunks/{input-group-Dgdb0JpZ.js.map → input-group-DQ_4DoXg.js.map} +1 -1
  66. package/dist/chunks/{inset-BnBj8NJV.js → inset-BUzyXLK4.js} +14 -4
  67. package/dist/chunks/inset-BUzyXLK4.js.map +1 -0
  68. package/dist/chunks/{iso-field-SOZ7Z-yE.js → iso-field-B2rTwiBo.js} +2 -2
  69. package/dist/chunks/{iso-field-SOZ7Z-yE.js.map → iso-field-B2rTwiBo.js.map} +1 -1
  70. package/dist/chunks/{json-view-DCTMY_j4.js → json-view-Dqd2TDkc.js} +3 -3
  71. package/dist/chunks/{json-view-DCTMY_j4.js.map → json-view-Dqd2TDkc.js.map} +1 -1
  72. package/dist/chunks/{kbd-9A9rX60U.js → kbd-BF1vKXJf.js} +2 -2
  73. package/dist/chunks/{kbd-9A9rX60U.js.map → kbd-BF1vKXJf.js.map} +1 -1
  74. package/dist/chunks/{link-CtII7u3h.js → link-KWI7PevW.js} +4 -4
  75. package/dist/chunks/{link-CtII7u3h.js.map → link-KWI7PevW.js.map} +1 -1
  76. package/dist/chunks/link-provider-cvl8lSTT.js +29 -0
  77. package/dist/chunks/link-provider-cvl8lSTT.js.map +1 -0
  78. package/dist/chunks/{list-CMXBTVkI.js → list-M1csq-d4.js} +21 -19
  79. package/dist/chunks/{list-CMXBTVkI.js.map → list-M1csq-d4.js.map} +1 -1
  80. package/dist/chunks/{loader-DqOUwS1j.js → loader-DCfPndXa.js} +2 -2
  81. package/dist/chunks/{loader-DqOUwS1j.js.map → loader-DCfPndXa.js.map} +1 -1
  82. package/dist/chunks/{markdown-CwVQ0niB.js → markdown-DULktoTK.js} +9 -9
  83. package/dist/chunks/{markdown-CwVQ0niB.js.map → markdown-DULktoTK.js.map} +1 -1
  84. package/dist/chunks/{menu-Cjg4RggA.js → menu-DEmBfdPm.js} +32 -29
  85. package/dist/chunks/menu-DEmBfdPm.js.map +1 -0
  86. package/dist/chunks/{meter-VrC2J2GF.js → meter-Bj4N3Xuh.js} +2 -2
  87. package/dist/chunks/{meter-VrC2J2GF.js.map → meter-Bj4N3Xuh.js.map} +1 -1
  88. package/dist/chunks/nav-sheet-CzgIwgAm.js +60 -0
  89. package/dist/chunks/nav-sheet-CzgIwgAm.js.map +1 -0
  90. package/dist/chunks/{nav-wordmark-CjWM3NYa.js → nav-wordmark-_pjheAsZ.js} +2 -2
  91. package/dist/chunks/{nav-wordmark-CjWM3NYa.js.map → nav-wordmark-_pjheAsZ.js.map} +1 -1
  92. package/dist/chunks/{page-header-CZCQVHYE.js → page-header-DL2y2iZp.js} +4 -4
  93. package/dist/chunks/{page-header-CZCQVHYE.js.map → page-header-DL2y2iZp.js.map} +1 -1
  94. package/dist/chunks/{pagination-BStrMDqM.js → pagination-Cn_qF4cg.js} +4 -4
  95. package/dist/chunks/{pagination-BStrMDqM.js.map → pagination-Cn_qF4cg.js.map} +1 -1
  96. package/dist/chunks/{picker-popover-BerQAEBT.js → picker-popover-BxyU1U9F.js} +17 -16
  97. package/dist/chunks/{picker-popover-BerQAEBT.js.map → picker-popover-BxyU1U9F.js.map} +1 -1
  98. package/dist/chunks/{popover-CgLt_4yG.js → popover-DNN4S47w.js} +3 -3
  99. package/dist/chunks/{popover-CgLt_4yG.js.map → popover-DNN4S47w.js.map} +1 -1
  100. package/dist/chunks/portal-context-BBbzDKmY.js.map +1 -1
  101. package/dist/chunks/{radio-07Muf4cX.js → radio-CDDFpdtL.js} +5 -5
  102. package/dist/chunks/{radio-07Muf4cX.js.map → radio-CDDFpdtL.js.map} +1 -1
  103. package/dist/chunks/{range-popup-BCov1iPe.js → range-popup-CRyWYUB1.js} +6 -6
  104. package/dist/chunks/{range-popup-BCov1iPe.js.map → range-popup-CRyWYUB1.js.map} +1 -1
  105. package/dist/chunks/{release-art-69WpgVik.js → release-art-ZwfFQImt.js} +2 -2
  106. package/dist/chunks/{release-art-69WpgVik.js.map → release-art-ZwfFQImt.js.map} +1 -1
  107. package/dist/chunks/{rights-UVngOX_4.js → rights-Cyp0Pzp-.js} +9 -9
  108. package/dist/chunks/{rights-UVngOX_4.js.map → rights-Cyp0Pzp-.js.map} +1 -1
  109. package/dist/chunks/scroll-area-D8MD7Vpo.js +42 -0
  110. package/dist/chunks/scroll-area-D8MD7Vpo.js.map +1 -0
  111. package/dist/chunks/{section-Bvg0EUnr.js → section-Ce1efbsP.js} +3 -3
  112. package/dist/chunks/{section-Bvg0EUnr.js.map → section-Ce1efbsP.js.map} +1 -1
  113. package/dist/chunks/{segmented-DRLDN8EW.js → segmented-CErcoxwi.js} +4 -4
  114. package/dist/chunks/{segmented-DRLDN8EW.js.map → segmented-CErcoxwi.js.map} +1 -1
  115. package/dist/chunks/{select-eFTHLeYG.js → select-x4XVsdCI.js} +4 -4
  116. package/dist/chunks/{select-eFTHLeYG.js.map → select-x4XVsdCI.js.map} +1 -1
  117. package/dist/chunks/{separator-D86IW7Ge.js → separator-D7TzNHmX.js} +2 -2
  118. package/dist/chunks/{separator-D86IW7Ge.js.map → separator-D7TzNHmX.js.map} +1 -1
  119. package/dist/chunks/{sidebar-DifJ5KgE.js → sidebar-3r1ZRXlN.js} +255 -237
  120. package/dist/chunks/sidebar-3r1ZRXlN.js.map +1 -0
  121. package/dist/chunks/{sidebar-menu-XKOiwrQp.js → sidebar-menu-BN3jkTlK.js} +2 -2
  122. package/dist/chunks/{sidebar-menu-XKOiwrQp.js.map → sidebar-menu-BN3jkTlK.js.map} +1 -1
  123. package/dist/chunks/{skeleton-Cu74kGJA.js → skeleton-Dcz57Zyp.js} +2 -2
  124. package/dist/chunks/{skeleton-Cu74kGJA.js.map → skeleton-Dcz57Zyp.js.map} +1 -1
  125. package/dist/chunks/{slider-Dh0qq1wa.js → slider-Ci83PGtj.js} +2 -2
  126. package/dist/chunks/{slider-Dh0qq1wa.js.map → slider-Ci83PGtj.js.map} +1 -1
  127. package/dist/chunks/{status-dot-u4Izk-uC.js → status-dot-QJTF0Yv4.js} +3 -3
  128. package/dist/chunks/{status-dot-u4Izk-uC.js.map → status-dot-QJTF0Yv4.js.map} +1 -1
  129. package/dist/chunks/{swap-text-CC77iKJF.js → swap-text-Dr0Irxz6.js} +2 -2
  130. package/dist/chunks/{swap-text-CC77iKJF.js.map → swap-text-Dr0Irxz6.js.map} +1 -1
  131. package/dist/chunks/{switch-CbU9m9gi.js → switch-BNMq_kGt.js} +3 -3
  132. package/dist/chunks/{switch-CbU9m9gi.js.map → switch-BNMq_kGt.js.map} +1 -1
  133. package/dist/chunks/table-BeOSKl_3.js +84 -0
  134. package/dist/chunks/table-BeOSKl_3.js.map +1 -0
  135. package/dist/chunks/{tag-CqSk8F7M.js → tag-D_M1s2qS.js} +4 -4
  136. package/dist/chunks/{tag-CqSk8F7M.js.map → tag-D_M1s2qS.js.map} +1 -1
  137. package/dist/chunks/{text-hFc6TDp9.js → text-CIXH8rmT.js} +3 -3
  138. package/dist/chunks/{text-hFc6TDp9.js.map → text-CIXH8rmT.js.map} +1 -1
  139. package/dist/chunks/{textarea-17Ftvph_.js → textarea--4FRL3Pb.js} +5 -5
  140. package/dist/chunks/{textarea-17Ftvph_.js.map → textarea--4FRL3Pb.js.map} +1 -1
  141. package/dist/chunks/theme-provider-DJhORMlc.js.map +1 -1
  142. package/dist/chunks/{timeseries-CbnSFD5q.js → timeseries-D1xjRXfk.js} +3 -3
  143. package/dist/chunks/{timeseries-CbnSFD5q.js.map → timeseries-D1xjRXfk.js.map} +1 -1
  144. package/dist/chunks/{toolbar-B_960Ttx.js → toolbar-WA_oZgu-.js} +6 -5
  145. package/dist/chunks/{toolbar-B_960Ttx.js.map → toolbar-WA_oZgu-.js.map} +1 -1
  146. package/dist/chunks/tooltip-OcwO0VUT.js +154 -0
  147. package/dist/chunks/tooltip-OcwO0VUT.js.map +1 -0
  148. package/dist/chunks/{tooltip-root-Dssjjp-E.js → tooltip-root-DzahJDVj.js} +4 -4
  149. package/dist/chunks/{tooltip-root-Dssjjp-E.js.map → tooltip-root-DzahJDVj.js.map} +1 -1
  150. package/dist/chunks/{use-scroll-margin-DfdTc_5D.js → use-scroll-margin-atRtf0v_.js} +14 -10
  151. package/dist/chunks/use-scroll-margin-atRtf0v_.js.map +1 -0
  152. package/dist/chunks/{virtual-rows-yAMjeAwj.js → virtual-rows-CC_kc2PR.js} +2 -2
  153. package/dist/chunks/{virtual-rows-yAMjeAwj.js.map → virtual-rows-CC_kc2PR.js.map} +1 -1
  154. package/dist/chunks/{zh-CN-CKffAT7j.js → zh-CN-29X4CDLE.js} +3 -1
  155. package/dist/chunks/zh-CN-29X4CDLE.js.map +1 -0
  156. package/dist/components/agent-avatar.js +2 -0
  157. package/dist/components/app-frame.js +2 -2
  158. package/dist/components/avatar.js +1 -1
  159. package/dist/components/badge.js +1 -1
  160. package/dist/components/banner.js +1 -1
  161. package/dist/components/button-group.js +4 -4
  162. package/dist/components/button.js +1 -1
  163. package/dist/components/calendar.js +1 -1
  164. package/dist/components/charts/bar.js +2 -2
  165. package/dist/components/charts/donut.js +2 -2
  166. package/dist/components/charts/gauge.js +2 -2
  167. package/dist/components/charts/heatmap.js +1 -1
  168. package/dist/components/charts/sankey.js +2 -2
  169. package/dist/components/charts/sparkline.js +1 -1
  170. package/dist/components/charts/timeseries.js +1 -1
  171. package/dist/components/charts.js +2 -2
  172. package/dist/components/checkbox.js +1 -1
  173. package/dist/components/code-block.js +2 -2
  174. package/dist/components/code.js +1 -1
  175. package/dist/components/collapsible.js +1 -1
  176. package/dist/components/combobox.js +1 -1
  177. package/dist/components/command-list.js +2 -2
  178. package/dist/components/command-palette.js +89 -84
  179. package/dist/components/command-palette.js.map +1 -1
  180. package/dist/components/copy-button.js +1 -1
  181. package/dist/components/data-table.js +193 -189
  182. package/dist/components/data-table.js.map +1 -1
  183. package/dist/components/date-picker.js +9 -7
  184. package/dist/components/date-picker.js.map +1 -1
  185. package/dist/components/dialog.js +125 -91
  186. package/dist/components/dialog.js.map +1 -1
  187. package/dist/components/display-options.js +52 -49
  188. package/dist/components/display-options.js.map +1 -1
  189. package/dist/components/empty.js +1 -1
  190. package/dist/components/field.js +1 -1
  191. package/dist/components/figure.js +60 -0
  192. package/dist/components/figure.js.map +1 -0
  193. package/dist/components/filter-chip.js +5 -5
  194. package/dist/components/filter-chip.js.map +1 -1
  195. package/dist/components/filter-row.js +2 -2
  196. package/dist/components/flow.js +2 -2
  197. package/dist/components/heading.js +1 -1
  198. package/dist/components/icon-button.js +1 -1
  199. package/dist/components/icon.js +2 -2
  200. package/dist/components/input.js +51 -51
  201. package/dist/components/input.js.map +1 -1
  202. package/dist/components/kaeso/conversation.js +8 -8
  203. package/dist/components/kaeso/identity.js +1 -1
  204. package/dist/components/kaeso/moments.js +5 -5
  205. package/dist/components/kaeso/rights.js +1 -1
  206. package/dist/components/kaeso/usage.js +12 -12
  207. package/dist/components/kaeso/usage.js.map +1 -1
  208. package/dist/components/kaeso.js +264 -96
  209. package/dist/components/kaeso.js.map +1 -1
  210. package/dist/components/kbd.js +1 -1
  211. package/dist/components/key-value.js +3 -3
  212. package/dist/components/label.js +1 -1
  213. package/dist/components/layout.js +1 -1
  214. package/dist/components/link.js +1 -1
  215. package/dist/components/list.js +1 -1
  216. package/dist/components/loader.js +2 -2
  217. package/dist/components/logo.js +2 -2
  218. package/dist/components/markdown.js +1 -1
  219. package/dist/components/menu.js +2 -2
  220. package/dist/components/meter.js +1 -1
  221. package/dist/components/page-header.js +1 -1
  222. package/dist/components/pagination.js +1 -1
  223. package/dist/components/playground.js +32 -31
  224. package/dist/components/playground.js.map +1 -1
  225. package/dist/components/popover.js +13 -12
  226. package/dist/components/popover.js.map +1 -1
  227. package/dist/components/qr-code.js +1 -1
  228. package/dist/components/radio.js +1 -1
  229. package/dist/components/release-art.js +1 -1
  230. package/dist/components/scroll-area.js +1 -41
  231. package/dist/components/section.js +1 -1
  232. package/dist/components/segmented.js +1 -1
  233. package/dist/components/select.js +1 -1
  234. package/dist/components/separator.js +1 -1
  235. package/dist/components/settings.js +10 -10
  236. package/dist/components/settings.js.map +1 -1
  237. package/dist/components/sheet.js +3 -3
  238. package/dist/components/sidebar.js +1 -1
  239. package/dist/components/skeleton.js +1 -1
  240. package/dist/components/slider.js +1 -1
  241. package/dist/components/stat.js +3 -3
  242. package/dist/components/status-dot.js +1 -1
  243. package/dist/components/surface.js +1 -1
  244. package/dist/components/swap-text.js +1 -1
  245. package/dist/components/switch.js +1 -1
  246. package/dist/components/table.js +1 -1
  247. package/dist/components/tabs.js +24 -24
  248. package/dist/components/tabs.js.map +1 -1
  249. package/dist/components/tag.js +1 -1
  250. package/dist/components/text.js +1 -1
  251. package/dist/components/theme-image.js +1 -1
  252. package/dist/components/theme-menu.js +33 -30
  253. package/dist/components/theme-menu.js.map +1 -1
  254. package/dist/components/theme-select.js +1 -1
  255. package/dist/components/thumbnail.js +41 -0
  256. package/dist/components/thumbnail.js.map +1 -0
  257. package/dist/components/timeline.js +1 -1
  258. package/dist/components/toast.js +100 -91
  259. package/dist/components/toast.js.map +1 -1
  260. package/dist/components/toc.js +37 -22
  261. package/dist/components/toc.js.map +1 -1
  262. package/dist/components/toolbar.js +1 -1
  263. package/dist/components/tooltip.js +1 -1
  264. package/dist/components/visually-hidden.js +1 -1
  265. package/dist/format.js.map +1 -1
  266. package/dist/i18n-provider.js +1 -1
  267. package/dist/index.js +99 -95
  268. package/dist/kaeso.css +3 -0
  269. package/dist/styles.css +1 -1
  270. package/dist/types/blocks/delete-resource/delete-resource.d.ts +2 -5
  271. package/dist/types/blocks/resource-list/resource-list.d.ts +1 -4
  272. package/dist/types/component-docs.d.ts +1 -1
  273. package/dist/types/components/agent-avatar/agent-avatar.d.ts +94 -0
  274. package/dist/types/components/agent-avatar/docs.d.ts +19 -0
  275. package/dist/types/components/agent-avatar/index.d.ts +3 -0
  276. package/dist/types/components/agent-avatar/model-name.d.ts +9 -0
  277. package/dist/types/components/agent-avatar/models.d.ts +4 -0
  278. package/dist/types/components/app-frame/app-frame.d.ts +3 -8
  279. package/dist/types/components/app-frame/nav-sheet.d.ts +2 -4
  280. package/dist/types/components/calendar/calendar.d.ts +1 -4
  281. package/dist/types/components/charts/core.d.ts +11 -18
  282. package/dist/types/components/checkbox/checkbox.d.ts +2 -0
  283. package/dist/types/components/code-block/code-block.d.ts +1 -1
  284. package/dist/types/components/code-block/indent.d.ts +3 -0
  285. package/dist/types/components/combobox/combobox.d.ts +26 -2
  286. package/dist/types/components/command-list/command-list.d.ts +1 -0
  287. package/dist/types/components/command-list/docs.d.ts +1 -0
  288. package/dist/types/components/command-list/picker-popover.d.ts +1 -4
  289. package/dist/types/components/command-palette/command-palette.d.ts +2 -4
  290. package/dist/types/components/command-palette/docs.d.ts +1 -0
  291. package/dist/types/components/data-table/data-table.d.ts +2 -1
  292. package/dist/types/components/data-table/docs.d.ts +1 -0
  293. package/dist/types/components/dialog/dialog.d.ts +7 -9
  294. package/dist/types/components/dialog/docs.d.ts +2 -0
  295. package/dist/types/components/dialog/scope.d.ts +2 -0
  296. package/dist/types/components/dialog/step-dialog.d.ts +38 -5
  297. package/dist/types/components/display-options/display-options.d.ts +2 -5
  298. package/dist/types/components/figure/docs.d.ts +12 -0
  299. package/dist/types/components/figure/figure.d.ts +25 -0
  300. package/dist/types/components/figure/index.d.ts +1 -0
  301. package/dist/types/components/input/input.d.ts +23 -0
  302. package/dist/types/components/kaeso/client-button.d.ts +17 -0
  303. package/dist/types/components/kaeso/docs.d.ts +18 -0
  304. package/dist/types/components/kaeso/grant-summary.d.ts +12 -0
  305. package/dist/types/components/kaeso/identity.d.ts +2 -0
  306. package/dist/types/components/kaeso/index.d.ts +2 -0
  307. package/dist/types/components/kaeso/provider-picker.d.ts +5 -0
  308. package/dist/types/components/kaeso/usage.d.ts +2 -0
  309. package/dist/types/components/list/list.d.ts +4 -8
  310. package/dist/types/components/menu/docs.d.ts +8 -1
  311. package/dist/types/components/menu/menu.d.ts +19 -31
  312. package/dist/types/components/playground/parameter-panel.d.ts +1 -4
  313. package/dist/types/components/popover/hover-card.d.ts +2 -0
  314. package/dist/types/components/radio/docs.d.ts +15 -0
  315. package/dist/types/components/radio/radio.d.ts +2 -4
  316. package/dist/types/components/settings/settings.d.ts +2 -0
  317. package/dist/types/components/sidebar/sidebar.d.ts +13 -35
  318. package/dist/types/components/table/docs.d.ts +3 -1
  319. package/dist/types/components/table/table.d.ts +18 -1
  320. package/dist/types/components/tabs/tabs.d.ts +15 -0
  321. package/dist/types/components/theme-menu/docs.d.ts +2 -0
  322. package/dist/types/components/theme-menu/theme-menu.d.ts +6 -5
  323. package/dist/types/components/thumbnail/docs.d.ts +10 -0
  324. package/dist/types/components/thumbnail/index.d.ts +1 -0
  325. package/dist/types/components/thumbnail/thumbnail.d.ts +26 -0
  326. package/dist/types/components/toast/toast.d.ts +5 -12
  327. package/dist/types/components/toolbar/toolbar.d.ts +1 -6
  328. package/dist/types/components/tooltip/tooltip.d.ts +2 -4
  329. package/dist/types/components/tooltip/trigger-props.d.ts +0 -1
  330. package/dist/types/format/index.d.ts +5 -5
  331. package/dist/types/hooks/use-scroll-margin.d.ts +1 -1
  332. package/dist/types/icons/groups.d.ts +2 -2
  333. package/dist/types/icons/vocabulary.d.ts +15 -0
  334. package/dist/types/index.d.ts +3 -0
  335. package/dist/types/utils/cn.d.ts +4 -0
  336. package/dist/types/utils/inset.d.ts +4 -0
  337. package/dist/types/utils/link-provider.d.ts +1 -1
  338. package/dist/types/utils/merge-refs.d.ts +3 -0
  339. package/dist/types/utils/portal-context.d.ts +1 -1
  340. package/dist/utils.js +4 -4
  341. package/foundations/shape.md +1 -1
  342. package/package.json +3 -3
  343. package/dist/chunks/app-frame-DZPEf2NQ.js.map +0 -1
  344. package/dist/chunks/calendar-CeNcqLFd.js.map +0 -1
  345. package/dist/chunks/checkbox-C_DrNA2N.js.map +0 -1
  346. package/dist/chunks/cn-Isw2DnQX.js.map +0 -1
  347. package/dist/chunks/code-block-mEH6Sy3h.js.map +0 -1
  348. package/dist/chunks/combobox-D8ZOm8uT.js +0 -314
  349. package/dist/chunks/combobox-D8ZOm8uT.js.map +0 -1
  350. package/dist/chunks/command-list-CzMbdtJs.js.map +0 -1
  351. package/dist/chunks/core-FtMDNELx.js.map +0 -1
  352. package/dist/chunks/de-BnNQtBSV.js.map +0 -1
  353. package/dist/chunks/dialog-BZCVFmGF.js +0 -353
  354. package/dist/chunks/dialog-BZCVFmGF.js.map +0 -1
  355. package/dist/chunks/icon-CBzvyEqC.js +0 -91
  356. package/dist/chunks/icon-CBzvyEqC.js.map +0 -1
  357. package/dist/chunks/identity-BcVQd-7H.js.map +0 -1
  358. package/dist/chunks/input-B6Docqrk.js.map +0 -1
  359. package/dist/chunks/inset-BnBj8NJV.js.map +0 -1
  360. package/dist/chunks/link-provider-BsUxhZKG.js +0 -27
  361. package/dist/chunks/link-provider-BsUxhZKG.js.map +0 -1
  362. package/dist/chunks/menu-Cjg4RggA.js.map +0 -1
  363. package/dist/chunks/nav-sheet-Y2Ite-iF.js +0 -60
  364. package/dist/chunks/nav-sheet-Y2Ite-iF.js.map +0 -1
  365. package/dist/chunks/sidebar-DifJ5KgE.js.map +0 -1
  366. package/dist/chunks/table-CTxDp7zC.js +0 -67
  367. package/dist/chunks/table-CTxDp7zC.js.map +0 -1
  368. package/dist/chunks/tooltip-CRApbLF6.js +0 -151
  369. package/dist/chunks/tooltip-CRApbLF6.js.map +0 -1
  370. package/dist/chunks/use-scroll-margin-DfdTc_5D.js.map +0 -1
  371. package/dist/chunks/zh-CN-CKffAT7j.js.map +0 -1
  372. package/dist/components/scroll-area.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-2VJuj_M4.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","KAESO_SEARCH_INPUT_VARIANTS","KAESO_SEARCH_INPUT_DEFAULT_VARIANTS","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 const KAESO_SEARCH_INPUT_VARIANTS = {\n size: {\n sm: { classes: KAESO_INPUT_VARIANTS.size.sm.classes },\n md: { classes: KAESO_INPUT_VARIANTS.size.md.classes },\n lg: { classes: KAESO_INPUT_VARIANTS.size.lg.classes },\n xl: { classes: KAESO_INPUT_VARIANTS.size.xl.classes },\n },\n} as const;\nexport const KAESO_SEARCH_INPUT_DEFAULT_VARIANTS = { size: \"sm\" } as const;\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-Isw2DnQX.js";
3
- import { t } from "./icon-D5uD_mnL.js";
4
- import { n } from "./button-9q66Ta23.js";
2
+ import { t as e } from "./cn-Dj6sRgkF.js";
3
+ import { t } from "./icon-D7ja-_Yk.js";
4
+ import { n } from "./button-CzuxqawA.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-Dgdb0JpZ.js.map
93
+ //# sourceMappingURL=input-group-DQ_4DoXg.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"input-group-DQ_4DoXg.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"}
@@ -13,16 +13,26 @@ function a() {
13
13
  return t(r);
14
14
  }
15
15
  var o = /* @__PURE__ */ e(!1);
16
- function s({ children: e, padded: t = !0 }) {
16
+ function s({ children: e }) {
17
17
  return /* @__PURE__ */ n(o.Provider, {
18
- value: t,
18
+ value: !0,
19
19
  children: e
20
20
  });
21
21
  }
22
22
  function c() {
23
23
  return t(o);
24
24
  }
25
+ var l = /* @__PURE__ */ e(!1);
26
+ function u({ children: e, padded: t = !0 }) {
27
+ return /* @__PURE__ */ n(l.Provider, {
28
+ value: t,
29
+ children: e
30
+ });
31
+ }
32
+ function d() {
33
+ return t(l);
34
+ }
25
35
  //#endregion
26
- export { a as i, i as n, c as r, s as t };
36
+ export { a, d as i, i as n, c as o, s as r, u as t };
27
37
 
28
- //# sourceMappingURL=inset-BnBj8NJV.js.map
38
+ //# sourceMappingURL=inset-BUzyXLK4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inset-BUzyXLK4.js","names":["InsetContext","InsetContent","inset","useInset","useContext","RaisedContext","RaisedContent","useRaised","GutterContext","GutterContent","padded","useGutterPadded"],"sources":["../../src/utils/inset.tsx"],"sourcesContent":["import { createContext, useContext, type ReactNode } from \"react\";\n\nconst InsetContext = /* @__PURE__ */ createContext(false);\n\nexport function InsetContent({ children, inset = true }: { children: ReactNode; inset?: boolean | undefined }) {\n return <InsetContext.Provider value={inset}>{children}</InsetContext.Provider>;\n}\n\nexport function useInset(): boolean {\n return useContext(InsetContext);\n}\n\nconst RaisedContext = /* @__PURE__ */ createContext(false);\n\nexport function RaisedContent({ children }: { children: ReactNode }) {\n return <RaisedContext.Provider value>{children}</RaisedContext.Provider>;\n}\n\nexport function useRaised(): boolean {\n return useContext(RaisedContext);\n}\n\nconst GutterContext = /* @__PURE__ */ createContext(false);\n\nexport function GutterContent({ children, padded = true }: { children: ReactNode; padded?: boolean | undefined }) {\n return <GutterContext.Provider value={padded}>{children}</GutterContext.Provider>;\n}\n\nexport function useGutterPadded(): boolean {\n return useContext(GutterContext);\n}\n"],"mappings":";;;;AAEA,IAAMA,IAA+B,kBAAc,EAAK;AAExD,SAAgBC,EAAa,EAAE,aAAU,WAAQ,MAA8D;CAC7G,OAAO,kBAACD,EAAa,UAAd;EAAuB,OAAOE;EAAQ;CAAgC,CAAA;AAC/E;AAEA,SAAgBC,IAAoB;CAClC,OAAOC,EAAWJ,CAAY;AAChC;AAEA,IAAMK,IAAgC,kBAAc,EAAK;AAEzD,SAAgBC,EAAc,EAAE,eAAqC;CACnE,OAAO,kBAACD,EAAc,UAAf;EAAwB,OAAA;EAAO;CAAiC,CAAA;AACzE;AAEA,SAAgBE,IAAqB;CACnC,OAAOH,EAAWC,CAAa;AACjC;AAEA,IAAMG,IAAgC,kBAAc,EAAK;AAEzD,SAAgBC,EAAc,EAAE,aAAU,YAAS,MAA+D;CAChH,OAAO,kBAACD,EAAc,UAAf;EAAwB,OAAOE;EAAS;CAAiC,CAAA;AAClF;AAEA,SAAgBC,IAA2B;CACzC,OAAOP,EAAWI,CAAa;AACjC"}
@@ -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-Dgdb0JpZ.js";
4
+ import { n as r } from "./input-group-DQ_4DoXg.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-SOZ7Z-yE.js.map
33
+ //# sourceMappingURL=iso-field-B2rTwiBo.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"iso-field-B2rTwiBo.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-Isw2DnQX.js";
2
+ import { t as e } from "./cn-Dj6sRgkF.js";
3
3
  import { i as t } from "./context-BELWW79w.js";
4
- import { t as n } from "./icon-D5uD_mnL.js";
4
+ import { t as n } from "./icon-D7ja-_Yk.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-DCTMY_j4.js.map
175
+ //# sourceMappingURL=json-view-Dqd2TDkc.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"json-view-Dqd2TDkc.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-Isw2DnQX.js";
2
+ import { t as e } from "./cn-Dj6sRgkF.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-9A9rX60U.js.map
132
+ //# sourceMappingURL=kbd-BF1vKXJf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kbd-9A9rX60U.js","names":["cn","useUiText","KAESO_KBD_VARIANTS","KAESO_KBD_DEFAULT_VARIANTS","isMac","subscribePlatform","useMac","useSyncExternalStore","modifiers","ctrl","t","option","keyLabel","englishText","m","key","mac","Kbd","props","label","children","tone","className","KbdSequence","steps","keys","Fragment","i","chord","k"],"sources":["../../src/components/kbd/kbd.tsx"],"sourcesContent":["import { forwardRef, Fragment, useSyncExternalStore, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { englishText, useUiText, type UiText } from \"../../i18n/context.js\";\n\nexport const KAESO_KBD_VARIANTS = {\n tone: {\n default: { classes: \"bg-fill-1 text-fg-secondary shadow-ring\" },\n onInk: { classes: \"bg-on-ink/15 text-on-ink/80 shadow-none\" },\n },\n} as const;\nexport const KAESO_KBD_DEFAULT_VARIANTS = { tone: \"default\" } as const;\n\nconst isMac = () => typeof navigator !== \"undefined\" && /Mac|iPhone|iPad/.test(navigator.platform || navigator.userAgent);\nconst subscribePlatform = () => () => undefined;\nconst useMac = () => useSyncExternalStore(subscribePlatform, isMac, () => false);\n\nfunction modifiers(t: UiText): Record<string, [mac: string, other: string, name: string]> {\n const ctrl = t(\"kbd.ctrl\", \"Ctrl\");\n const option = t(\"kbd.optionName\", \"Option\");\n return {\n mod: [\"⌘\", ctrl, t(\"kbd.commandName\", \"Command\")],\n cmd: [\"⌘\", ctrl, t(\"kbd.commandName\", \"Command\")],\n ctrl: [\"⌃\", ctrl, t(\"kbd.controlName\", \"Control\")],\n alt: [\"⌥\", \"Alt\", option],\n option: [\"⌥\", \"Alt\", option],\n shift: [\"⇧\", t(\"kbd.shift\", \"Shift\"), t(\"kbd.shiftName\", \"Shift\")],\n enter: [\"↵\", \"Enter\", t(\"kbd.enterName\", \"Enter\")],\n esc: [\"esc\", \"Esc\", t(\"kbd.escapeName\", \"Escape\")],\n backspace: [\"⌫\", t(\"kbd.backspace\", \"Backspace\"), t(\"kbd.backspaceName\", \"Backspace\")],\n up: [\"↑\", \"↑\", t(\"kbd.upName\", \"Up\")],\n down: [\"↓\", \"↓\", t(\"kbd.downName\", \"Down\")],\n left: [\"←\", \"←\", t(\"kbd.leftName\", \"Left\")],\n right: [\"→\", \"→\", t(\"kbd.rightName\", \"Right\")],\n tab: [\"⇥\", \"Tab\", t(\"kbd.tabName\", \"Tab\")],\n };\n}\n\nexport function keyLabel(key: string, t: UiText = englishText, mac: boolean = isMac()): { visual: string; spoken: string } {\n const m = modifiers(t)[key.toLowerCase()];\n if (!m) return { visual: key.length === 1 ? key.toUpperCase() : key, spoken: key };\n return { visual: mac ? m[0] : m[1], spoken: m[2] };\n}\n\nexport interface KbdProps extends HTMLAttributes<HTMLElement> {\n children: ReactNode;\n tone?: keyof typeof KAESO_KBD_VARIANTS.tone | undefined;\n}\n\nexport const Kbd = /* @__PURE__ */ forwardRef<HTMLElement, KbdProps>(function Kbd({ children, tone = \"default\", className, ...props }, ref) {\n const t = useUiText();\n const mac = useMac();\n const label = typeof children === \"string\" ? keyLabel(children, t, mac) : null;\n return (\n <kbd\n ref={ref}\n className={cn(\n \"inline-flex h-20 min-w-20 shrink-0 items-center justify-center rounded-kbd px-5 font-sans text-micro font-medium tabular\",\n KAESO_KBD_VARIANTS.tone[tone].classes,\n className,\n )}\n {...(label && label.spoken !== label.visual ? { \"aria-label\": label.spoken, title: label.spoken } : {})}\n {...props}\n >\n {label ? label.visual : children}\n </kbd>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Kbd.displayName = \"Kbd\";\n\nexport interface KbdSequenceProps extends HTMLAttributes<HTMLSpanElement> {\n keys: string[][] | string[];\n tone?: keyof typeof KAESO_KBD_VARIANTS.tone | undefined;\n}\n\nexport const KbdSequence = /* @__PURE__ */ forwardRef<HTMLSpanElement, KbdSequenceProps>(function KbdSequence({ keys, tone = \"default\", className, ...props }, ref) {\n const t = useUiText();\n const steps: string[][] = keys.length > 0 && Array.isArray(keys[0]) ? (keys as string[][]) : [keys as string[]];\n return (\n <span ref={ref} className={cn(\"inline-flex items-center gap-4 align-middle\", className)} {...props}>\n {steps.map((chord, i) => (\n <Fragment key={i}>\n {i > 0 && <span className={cn(\"text-caption font-medium\", tone === \"onInk\" ? \"text-on-ink/70\" : \"text-fg-secondary\")}>{t(\"kbd.then\", \"then\")}</span>}\n <span className=\"inline-flex items-center gap-2\">\n {chord.map((k) => (\n <Kbd key={k} tone={tone}>\n {k}\n </Kbd>\n ))}\n </span>\n </Fragment>\n ))}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") KbdSequence.displayName = \"KbdSequence\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"kbd-BF1vKXJf.js","names":["cn","useUiText","KAESO_KBD_VARIANTS","KAESO_KBD_DEFAULT_VARIANTS","isMac","subscribePlatform","useMac","useSyncExternalStore","modifiers","ctrl","t","option","keyLabel","englishText","m","key","mac","Kbd","props","label","children","tone","className","KbdSequence","steps","keys","Fragment","i","chord","k"],"sources":["../../src/components/kbd/kbd.tsx"],"sourcesContent":["import { forwardRef, Fragment, useSyncExternalStore, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { englishText, useUiText, type UiText } from \"../../i18n/context.js\";\n\nexport const KAESO_KBD_VARIANTS = {\n tone: {\n default: { classes: \"bg-fill-1 text-fg-secondary shadow-ring\" },\n onInk: { classes: \"bg-on-ink/15 text-on-ink/80 shadow-none\" },\n },\n} as const;\nexport const KAESO_KBD_DEFAULT_VARIANTS = { tone: \"default\" } as const;\n\nconst isMac = () => typeof navigator !== \"undefined\" && /Mac|iPhone|iPad/.test(navigator.platform || navigator.userAgent);\nconst subscribePlatform = () => () => undefined;\nconst useMac = () => useSyncExternalStore(subscribePlatform, isMac, () => false);\n\nfunction modifiers(t: UiText): Record<string, [mac: string, other: string, name: string]> {\n const ctrl = t(\"kbd.ctrl\", \"Ctrl\");\n const option = t(\"kbd.optionName\", \"Option\");\n return {\n mod: [\"⌘\", ctrl, t(\"kbd.commandName\", \"Command\")],\n cmd: [\"⌘\", ctrl, t(\"kbd.commandName\", \"Command\")],\n ctrl: [\"⌃\", ctrl, t(\"kbd.controlName\", \"Control\")],\n alt: [\"⌥\", \"Alt\", option],\n option: [\"⌥\", \"Alt\", option],\n shift: [\"⇧\", t(\"kbd.shift\", \"Shift\"), t(\"kbd.shiftName\", \"Shift\")],\n enter: [\"↵\", \"Enter\", t(\"kbd.enterName\", \"Enter\")],\n esc: [\"esc\", \"Esc\", t(\"kbd.escapeName\", \"Escape\")],\n backspace: [\"⌫\", t(\"kbd.backspace\", \"Backspace\"), t(\"kbd.backspaceName\", \"Backspace\")],\n up: [\"↑\", \"↑\", t(\"kbd.upName\", \"Up\")],\n down: [\"↓\", \"↓\", t(\"kbd.downName\", \"Down\")],\n left: [\"←\", \"←\", t(\"kbd.leftName\", \"Left\")],\n right: [\"→\", \"→\", t(\"kbd.rightName\", \"Right\")],\n tab: [\"⇥\", \"Tab\", t(\"kbd.tabName\", \"Tab\")],\n };\n}\n\nexport function keyLabel(key: string, t: UiText = englishText, mac: boolean = isMac()): { visual: string; spoken: string } {\n const m = modifiers(t)[key.toLowerCase()];\n if (!m) return { visual: key.length === 1 ? key.toUpperCase() : key, spoken: key };\n return { visual: mac ? m[0] : m[1], spoken: m[2] };\n}\n\nexport interface KbdProps extends HTMLAttributes<HTMLElement> {\n children: ReactNode;\n tone?: keyof typeof KAESO_KBD_VARIANTS.tone | undefined;\n}\n\nexport const Kbd = /* @__PURE__ */ forwardRef<HTMLElement, KbdProps>(function Kbd({ children, tone = \"default\", className, ...props }, ref) {\n const t = useUiText();\n const mac = useMac();\n const label = typeof children === \"string\" ? keyLabel(children, t, mac) : null;\n return (\n <kbd\n ref={ref}\n className={cn(\n \"inline-flex h-20 min-w-20 shrink-0 items-center justify-center rounded-kbd px-5 font-sans text-micro font-medium tabular\",\n KAESO_KBD_VARIANTS.tone[tone].classes,\n className,\n )}\n {...(label && label.spoken !== label.visual ? { \"aria-label\": label.spoken, title: label.spoken } : {})}\n {...props}\n >\n {label ? label.visual : children}\n </kbd>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Kbd.displayName = \"Kbd\";\n\nexport interface KbdSequenceProps extends HTMLAttributes<HTMLSpanElement> {\n keys: string[][] | string[];\n tone?: keyof typeof KAESO_KBD_VARIANTS.tone | undefined;\n}\n\nexport const KbdSequence = /* @__PURE__ */ forwardRef<HTMLSpanElement, KbdSequenceProps>(function KbdSequence({ keys, tone = \"default\", className, ...props }, ref) {\n const t = useUiText();\n const steps: string[][] = keys.length > 0 && Array.isArray(keys[0]) ? (keys as string[][]) : [keys as string[]];\n return (\n <span ref={ref} className={cn(\"inline-flex items-center gap-4 align-middle\", className)} {...props}>\n {steps.map((chord, i) => (\n <Fragment key={i}>\n {i > 0 && <span className={cn(\"text-caption font-medium\", tone === \"onInk\" ? \"text-on-ink/70\" : \"text-fg-secondary\")}>{t(\"kbd.then\", \"then\")}</span>}\n <span className=\"inline-flex items-center gap-2\">\n {chord.map((k) => (\n <Kbd key={k} tone={tone}>\n {k}\n </Kbd>\n ))}\n </span>\n </Fragment>\n ))}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") KbdSequence.displayName = \"KbdSequence\";\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { t as e } from "./cn-Isw2DnQX.js";
3
- import { n as t, r as n } from "./link-provider-BsUxhZKG.js";
2
+ import { t as e } from "./cn-Dj6sRgkF.js";
3
+ import { n as t, r as n } from "./link-provider-cvl8lSTT.js";
4
4
  import { i as r } from "./context-BELWW79w.js";
5
- import { t as i } from "./icon-D5uD_mnL.js";
5
+ import { t as i } from "./icon-D7ja-_Yk.js";
6
6
  import { forwardRef as a } from "react";
7
7
  import { jsx as o, jsxs as s } from "react/jsx-runtime";
8
8
  import { ArrowUpRight01Icon as c } from "@hugeicons/core-free-icons";
@@ -51,4 +51,4 @@ process.env.NODE_ENV !== "production" && (d.displayName = "Link");
51
51
  //#endregion
52
52
  export { l as n, d as r, u as t };
53
53
 
54
- //# sourceMappingURL=link-CtII7u3h.js.map
54
+ //# sourceMappingURL=link-KWI7PevW.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"link-CtII7u3h.js","names":["__icon_ArrowUpRight01Icon","cn","isExternalHref","useLinkComponent","useUiText","Icon","KAESO_LINK_VARIANTS","KAESO_LINK_DEFAULT_VARIANTS","Link","props","LinkComp","t","isExternal","external","href","variant","className","children","ArrowUpRight01Icon"],"sources":["../../src/components/link/link.tsx"],"sourcesContent":["import { forwardRef, type AnchorHTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { isExternalHref, useLinkComponent } from \"../../utils/link-provider.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { ArrowUpRight01Icon as __icon_ArrowUpRight01Icon } from \"@hugeicons/core-free-icons\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_LINK_VARIANTS = {\n variant: {\n inline: {\n classes: \"text-inherit underline decoration-line-strong decoration-1 underline-offset-3 hover:decoration-current\",\n },\n quiet: {\n classes: \"text-fg-secondary no-underline hover:text-fg\",\n },\n standalone: {\n classes: \"font-medium text-fg no-underline hover:underline hover:decoration-line-strong hover:underline-offset-3\",\n },\n heading: {\n classes: \"group/heading text-inherit no-underline\",\n },\n card: {\n classes: \"mx-0 flex flex-col gap-4 rounded-well bg-fill-1 px-16 py-12 text-fg no-underline hover:bg-fill-2\",\n },\n },\n} as const;\nexport const KAESO_LINK_DEFAULT_VARIANTS = { variant: \"inline\" } as const;\n\nexport interface LinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n href: string;\n variant?: keyof typeof KAESO_LINK_VARIANTS.variant | undefined;\n external?: boolean | undefined;\n children: ReactNode;\n}\n\nexport const Link = /* @__PURE__ */ forwardRef<HTMLAnchorElement, LinkProps>(function Link({ href, variant = \"inline\", external, className, children, ...props }, ref) {\n const LinkComp = useLinkComponent();\n const t = useUiText();\n const isExternal = external ?? isExternalHref(href);\n return (\n <LinkComp\n ref={ref}\n href={href}\n className={cn(\n \"relative -mx-2 box-decoration-clone rounded-code px-2 transition-control focus-ring tap-target\",\n KAESO_LINK_VARIANTS.variant[variant].classes,\n className,\n )}\n {...(isExternal ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {})}\n {...props}\n >\n {children}\n {variant === \"heading\" && (\n <span\n aria-hidden=\"true\"\n className=\"ml-8 inline-block text-fg-tertiary opacity-0 transition-control group-hover/heading:opacity-100 group-focus-visible/heading:opacity-100\"\n >\n #\n </span>\n )}\n {isExternal && (\n <span aria-hidden=\"true\" className=\"whitespace-nowrap\">\n {\"\\u2060\"}\n <Icon icon={__icon_ArrowUpRight01Icon} size=\"xs\" className=\"ml-2 inline-block align-middle\" />\n </span>\n )}\n {isExternal && <span className=\"sr-only\">{t(\"link.opensInNewTab\", \" (opens in a new tab)\")}</span>}\n </LinkComp>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Link.displayName = \"Link\";\n"],"mappings":";;;;;;;;;AAOA,IAAaM,IAAsB,EACjC,SAAS;CACP,QAAQ,EACN,SAAS,yGACX;CACA,OAAO,EACL,SAAS,+CACX;CACA,YAAY,EACV,SAAS,yGACX;CACA,SAAS,EACP,SAAS,0CACX;CACA,MAAM,EACJ,SAAS,mGACX;AACF,EACF,GACaC,IAA8B,EAAE,SAAS,SAAS,GASlDC,IAAuB,kBAAyC,SAAc,EAAE,SAAM,aAAU,UAAU,aAAU,cAAW,aAAU,GAAGC,KAAS,GAAK;CACrK,IAAMC,IAAWP,EAAiB,GAC5BQ,IAAIP,EAAU,GACdQ,IAAaC,KAAYX,EAAeY,CAAI;CAClD,OACE,kBAACJ,GAAD;EACO;EACC;EACN,WAAWT,EACT,kGACAK,EAAoB,QAAQS,EAAQ,CAAC,SACrCC,CACF;EACA,GAAKJ,IAAa;GAAE,QAAQ;GAAU,KAAK;EAAsB,IAAI,CAAC;EACtE,GAAIH;EATN,UAAA;GAWGQ;GACAF,MAAY,aACX,kBAAC,QAAD;IACE,eAAY;IACZ,WAAU;IACX,UAAA;GAEK,CAAA;GAEPH,KACC,kBAAC,QAAD;IAAM,eAAY;IAAO,WAAU;IAAnC,UAAA,CACG,KACD,kBAACP,GAAD;KAAM,MAAML;KAA2B,MAAK;KAAK,WAAU;IAAkC,CAAA,CACzF;;GAEPY,KAAc,kBAAC,QAAD;IAAM,WAAU;IAAW,UAAAD,EAAE,sBAAsB,uBAAuB;GAAQ,CAAA;EACzF;;AAEd,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAK,cAAc"}
1
+ {"version":3,"file":"link-KWI7PevW.js","names":["__icon_ArrowUpRight01Icon","cn","isExternalHref","useLinkComponent","useUiText","Icon","KAESO_LINK_VARIANTS","KAESO_LINK_DEFAULT_VARIANTS","Link","props","LinkComp","t","isExternal","external","href","variant","className","children","ArrowUpRight01Icon"],"sources":["../../src/components/link/link.tsx"],"sourcesContent":["import { forwardRef, type AnchorHTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { isExternalHref, useLinkComponent } from \"../../utils/link-provider.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { ArrowUpRight01Icon as __icon_ArrowUpRight01Icon } from \"@hugeicons/core-free-icons\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_LINK_VARIANTS = {\n variant: {\n inline: {\n classes: \"text-inherit underline decoration-line-strong decoration-1 underline-offset-3 hover:decoration-current\",\n },\n quiet: {\n classes: \"text-fg-secondary no-underline hover:text-fg\",\n },\n standalone: {\n classes: \"font-medium text-fg no-underline hover:underline hover:decoration-line-strong hover:underline-offset-3\",\n },\n heading: {\n classes: \"group/heading text-inherit no-underline\",\n },\n card: {\n classes: \"mx-0 flex flex-col gap-4 rounded-well bg-fill-1 px-16 py-12 text-fg no-underline hover:bg-fill-2\",\n },\n },\n} as const;\nexport const KAESO_LINK_DEFAULT_VARIANTS = { variant: \"inline\" } as const;\n\nexport interface LinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n href: string;\n variant?: keyof typeof KAESO_LINK_VARIANTS.variant | undefined;\n external?: boolean | undefined;\n children: ReactNode;\n}\n\nexport const Link = /* @__PURE__ */ forwardRef<HTMLAnchorElement, LinkProps>(function Link({ href, variant = \"inline\", external, className, children, ...props }, ref) {\n const LinkComp = useLinkComponent();\n const t = useUiText();\n const isExternal = external ?? isExternalHref(href);\n return (\n <LinkComp\n ref={ref}\n href={href}\n className={cn(\n \"relative -mx-2 box-decoration-clone rounded-code px-2 transition-control focus-ring tap-target\",\n KAESO_LINK_VARIANTS.variant[variant].classes,\n className,\n )}\n {...(isExternal ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {})}\n {...props}\n >\n {children}\n {variant === \"heading\" && (\n <span\n aria-hidden=\"true\"\n className=\"ml-8 inline-block text-fg-tertiary opacity-0 transition-control group-hover/heading:opacity-100 group-focus-visible/heading:opacity-100\"\n >\n #\n </span>\n )}\n {isExternal && (\n <span aria-hidden=\"true\" className=\"whitespace-nowrap\">\n {\"\\u2060\"}\n <Icon icon={__icon_ArrowUpRight01Icon} size=\"xs\" className=\"ml-2 inline-block align-middle\" />\n </span>\n )}\n {isExternal && <span className=\"sr-only\">{t(\"link.opensInNewTab\", \" (opens in a new tab)\")}</span>}\n </LinkComp>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Link.displayName = \"Link\";\n"],"mappings":";;;;;;;;;AAOA,IAAaM,IAAsB,EACjC,SAAS;CACP,QAAQ,EACN,SAAS,yGACX;CACA,OAAO,EACL,SAAS,+CACX;CACA,YAAY,EACV,SAAS,yGACX;CACA,SAAS,EACP,SAAS,0CACX;CACA,MAAM,EACJ,SAAS,mGACX;AACF,EACF,GACaC,IAA8B,EAAE,SAAS,SAAS,GASlDC,IAAuB,kBAAyC,SAAc,EAAE,SAAM,aAAU,UAAU,aAAU,cAAW,aAAU,GAAGC,KAAS,GAAK;CACrK,IAAMC,IAAWP,EAAiB,GAC5BQ,IAAIP,EAAU,GACdQ,IAAaC,KAAYX,EAAeY,CAAI;CAClD,OACE,kBAACJ,GAAD;EACO;EACC;EACN,WAAWT,EACT,kGACAK,EAAoB,QAAQS,EAAQ,CAAC,SACrCC,CACF;EACA,GAAKJ,IAAa;GAAE,QAAQ;GAAU,KAAK;EAAsB,IAAI,CAAC;EACtE,GAAIH;EATN,UAAA;GAWGQ;GACAF,MAAY,aACX,kBAAC,QAAD;IACE,eAAY;IACZ,WAAU;IACX,UAAA;GAEK,CAAA;GAEPH,KACC,kBAAC,QAAD;IAAM,eAAY;IAAO,WAAU;IAAnC,UAAA,CACG,KACD,kBAACP,GAAD;KAAM,MAAML;KAA2B,MAAK;KAAK,WAAU;IAAkC,CAAA,CACzF;;GAEPY,KAAc,kBAAC,QAAD;IAAM,WAAU;IAAW,UAAAD,EAAE,sBAAsB,uBAAuB;GAAQ,CAAA;EACzF;;AAEd,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAK,cAAc"}
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ import { createContext as e, forwardRef as t, useContext as n } from "react";
3
+ import { jsx as r } from "react/jsx-runtime";
4
+ //#region src/utils/link-provider.tsx
5
+ var i = /* @__PURE__ */ t(function(e, t) {
6
+ return /* @__PURE__ */ r("a", {
7
+ ref: t,
8
+ ...e
9
+ });
10
+ });
11
+ process.env.NODE_ENV !== "production" && (i.displayName = "DefaultLink");
12
+ var a = /* @__PURE__ */ e(i);
13
+ function o({ component: e, children: t }) {
14
+ return /* @__PURE__ */ r(a.Provider, {
15
+ value: e,
16
+ children: t
17
+ });
18
+ }
19
+ process.env.NODE_ENV !== "production" && (o.displayName = "LinkProvider");
20
+ function s() {
21
+ return n(a);
22
+ }
23
+ function c(e) {
24
+ return /^(?:https?:)?\/\//i.test(e) || e.startsWith("mailto:");
25
+ }
26
+ //#endregion
27
+ export { c as n, s as r, o as t };
28
+
29
+ //# sourceMappingURL=link-provider-cvl8lSTT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-provider-cvl8lSTT.js","names":["DefaultLink","props","LinkContext","LinkProvider","component","useLinkComponent","useContext","isExternalHref","href"],"sources":["../../src/utils/link-provider.tsx"],"sourcesContent":["import { createContext, forwardRef, useContext, type AnchorHTMLAttributes, type ComponentType, type ReactNode, type Ref } from \"react\";\n\nexport type LinkComponentProps = AnchorHTMLAttributes<HTMLAnchorElement> & { href: string; ref?: Ref<HTMLAnchorElement> | undefined };\nexport type LinkComponent = ComponentType<LinkComponentProps>;\n\nconst DefaultLink = /* @__PURE__ */ forwardRef<HTMLAnchorElement, LinkComponentProps>(function DefaultLink(props, ref) {\n return <a ref={ref} {...props} />;\n});\nif (process.env.NODE_ENV !== \"production\") DefaultLink.displayName = \"DefaultLink\";\n\nconst LinkContext = /* @__PURE__ */ createContext<LinkComponent>(DefaultLink);\n\nexport function LinkProvider({ component, children }: { component: LinkComponent; children: ReactNode }) {\n return <LinkContext.Provider value={component}>{children}</LinkContext.Provider>;\n}\nif (process.env.NODE_ENV !== \"production\") LinkProvider.displayName = \"LinkProvider\";\n\nexport function useLinkComponent(): LinkComponent {\n return useContext(LinkContext);\n}\n\nexport function isExternalHref(href: string): boolean {\n return /^(?:https?:)?\\/\\//i.test(href) || href.startsWith(\"mailto:\");\n}\n"],"mappings":";;;;AAKA,IAAMA,IAA8B,kBAAkD,SAAqB,GAAO,GAAK;CACrH,OAAO,kBAAC,KAAD;EAAQ;EAAK,GAAIC;CAAQ,CAAA;AAClC,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAY,cAAc;AAErE,IAAMC,IAA8B,kBAA6BF,CAAW;AAE5E,SAAgBG,EAAa,EAAE,cAAW,eAA+D;CACvG,OAAO,kBAACD,EAAY,UAAb;EAAsB,OAAOE;EAAY;CAA+B,CAAA;AACjF;AACA,QAAA,IAAA,aAA6B,iBAAc,EAAa,cAAc;AAEtE,SAAgBC,IAAkC;CAChD,OAAOC,EAAWJ,CAAW;AAC/B;AAEA,SAAgBK,EAAe,GAAuB;CACpD,OAAO,qBAAqB,KAAKC,CAAI,KAAKA,EAAK,WAAW,SAAS;AACrE"}
@@ -1,21 +1,21 @@
1
1
  "use client";
2
- import { t as e } from "./cn-Isw2DnQX.js";
2
+ import { t as e } from "./cn-Dj6sRgkF.js";
3
3
  import { r as t } from "./portal-context-BBbzDKmY.js";
4
- import { i as n, r } from "./inset-BnBj8NJV.js";
4
+ import { a as n, i as r } from "./inset-BUzyXLK4.js";
5
5
  import { i } from "./context-BELWW79w.js";
6
- import { t as a } from "./icon-D5uD_mnL.js";
7
- import { s as o, u as s } from "./tooltip-CRApbLF6.js";
8
- import { r as c } from "./text-hFc6TDp9.js";
9
- import { t as l } from "./icon-button-C7Du4pvb.js";
6
+ import { t as a } from "./icon-D7ja-_Yk.js";
7
+ import { c as o, d as s } from "./tooltip-OcwO0VUT.js";
8
+ import { r as c } from "./text-CIXH8rmT.js";
9
+ import { t as l } from "./icon-button-CrdF_eMG.js";
10
10
  import { n as u } from "./use-layout-width-CbSDbRb0.js";
11
- import { r as d } from "./skeleton-Cu74kGJA.js";
11
+ import { r as d } from "./skeleton-Dcz57Zyp.js";
12
12
  import { t as f } from "./scroll-parent-WXvzQcUo.js";
13
13
  import { forwardRef as p, useCallback as m, useEffect as h, useLayoutEffect as g, useMemo as _, useRef as v, useState as y } from "react";
14
14
  import { jsx as b, jsxs as x } from "react/jsx-runtime";
15
15
  import { Add01Icon as S, Cancel01Icon as C } from "@hugeicons/core-free-icons";
16
16
  import { createPortal as w } from "react-dom";
17
17
  //#region src/components/list/row-checkbox.tsx
18
- var T = /* @__PURE__ */ o(() => import("./checkbox-C_DrNA2N.js").then((e) => e.o), { base: () => import.meta.url });
18
+ var T = /* @__PURE__ */ o(() => import("./checkbox-CQjwCPkc.js").then((e) => e.c), { base: () => import.meta.url });
19
19
  function E({ checked: t, onToggle: n, "aria-label": r }) {
20
20
  let [i, a] = s(T, !0), [o, c] = y(!1), [l, u] = y(!1);
21
21
  return h(() => {
@@ -51,7 +51,7 @@ function E({ checked: t, onToggle: n, "aria-label": r }) {
51
51
  }
52
52
  //#endregion
53
53
  //#region src/components/list/list.tsx
54
- var ee = /* @__PURE__ */ o(() => import("./virtual-rows-yAMjeAwj.js"), { base: () => import.meta.url }), D = { density: {
54
+ var ee = /* @__PURE__ */ o(() => import("./virtual-rows-CC_kc2PR.js"), { base: () => import.meta.url }), D = { density: {
55
55
  default: { classes: "h-44" },
56
56
  compact: { classes: "h-36" }
57
57
  } }, O = { density: "default" }, k = {
@@ -440,18 +440,19 @@ var F = /* @__PURE__ */ p(function({ title: t, glyph: a, count: o, collapsed: s,
440
440
  });
441
441
  });
442
442
  process.env.NODE_ENV !== "production" && (F.displayName = "GroupHeader");
443
- function I({ count: e, onClear: n, children: r }) {
444
- let o = t(), s = i();
443
+ var I = /* @__PURE__ */ p(function({ count: e, onClear: n, children: r }, o) {
444
+ let s = t(), c = i();
445
445
  return typeof document > "u" ? null : w(/* @__PURE__ */ b("div", {
446
+ ref: o,
446
447
  role: "region",
447
- "aria-label": s("list.selection", "Selection"),
448
+ "aria-label": c("list.selection", "Selection"),
448
449
  className: "pointer-events-none fixed right-0 bottom-24 left-0 z-50 flex justify-center px-16",
449
450
  children: /* @__PURE__ */ x("div", {
450
451
  className: "pointer-events-auto flex min-h-44 items-center gap-4 rounded-pill bg-toast py-6 pr-6 pl-16 text-body font-medium text-toast-fg shadow-toast popup-motion",
451
452
  children: [
452
453
  /* @__PURE__ */ b("span", {
453
454
  className: "pr-8 tabular",
454
- children: s("list.selected", "{count} selected", { count: String(e) })
455
+ children: c("list.selected", "{count} selected", { count: String(e) })
455
456
  }),
456
457
  /* @__PURE__ */ b("span", {
457
458
  className: "mr-4 h-20 w-1 bg-toast-action",
@@ -461,7 +462,7 @@ function I({ count: e, onClear: n, children: r }) {
461
462
  /* @__PURE__ */ b("button", {
462
463
  type: "button",
463
464
  onClick: n,
464
- "aria-label": s("list.clearSelection", "Clear selection"),
465
+ "aria-label": c("list.clearSelection", "Clear selection"),
465
466
  className: "inline-flex size-32 cursor-pointer items-center justify-center rounded-pill text-toast-fg-secondary transition-control hover:bg-toast-action hover:text-toast-fg focus-ring",
466
467
  children: /* @__PURE__ */ b(a, {
467
468
  icon: C,
@@ -470,11 +471,12 @@ function I({ count: e, onClear: n, children: r }) {
470
471
  })
471
472
  ]
472
473
  })
473
- }), o ?? document.body);
474
- }
474
+ }), s ?? document.body);
475
+ });
475
476
  process.env.NODE_ENV !== "production" && (I.displayName = "SelectionBar");
476
- function L({ children: t, onClick: n, icon: r, danger: i }) {
477
+ var L = /* @__PURE__ */ p(function({ children: t, onClick: n, icon: r, danger: i }, o) {
477
478
  return /* @__PURE__ */ x("button", {
479
+ ref: o,
478
480
  type: "button",
479
481
  onClick: n,
480
482
  className: e("inline-flex h-32 cursor-pointer items-center gap-6 rounded-pill px-12 text-body font-medium transition-control hover:bg-toast-action focus-ring", i ? "text-toast-danger" : "text-toast-fg", r && "pl-10"),
@@ -484,9 +486,9 @@ function L({ children: t, onClick: n, icon: r, danger: i }) {
484
486
  className: i ? void 0 : "text-toast-fg-secondary"
485
487
  }), t]
486
488
  });
487
- }
489
+ });
488
490
  process.env.NODE_ENV !== "production" && (L.displayName = "SelectionAction");
489
491
  //#endregion
490
492
  export { P as a, N as i, O as n, L as o, D as r, I as s, F as t };
491
493
 
492
- //# sourceMappingURL=list-CMXBTVkI.js.map
494
+ //# sourceMappingURL=list-M1csq-d4.js.map