@logicplanes/kaeso-ui 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. package/AGENTS.md +2 -0
  2. package/NOTICE.md +1 -1
  3. package/ai/component-guides.md +249 -24
  4. package/ai/component-registry.json +1044 -67
  5. package/ai/component-registry.md +238 -50
  6. package/ai/icons.md +1 -1
  7. package/ai/tokens.md +7 -3
  8. package/dist/blocks/delete-resource.js +1 -1
  9. package/dist/blocks/pages.js +5 -5
  10. package/dist/blocks/resource-list.js +4 -4
  11. package/dist/chunks/app-frame-B9vrgwaE.js +220 -0
  12. package/dist/chunks/app-frame-B9vrgwaE.js.map +1 -0
  13. package/dist/chunks/{avatar-D2nJNbtC.js → avatar-DOzOhYJr.js} +2 -2
  14. package/dist/chunks/{avatar-D2nJNbtC.js.map → avatar-DOzOhYJr.js.map} +1 -1
  15. package/dist/chunks/{badge-Dkyhs0_j.js → badge-wUHlj7m3.js} +2 -2
  16. package/dist/chunks/{badge-Dkyhs0_j.js.map → badge-wUHlj7m3.js.map} +1 -1
  17. package/dist/chunks/{banner-DxGBPQ7p.js → banner-BBlNFHd-.js} +4 -4
  18. package/dist/chunks/{banner-DxGBPQ7p.js.map → banner-BBlNFHd-.js.map} +1 -1
  19. package/dist/chunks/{button-DQvoOxVQ.js → button-CAPyW-v8.js} +8 -8
  20. package/dist/chunks/{button-DQvoOxVQ.js.map → button-CAPyW-v8.js.map} +1 -1
  21. package/dist/chunks/{calendar-CN3YJi2k.js → calendar-CBeptQFq.js} +2 -2
  22. package/dist/chunks/{calendar-CN3YJi2k.js.map → calendar-CBeptQFq.js.map} +1 -1
  23. package/dist/chunks/{checkbox-BgRdbfCE.js → checkbox-C5yvSS7O.js} +3 -3
  24. package/dist/chunks/{checkbox-BgRdbfCE.js.map → checkbox-C5yvSS7O.js.map} +1 -1
  25. package/dist/chunks/{cn-CidVUKMm.js → cn-DUDmdLpZ.js} +3 -1
  26. package/dist/chunks/cn-DUDmdLpZ.js.map +1 -0
  27. package/dist/chunks/{code-BADhvsgC.js → code-C49NzHUQ.js} +2 -2
  28. package/dist/chunks/{code-BADhvsgC.js.map → code-C49NzHUQ.js.map} +1 -1
  29. package/dist/chunks/{code-block-DxtladFW.js → code-block-DREsvJ-g.js} +24 -21
  30. package/dist/chunks/code-block-DREsvJ-g.js.map +1 -0
  31. package/dist/chunks/{collapsible-Cw_1aem5.js → collapsible-CDQq1Y9x.js} +6 -6
  32. package/dist/chunks/collapsible-CDQq1Y9x.js.map +1 -0
  33. package/dist/chunks/combobox-DqtzsAKG.js +314 -0
  34. package/dist/chunks/combobox-DqtzsAKG.js.map +1 -0
  35. package/dist/chunks/command-list-D5k0uvkR.js +417 -0
  36. package/dist/chunks/command-list-D5k0uvkR.js.map +1 -0
  37. package/dist/chunks/{copy-button-DXxn-YYZ.js → copy-button-CNpEnS04.js} +6 -6
  38. package/dist/chunks/{copy-button-DXxn-YYZ.js.map → copy-button-CNpEnS04.js.map} +1 -1
  39. package/dist/chunks/{core-K960A4OT.js → core-CqLWVMDI.js} +36 -36
  40. package/dist/chunks/core-CqLWVMDI.js.map +1 -0
  41. package/dist/chunks/{date-popup-B-6xhb-1.js → date-popup-BgDz6SUj.js} +4 -4
  42. package/dist/chunks/{date-popup-B-6xhb-1.js.map → date-popup-BgDz6SUj.js.map} +1 -1
  43. package/dist/chunks/{de-CTAo4KL7.js → de-CkXZKaBD.js} +37 -5
  44. package/dist/chunks/de-CkXZKaBD.js.map +1 -0
  45. package/dist/chunks/dialog-truWH0qe.js +353 -0
  46. package/dist/chunks/dialog-truWH0qe.js.map +1 -0
  47. package/dist/chunks/{empty-DIbBpytW.js → empty-YXmSkKzR.js} +2 -2
  48. package/dist/chunks/{empty-DIbBpytW.js.map → empty-YXmSkKzR.js.map} +1 -1
  49. package/dist/chunks/{field-d8V94bvZ.js → field-BZriODU7.js} +3 -3
  50. package/dist/chunks/field-BZriODU7.js.map +1 -0
  51. package/dist/chunks/{icon-CeNQtobn.js → icon-BqujXDUc.js} +2 -2
  52. package/dist/chunks/{icon-CeNQtobn.js.map → icon-BqujXDUc.js.map} +1 -1
  53. package/dist/chunks/{icon-button-_x1RUphC.js → icon-button-D4O4puwH.js} +3 -3
  54. package/dist/chunks/{icon-button-_x1RUphC.js.map → icon-button-D4O4puwH.js.map} +1 -1
  55. package/dist/chunks/identity-CsZvAUwu.js +361 -0
  56. package/dist/chunks/identity-CsZvAUwu.js.map +1 -0
  57. package/dist/chunks/{input-CNTfI6YE.js → input-B0wtkcNh.js} +5 -5
  58. package/dist/chunks/{input-CNTfI6YE.js.map → input-B0wtkcNh.js.map} +1 -1
  59. package/dist/chunks/{input-group-CYA1MEoZ.js → input-group-BQLw06B0.js} +33 -27
  60. package/dist/chunks/input-group-BQLw06B0.js.map +1 -0
  61. package/dist/chunks/{inset-BLMdxX4I.js → inset-BnBj8NJV.js} +12 -2
  62. package/dist/chunks/inset-BnBj8NJV.js.map +1 -0
  63. package/dist/chunks/{iso-field-1qmg7TP8.js → iso-field-BUXgY1dB.js} +5 -3
  64. package/dist/chunks/{iso-field-1qmg7TP8.js.map → iso-field-BUXgY1dB.js.map} +1 -1
  65. package/dist/chunks/{json-view-B6KHIWzh.js → json-view-BkG2hTXV.js} +11 -10
  66. package/dist/chunks/{json-view-B6KHIWzh.js.map → json-view-BkG2hTXV.js.map} +1 -1
  67. package/dist/chunks/{kbd-CBcBDvqU.js → kbd-DqWmbr_e.js} +2 -2
  68. package/dist/chunks/{kbd-CBcBDvqU.js.map → kbd-DqWmbr_e.js.map} +1 -1
  69. package/dist/chunks/{link-vz9aV8WX.js → link-YMcxM-BZ.js} +4 -4
  70. package/dist/chunks/{link-vz9aV8WX.js.map → link-YMcxM-BZ.js.map} +1 -1
  71. package/dist/chunks/{link-provider---9JdxTg.js → link-provider-BsUxhZKG.js} +2 -2
  72. package/dist/chunks/{link-provider---9JdxTg.js.map → link-provider-BsUxhZKG.js.map} +1 -1
  73. package/dist/chunks/list-wXZIZo_s.js +492 -0
  74. package/dist/chunks/list-wXZIZo_s.js.map +1 -0
  75. package/dist/chunks/{loader-CUehxvSZ.js → loader-ENBh2Fbt.js} +2 -2
  76. package/dist/chunks/{loader-CUehxvSZ.js.map → loader-ENBh2Fbt.js.map} +1 -1
  77. package/dist/chunks/{markdown-5NyaHHfN.js → markdown-DWyxjsSY.js} +10 -10
  78. package/dist/chunks/{markdown-5NyaHHfN.js.map → markdown-DWyxjsSY.js.map} +1 -1
  79. package/dist/chunks/{menu-DyVPwgfF.js → menu-Bnfi9P3t.js} +7 -7
  80. package/dist/chunks/{menu-DyVPwgfF.js.map → menu-Bnfi9P3t.js.map} +1 -1
  81. package/dist/chunks/{meter-DWhyzFGQ.js → meter-DhTnem4k.js} +2 -2
  82. package/dist/chunks/{meter-DWhyzFGQ.js.map → meter-DhTnem4k.js.map} +1 -1
  83. package/dist/chunks/nav-sheet-QqNRHo-y.js +60 -0
  84. package/dist/chunks/nav-sheet-QqNRHo-y.js.map +1 -0
  85. package/dist/chunks/{nav-wordmark-DLkItdvo.js → nav-wordmark-DmbT1Aiw.js} +2 -2
  86. package/dist/chunks/{nav-wordmark-DLkItdvo.js.map → nav-wordmark-DmbT1Aiw.js.map} +1 -1
  87. package/dist/chunks/option-checkbox-Df7WhGn4.js +25 -0
  88. package/dist/chunks/option-checkbox-Df7WhGn4.js.map +1 -0
  89. package/dist/chunks/over-sheet-B8vzr_zU.js +8 -0
  90. package/dist/chunks/over-sheet-B8vzr_zU.js.map +1 -0
  91. package/dist/chunks/{page-header-CEPZzhRp.js → page-header-Ccnrspbp.js} +5 -5
  92. package/dist/chunks/{page-header-CEPZzhRp.js.map → page-header-Ccnrspbp.js.map} +1 -1
  93. package/dist/chunks/{pagination-CCMxQ5pH.js → pagination-CEmWZNjp.js} +5 -4
  94. package/dist/chunks/{pagination-CCMxQ5pH.js.map → pagination-CEmWZNjp.js.map} +1 -1
  95. package/dist/chunks/picker-popover-C4ElNk7t.js +102 -0
  96. package/dist/chunks/picker-popover-C4ElNk7t.js.map +1 -0
  97. package/dist/chunks/{popover-BE7VO-a4.js → popover-bjxg020P.js} +3 -3
  98. package/dist/chunks/{popover-BE7VO-a4.js.map → popover-bjxg020P.js.map} +1 -1
  99. package/dist/chunks/{radio-CUxbLCvD.js → radio-DwYcXAzv.js} +2 -2
  100. package/dist/chunks/{radio-CUxbLCvD.js.map → radio-DwYcXAzv.js.map} +1 -1
  101. package/dist/chunks/range-popup-CG9Jo5B7.js +128 -0
  102. package/dist/chunks/range-popup-CG9Jo5B7.js.map +1 -0
  103. package/dist/chunks/release-art-Chd8l9Rf.js +555 -0
  104. package/dist/chunks/release-art-Chd8l9Rf.js.map +1 -0
  105. package/dist/chunks/{resize-motion-CMaidkwe.js → resize-motion-BWGMchyP.js} +27 -23
  106. package/dist/chunks/resize-motion-BWGMchyP.js.map +1 -0
  107. package/dist/chunks/{rights-BbiJ0AJB.js → rights-hMoaFasn.js} +12 -12
  108. package/dist/chunks/rights-hMoaFasn.js.map +1 -0
  109. package/dist/chunks/{section-DzOLLN1p.js → section-BsET7Fo-.js} +4 -4
  110. package/dist/chunks/{section-DzOLLN1p.js.map → section-BsET7Fo-.js.map} +1 -1
  111. package/dist/chunks/{segmented-MrinfDL8.js → segmented-DXKVF-nY.js} +4 -4
  112. package/dist/chunks/{segmented-MrinfDL8.js.map → segmented-DXKVF-nY.js.map} +1 -1
  113. package/dist/chunks/{select-Bc4kRiSG.js → select-Bbv2f5F8.js} +63 -80
  114. package/dist/chunks/select-Bbv2f5F8.js.map +1 -0
  115. package/dist/chunks/{separator-D5AzVFTS.js → separator-CpAUELNs.js} +2 -2
  116. package/dist/chunks/{separator-D5AzVFTS.js.map → separator-CpAUELNs.js.map} +1 -1
  117. package/dist/chunks/{sidebar-5IA18LuP.js → sidebar-Dey1ZfGt.js} +54 -51
  118. package/dist/chunks/sidebar-Dey1ZfGt.js.map +1 -0
  119. package/dist/chunks/{sidebar-menu-DRWRxcJ3.js → sidebar-menu-ct8IiL4z.js} +2 -2
  120. package/dist/chunks/{sidebar-menu-DRWRxcJ3.js.map → sidebar-menu-ct8IiL4z.js.map} +1 -1
  121. package/dist/chunks/{skeleton-kfuqdl1a.js → skeleton-BM797MAg.js} +2 -2
  122. package/dist/chunks/{skeleton-kfuqdl1a.js.map → skeleton-BM797MAg.js.map} +1 -1
  123. package/dist/chunks/{slider-DbhjJ3ML.js → slider-Ds-tqY-1.js} +2 -2
  124. package/dist/chunks/{slider-DbhjJ3ML.js.map → slider-Ds-tqY-1.js.map} +1 -1
  125. package/dist/chunks/status-dot-BqVOlShY.js +29 -0
  126. package/dist/chunks/status-dot-BqVOlShY.js.map +1 -0
  127. package/dist/chunks/{styles-Btvg2DCf.js → styles-CVJU9t9v.js} +2 -2
  128. package/dist/chunks/{styles-Btvg2DCf.js.map → styles-CVJU9t9v.js.map} +1 -1
  129. package/dist/chunks/{swap-text-BhPI8DOf.js → swap-text-Cica0pUr.js} +2 -2
  130. package/dist/chunks/{swap-text-BhPI8DOf.js.map → swap-text-Cica0pUr.js.map} +1 -1
  131. package/dist/chunks/{switch-XMY_CQE-.js → switch-CSKMEomo.js} +3 -3
  132. package/dist/chunks/{switch-XMY_CQE-.js.map → switch-CSKMEomo.js.map} +1 -1
  133. package/dist/chunks/{table-DYKa86af.js → table-D-36EM7f.js} +2 -2
  134. package/dist/chunks/{table-DYKa86af.js.map → table-D-36EM7f.js.map} +1 -1
  135. package/dist/chunks/{tag-Dg89uYpV.js → tag-CwDKXVHj.js} +4 -4
  136. package/dist/chunks/{tag-Dg89uYpV.js.map → tag-CwDKXVHj.js.map} +1 -1
  137. package/dist/chunks/{text--5MKh2G4.js → text-Dvvgg5Jt.js} +3 -3
  138. package/dist/chunks/{text--5MKh2G4.js.map → text-Dvvgg5Jt.js.map} +1 -1
  139. package/dist/chunks/{textarea-Cj8iR82R.js → textarea-2d373OyU.js} +35 -31
  140. package/dist/chunks/textarea-2d373OyU.js.map +1 -0
  141. package/dist/chunks/timeseries-LRDAZHV0.js +339 -0
  142. package/dist/chunks/timeseries-LRDAZHV0.js.map +1 -0
  143. package/dist/chunks/{toolbar-Dw3uxpsE.js → toolbar-nVLFWH2i.js} +3 -3
  144. package/dist/chunks/{toolbar-Dw3uxpsE.js.map → toolbar-nVLFWH2i.js.map} +1 -1
  145. package/dist/chunks/{tooltip-DEbCCsru.js → tooltip-S1DmyLVl.js} +4 -4
  146. package/dist/chunks/{tooltip-DEbCCsru.js.map → tooltip-S1DmyLVl.js.map} +1 -1
  147. package/dist/chunks/{tooltip-root-DRd4ciUv.js → tooltip-root-vjylFUqw.js} +4 -4
  148. package/dist/chunks/{tooltip-root-DRd4ciUv.js.map → tooltip-root-vjylFUqw.js.map} +1 -1
  149. package/dist/chunks/{virtual-rows-BZe49bKi.js → virtual-rows-yAMjeAwj.js} +4 -3
  150. package/dist/chunks/virtual-rows-yAMjeAwj.js.map +1 -0
  151. package/dist/chunks/{zh-CN-C7GmVswt.js → zh-CN-CqEA4PCM.js} +37 -5
  152. package/dist/chunks/zh-CN-CqEA4PCM.js.map +1 -0
  153. package/dist/components/app-frame.js +2 -2
  154. package/dist/components/avatar.js +1 -1
  155. package/dist/components/badge.js +1 -1
  156. package/dist/components/banner.js +1 -1
  157. package/dist/components/button-group.js +33 -32
  158. package/dist/components/button-group.js.map +1 -1
  159. package/dist/components/button.js +1 -1
  160. package/dist/components/calendar.js +1 -1
  161. package/dist/components/charts/bar.js +34 -31
  162. package/dist/components/charts/bar.js.map +1 -1
  163. package/dist/components/charts/donut.js +2 -2
  164. package/dist/components/charts/gauge.js +2 -2
  165. package/dist/components/charts/heatmap.js +1 -1
  166. package/dist/components/charts/sankey.js +2 -2
  167. package/dist/components/charts/sparkline.js +1 -1
  168. package/dist/components/charts/timeseries.js +1 -252
  169. package/dist/components/charts.js +3 -3
  170. package/dist/components/checkbox.js +1 -1
  171. package/dist/components/code-block.js +2 -2
  172. package/dist/components/code.js +1 -1
  173. package/dist/components/collapsible.js +1 -1
  174. package/dist/components/combobox.js +1 -1
  175. package/dist/components/command-list.js +4 -0
  176. package/dist/components/command-palette.js +120 -171
  177. package/dist/components/command-palette.js.map +1 -1
  178. package/dist/components/copy-button.js +1 -1
  179. package/dist/components/data-table.js +251 -193
  180. package/dist/components/data-table.js.map +1 -1
  181. package/dist/components/date-picker.js +7 -7
  182. package/dist/components/date-picker.js.map +1 -1
  183. package/dist/components/dialog.js +7 -9
  184. package/dist/components/dialog.js.map +1 -1
  185. package/dist/components/display-options.js +67 -53
  186. package/dist/components/display-options.js.map +1 -1
  187. package/dist/components/empty.js +1 -1
  188. package/dist/components/field.js +1 -1
  189. package/dist/components/filter-chip.js +138 -63
  190. package/dist/components/filter-chip.js.map +1 -1
  191. package/dist/components/filter-row.js +2 -2
  192. package/dist/components/flow.js +2 -2
  193. package/dist/components/heading.js +1 -1
  194. package/dist/components/icon-button.js +1 -1
  195. package/dist/components/icon.js +1 -1
  196. package/dist/components/input.js +56 -54
  197. package/dist/components/input.js.map +1 -1
  198. package/dist/components/kaeso/conversation.js +88 -79
  199. package/dist/components/kaeso/conversation.js.map +1 -1
  200. package/dist/components/kaeso/identity.js +1 -1
  201. package/dist/components/kaeso/moments.js +8 -8
  202. package/dist/components/kaeso/moments.js.map +1 -1
  203. package/dist/components/kaeso/rights.js +1 -1
  204. package/dist/components/kaeso/usage.js +6 -6
  205. package/dist/components/kaeso/usage.js.map +1 -1
  206. package/dist/components/kaeso.js +212 -84
  207. package/dist/components/kaeso.js.map +1 -1
  208. package/dist/components/kbd.js +1 -1
  209. package/dist/components/key-value.js +3 -3
  210. package/dist/components/label.js +1 -1
  211. package/dist/components/layout.js +1 -1
  212. package/dist/components/link.js +1 -1
  213. package/dist/components/list.js +1 -1
  214. package/dist/components/loader.js +2 -2
  215. package/dist/components/logo.js +2 -2
  216. package/dist/components/markdown.js +1 -1
  217. package/dist/components/menu.js +2 -2
  218. package/dist/components/meter.js +1 -1
  219. package/dist/components/page-header.js +1 -1
  220. package/dist/components/pagination.js +1 -1
  221. package/dist/components/playground.js +654 -381
  222. package/dist/components/playground.js.map +1 -1
  223. package/dist/components/popover.js +2 -2
  224. package/dist/components/qr-code.js +1 -1
  225. package/dist/components/radio.js +1 -1
  226. package/dist/components/release-art.js +2 -0
  227. package/dist/components/scroll-area.js +1 -1
  228. package/dist/components/section.js +1 -1
  229. package/dist/components/segmented.js +1 -1
  230. package/dist/components/select.js +1 -1
  231. package/dist/components/separator.js +1 -1
  232. package/dist/components/settings.js +3 -3
  233. package/dist/components/sheet.js +69 -52
  234. package/dist/components/sheet.js.map +1 -1
  235. package/dist/components/sidebar.js +1 -1
  236. package/dist/components/skeleton.js +1 -1
  237. package/dist/components/slider.js +1 -1
  238. package/dist/components/stat.js +88 -74
  239. package/dist/components/stat.js.map +1 -1
  240. package/dist/components/status-dot.js +1 -1
  241. package/dist/components/surface.js +1 -1
  242. package/dist/components/swap-text.js +1 -1
  243. package/dist/components/switch.js +1 -1
  244. package/dist/components/table.js +1 -1
  245. package/dist/components/tabs.js +48 -49
  246. package/dist/components/tabs.js.map +1 -1
  247. package/dist/components/tag.js +1 -1
  248. package/dist/components/text.js +1 -1
  249. package/dist/components/theme-image.js +1 -1
  250. package/dist/components/theme-menu.js +2 -2
  251. package/dist/components/theme-select.js +1 -1
  252. package/dist/components/timeline.js +1 -1
  253. package/dist/components/toast.js +4 -4
  254. package/dist/components/toc.js +1 -1
  255. package/dist/components/toolbar.js +1 -1
  256. package/dist/components/tooltip.js +1 -1
  257. package/dist/components/visually-hidden.js +1 -1
  258. package/dist/format.js +132 -79
  259. package/dist/format.js.map +1 -1
  260. package/dist/i18n-provider.js +1 -1
  261. package/dist/index.js +115 -111
  262. package/dist/kaeso.css +43 -8
  263. package/dist/styles.css +1 -1
  264. package/dist/types/components/charts/bar.d.ts +6 -0
  265. package/dist/types/components/charts/core.d.ts +2 -2
  266. package/dist/types/components/charts/docs.d.ts +7 -0
  267. package/dist/types/components/charts/time-axis.d.ts +5 -0
  268. package/dist/types/components/charts/timeseries.d.ts +9 -0
  269. package/dist/types/components/code-block/highlighter.d.ts +2 -0
  270. package/dist/types/components/combobox/combobox.d.ts +2 -0
  271. package/dist/types/components/combobox/docs.d.ts +2 -4
  272. package/dist/types/components/command-list/command-list.d.ts +84 -0
  273. package/dist/types/components/command-list/docs.d.ts +52 -0
  274. package/dist/types/components/command-list/index.d.ts +3 -0
  275. package/dist/types/components/command-list/match.d.ts +1 -0
  276. package/dist/types/components/command-list/picker-popover.d.ts +44 -0
  277. package/dist/types/components/data-table/data-table.d.ts +3 -2
  278. package/dist/types/components/data-table/docs.d.ts +1 -0
  279. package/dist/types/components/date-picker/docs.d.ts +0 -6
  280. package/dist/types/components/dialog/dialog.d.ts +24 -0
  281. package/dist/types/components/dialog/docs.d.ts +4 -0
  282. package/dist/types/components/display-options/display-options.d.ts +1 -0
  283. package/dist/types/components/filter-chip/docs.d.ts +4 -0
  284. package/dist/types/components/filter-chip/filter-chip.d.ts +7 -0
  285. package/dist/types/components/input/docs.d.ts +2 -12
  286. package/dist/types/components/input/number-input.d.ts +1 -0
  287. package/dist/types/components/input/tag-input.d.ts +1 -0
  288. package/dist/types/components/kaeso/docs.d.ts +34 -0
  289. package/dist/types/components/kaeso/identity.d.ts +10 -1
  290. package/dist/types/components/kaeso/index.d.ts +1 -0
  291. package/dist/types/components/kaeso/provider-marks.d.ts +5 -1
  292. package/dist/types/components/kaeso/provider-picker.d.ts +42 -0
  293. package/dist/types/components/list/docs.d.ts +2 -0
  294. package/dist/types/components/list/list.d.ts +2 -0
  295. package/dist/types/components/menu/styles.d.ts +1 -1
  296. package/dist/types/components/playground/docs.d.ts +32 -0
  297. package/dist/types/components/playground/index.d.ts +1 -0
  298. package/dist/types/components/playground/model-picker.d.ts +39 -4
  299. package/dist/types/components/playground/reasoning.d.ts +29 -0
  300. package/dist/types/components/playground/response-view.d.ts +7 -1
  301. package/dist/types/components/release-art/docs.d.ts +13 -0
  302. package/dist/types/components/release-art/drawing.d.ts +48 -0
  303. package/dist/types/components/release-art/index.d.ts +1 -0
  304. package/dist/types/components/release-art/release-art.d.ts +37 -0
  305. package/dist/types/components/select/docs.d.ts +0 -2
  306. package/dist/types/components/select/option-checkbox.d.ts +1 -0
  307. package/dist/types/components/sidebar/sidebar.d.ts +1 -0
  308. package/dist/types/components/stat/docs.d.ts +1 -0
  309. package/dist/types/components/stat/stat.d.ts +1 -0
  310. package/dist/types/components/status-dot/docs.d.ts +2 -0
  311. package/dist/types/components/status-dot/status-dot.d.ts +2 -0
  312. package/dist/types/format/index.d.ts +8 -0
  313. package/dist/types/index.d.ts +2 -0
  314. package/dist/types/utils/index.d.ts +1 -1
  315. package/dist/types/utils/inset.d.ts +5 -0
  316. package/dist/types/utils/over-sheet.d.ts +1 -0
  317. package/dist/types/utils/restore-focus.d.ts +1 -1
  318. package/dist/utils.js +4 -4
  319. package/foundations/accessibility.md +1 -0
  320. package/foundations/layout.md +45 -0
  321. package/foundations/writing.md +1 -0
  322. package/package.json +2 -2
  323. package/dist/chunks/app-frame-BXh-06HL.js +0 -214
  324. package/dist/chunks/app-frame-BXh-06HL.js.map +0 -1
  325. package/dist/chunks/cn-CidVUKMm.js.map +0 -1
  326. package/dist/chunks/code-block-DxtladFW.js.map +0 -1
  327. package/dist/chunks/collapsible-Cw_1aem5.js.map +0 -1
  328. package/dist/chunks/combobox-D30Wt11R.js +0 -291
  329. package/dist/chunks/combobox-D30Wt11R.js.map +0 -1
  330. package/dist/chunks/core-K960A4OT.js.map +0 -1
  331. package/dist/chunks/de-CTAo4KL7.js.map +0 -1
  332. package/dist/chunks/dialog-LNKgPEsV.js +0 -319
  333. package/dist/chunks/dialog-LNKgPEsV.js.map +0 -1
  334. package/dist/chunks/field-d8V94bvZ.js.map +0 -1
  335. package/dist/chunks/field-press-DwzBFafd.js +0 -10
  336. package/dist/chunks/field-press-DwzBFafd.js.map +0 -1
  337. package/dist/chunks/identity-BtZC_d_Q.js +0 -342
  338. package/dist/chunks/identity-BtZC_d_Q.js.map +0 -1
  339. package/dist/chunks/input-group-CYA1MEoZ.js.map +0 -1
  340. package/dist/chunks/inset-BLMdxX4I.js.map +0 -1
  341. package/dist/chunks/list-CzaiyNja.js +0 -483
  342. package/dist/chunks/list-CzaiyNja.js.map +0 -1
  343. package/dist/chunks/nav-sheet-BIErlV74.js +0 -58
  344. package/dist/chunks/nav-sheet-BIErlV74.js.map +0 -1
  345. package/dist/chunks/range-popup-DGOnGGag.js +0 -111
  346. package/dist/chunks/range-popup-DGOnGGag.js.map +0 -1
  347. package/dist/chunks/resize-motion-CMaidkwe.js.map +0 -1
  348. package/dist/chunks/rights-BbiJ0AJB.js.map +0 -1
  349. package/dist/chunks/select-Bc4kRiSG.js.map +0 -1
  350. package/dist/chunks/sidebar-5IA18LuP.js.map +0 -1
  351. package/dist/chunks/status-dot-CBoQpyL4.js +0 -25
  352. package/dist/chunks/status-dot-CBoQpyL4.js.map +0 -1
  353. package/dist/chunks/textarea-Cj8iR82R.js.map +0 -1
  354. package/dist/chunks/virtual-rows-BZe49bKi.js.map +0 -1
  355. package/dist/chunks/zh-CN-C7GmVswt.js.map +0 -1
  356. package/dist/components/charts/timeseries.js.map +0 -1
package/ai/icons.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Icon vocabulary
2
2
 
3
- Version 0.2.1. Generated from `src/icons/vocabulary.ts`; do not edit. Use the name, never an icon picked by look: `icons.key` always means a key. Hugeicons, Stroke Rounded. Rules: `foundations/icons.md`.
3
+ Version 0.3.0. Generated from `src/icons/vocabulary.ts`; do not edit. Use the name, never an icon picked by look: `icons.key` always means a key. Hugeicons, Stroke Rounded. Rules: `foundations/icons.md`.
4
4
 
5
5
  ## Kaeso objects
6
6
 
package/ai/tokens.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @logicplanes/kaeso-ui tokens
2
2
 
3
- Version 0.2.1. Generated from `@logicplanes/kaeso-tokens`; do not edit. Components use these through role names (`bg-panel`, `text-fg-secondary`, `h-36`, `rounded-pill`); a raw value never appears in a component. How to use them: `foundations/*.md`.
3
+ Version 0.3.0. Generated from `@logicplanes/kaeso-tokens`; do not edit. Components use these through role names (`bg-panel`, `text-fg-secondary`, `h-36`, `rounded-pill`); a raw value never appears in a component. How to use them: `foundations/*.md`.
4
4
 
5
5
  ## Neutrals
6
6
 
@@ -15,6 +15,8 @@ Version 0.2.1. Generated from `@logicplanes/kaeso-tokens`; do not edit. Componen
15
15
  | `--k-line-subtle` | #f0f0f0 | #171717 |
16
16
  | `--k-line` | #e5e5e5 | #222222 |
17
17
  | `--k-line-strong` | #d4d4d4 | #333333 |
18
+ | `--k-line-field` | #858585 | #757575 |
19
+ | `--k-line-field-hover` | #707070 | #858585 |
18
20
  | `--k-text` | #0a0a0a | #fafafa |
19
21
  | `--k-text-secondary` | #666666 | #a3a3a3 |
20
22
  | `--k-text-tertiary` | #707070 | #858585 |
@@ -149,8 +151,10 @@ Version 0.2.1. Generated from `@logicplanes/kaeso-tokens`; do not edit. Componen
149
151
  | `shadow-control` | `inset 0 0 0 1px var(--k-line), 0 1px 2px rgb(0 0 0 / 0.05)` | `inset 0 0 0 1px var(--k-line)` |
150
152
  | `shadow-control-hover` | `inset 0 0 0 1px var(--k-line-strong), 0 1px 2px rgb(0 0 0 / 0.05)` | `inset 0 0 0 1px var(--k-line-strong)` |
151
153
  | `shadow-control-on-fill` | `inset 0 0 0 1px var(--k-line-strong)` | `inset 0 0 0 1px var(--k-line-strong)` |
152
- | `shadow-selector` | `inset 0 0 0 1px var(--k-line-strong), 0 1px 2px rgb(0 0 0 / 0.05)` | `inset 0 0 0 1px var(--k-line-strong)` |
153
- | `shadow-selector-hover` | `inset 0 0 0 1px var(--k-text-disabled), 0 1px 2px rgb(0 0 0 / 0.05)` | `inset 0 0 0 1px var(--k-text-disabled)` |
154
+ | `shadow-field` | `inset 0 0 0 1px var(--k-line-field), 0 1px 2px rgb(0 0 0 / 0.05)` | `inset 0 0 0 1px var(--k-line-field)` |
155
+ | `shadow-field-hover` | `inset 0 0 0 1px var(--k-line-field-hover), 0 1px 2px rgb(0 0 0 / 0.05)` | `inset 0 0 0 1px var(--k-line-field-hover)` |
156
+ | `shadow-selector` | `inset 0 0 0 1px var(--k-line-field), 0 1px 2px rgb(0 0 0 / 0.05)` | `inset 0 0 0 1px var(--k-line-field)` |
157
+ | `shadow-selector-hover` | `inset 0 0 0 1px var(--k-line-field-hover), 0 1px 2px rgb(0 0 0 / 0.05)` | `inset 0 0 0 1px var(--k-line-field-hover)` |
154
158
  | `shadow-frame` | `0 0 0 1px var(--k-line)` | `0 0 0 1px var(--k-line)` |
155
159
  | `shadow-xs` | `0 0 0 1px var(--k-line), 0 1px 2px rgb(0 0 0 / 0.03)` | `0 0 0 1px var(--k-line)` |
156
160
  | `shadow-raised` | `0 0 0 1px var(--k-line), 0 4px 8px -2px rgb(0 0 0 / 0.06), 0 16px 32px -8px rgb(0 0 0 / 0.14)` | `0 0 0 1px #262626, 0 16px 40px rgb(0 0 0 / 0.8)` |
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { i as e } from "../chunks/context-BELWW79w.js";
3
- import { t } from "../chunks/dialog-LNKgPEsV.js";
3
+ import { t } from "../chunks/dialog-truWH0qe.js";
4
4
  import { jsx as n } from "react/jsx-runtime";
5
5
  //#region src/blocks/delete-resource/delete-resource.tsx
6
6
  var r = { confirm: {
@@ -1,9 +1,9 @@
1
1
  "use client";
2
- import { t as e } from "../chunks/cn-CidVUKMm.js";
3
- import { t } from "../chunks/app-frame-BXh-06HL.js";
4
- import { r as n } from "../chunks/page-header-CEPZzhRp.js";
5
- import { t as r } from "../chunks/empty-DIbBpytW.js";
6
- import { a as i, t as a } from "../chunks/section-DzOLLN1p.js";
2
+ import { t as e } from "../chunks/cn-DUDmdLpZ.js";
3
+ import { t } from "../chunks/app-frame-B9vrgwaE.js";
4
+ import { r as n } from "../chunks/page-header-Ccnrspbp.js";
5
+ import { t as r } from "../chunks/empty-YXmSkKzR.js";
6
+ import { a as i, t as a } from "../chunks/section-BsET7Fo-.js";
7
7
  import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
8
8
  //#region src/blocks/pages/pages.tsx
9
9
  var l = { page: {
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import { i as e } from "../chunks/context-BELWW79w.js";
3
- import { i as t } from "../chunks/input-CNTfI6YE.js";
4
- import { r as n } from "../chunks/toolbar-Dw3uxpsE.js";
5
- import { t as r } from "../chunks/empty-DIbBpytW.js";
6
- import { i, o as a } from "../chunks/list-CzaiyNja.js";
3
+ import { i as t } from "../chunks/input-B0wtkcNh.js";
4
+ import { r as n } from "../chunks/toolbar-nVLFWH2i.js";
5
+ import { t as r } from "../chunks/empty-YXmSkKzR.js";
6
+ import { i, o as a } from "../chunks/list-wXZIZo_s.js";
7
7
  import { useMemo as o, useState as s } from "react";
8
8
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
9
9
  //#region src/blocks/resource-list/resource-list.tsx
@@ -0,0 +1,220 @@
1
+ "use client";
2
+ import { t as e } from "./cn-DUDmdLpZ.js";
3
+ import { n as t, t as n } from "./inset-BnBj8NJV.js";
4
+ import { i as r } from "./context-BELWW79w.js";
5
+ import { l as i, s as a } from "./tooltip-S1DmyLVl.js";
6
+ import { a as o } from "./button-CAPyW-v8.js";
7
+ import { t as s } from "./icon-button-D4O4puwH.js";
8
+ import { l as c, t as l } from "./sidebar-Dey1ZfGt.js";
9
+ import { t as u } from "./when-idle-Cy3pinqO.js";
10
+ import { createContext as d, forwardRef as f, useCallback as p, useContext as m, useEffect as h, useId as g, useLayoutEffect as _, useMemo as v, useRef as y, useState as b } from "react";
11
+ import { jsx as x, jsxs as S } from "react/jsx-runtime";
12
+ import { SidebarLeftIcon as C } from "@hugeicons/core-free-icons";
13
+ //#region src/components/app-frame/app-frame.tsx
14
+ var w = { fill: {
15
+ screen: { classes: "h-dvh" },
16
+ parent: { classes: "h-full" }
17
+ } }, T = { fill: "screen" }, E = /* @__PURE__ */ d({
18
+ openNav: () => void 0,
19
+ embedded: !1,
20
+ sheetReady: { current: !1 }
21
+ }), D = () => m(E), O = /* @__PURE__ */ f(function({ sidebar: t, children: n, corner: r, fill: i = "screen", brandHref: a, brandLabel: o, phoneActions: s, className: c }, l) {
22
+ let [u, d] = b(!1), f = y(null), p = y(!1), m = `k-main-${g().replace(/[^\w-]/g, "")}`, h = i === "screen" ? "main" : "div", _ = v(() => ({
23
+ openNav: () => d(!0),
24
+ embedded: i === "parent",
25
+ sheetReady: p
26
+ }), [i]);
27
+ return /* @__PURE__ */ S(E.Provider, {
28
+ value: _,
29
+ children: [/* @__PURE__ */ S("div", {
30
+ ref: l,
31
+ className: e("relative isolate flex w-full flex-col overflow-hidden bg-chrome text-fg lg:flex-row", w.fill[i].classes, c),
32
+ children: [
33
+ /* @__PURE__ */ x(k, { target: m }),
34
+ /* @__PURE__ */ x("div", {
35
+ className: "hidden h-full lg:flex",
36
+ children: t
37
+ }),
38
+ /* @__PURE__ */ x(A, {
39
+ banner: i === "screen",
40
+ href: a,
41
+ label: o,
42
+ actions: s,
43
+ open: u,
44
+ onToggle: () => d((e) => !e),
45
+ toggleRef: f
46
+ }),
47
+ /* @__PURE__ */ x(h, {
48
+ id: m,
49
+ className: "relative flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-panel outline-none safe-area-panel lg:my-8 lg:mr-8 lg:rounded-panel lg:shadow-panel",
50
+ children: n
51
+ }),
52
+ r && /* @__PURE__ */ x("div", {
53
+ className: "fixed right-16 bottom-16 z-10 flex items-center gap-8",
54
+ children: r
55
+ })
56
+ ]
57
+ }), /* @__PURE__ */ x(N, {
58
+ navOpen: u,
59
+ setNavOpen: d,
60
+ toggle: f,
61
+ ready: p,
62
+ children: t
63
+ })]
64
+ });
65
+ });
66
+ process.env.NODE_ENV !== "production" && (O.displayName = "AppFrame");
67
+ function k({ target: t }) {
68
+ let n = r();
69
+ return /* @__PURE__ */ x("a", {
70
+ href: `#${t}`,
71
+ onClick: (e) => {
72
+ let n = document.getElementById(t);
73
+ n && (e.preventDefault(), n.setAttribute("tabindex", "-1"), n.addEventListener("blur", () => n.removeAttribute("tabindex"), { once: !0 }), n.focus());
74
+ },
75
+ className: e(o({ size: "sm" }), "absolute top-8 left-8 z-50 not-focus:sr-only"),
76
+ children: n("appFrame.skipToContent", "Skip to content")
77
+ });
78
+ }
79
+ process.env.NODE_ENV !== "production" && (k.displayName = "AppFrame.SkipLink");
80
+ function A({ banner: e, href: t, label: n, actions: i, open: a, onToggle: o, toggleRef: c }) {
81
+ let u = e ? "header" : "div", d = r();
82
+ return /* @__PURE__ */ x(u, {
83
+ "data-phone-bar": "",
84
+ className: "shrink-0 bg-panel safe-area-bar lg:hidden",
85
+ children: /* @__PURE__ */ S("div", {
86
+ className: "mt-8 flex h-52 items-center justify-between px-24",
87
+ children: [/* @__PURE__ */ x(l, {
88
+ href: t,
89
+ label: n
90
+ }), /* @__PURE__ */ S("span", {
91
+ className: "flex items-center",
92
+ children: [i, /* @__PURE__ */ x(s, {
93
+ ref: c,
94
+ icon: C,
95
+ "aria-label": d("appFrame.openNavigation", "Open navigation"),
96
+ "aria-haspopup": "dialog",
97
+ "aria-expanded": a,
98
+ tooltip: !1,
99
+ onClick: o
100
+ })]
101
+ })]
102
+ })
103
+ });
104
+ }
105
+ process.env.NODE_ENV !== "production" && (A.displayName = "AppFrame.PhoneBar");
106
+ var j = 750, M = /* @__PURE__ */ a(() => import("./nav-sheet-QqNRHo-y.js").then((e) => e.n), { base: () => import.meta.url });
107
+ function N({ navOpen: e, setNavOpen: t, toggle: n, ready: r, children: a }) {
108
+ let { peeking: o, setPeeking: s } = c(), [l, d] = b(!1);
109
+ h(() => u(() => d(!0)), []);
110
+ let f = p(() => {
111
+ t(!1), s(!1);
112
+ }, [t, s]), m = i(M, l || e || o, () => {
113
+ d(!1), f();
114
+ })?.NavSheet, g = (e || o) && !m;
115
+ return _(() => {
116
+ r.current = !!m;
117
+ }), P(g, n, f), m ? /* @__PURE__ */ x(m, {
118
+ open: e || o,
119
+ peek: o && !e,
120
+ ...e ? { returnFocus: n } : {},
121
+ onOpenChange: (e) => {
122
+ e || f();
123
+ },
124
+ children: a
125
+ }) : null;
126
+ }
127
+ function P(e, t, n) {
128
+ h(() => {
129
+ if (!e) return;
130
+ let r = t.current?.ownerDocument ?? document, i = (e) => {
131
+ e.key === "Escape" && (e.stopPropagation(), n());
132
+ }, a = (e) => {
133
+ t.current?.contains(e.target) || n();
134
+ };
135
+ return r.addEventListener("keydown", i, !0), r.addEventListener("pointerdown", a, !0), () => {
136
+ r.removeEventListener("keydown", i, !0), r.removeEventListener("pointerdown", a, !0);
137
+ };
138
+ }, [
139
+ e,
140
+ t,
141
+ n
142
+ ]);
143
+ }
144
+ function F({ className: t }) {
145
+ let { openNav: n, sheetReady: i } = D(), { collapsed: a, setCollapsed: o, setPeeking: l } = c(), u = y(void 0);
146
+ h(() => () => clearTimeout(u.current), []);
147
+ let d = r(), f = () => typeof window < "u" && window.matchMedia("(min-width: 1024px)").matches;
148
+ return /* @__PURE__ */ x(s, {
149
+ onPointerEnter: () => {
150
+ a && f() && (u.current = setTimeout(() => l(!0), 750));
151
+ },
152
+ onPointerLeave: () => {
153
+ clearTimeout(u.current), i.current || l(!1);
154
+ },
155
+ icon: C,
156
+ "data-sidebar-expand": "",
157
+ "aria-label": a ? d("appFrame.expandSidebar", "Expand sidebar") : d("appFrame.openNavigation", "Open navigation"),
158
+ shortcut: a ? ["["] : void 0,
159
+ onClick: () => {
160
+ clearTimeout(u.current), a && f() ? o(!1) : n();
161
+ },
162
+ className: e("hidden", a && "lg:inline-flex", t)
163
+ });
164
+ }
165
+ process.env.NODE_ENV !== "production" && (F.displayName = "AppFrame.MenuButton");
166
+ var I = { padding: {
167
+ none: { classes: "" },
168
+ list: { classes: "pt-8 pb-24" },
169
+ page: { classes: "px-24 pt-16 pb-48" }
170
+ } }, L = { padding: "none" }, R = /* @__PURE__ */ f(function({ className: t, padding: r = "none", children: i, ...a }, o) {
171
+ return /* @__PURE__ */ x("div", {
172
+ ref: o,
173
+ className: e("min-h-0 flex-1 overflow-y-auto overscroll-contain scrollbar-quiet", I.padding[r].classes, t),
174
+ ...a,
175
+ children: /* @__PURE__ */ x(n, {
176
+ padded: r === "page",
177
+ children: i
178
+ })
179
+ });
180
+ });
181
+ process.env.NODE_ENV !== "production" && (R.displayName = "AppFrame.Body");
182
+ var z = /* @__PURE__ */ f(function({ title: r, description: i, actions: a, className: o, children: s, ...c }, l) {
183
+ return /* @__PURE__ */ S(R, {
184
+ ref: l,
185
+ className: "relative",
186
+ children: [/* @__PURE__ */ x(F, { className: "absolute top-10 left-24 z-10" }), /* @__PURE__ */ S("div", {
187
+ className: e("mx-auto w-full max-w-settings px-24 pt-64 pb-96", o),
188
+ ...c,
189
+ children: [/* @__PURE__ */ S("header", {
190
+ className: "flex flex-col gap-8",
191
+ children: [/* @__PURE__ */ S("div", {
192
+ className: "flex items-start justify-between gap-16",
193
+ children: [/* @__PURE__ */ x("h1", {
194
+ className: "min-w-0 text-title-lg font-semibold text-fg text-balance",
195
+ children: r
196
+ }), a && /* @__PURE__ */ x("div", {
197
+ className: "flex h-34 shrink-0 items-center gap-8",
198
+ children: a
199
+ })]
200
+ }), i && /* @__PURE__ */ x("p", {
201
+ className: "text-body-lg font-regular text-fg-secondary",
202
+ children: i
203
+ })]
204
+ }), /* @__PURE__ */ x("div", {
205
+ className: "mt-8",
206
+ children: /* @__PURE__ */ x(t, { children: /* @__PURE__ */ x(n, { children: s }) })
207
+ })]
208
+ })]
209
+ });
210
+ });
211
+ process.env.NODE_ENV !== "production" && (z.displayName = "AppFrame.Settings");
212
+ var B = /* @__PURE__ */ Object.assign(O, {
213
+ MenuButton: F,
214
+ Body: R,
215
+ Settings: z
216
+ });
217
+ //#endregion
218
+ export { w as a, T as i, L as n, j as o, I as r, D as s, B as t };
219
+
220
+ //# sourceMappingURL=app-frame-B9vrgwaE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-frame-B9vrgwaE.js","names":["__icon_SidebarLeftIcon","cn","InsetContent","GutterContent","useUiText","useLazyModule","lazyModule","buttonClasses","IconButton","useSidebar","BrandWordmark","whenIdle","KAESO_APP_FRAME_VARIANTS","KAESO_APP_FRAME_DEFAULT_VARIANTS","Ctx","useAppFrame","useContext","Root","navOpen","setNavOpen","useState","toggle","useRef","sheetReady","mainId","useId","Main","fill","frame","useMemo","className","SkipLink","sidebar","PhoneBar","brandHref","brandLabel","phoneActions","o","corner","FrameSheet","t","target","main","Bar","banner","actions","toggleRef","SidebarLeftIcon","open","onToggle","PEEK_DELAY","navSheet","n","idle","setIdle","dismiss","useCallback","setPeeking","NavSheet","peeking","pending","useLayoutEffect","usePendingDismiss","doc","onKeyDown","onPointerDown","MenuButton","intent","wide","collapsed","setCollapsed","openNav","KAESO_APP_FRAME_BODY_VARIANTS","KAESO_APP_FRAME_BODY_DEFAULT_VARIANTS","Body","props","padding","Settings","title","description","AppFrame"],"sources":["../../src/components/app-frame/app-frame.tsx"],"sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n type RefObject,\n} from \"react\";\nimport { GutterContent, InsetContent } from \"../../utils/inset.js\";\nimport { cn } from \"../../utils/cn.js\";\nimport { SidebarLeftIcon as __icon_SidebarLeftIcon } from \"@hugeicons/core-free-icons\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { buttonClasses } from \"../button/button.js\";\nimport { useSidebar, BrandWordmark } from \"../sidebar/sidebar.js\";\nimport { lazyModule, useLazyModule } from \"../../utils/lazy-module.js\";\nimport { whenIdle } from \"../../utils/when-idle.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_APP_FRAME_VARIANTS = {\n fill: {\n screen: { classes: \"h-dvh\" },\n parent: { classes: \"h-full\" },\n },\n} as const;\nexport const KAESO_APP_FRAME_DEFAULT_VARIANTS = { fill: \"screen\" } as const;\n\nconst Ctx = /* @__PURE__ */ createContext<{ openNav: () => void; embedded: boolean; sheetReady: RefObject<boolean> }>({\n openNav: () => undefined,\n embedded: false,\n sheetReady: { current: false },\n});\nexport const useAppFrame = () => useContext(Ctx);\n\nexport interface AppFrameProps {\n sidebar: ReactNode;\n children: ReactNode;\n corner?: ReactNode | undefined;\n fill?: keyof typeof KAESO_APP_FRAME_VARIANTS.fill | undefined;\n brandHref?: string | undefined;\n brandLabel?: string | undefined;\n phoneActions?: ReactNode | undefined;\n className?: string | undefined;\n}\n\nconst Root = /* @__PURE__ */ forwardRef<HTMLDivElement, AppFrameProps>(function AppFrame(\n { sidebar, children, corner, fill = \"screen\", brandHref, brandLabel, phoneActions, className },\n ref,\n) {\n const [navOpen, setNavOpen] = useState(false);\n const toggle = useRef<HTMLButtonElement | null>(null);\n const sheetReady = useRef(false);\n const mainId = `k-main-${useId().replace(/[^\\w-]/g, \"\")}`;\n const Main = fill === \"screen\" ? \"main\" : \"div\";\n const frame = useMemo(() => ({ openNav: () => setNavOpen(true), embedded: fill === \"parent\", sheetReady }), [fill]);\n return (\n <Ctx.Provider value={frame}>\n <div\n ref={ref}\n className={cn(\n \"relative isolate flex w-full flex-col overflow-hidden bg-chrome text-fg lg:flex-row\",\n KAESO_APP_FRAME_VARIANTS.fill[fill].classes,\n className,\n )}\n >\n <SkipLink target={mainId} />\n <div className=\"hidden h-full lg:flex\">{sidebar}</div>\n <PhoneBar\n banner={fill === \"screen\"}\n href={brandHref}\n label={brandLabel}\n actions={phoneActions}\n open={navOpen}\n onToggle={() => setNavOpen((o) => !o)}\n toggleRef={toggle}\n />\n <Main\n id={mainId}\n className=\"relative flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-panel outline-none safe-area-panel lg:my-8 lg:mr-8 lg:rounded-panel lg:shadow-panel\"\n >\n {children}\n </Main>\n {corner && <div className=\"fixed right-16 bottom-16 z-10 flex items-center gap-8\">{corner}</div>}\n </div>\n <FrameSheet navOpen={navOpen} setNavOpen={setNavOpen} toggle={toggle} ready={sheetReady}>\n {sidebar}\n </FrameSheet>\n </Ctx.Provider>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Root.displayName = \"AppFrame\";\n\nfunction SkipLink({ target }: { target: string }) {\n const t = useUiText();\n return (\n <a\n href={`#${target}`}\n onClick={(e) => {\n const main = document.getElementById(target);\n if (!main) return;\n e.preventDefault();\n main.setAttribute(\"tabindex\", \"-1\");\n main.addEventListener(\"blur\", () => main.removeAttribute(\"tabindex\"), { once: true });\n main.focus();\n }}\n className={cn(buttonClasses({ size: \"sm\" }), \"absolute top-8 left-8 z-50 not-focus:sr-only\")}\n >\n {t(\"appFrame.skipToContent\", \"Skip to content\")}\n </a>\n );\n}\nif (process.env.NODE_ENV !== \"production\") SkipLink.displayName = \"AppFrame.SkipLink\";\n\nfunction PhoneBar({\n banner,\n href,\n label,\n actions,\n open,\n onToggle,\n toggleRef,\n}: {\n banner: boolean;\n href: string | undefined;\n label: string | undefined;\n actions: ReactNode;\n open: boolean;\n onToggle: () => void;\n toggleRef: RefObject<HTMLButtonElement | null>;\n}) {\n const Bar = banner ? \"header\" : \"div\";\n const t = useUiText();\n return (\n <Bar data-phone-bar=\"\" className=\"shrink-0 bg-panel safe-area-bar lg:hidden\">\n <div className=\"mt-8 flex h-52 items-center justify-between px-24\">\n <BrandWordmark href={href} label={label} />\n <span className=\"flex items-center\">\n {actions}\n <IconButton\n ref={toggleRef}\n icon={__icon_SidebarLeftIcon}\n aria-label={t(\"appFrame.openNavigation\", \"Open navigation\")}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n tooltip={false}\n onClick={onToggle}\n />\n </span>\n </div>\n </Bar>\n );\n}\nif (process.env.NODE_ENV !== \"production\") PhoneBar.displayName = \"AppFrame.PhoneBar\";\n\nexport const PEEK_DELAY = 750;\n\nconst navSheet = /* @__PURE__ */ lazyModule(() => import(\"./nav-sheet.js\"), { base: () => import.meta.url });\n\nfunction FrameSheet({\n navOpen,\n setNavOpen,\n toggle,\n ready,\n children,\n}: {\n navOpen: boolean;\n setNavOpen: (o: boolean) => void;\n toggle: RefObject<HTMLElement | null>;\n ready: RefObject<boolean>;\n children: ReactNode;\n}) {\n const { peeking, setPeeking } = useSidebar();\n const [idle, setIdle] = useState(false);\n useEffect(() => whenIdle(() => setIdle(true)), []);\n const dismiss = useCallback(() => {\n setNavOpen(false);\n setPeeking(false);\n }, [setNavOpen, setPeeking]);\n const NavSheet = useLazyModule(navSheet, idle || navOpen || peeking, () => {\n setIdle(false);\n dismiss();\n })?.NavSheet;\n const pending = (navOpen || peeking) && !NavSheet;\n useLayoutEffect(() => {\n ready.current = !!NavSheet;\n });\n usePendingDismiss(pending, toggle, dismiss);\n if (!NavSheet) return null;\n return (\n <NavSheet\n open={navOpen || peeking}\n peek={peeking && !navOpen}\n {...(navOpen ? { returnFocus: toggle } : {})}\n onOpenChange={(o) => {\n if (!o) dismiss();\n }}\n >\n {children}\n </NavSheet>\n );\n}\n\nfunction usePendingDismiss(pending: boolean, toggle: RefObject<HTMLElement | null>, dismiss: () => void) {\n useEffect(() => {\n if (!pending) return;\n const doc = toggle.current?.ownerDocument ?? document;\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== \"Escape\") return;\n e.stopPropagation();\n dismiss();\n };\n const onPointerDown = (e: PointerEvent) => {\n if (!toggle.current?.contains(e.target as Node)) dismiss();\n };\n doc.addEventListener(\"keydown\", onKeyDown, true);\n doc.addEventListener(\"pointerdown\", onPointerDown, true);\n return () => {\n doc.removeEventListener(\"keydown\", onKeyDown, true);\n doc.removeEventListener(\"pointerdown\", onPointerDown, true);\n };\n }, [pending, toggle, dismiss]);\n}\n\nfunction MenuButton({ className }: { className?: string | undefined }) {\n const { openNav, sheetReady } = useAppFrame();\n const { collapsed, setCollapsed, setPeeking } = useSidebar();\n const intent = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n useEffect(() => () => clearTimeout(intent.current), []);\n const t = useUiText();\n const wide = () => typeof window !== \"undefined\" && window.matchMedia(\"(min-width: 1024px)\").matches;\n return (\n <IconButton\n onPointerEnter={() => {\n if (collapsed && wide()) intent.current = setTimeout(() => setPeeking(true), PEEK_DELAY);\n }}\n onPointerLeave={() => {\n clearTimeout(intent.current);\n if (!sheetReady.current) setPeeking(false);\n }}\n icon={__icon_SidebarLeftIcon}\n data-sidebar-expand=\"\"\n aria-label={collapsed ? t(\"appFrame.expandSidebar\", \"Expand sidebar\") : t(\"appFrame.openNavigation\", \"Open navigation\")}\n shortcut={collapsed ? [\"[\"] : undefined}\n onClick={() => {\n clearTimeout(intent.current);\n if (collapsed && wide()) setCollapsed(false);\n else openNav();\n }}\n className={cn(\"hidden\", collapsed && \"lg:inline-flex\", className)}\n />\n );\n}\nif (process.env.NODE_ENV !== \"production\") MenuButton.displayName = \"AppFrame.MenuButton\";\n\nexport const KAESO_APP_FRAME_BODY_VARIANTS = {\n padding: {\n none: { classes: \"\" },\n list: { classes: \"pt-8 pb-24\" },\n page: { classes: \"px-24 pt-16 pb-48\" },\n },\n} as const;\nexport const KAESO_APP_FRAME_BODY_DEFAULT_VARIANTS = { padding: \"none\" } as const;\n\nexport interface AppFrameBodyProps extends HTMLAttributes<HTMLDivElement> {\n padding?: keyof typeof KAESO_APP_FRAME_BODY_VARIANTS.padding | undefined;\n}\n\nconst Body = /* @__PURE__ */ forwardRef<HTMLDivElement, AppFrameBodyProps>(function AppFrameBody({ className, padding = \"none\", children, ...props }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\"min-h-0 flex-1 overflow-y-auto overscroll-contain scrollbar-quiet\", KAESO_APP_FRAME_BODY_VARIANTS.padding[padding].classes, className)}\n {...props}\n >\n <GutterContent padded={padding === \"page\"}>{children}</GutterContent>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Body.displayName = \"AppFrame.Body\";\n\nexport interface SettingsPageProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n title: ReactNode;\n description?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n}\n\nconst Settings = /* @__PURE__ */ forwardRef<HTMLDivElement, SettingsPageProps>(function AppFrameSettings({ title, description, actions, className, children, ...props }, ref) {\n return (\n <Body ref={ref} className=\"relative\">\n <MenuButton className=\"absolute top-10 left-24 z-10\" />\n <div className={cn(\"mx-auto w-full max-w-settings px-24 pt-64 pb-96\", className)} {...props}>\n <header className=\"flex flex-col gap-8\">\n <div className=\"flex items-start justify-between gap-16\">\n <h1 className=\"min-w-0 text-title-lg font-semibold text-fg text-balance\">{title}</h1>\n {actions && <div className=\"flex h-34 shrink-0 items-center gap-8\">{actions}</div>}\n </div>\n {description && <p className=\"text-body-lg font-regular text-fg-secondary\">{description}</p>}\n </header>\n <div className=\"mt-8\">\n <InsetContent>\n <GutterContent>{children}</GutterContent>\n </InsetContent>\n </div>\n </div>\n </Body>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Settings.displayName = \"AppFrame.Settings\";\n\nexport const AppFrame = /* @__PURE__ */ Object.assign(Root, { MenuButton, Body, Settings });\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { t as e } from "./cn-CidVUKMm.js";
2
+ import { t as e } from "./cn-DUDmdLpZ.js";
3
3
  import { i as t } from "./context-BELWW79w.js";
4
4
  import { forwardRef as n, useState as r } from "react";
5
5
  import { jsx as i, jsxs as a } from "react/jsx-runtime";
@@ -80,4 +80,4 @@ process.env.NODE_ENV !== "production" && (d.displayName = "AvatarGroup");
80
80
  //#endregion
81
81
  export { c as a, o as i, d as n, s as r, l as t };
82
82
 
83
- //# sourceMappingURL=avatar-D2nJNbtC.js.map
83
+ //# sourceMappingURL=avatar-DOzOhYJr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"avatar-D2nJNbtC.js","names":["cn","useUiText","KAESO_AVATAR_VARIANTS","KAESO_AVATAR_DEFAULT_VARIANTS","initials","parts","name","first","max","Avatar","failedSrc","setFailedSrc","useState","decorative","size","kind","className","src","GROUP_OVERLAP","AvatarGroup","t","shown","people","rest","overlap","p","i","children"],"sources":["../../src/components/avatar/avatar.tsx"],"sourcesContent":["import { forwardRef, useState, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_AVATAR_VARIANTS = {\n size: {\n 20: { classes: \"size-20 text-micro\" },\n 24: { classes: \"size-24 text-micro\" },\n 28: { classes: \"size-28 text-caption\" },\n 32: { classes: \"size-32 text-caption\" },\n 40: { classes: \"size-40 text-body\" },\n },\n kind: {\n person: { classes: \"rounded-pill\" },\n org: { classes: \"rounded-org\" },\n },\n} as const;\nexport const KAESO_AVATAR_DEFAULT_VARIANTS = { size: 24, kind: \"person\" } as const;\n\nexport function initials(name: string, max: 1 | 2 = 2): string {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) return \"?\";\n const first = parts[0]?.[0] ?? \"\";\n return (max === 1 || parts.length < 2 ? first : first + (parts[parts.length - 1]?.[0] ?? \"\")).toUpperCase();\n}\n\nexport interface AvatarProps {\n name: string;\n src?: string | undefined;\n size?: keyof typeof KAESO_AVATAR_VARIANTS.size | undefined;\n kind?: keyof typeof KAESO_AVATAR_VARIANTS.kind | undefined;\n decorative?: boolean | undefined;\n className?: string | undefined;\n}\n\nexport const Avatar = /* @__PURE__ */ forwardRef<HTMLSpanElement, AvatarProps>(function Avatar({ name, src, size = 24, kind = \"person\", decorative, className }, ref) {\n const [failedSrc, setFailedSrc] = useState<string | undefined>(undefined);\n return (\n <span\n ref={ref}\n {...(decorative ? { \"aria-hidden\": true } : { role: \"img\", \"aria-label\": name })}\n className={cn(\n \"relative inline-flex shrink-0 items-center justify-center overflow-hidden bg-fill-2 font-semibold text-fg select-none\",\n KAESO_AVATAR_VARIANTS.size[size].classes,\n KAESO_AVATAR_VARIANTS.kind[kind].classes,\n size <= 24 && kind === \"org\" && \"rounded-avatar\",\n className,\n )}\n >\n {src && src !== failedSrc ? (\n <img src={src} alt=\"\" className=\"size-full object-cover\" onError={() => setFailedSrc(src)} />\n ) : (\n initials(name, size === 20 ? 1 : 2)\n )}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Avatar.displayName = \"Avatar\";\n\nexport interface AvatarGroupProps {\n people: { name: string; src?: string | undefined }[];\n size?: keyof typeof KAESO_AVATAR_VARIANTS.size | undefined;\n max?: number | undefined;\n className?: string | undefined;\n children?: ReactNode | undefined;\n}\n\nconst GROUP_OVERLAP = { 20: \"-ms-4\", 24: \"-ms-2\", 28: \"-ms-2\", 32: \"-ms-4\", 40: \"-ms-6\" } as const;\n\nexport const AvatarGroup = /* @__PURE__ */ forwardRef<HTMLDivElement, AvatarGroupProps>(function AvatarGroup({ people, size = 24, max = 4, className, children }, ref) {\n const t = useUiText();\n const shown = people.slice(0, max);\n const rest = people.length - shown.length;\n const overlap = GROUP_OVERLAP[size];\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={people.map((p) => p.name).join(t(\"avatarGroup.listSeparator\", \", \"))}\n className={cn(\"flex items-center\", className)}\n >\n {shown.map((p, i) => (\n <Avatar\n key={p.name + i}\n name={p.name}\n {...(p.src ? { src: p.src } : {})}\n size={size}\n decorative\n className={cn(\"ring-2 ring-panel\", i > 0 && overlap)}\n />\n ))}\n {rest > 0 && (\n <span\n className={cn(\n \"inline-flex shrink-0 items-center justify-center rounded-pill bg-fill-1 font-medium text-fg-secondary ring-2 ring-panel tabular\",\n KAESO_AVATAR_VARIANTS.size[size].classes,\n overlap,\n )}\n >\n +{rest}\n </span>\n )}\n {children && <span className=\"ms-8 inline-flex items-center\">{children}</span>}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") AvatarGroup.displayName = \"AvatarGroup\";\n"],"mappings":";;;;;;AAIA,IAAaE,IAAwB;CACnC,MAAM;EACJ,IAAI,EAAE,SAAS,qBAAqB;EACpC,IAAI,EAAE,SAAS,qBAAqB;EACpC,IAAI,EAAE,SAAS,uBAAuB;EACtC,IAAI,EAAE,SAAS,uBAAuB;EACtC,IAAI,EAAE,SAAS,oBAAoB;CACrC;CACA,MAAM;EACJ,QAAQ,EAAE,SAAS,eAAe;EAClC,KAAK,EAAE,SAAS,cAAc;CAChC;AACF,GACaC,IAAgC;CAAE,MAAM;CAAI,MAAM;AAAS;AAExE,SAAgBC,EAAS,GAAc,IAAa,GAAW;CAC7D,IAAMC,IAAQC,EAAK,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,OAAO,OAAO;CACrD,IAAID,EAAM,WAAW,GAAG,OAAO;CAC/B,IAAME,IAAQF,EAAM,EAAE,GAAG,MAAM;CAC/B,QAAQG,MAAQ,KAAKH,EAAM,SAAS,IAAIE,IAAQA,KAASF,EAAMA,EAAM,SAAS,EAAE,GAAG,MAAM,IAAA,CAAK,YAAY;AAC5G;AAWA,IAAaI,IAAyB,kBAAyC,SAAgB,EAAE,SAAM,QAAK,UAAO,IAAI,UAAO,UAAU,eAAY,gBAAa,GAAK;CACpK,IAAM,CAACC,GAAWC,KAAgBC,EAA6B,KAAA,CAAS;CACxE,OACE,kBAAC,QAAD;EACO;EACL,GAAKC,IAAa,EAAE,eAAe,GAAK,IAAI;GAAE,MAAM;GAAO,cAAcP;EAAK;EAC9E,WAAWN,EACT,yHACAE,EAAsB,KAAKY,EAAK,CAAC,SACjCZ,EAAsB,KAAKa,EAAK,CAAC,SACjCD,KAAQ,MAAMC,MAAS,SAAS,kBAChCC,CACF;EAEC,UAAAC,KAAOA,MAAQP,IACd,kBAAC,OAAD;GAAU;GAAK,KAAI;GAAG,WAAU;GAAyB,eAAeC,EAAaM,CAAG;EAAI,CAAA,IAE5Fb,EAASE,GAAMQ,MAAS,KAAK,IAAI,CAAC;CAEhC,CAAA;AAEV,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAO,cAAc;AAUhE,IAAMI,IAAgB;CAAE,IAAI;CAAS,IAAI;CAAS,IAAI;CAAS,IAAI;CAAS,IAAI;AAAQ,GAE3EC,IAA8B,kBAA6C,SAAqB,EAAE,WAAQ,UAAO,IAAI,SAAM,GAAG,cAAW,eAAY,GAAK;CACrK,IAAMC,IAAInB,EAAU,GACdoB,IAAQC,EAAO,MAAM,GAAGd,CAAG,GAC3Be,IAAOD,EAAO,SAASD,EAAM,QAC7BG,IAAUN,EAAcJ;CAC9B,OACE,kBAAC,OAAD;EACO;EACL,MAAK;EACL,cAAYQ,EAAO,KAAK,MAAMG,EAAE,IAAI,CAAC,CAAC,KAAKL,EAAE,6BAA6B,IAAI,CAAC;EAC/E,WAAWpB,EAAG,qBAAqBgB,CAAS;EAJ9C,UAAA;GAMGK,EAAM,KAAK,GAAG,MACb,kBAACZ,GAAD;IAEE,MAAMgB,EAAE;IACR,GAAKA,EAAE,MAAM,EAAE,KAAKA,EAAE,IAAI,IAAI,CAAC;IACzB;IACN,YAAA;IACA,WAAWzB,EAAG,qBAAqB0B,IAAI,KAAKF,CAAO;GACpD,GANMC,EAAE,OAAOC,CAMf,CACF;GACAH,IAAO,KACN,kBAAC,QAAD;IACE,WAAWvB,EACT,mIACAE,EAAsB,KAAKY,EAAK,CAAC,SACjCU,CACF;IALF,UAAA,CAMC,KACGD,CACE;;GAEPI,KAAY,kBAAC,QAAD;IAAM,WAAU;IAAiC;GAAe,CAAA;EAC1E;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAY,cAAc"}
1
+ {"version":3,"file":"avatar-DOzOhYJr.js","names":["cn","useUiText","KAESO_AVATAR_VARIANTS","KAESO_AVATAR_DEFAULT_VARIANTS","initials","parts","name","first","max","Avatar","failedSrc","setFailedSrc","useState","decorative","size","kind","className","src","GROUP_OVERLAP","AvatarGroup","t","shown","people","rest","overlap","p","i","children"],"sources":["../../src/components/avatar/avatar.tsx"],"sourcesContent":["import { forwardRef, useState, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_AVATAR_VARIANTS = {\n size: {\n 20: { classes: \"size-20 text-micro\" },\n 24: { classes: \"size-24 text-micro\" },\n 28: { classes: \"size-28 text-caption\" },\n 32: { classes: \"size-32 text-caption\" },\n 40: { classes: \"size-40 text-body\" },\n },\n kind: {\n person: { classes: \"rounded-pill\" },\n org: { classes: \"rounded-org\" },\n },\n} as const;\nexport const KAESO_AVATAR_DEFAULT_VARIANTS = { size: 24, kind: \"person\" } as const;\n\nexport function initials(name: string, max: 1 | 2 = 2): string {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) return \"?\";\n const first = parts[0]?.[0] ?? \"\";\n return (max === 1 || parts.length < 2 ? first : first + (parts[parts.length - 1]?.[0] ?? \"\")).toUpperCase();\n}\n\nexport interface AvatarProps {\n name: string;\n src?: string | undefined;\n size?: keyof typeof KAESO_AVATAR_VARIANTS.size | undefined;\n kind?: keyof typeof KAESO_AVATAR_VARIANTS.kind | undefined;\n decorative?: boolean | undefined;\n className?: string | undefined;\n}\n\nexport const Avatar = /* @__PURE__ */ forwardRef<HTMLSpanElement, AvatarProps>(function Avatar({ name, src, size = 24, kind = \"person\", decorative, className }, ref) {\n const [failedSrc, setFailedSrc] = useState<string | undefined>(undefined);\n return (\n <span\n ref={ref}\n {...(decorative ? { \"aria-hidden\": true } : { role: \"img\", \"aria-label\": name })}\n className={cn(\n \"relative inline-flex shrink-0 items-center justify-center overflow-hidden bg-fill-2 font-semibold text-fg select-none\",\n KAESO_AVATAR_VARIANTS.size[size].classes,\n KAESO_AVATAR_VARIANTS.kind[kind].classes,\n size <= 24 && kind === \"org\" && \"rounded-avatar\",\n className,\n )}\n >\n {src && src !== failedSrc ? (\n <img src={src} alt=\"\" className=\"size-full object-cover\" onError={() => setFailedSrc(src)} />\n ) : (\n initials(name, size === 20 ? 1 : 2)\n )}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Avatar.displayName = \"Avatar\";\n\nexport interface AvatarGroupProps {\n people: { name: string; src?: string | undefined }[];\n size?: keyof typeof KAESO_AVATAR_VARIANTS.size | undefined;\n max?: number | undefined;\n className?: string | undefined;\n children?: ReactNode | undefined;\n}\n\nconst GROUP_OVERLAP = { 20: \"-ms-4\", 24: \"-ms-2\", 28: \"-ms-2\", 32: \"-ms-4\", 40: \"-ms-6\" } as const;\n\nexport const AvatarGroup = /* @__PURE__ */ forwardRef<HTMLDivElement, AvatarGroupProps>(function AvatarGroup({ people, size = 24, max = 4, className, children }, ref) {\n const t = useUiText();\n const shown = people.slice(0, max);\n const rest = people.length - shown.length;\n const overlap = GROUP_OVERLAP[size];\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={people.map((p) => p.name).join(t(\"avatarGroup.listSeparator\", \", \"))}\n className={cn(\"flex items-center\", className)}\n >\n {shown.map((p, i) => (\n <Avatar\n key={p.name + i}\n name={p.name}\n {...(p.src ? { src: p.src } : {})}\n size={size}\n decorative\n className={cn(\"ring-2 ring-panel\", i > 0 && overlap)}\n />\n ))}\n {rest > 0 && (\n <span\n className={cn(\n \"inline-flex shrink-0 items-center justify-center rounded-pill bg-fill-1 font-medium text-fg-secondary ring-2 ring-panel tabular\",\n KAESO_AVATAR_VARIANTS.size[size].classes,\n overlap,\n )}\n >\n +{rest}\n </span>\n )}\n {children && <span className=\"ms-8 inline-flex items-center\">{children}</span>}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") AvatarGroup.displayName = \"AvatarGroup\";\n"],"mappings":";;;;;;AAIA,IAAaE,IAAwB;CACnC,MAAM;EACJ,IAAI,EAAE,SAAS,qBAAqB;EACpC,IAAI,EAAE,SAAS,qBAAqB;EACpC,IAAI,EAAE,SAAS,uBAAuB;EACtC,IAAI,EAAE,SAAS,uBAAuB;EACtC,IAAI,EAAE,SAAS,oBAAoB;CACrC;CACA,MAAM;EACJ,QAAQ,EAAE,SAAS,eAAe;EAClC,KAAK,EAAE,SAAS,cAAc;CAChC;AACF,GACaC,IAAgC;CAAE,MAAM;CAAI,MAAM;AAAS;AAExE,SAAgBC,EAAS,GAAc,IAAa,GAAW;CAC7D,IAAMC,IAAQC,EAAK,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,OAAO,OAAO;CACrD,IAAID,EAAM,WAAW,GAAG,OAAO;CAC/B,IAAME,IAAQF,EAAM,EAAE,GAAG,MAAM;CAC/B,QAAQG,MAAQ,KAAKH,EAAM,SAAS,IAAIE,IAAQA,KAASF,EAAMA,EAAM,SAAS,EAAE,GAAG,MAAM,IAAA,CAAK,YAAY;AAC5G;AAWA,IAAaI,IAAyB,kBAAyC,SAAgB,EAAE,SAAM,QAAK,UAAO,IAAI,UAAO,UAAU,eAAY,gBAAa,GAAK;CACpK,IAAM,CAACC,GAAWC,KAAgBC,EAA6B,KAAA,CAAS;CACxE,OACE,kBAAC,QAAD;EACO;EACL,GAAKC,IAAa,EAAE,eAAe,GAAK,IAAI;GAAE,MAAM;GAAO,cAAcP;EAAK;EAC9E,WAAWN,EACT,yHACAE,EAAsB,KAAKY,EAAK,CAAC,SACjCZ,EAAsB,KAAKa,EAAK,CAAC,SACjCD,KAAQ,MAAMC,MAAS,SAAS,kBAChCC,CACF;EAEC,UAAAC,KAAOA,MAAQP,IACd,kBAAC,OAAD;GAAU;GAAK,KAAI;GAAG,WAAU;GAAyB,eAAeC,EAAaM,CAAG;EAAI,CAAA,IAE5Fb,EAASE,GAAMQ,MAAS,KAAK,IAAI,CAAC;CAEhC,CAAA;AAEV,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAO,cAAc;AAUhE,IAAMI,IAAgB;CAAE,IAAI;CAAS,IAAI;CAAS,IAAI;CAAS,IAAI;CAAS,IAAI;AAAQ,GAE3EC,IAA8B,kBAA6C,SAAqB,EAAE,WAAQ,UAAO,IAAI,SAAM,GAAG,cAAW,eAAY,GAAK;CACrK,IAAMC,IAAInB,EAAU,GACdoB,IAAQC,EAAO,MAAM,GAAGd,CAAG,GAC3Be,IAAOD,EAAO,SAASD,EAAM,QAC7BG,IAAUN,EAAcJ;CAC9B,OACE,kBAAC,OAAD;EACO;EACL,MAAK;EACL,cAAYQ,EAAO,KAAK,MAAMG,EAAE,IAAI,CAAC,CAAC,KAAKL,EAAE,6BAA6B,IAAI,CAAC;EAC/E,WAAWpB,EAAG,qBAAqBgB,CAAS;EAJ9C,UAAA;GAMGK,EAAM,KAAK,GAAG,MACb,kBAACZ,GAAD;IAEE,MAAMgB,EAAE;IACR,GAAKA,EAAE,MAAM,EAAE,KAAKA,EAAE,IAAI,IAAI,CAAC;IACzB;IACN,YAAA;IACA,WAAWzB,EAAG,qBAAqB0B,IAAI,KAAKF,CAAO;GACpD,GANMC,EAAE,OAAOC,CAMf,CACF;GACAH,IAAO,KACN,kBAAC,QAAD;IACE,WAAWvB,EACT,mIACAE,EAAsB,KAAKY,EAAK,CAAC,SACjCU,CACF;IALF,UAAA,CAMC,KACGD,CACE;;GAEPI,KAAY,kBAAC,QAAD;IAAM,WAAU;IAAiC;GAAe,CAAA;EAC1E;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAY,cAAc"}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { t as e } from "./cn-CidVUKMm.js";
2
+ import { t as e } from "./cn-DUDmdLpZ.js";
3
3
  import { forwardRef as t } from "react";
4
4
  import { jsx as n } from "react/jsx-runtime";
5
5
  //#region src/components/badge/badge.tsx
@@ -23,4 +23,4 @@ process.env.NODE_ENV !== "production" && (a.displayName = "Badge");
23
23
  //#endregion
24
24
  export { i as n, r, a as t };
25
25
 
26
- //# sourceMappingURL=badge-Dkyhs0_j.js.map
26
+ //# sourceMappingURL=badge-wUHlj7m3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"badge-Dkyhs0_j.js","names":["cn","KAESO_BADGE_VARIANTS","KAESO_BADGE_DEFAULT_VARIANTS","Badge","props","tone","className"],"sources":["../../src/components/badge/badge.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\n\nexport const KAESO_BADGE_VARIANTS = {\n tone: {\n neutral: { classes: \"bg-fill-2 text-fg-secondary\" },\n success: { classes: \"bg-success-tint text-success-text\" },\n warning: { classes: \"bg-warning-tint text-warning-text\" },\n danger: { classes: \"bg-danger-tint text-danger-text\" },\n info: { classes: \"bg-info-tint text-info-text\" },\n outline: { classes: \"bg-transparent text-fg-secondary shadow-ring\" },\n ink: { classes: \"bg-ink text-on-ink\" },\n },\n} as const;\nexport const KAESO_BADGE_DEFAULT_VARIANTS = { tone: \"neutral\" } as const;\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n tone?: keyof typeof KAESO_BADGE_VARIANTS.tone | undefined;\n children: ReactNode;\n}\n\nexport const Badge = /* @__PURE__ */ forwardRef<HTMLSpanElement, BadgeProps>(function Badge({ tone = \"neutral\", className, children, ...props }, ref) {\n return (\n <span\n ref={ref}\n className={cn(\n \"inline-flex h-22 shrink-0 items-center rounded-pill px-8 text-caption font-medium whitespace-nowrap tabular\",\n KAESO_BADGE_VARIANTS.tone[tone].classes,\n className,\n )}\n {...props}\n >\n {children}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Badge.displayName = \"Badge\";\n"],"mappings":";;;;;AAGA,IAAaC,IAAuB,EAClC,MAAM;CACJ,SAAS,EAAE,SAAS,8BAA8B;CAClD,SAAS,EAAE,SAAS,oCAAoC;CACxD,SAAS,EAAE,SAAS,oCAAoC;CACxD,QAAQ,EAAE,SAAS,kCAAkC;CACrD,MAAM,EAAE,SAAS,8BAA8B;CAC/C,SAAS,EAAE,SAAS,+CAA+C;CACnE,KAAK,EAAE,SAAS,qBAAqB;AACvC,EACF,GACaC,IAA+B,EAAE,MAAM,UAAU,GAOjDC,IAAwB,kBAAwC,SAAe,EAAE,UAAO,WAAW,cAAW,aAAU,GAAGC,KAAS,GAAK;CACpJ,OACE,kBAAC,QAAD;EACO;EACL,WAAWJ,EACT,+GACAC,EAAqB,KAAKI,EAAK,CAAC,SAChCC,CACF;EACA,GAAIF;EAEH;CACG,CAAA;AAEV,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAM,cAAc"}
1
+ {"version":3,"file":"badge-wUHlj7m3.js","names":["cn","KAESO_BADGE_VARIANTS","KAESO_BADGE_DEFAULT_VARIANTS","Badge","props","tone","className"],"sources":["../../src/components/badge/badge.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\n\nexport const KAESO_BADGE_VARIANTS = {\n tone: {\n neutral: { classes: \"bg-fill-2 text-fg-secondary\" },\n success: { classes: \"bg-success-tint text-success-text\" },\n warning: { classes: \"bg-warning-tint text-warning-text\" },\n danger: { classes: \"bg-danger-tint text-danger-text\" },\n info: { classes: \"bg-info-tint text-info-text\" },\n outline: { classes: \"bg-transparent text-fg-secondary shadow-ring\" },\n ink: { classes: \"bg-ink text-on-ink\" },\n },\n} as const;\nexport const KAESO_BADGE_DEFAULT_VARIANTS = { tone: \"neutral\" } as const;\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n tone?: keyof typeof KAESO_BADGE_VARIANTS.tone | undefined;\n children: ReactNode;\n}\n\nexport const Badge = /* @__PURE__ */ forwardRef<HTMLSpanElement, BadgeProps>(function Badge({ tone = \"neutral\", className, children, ...props }, ref) {\n return (\n <span\n ref={ref}\n className={cn(\n \"inline-flex h-22 shrink-0 items-center rounded-pill px-8 text-caption font-medium whitespace-nowrap tabular\",\n KAESO_BADGE_VARIANTS.tone[tone].classes,\n className,\n )}\n {...props}\n >\n {children}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Badge.displayName = \"Badge\";\n"],"mappings":";;;;;AAGA,IAAaC,IAAuB,EAClC,MAAM;CACJ,SAAS,EAAE,SAAS,8BAA8B;CAClD,SAAS,EAAE,SAAS,oCAAoC;CACxD,SAAS,EAAE,SAAS,oCAAoC;CACxD,QAAQ,EAAE,SAAS,kCAAkC;CACrD,MAAM,EAAE,SAAS,8BAA8B;CAC/C,SAAS,EAAE,SAAS,+CAA+C;CACnE,KAAK,EAAE,SAAS,qBAAqB;AACvC,EACF,GACaC,IAA+B,EAAE,MAAM,UAAU,GAOjDC,IAAwB,kBAAwC,SAAe,EAAE,UAAO,WAAW,cAAW,aAAU,GAAGC,KAAS,GAAK;CACpJ,OACE,kBAAC,QAAD;EACO;EACL,WAAWJ,EACT,+GACAC,EAAqB,KAAKI,EAAK,CAAC,SAChCC,CACF;EACA,GAAIF;EAEH;CACG,CAAA;AAEV,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAM,cAAc"}
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { t as e } from "./cn-CidVUKMm.js";
2
+ import { t as e } from "./cn-DUDmdLpZ.js";
3
3
  import { i as t } from "./context-BELWW79w.js";
4
- import { t as n } from "./icon-CeNQtobn.js";
5
- import { t as r } from "./icon-button-_x1RUphC.js";
4
+ import { t as n } from "./icon-BqujXDUc.js";
5
+ import { t as r } from "./icon-button-D4O4puwH.js";
6
6
  import { forwardRef as i, useState as a } from "react";
7
7
  import { jsx as o, jsxs as s } from "react/jsx-runtime";
8
8
  import { Alert02Icon as c, AlertCircleIcon as l, Cancel01Icon as u, CheckmarkCircle02Icon as d, InformationCircleIcon as f } from "@hugeicons/core-free-icons";
@@ -82,4 +82,4 @@ process.env.NODE_ENV !== "production" && (_.displayName = "Banner");
82
82
  //#endregion
83
83
  export { m as n, p as r, _ as t };
84
84
 
85
- //# sourceMappingURL=banner-DxGBPQ7p.js.map
85
+ //# sourceMappingURL=banner-BBlNFHd-.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"banner-DxGBPQ7p.js","names":["__icon_InformationCircleIcon","__icon_CheckmarkCircle02Icon","__icon_Alert02Icon","__icon_AlertCircleIcon","__icon_Cancel01Icon","cn","useUiText","Icon","IconButton","KAESO_BANNER_VARIANTS","KAESO_BANNER_DEFAULT_VARIANTS","ICON","InformationCircleIcon","CheckmarkCircle02Icon","Alert02Icon","AlertCircleIcon","ICON_TONE","Banner","hidden","setHidden","useState","t","dismissible","onDismiss","tone","layout","className","actions","icon","title","children","Cancel01Icon"],"sources":["../../src/components/banner/banner.tsx"],"sourcesContent":["import { forwardRef, useState, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { InformationCircleIcon as __icon_InformationCircleIcon, CheckmarkCircle02Icon as __icon_CheckmarkCircle02Icon, Alert02Icon as __icon_Alert02Icon, AlertCircleIcon as __icon_AlertCircleIcon, Cancel01Icon as __icon_Cancel01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_BANNER_VARIANTS = {\n tone: {\n neutral: { classes: \"bg-fill-1 text-fg\" },\n info: { classes: \"bg-info-tint text-fg\" },\n success: { classes: \"bg-success-tint text-fg\" },\n warning: { classes: \"bg-warning-tint text-fg\" },\n danger: { classes: \"bg-danger-tint text-fg\" },\n },\n layout: {\n inline: { classes: \"rounded-well px-16 py-12\" },\n full: { classes: \"rounded-none px-24 py-10\" },\n },\n} as const;\nexport const KAESO_BANNER_DEFAULT_VARIANTS = { tone: \"neutral\", layout: \"inline\" } as const;\n\nconst ICON: Record<keyof typeof KAESO_BANNER_VARIANTS.tone, IconData> = {\n neutral: __icon_InformationCircleIcon,\n info: __icon_InformationCircleIcon,\n success: __icon_CheckmarkCircle02Icon,\n warning: __icon_Alert02Icon,\n danger: __icon_AlertCircleIcon,\n};\nconst ICON_TONE = {\n neutral: \"text-fg-secondary\",\n info: \"text-info-text\",\n success: \"text-success-text\",\n warning: \"text-warning-text\",\n danger: \"text-danger-text\",\n} as const;\n\nexport interface BannerProps {\n tone?: keyof typeof KAESO_BANNER_VARIANTS.tone | undefined;\n layout?: keyof typeof KAESO_BANNER_VARIANTS.layout | undefined;\n title?: ReactNode | undefined;\n children?: ReactNode | undefined;\n icon?: IconData | undefined;\n actions?: ReactNode | undefined;\n onDismiss?: (() => void) | undefined;\n className?: string | undefined;\n}\n\nexport const Banner = /* @__PURE__ */ forwardRef<HTMLDivElement, BannerProps>(function Banner(\n { tone = \"neutral\", layout = \"inline\", title, children, icon, actions, onDismiss, className },\n ref,\n) {\n const [hidden, setHidden] = useState(false);\n const t = useUiText();\n if (hidden) return null;\n const dismissible = onDismiss && (tone === \"neutral\" || tone === \"info\");\n return (\n <div\n ref={ref}\n role={tone === \"danger\" ? \"alert\" : \"status\"}\n className={cn(\"@container w-full\", KAESO_BANNER_VARIANTS.tone[tone].classes, KAESO_BANNER_VARIANTS.layout[layout].classes, className)}\n >\n <div className={cn(\"flex items-start gap-8\", actions && \"@banner:items-center\")}>\n <div className=\"flex min-w-0 flex-1 flex-col gap-12 @banner:flex-row @banner:items-center @banner:gap-24\">\n <div className=\"flex min-w-0 flex-1 items-start gap-8\">\n <Icon icon={icon ?? ICON[tone]} size=\"sm\" className={cn(\"mt-2\", ICON_TONE[tone])} />\n <div className=\"flex min-w-0 flex-1 flex-col gap-2 text-body\">\n {title && <span className=\"font-semibold text-fg\">{title}</span>}\n {children && <div className=\"text-fg text-pretty\">{children}</div>}\n </div>\n </div>\n {actions && <div className=\"ml-24 flex shrink-0 flex-wrap items-center gap-8 @banner:ml-0\">{actions}</div>}\n </div>\n {dismissible && (\n <IconButton\n icon={__icon_Cancel01Icon}\n aria-label={t(\"banner.dismiss\", \"Dismiss\")}\n size=\"xs\"\n className=\"-my-2 -mr-6\"\n onClick={() => {\n setHidden(true);\n onDismiss?.();\n }}\n />\n )}\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Banner.displayName = \"Banner\";\n"],"mappings":";;;;;;;;;AAOA,IAAaS,IAAwB;CACnC,MAAM;EACJ,SAAS,EAAE,SAAS,oBAAoB;EACxC,MAAM,EAAE,SAAS,uBAAuB;EACxC,SAAS,EAAE,SAAS,0BAA0B;EAC9C,SAAS,EAAE,SAAS,0BAA0B;EAC9C,QAAQ,EAAE,SAAS,yBAAyB;CAC9C;CACA,QAAQ;EACN,QAAQ,EAAE,SAAS,2BAA2B;EAC9C,MAAM,EAAE,SAAS,2BAA2B;CAC9C;AACF,GACaC,IAAgC;CAAE,MAAM;CAAW,QAAQ;AAAS,GAE3EC,IAAkE;CACtE,SAASX;CACT,MAAMA;CACN,SAASC;CACT,SAASC;CACT,QAAQC;AACV,GACMa,IAAY;CAChB,SAAS;CACT,MAAM;CACN,SAAS;CACT,SAAS;CACT,QAAQ;AACV,GAaaC,IAAyB,kBAAwC,SAC5E,EAAE,UAAO,WAAW,YAAS,UAAU,UAAO,aAAU,SAAM,YAAS,cAAW,gBAClF,GACA;CACA,IAAM,CAACC,GAAQC,KAAaC,EAAS,EAAK,GACpCC,IAAIf,EAAU;CACpB,IAAIY,GAAQ,OAAO;CACnB,IAAMI,IAAcC,MAAcC,MAAS,aAAaA,MAAS;CACjE,OACE,kBAAC,OAAD;EACO;EACL,MAAMA,MAAS,WAAW,UAAU;EACpC,WAAWnB,EAAG,qBAAqBI,EAAsB,KAAKe,EAAK,CAAC,SAASf,EAAsB,OAAOgB,EAAO,CAAC,SAASC,CAAS;EAEpI,UAAA,kBAAC,OAAD;GAAK,WAAWrB,EAAG,0BAA0BsB,KAAW,sBAAsB;GAA9E,UAAA,CACE,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACE,kBAACpB,GAAD;MAAM,MAAMqB,KAAQjB,EAAKa;MAAO,MAAK;MAAK,WAAWnB,EAAG,QAAQW,EAAUQ,EAAK;KAAI,CAAA,GACnF,kBAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACGK,KAAS,kBAAC,QAAD;OAAM,WAAU;OAAyB,UAAAA;MAAY,CAAA,GAC9DC,KAAY,kBAAC,OAAD;OAAK,WAAU;OAAuB;MAAc,CAAA,CAC9D;KACF,CAAA,CAAA;IACJ,CAAA,GAAAH,KAAW,kBAAC,OAAD;KAAK,WAAU;KAAiE,UAAAA;IAAa,CAAA,CACtG;GACJ,CAAA,GAAAL,KACC,kBAACd,GAAD;IACE,MAAMJ;IACN,cAAYiB,EAAE,kBAAkB,SAAS;IACzC,MAAK;IACL,WAAU;IACV,eAAe;KAEb,AADAF,EAAU,EAAI,GACdI,IAAY;IACd;GACD,CAAA,CAEA;;CACF,CAAA;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAO,cAAc"}
1
+ {"version":3,"file":"banner-BBlNFHd-.js","names":["__icon_InformationCircleIcon","__icon_CheckmarkCircle02Icon","__icon_Alert02Icon","__icon_AlertCircleIcon","__icon_Cancel01Icon","cn","useUiText","Icon","IconButton","KAESO_BANNER_VARIANTS","KAESO_BANNER_DEFAULT_VARIANTS","ICON","InformationCircleIcon","CheckmarkCircle02Icon","Alert02Icon","AlertCircleIcon","ICON_TONE","Banner","hidden","setHidden","useState","t","dismissible","onDismiss","tone","layout","className","actions","icon","title","children","Cancel01Icon"],"sources":["../../src/components/banner/banner.tsx"],"sourcesContent":["import { forwardRef, useState, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { InformationCircleIcon as __icon_InformationCircleIcon, CheckmarkCircle02Icon as __icon_CheckmarkCircle02Icon, Alert02Icon as __icon_Alert02Icon, AlertCircleIcon as __icon_AlertCircleIcon, Cancel01Icon as __icon_Cancel01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_BANNER_VARIANTS = {\n tone: {\n neutral: { classes: \"bg-fill-1 text-fg\" },\n info: { classes: \"bg-info-tint text-fg\" },\n success: { classes: \"bg-success-tint text-fg\" },\n warning: { classes: \"bg-warning-tint text-fg\" },\n danger: { classes: \"bg-danger-tint text-fg\" },\n },\n layout: {\n inline: { classes: \"rounded-well px-16 py-12\" },\n full: { classes: \"rounded-none px-24 py-10\" },\n },\n} as const;\nexport const KAESO_BANNER_DEFAULT_VARIANTS = { tone: \"neutral\", layout: \"inline\" } as const;\n\nconst ICON: Record<keyof typeof KAESO_BANNER_VARIANTS.tone, IconData> = {\n neutral: __icon_InformationCircleIcon,\n info: __icon_InformationCircleIcon,\n success: __icon_CheckmarkCircle02Icon,\n warning: __icon_Alert02Icon,\n danger: __icon_AlertCircleIcon,\n};\nconst ICON_TONE = {\n neutral: \"text-fg-secondary\",\n info: \"text-info-text\",\n success: \"text-success-text\",\n warning: \"text-warning-text\",\n danger: \"text-danger-text\",\n} as const;\n\nexport interface BannerProps {\n tone?: keyof typeof KAESO_BANNER_VARIANTS.tone | undefined;\n layout?: keyof typeof KAESO_BANNER_VARIANTS.layout | undefined;\n title?: ReactNode | undefined;\n children?: ReactNode | undefined;\n icon?: IconData | undefined;\n actions?: ReactNode | undefined;\n onDismiss?: (() => void) | undefined;\n className?: string | undefined;\n}\n\nexport const Banner = /* @__PURE__ */ forwardRef<HTMLDivElement, BannerProps>(function Banner(\n { tone = \"neutral\", layout = \"inline\", title, children, icon, actions, onDismiss, className },\n ref,\n) {\n const [hidden, setHidden] = useState(false);\n const t = useUiText();\n if (hidden) return null;\n const dismissible = onDismiss && (tone === \"neutral\" || tone === \"info\");\n return (\n <div\n ref={ref}\n role={tone === \"danger\" ? \"alert\" : \"status\"}\n className={cn(\"@container w-full\", KAESO_BANNER_VARIANTS.tone[tone].classes, KAESO_BANNER_VARIANTS.layout[layout].classes, className)}\n >\n <div className={cn(\"flex items-start gap-8\", actions && \"@banner:items-center\")}>\n <div className=\"flex min-w-0 flex-1 flex-col gap-12 @banner:flex-row @banner:items-center @banner:gap-24\">\n <div className=\"flex min-w-0 flex-1 items-start gap-8\">\n <Icon icon={icon ?? ICON[tone]} size=\"sm\" className={cn(\"mt-2\", ICON_TONE[tone])} />\n <div className=\"flex min-w-0 flex-1 flex-col gap-2 text-body\">\n {title && <span className=\"font-semibold text-fg\">{title}</span>}\n {children && <div className=\"text-fg text-pretty\">{children}</div>}\n </div>\n </div>\n {actions && <div className=\"ml-24 flex shrink-0 flex-wrap items-center gap-8 @banner:ml-0\">{actions}</div>}\n </div>\n {dismissible && (\n <IconButton\n icon={__icon_Cancel01Icon}\n aria-label={t(\"banner.dismiss\", \"Dismiss\")}\n size=\"xs\"\n className=\"-my-2 -mr-6\"\n onClick={() => {\n setHidden(true);\n onDismiss?.();\n }}\n />\n )}\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Banner.displayName = \"Banner\";\n"],"mappings":";;;;;;;;;AAOA,IAAaS,IAAwB;CACnC,MAAM;EACJ,SAAS,EAAE,SAAS,oBAAoB;EACxC,MAAM,EAAE,SAAS,uBAAuB;EACxC,SAAS,EAAE,SAAS,0BAA0B;EAC9C,SAAS,EAAE,SAAS,0BAA0B;EAC9C,QAAQ,EAAE,SAAS,yBAAyB;CAC9C;CACA,QAAQ;EACN,QAAQ,EAAE,SAAS,2BAA2B;EAC9C,MAAM,EAAE,SAAS,2BAA2B;CAC9C;AACF,GACaC,IAAgC;CAAE,MAAM;CAAW,QAAQ;AAAS,GAE3EC,IAAkE;CACtE,SAASX;CACT,MAAMA;CACN,SAASC;CACT,SAASC;CACT,QAAQC;AACV,GACMa,IAAY;CAChB,SAAS;CACT,MAAM;CACN,SAAS;CACT,SAAS;CACT,QAAQ;AACV,GAaaC,IAAyB,kBAAwC,SAC5E,EAAE,UAAO,WAAW,YAAS,UAAU,UAAO,aAAU,SAAM,YAAS,cAAW,gBAClF,GACA;CACA,IAAM,CAACC,GAAQC,KAAaC,EAAS,EAAK,GACpCC,IAAIf,EAAU;CACpB,IAAIY,GAAQ,OAAO;CACnB,IAAMI,IAAcC,MAAcC,MAAS,aAAaA,MAAS;CACjE,OACE,kBAAC,OAAD;EACO;EACL,MAAMA,MAAS,WAAW,UAAU;EACpC,WAAWnB,EAAG,qBAAqBI,EAAsB,KAAKe,EAAK,CAAC,SAASf,EAAsB,OAAOgB,EAAO,CAAC,SAASC,CAAS;EAEpI,UAAA,kBAAC,OAAD;GAAK,WAAWrB,EAAG,0BAA0BsB,KAAW,sBAAsB;GAA9E,UAAA,CACE,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACE,kBAACpB,GAAD;MAAM,MAAMqB,KAAQjB,EAAKa;MAAO,MAAK;MAAK,WAAWnB,EAAG,QAAQW,EAAUQ,EAAK;KAAI,CAAA,GACnF,kBAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACGK,KAAS,kBAAC,QAAD;OAAM,WAAU;OAAyB,UAAAA;MAAY,CAAA,GAC9DC,KAAY,kBAAC,OAAD;OAAK,WAAU;OAAuB;MAAc,CAAA,CAC9D;KACF,CAAA,CAAA;IACJ,CAAA,GAAAH,KAAW,kBAAC,OAAD;KAAK,WAAU;KAAiE,UAAAA;IAAa,CAAA,CACtG;GACJ,CAAA,GAAAL,KACC,kBAACd,GAAD;IACE,MAAMJ;IACN,cAAYiB,EAAE,kBAAkB,SAAS;IACzC,MAAK;IACL,WAAU;IACV,eAAe;KAEb,AADAF,EAAU,EAAI,GACdI,IAAY;IACd;GACD,CAAA,CAEA;;CACF,CAAA;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAO,cAAc"}
@@ -1,12 +1,12 @@
1
1
  "use client";
2
- import { t as e } from "./cn-CidVUKMm.js";
2
+ import { t as e } from "./cn-DUDmdLpZ.js";
3
3
  import { i as t, r as n } from "./dev-CR1p7gCm.js";
4
- import { n as r, r as i } from "./link-provider---9JdxTg.js";
5
- import { t as a } from "./icon-CeNQtobn.js";
6
- import { i as o } from "./kbd-CBcBDvqU.js";
7
- import { r as s } from "./tooltip-DEbCCsru.js";
8
- import { i as c, r as l } from "./loader-CUehxvSZ.js";
9
- import { r as u } from "./swap-text-BhPI8DOf.js";
4
+ import { n as r, r as i } from "./link-provider-BsUxhZKG.js";
5
+ import { t as a } from "./icon-BqujXDUc.js";
6
+ import { i as o } from "./kbd-DqWmbr_e.js";
7
+ import { r as s } from "./tooltip-S1DmyLVl.js";
8
+ import { i as c, r as l } from "./loader-ENBh2Fbt.js";
9
+ import { r as u } from "./swap-text-Cica0pUr.js";
10
10
  import { forwardRef as d } from "react";
11
11
  import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
12
12
  //#region src/components/button/button.tsx
@@ -161,4 +161,4 @@ process.env.NODE_ENV !== "production" && (S.displayName = "Button");
161
161
  //#endregion
162
162
  export { x as a, h as i, S as n, g as r, b as t };
163
163
 
164
- //# sourceMappingURL=button-DQvoOxVQ.js.map
164
+ //# sourceMappingURL=button-CAPyW-v8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"button-DQvoOxVQ.js","names":["_Fragment","cn","warnStylingClassName","warnMissingName","isExternalHref","useLinkComponent","Icon","KbdSequence","Tooltip","useDelayedLoading","Spinner","SwapText","Fragment$1","KAESO_BUTTON_VARIANTS","KAESO_BUTTON_DEFAULT_VARIANTS","LEADING_ICON_PADDING","TRAILING_ICON_PADDING","CIRCLE","BUTTON_ICON_SIZE","buttonClasses","size","shape","leading","variant","trailing","fullWidth","Button","rest","props","LinkComp","className","spinning","loading","busy","isCircle","iconSize","spinnerSize","leadingIcon","trailingIcon","shortcut","count","reserveLabels","domProps","k","softDisabled","disabledReason","disabled","inert","classes","content","handleClick","onClick","el","href","external","target","rel","type"],"sources":["../../src/components/button/button.tsx"],"sourcesContent":["import { forwardRef, type ButtonHTMLAttributes, type MouseEvent, type ReactElement, type ReactNode, type Ref } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useLinkComponent, isExternalHref } from \"../../utils/link-provider.js\";\nimport { warnMissingName, warnStylingClassName } from \"../../utils/dev.js\";\nimport { Icon, type IconData, type IconSize } from \"../icon/icon.js\";\nimport { Spinner, useDelayedLoading } from \"../loader/loader.js\";\nimport { KbdSequence } from \"../kbd/kbd.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport { SwapText } from \"../swap-text/swap-text.js\";\n\nexport const KAESO_BUTTON_VARIANTS = {\n variant: {\n primary: { classes: \"material-primary\" },\n secondary: { classes: \"material-secondary\" },\n ghost: { classes: \"material-ghost\" },\n quiet: {\n classes: \"material-ghost text-fg-secondary hover:text-fg\",\n },\n soft: { classes: \"material-soft\" },\n danger: { classes: \"material-danger\" },\n \"danger-secondary\": { classes: \"material-danger-secondary\" },\n link: {\n classes: \"bg-transparent text-fg underline decoration-line-strong decoration-1 underline-offset-3 hover:decoration-current disabled:text-fg-disabled\",\n },\n },\n size: {\n xs: { classes: \"h-24 px-10 gap-4 text-caption font-medium\" },\n sm: { classes: \"h-32 px-12 gap-6 text-body font-medium\" },\n md: { classes: \"h-36 px-16 gap-6 text-body font-medium\" },\n lg: { classes: \"h-40 px-18 gap-8 text-body font-medium\" },\n xl: { classes: \"h-48 px-22 gap-8 text-body-lg font-medium\" },\n },\n shape: {\n pill: { classes: \"rounded-pill\" },\n circle: { classes: \"rounded-pill p-0 justify-center\" },\n },\n} as const;\nexport const KAESO_BUTTON_DEFAULT_VARIANTS = { variant: \"secondary\", size: \"md\", shape: \"pill\" } as const;\n\nexport type ButtonVariant = keyof typeof KAESO_BUTTON_VARIANTS.variant;\nexport type ButtonSize = keyof typeof KAESO_BUTTON_VARIANTS.size;\nexport type ButtonShape = keyof typeof KAESO_BUTTON_VARIANTS.shape;\n\nconst LEADING_ICON_PADDING: Record<ButtonSize, string> = { xs: \"pl-8\", sm: \"pl-10\", md: \"pl-14\", lg: \"pl-16\", xl: \"pl-20\" };\nconst TRAILING_ICON_PADDING: Record<ButtonSize, string> = { xs: \"pr-8\", sm: \"pr-10\", md: \"pr-14\", lg: \"pr-16\", xl: \"pr-20\" };\nconst CIRCLE: Record<ButtonSize, string> = { xs: \"size-24\", sm: \"size-32\", md: \"size-36\", lg: \"size-40\", xl: \"size-48\" };\nexport const BUTTON_ICON_SIZE: Record<ButtonSize, IconSize> = { xs: \"xs\", sm: \"sm\", md: \"sm\", lg: \"md\", xl: \"lg\" };\n\nexport function buttonClasses({\n variant = KAESO_BUTTON_DEFAULT_VARIANTS.variant,\n size = KAESO_BUTTON_DEFAULT_VARIANTS.size,\n shape = KAESO_BUTTON_DEFAULT_VARIANTS.shape,\n leading = false,\n trailing = false,\n fullWidth = false,\n}: {\n variant?: ButtonVariant | undefined;\n size?: ButtonSize | undefined;\n shape?: ButtonShape | undefined;\n leading?: boolean | undefined;\n trailing?: boolean | undefined;\n fullWidth?: boolean | undefined;\n} = {}) {\n return cn(\n \"relative inline-flex shrink-0 select-none items-center justify-center whitespace-nowrap no-underline\",\n \"cursor-pointer transition-control focus-ring tap-target disabled:cursor-not-allowed\",\n KAESO_BUTTON_VARIANTS.size[size].classes,\n KAESO_BUTTON_VARIANTS.shape[shape].classes,\n shape === \"circle\" && CIRCLE[size],\n shape === \"pill\" && leading && variant !== \"link\" && LEADING_ICON_PADDING[size],\n shape === \"pill\" && trailing && variant !== \"link\" && TRAILING_ICON_PADDING[size],\n variant === \"link\" && \"-mx-4 px-4\",\n KAESO_BUTTON_VARIANTS.variant[variant].classes,\n fullWidth && \"w-full\",\n );\n}\n\ninterface CommonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n variant?: ButtonVariant | undefined;\n size?: ButtonSize | undefined;\n loading?: boolean | undefined;\n disabledReason?: string | undefined;\n href?: string | undefined;\n target?: string | undefined;\n rel?: string | undefined;\n fullWidth?: boolean | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport interface PillButtonProps extends CommonProps {\n shape?: \"pill\" | undefined;\n children: ReactNode;\n leadingIcon?: IconData | undefined;\n trailingIcon?: IconData | undefined;\n shortcut?: string[] | string[][] | undefined;\n count?: number | undefined;\n reserveLabels?: ReactNode[] | undefined;\n}\n\nexport interface CircleButtonProps extends CommonProps {\n shape: \"circle\";\n icon: IconData;\n \"aria-label\": string;\n children?: never | undefined;\n}\n\nexport type ButtonProps = PillButtonProps | CircleButtonProps;\n\nexport const Button = /* @__PURE__ */ forwardRef<HTMLButtonElement | HTMLAnchorElement, ButtonProps>(function Button(props, ref) {\n const {\n variant = KAESO_BUTTON_DEFAULT_VARIANTS.variant,\n size = KAESO_BUTTON_DEFAULT_VARIANTS.size,\n loading = false,\n disabled = false,\n disabledReason,\n href,\n target,\n rel,\n fullWidth,\n className,\n type,\n onClick,\n ...rest\n } = props;\n const LinkComp = useLinkComponent();\n warnStylingClassName(\"Button\", className);\n\n const spinning = useDelayedLoading(loading);\n const busy = loading || spinning;\n const isCircle = props.shape === \"circle\";\n const iconSize = BUTTON_ICON_SIZE[size];\n const spinnerSize = iconSize === \"xs\" ? \"xs\" : iconSize === \"sm\" ? \"sm\" : \"md\";\n const leadingIcon = !isCircle ? (props as PillButtonProps).leadingIcon : undefined;\n const trailingIcon = !isCircle ? (props as PillButtonProps).trailingIcon : undefined;\n const shortcut = !isCircle ? (props as PillButtonProps).shortcut : undefined;\n const count = !isCircle ? (props as PillButtonProps).count : undefined;\n const reserveLabels = !isCircle ? (props as PillButtonProps).reserveLabels : undefined;\n if (isCircle) warnMissingName(\"Button\", !!(props as CircleButtonProps)[\"aria-label\"]);\n\n const domProps = { ...rest } as Record<string, unknown>;\n for (const k of [\"shape\", \"icon\", \"leadingIcon\", \"trailingIcon\", \"shortcut\", \"count\", \"children\", \"reserveLabels\"]) delete domProps[k];\n\n const softDisabled = !!disabledReason && disabled;\n const inert = busy || softDisabled;\n const classes = cn(\n buttonClasses({\n variant,\n size,\n shape: isCircle ? \"circle\" : \"pill\",\n leading: !!leadingIcon,\n trailing: !!trailingIcon || !!shortcut || count !== undefined,\n fullWidth: !!fullWidth,\n }),\n busy && \"cursor-progress\",\n className,\n );\n\n const content = isCircle ? (\n spinning ? (\n <Spinner size={spinnerSize} />\n ) : (\n <Icon icon={(props as CircleButtonProps).icon} size={iconSize} />\n )\n ) : (\n <>\n {spinning && leadingIcon ? <Spinner size={spinnerSize} /> : leadingIcon ? <Icon icon={leadingIcon} size={iconSize} /> : null}\n <span className={cn(\"inline-flex min-w-0 items-center\", spinning && !leadingIcon && \"opacity-0\")}>\n {reserveLabels ? <SwapText reserve={reserveLabels}>{(props as PillButtonProps).children}</SwapText> : (props as PillButtonProps).children}\n </span>\n {count !== undefined && (\n <span\n className={cn(\n \"inline-flex h-20 min-w-20 items-center justify-center rounded-pill px-6 text-caption font-medium tabular\",\n variant === \"primary\" ? \"bg-on-ink/15 text-on-ink\" : variant === \"danger\" ? \"bg-on-danger/20 text-on-danger\" : \"bg-fill-2 text-fg-secondary\",\n )}\n >\n {count}\n </span>\n )}\n {shortcut && <KbdSequence keys={shortcut} tone={variant === \"primary\" || variant === \"danger\" ? \"onInk\" : \"default\"} />}\n {trailingIcon && <Icon icon={trailingIcon} size={iconSize} />}\n {spinning && !leadingIcon && <Spinner size={spinnerSize} className=\"absolute inset-0 m-auto\" />}\n </>\n );\n\n const handleClick = (e: MouseEvent<HTMLButtonElement & HTMLAnchorElement>) => {\n if (inert) {\n e.preventDefault();\n return;\n }\n onClick?.(e as MouseEvent<HTMLButtonElement>);\n };\n\n let el: ReactNode;\n if (href && !disabled) {\n const external = isExternalHref(href);\n el = (\n <LinkComp\n ref={ref as Ref<HTMLAnchorElement>}\n href={href}\n className={classes}\n {...(target ? { target } : external ? { target: \"_blank\" } : {})}\n {...(rel ? { rel } : external ? { rel: \"noopener noreferrer\" } : {})}\n {...(domProps as object)}\n {...(busy ? { \"aria-busy\": true, \"data-loading\": \"\" } : {})}\n onClick={handleClick}\n >\n {content}\n </LinkComp>\n );\n } else {\n el = (\n <button\n ref={ref as Ref<HTMLButtonElement>}\n type={type ?? \"button\"}\n className={classes}\n disabled={disabled && !softDisabled}\n {...(domProps as object)}\n {...(softDisabled ? { \"aria-disabled\": true } : {})}\n {...(busy ? { \"aria-busy\": true, \"data-loading\": \"\" } : {})}\n {...(softDisabled ? { \"data-disabled\": \"\" } : {})}\n onClick={handleClick}\n >\n {content}\n </button>\n );\n }\n\n if (disabledReason && disabled) {\n return <Tooltip content={disabledReason}>{el as ReactElement}</Tooltip>;\n }\n return el;\n});\nif (process.env.NODE_ENV !== \"production\") Button.displayName = \"Button\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"button-CAPyW-v8.js","names":["_Fragment","cn","warnStylingClassName","warnMissingName","isExternalHref","useLinkComponent","Icon","KbdSequence","Tooltip","useDelayedLoading","Spinner","SwapText","Fragment$1","KAESO_BUTTON_VARIANTS","KAESO_BUTTON_DEFAULT_VARIANTS","LEADING_ICON_PADDING","TRAILING_ICON_PADDING","CIRCLE","BUTTON_ICON_SIZE","buttonClasses","size","shape","leading","variant","trailing","fullWidth","Button","rest","props","LinkComp","className","spinning","loading","busy","isCircle","iconSize","spinnerSize","leadingIcon","trailingIcon","shortcut","count","reserveLabels","domProps","k","softDisabled","disabledReason","disabled","inert","classes","content","handleClick","onClick","el","href","external","target","rel","type"],"sources":["../../src/components/button/button.tsx"],"sourcesContent":["import { forwardRef, type ButtonHTMLAttributes, type MouseEvent, type ReactElement, type ReactNode, type Ref } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useLinkComponent, isExternalHref } from \"../../utils/link-provider.js\";\nimport { warnMissingName, warnStylingClassName } from \"../../utils/dev.js\";\nimport { Icon, type IconData, type IconSize } from \"../icon/icon.js\";\nimport { Spinner, useDelayedLoading } from \"../loader/loader.js\";\nimport { KbdSequence } from \"../kbd/kbd.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport { SwapText } from \"../swap-text/swap-text.js\";\n\nexport const KAESO_BUTTON_VARIANTS = {\n variant: {\n primary: { classes: \"material-primary\" },\n secondary: { classes: \"material-secondary\" },\n ghost: { classes: \"material-ghost\" },\n quiet: {\n classes: \"material-ghost text-fg-secondary hover:text-fg\",\n },\n soft: { classes: \"material-soft\" },\n danger: { classes: \"material-danger\" },\n \"danger-secondary\": { classes: \"material-danger-secondary\" },\n link: {\n classes: \"bg-transparent text-fg underline decoration-line-strong decoration-1 underline-offset-3 hover:decoration-current disabled:text-fg-disabled\",\n },\n },\n size: {\n xs: { classes: \"h-24 px-10 gap-4 text-caption font-medium\" },\n sm: { classes: \"h-32 px-12 gap-6 text-body font-medium\" },\n md: { classes: \"h-36 px-16 gap-6 text-body font-medium\" },\n lg: { classes: \"h-40 px-18 gap-8 text-body font-medium\" },\n xl: { classes: \"h-48 px-22 gap-8 text-body-lg font-medium\" },\n },\n shape: {\n pill: { classes: \"rounded-pill\" },\n circle: { classes: \"rounded-pill p-0 justify-center\" },\n },\n} as const;\nexport const KAESO_BUTTON_DEFAULT_VARIANTS = { variant: \"secondary\", size: \"md\", shape: \"pill\" } as const;\n\nexport type ButtonVariant = keyof typeof KAESO_BUTTON_VARIANTS.variant;\nexport type ButtonSize = keyof typeof KAESO_BUTTON_VARIANTS.size;\nexport type ButtonShape = keyof typeof KAESO_BUTTON_VARIANTS.shape;\n\nconst LEADING_ICON_PADDING: Record<ButtonSize, string> = { xs: \"pl-8\", sm: \"pl-10\", md: \"pl-14\", lg: \"pl-16\", xl: \"pl-20\" };\nconst TRAILING_ICON_PADDING: Record<ButtonSize, string> = { xs: \"pr-8\", sm: \"pr-10\", md: \"pr-14\", lg: \"pr-16\", xl: \"pr-20\" };\nconst CIRCLE: Record<ButtonSize, string> = { xs: \"size-24\", sm: \"size-32\", md: \"size-36\", lg: \"size-40\", xl: \"size-48\" };\nexport const BUTTON_ICON_SIZE: Record<ButtonSize, IconSize> = { xs: \"xs\", sm: \"sm\", md: \"sm\", lg: \"md\", xl: \"lg\" };\n\nexport function buttonClasses({\n variant = KAESO_BUTTON_DEFAULT_VARIANTS.variant,\n size = KAESO_BUTTON_DEFAULT_VARIANTS.size,\n shape = KAESO_BUTTON_DEFAULT_VARIANTS.shape,\n leading = false,\n trailing = false,\n fullWidth = false,\n}: {\n variant?: ButtonVariant | undefined;\n size?: ButtonSize | undefined;\n shape?: ButtonShape | undefined;\n leading?: boolean | undefined;\n trailing?: boolean | undefined;\n fullWidth?: boolean | undefined;\n} = {}) {\n return cn(\n \"relative inline-flex shrink-0 select-none items-center justify-center whitespace-nowrap no-underline\",\n \"cursor-pointer transition-control focus-ring tap-target disabled:cursor-not-allowed\",\n KAESO_BUTTON_VARIANTS.size[size].classes,\n KAESO_BUTTON_VARIANTS.shape[shape].classes,\n shape === \"circle\" && CIRCLE[size],\n shape === \"pill\" && leading && variant !== \"link\" && LEADING_ICON_PADDING[size],\n shape === \"pill\" && trailing && variant !== \"link\" && TRAILING_ICON_PADDING[size],\n variant === \"link\" && \"-mx-4 px-4\",\n KAESO_BUTTON_VARIANTS.variant[variant].classes,\n fullWidth && \"w-full\",\n );\n}\n\ninterface CommonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n variant?: ButtonVariant | undefined;\n size?: ButtonSize | undefined;\n loading?: boolean | undefined;\n disabledReason?: string | undefined;\n href?: string | undefined;\n target?: string | undefined;\n rel?: string | undefined;\n fullWidth?: boolean | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport interface PillButtonProps extends CommonProps {\n shape?: \"pill\" | undefined;\n children: ReactNode;\n leadingIcon?: IconData | undefined;\n trailingIcon?: IconData | undefined;\n shortcut?: string[] | string[][] | undefined;\n count?: number | undefined;\n reserveLabels?: ReactNode[] | undefined;\n}\n\nexport interface CircleButtonProps extends CommonProps {\n shape: \"circle\";\n icon: IconData;\n \"aria-label\": string;\n children?: never | undefined;\n}\n\nexport type ButtonProps = PillButtonProps | CircleButtonProps;\n\nexport const Button = /* @__PURE__ */ forwardRef<HTMLButtonElement | HTMLAnchorElement, ButtonProps>(function Button(props, ref) {\n const {\n variant = KAESO_BUTTON_DEFAULT_VARIANTS.variant,\n size = KAESO_BUTTON_DEFAULT_VARIANTS.size,\n loading = false,\n disabled = false,\n disabledReason,\n href,\n target,\n rel,\n fullWidth,\n className,\n type,\n onClick,\n ...rest\n } = props;\n const LinkComp = useLinkComponent();\n warnStylingClassName(\"Button\", className);\n\n const spinning = useDelayedLoading(loading);\n const busy = loading || spinning;\n const isCircle = props.shape === \"circle\";\n const iconSize = BUTTON_ICON_SIZE[size];\n const spinnerSize = iconSize === \"xs\" ? \"xs\" : iconSize === \"sm\" ? \"sm\" : \"md\";\n const leadingIcon = !isCircle ? (props as PillButtonProps).leadingIcon : undefined;\n const trailingIcon = !isCircle ? (props as PillButtonProps).trailingIcon : undefined;\n const shortcut = !isCircle ? (props as PillButtonProps).shortcut : undefined;\n const count = !isCircle ? (props as PillButtonProps).count : undefined;\n const reserveLabels = !isCircle ? (props as PillButtonProps).reserveLabels : undefined;\n if (isCircle) warnMissingName(\"Button\", !!(props as CircleButtonProps)[\"aria-label\"]);\n\n const domProps = { ...rest } as Record<string, unknown>;\n for (const k of [\"shape\", \"icon\", \"leadingIcon\", \"trailingIcon\", \"shortcut\", \"count\", \"children\", \"reserveLabels\"]) delete domProps[k];\n\n const softDisabled = !!disabledReason && disabled;\n const inert = busy || softDisabled;\n const classes = cn(\n buttonClasses({\n variant,\n size,\n shape: isCircle ? \"circle\" : \"pill\",\n leading: !!leadingIcon,\n trailing: !!trailingIcon || !!shortcut || count !== undefined,\n fullWidth: !!fullWidth,\n }),\n busy && \"cursor-progress\",\n className,\n );\n\n const content = isCircle ? (\n spinning ? (\n <Spinner size={spinnerSize} />\n ) : (\n <Icon icon={(props as CircleButtonProps).icon} size={iconSize} />\n )\n ) : (\n <>\n {spinning && leadingIcon ? <Spinner size={spinnerSize} /> : leadingIcon ? <Icon icon={leadingIcon} size={iconSize} /> : null}\n <span className={cn(\"inline-flex min-w-0 items-center\", spinning && !leadingIcon && \"opacity-0\")}>\n {reserveLabels ? <SwapText reserve={reserveLabels}>{(props as PillButtonProps).children}</SwapText> : (props as PillButtonProps).children}\n </span>\n {count !== undefined && (\n <span\n className={cn(\n \"inline-flex h-20 min-w-20 items-center justify-center rounded-pill px-6 text-caption font-medium tabular\",\n variant === \"primary\" ? \"bg-on-ink/15 text-on-ink\" : variant === \"danger\" ? \"bg-on-danger/20 text-on-danger\" : \"bg-fill-2 text-fg-secondary\",\n )}\n >\n {count}\n </span>\n )}\n {shortcut && <KbdSequence keys={shortcut} tone={variant === \"primary\" || variant === \"danger\" ? \"onInk\" : \"default\"} />}\n {trailingIcon && <Icon icon={trailingIcon} size={iconSize} />}\n {spinning && !leadingIcon && <Spinner size={spinnerSize} className=\"absolute inset-0 m-auto\" />}\n </>\n );\n\n const handleClick = (e: MouseEvent<HTMLButtonElement & HTMLAnchorElement>) => {\n if (inert) {\n e.preventDefault();\n return;\n }\n onClick?.(e as MouseEvent<HTMLButtonElement>);\n };\n\n let el: ReactNode;\n if (href && !disabled) {\n const external = isExternalHref(href);\n el = (\n <LinkComp\n ref={ref as Ref<HTMLAnchorElement>}\n href={href}\n className={classes}\n {...(target ? { target } : external ? { target: \"_blank\" } : {})}\n {...(rel ? { rel } : external ? { rel: \"noopener noreferrer\" } : {})}\n {...(domProps as object)}\n {...(busy ? { \"aria-busy\": true, \"data-loading\": \"\" } : {})}\n onClick={handleClick}\n >\n {content}\n </LinkComp>\n );\n } else {\n el = (\n <button\n ref={ref as Ref<HTMLButtonElement>}\n type={type ?? \"button\"}\n className={classes}\n disabled={disabled && !softDisabled}\n {...(domProps as object)}\n {...(softDisabled ? { \"aria-disabled\": true } : {})}\n {...(busy ? { \"aria-busy\": true, \"data-loading\": \"\" } : {})}\n {...(softDisabled ? { \"data-disabled\": \"\" } : {})}\n onClick={handleClick}\n >\n {content}\n </button>\n );\n }\n\n if (disabledReason && disabled) {\n return <Tooltip content={disabledReason}>{el as ReactElement}</Tooltip>;\n }\n return el;\n});\nif (process.env.NODE_ENV !== \"production\") Button.displayName = \"Button\";\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { i as e, r as t } from "./context-BELWW79w.js";
3
- import { t as n } from "./icon-CeNQtobn.js";
3
+ import { t as n } from "./icon-BqujXDUc.js";
4
4
  import { useMemo as r } from "react";
5
5
  import { jsx as i } from "react/jsx-runtime";
6
6
  import { ArrowDown01Icon as a, ArrowLeft01Icon as o, ArrowRight01Icon as s } from "@hugeicons/core-free-icons";
@@ -101,4 +101,4 @@ process.env.NODE_ENV !== "production" && (m.displayName = "Calendar");
101
101
  //#endregion
102
102
  export { u as n, l as r, m as t };
103
103
 
104
- //# sourceMappingURL=calendar-CN3YJi2k.js.map
104
+ //# sourceMappingURL=calendar-CBeptQFq.js.map