@logicplanes/kaeso-ui 0.4.3 → 0.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. package/ai/component-guides.md +279 -98
  2. package/ai/component-registry.json +352 -236
  3. package/ai/component-registry.md +241 -219
  4. package/ai/icons.md +2 -2
  5. package/ai/tokens.md +18 -14
  6. package/dist/blocks/delete-resource.js +3 -3
  7. package/dist/blocks/delete-resource.js.map +1 -1
  8. package/dist/blocks/pages.js +47 -42
  9. package/dist/blocks/pages.js.map +1 -1
  10. package/dist/blocks/resource-list.js +68 -55
  11. package/dist/blocks/resource-list.js.map +1 -1
  12. package/dist/chunks/agent-avatar-DHieggHK.js +188 -0
  13. package/dist/chunks/agent-avatar-DHieggHK.js.map +1 -0
  14. package/dist/chunks/app-frame-DysOel2X.js +232 -0
  15. package/dist/chunks/app-frame-DysOel2X.js.map +1 -0
  16. package/dist/chunks/arrow-focus-B0KdRFX8.js +20 -0
  17. package/dist/chunks/arrow-focus-B0KdRFX8.js.map +1 -0
  18. package/dist/chunks/avatar-CYNMK7uY.js +110 -0
  19. package/dist/chunks/avatar-CYNMK7uY.js.map +1 -0
  20. package/dist/chunks/badge-C0GC3B9X.js +27 -0
  21. package/dist/chunks/badge-C0GC3B9X.js.map +1 -0
  22. package/dist/chunks/banner-B3DGLTBu.js +88 -0
  23. package/dist/chunks/banner-B3DGLTBu.js.map +1 -0
  24. package/dist/chunks/button-IblhXUyZ.js +202 -0
  25. package/dist/chunks/button-IblhXUyZ.js.map +1 -0
  26. package/dist/chunks/{calendar-BWaf2MXc.js → calendar-Dc6_dl0f.js} +4 -4
  27. package/dist/chunks/calendar-Dc6_dl0f.js.map +1 -0
  28. package/dist/chunks/checkbox-9tbimmF3.js +141 -0
  29. package/dist/chunks/checkbox-9tbimmF3.js.map +1 -0
  30. package/dist/chunks/{cn-Dj6sRgkF.js → cn-BjnOAUrA.js} +45 -4
  31. package/dist/chunks/cn-BjnOAUrA.js.map +1 -0
  32. package/dist/chunks/code-block-64e-Cy1S.js +346 -0
  33. package/dist/chunks/code-block-64e-Cy1S.js.map +1 -0
  34. package/dist/chunks/code-block-KIvuE8jg.js +352 -0
  35. package/dist/chunks/code-block-KIvuE8jg.js.map +1 -0
  36. package/dist/chunks/{code-tqj0uhBL.js → code-xqjww4Pv.js} +5 -6
  37. package/dist/chunks/code-xqjww4Pv.js.map +1 -0
  38. package/dist/chunks/combobox-DkcjkWc6.js +352 -0
  39. package/dist/chunks/combobox-DkcjkWc6.js.map +1 -0
  40. package/dist/chunks/command-list-CypqsC4T.js +456 -0
  41. package/dist/chunks/command-list-CypqsC4T.js.map +1 -0
  42. package/dist/chunks/{copy-button-FJvPJn72.js → copy-button-CwU8t_9_.js} +22 -15
  43. package/dist/chunks/copy-button-CwU8t_9_.js.map +1 -0
  44. package/dist/chunks/core-CmK-8ObW.js +505 -0
  45. package/dist/chunks/core-CmK-8ObW.js.map +1 -0
  46. package/dist/chunks/data-table-CqY8_6IS.js +581 -0
  47. package/dist/chunks/data-table-CqY8_6IS.js.map +1 -0
  48. package/dist/chunks/date-popup-DAnjptFt.js +58 -0
  49. package/dist/chunks/date-popup-DAnjptFt.js.map +1 -0
  50. package/dist/chunks/{de-CPXJh9cq.js → de-CqC4aSIV.js} +81 -40
  51. package/dist/chunks/de-CqC4aSIV.js.map +1 -0
  52. package/dist/chunks/{dialog-Cg9A_6SF.js → dialog-2zb6ClNR.js} +156 -134
  53. package/dist/chunks/dialog-2zb6ClNR.js.map +1 -0
  54. package/dist/chunks/disclosure-BtYRTDO3.js +22 -0
  55. package/dist/chunks/disclosure-BtYRTDO3.js.map +1 -0
  56. package/dist/chunks/domain-obd_w9xk.js +28 -0
  57. package/dist/chunks/domain-obd_w9xk.js.map +1 -0
  58. package/dist/chunks/{empty-DvhyMXQq.js → empty-BpiUgGzm.js} +2 -2
  59. package/dist/chunks/{empty-DvhyMXQq.js.map → empty-BpiUgGzm.js.map} +1 -1
  60. package/dist/chunks/{field-TviMvYa2.js → field-D7m-yl-D.js} +37 -34
  61. package/dist/chunks/field-D7m-yl-D.js.map +1 -0
  62. package/dist/chunks/{icon-D7ja-_Yk.js → icon-CBzOwqrX.js} +7 -6
  63. package/dist/chunks/{icon-D7ja-_Yk.js.map → icon-CBzOwqrX.js.map} +1 -1
  64. package/dist/chunks/icon-CPJWE2N-.js +95 -0
  65. package/dist/chunks/{icon-DVooQfk4.js.map → icon-CPJWE2N-.js.map} +1 -1
  66. package/dist/chunks/{icon-button-CrdF_eMG.js → icon-button-Dfwpvmav.js} +7 -6
  67. package/dist/chunks/icon-button-Dfwpvmav.js.map +1 -0
  68. package/dist/chunks/{identity-BmhQ6BQ-.js → identity-3Foi5F8w.js} +7 -7
  69. package/dist/chunks/{identity-BmhQ6BQ-.js.map → identity-3Foi5F8w.js.map} +1 -1
  70. package/dist/chunks/{input-2VJuj_M4.js → input-Bo5-UZg2.js} +15 -9
  71. package/dist/chunks/input-Bo5-UZg2.js.map +1 -0
  72. package/dist/chunks/{input-group-DQ_4DoXg.js → input-group-jPcK9T_a.js} +42 -29
  73. package/dist/chunks/input-group-jPcK9T_a.js.map +1 -0
  74. package/dist/chunks/iso-field-DoqHBg8n.js +52 -0
  75. package/dist/chunks/iso-field-DoqHBg8n.js.map +1 -0
  76. package/dist/chunks/json-view-DZ2nL2Ir.js +253 -0
  77. package/dist/chunks/json-view-DZ2nL2Ir.js.map +1 -0
  78. package/dist/chunks/{kbd-BF1vKXJf.js → kbd-8A0ML_up.js} +30 -28
  79. package/dist/chunks/kbd-8A0ML_up.js.map +1 -0
  80. package/dist/chunks/label-DW24Aj0Z.js +26 -0
  81. package/dist/chunks/label-DW24Aj0Z.js.map +1 -0
  82. package/dist/chunks/{link-KWI7PevW.js → link-CMjkcLQK.js} +14 -14
  83. package/dist/chunks/link-CMjkcLQK.js.map +1 -0
  84. package/dist/chunks/list-B4G-sWwV.js +540 -0
  85. package/dist/chunks/list-B4G-sWwV.js.map +1 -0
  86. package/dist/chunks/{loader-DCfPndXa.js → loader-zo8CCIGJ.js} +2 -2
  87. package/dist/chunks/{loader-DCfPndXa.js.map → loader-zo8CCIGJ.js.map} +1 -1
  88. package/dist/chunks/markdown-C565aBR7.js +338 -0
  89. package/dist/chunks/markdown-C565aBR7.js.map +1 -0
  90. package/dist/chunks/menu-Clvv6ftq.js +485 -0
  91. package/dist/chunks/menu-Clvv6ftq.js.map +1 -0
  92. package/dist/chunks/merge-refs-BN1FyQt9.js +20 -0
  93. package/dist/chunks/merge-refs-BN1FyQt9.js.map +1 -0
  94. package/dist/chunks/meter-CASMHlxl.js +100 -0
  95. package/dist/chunks/meter-CASMHlxl.js.map +1 -0
  96. package/dist/chunks/nav-sheet-Dt6JSvzX.js +67 -0
  97. package/dist/chunks/nav-sheet-Dt6JSvzX.js.map +1 -0
  98. package/dist/chunks/{nav-wordmark-_pjheAsZ.js → nav-wordmark-J4pB_vjr.js} +4 -8
  99. package/dist/chunks/nav-wordmark-J4pB_vjr.js.map +1 -0
  100. package/dist/chunks/page-header-kS5tdmvb.js +45 -0
  101. package/dist/chunks/page-header-kS5tdmvb.js.map +1 -0
  102. package/dist/chunks/pagination-D7fAm8qg.js +147 -0
  103. package/dist/chunks/pagination-D7fAm8qg.js.map +1 -0
  104. package/dist/chunks/picker-popover-1FHb1LQG.js +119 -0
  105. package/dist/chunks/picker-popover-1FHb1LQG.js.map +1 -0
  106. package/dist/chunks/popover-Bl5QYqnh.js +51 -0
  107. package/dist/chunks/popover-Bl5QYqnh.js.map +1 -0
  108. package/dist/chunks/{portal-context-BBbzDKmY.js → portal-context-CTatR2Z8.js} +14 -4
  109. package/dist/chunks/portal-context-CTatR2Z8.js.map +1 -0
  110. package/dist/chunks/{radio-CDDFpdtL.js → radio-C6GtzF_t.js} +38 -23
  111. package/dist/chunks/radio-C6GtzF_t.js.map +1 -0
  112. package/dist/chunks/range-popup-lGiZsG3s.js +160 -0
  113. package/dist/chunks/range-popup-lGiZsG3s.js.map +1 -0
  114. package/dist/chunks/reasoning-frame-C3HdQRRS.js +51 -0
  115. package/dist/chunks/reasoning-frame-C3HdQRRS.js.map +1 -0
  116. package/dist/chunks/release-art-ChiT4T2S.js +582 -0
  117. package/dist/chunks/release-art-ChiT4T2S.js.map +1 -0
  118. package/dist/chunks/rights-B68ocZuq.js +312 -0
  119. package/dist/chunks/rights-B68ocZuq.js.map +1 -0
  120. package/dist/chunks/{scroll-area-D8MD7Vpo.js → scroll-area-_Ljh4-bG.js} +11 -6
  121. package/dist/chunks/scroll-area-_Ljh4-bG.js.map +1 -0
  122. package/dist/chunks/section-CFBYhsUi.js +77 -0
  123. package/dist/chunks/section-CFBYhsUi.js.map +1 -0
  124. package/dist/chunks/section-header-DU1Q4Tdf.js +28 -0
  125. package/dist/chunks/section-header-DU1Q4Tdf.js.map +1 -0
  126. package/dist/chunks/segmented-D9i1avik.js +119 -0
  127. package/dist/chunks/segmented-D9i1avik.js.map +1 -0
  128. package/dist/chunks/select-BqjmQOqx.js +222 -0
  129. package/dist/chunks/select-BqjmQOqx.js.map +1 -0
  130. package/dist/chunks/{separator-D7TzNHmX.js → separator-BNWf6BBj.js} +13 -8
  131. package/dist/chunks/separator-BNWf6BBj.js.map +1 -0
  132. package/dist/chunks/sidebar-Dq7oGOje.js +664 -0
  133. package/dist/chunks/sidebar-Dq7oGOje.js.map +1 -0
  134. package/dist/chunks/{sidebar-menu-BN3jkTlK.js → sidebar-menu-QSSNu1jJ.js} +2 -2
  135. package/dist/chunks/{sidebar-menu-BN3jkTlK.js.map → sidebar-menu-QSSNu1jJ.js.map} +1 -1
  136. package/dist/chunks/{skeleton-Dcz57Zyp.js → skeleton-D-qk3mes.js} +3 -3
  137. package/dist/chunks/skeleton-D-qk3mes.js.map +1 -0
  138. package/dist/chunks/slider-CcE8GtuV.js +58 -0
  139. package/dist/chunks/slider-CcE8GtuV.js.map +1 -0
  140. package/dist/chunks/{status-dot-QJTF0Yv4.js → status-dot-CP6runiC.js} +4 -4
  141. package/dist/chunks/{status-dot-QJTF0Yv4.js.map → status-dot-CP6runiC.js.map} +1 -1
  142. package/dist/chunks/{styles-CVJU9t9v.js → styles-hkFkoBbi.js} +2 -2
  143. package/dist/chunks/{styles-CVJU9t9v.js.map → styles-hkFkoBbi.js.map} +1 -1
  144. package/dist/chunks/{swap-text-Dr0Irxz6.js → swap-text-SlUjrTlG.js} +3 -3
  145. package/dist/chunks/swap-text-SlUjrTlG.js.map +1 -0
  146. package/dist/chunks/switch-ngywMQdl.js +76 -0
  147. package/dist/chunks/switch-ngywMQdl.js.map +1 -0
  148. package/dist/chunks/table-CTK5E0J7.js +102 -0
  149. package/dist/chunks/table-CTK5E0J7.js.map +1 -0
  150. package/dist/chunks/tag-BGr6lTSV.js +100 -0
  151. package/dist/chunks/tag-BGr6lTSV.js.map +1 -0
  152. package/dist/chunks/{text-CIXH8rmT.js → text-DkKdTVUf.js} +9 -9
  153. package/dist/chunks/text-DkKdTVUf.js.map +1 -0
  154. package/dist/chunks/{textarea--4FRL3Pb.js → textarea-CO0HP6fK.js} +47 -36
  155. package/dist/chunks/textarea-CO0HP6fK.js.map +1 -0
  156. package/dist/chunks/timeseries-Ck-q0wWn.js +381 -0
  157. package/dist/chunks/timeseries-Ck-q0wWn.js.map +1 -0
  158. package/dist/chunks/toolbar-u0Gm7Q7-.js +61 -0
  159. package/dist/chunks/toolbar-u0Gm7Q7-.js.map +1 -0
  160. package/dist/chunks/tooltip-Tkm-urbi.js +202 -0
  161. package/dist/chunks/tooltip-Tkm-urbi.js.map +1 -0
  162. package/dist/chunks/tooltip-root-BC_RNNiP.js +70 -0
  163. package/dist/chunks/tooltip-root-BC_RNNiP.js.map +1 -0
  164. package/dist/chunks/truncated-d1afmUJT.js +33 -0
  165. package/dist/chunks/truncated-d1afmUJT.js.map +1 -0
  166. package/dist/chunks/use-coarse-pointer-Ml5oE6oX.js +28 -0
  167. package/dist/chunks/use-coarse-pointer-Ml5oE6oX.js.map +1 -0
  168. package/dist/chunks/use-hydrating-COtYVRo4.js +8 -0
  169. package/dist/chunks/use-hydrating-COtYVRo4.js.map +1 -0
  170. package/dist/chunks/use-scroll-fade-uc8mWSDX.js +30 -0
  171. package/dist/chunks/use-scroll-fade-uc8mWSDX.js.map +1 -0
  172. package/dist/chunks/{zh-CN-29X4CDLE.js → zh-CN-BlpsT6d_.js} +80 -39
  173. package/dist/chunks/zh-CN-BlpsT6d_.js.map +1 -0
  174. package/dist/components/agent-avatar.js +1 -1
  175. package/dist/components/app-frame.js +2 -2
  176. package/dist/components/avatar.js +1 -1
  177. package/dist/components/badge.js +1 -1
  178. package/dist/components/banner.js +1 -1
  179. package/dist/components/button-group.js +22 -22
  180. package/dist/components/button-group.js.map +1 -1
  181. package/dist/components/button.js +1 -1
  182. package/dist/components/calendar.js +1 -1
  183. package/dist/components/charts/bar.js +235 -160
  184. package/dist/components/charts/bar.js.map +1 -1
  185. package/dist/components/charts/donut.js +144 -99
  186. package/dist/components/charts/donut.js.map +1 -1
  187. package/dist/components/charts/gauge.js +61 -49
  188. package/dist/components/charts/gauge.js.map +1 -1
  189. package/dist/components/charts/heatmap.js +179 -70
  190. package/dist/components/charts/heatmap.js.map +1 -1
  191. package/dist/components/charts/sankey.js +144 -77
  192. package/dist/components/charts/sankey.js.map +1 -1
  193. package/dist/components/charts/sparkline.js +54 -38
  194. package/dist/components/charts/sparkline.js.map +1 -1
  195. package/dist/components/charts/timeseries.js +1 -1
  196. package/dist/components/charts.js +2 -2
  197. package/dist/components/checkbox.js +1 -1
  198. package/dist/components/code-block.js +4 -3
  199. package/dist/components/code.js +1 -1
  200. package/dist/components/collapsible.js +77 -1
  201. package/dist/components/collapsible.js.map +1 -0
  202. package/dist/components/combobox.js +1 -1
  203. package/dist/components/command-list.js +2 -2
  204. package/dist/components/command-palette.js +89 -66
  205. package/dist/components/command-palette.js.map +1 -1
  206. package/dist/components/copy-button.js +1 -1
  207. package/dist/components/data-table.js +1 -459
  208. package/dist/components/date-picker.js +162 -151
  209. package/dist/components/date-picker.js.map +1 -1
  210. package/dist/components/dialog.js +74 -63
  211. package/dist/components/dialog.js.map +1 -1
  212. package/dist/components/display-options.js +76 -64
  213. package/dist/components/display-options.js.map +1 -1
  214. package/dist/components/empty.js +1 -1
  215. package/dist/components/field.js +1 -1
  216. package/dist/components/figure.js +2 -2
  217. package/dist/components/filter-chip.js +36 -27
  218. package/dist/components/filter-chip.js.map +1 -1
  219. package/dist/components/filter-row.js +4 -4
  220. package/dist/components/filter-row.js.map +1 -1
  221. package/dist/components/flow.js +94 -63
  222. package/dist/components/flow.js.map +1 -1
  223. package/dist/components/heading.js +1 -1
  224. package/dist/components/icon-button.js +1 -1
  225. package/dist/components/icon.js +2 -2
  226. package/dist/components/input.js +176 -98
  227. package/dist/components/input.js.map +1 -1
  228. package/dist/components/kaeso/conversation.js +51 -46
  229. package/dist/components/kaeso/conversation.js.map +1 -1
  230. package/dist/components/kaeso/identity.js +1 -1
  231. package/dist/components/kaeso/moments.js +23 -20
  232. package/dist/components/kaeso/moments.js.map +1 -1
  233. package/dist/components/kaeso/rights.js +1 -1
  234. package/dist/components/kaeso/usage.js +90 -74
  235. package/dist/components/kaeso/usage.js.map +1 -1
  236. package/dist/components/kaeso.js +200 -187
  237. package/dist/components/kaeso.js.map +1 -1
  238. package/dist/components/kbd.js +1 -1
  239. package/dist/components/key-value.js +32 -47
  240. package/dist/components/key-value.js.map +1 -1
  241. package/dist/components/label.js +1 -25
  242. package/dist/components/layout.js +2 -2
  243. package/dist/components/layout.js.map +1 -1
  244. package/dist/components/link.js +1 -1
  245. package/dist/components/list.js +1 -1
  246. package/dist/components/loader.js +11 -10
  247. package/dist/components/loader.js.map +1 -1
  248. package/dist/components/logo.js +2 -2
  249. package/dist/components/markdown.js +1 -1
  250. package/dist/components/menu.js +2 -2
  251. package/dist/components/meter.js +1 -1
  252. package/dist/components/page-header.js +1 -1
  253. package/dist/components/pagination.js +1 -1
  254. package/dist/components/playground.js +644 -529
  255. package/dist/components/playground.js.map +1 -1
  256. package/dist/components/popover.js +4 -4
  257. package/dist/components/popover.js.map +1 -1
  258. package/dist/components/portal.js +1 -1
  259. package/dist/components/qr-code.js +2 -2
  260. package/dist/components/qr-code.js.map +1 -1
  261. package/dist/components/radio.js +1 -1
  262. package/dist/components/release-art.js +1 -1
  263. package/dist/components/scroll-area.js +1 -1
  264. package/dist/components/section.js +1 -1
  265. package/dist/components/segmented.js +1 -1
  266. package/dist/components/select.js +1 -1
  267. package/dist/components/separator.js +1 -1
  268. package/dist/components/settings.js +39 -46
  269. package/dist/components/settings.js.map +1 -1
  270. package/dist/components/sheet.js +10 -9
  271. package/dist/components/sheet.js.map +1 -1
  272. package/dist/components/sidebar.js +1 -1
  273. package/dist/components/skeleton.js +1 -1
  274. package/dist/components/slider.js +1 -1
  275. package/dist/components/stat.js +98 -84
  276. package/dist/components/stat.js.map +1 -1
  277. package/dist/components/status-dot.js +1 -1
  278. package/dist/components/surface.js +1 -1
  279. package/dist/components/swap-text.js +1 -1
  280. package/dist/components/switch.js +1 -1
  281. package/dist/components/table.js +1 -1
  282. package/dist/components/tabs.js +73 -55
  283. package/dist/components/tabs.js.map +1 -1
  284. package/dist/components/tag.js +1 -1
  285. package/dist/components/text.js +1 -1
  286. package/dist/components/theme-image.js +1 -1
  287. package/dist/components/theme-menu.js +5 -2
  288. package/dist/components/theme-menu.js.map +1 -1
  289. package/dist/components/theme-select.js +1 -1
  290. package/dist/components/thumbnail.js +35 -24
  291. package/dist/components/thumbnail.js.map +1 -1
  292. package/dist/components/timeline.js +51 -35
  293. package/dist/components/timeline.js.map +1 -1
  294. package/dist/components/toast.js +76 -66
  295. package/dist/components/toast.js.map +1 -1
  296. package/dist/components/toc.js +14 -8
  297. package/dist/components/toc.js.map +1 -1
  298. package/dist/components/toolbar.js +1 -1
  299. package/dist/components/tooltip.js +1 -1
  300. package/dist/components/visually-hidden.js +1 -1
  301. package/dist/i18n-provider.js +1 -1
  302. package/dist/index.js +101 -101
  303. package/dist/kaeso.css +605 -67
  304. package/dist/styles.css +1 -1
  305. package/dist/tailwind.css +1 -1
  306. package/dist/types/blocks/delete-resource/delete-resource.d.ts +2 -2
  307. package/dist/types/components/agent-avatar/agent-avatar.d.ts +24 -19
  308. package/dist/types/components/badge/badge.d.ts +3 -3
  309. package/dist/types/components/banner/banner.d.ts +3 -3
  310. package/dist/types/components/button/button.d.ts +2 -2
  311. package/dist/types/components/button-group/button-group.d.ts +1 -1
  312. package/dist/types/components/charts/domain.d.ts +11 -0
  313. package/dist/types/components/charts/marks.d.ts +1 -0
  314. package/dist/types/components/code/code.d.ts +3 -3
  315. package/dist/types/components/code-block/diff-view.d.ts +30 -0
  316. package/dist/types/components/code-block/diff.d.ts +26 -0
  317. package/dist/types/components/code-block/docs.d.ts +14 -0
  318. package/dist/types/components/code-block/index.d.ts +1 -0
  319. package/dist/types/components/code-block/json-view.d.ts +2 -1
  320. package/dist/types/components/code-block/numbers.d.ts +1 -0
  321. package/dist/types/components/collapsible/collapsible.d.ts +2 -2
  322. package/dist/types/components/collapsible/disclosure.d.ts +2 -0
  323. package/dist/types/components/data-table/data-table.d.ts +6 -5
  324. package/dist/types/components/data-table/docs.d.ts +1 -0
  325. package/dist/types/components/data-table/time-columns.d.ts +1 -0
  326. package/dist/types/components/date-picker/focus-day.d.ts +1 -0
  327. package/dist/types/components/date-picker/iso-field.d.ts +8 -1
  328. package/dist/types/components/dialog/dialog.d.ts +7 -7
  329. package/dist/types/components/field/field.d.ts +1 -1
  330. package/dist/types/components/flow/flow.d.ts +1 -1
  331. package/dist/types/components/icon-button/icon-button.d.ts +1 -1
  332. package/dist/types/components/input/input-group.d.ts +2 -0
  333. package/dist/types/components/input/number-input.d.ts +4 -4
  334. package/dist/types/components/input/otp-input.d.ts +3 -3
  335. package/dist/types/components/kaeso/client-button.d.ts +2 -1
  336. package/dist/types/components/kaeso/provider-picker.d.ts +1 -0
  337. package/dist/types/components/kaeso/rights.d.ts +1 -1
  338. package/dist/types/components/kaeso/role-picker.d.ts +1 -0
  339. package/dist/types/components/key-value/key-value.d.ts +2 -2
  340. package/dist/types/components/layout/layout.d.ts +2 -2
  341. package/dist/types/components/link/link.d.ts +4 -4
  342. package/dist/types/components/list/list.d.ts +2 -2
  343. package/dist/types/components/menu/menu.d.ts +2 -1
  344. package/dist/types/components/menu/styles.d.ts +3 -3
  345. package/dist/types/components/meter/meter.d.ts +3 -3
  346. package/dist/types/components/page-header/page-header.d.ts +1 -1
  347. package/dist/types/components/pagination/pagination.d.ts +2 -2
  348. package/dist/types/components/playground/prompt-suggestions.d.ts +1 -0
  349. package/dist/types/components/playground/reasoning-frame.d.ts +14 -0
  350. package/dist/types/components/playground/reasoning.d.ts +1 -0
  351. package/dist/types/components/popover/popover.d.ts +1 -1
  352. package/dist/types/components/scroll-area/scroll-area.d.ts +2 -2
  353. package/dist/types/components/section/section-header.d.ts +6 -0
  354. package/dist/types/components/segmented/segmented.d.ts +1 -0
  355. package/dist/types/components/select/select.d.ts +1 -1
  356. package/dist/types/components/sheet/sheet.d.ts +3 -3
  357. package/dist/types/components/sidebar/sidebar.d.ts +1 -0
  358. package/dist/types/components/slider/slider.d.ts +2 -2
  359. package/dist/types/components/stat/stat.d.ts +1 -1
  360. package/dist/types/components/tabs/tabs.d.ts +6 -4
  361. package/dist/types/components/text/truncated.d.ts +7 -0
  362. package/dist/types/components/timeline/timeline.d.ts +5 -5
  363. package/dist/types/components/toc/toc.d.ts +1 -1
  364. package/dist/types/components/toolbar/toolbar.d.ts +1 -1
  365. package/dist/types/components/tooltip/tooltip.d.ts +2 -2
  366. package/dist/types/components/tooltip/trigger-props.d.ts +1 -0
  367. package/dist/types/hooks/use-coarse-pointer.d.ts +1 -0
  368. package/dist/types/hooks/use-hydrating.d.ts +1 -0
  369. package/dist/types/icons/groups.d.ts +1 -1
  370. package/dist/types/icons/vocabulary.d.ts +5 -0
  371. package/dist/types/utils/arrow-focus.d.ts +4 -1
  372. package/dist/types/utils/cn.d.ts +33 -0
  373. package/dist/types/utils/portal-context.d.ts +7 -1
  374. package/dist/utils.js +2 -2
  375. package/foundations/accessibility.md +3 -2
  376. package/foundations/color.md +5 -1
  377. package/foundations/elevation.md +1 -0
  378. package/foundations/motion.md +1 -1
  379. package/foundations/shape.md +2 -2
  380. package/foundations/typography.md +12 -12
  381. package/package.json +2 -2
  382. package/dist/chunks/agent-avatar-0pdBTWkR.js +0 -171
  383. package/dist/chunks/agent-avatar-0pdBTWkR.js.map +0 -1
  384. package/dist/chunks/app-frame-DogGRmsu.js +0 -221
  385. package/dist/chunks/app-frame-DogGRmsu.js.map +0 -1
  386. package/dist/chunks/arrow-focus-BcySmwwU.js +0 -11
  387. package/dist/chunks/arrow-focus-BcySmwwU.js.map +0 -1
  388. package/dist/chunks/avatar-CWbdwbJv.js +0 -83
  389. package/dist/chunks/avatar-CWbdwbJv.js.map +0 -1
  390. package/dist/chunks/badge-C2KtxCLB.js +0 -26
  391. package/dist/chunks/badge-C2KtxCLB.js.map +0 -1
  392. package/dist/chunks/banner-BA2ALw9M.js +0 -85
  393. package/dist/chunks/banner-BA2ALw9M.js.map +0 -1
  394. package/dist/chunks/button-CzuxqawA.js +0 -164
  395. package/dist/chunks/button-CzuxqawA.js.map +0 -1
  396. package/dist/chunks/calendar-BWaf2MXc.js.map +0 -1
  397. package/dist/chunks/checkbox-CQjwCPkc.js +0 -126
  398. package/dist/chunks/checkbox-CQjwCPkc.js.map +0 -1
  399. package/dist/chunks/cn-Dj6sRgkF.js.map +0 -1
  400. package/dist/chunks/code-block-D5A-CGXG.js +0 -330
  401. package/dist/chunks/code-block-D5A-CGXG.js.map +0 -1
  402. package/dist/chunks/code-tqj0uhBL.js.map +0 -1
  403. package/dist/chunks/collapsible-CKrCX_T9.js +0 -87
  404. package/dist/chunks/collapsible-CKrCX_T9.js.map +0 -1
  405. package/dist/chunks/combobox-DjDI7SUC.js +0 -319
  406. package/dist/chunks/combobox-DjDI7SUC.js.map +0 -1
  407. package/dist/chunks/command-list-C2Y7V_lt.js +0 -418
  408. package/dist/chunks/command-list-C2Y7V_lt.js.map +0 -1
  409. package/dist/chunks/copy-button-FJvPJn72.js.map +0 -1
  410. package/dist/chunks/core-BYns5ytV.js +0 -472
  411. package/dist/chunks/core-BYns5ytV.js.map +0 -1
  412. package/dist/chunks/date-popup-CPA_zt6o.js +0 -35
  413. package/dist/chunks/date-popup-CPA_zt6o.js.map +0 -1
  414. package/dist/chunks/de-CPXJh9cq.js.map +0 -1
  415. package/dist/chunks/dialog-Cg9A_6SF.js.map +0 -1
  416. package/dist/chunks/field-TviMvYa2.js.map +0 -1
  417. package/dist/chunks/hidden-description-B2zSmLcn.js +0 -23
  418. package/dist/chunks/hidden-description-B2zSmLcn.js.map +0 -1
  419. package/dist/chunks/icon-DVooQfk4.js +0 -94
  420. package/dist/chunks/icon-button-CrdF_eMG.js.map +0 -1
  421. package/dist/chunks/input-2VJuj_M4.js.map +0 -1
  422. package/dist/chunks/input-group-DQ_4DoXg.js.map +0 -1
  423. package/dist/chunks/iso-field-B2rTwiBo.js +0 -33
  424. package/dist/chunks/iso-field-B2rTwiBo.js.map +0 -1
  425. package/dist/chunks/json-view-Dqd2TDkc.js +0 -175
  426. package/dist/chunks/json-view-Dqd2TDkc.js.map +0 -1
  427. package/dist/chunks/kbd-BF1vKXJf.js.map +0 -1
  428. package/dist/chunks/link-KWI7PevW.js.map +0 -1
  429. package/dist/chunks/list-M1csq-d4.js +0 -494
  430. package/dist/chunks/list-M1csq-d4.js.map +0 -1
  431. package/dist/chunks/markdown-DULktoTK.js +0 -313
  432. package/dist/chunks/markdown-DULktoTK.js.map +0 -1
  433. package/dist/chunks/menu-DEmBfdPm.js +0 -450
  434. package/dist/chunks/menu-DEmBfdPm.js.map +0 -1
  435. package/dist/chunks/meter-Bj4N3Xuh.js +0 -84
  436. package/dist/chunks/meter-Bj4N3Xuh.js.map +0 -1
  437. package/dist/chunks/nav-sheet-CzgIwgAm.js +0 -60
  438. package/dist/chunks/nav-sheet-CzgIwgAm.js.map +0 -1
  439. package/dist/chunks/nav-wordmark-_pjheAsZ.js.map +0 -1
  440. package/dist/chunks/page-header-DL2y2iZp.js +0 -41
  441. package/dist/chunks/page-header-DL2y2iZp.js.map +0 -1
  442. package/dist/chunks/pagination-Cn_qF4cg.js +0 -86
  443. package/dist/chunks/pagination-Cn_qF4cg.js.map +0 -1
  444. package/dist/chunks/picker-popover-BxyU1U9F.js +0 -106
  445. package/dist/chunks/picker-popover-BxyU1U9F.js.map +0 -1
  446. package/dist/chunks/popover-DNN4S47w.js +0 -50
  447. package/dist/chunks/popover-DNN4S47w.js.map +0 -1
  448. package/dist/chunks/portal-context-BBbzDKmY.js.map +0 -1
  449. package/dist/chunks/radio-CDDFpdtL.js.map +0 -1
  450. package/dist/chunks/range-popup-CRyWYUB1.js +0 -128
  451. package/dist/chunks/range-popup-CRyWYUB1.js.map +0 -1
  452. package/dist/chunks/release-art-ZwfFQImt.js +0 -561
  453. package/dist/chunks/release-art-ZwfFQImt.js.map +0 -1
  454. package/dist/chunks/rights-Cyp0Pzp-.js +0 -279
  455. package/dist/chunks/rights-Cyp0Pzp-.js.map +0 -1
  456. package/dist/chunks/scroll-area-D8MD7Vpo.js.map +0 -1
  457. package/dist/chunks/scroll-parent-WXvzQcUo.js +0 -14
  458. package/dist/chunks/scroll-parent-WXvzQcUo.js.map +0 -1
  459. package/dist/chunks/section-Ce1efbsP.js +0 -87
  460. package/dist/chunks/section-Ce1efbsP.js.map +0 -1
  461. package/dist/chunks/segmented-CErcoxwi.js +0 -114
  462. package/dist/chunks/segmented-CErcoxwi.js.map +0 -1
  463. package/dist/chunks/select-x4XVsdCI.js +0 -210
  464. package/dist/chunks/select-x4XVsdCI.js.map +0 -1
  465. package/dist/chunks/separator-D7TzNHmX.js.map +0 -1
  466. package/dist/chunks/sidebar-3r1ZRXlN.js +0 -621
  467. package/dist/chunks/sidebar-3r1ZRXlN.js.map +0 -1
  468. package/dist/chunks/skeleton-Dcz57Zyp.js.map +0 -1
  469. package/dist/chunks/slider-Ci83PGtj.js +0 -57
  470. package/dist/chunks/slider-Ci83PGtj.js.map +0 -1
  471. package/dist/chunks/swap-text-Dr0Irxz6.js.map +0 -1
  472. package/dist/chunks/switch-BNMq_kGt.js +0 -59
  473. package/dist/chunks/switch-BNMq_kGt.js.map +0 -1
  474. package/dist/chunks/table-BeOSKl_3.js +0 -84
  475. package/dist/chunks/table-BeOSKl_3.js.map +0 -1
  476. package/dist/chunks/tag-D_M1s2qS.js +0 -87
  477. package/dist/chunks/tag-D_M1s2qS.js.map +0 -1
  478. package/dist/chunks/text-CIXH8rmT.js.map +0 -1
  479. package/dist/chunks/textarea--4FRL3Pb.js.map +0 -1
  480. package/dist/chunks/timeseries-D1xjRXfk.js +0 -339
  481. package/dist/chunks/timeseries-D1xjRXfk.js.map +0 -1
  482. package/dist/chunks/toolbar-WA_oZgu-.js +0 -37
  483. package/dist/chunks/toolbar-WA_oZgu-.js.map +0 -1
  484. package/dist/chunks/tooltip-OcwO0VUT.js +0 -154
  485. package/dist/chunks/tooltip-OcwO0VUT.js.map +0 -1
  486. package/dist/chunks/tooltip-root-DzahJDVj.js +0 -60
  487. package/dist/chunks/tooltip-root-DzahJDVj.js.map +0 -1
  488. package/dist/chunks/zh-CN-29X4CDLE.js.map +0 -1
  489. package/dist/components/data-table.js.map +0 -1
  490. package/dist/components/label.js.map +0 -1
@@ -0,0 +1,100 @@
1
+ "use client";
2
+ import { t as e } from "./cn-BjnOAUrA.js";
3
+ import { i as t } from "./context-BELWW79w.js";
4
+ import { t as n } from "./truncated-d1afmUJT.js";
5
+ import { forwardRef as r } from "react";
6
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
7
+ //#region src/components/meter/meter.tsx
8
+ var o = { tone: {
9
+ auto: { classes: "" },
10
+ neutral: { classes: "bg-fg-secondary" }
11
+ } }, s = { tone: "auto" };
12
+ function c(e, t = []) {
13
+ let n = l(e, t);
14
+ return n === "over" ? "bg-danger" : n === "near" ? "bg-viz-2" : "bg-viz-1";
15
+ }
16
+ function l(e, t) {
17
+ return e >= 1 ? "over" : e >= (t.length ? Math.min(...t) : .8) ? "near" : "under";
18
+ }
19
+ var u = {
20
+ over: "text-danger-text",
21
+ near: "text-warning-text",
22
+ under: ""
23
+ };
24
+ function d(e) {
25
+ if (!e.length) return;
26
+ let t = `linear-gradient(to right, black 0, ${[...e].sort((e, t) => e - t).map((e) => `black calc(${e * 100}% - 1px), transparent calc(${e * 100}% - 1px), transparent calc(${e * 100}% + 1px), black calc(${e * 100}% + 1px)`).join(", ")}, black 100%)`;
27
+ return {
28
+ maskImage: t,
29
+ WebkitMaskImage: t
30
+ };
31
+ }
32
+ var f = /* @__PURE__ */ r(function({ value: r, label: s, valueLabel: f, caption: p, thresholds: m = [], tone: h = "auto", leading: g, trailing: _, className: v, "aria-label": y }, b) {
33
+ let x = t(), S = Math.max(0, Math.min(1, r)), C = Math.round(r * 100), w = h === "auto" ? l(r, m) : "under", T = w === "over" ? x("meter.overLimit", "over the limit") : w === "near" ? x("meter.nearLimit", "near the limit") : "", E = typeof f == "string" ? f : `${C}%`;
34
+ return /* @__PURE__ */ a("div", {
35
+ ref: b,
36
+ className: e("flex flex-col gap-8", v),
37
+ children: [
38
+ (s || f) && /* @__PURE__ */ a("div", {
39
+ className: "flex items-baseline justify-between gap-12",
40
+ children: [/* @__PURE__ */ a("span", {
41
+ className: "flex min-w-0 items-center gap-8 text-body font-medium text-fg",
42
+ children: [
43
+ g,
44
+ s && /* @__PURE__ */ i(n, {
45
+ className: "min-w-0",
46
+ children: s
47
+ }),
48
+ _
49
+ ]
50
+ }), f && /* @__PURE__ */ i("span", {
51
+ className: e("shrink-0 text-body tabular", u[w] || "text-fg-secondary"),
52
+ children: f
53
+ })]
54
+ }),
55
+ /* @__PURE__ */ i("div", {
56
+ role: "meter",
57
+ "aria-valuemin": 0,
58
+ "aria-valuemax": Math.max(100, C),
59
+ "aria-valuenow": C,
60
+ "aria-label": y ?? (typeof s == "string" ? s : void 0),
61
+ ...typeof f == "string" || T ? { "aria-valuetext": T ? `${E}, ${T}` : E } : {},
62
+ style: d(m),
63
+ className: "relative h-6 overflow-hidden rounded-pill bg-fill-2 forced-colors:outline forced-colors:-outline-offset-1",
64
+ children: /* @__PURE__ */ i("div", {
65
+ className: e("h-full rounded-pill width-motion data-mark", h === "auto" ? c(r, m) : o.tone.neutral.classes),
66
+ style: { width: `${S * 100}%` }
67
+ })
68
+ }),
69
+ p && /* @__PURE__ */ i("span", {
70
+ className: e("text-caption font-medium", u[w] || "text-fg-secondary"),
71
+ children: p
72
+ })
73
+ ]
74
+ });
75
+ });
76
+ process.env.NODE_ENV !== "production" && (f.displayName = "Meter");
77
+ var p = { kind: {
78
+ determinate: { classes: "h-6 rounded-pill bg-fill-2 forced-colors:outline forced-colors:-outline-offset-1" },
79
+ indeterminate: { classes: "h-2 bg-transparent" }
80
+ } }, m = { kind: "determinate" }, h = /* @__PURE__ */ r(function({ value: t, className: n, "aria-label": r }, a) {
81
+ let o = t === void 0;
82
+ return /* @__PURE__ */ i("div", {
83
+ ref: a,
84
+ role: "progressbar",
85
+ "aria-label": r,
86
+ "aria-valuemin": 0,
87
+ "aria-valuemax": 100,
88
+ ...o ? {} : { "aria-valuenow": Math.round(t * 100) },
89
+ className: e("relative w-full overflow-hidden", p.kind[o ? "indeterminate" : "determinate"].classes, n),
90
+ children: o ? /* @__PURE__ */ i("span", { className: "absolute inset-y-0 left-0 w-1/3 animate-indeterminate rounded-pill bg-fg-tertiary data-mark" }) : /* @__PURE__ */ i("span", {
91
+ className: "block h-full rounded-pill bg-ink width-motion forced-line",
92
+ style: { width: `${Math.max(0, Math.min(1, t)) * 100}%` }
93
+ })
94
+ });
95
+ });
96
+ process.env.NODE_ENV !== "production" && (h.displayName = "Progress");
97
+ //#endregion
98
+ export { f as a, p as i, o as n, h as o, m as r, c as s, s as t };
99
+
100
+ //# sourceMappingURL=meter-CASMHlxl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meter-CASMHlxl.js","names":["cn","useUiText","TruncatedText","KAESO_METER_VARIANTS","KAESO_METER_DEFAULT_VARIANTS","meterColor","state","meterState","value","thresholds","STATE_TEXT","thresholdMask","mask","a","b","t","Meter","ariaLabel","pct","now","tone","stateWord","valueText","valueLabel","className","label","leading","trailing","caption","KAESO_PROGRESS_VARIANTS","KAESO_PROGRESS_DEFAULT_VARIANTS","Progress","indeterminate"],"sources":["../../src/components/meter/meter.tsx"],"sourcesContent":["import { forwardRef, type CSSProperties, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useUiText } from \"../../i18n/context.js\";\nimport { TruncatedText } from \"../text/truncated.js\";\n\nexport const KAESO_METER_VARIANTS = {\n tone: {\n auto: {\n classes: \"\",\n },\n neutral: { classes: \"bg-fg-secondary\" },\n },\n} as const;\nexport const KAESO_METER_DEFAULT_VARIANTS = { tone: \"auto\" } as const;\n\nexport interface MeterProps {\n value: number;\n label?: ReactNode | undefined;\n valueLabel?: ReactNode | undefined;\n caption?: ReactNode | undefined;\n thresholds?: number[] | undefined;\n tone?: keyof typeof KAESO_METER_VARIANTS.tone | undefined;\n leading?: ReactNode | undefined;\n trailing?: ReactNode | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n}\n\nexport function meterColor(value: number, thresholds: number[] = []) {\n const state = meterState(value, thresholds);\n return state === \"over\" ? \"bg-danger\" : state === \"near\" ? \"bg-viz-2\" : \"bg-viz-1\";\n}\n\nfunction meterState(value: number, thresholds: number[]): \"over\" | \"near\" | \"under\" {\n if (value >= 1) return \"over\";\n const first = thresholds.length ? Math.min(...thresholds) : 0.8;\n return value >= first ? \"near\" : \"under\";\n}\n\nconst STATE_TEXT = { over: \"text-danger-text\", near: \"text-warning-text\", under: \"\" } as const;\n\n// Each threshold is a 2px gap cut out of the bar, so the tick shows whatever surface the meter sits on.\nfunction thresholdMask(thresholds: number[]): CSSProperties | undefined {\n if (!thresholds.length) return undefined;\n const stops = [...thresholds]\n .sort((a, b) => a - b)\n .map((t) => `black calc(${t * 100}% - 1px), transparent calc(${t * 100}% - 1px), transparent calc(${t * 100}% + 1px), black calc(${t * 100}% + 1px)`);\n const mask = `linear-gradient(to right, black 0, ${stops.join(\", \")}, black 100%)`;\n return { maskImage: mask, WebkitMaskImage: mask };\n}\n\nexport const Meter = /* @__PURE__ */ forwardRef<HTMLDivElement, MeterProps>(function Meter(\n { value, label, valueLabel, caption, thresholds = [], tone = \"auto\", leading, trailing, className, \"aria-label\": ariaLabel },\n ref,\n) {\n const t = useUiText();\n const pct = Math.max(0, Math.min(1, value));\n const now = Math.round(value * 100);\n const state = tone === \"auto\" ? meterState(value, thresholds) : \"under\";\n const stateWord = state === \"over\" ? t(\"meter.overLimit\", \"over the limit\") : state === \"near\" ? t(\"meter.nearLimit\", \"near the limit\") : \"\";\n const valueText = typeof valueLabel === \"string\" ? valueLabel : `${now}%`;\n return (\n <div ref={ref} className={cn(\"flex flex-col gap-8\", className)}>\n {(label || valueLabel) && (\n <div className=\"flex items-baseline justify-between gap-12\">\n <span className=\"flex min-w-0 items-center gap-8 text-body font-medium text-fg\">\n {leading}\n {label && <TruncatedText className=\"min-w-0\">{label}</TruncatedText>}\n {trailing}\n </span>\n {valueLabel && <span className={cn(\"shrink-0 text-body tabular\", STATE_TEXT[state] || \"text-fg-secondary\")}>{valueLabel}</span>}\n </div>\n )}\n <div\n role=\"meter\"\n aria-valuemin={0}\n aria-valuemax={Math.max(100, now)}\n aria-valuenow={now}\n aria-label={ariaLabel ?? (typeof label === \"string\" ? label : undefined)}\n {...(typeof valueLabel === \"string\" || stateWord ? { \"aria-valuetext\": stateWord ? `${valueText}, ${stateWord}` : valueText } : {})}\n style={thresholdMask(thresholds)}\n className=\"relative h-6 overflow-hidden rounded-pill bg-fill-2 forced-colors:outline forced-colors:-outline-offset-1\"\n >\n <div\n className={cn(\n \"h-full rounded-pill width-motion data-mark\",\n tone === \"auto\" ? meterColor(value, thresholds) : KAESO_METER_VARIANTS.tone.neutral.classes,\n )}\n style={{ width: `${pct * 100}%` }}\n />\n </div>\n {caption && <span className={cn(\"text-caption font-medium\", STATE_TEXT[state] || \"text-fg-secondary\")}>{caption}</span>}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Meter.displayName = \"Meter\";\n\nexport const KAESO_PROGRESS_VARIANTS = {\n kind: {\n determinate: { classes: \"h-6 rounded-pill bg-fill-2 forced-colors:outline forced-colors:-outline-offset-1\" },\n indeterminate: { classes: \"h-2 bg-transparent\" },\n },\n} as const;\nexport const KAESO_PROGRESS_DEFAULT_VARIANTS = { kind: \"determinate\" } as const;\n\nexport interface ProgressProps {\n value?: number | undefined;\n \"aria-label\": string;\n className?: string | undefined;\n}\n\nexport const Progress = /* @__PURE__ */ forwardRef<HTMLDivElement, ProgressProps>(function Progress({ value, className, \"aria-label\": ariaLabel }, ref) {\n const indeterminate = value === undefined;\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-label={ariaLabel}\n aria-valuemin={0}\n aria-valuemax={100}\n {...(!indeterminate ? { \"aria-valuenow\": Math.round(value * 100) } : {})}\n className={cn(\"relative w-full overflow-hidden\", KAESO_PROGRESS_VARIANTS.kind[indeterminate ? \"indeterminate\" : \"determinate\"].classes, className)}\n >\n {indeterminate ? (\n <span className=\"absolute inset-y-0 left-0 w-1/3 animate-indeterminate rounded-pill bg-fg-tertiary data-mark\" />\n ) : (\n <span className=\"block h-full rounded-pill bg-ink width-motion forced-line\" style={{ width: `${Math.max(0, Math.min(1, value)) * 100}%` }} />\n )}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Progress.displayName = \"Progress\";\n"],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ "use client";
2
+ import { l as e } from "./styles-hkFkoBbi.js";
3
+ import { t } from "./cn-BjnOAUrA.js";
4
+ import { r as n } from "./portal-context-CTatR2Z8.js";
5
+ import { i as r } from "./context-BELWW79w.js";
6
+ import { t as i } from "./merge-refs-BN1FyQt9.js";
7
+ import { c as a, s as o } from "./sidebar-Dq7oGOje.js";
8
+ import { forwardRef as s, useEffect as c, useMemo as l, useRef as u, useState as d } from "react";
9
+ import { jsx as f, jsxs as p } from "react/jsx-runtime";
10
+ import { Dialog as m } from "@base-ui/react/dialog";
11
+ //#region src/components/app-frame/nav-sheet.tsx
12
+ var h = /* @__PURE__ */ e({ NavSheet: () => _ }), g = 160, _ = /* @__PURE__ */ s(function({ open: e, onOpenChange: s, peek: h = !1, returnFocus: _, children: v }, y) {
13
+ let b = u(void 0), x = r();
14
+ c(() => () => clearTimeout(b.current), []);
15
+ let S = l(() => ({
16
+ close: () => s(!1),
17
+ peek: h
18
+ }), [s, h]);
19
+ c(() => {
20
+ if (!e || h || typeof window > "u") return;
21
+ let t = window.matchMedia("(min-width: 1024px)"), n = () => t.matches && s(!1);
22
+ return n(), t.addEventListener("change", n), () => t.removeEventListener("change", n);
23
+ }, [
24
+ e,
25
+ h,
26
+ s
27
+ ]);
28
+ let C = u(null), [w, T] = d(!1), E = l(() => i(C, y, (e) => {
29
+ e && T(!!e.closest("[data-app-frame=\"parent\"]"));
30
+ }), [y]), D = w ? "absolute" : "fixed";
31
+ return /* @__PURE__ */ f(m.Root, {
32
+ open: e,
33
+ onOpenChange: (e) => s(e),
34
+ modal: !h,
35
+ children: /* @__PURE__ */ p(m.Portal, {
36
+ container: n(),
37
+ children: [!h && /* @__PURE__ */ f(m.Backdrop, { className: t(D, "inset-0 z-40 bg-overlay opacity-60 backdrop-motion") }), /* @__PURE__ */ f(m.Popup, {
38
+ ref: E,
39
+ "aria-label": x("appFrame.navigation", "Navigation"),
40
+ "data-side": "left",
41
+ "data-nav-sheet": "",
42
+ initialFocus: h ? !1 : () => C.current?.querySelector("[aria-current=\"page\"]") ?? !0,
43
+ ..._ ? { finalFocus: _ } : {},
44
+ className: t(D, "top-0 bottom-0 left-0 z-40 flex overflow-hidden rounded-r-sheet bg-chrome shadow-dialog outline-none safe-area-sheet sheet-motion"),
45
+ onClick: (e) => {
46
+ e.target.closest("a[href]") && s(!1);
47
+ },
48
+ onPointerEnter: () => clearTimeout(b.current),
49
+ onPointerLeave: () => {
50
+ h && (b.current = setTimeout(() => s(!1), g));
51
+ },
52
+ children: /* @__PURE__ */ f(o.Provider, {
53
+ value: !0,
54
+ children: /* @__PURE__ */ f(a.Provider, {
55
+ value: S,
56
+ children: v
57
+ })
58
+ })
59
+ })]
60
+ })
61
+ });
62
+ });
63
+ process.env.NODE_ENV !== "production" && (_.displayName = "NavSheet");
64
+ //#endregion
65
+ export { h as n, _ as t };
66
+
67
+ //# sourceMappingURL=nav-sheet-Dt6JSvzX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-sheet-Dt6JSvzX.js","names":["__exportAll","usePortalContainer","useUiText","mergeRefs","SidebarSheetContext","SidebarFloatingContext","nav_sheet_exports","NavSheet","PEEK_LEAVE","leave","useRef","t","sheet","useMemo","onOpenChange","peek","open","wide","onChange","popup","contained","setContained","useState","refs","ref","el","place","Dialog","o","cn","returnFocus"],"sources":["../../src/components/app-frame/nav-sheet.tsx"],"sourcesContent":["import { forwardRef, useEffect, useMemo, useRef, useState, type ReactNode, type RefObject } from \"react\";\nimport { Dialog } from \"@base-ui/react/dialog\";\nimport { usePortalContainer } from \"../../utils/portal-context.js\";\nimport { SidebarFloatingContext, SidebarSheetContext } from \"../sidebar/sidebar.js\";\nimport { mergeRefs } from \"../../utils/merge-refs.js\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nconst PEEK_LEAVE = 160;\n\nexport interface NavSheetProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n peek?: boolean | undefined;\n returnFocus?: RefObject<HTMLElement | null> | undefined;\n children: ReactNode;\n}\n\nexport const NavSheet = /* @__PURE__ */ forwardRef<HTMLDivElement, NavSheetProps>(function NavSheet({ open, onOpenChange, peek = false, returnFocus, children }, ref) {\n const leave = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const t = useUiText();\n useEffect(() => () => clearTimeout(leave.current), []);\n const sheet = useMemo(() => ({ close: () => onOpenChange(false), peek }), [onOpenChange, peek]);\n useEffect(() => {\n if (!open || peek || typeof window === \"undefined\") return;\n const wide = window.matchMedia(\"(min-width: 1024px)\");\n const onChange = () => wide.matches && onOpenChange(false);\n onChange();\n wide.addEventListener(\"change\", onChange);\n return () => wide.removeEventListener(\"change\", onChange);\n }, [open, peek, onOpenChange]);\n const popup = useRef<HTMLDivElement | null>(null);\n const [contained, setContained] = useState(false);\n const refs = useMemo(\n () =>\n mergeRefs(popup, ref, (el: HTMLDivElement | null) => {\n if (el) setContained(!!el.closest('[data-app-frame=\"parent\"]'));\n }),\n [ref],\n );\n const place = contained ? \"absolute\" : \"fixed\";\n return (\n <Dialog.Root open={open} onOpenChange={(o: boolean) => onOpenChange(o)} modal={!peek}>\n <Dialog.Portal container={usePortalContainer()}>\n {!peek && <Dialog.Backdrop className={cn(place, \"inset-0 z-40 bg-overlay opacity-60 backdrop-motion\")} />}\n <Dialog.Popup\n ref={refs}\n aria-label={t(\"appFrame.navigation\", \"Navigation\")}\n data-side=\"left\"\n data-nav-sheet=\"\"\n initialFocus={peek ? false : () => popup.current?.querySelector<HTMLElement>('[aria-current=\"page\"]') ?? true}\n {...(returnFocus ? { finalFocus: returnFocus } : {})}\n className={cn(\n place,\n \"top-0 bottom-0 left-0 z-40 flex overflow-hidden rounded-r-sheet bg-chrome shadow-dialog outline-none safe-area-sheet sheet-motion\",\n )}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"a[href]\")) onOpenChange(false);\n }}\n onPointerEnter={() => clearTimeout(leave.current)}\n onPointerLeave={() => {\n if (!peek) return;\n leave.current = setTimeout(() => onOpenChange(false), PEEK_LEAVE);\n }}\n >\n <SidebarFloatingContext.Provider value>\n <SidebarSheetContext.Provider value={sheet}>{children}</SidebarSheetContext.Provider>\n </SidebarFloatingContext.Provider>\n </Dialog.Popup>\n </Dialog.Portal>\n </Dialog.Root>\n );\n});\nif (process.env.NODE_ENV !== \"production\") NavSheet.displayName = \"NavSheet\";\n"],"mappings":";;;;;;;;;;;A,kDAQMQ,IAAa,KAUND,IAA2B,kBAA0C,SAAkB,EAAE,SAAM,iBAAc,UAAO,IAAO,gBAAa,eAAY,GAAK;CACpK,IAAME,IAAQC,EAAkD,KAAA,CAAS,GACnEC,IAAIT,EAAU;CACpB,cAAsB,aAAaO,EAAM,OAAO,GAAG,CAAC,CAAC;CACrD,IAAMG,IAAQC,SAAe;EAAE,aAAaC,EAAa,EAAK;EAAG;CAAK,IAAI,CAACA,GAAcC,CAAI,CAAC;CAC9F,QAAgB;EACd,IAAI,CAACC,KAAQD,KAAQ,OAAO,SAAW,KAAa;EACpD,IAAME,IAAO,OAAO,WAAW,qBAAqB,GAC9CC,UAAiBD,EAAK,WAAWH,EAAa,EAAK;EAGzD,OAFAI,EAAS,GACTD,EAAK,iBAAiB,UAAUC,CAAQ,SAC3BD,EAAK,oBAAoB,UAAUC,CAAQ;CAC1D,GAAG;EAACF;EAAMD;EAAMD;CAAY,CAAC;CAC7B,IAAMK,IAAQT,EAA8B,IAAI,GAC1C,CAACU,GAAWC,KAAgBC,EAAS,EAAK,GAC1CC,IAAOV,QAETV,EAAUgB,GAAOK,IAAM,MAA8B;EACnD,AAAIC,KAAIJ,EAAa,CAAC,CAACI,EAAG,QAAQ,6BAA2B,CAAC;CAChE,CAAC,GACH,CAACD,CAAG,CACN,GACME,IAAQN,IAAY,aAAa;CACvC,OACE,kBAACO,EAAO,MAAR;EAAmB;EAAM,eAAe,MAAeb,EAAac,CAAC;EAAG,OAAO,CAACb;EAC9E,UAAA,kBAACY,EAAO,QAAR;GAAe,WAAW1B,EAAmB;GAA7C,UAAA,CACG,CAACc,KAAQ,kBAACY,EAAO,UAAR,EAAiB,WAAWE,EAAGH,GAAO,oDAAoD,EAAI,CAAA,GACxG,kBAACC,EAAO,OAAR;IACE,KAAKJ;IACL,cAAYZ,EAAE,uBAAuB,YAAY;IACjD,aAAU;IACV,kBAAe;IACf,cAAcI,IAAO,WAAcI,EAAM,SAAS,cAA2B,yBAAuB,KAAK;IACzG,GAAKW,IAAc,EAAE,YAAYA,EAAY,IAAI,CAAC;IAClD,WAAWD,EACTH,GACA,mIACF;IACA,UAAU,MAAM;KACd,AAAK,EAAE,OAAuB,QAAQ,SAAS,KAAGZ,EAAa,EAAK;IACtE;IACA,sBAAsB,aAAaL,EAAM,OAAO;IAChD,sBAAsB;KACpB,AAAKM,MACL,EAAM,UAAU,iBAAiBD,EAAa,EAAK,GAAGN,CAAU;IAClE;IAEA,UAAA,kBAACH,EAAuB,UAAxB;KAAiC,OAAA;KAC/B,UAAA,kBAACD,EAAoB,UAArB;MAA8B,OAAOQ;MAAQ;KAAuC,CAAA;IACrD,CAAA;GACrB,CAAA,CACD;;CACJ,CAAA;AAEjB,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAS,cAAc"}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { t as e } from "./cn-Dj6sRgkF.js";
2
+ import { t as e } from "./cn-BjnOAUrA.js";
3
3
  import { forwardRef as t } from "react";
4
4
  import { jsx as n } from "react/jsx-runtime";
5
5
  //#region src/components/logo/paths.ts
@@ -44,12 +44,8 @@ var r = {
44
44
  viewBox: s,
45
45
  fill: "currentColor",
46
46
  xmlns: "http://www.w3.org/2000/svg",
47
- className: e("block shrink-0", i),
48
- style: {
49
- width: 60,
50
- height: 12,
51
- ...o
52
- },
47
+ className: e("block h-12 w-60 shrink-0", i),
48
+ style: o,
53
49
  ...r ? {
54
50
  "aria-hidden": !0,
55
51
  focusable: !1
@@ -65,4 +61,4 @@ process.env.NODE_ENV !== "production" && (c.displayName = "Logo.Wordmark");
65
61
  //#endregion
66
62
  export { a, i, o as n, r, c as t };
67
63
 
68
- //# sourceMappingURL=nav-wordmark-_pjheAsZ.js.map
64
+ //# sourceMappingURL=nav-wordmark-J4pB_vjr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-wordmark-J4pB_vjr.js","names":["cn","mark","markIcon","wordmark","lockup","WORDMARK_TIGHT","NavWordmark","props","className","decorative","title","d"],"sources":["../../src/components/logo/paths.ts","../../src/components/logo/nav-wordmark.tsx"],"sourcesContent":["export const mark = {\n viewBox: \"80.5 79.5 861 643\",\n paths: [\n \"m240 100h162c9 0 13 3 20 9l155 136c27 24 53 38 84 40h253q7 0 7 7v50q0 6-7 6l-403-8c-25-1-44-8-63-25l-212-204c-6-6-4-11 4-11z\",\n \"m107 542c45-33 92-65 138-96 62-41 114-60 184-61h484q8 0 8 7v19q0 7-8 7l-354 1c-44 0-73 7-102 29l-202 161q-6 5-14 5h-134q-6 0-6-6v-58q0-5 6-8z\",\n \"m307 693 225-202c22-19 49-27 78-28l303-5q8 0 8 8v56q0 5-6 5h-182c-31 0-51 8-72 25l-165 140c-7 6-12 10-23 10h-164c-6 0-7-4-2-9z\",\n ],\n} as const;\nexport const markIcon = {\n viewBox: \"107 90 620 620\",\n paths: [\n \"m240 100h162c9 0 13 3 20 9l155 136c27 24 53 38 84 40h253q7 0 7 7v50q0 6-7 6l-403-8c-25-1-44-8-63-25l-212-204c-6-6-4-11 4-11z\",\n \"m107 542c45-33 92-65 138-96 62-41 114-60 184-61h484q8 0 8 7v19q0 7-8 7l-354 1c-44 0-73 7-102 29l-202 161q-6 5-14 5h-134q-6 0-6-6v-58q0-5 6-8z\",\n \"m307 693 225-202c22-19 49-27 78-28l303-5q8 0 8 8v56q0 5-6 5h-182c-31 0-51 8-72 25l-165 140c-7 6-12 10-23 10h-164c-6 0-7-4-2-9z\",\n ],\n} as const;\nexport const wordmark = {\n viewBox: \"49.952 47.249 925.995 221.798\",\n paths: [\n \"m72 71.5h34.5v76.1l86-76.1h47.1l-89.6 81.9 90.5 91.8h-46.3l-70.8-70.3-16.9 15.7v54.6h-34.5z\",\n \"m330.5 71.5h31.6l80.2 173.7h-38.1l-20.5-43.2h-79.6l-19.5 43.2h-34.5zm14.6 42.6-26.7 59.2h53.6z\",\n \"m457.7 71.5h136.4v30.6h-101.4v37.8h87.4v31h-87.4v43.1h102.3v31.2h-137.3z\",\n \"m748.1 79.3v31.8c-20.5-7.1-41.8-11-65.4-11-21.7 0-34.7 6.2-34.7 19.8 0 11.5 9.8 16.8 26.4 18.9l21.3 1.7c40.7 2.5 63.3 18.2 63.3 52.2 0 36.1-26.1 54.3-74.8 54.3-24 0-46.4-3.6-66.4-11.7v-32.3c21.3 8.5 40.9 12.9 65.4 12.9 25.9 0 39.9-6.7 39.9-20.3 0-13.3-10.4-19.1-30.2-20.6l-21.4-1.4c-40.2-2.6-60.5-19.1-60.5-50.2 0-33.7 26.8-54.1 69.8-54.1 27.1 0 48.4 3 67.3 10z\",\n \"m862.8 69.7c52.3 0 91.1 37.1 91.1 88.8 0 52.4-37.2 88.3-90.9 88.3-53.9 0-92-36.4-92-88 0-51.1 39.4-89.1 91.8-89.1zm0 33.3c-32.7 0-55.3 23.4-55.3 55.8 0 32.5 22.5 55 55.5 55 32.9 0 55-22.8 55-55s-22.7-55.8-55.2-55.8z\",\n ],\n} as const;\nexport const lockup = {\n viewBox: \"42.541 42.142 939.02 234.215\",\n paths: [\n \"m112 64.5h57.5l46.3 42.3c12.3 10.8 23.3 13.3 39.5 13.3h72.9v19.9h-117c-14.8 0-26-1.3-33.6-8.4z\",\n \"m64.9 205.1 47.2-29.3c25.2-15.9 44.7-23.9 73.5-23.9h142.6v12.3h-111.6c-17.2 0-24.8 2.2-35.9 10.6l-66.8 51.5h-49z\",\n \"m132.9 254 64.8-58.5c13.5-12.4 22.4-16.1 44.1-16.1h86.4v21.6h-60.7c-13.4 0-17.9 2.2-26.9 9.7l-48.8 43.3z\",\n \"m383.5 101h22.3v48.6l55.5-48.6h30.1l-57.3 52.2 59.1 58.8h-30.4l-44.8-44-12.2 10.5v33.5h-22.3z\",\n \"m498.7 212 52.5-111h19.5l52.1 111h-24.8l-12.3-28h-51.2l-12.9 28zm44.6-46.9h33.7l-16.6-36.4z\",\n \"m632.8 101h89v20.2h-65.9v23.8h57.2v20.1h-57.2v26.5h66.9v20.4h-90z\",\n \"m823.6 105.5v20.7c-12.9-4.3-24.3-6.6-38.2-6.6-17.3 0-26.8 4.3-26.8 12.5 0 8.7 8 11.1 25.1 11.9 31.6 1.4 46.8 11.3 46.8 33.3 0 24.3-18 35.9-48.5 35.9-17 0-33-2.6-44.5-6.5v-21.2c14.1 5.2 28.6 7.6 43.3 7.6 17.3 0 26.5-4.1 26.5-12.9 0-8.7-6.7-12-25.4-13-31.8-1.5-47.9-10.1-47.9-32.3 0-22.3 17.6-35 47.5-35 15.6 0 30 1.7 42.1 5.6z\",\n \"m898.9 100c35.8 0 60.3 23 60.3 56.7s-24.5 56.6-60.3 56.6c-35.7 0-59.9-22.8-59.9-56.6 0-33.7 24.2-56.7 59.9-56.7zm0 21.1c-21.9 0-36.8 14.2-36.8 35.6s14.9 35.5 36.8 35.5c22 0 36.7-14.1 36.7-35.5s-14.7-35.6-36.7-35.6z\",\n ],\n} as const;\n","import { forwardRef, type SVGAttributes } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { wordmark } from \"./paths.js\";\n\nconst WORDMARK_TIGHT = \"72 69.3 881.9 177.7\";\n\nexport interface NavWordmarkProps extends Omit<SVGAttributes<SVGSVGElement>, \"children\"> {\n title?: string | undefined;\n decorative?: boolean | undefined;\n}\n\nexport const NavWordmark = /* @__PURE__ */ forwardRef<SVGSVGElement, NavWordmarkProps>(function NavWordmark({ title = \"Kaeso\", decorative, className, style, ...props }, ref) {\n return (\n <svg\n ref={ref}\n viewBox={WORDMARK_TIGHT}\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn(\"block h-12 w-60 shrink-0\", className)}\n style={style}\n {...(decorative ? { \"aria-hidden\": true, focusable: false } : { role: \"img\", \"aria-label\": title })}\n {...props}\n >\n {wordmark.paths.map((d) => (\n <path key={d} d={d} />\n ))}\n </svg>\n );\n});\nif (process.env.NODE_ENV !== \"production\") NavWordmark.displayName = \"Logo.Wordmark\";\n"],"mappings":";;;;;AAAA,IAAaC,IAAO;CAClB,SAAS;CACT,OAAO;EACL;EACA;EACA;CACF;AACF,GACaC,IAAW;CACtB,SAAS;CACT,OAAO;EACL;EACA;EACA;CACF;AACF,GACaC,IAAW;CACtB,SAAS;CACT,OAAO;EACL;EACA;EACA;EACA;EACA;CACF;AACF,GACaC,IAAS;CACpB,SAAS;CACT,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF,GClCMC,IAAiB,uBAOVC,IAA8B,kBAA4C,SAAqB,EAAE,WAAQ,SAAS,eAAY,cAAW,UAAO,GAAGC,KAAS,GAAK;CAC5K,OACE,kBAAC,OAAD;EACO;EACL,SAASF;EACT,MAAK;EACL,OAAM;EACN,WAAWL,EAAG,4BAA4BQ,CAAS;EAC5C;EACP,GAAKC,IAAa;GAAE,eAAe;GAAM,WAAW;EAAM,IAAI;GAAE,MAAM;GAAO,cAAcC;EAAM;EACjG,GAAIH;EAEH,UAAAJ,EAAS,MAAM,KAAK,MACnB,kBAAC,QAAD,EAAiB,KAAI,GAAVQ,CAAU,CACtB;CACE,CAAA;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAY,cAAc"}
@@ -0,0 +1,45 @@
1
+ "use client";
2
+ import { t as e } from "./cn-BjnOAUrA.js";
3
+ import { t } from "./icon-CBzOwqrX.js";
4
+ import { r as n } from "./text-DkKdTVUf.js";
5
+ import { s as r } from "./app-frame-DysOel2X.js";
6
+ import { forwardRef as i } from "react";
7
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
8
+ //#region src/components/page-header/page-header.tsx
9
+ var s = { size: { md: { classes: "min-h-52 flex-wrap gap-x-12 gap-y-8 px-24 py-10 sm:h-52 sm:flex-nowrap sm:py-0" } } }, c = { size: "md" }, l = /* @__PURE__ */ i(function({ title: i, icon: c, tabs: l, actions: u, start: d, className: f }, p) {
10
+ let m = r().embedded ? "h2" : "h1";
11
+ return /* @__PURE__ */ o("header", {
12
+ ref: p,
13
+ className: e("flex shrink-0 items-center", s.size.md.classes, f),
14
+ children: [
15
+ d,
16
+ i && /* @__PURE__ */ o(m, {
17
+ className: "flex min-w-0 flex-1 shrink-4 items-center gap-8 text-body-lg font-semibold text-fg sm:flex-initial",
18
+ children: [c && /* @__PURE__ */ a(t, {
19
+ icon: c,
20
+ size: "sm",
21
+ className: "shrink-0 text-fg-secondary"
22
+ }), /* @__PURE__ */ a(n, {
23
+ truncate: !0,
24
+ variant: "body-lg",
25
+ weight: "semibold",
26
+ tone: "inherit",
27
+ children: i
28
+ })]
29
+ }),
30
+ l && /* @__PURE__ */ a("div", {
31
+ className: "order-last min-w-0 basis-full sm:order-none sm:ml-8 sm:basis-auto",
32
+ children: l
33
+ }),
34
+ /* @__PURE__ */ a("div", {
35
+ className: "ml-auto flex shrink-0 items-center gap-8",
36
+ children: u
37
+ })
38
+ ]
39
+ });
40
+ });
41
+ process.env.NODE_ENV !== "production" && (l.displayName = "PageHeader");
42
+ //#endregion
43
+ export { s as n, l as r, c as t };
44
+
45
+ //# sourceMappingURL=page-header-kS5tdmvb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-header-kS5tdmvb.js","names":["cn","Text","useAppFrame","KAESO_PAGE_HEADER_VARIANTS","KAESO_PAGE_HEADER_DEFAULT_VARIANTS","PageHeader","Heading","className","start","title","icon","Icon","tabs","actions"],"sources":["../../src/components/page-header/page-header.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { useAppFrame } from \"../app-frame/app-frame.js\";\nimport { Text } from \"../text/text.js\";\n\nexport const KAESO_PAGE_HEADER_VARIANTS = {\n size: {\n md: {\n classes: \"min-h-52 flex-wrap gap-x-12 gap-y-8 px-24 py-10 sm:h-52 sm:flex-nowrap sm:py-0\",\n },\n },\n} as const;\nexport const KAESO_PAGE_HEADER_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface PageHeaderProps {\n title?: ReactNode | undefined;\n icon?: IconData | undefined;\n tabs?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n start?: ReactNode | undefined;\n className?: string | undefined;\n}\n\nexport const PageHeader = /* @__PURE__ */ forwardRef<HTMLElement, PageHeaderProps>(function PageHeader({ title, icon, tabs, actions, start, className }, ref) {\n const Heading = useAppFrame().embedded ? \"h2\" : \"h1\";\n return (\n <header ref={ref} className={cn(\"flex shrink-0 items-center\", KAESO_PAGE_HEADER_VARIANTS.size.md.classes, className)}>\n {start}\n {title && (\n <Heading className=\"flex min-w-0 flex-1 shrink-4 items-center gap-8 text-body-lg font-semibold text-fg sm:flex-initial\">\n {icon && <Icon icon={icon} size=\"sm\" className=\"shrink-0 text-fg-secondary\" />}\n <Text truncate variant=\"body-lg\" weight=\"semibold\" tone=\"inherit\">\n {title}\n </Text>\n </Heading>\n )}\n {tabs && <div className=\"order-last min-w-0 basis-full sm:order-none sm:ml-8 sm:basis-auto\">{tabs}</div>}\n <div className=\"ml-auto flex shrink-0 items-center gap-8\">{actions}</div>\n </header>\n );\n});\nif (process.env.NODE_ENV !== \"production\") PageHeader.displayName = \"PageHeader\";\n"],"mappings":";;;;;;;;AAMA,IAAaG,IAA6B,EACxC,MAAM,EACJ,IAAI,EACF,SAAS,iFACX,EACF,EACF,GACaC,IAAqC,EAAE,MAAM,KAAK,GAWlDC,IAA6B,kBAAyC,SAAoB,EAAE,UAAO,SAAM,SAAM,YAAS,UAAO,gBAAa,GAAK;CAC5J,IAAMC,IAAUJ,EAAY,CAAC,CAAC,WAAW,OAAO;CAChD,OACE,kBAAC,UAAD;EAAa;EAAK,WAAWF,EAAG,8BAA8BG,EAA2B,KAAK,GAAG,SAASI,CAAS;EAAnH,UAAA;GACGC;GACAC,KACC,kBAACH,GAAD;IAAS,WAAU;IAAnB,UAAA,CACGI,KAAQ,kBAACC,GAAD;KAAY;KAAM,MAAK;KAAK,WAAU;IAA8B,CAAA,GAC7E,kBAACV,GAAD;KAAM,UAAA;KAAS,SAAQ;KAAU,QAAO;KAAW,MAAK;KACrD,UAAAQ;IACG,CAAA,CACC;;GAEVG,KAAQ,kBAAC,OAAD;IAAK,WAAU;IAAqE,UAAAA;GAAU,CAAA;GACvG,kBAAC,OAAD;IAAK,WAAU;IAA4C,UAAAC;GAAa,CAAA;EAClE;;AAEZ,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAW,cAAc"}
@@ -0,0 +1,147 @@
1
+ "use client";
2
+ import { t as e } from "./cn-BjnOAUrA.js";
3
+ import { i as t } from "./context-BELWW79w.js";
4
+ import { n } from "./button-IblhXUyZ.js";
5
+ import { t as r } from "./icon-button-Dfwpvmav.js";
6
+ import { forwardRef as i, useLayoutEffect as a, useRef as o, useState as s } from "react";
7
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
8
+ import { ArrowLeft01Icon as u, ArrowRight01Icon as d } from "@hugeicons/core-free-icons";
9
+ //#region src/components/pagination/pagination.tsx
10
+ var f = { variant: {
11
+ "load-more": { classes: "" },
12
+ cursor: { classes: "" },
13
+ pages: { classes: "" }
14
+ } }, p = { variant: "load-more" }, m = 7;
15
+ function h(e, t) {
16
+ let n = Math.max(1, Math.floor(t)), r = Math.min(n, Math.max(1, Math.floor(e)));
17
+ return n <= m ? Array.from({ length: n }, (e, t) => t + 1) : r <= 4 ? [
18
+ 1,
19
+ 2,
20
+ 3,
21
+ 4,
22
+ 5,
23
+ "gap",
24
+ n
25
+ ] : r >= n - 3 ? [
26
+ 1,
27
+ "gap",
28
+ n - 4,
29
+ n - 3,
30
+ n - 2,
31
+ n - 1,
32
+ n
33
+ ] : [
34
+ 1,
35
+ "gap",
36
+ r - 1,
37
+ r,
38
+ r + 1,
39
+ "gap",
40
+ n
41
+ ];
42
+ }
43
+ function g(e, t) {
44
+ return {
45
+ ...e ? { "aria-disabled": !0 } : {},
46
+ onClick: () => {
47
+ e || t?.();
48
+ }
49
+ };
50
+ }
51
+ var _ = /* @__PURE__ */ i(function({ variant: n = "load-more", hasMore: i, hasPrevious: a, loading: o, onLoadMore: s, onNext: f, onPrevious: p, page: m = 1, pageCount: _ = 1, onPageChange: y, className: b }, x) {
52
+ let S = t(), C = S("pagination.label", "Pagination"), w = S("pagination.previous", "Previous page"), T = S("pagination.next", "Next page");
53
+ if (n === "load-more") return /* @__PURE__ */ c(v, {
54
+ ref: x,
55
+ label: C,
56
+ hasMore: !!i,
57
+ loading: o,
58
+ onLoadMore: s,
59
+ className: b
60
+ });
61
+ if (n === "cursor") return !i && !a ? null : /* @__PURE__ */ l("nav", {
62
+ ref: x,
63
+ "aria-label": C,
64
+ className: e("flex items-center gap-8", b),
65
+ children: [/* @__PURE__ */ c(r, {
66
+ icon: u,
67
+ "aria-label": w,
68
+ variant: "secondary",
69
+ ...g(!a, p)
70
+ }), /* @__PURE__ */ c(r, {
71
+ icon: d,
72
+ "aria-label": T,
73
+ variant: "secondary",
74
+ ...g(!i, f)
75
+ })]
76
+ });
77
+ let E = Math.max(1, Math.floor(_)), D = Math.min(E, Math.max(1, Math.floor(m)));
78
+ return /* @__PURE__ */ l("nav", {
79
+ ref: x,
80
+ "aria-label": C,
81
+ className: e("flex items-center gap-4", b),
82
+ children: [
83
+ /* @__PURE__ */ c(r, {
84
+ icon: u,
85
+ "aria-label": w,
86
+ variant: "secondary",
87
+ ...g(D <= 1, () => y?.(D - 1))
88
+ }),
89
+ /* @__PURE__ */ c("span", {
90
+ className: "flex items-center gap-4 px-4",
91
+ children: h(D, E).map((t, n) => t === "gap" ? /* @__PURE__ */ c("span", {
92
+ "aria-hidden": !0,
93
+ className: "inline-flex h-32 min-w-40 items-center justify-center text-body text-fg-tertiary",
94
+ children: "…"
95
+ }, `gap-${n}`) : /* @__PURE__ */ c("button", {
96
+ type: "button",
97
+ "aria-current": t === D ? "page" : void 0,
98
+ "aria-label": S("pagination.page", "Page {page}", { page: String(t) }),
99
+ onClick: () => {
100
+ t !== m && y?.(t);
101
+ },
102
+ className: e("relative inline-flex h-32 min-w-40 cursor-pointer items-center justify-center rounded-pill px-8 text-body font-medium tabular transition-control tap-target focus-ring-inset", t === D ? "bg-fill-2 text-fg" : "text-fg-secondary hover:bg-fill-1 hover:text-fg active:bg-fill-2"),
103
+ children: t
104
+ }, `slot-${n}`))
105
+ }),
106
+ /* @__PURE__ */ c(r, {
107
+ icon: d,
108
+ "aria-label": T,
109
+ variant: "secondary",
110
+ ...g(D >= E, () => y?.(D + 1))
111
+ })
112
+ ]
113
+ });
114
+ });
115
+ process.env.NODE_ENV !== "production" && (_.displayName = "Pagination");
116
+ var v = /* @__PURE__ */ i(function({ label: r, hasMore: i, loading: l, onLoadMore: u, className: d }, f) {
117
+ let p = t(), m = p("pagination.loadMore", "Load more"), [h, g] = s(!1), [_, v] = s(!1), y = o(null);
118
+ return i && _ && v(!1), !i && h && !_ && v(!0), a(() => {
119
+ _ && y.current?.focus();
120
+ }, [_]), !i && !_ ? null : /* @__PURE__ */ c("nav", {
121
+ ref: f,
122
+ "aria-label": r,
123
+ className: e("flex items-center justify-center gap-12 py-12", d),
124
+ onFocus: () => g(!0),
125
+ onBlur: (e) => {
126
+ e.currentTarget.contains(e.relatedTarget) || g(!1);
127
+ },
128
+ children: i ? /* @__PURE__ */ c(n, {
129
+ variant: "secondary",
130
+ size: "sm",
131
+ loading: l,
132
+ onClick: u,
133
+ reserveLabels: [m],
134
+ children: m
135
+ }) : /* @__PURE__ */ c("p", {
136
+ ref: y,
137
+ tabIndex: -1,
138
+ className: "flex h-32 items-center text-small text-fg-secondary outline-none",
139
+ children: p("pagination.allShown", "All rows shown")
140
+ })
141
+ });
142
+ });
143
+ process.env.NODE_ENV !== "production" && (v.displayName = "Pagination.LoadMore");
144
+ //#endregion
145
+ export { f as n, _ as r, p as t };
146
+
147
+ //# sourceMappingURL=pagination-D7fAm8qg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination-D7fAm8qg.js","names":["__icon_ArrowLeft01Icon","__icon_ArrowRight01Icon","cn","useUiText","IconButton","KAESO_PAGINATION_VARIANTS","KAESO_PAGINATION_DEFAULT_VARIANTS","SLOTS","pageSlots","count","pageCount","current","page","i","soft","blocked","run","Pagination","t","label","previous","next","variant","LoadMore","hasMore","hasPrevious","className","ArrowLeft01Icon","onPrevious","ArrowRight01Icon","onNext","onPageChange","p","loadMore","inside","setInside","useState","ended","setEnded","caption","useRef","useLayoutEffect","Button","onLoadMore"],"sources":["../../src/components/pagination/pagination.tsx"],"sourcesContent":["import { forwardRef, useLayoutEffect, useRef, useState, type FocusEvent } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { ArrowLeft01Icon as __icon_ArrowLeft01Icon, ArrowRight01Icon as __icon_ArrowRight01Icon } from \"@hugeicons/core-free-icons\";\nimport { Button } from \"../button/button.js\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_PAGINATION_VARIANTS = {\n variant: {\n \"load-more\": {\n classes: \"\",\n },\n cursor: { classes: \"\" },\n pages: { classes: \"\" },\n },\n} as const;\nexport const KAESO_PAGINATION_DEFAULT_VARIANTS = { variant: \"load-more\" } as const;\n\nexport interface PaginationProps {\n variant?: keyof typeof KAESO_PAGINATION_VARIANTS.variant | undefined;\n hasMore?: boolean | undefined;\n hasPrevious?: boolean | undefined;\n loading?: boolean | undefined;\n onLoadMore?: (() => void) | undefined;\n onNext?: (() => void) | undefined;\n onPrevious?: (() => void) | undefined;\n page?: number | undefined;\n pageCount?: number | undefined;\n onPageChange?: ((page: number) => void) | undefined;\n className?: string | undefined;\n}\n\nconst SLOTS = 7;\n\nfunction pageSlots(page: number, pageCount: number): (number | \"gap\")[] {\n const count = Math.max(1, Math.floor(pageCount));\n const current = Math.min(count, Math.max(1, Math.floor(page)));\n if (count <= SLOTS) return Array.from({ length: count }, (_, i) => i + 1);\n if (current <= 4) return [1, 2, 3, 4, 5, \"gap\", count];\n if (current >= count - 3) return [1, \"gap\", count - 4, count - 3, count - 2, count - 1, count];\n return [1, \"gap\", current - 1, current, current + 1, \"gap\", count];\n}\n\nfunction soft(blocked: boolean, run: (() => void) | undefined) {\n return {\n ...(blocked ? { \"aria-disabled\": true } : {}),\n onClick: () => {\n if (!blocked) run?.();\n },\n };\n}\n\nexport const Pagination = /* @__PURE__ */ forwardRef<HTMLElement, PaginationProps>(function Pagination(\n { variant = \"load-more\", hasMore, hasPrevious, loading, onLoadMore, onNext, onPrevious, page = 1, pageCount = 1, onPageChange, className },\n ref,\n) {\n const t = useUiText();\n const label = t(\"pagination.label\", \"Pagination\");\n const previous = t(\"pagination.previous\", \"Previous page\");\n const next = t(\"pagination.next\", \"Next page\");\n\n if (variant === \"load-more\") {\n return <LoadMore ref={ref} label={label} hasMore={!!hasMore} loading={loading} onLoadMore={onLoadMore} className={className} />;\n }\n if (variant === \"cursor\") {\n if (!hasMore && !hasPrevious) return null;\n return (\n <nav ref={ref} aria-label={label} className={cn(\"flex items-center gap-8\", className)}>\n <IconButton icon={__icon_ArrowLeft01Icon} aria-label={previous} variant=\"secondary\" {...soft(!hasPrevious, onPrevious)} />\n <IconButton icon={__icon_ArrowRight01Icon} aria-label={next} variant=\"secondary\" {...soft(!hasMore, onNext)} />\n </nav>\n );\n }\n const count = Math.max(1, Math.floor(pageCount));\n const current = Math.min(count, Math.max(1, Math.floor(page)));\n return (\n <nav ref={ref} aria-label={label} className={cn(\"flex items-center gap-4\", className)}>\n <IconButton icon={__icon_ArrowLeft01Icon} aria-label={previous} variant=\"secondary\" {...soft(current <= 1, () => onPageChange?.(current - 1))} />\n <span className=\"flex items-center gap-4 px-4\">\n {pageSlots(current, count).map((p, i) =>\n p === \"gap\" ? (\n <span key={`gap-${i}`} aria-hidden className=\"inline-flex h-32 min-w-40 items-center justify-center text-body text-fg-tertiary\">\n …\n </span>\n ) : (\n <button\n key={`slot-${i}`}\n type=\"button\"\n aria-current={p === current ? \"page\" : undefined}\n aria-label={t(\"pagination.page\", \"Page {page}\", { page: String(p) })}\n onClick={() => {\n if (p !== page) onPageChange?.(p);\n }}\n className={cn(\n \"relative inline-flex h-32 min-w-40 cursor-pointer items-center justify-center rounded-pill px-8 text-body font-medium tabular transition-control tap-target focus-ring-inset\",\n p === current ? \"bg-fill-2 text-fg\" : \"text-fg-secondary hover:bg-fill-1 hover:text-fg active:bg-fill-2\",\n )}\n >\n {p}\n </button>\n ),\n )}\n </span>\n <IconButton icon={__icon_ArrowRight01Icon} aria-label={next} variant=\"secondary\" {...soft(current >= count, () => onPageChange?.(current + 1))} />\n </nav>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Pagination.displayName = \"Pagination\";\n\nconst LoadMore = /* @__PURE__ */ forwardRef<\n HTMLElement,\n { label: string; hasMore: boolean; loading: boolean | undefined; onLoadMore: (() => void) | undefined; className: string | undefined }\n>(function PaginationLoadMore({ label, hasMore, loading, onLoadMore, className }, ref) {\n const t = useUiText();\n const loadMore = t(\"pagination.loadMore\", \"Load more\");\n const [inside, setInside] = useState(false);\n const [ended, setEnded] = useState(false);\n const caption = useRef<HTMLParagraphElement>(null);\n if (hasMore && ended) setEnded(false);\n if (!hasMore && inside && !ended) setEnded(true);\n useLayoutEffect(() => {\n if (ended) caption.current?.focus();\n }, [ended]);\n if (!hasMore && !ended) return null;\n return (\n <nav\n ref={ref}\n aria-label={label}\n className={cn(\"flex items-center justify-center gap-12 py-12\", className)}\n onFocus={() => setInside(true)}\n onBlur={(e: FocusEvent<HTMLElement>) => {\n if (!e.currentTarget.contains(e.relatedTarget)) setInside(false);\n }}\n >\n {hasMore ? (\n <Button variant=\"secondary\" size=\"sm\" loading={loading} onClick={onLoadMore} reserveLabels={[loadMore]}>\n {loadMore}\n </Button>\n ) : (\n <p ref={caption} tabIndex={-1} className=\"flex h-32 items-center text-small text-fg-secondary outline-none\">\n {t(\"pagination.allShown\", \"All rows shown\")}\n </p>\n )}\n </nav>\n );\n});\nif (process.env.NODE_ENV !== \"production\") LoadMore.displayName = \"Pagination.LoadMore\";\n"],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ "use client";
2
+ import { t as e } from "./cn-BjnOAUrA.js";
3
+ import { n as t, r as n } from "./portal-context-CTatR2Z8.js";
4
+ import { i as r } from "./context-BELWW79w.js";
5
+ import { t as i } from "./icon-CBzOwqrX.js";
6
+ import { d as a, f as o, p as s } from "./tooltip-Tkm-urbi.js";
7
+ import { t as c } from "./icon-button-Dfwpvmav.js";
8
+ import { n as l } from "./select-BqjmQOqx.js";
9
+ import { n as u } from "./command-list-CypqsC4T.js";
10
+ import { forwardRef as d, useState as f, useSyncExternalStore as p } from "react";
11
+ import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
12
+ import { ArrowDown01Icon as _, Cancel01Icon as v } from "@hugeicons/core-free-icons";
13
+ import { Popover as y } from "@base-ui/react/popover";
14
+ import { Dialog as b } from "@base-ui/react/dialog";
15
+ //#region src/components/command-list/picker-popover.tsx
16
+ var x = { width: {
17
+ sm: { classes: "w-320" },
18
+ md: { classes: "w-400" },
19
+ lg: { classes: "w-560" }
20
+ } }, S = { width: "md" }, C = "(max-width: 767px)", w = (e) => {
21
+ if (typeof window > "u" || !window.matchMedia) return () => {};
22
+ let t = window.matchMedia(C);
23
+ return t.addEventListener("change", e), () => t.removeEventListener("change", e);
24
+ }, T = () => typeof window < "u" && !!window.matchMedia?.(C).matches, E = /* @__PURE__ */ d(function({ trigger: i, title: a, open: o, onOpenChange: s, width: l = "md", align: d = "start", children: f }, m) {
25
+ let _ = r(), S = n(), C = p(w, T, () => !1), E = s ? { onOpenChange: (e) => s(e) } : {}, D = o === void 0 ? {} : { open: o };
26
+ return C ? /* @__PURE__ */ g(b.Root, {
27
+ ...D,
28
+ ...E,
29
+ children: [/* @__PURE__ */ h(b.Trigger, { render: i }), /* @__PURE__ */ g(b.Portal, {
30
+ container: S,
31
+ children: [/* @__PURE__ */ h(b.Backdrop, { className: "fixed inset-0 z-50 bg-overlay opacity-50 backdrop-motion" }), /* @__PURE__ */ g(b.Popup, {
32
+ ref: m,
33
+ "data-side": "bottom",
34
+ className: "fixed inset-safe-8 z-50 flex flex-col overflow-hidden rounded-sheet bg-raised text-fg shadow-dialog outline-none sheet-motion",
35
+ children: [/* @__PURE__ */ g("div", {
36
+ className: "flex min-h-60 shrink-0 items-center gap-12 px-24 py-12 hairline-b",
37
+ children: [/* @__PURE__ */ h(b.Title, {
38
+ className: "min-w-0 flex-1 text-title-sm font-semibold text-fg text-balance wrap-anywhere",
39
+ children: a
40
+ }), /* @__PURE__ */ h(b.Close, { render: /* @__PURE__ */ h(c, {
41
+ icon: v,
42
+ "aria-label": _("pickerPopover.close", "Close"),
43
+ tooltip: !1
44
+ }) })]
45
+ }), /* @__PURE__ */ h(u.Provider, {
46
+ value: "fill",
47
+ children: f
48
+ })]
49
+ })]
50
+ })]
51
+ }) : /* @__PURE__ */ g(y.Root, {
52
+ ...D,
53
+ ...E,
54
+ modal: !1,
55
+ children: [/* @__PURE__ */ h(y.Trigger, { render: i }), /* @__PURE__ */ h(y.Portal, {
56
+ container: S,
57
+ children: /* @__PURE__ */ h(y.Positioner, {
58
+ positionMethod: "fixed",
59
+ collisionBoundary: t(),
60
+ side: "bottom",
61
+ align: d,
62
+ sideOffset: 6,
63
+ collisionPadding: 8,
64
+ className: "z-50 outline-none",
65
+ children: /* @__PURE__ */ h(y.Popup, {
66
+ ref: m,
67
+ "aria-label": a,
68
+ className: e("flex max-w-full-bleed-4 flex-col overflow-hidden rounded-popover bg-raised text-fg shadow-raised outline-none popup-motion", x.width[l].classes),
69
+ children: /* @__PURE__ */ h(u.Provider, {
70
+ value: "popover",
71
+ children: f
72
+ })
73
+ })
74
+ })
75
+ })]
76
+ });
77
+ });
78
+ process.env.NODE_ENV !== "production" && (E.displayName = "PickerPopover");
79
+ var D = /* @__PURE__ */ d(function({ appearance: t = "default", size: n = "md", fullWidth: r, invalid: c, placeholder: u, children: d, className: p, type: v = "button", "aria-label": y, "aria-describedby": b, disabled: x, onFocus: S, onBlur: C, onClickCapture: w, ...T }, E) {
80
+ let [D, O] = f(!1), k = !!x && D, A = d == null || d === !1, j = o(A ? u : d), M = s(j ? y : void 0), N = a(M.id, b);
81
+ return /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ g("button", {
82
+ ref: E,
83
+ type: v,
84
+ "data-picker": "",
85
+ ...T,
86
+ ...k ? {
87
+ "aria-disabled": !0,
88
+ "data-disabled": ""
89
+ } : { disabled: x },
90
+ onFocus: (e) => {
91
+ O(!0), S?.(e);
92
+ },
93
+ onBlur: (e) => {
94
+ O(!1), C?.(e);
95
+ },
96
+ onClickCapture: (e) => {
97
+ k && (e.preventDefault(), e.stopPropagation()), w?.(e);
98
+ },
99
+ ...!j && y ? { "aria-label": y } : {},
100
+ ...N ? { "aria-describedby": N } : {},
101
+ ...c ? { "aria-invalid": !0 } : {},
102
+ className: e("group/picker inline-flex min-w-0 cursor-pointer items-center justify-between rounded-pill font-medium whitespace-nowrap transition-control disabled:cursor-not-allowed", l.size[n].classes, l.appearance[t].classes, c && t !== "default" && "ring-invalid", r && "w-full", p),
103
+ children: [/* @__PURE__ */ h("span", {
104
+ className: e("flex min-w-0 flex-1 items-center truncate text-left group-disabled/picker:opacity-40", A ? "font-regular text-fg-tertiary" : "group-disabled/picker:text-fg"),
105
+ children: A ? u : d
106
+ }), /* @__PURE__ */ h("span", {
107
+ className: "flex shrink-0 text-fg-tertiary group-disabled/picker:opacity-40",
108
+ children: /* @__PURE__ */ h(i, {
109
+ icon: _,
110
+ size: "sm"
111
+ })
112
+ })]
113
+ }), M.node] });
114
+ });
115
+ process.env.NODE_ENV !== "production" && (D.displayName = "PickerTrigger");
116
+ //#endregion
117
+ export { D as i, x as n, E as r, S as t };
118
+
119
+ //# sourceMappingURL=picker-popover-1FHb1LQG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"picker-popover-1FHb1LQG.js","names":["BaseDialog","__icon_Cancel01Icon","BasePopover","_Fragment","__icon_ArrowDown01Icon","cn","pageBoundary","usePortalContainer","useUiText","Icon","joinIds","showsText","useHiddenDescription","IconButton","KAESO_SELECT_VARIANTS","CommandListHeightContext","Fragment$1","KAESO_PICKER_POPOVER_VARIANTS","KAESO_PICKER_POPOVER_DEFAULT_VARIANTS","NARROW","subscribeNarrow","q","onChange","isNarrow","PickerPopover","t","container","narrow","useSyncExternalStore","change","onOpenChange","o","state","open","Dialog","trigger","title","Cancel01Icon","Popover","width","PickerTrigger","ariaLabel","describedBy","props","focused","setFocused","useState","held","disabled","empty","children","shows","placeholder","purpose","descriptions","onFocus","onBlur","onClickCapture","invalid","size","appearance","fullWidth","className","ArrowDown01Icon"],"sources":["../../src/components/command-list/picker-popover.tsx"],"sourcesContent":["import { forwardRef, useState, useSyncExternalStore, type ButtonHTMLAttributes, type ReactElement, type ReactNode } from \"react\";\nimport { Popover as BasePopover } from \"@base-ui/react/popover\";\nimport { Dialog as BaseDialog } from \"@base-ui/react/dialog\";\nimport { cn } from \"../../utils/cn.js\";\nimport { pageBoundary, usePortalContainer } from \"../../utils/portal-context.js\";\nimport { Cancel01Icon as __icon_Cancel01Icon, ArrowDown01Icon as __icon_ArrowDown01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon } from \"../icon/icon.js\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { KAESO_SELECT_VARIANTS } from \"../select/select.js\";\nimport { useUiText } from \"../../i18n/context.js\";\nimport { joinIds, showsText, useHiddenDescription } from \"../../utils/hidden-description.js\";\nimport { CommandListHeightContext } from \"./command-list.js\";\n\nexport const KAESO_PICKER_POPOVER_VARIANTS = {\n width: {\n sm: { classes: \"w-320\" },\n md: { classes: \"w-400\" },\n lg: { classes: \"w-560\" },\n },\n} as const;\nexport const KAESO_PICKER_POPOVER_DEFAULT_VARIANTS = { width: \"md\" } as const;\n\nconst NARROW = \"(max-width: 767px)\";\nconst subscribeNarrow = (onChange: () => void) => {\n if (typeof window === \"undefined\" || !window.matchMedia) return () => {};\n const q = window.matchMedia(NARROW);\n q.addEventListener(\"change\", onChange);\n return () => q.removeEventListener(\"change\", onChange);\n};\nconst isNarrow = () => typeof window !== \"undefined\" && !!window.matchMedia?.(NARROW).matches;\n\nexport interface PickerPopoverProps {\n trigger: ReactElement;\n title: string;\n open?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n width?: keyof typeof KAESO_PICKER_POPOVER_VARIANTS.width | undefined;\n align?: \"start\" | \"end\" | undefined;\n children: ReactNode;\n}\n\nexport const PickerPopover = /* @__PURE__ */ forwardRef<HTMLDivElement, PickerPopoverProps>(function PickerPopover(\n { trigger, title, open, onOpenChange, width = \"md\", align = \"start\", children },\n ref,\n) {\n const t = useUiText();\n const container = usePortalContainer();\n const narrow = useSyncExternalStore(subscribeNarrow, isNarrow, () => false);\n const change = onOpenChange ? { onOpenChange: (o: boolean) => onOpenChange(o) } : {};\n const state = open !== undefined ? { open } : {};\n if (narrow)\n return (\n <BaseDialog.Root {...state} {...change}>\n <BaseDialog.Trigger render={trigger} />\n <BaseDialog.Portal container={container}>\n <BaseDialog.Backdrop className=\"fixed inset-0 z-50 bg-overlay opacity-50 backdrop-motion\" />\n <BaseDialog.Popup\n ref={ref}\n data-side=\"bottom\"\n className=\"fixed inset-safe-8 z-50 flex flex-col overflow-hidden rounded-sheet bg-raised text-fg shadow-dialog outline-none sheet-motion\"\n >\n <div className=\"flex min-h-60 shrink-0 items-center gap-12 px-24 py-12 hairline-b\">\n <BaseDialog.Title className=\"min-w-0 flex-1 text-title-sm font-semibold text-fg text-balance wrap-anywhere\">{title}</BaseDialog.Title>\n <BaseDialog.Close render={<IconButton icon={__icon_Cancel01Icon} aria-label={t(\"pickerPopover.close\", \"Close\")} tooltip={false} />} />\n </div>\n <CommandListHeightContext.Provider value=\"fill\">{children}</CommandListHeightContext.Provider>\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n );\n return (\n <BasePopover.Root {...state} {...change} modal={false}>\n <BasePopover.Trigger render={trigger} />\n <BasePopover.Portal container={container}>\n <BasePopover.Positioner\n positionMethod=\"fixed\"\n collisionBoundary={pageBoundary()}\n side=\"bottom\"\n align={align}\n sideOffset={6}\n collisionPadding={8}\n className=\"z-50 outline-none\"\n >\n <BasePopover.Popup\n ref={ref}\n aria-label={title}\n className={cn(\n \"flex max-w-full-bleed-4 flex-col overflow-hidden rounded-popover bg-raised text-fg shadow-raised outline-none popup-motion\",\n KAESO_PICKER_POPOVER_VARIANTS.width[width].classes,\n )}\n >\n <CommandListHeightContext.Provider value=\"popover\">{children}</CommandListHeightContext.Provider>\n </BasePopover.Popup>\n </BasePopover.Positioner>\n </BasePopover.Portal>\n </BasePopover.Root>\n );\n});\nif (process.env.NODE_ENV !== \"production\") PickerPopover.displayName = \"PickerPopover\";\n\nexport interface PickerTriggerProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n appearance?: keyof typeof KAESO_SELECT_VARIANTS.appearance | undefined;\n size?: keyof typeof KAESO_SELECT_VARIANTS.size | undefined;\n fullWidth?: boolean | undefined;\n invalid?: boolean | undefined;\n placeholder?: ReactNode | undefined;\n children?: ReactNode | undefined;\n \"aria-label\"?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport const PickerTrigger = /* @__PURE__ */ forwardRef<HTMLButtonElement, PickerTriggerProps>(function PickerTrigger(\n {\n appearance = \"default\",\n size = \"md\",\n fullWidth,\n invalid,\n placeholder,\n children,\n className,\n type = \"button\",\n \"aria-label\": ariaLabel,\n \"aria-describedby\": describedBy,\n disabled,\n onFocus,\n onBlur,\n onClickCapture,\n ...props\n },\n ref,\n) {\n const [focused, setFocused] = useState(false);\n // A natively disabled button that holds focus drops it to <body>; stay focusable until it blurs.\n const held = !!disabled && focused;\n const empty = children === undefined || children === null || children === false;\n const shows = showsText(empty ? placeholder : children);\n const purpose = useHiddenDescription(shows ? ariaLabel : undefined);\n const descriptions = joinIds(purpose.id, describedBy);\n return (\n <>\n <button\n ref={ref}\n type={type}\n data-picker=\"\"\n {...props}\n {...(held ? { \"aria-disabled\": true, \"data-disabled\": \"\" } : { disabled })}\n onFocus={(e) => {\n setFocused(true);\n onFocus?.(e);\n }}\n onBlur={(e) => {\n setFocused(false);\n onBlur?.(e);\n }}\n onClickCapture={(e) => {\n if (held) {\n e.preventDefault();\n e.stopPropagation();\n }\n onClickCapture?.(e);\n }}\n {...(!shows && ariaLabel ? { \"aria-label\": ariaLabel } : {})}\n {...(descriptions ? { \"aria-describedby\": descriptions } : {})}\n {...(invalid ? { \"aria-invalid\": true } : {})}\n className={cn(\n \"group/picker inline-flex min-w-0 cursor-pointer items-center justify-between rounded-pill font-medium whitespace-nowrap transition-control disabled:cursor-not-allowed\",\n KAESO_SELECT_VARIANTS.size[size].classes,\n KAESO_SELECT_VARIANTS.appearance[appearance].classes,\n invalid && appearance !== \"default\" && \"ring-invalid\",\n fullWidth && \"w-full\",\n className,\n )}\n >\n <span\n className={cn(\n \"flex min-w-0 flex-1 items-center truncate text-left group-disabled/picker:opacity-40\",\n empty ? \"font-regular text-fg-tertiary\" : \"group-disabled/picker:text-fg\",\n )}\n >\n {empty ? placeholder : children}\n </span>\n <span className=\"flex shrink-0 text-fg-tertiary group-disabled/picker:opacity-40\">\n <Icon icon={__icon_ArrowDown01Icon} size=\"sm\" />\n </span>\n </button>\n {purpose.node}\n </>\n );\n});\nif (process.env.NODE_ENV !== \"production\") PickerTrigger.displayName = \"PickerTrigger\";\n"],"mappings":"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"}