@logicplanes/kaeso-ui 0.4.1 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/NOTICE.md +1 -1
  2. package/ai/component-guides.md +333 -21
  3. package/ai/component-registry.json +631 -32
  4. package/ai/component-registry.md +164 -28
  5. package/ai/icons.md +3 -3
  6. package/ai/tokens.md +1 -1
  7. package/dist/blocks/delete-resource.js +15 -14
  8. package/dist/blocks/delete-resource.js.map +1 -1
  9. package/dist/blocks/pages.js +5 -5
  10. package/dist/blocks/resource-list.js +42 -41
  11. package/dist/blocks/resource-list.js.map +1 -1
  12. package/dist/chunks/agent-avatar-0pdBTWkR.js +171 -0
  13. package/dist/chunks/agent-avatar-0pdBTWkR.js.map +1 -0
  14. package/dist/chunks/{app-frame-DZPEf2NQ.js → app-frame-DogGRmsu.js} +23 -22
  15. package/dist/chunks/app-frame-DogGRmsu.js.map +1 -0
  16. package/dist/chunks/{avatar-HnvBUoe5.js → avatar-CWbdwbJv.js} +2 -2
  17. package/dist/chunks/{avatar-HnvBUoe5.js.map → avatar-CWbdwbJv.js.map} +1 -1
  18. package/dist/chunks/{badge-CM8ahjDR.js → badge-C2KtxCLB.js} +2 -2
  19. package/dist/chunks/{badge-CM8ahjDR.js.map → badge-C2KtxCLB.js.map} +1 -1
  20. package/dist/chunks/{banner-CvYgPwCc.js → banner-BA2ALw9M.js} +4 -4
  21. package/dist/chunks/{banner-CvYgPwCc.js.map → banner-BA2ALw9M.js.map} +1 -1
  22. package/dist/chunks/{button-9q66Ta23.js → button-CzuxqawA.js} +8 -8
  23. package/dist/chunks/{button-9q66Ta23.js.map → button-CzuxqawA.js.map} +1 -1
  24. package/dist/chunks/{calendar-CeNcqLFd.js → calendar-BWaf2MXc.js} +58 -42
  25. package/dist/chunks/calendar-BWaf2MXc.js.map +1 -0
  26. package/dist/chunks/{checkbox-C_DrNA2N.js → checkbox-CQjwCPkc.js} +12 -10
  27. package/dist/chunks/checkbox-CQjwCPkc.js.map +1 -0
  28. package/dist/chunks/{cn-Isw2DnQX.js → cn-Dj6sRgkF.js} +8 -1
  29. package/dist/chunks/cn-Dj6sRgkF.js.map +1 -0
  30. package/dist/chunks/{code-block-mEH6Sy3h.js → code-block-D5A-CGXG.js} +75 -54
  31. package/dist/chunks/code-block-D5A-CGXG.js.map +1 -0
  32. package/dist/chunks/{code-Bp2p9AuD.js → code-tqj0uhBL.js} +2 -2
  33. package/dist/chunks/{code-Bp2p9AuD.js.map → code-tqj0uhBL.js.map} +1 -1
  34. package/dist/chunks/{collapsible-CtQNJn9b.js → collapsible-CKrCX_T9.js} +3 -3
  35. package/dist/chunks/{collapsible-CtQNJn9b.js.map → collapsible-CKrCX_T9.js.map} +1 -1
  36. package/dist/chunks/combobox-DjDI7SUC.js +319 -0
  37. package/dist/chunks/combobox-DjDI7SUC.js.map +1 -0
  38. package/dist/chunks/{command-list-CzMbdtJs.js → command-list-C2Y7V_lt.js} +54 -54
  39. package/dist/chunks/command-list-C2Y7V_lt.js.map +1 -0
  40. package/dist/chunks/{copy-button-Cdea0wKl.js → copy-button-FJvPJn72.js} +5 -5
  41. package/dist/chunks/{copy-button-Cdea0wKl.js.map → copy-button-FJvPJn72.js.map} +1 -1
  42. package/dist/chunks/{core-FtMDNELx.js → core-BYns5ytV.js} +146 -140
  43. package/dist/chunks/core-BYns5ytV.js.map +1 -0
  44. package/dist/chunks/{date-popup-NytWvSNh.js → date-popup-CPA_zt6o.js} +4 -4
  45. package/dist/chunks/{date-popup-NytWvSNh.js.map → date-popup-CPA_zt6o.js.map} +1 -1
  46. package/dist/chunks/{de-BnNQtBSV.js → de-CPXJh9cq.js} +3 -1
  47. package/dist/chunks/de-CPXJh9cq.js.map +1 -0
  48. package/dist/chunks/dialog-Cg9A_6SF.js +383 -0
  49. package/dist/chunks/dialog-Cg9A_6SF.js.map +1 -0
  50. package/dist/chunks/{empty-By1qTJr6.js → empty-DvhyMXQq.js} +2 -2
  51. package/dist/chunks/{empty-By1qTJr6.js.map → empty-DvhyMXQq.js.map} +1 -1
  52. package/dist/chunks/{field-DfITT6Jm.js → field-TviMvYa2.js} +2 -2
  53. package/dist/chunks/{field-DfITT6Jm.js.map → field-TviMvYa2.js.map} +1 -1
  54. package/dist/chunks/{icon-D5uD_mnL.js → icon-D7ja-_Yk.js} +2 -2
  55. package/dist/chunks/{icon-D5uD_mnL.js.map → icon-D7ja-_Yk.js.map} +1 -1
  56. package/dist/chunks/icon-DVooQfk4.js +94 -0
  57. package/dist/chunks/icon-DVooQfk4.js.map +1 -0
  58. package/dist/chunks/{icon-button-C7Du4pvb.js → icon-button-CrdF_eMG.js} +3 -3
  59. package/dist/chunks/{icon-button-C7Du4pvb.js.map → icon-button-CrdF_eMG.js.map} +1 -1
  60. package/dist/chunks/{identity-BcVQd-7H.js → identity-BmhQ6BQ-.js} +18 -18
  61. package/dist/chunks/identity-BmhQ6BQ-.js.map +1 -0
  62. package/dist/chunks/{input-B6Docqrk.js → input-2VJuj_M4.js} +13 -8
  63. package/dist/chunks/input-2VJuj_M4.js.map +1 -0
  64. package/dist/chunks/{input-group-Dgdb0JpZ.js → input-group-DQ_4DoXg.js} +4 -4
  65. package/dist/chunks/{input-group-Dgdb0JpZ.js.map → input-group-DQ_4DoXg.js.map} +1 -1
  66. package/dist/chunks/{inset-BnBj8NJV.js → inset-BUzyXLK4.js} +14 -4
  67. package/dist/chunks/inset-BUzyXLK4.js.map +1 -0
  68. package/dist/chunks/{iso-field-SOZ7Z-yE.js → iso-field-B2rTwiBo.js} +2 -2
  69. package/dist/chunks/{iso-field-SOZ7Z-yE.js.map → iso-field-B2rTwiBo.js.map} +1 -1
  70. package/dist/chunks/{json-view-DCTMY_j4.js → json-view-Dqd2TDkc.js} +3 -3
  71. package/dist/chunks/{json-view-DCTMY_j4.js.map → json-view-Dqd2TDkc.js.map} +1 -1
  72. package/dist/chunks/{kbd-9A9rX60U.js → kbd-BF1vKXJf.js} +2 -2
  73. package/dist/chunks/{kbd-9A9rX60U.js.map → kbd-BF1vKXJf.js.map} +1 -1
  74. package/dist/chunks/{link-CtII7u3h.js → link-KWI7PevW.js} +4 -4
  75. package/dist/chunks/{link-CtII7u3h.js.map → link-KWI7PevW.js.map} +1 -1
  76. package/dist/chunks/link-provider-cvl8lSTT.js +29 -0
  77. package/dist/chunks/link-provider-cvl8lSTT.js.map +1 -0
  78. package/dist/chunks/{list-CMXBTVkI.js → list-M1csq-d4.js} +21 -19
  79. package/dist/chunks/{list-CMXBTVkI.js.map → list-M1csq-d4.js.map} +1 -1
  80. package/dist/chunks/{loader-DqOUwS1j.js → loader-DCfPndXa.js} +2 -2
  81. package/dist/chunks/{loader-DqOUwS1j.js.map → loader-DCfPndXa.js.map} +1 -1
  82. package/dist/chunks/{markdown-CwVQ0niB.js → markdown-DULktoTK.js} +9 -9
  83. package/dist/chunks/{markdown-CwVQ0niB.js.map → markdown-DULktoTK.js.map} +1 -1
  84. package/dist/chunks/{menu-Cjg4RggA.js → menu-DEmBfdPm.js} +32 -29
  85. package/dist/chunks/menu-DEmBfdPm.js.map +1 -0
  86. package/dist/chunks/{meter-VrC2J2GF.js → meter-Bj4N3Xuh.js} +2 -2
  87. package/dist/chunks/{meter-VrC2J2GF.js.map → meter-Bj4N3Xuh.js.map} +1 -1
  88. package/dist/chunks/nav-sheet-CzgIwgAm.js +60 -0
  89. package/dist/chunks/nav-sheet-CzgIwgAm.js.map +1 -0
  90. package/dist/chunks/{nav-wordmark-CjWM3NYa.js → nav-wordmark-_pjheAsZ.js} +2 -2
  91. package/dist/chunks/{nav-wordmark-CjWM3NYa.js.map → nav-wordmark-_pjheAsZ.js.map} +1 -1
  92. package/dist/chunks/{page-header-CZCQVHYE.js → page-header-DL2y2iZp.js} +4 -4
  93. package/dist/chunks/{page-header-CZCQVHYE.js.map → page-header-DL2y2iZp.js.map} +1 -1
  94. package/dist/chunks/{pagination-BStrMDqM.js → pagination-Cn_qF4cg.js} +4 -4
  95. package/dist/chunks/{pagination-BStrMDqM.js.map → pagination-Cn_qF4cg.js.map} +1 -1
  96. package/dist/chunks/{picker-popover-BerQAEBT.js → picker-popover-BxyU1U9F.js} +17 -16
  97. package/dist/chunks/{picker-popover-BerQAEBT.js.map → picker-popover-BxyU1U9F.js.map} +1 -1
  98. package/dist/chunks/{popover-CgLt_4yG.js → popover-DNN4S47w.js} +3 -3
  99. package/dist/chunks/{popover-CgLt_4yG.js.map → popover-DNN4S47w.js.map} +1 -1
  100. package/dist/chunks/portal-context-BBbzDKmY.js.map +1 -1
  101. package/dist/chunks/{radio-07Muf4cX.js → radio-CDDFpdtL.js} +5 -5
  102. package/dist/chunks/{radio-07Muf4cX.js.map → radio-CDDFpdtL.js.map} +1 -1
  103. package/dist/chunks/{range-popup-BCov1iPe.js → range-popup-CRyWYUB1.js} +6 -6
  104. package/dist/chunks/{range-popup-BCov1iPe.js.map → range-popup-CRyWYUB1.js.map} +1 -1
  105. package/dist/chunks/{release-art-69WpgVik.js → release-art-ZwfFQImt.js} +2 -2
  106. package/dist/chunks/{release-art-69WpgVik.js.map → release-art-ZwfFQImt.js.map} +1 -1
  107. package/dist/chunks/{rights-UVngOX_4.js → rights-Cyp0Pzp-.js} +9 -9
  108. package/dist/chunks/{rights-UVngOX_4.js.map → rights-Cyp0Pzp-.js.map} +1 -1
  109. package/dist/chunks/scroll-area-D8MD7Vpo.js +42 -0
  110. package/dist/chunks/scroll-area-D8MD7Vpo.js.map +1 -0
  111. package/dist/chunks/{section-Bvg0EUnr.js → section-Ce1efbsP.js} +3 -3
  112. package/dist/chunks/{section-Bvg0EUnr.js.map → section-Ce1efbsP.js.map} +1 -1
  113. package/dist/chunks/{segmented-DRLDN8EW.js → segmented-CErcoxwi.js} +4 -4
  114. package/dist/chunks/{segmented-DRLDN8EW.js.map → segmented-CErcoxwi.js.map} +1 -1
  115. package/dist/chunks/{select-eFTHLeYG.js → select-x4XVsdCI.js} +4 -4
  116. package/dist/chunks/{select-eFTHLeYG.js.map → select-x4XVsdCI.js.map} +1 -1
  117. package/dist/chunks/{separator-D86IW7Ge.js → separator-D7TzNHmX.js} +2 -2
  118. package/dist/chunks/{separator-D86IW7Ge.js.map → separator-D7TzNHmX.js.map} +1 -1
  119. package/dist/chunks/{sidebar-DifJ5KgE.js → sidebar-3r1ZRXlN.js} +255 -237
  120. package/dist/chunks/sidebar-3r1ZRXlN.js.map +1 -0
  121. package/dist/chunks/{sidebar-menu-XKOiwrQp.js → sidebar-menu-BN3jkTlK.js} +2 -2
  122. package/dist/chunks/{sidebar-menu-XKOiwrQp.js.map → sidebar-menu-BN3jkTlK.js.map} +1 -1
  123. package/dist/chunks/{skeleton-Cu74kGJA.js → skeleton-Dcz57Zyp.js} +2 -2
  124. package/dist/chunks/{skeleton-Cu74kGJA.js.map → skeleton-Dcz57Zyp.js.map} +1 -1
  125. package/dist/chunks/{slider-Dh0qq1wa.js → slider-Ci83PGtj.js} +2 -2
  126. package/dist/chunks/{slider-Dh0qq1wa.js.map → slider-Ci83PGtj.js.map} +1 -1
  127. package/dist/chunks/{status-dot-u4Izk-uC.js → status-dot-QJTF0Yv4.js} +3 -3
  128. package/dist/chunks/{status-dot-u4Izk-uC.js.map → status-dot-QJTF0Yv4.js.map} +1 -1
  129. package/dist/chunks/{swap-text-CC77iKJF.js → swap-text-Dr0Irxz6.js} +2 -2
  130. package/dist/chunks/{swap-text-CC77iKJF.js.map → swap-text-Dr0Irxz6.js.map} +1 -1
  131. package/dist/chunks/{switch-CbU9m9gi.js → switch-BNMq_kGt.js} +3 -3
  132. package/dist/chunks/{switch-CbU9m9gi.js.map → switch-BNMq_kGt.js.map} +1 -1
  133. package/dist/chunks/table-BeOSKl_3.js +84 -0
  134. package/dist/chunks/table-BeOSKl_3.js.map +1 -0
  135. package/dist/chunks/{tag-CqSk8F7M.js → tag-D_M1s2qS.js} +4 -4
  136. package/dist/chunks/{tag-CqSk8F7M.js.map → tag-D_M1s2qS.js.map} +1 -1
  137. package/dist/chunks/{text-hFc6TDp9.js → text-CIXH8rmT.js} +3 -3
  138. package/dist/chunks/{text-hFc6TDp9.js.map → text-CIXH8rmT.js.map} +1 -1
  139. package/dist/chunks/{textarea-17Ftvph_.js → textarea--4FRL3Pb.js} +5 -5
  140. package/dist/chunks/{textarea-17Ftvph_.js.map → textarea--4FRL3Pb.js.map} +1 -1
  141. package/dist/chunks/theme-provider-DJhORMlc.js.map +1 -1
  142. package/dist/chunks/{timeseries-CbnSFD5q.js → timeseries-D1xjRXfk.js} +3 -3
  143. package/dist/chunks/{timeseries-CbnSFD5q.js.map → timeseries-D1xjRXfk.js.map} +1 -1
  144. package/dist/chunks/{toolbar-B_960Ttx.js → toolbar-WA_oZgu-.js} +6 -5
  145. package/dist/chunks/{toolbar-B_960Ttx.js.map → toolbar-WA_oZgu-.js.map} +1 -1
  146. package/dist/chunks/tooltip-OcwO0VUT.js +154 -0
  147. package/dist/chunks/tooltip-OcwO0VUT.js.map +1 -0
  148. package/dist/chunks/{tooltip-root-Dssjjp-E.js → tooltip-root-DzahJDVj.js} +4 -4
  149. package/dist/chunks/{tooltip-root-Dssjjp-E.js.map → tooltip-root-DzahJDVj.js.map} +1 -1
  150. package/dist/chunks/{use-scroll-margin-DfdTc_5D.js → use-scroll-margin-atRtf0v_.js} +14 -10
  151. package/dist/chunks/use-scroll-margin-atRtf0v_.js.map +1 -0
  152. package/dist/chunks/{virtual-rows-yAMjeAwj.js → virtual-rows-CC_kc2PR.js} +2 -2
  153. package/dist/chunks/{virtual-rows-yAMjeAwj.js.map → virtual-rows-CC_kc2PR.js.map} +1 -1
  154. package/dist/chunks/{zh-CN-CKffAT7j.js → zh-CN-29X4CDLE.js} +3 -1
  155. package/dist/chunks/zh-CN-29X4CDLE.js.map +1 -0
  156. package/dist/components/agent-avatar.js +2 -0
  157. package/dist/components/app-frame.js +2 -2
  158. package/dist/components/avatar.js +1 -1
  159. package/dist/components/badge.js +1 -1
  160. package/dist/components/banner.js +1 -1
  161. package/dist/components/button-group.js +4 -4
  162. package/dist/components/button.js +1 -1
  163. package/dist/components/calendar.js +1 -1
  164. package/dist/components/charts/bar.js +2 -2
  165. package/dist/components/charts/donut.js +2 -2
  166. package/dist/components/charts/gauge.js +2 -2
  167. package/dist/components/charts/heatmap.js +1 -1
  168. package/dist/components/charts/sankey.js +2 -2
  169. package/dist/components/charts/sparkline.js +1 -1
  170. package/dist/components/charts/timeseries.js +1 -1
  171. package/dist/components/charts.js +2 -2
  172. package/dist/components/checkbox.js +1 -1
  173. package/dist/components/code-block.js +2 -2
  174. package/dist/components/code.js +1 -1
  175. package/dist/components/collapsible.js +1 -1
  176. package/dist/components/combobox.js +1 -1
  177. package/dist/components/command-list.js +2 -2
  178. package/dist/components/command-palette.js +89 -84
  179. package/dist/components/command-palette.js.map +1 -1
  180. package/dist/components/copy-button.js +1 -1
  181. package/dist/components/data-table.js +193 -189
  182. package/dist/components/data-table.js.map +1 -1
  183. package/dist/components/date-picker.js +9 -7
  184. package/dist/components/date-picker.js.map +1 -1
  185. package/dist/components/dialog.js +125 -91
  186. package/dist/components/dialog.js.map +1 -1
  187. package/dist/components/display-options.js +52 -49
  188. package/dist/components/display-options.js.map +1 -1
  189. package/dist/components/empty.js +1 -1
  190. package/dist/components/field.js +1 -1
  191. package/dist/components/figure.js +60 -0
  192. package/dist/components/figure.js.map +1 -0
  193. package/dist/components/filter-chip.js +5 -5
  194. package/dist/components/filter-chip.js.map +1 -1
  195. package/dist/components/filter-row.js +2 -2
  196. package/dist/components/flow.js +2 -2
  197. package/dist/components/heading.js +1 -1
  198. package/dist/components/icon-button.js +1 -1
  199. package/dist/components/icon.js +2 -2
  200. package/dist/components/input.js +51 -51
  201. package/dist/components/input.js.map +1 -1
  202. package/dist/components/kaeso/conversation.js +8 -8
  203. package/dist/components/kaeso/identity.js +1 -1
  204. package/dist/components/kaeso/moments.js +5 -5
  205. package/dist/components/kaeso/rights.js +1 -1
  206. package/dist/components/kaeso/usage.js +12 -12
  207. package/dist/components/kaeso/usage.js.map +1 -1
  208. package/dist/components/kaeso.js +264 -96
  209. package/dist/components/kaeso.js.map +1 -1
  210. package/dist/components/kbd.js +1 -1
  211. package/dist/components/key-value.js +3 -3
  212. package/dist/components/label.js +1 -1
  213. package/dist/components/layout.js +1 -1
  214. package/dist/components/link.js +1 -1
  215. package/dist/components/list.js +1 -1
  216. package/dist/components/loader.js +2 -2
  217. package/dist/components/logo.js +2 -2
  218. package/dist/components/markdown.js +1 -1
  219. package/dist/components/menu.js +2 -2
  220. package/dist/components/meter.js +1 -1
  221. package/dist/components/page-header.js +1 -1
  222. package/dist/components/pagination.js +1 -1
  223. package/dist/components/playground.js +32 -31
  224. package/dist/components/playground.js.map +1 -1
  225. package/dist/components/popover.js +13 -12
  226. package/dist/components/popover.js.map +1 -1
  227. package/dist/components/qr-code.js +1 -1
  228. package/dist/components/radio.js +1 -1
  229. package/dist/components/release-art.js +1 -1
  230. package/dist/components/scroll-area.js +1 -41
  231. package/dist/components/section.js +1 -1
  232. package/dist/components/segmented.js +1 -1
  233. package/dist/components/select.js +1 -1
  234. package/dist/components/separator.js +1 -1
  235. package/dist/components/settings.js +10 -10
  236. package/dist/components/settings.js.map +1 -1
  237. package/dist/components/sheet.js +3 -3
  238. package/dist/components/sidebar.js +1 -1
  239. package/dist/components/skeleton.js +1 -1
  240. package/dist/components/slider.js +1 -1
  241. package/dist/components/stat.js +3 -3
  242. package/dist/components/status-dot.js +1 -1
  243. package/dist/components/surface.js +1 -1
  244. package/dist/components/swap-text.js +1 -1
  245. package/dist/components/switch.js +1 -1
  246. package/dist/components/table.js +1 -1
  247. package/dist/components/tabs.js +24 -24
  248. package/dist/components/tabs.js.map +1 -1
  249. package/dist/components/tag.js +1 -1
  250. package/dist/components/text.js +1 -1
  251. package/dist/components/theme-image.js +1 -1
  252. package/dist/components/theme-menu.js +33 -30
  253. package/dist/components/theme-menu.js.map +1 -1
  254. package/dist/components/theme-select.js +1 -1
  255. package/dist/components/thumbnail.js +41 -0
  256. package/dist/components/thumbnail.js.map +1 -0
  257. package/dist/components/timeline.js +1 -1
  258. package/dist/components/toast.js +100 -91
  259. package/dist/components/toast.js.map +1 -1
  260. package/dist/components/toc.js +37 -22
  261. package/dist/components/toc.js.map +1 -1
  262. package/dist/components/toolbar.js +1 -1
  263. package/dist/components/tooltip.js +1 -1
  264. package/dist/components/visually-hidden.js +1 -1
  265. package/dist/format.js.map +1 -1
  266. package/dist/i18n-provider.js +1 -1
  267. package/dist/index.js +99 -95
  268. package/dist/kaeso.css +3 -0
  269. package/dist/styles.css +1 -1
  270. package/dist/types/blocks/delete-resource/delete-resource.d.ts +2 -5
  271. package/dist/types/blocks/resource-list/resource-list.d.ts +1 -4
  272. package/dist/types/component-docs.d.ts +1 -1
  273. package/dist/types/components/agent-avatar/agent-avatar.d.ts +94 -0
  274. package/dist/types/components/agent-avatar/docs.d.ts +19 -0
  275. package/dist/types/components/agent-avatar/index.d.ts +3 -0
  276. package/dist/types/components/agent-avatar/model-name.d.ts +9 -0
  277. package/dist/types/components/agent-avatar/models.d.ts +4 -0
  278. package/dist/types/components/app-frame/app-frame.d.ts +3 -8
  279. package/dist/types/components/app-frame/nav-sheet.d.ts +2 -4
  280. package/dist/types/components/calendar/calendar.d.ts +1 -4
  281. package/dist/types/components/charts/core.d.ts +11 -18
  282. package/dist/types/components/checkbox/checkbox.d.ts +2 -0
  283. package/dist/types/components/code-block/code-block.d.ts +1 -1
  284. package/dist/types/components/code-block/indent.d.ts +3 -0
  285. package/dist/types/components/combobox/combobox.d.ts +26 -2
  286. package/dist/types/components/command-list/command-list.d.ts +1 -0
  287. package/dist/types/components/command-list/docs.d.ts +1 -0
  288. package/dist/types/components/command-list/picker-popover.d.ts +1 -4
  289. package/dist/types/components/command-palette/command-palette.d.ts +2 -4
  290. package/dist/types/components/command-palette/docs.d.ts +1 -0
  291. package/dist/types/components/data-table/data-table.d.ts +2 -1
  292. package/dist/types/components/data-table/docs.d.ts +1 -0
  293. package/dist/types/components/dialog/dialog.d.ts +7 -9
  294. package/dist/types/components/dialog/docs.d.ts +2 -0
  295. package/dist/types/components/dialog/scope.d.ts +2 -0
  296. package/dist/types/components/dialog/step-dialog.d.ts +38 -5
  297. package/dist/types/components/display-options/display-options.d.ts +2 -5
  298. package/dist/types/components/figure/docs.d.ts +12 -0
  299. package/dist/types/components/figure/figure.d.ts +25 -0
  300. package/dist/types/components/figure/index.d.ts +1 -0
  301. package/dist/types/components/input/input.d.ts +23 -0
  302. package/dist/types/components/kaeso/client-button.d.ts +17 -0
  303. package/dist/types/components/kaeso/docs.d.ts +18 -0
  304. package/dist/types/components/kaeso/grant-summary.d.ts +12 -0
  305. package/dist/types/components/kaeso/identity.d.ts +2 -0
  306. package/dist/types/components/kaeso/index.d.ts +2 -0
  307. package/dist/types/components/kaeso/provider-picker.d.ts +5 -0
  308. package/dist/types/components/kaeso/usage.d.ts +2 -0
  309. package/dist/types/components/list/list.d.ts +4 -8
  310. package/dist/types/components/menu/docs.d.ts +8 -1
  311. package/dist/types/components/menu/menu.d.ts +19 -31
  312. package/dist/types/components/playground/parameter-panel.d.ts +1 -4
  313. package/dist/types/components/popover/hover-card.d.ts +2 -0
  314. package/dist/types/components/radio/docs.d.ts +15 -0
  315. package/dist/types/components/radio/radio.d.ts +2 -4
  316. package/dist/types/components/settings/settings.d.ts +2 -0
  317. package/dist/types/components/sidebar/sidebar.d.ts +13 -35
  318. package/dist/types/components/table/docs.d.ts +3 -1
  319. package/dist/types/components/table/table.d.ts +18 -1
  320. package/dist/types/components/tabs/tabs.d.ts +15 -0
  321. package/dist/types/components/theme-menu/docs.d.ts +2 -0
  322. package/dist/types/components/theme-menu/theme-menu.d.ts +6 -5
  323. package/dist/types/components/thumbnail/docs.d.ts +10 -0
  324. package/dist/types/components/thumbnail/index.d.ts +1 -0
  325. package/dist/types/components/thumbnail/thumbnail.d.ts +26 -0
  326. package/dist/types/components/toast/toast.d.ts +5 -12
  327. package/dist/types/components/toolbar/toolbar.d.ts +1 -6
  328. package/dist/types/components/tooltip/tooltip.d.ts +2 -4
  329. package/dist/types/components/tooltip/trigger-props.d.ts +0 -1
  330. package/dist/types/format/index.d.ts +5 -5
  331. package/dist/types/hooks/use-scroll-margin.d.ts +1 -1
  332. package/dist/types/icons/groups.d.ts +2 -2
  333. package/dist/types/icons/vocabulary.d.ts +15 -0
  334. package/dist/types/index.d.ts +3 -0
  335. package/dist/types/utils/cn.d.ts +4 -0
  336. package/dist/types/utils/inset.d.ts +4 -0
  337. package/dist/types/utils/link-provider.d.ts +1 -1
  338. package/dist/types/utils/merge-refs.d.ts +3 -0
  339. package/dist/types/utils/portal-context.d.ts +1 -1
  340. package/dist/utils.js +4 -4
  341. package/foundations/shape.md +1 -1
  342. package/package.json +3 -3
  343. package/dist/chunks/app-frame-DZPEf2NQ.js.map +0 -1
  344. package/dist/chunks/calendar-CeNcqLFd.js.map +0 -1
  345. package/dist/chunks/checkbox-C_DrNA2N.js.map +0 -1
  346. package/dist/chunks/cn-Isw2DnQX.js.map +0 -1
  347. package/dist/chunks/code-block-mEH6Sy3h.js.map +0 -1
  348. package/dist/chunks/combobox-D8ZOm8uT.js +0 -314
  349. package/dist/chunks/combobox-D8ZOm8uT.js.map +0 -1
  350. package/dist/chunks/command-list-CzMbdtJs.js.map +0 -1
  351. package/dist/chunks/core-FtMDNELx.js.map +0 -1
  352. package/dist/chunks/de-BnNQtBSV.js.map +0 -1
  353. package/dist/chunks/dialog-BZCVFmGF.js +0 -353
  354. package/dist/chunks/dialog-BZCVFmGF.js.map +0 -1
  355. package/dist/chunks/icon-CBzvyEqC.js +0 -91
  356. package/dist/chunks/icon-CBzvyEqC.js.map +0 -1
  357. package/dist/chunks/identity-BcVQd-7H.js.map +0 -1
  358. package/dist/chunks/input-B6Docqrk.js.map +0 -1
  359. package/dist/chunks/inset-BnBj8NJV.js.map +0 -1
  360. package/dist/chunks/link-provider-BsUxhZKG.js +0 -27
  361. package/dist/chunks/link-provider-BsUxhZKG.js.map +0 -1
  362. package/dist/chunks/menu-Cjg4RggA.js.map +0 -1
  363. package/dist/chunks/nav-sheet-Y2Ite-iF.js +0 -60
  364. package/dist/chunks/nav-sheet-Y2Ite-iF.js.map +0 -1
  365. package/dist/chunks/sidebar-DifJ5KgE.js.map +0 -1
  366. package/dist/chunks/table-CTxDp7zC.js +0 -67
  367. package/dist/chunks/table-CTxDp7zC.js.map +0 -1
  368. package/dist/chunks/tooltip-CRApbLF6.js +0 -151
  369. package/dist/chunks/tooltip-CRApbLF6.js.map +0 -1
  370. package/dist/chunks/use-scroll-margin-DfdTc_5D.js.map +0 -1
  371. package/dist/chunks/zh-CN-CKffAT7j.js.map +0 -1
  372. package/dist/components/scroll-area.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { t as e } from "./cn-Isw2DnQX.js";
3
- import { t } from "./nav-wordmark-CjWM3NYa.js";
2
+ import { t as e } from "./cn-Dj6sRgkF.js";
3
+ import { t } from "./nav-wordmark-_pjheAsZ.js";
4
4
  import { forwardRef as n } from "react";
5
5
  import { jsx as r, jsxs as i } from "react/jsx-runtime";
6
6
  //#region src/components/section/section.tsx
@@ -84,4 +84,4 @@ process.env.NODE_ENV !== "production" && (l.displayName = "AuthLayout");
84
84
  //#endregion
85
85
  export { c as a, s as i, o as n, a as r, l as t };
86
86
 
87
- //# sourceMappingURL=section-Bvg0EUnr.js.map
87
+ //# sourceMappingURL=section-Ce1efbsP.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"section-Bvg0EUnr.js","names":["cn","KAESO_SECTION_VARIANTS","KAESO_SECTION_DEFAULT_VARIANTS","Section","spacing","className","title","actions","description","children","SplitView","aside","AuthLayout","NavWordmark","footer"],"sources":["../../src/components/section/section.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { NavWordmark } from \"../logo/nav-wordmark.js\";\n\nexport const KAESO_SECTION_VARIANTS = {\n spacing: {\n default: { classes: \"mt-48 first:mt-0\" },\n none: { classes: \"\" },\n },\n} as const;\nexport const KAESO_SECTION_DEFAULT_VARIANTS = { spacing: \"default\" } as const;\n\nexport interface SectionProps {\n title?: ReactNode | undefined;\n description?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n spacing?: keyof typeof KAESO_SECTION_VARIANTS.spacing | undefined;\n children: ReactNode;\n className?: string | undefined;\n}\n\nexport const Section = /* @__PURE__ */ forwardRef<HTMLElement, SectionProps>(function Section({ title, description, actions, spacing = \"default\", children, className }, ref) {\n return (\n <section ref={ref} className={cn(KAESO_SECTION_VARIANTS.spacing[spacing].classes, className)}>\n {(title || actions) && (\n <header className=\"mb-16 flex flex-wrap items-end justify-between gap-x-16 gap-y-12\">\n <div className=\"flex min-w-0 flex-col gap-2\">\n {title && <h2 className=\"text-title-sm font-semibold text-fg\">{title}</h2>}\n {description && <p className=\"max-w-prose text-small text-fg-secondary\">{description}</p>}\n </div>\n {actions && <div className=\"flex shrink-0 items-center gap-8\">{actions}</div>}\n </header>\n )}\n {children}\n </section>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Section.displayName = \"Section\";\n\nexport const SplitView = /* @__PURE__ */ forwardRef<HTMLDivElement, { children: ReactNode; aside: ReactNode; className?: string | undefined }>(function SplitView(\n { children, aside, className },\n ref,\n) {\n return (\n <div ref={ref} className={cn(\"grid grid-cols-1 lg:grid-cols-aside\", className)}>\n <div className=\"min-w-0 lg:pr-32\">{children}</div>\n <aside className=\"mt-32 min-w-0 lg:mt-0 lg:pl-32 lg:hairline-l\">\n <div className=\"flex flex-col gap-32 lg:sticky lg:top-16\">{aside}</div>\n </aside>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") SplitView.displayName = \"SplitView\";\n\nexport const AuthLayout = /* @__PURE__ */ forwardRef<\n HTMLDivElement,\n { title: ReactNode; description?: ReactNode | undefined; children: ReactNode; footer?: ReactNode | undefined; className?: string | undefined }\n>(function AuthLayout({ title, description, children, footer, className }, ref) {\n return (\n <div ref={ref} className={cn(\"relative flex min-h-dvh flex-col items-center bg-panel px-16 py-64 text-fg\", className)}>\n <div className=\"absolute top-0 left-0 mt-8 flex h-52 items-center px-16 sm:px-28\">\n <NavWordmark />\n </div>\n <div className=\"flex w-full max-w-auth flex-1 flex-col justify-center\">\n <h1 className=\"text-center text-title-lg font-semibold text-fg text-balance\">{title}</h1>\n {description && <p className=\"mt-8 text-center text-body-lg font-regular text-fg-secondary text-pretty\">{description}</p>}\n <div className=\"mt-24 flex flex-col gap-16\">{children}</div>\n </div>\n {footer && <div className=\"mt-48 text-small text-fg-tertiary\">{footer}</div>}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") AuthLayout.displayName = \"AuthLayout\";\n"],"mappings":";;;;;;AAIA,IAAaC,IAAyB,EACpC,SAAS;CACP,SAAS,EAAE,SAAS,mBAAmB;CACvC,MAAM,EAAE,SAAS,GAAG;AACtB,EACF,GACaC,IAAiC,EAAE,SAAS,UAAU,GAWtDC,IAA0B,kBAAsC,SAAiB,EAAE,UAAO,gBAAa,YAAS,aAAU,WAAW,aAAU,gBAAa,GAAK;CAC5K,OACE,kBAAC,WAAD;EAAc;EAAK,WAAWH,EAAGC,EAAuB,QAAQG,EAAQ,CAAC,SAASC,CAAS;EAA3F,UAAA,EACIC,KAASC,MACT,kBAAC,UAAD;GAAQ,WAAU;GAAlB,UAAA,CACE,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACGD,KAAS,kBAAC,MAAD;KAAI,WAAU;KAAuC,UAAAA;IAAU,CAAA,GACxEE,KAAe,kBAAC,KAAD;KAAG,WAAU;KAA4C,UAAAA;IAAe,CAAA,CACrF;GACJ,CAAA,GAAAD,KAAW,kBAAC,OAAD;IAAK,WAAU;IAAoC,UAAAA;GAAa,CAAA,CACtE;EAET,CAAA,GAAAE,CACM;;AAEb,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAQ,cAAc;AAEjE,IAAaC,IAA4B,kBAAsG,SAC7I,EAAE,aAAU,UAAO,gBACnB,GACA;CACA,OACE,kBAAC,OAAD;EAAU;EAAK,WAAWV,EAAG,uCAAuCK,CAAS;EAA7E,UAAA,CACE,kBAAC,OAAD;GAAK,WAAU;GAAoB;EAAc,CAAA,GACjD,kBAAC,SAAD;GAAO,WAAU;GACf,UAAA,kBAAC,OAAD;IAAK,WAAU;IAA4C,UAAAM;GAAW,CAAA;EACjE,CAAA,CACJ;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAU,cAAc;AAEnE,IAAaC,IAA6B,kBAGxC,SAAoB,EAAE,UAAO,gBAAa,aAAU,WAAQ,gBAAa,GAAK;CAC9E,OACE,kBAAC,OAAD;EAAU;EAAK,WAAWZ,EAAG,8EAA8EK,CAAS;EAApH,UAAA;GACE,kBAAC,OAAD;IAAK,WAAU;IACb,UAAA,kBAACQ,GAAD,CAAc,CAAA;GACX,CAAA;GACL,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACE,kBAAC,MAAD;MAAI,WAAU;MAAgE,UAAAP;KAAU,CAAA;KACvFE,KAAe,kBAAC,KAAD;MAAG,WAAU;MAA4E,UAAAA;KAAe,CAAA;KACxH,kBAAC,OAAD;MAAK,WAAU;MAA8B;KAAc,CAAA;IACxD;;GACJM,KAAU,kBAAC,OAAD;IAAK,WAAU;IAAqC,UAAAA;GAAY,CAAA;EACxE;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAW,cAAc"}
1
+ {"version":3,"file":"section-Ce1efbsP.js","names":["cn","KAESO_SECTION_VARIANTS","KAESO_SECTION_DEFAULT_VARIANTS","Section","spacing","className","title","actions","description","children","SplitView","aside","AuthLayout","NavWordmark","footer"],"sources":["../../src/components/section/section.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { NavWordmark } from \"../logo/nav-wordmark.js\";\n\nexport const KAESO_SECTION_VARIANTS = {\n spacing: {\n default: { classes: \"mt-48 first:mt-0\" },\n none: { classes: \"\" },\n },\n} as const;\nexport const KAESO_SECTION_DEFAULT_VARIANTS = { spacing: \"default\" } as const;\n\nexport interface SectionProps {\n title?: ReactNode | undefined;\n description?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n spacing?: keyof typeof KAESO_SECTION_VARIANTS.spacing | undefined;\n children: ReactNode;\n className?: string | undefined;\n}\n\nexport const Section = /* @__PURE__ */ forwardRef<HTMLElement, SectionProps>(function Section({ title, description, actions, spacing = \"default\", children, className }, ref) {\n return (\n <section ref={ref} className={cn(KAESO_SECTION_VARIANTS.spacing[spacing].classes, className)}>\n {(title || actions) && (\n <header className=\"mb-16 flex flex-wrap items-end justify-between gap-x-16 gap-y-12\">\n <div className=\"flex min-w-0 flex-col gap-2\">\n {title && <h2 className=\"text-title-sm font-semibold text-fg\">{title}</h2>}\n {description && <p className=\"max-w-prose text-small text-fg-secondary\">{description}</p>}\n </div>\n {actions && <div className=\"flex shrink-0 items-center gap-8\">{actions}</div>}\n </header>\n )}\n {children}\n </section>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Section.displayName = \"Section\";\n\nexport const SplitView = /* @__PURE__ */ forwardRef<HTMLDivElement, { children: ReactNode; aside: ReactNode; className?: string | undefined }>(function SplitView(\n { children, aside, className },\n ref,\n) {\n return (\n <div ref={ref} className={cn(\"grid grid-cols-1 lg:grid-cols-aside\", className)}>\n <div className=\"min-w-0 lg:pr-32\">{children}</div>\n <aside className=\"mt-32 min-w-0 lg:mt-0 lg:pl-32 lg:hairline-l\">\n <div className=\"flex flex-col gap-32 lg:sticky lg:top-16\">{aside}</div>\n </aside>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") SplitView.displayName = \"SplitView\";\n\nexport const AuthLayout = /* @__PURE__ */ forwardRef<\n HTMLDivElement,\n { title: ReactNode; description?: ReactNode | undefined; children: ReactNode; footer?: ReactNode | undefined; className?: string | undefined }\n>(function AuthLayout({ title, description, children, footer, className }, ref) {\n return (\n <div ref={ref} className={cn(\"relative flex min-h-dvh flex-col items-center bg-panel px-16 py-64 text-fg\", className)}>\n <div className=\"absolute top-0 left-0 mt-8 flex h-52 items-center px-16 sm:px-28\">\n <NavWordmark />\n </div>\n <div className=\"flex w-full max-w-auth flex-1 flex-col justify-center\">\n <h1 className=\"text-center text-title-lg font-semibold text-fg text-balance\">{title}</h1>\n {description && <p className=\"mt-8 text-center text-body-lg font-regular text-fg-secondary text-pretty\">{description}</p>}\n <div className=\"mt-24 flex flex-col gap-16\">{children}</div>\n </div>\n {footer && <div className=\"mt-48 text-small text-fg-tertiary\">{footer}</div>}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") AuthLayout.displayName = \"AuthLayout\";\n"],"mappings":";;;;;;AAIA,IAAaC,IAAyB,EACpC,SAAS;CACP,SAAS,EAAE,SAAS,mBAAmB;CACvC,MAAM,EAAE,SAAS,GAAG;AACtB,EACF,GACaC,IAAiC,EAAE,SAAS,UAAU,GAWtDC,IAA0B,kBAAsC,SAAiB,EAAE,UAAO,gBAAa,YAAS,aAAU,WAAW,aAAU,gBAAa,GAAK;CAC5K,OACE,kBAAC,WAAD;EAAc;EAAK,WAAWH,EAAGC,EAAuB,QAAQG,EAAQ,CAAC,SAASC,CAAS;EAA3F,UAAA,EACIC,KAASC,MACT,kBAAC,UAAD;GAAQ,WAAU;GAAlB,UAAA,CACE,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACGD,KAAS,kBAAC,MAAD;KAAI,WAAU;KAAuC,UAAAA;IAAU,CAAA,GACxEE,KAAe,kBAAC,KAAD;KAAG,WAAU;KAA4C,UAAAA;IAAe,CAAA,CACrF;GACJ,CAAA,GAAAD,KAAW,kBAAC,OAAD;IAAK,WAAU;IAAoC,UAAAA;GAAa,CAAA,CACtE;EAET,CAAA,GAAAE,CACM;;AAEb,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAQ,cAAc;AAEjE,IAAaC,IAA4B,kBAAsG,SAC7I,EAAE,aAAU,UAAO,gBACnB,GACA;CACA,OACE,kBAAC,OAAD;EAAU;EAAK,WAAWV,EAAG,uCAAuCK,CAAS;EAA7E,UAAA,CACE,kBAAC,OAAD;GAAK,WAAU;GAAoB;EAAc,CAAA,GACjD,kBAAC,SAAD;GAAO,WAAU;GACf,UAAA,kBAAC,OAAD;IAAK,WAAU;IAA4C,UAAAM;GAAW,CAAA;EACjE,CAAA,CACJ;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAU,cAAc;AAEnE,IAAaC,IAA6B,kBAGxC,SAAoB,EAAE,UAAO,gBAAa,aAAU,WAAQ,gBAAa,GAAK;CAC9E,OACE,kBAAC,OAAD;EAAU;EAAK,WAAWZ,EAAG,8EAA8EK,CAAS;EAApH,UAAA;GACE,kBAAC,OAAD;IAAK,WAAU;IACb,UAAA,kBAACQ,GAAD,CAAc,CAAA;GACX,CAAA;GACL,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACE,kBAAC,MAAD;MAAI,WAAU;MAAgE,UAAAP;KAAU,CAAA;KACvFE,KAAe,kBAAC,KAAD;MAAG,WAAU;MAA4E,UAAAA;KAAe,CAAA;KACxH,kBAAC,OAAD;MAAK,WAAU;MAA8B;KAAc,CAAA;IACxD;;GACJM,KAAU,kBAAC,OAAD;IAAK,WAAU;IAAqC,UAAAA;GAAY,CAAA;EACxE;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAW,cAAc"}
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { t as e } from "./cn-Isw2DnQX.js";
2
+ import { t as e } from "./cn-Dj6sRgkF.js";
3
3
  import { t } from "./use-controllable-B5Fd12Bx.js";
4
- import { t as n } from "./icon-D5uD_mnL.js";
5
- import { r } from "./tooltip-CRApbLF6.js";
4
+ import { t as n } from "./icon-D7ja-_Yk.js";
5
+ import { r } from "./tooltip-OcwO0VUT.js";
6
6
  import { t as i } from "./observe-resize-DhxhmoyB.js";
7
7
  import { forwardRef as a, useEffect as o, useLayoutEffect as s, useRef as c, useState as l } from "react";
8
8
  import { jsx as u, jsxs as d } from "react/jsx-runtime";
@@ -111,4 +111,4 @@ process.env.NODE_ENV !== "production" && (y.displayName = "Segmented");
111
111
  //#endregion
112
112
  export { h as n, y as r, g as t };
113
113
 
114
- //# sourceMappingURL=segmented-DRLDN8EW.js.map
114
+ //# sourceMappingURL=segmented-CErcoxwi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"segmented-DRLDN8EW.js","names":["BaseRadioGroup","BaseRadio","cn","Icon","observeResize","useIndicator","box","setBox","useState","animate","setAnimate","useEffect","raf","live","useLayoutEffect","root","container","measure","el","selector","b","stop","layout","KAESO_SEGMENTED_VARIANTS","KAESO_SEGMENTED_DEFAULT_VARIANTS","ITEM","ITEM_ICON","Segmented","ariaLabel","force","current","setCurrent","useControllable","value","defaultValue","options","onValueChange","track","useRef","ind","size","RadioGroup","ref","v","disabled","fullWidth","className","iconOnly","o","item","Radio","Tooltip"],"sources":["../../src/hooks/use-indicator.ts","../../src/components/segmented/segmented.tsx"],"sourcesContent":["import { useEffect, useLayoutEffect, useState, type RefObject } from \"react\";\nimport { observeResize } from \"../utils/observe-resize.js\";\n\nexport function useIndicator(\n container: RefObject<HTMLElement | null>,\n selector: string,\n layout: string,\n): { x: number; y: number; w: number; h: number; ready: boolean; animate: boolean } {\n const [box, setBox] = useState({ x: 0, y: 0, w: 0, h: 0, ready: false });\n const [animate, setAnimate] = useState(false);\n useEffect(() => {\n if (!box.ready || animate) return;\n let raf = 0;\n let live = true;\n void (document.fonts?.ready ?? Promise.resolve()).then(() => {\n if (live) raf = requestAnimationFrame(() => (raf = requestAnimationFrame(() => setAnimate(true))));\n });\n return () => {\n live = false;\n cancelAnimationFrame(raf);\n };\n }, [box.ready, animate]);\n useLayoutEffect(() => {\n const root = container.current;\n if (!root) return;\n const measure = () => {\n const el = root.querySelector<HTMLElement>(selector);\n if (!el) return setBox((b) => ({ ...b, ready: false }));\n setBox({ x: Math.round(el.offsetLeft), y: Math.round(el.offsetTop), w: Math.round(el.offsetWidth), h: Math.round(el.offsetHeight), ready: true });\n };\n measure();\n if (typeof ResizeObserver === \"undefined\") return;\n let live = true;\n const stop = observeResize([root, ...root.querySelectorAll(\":scope > *\")], measure);\n void document.fonts?.ready.then(() => {\n if (live) measure();\n });\n return () => {\n live = false;\n stop();\n };\n }, [container, selector, layout]);\n return { ...box, animate };\n}\n","import { forwardRef, useRef, type ReactNode } from \"react\";\nimport { RadioGroup as BaseRadioGroup } from \"@base-ui/react/radio-group\";\nimport { Radio as BaseRadio } from \"@base-ui/react/radio\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useControllable } from \"../../utils/use-controllable.js\";\nimport { useIndicator } from \"../../hooks/use-indicator.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\n\nexport const KAESO_SEGMENTED_VARIANTS = {\n size: {\n sm: { classes: \"h-32 p-2 gap-2\" },\n md: { classes: \"h-36 p-2 gap-2\" },\n },\n} as const;\nexport const KAESO_SEGMENTED_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nconst ITEM = { sm: \"h-28 px-10 text-body\", md: \"h-32 px-12 text-body\" } as const;\nconst ITEM_ICON = { sm: \"w-32 px-0\", md: \"w-36 px-0\" } as const;\n\nexport interface SegmentedOption {\n value: string;\n label?: ReactNode | undefined;\n icon?: IconData | undefined;\n \"aria-label\"?: string | undefined;\n disabled?: boolean | undefined;\n}\n\nexport interface SegmentedProps {\n options: SegmentedOption[];\n value?: string | undefined;\n defaultValue?: string | undefined;\n onValueChange?: ((value: string) => void) | undefined;\n size?: keyof typeof KAESO_SEGMENTED_VARIANTS.size | undefined;\n disabled?: boolean | undefined;\n fullWidth?: boolean | undefined;\n \"aria-label\": string;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport const Segmented = /* @__PURE__ */ forwardRef<HTMLDivElement, SegmentedProps>(function Segmented(\n { options, value, defaultValue, onValueChange, size = \"md\", disabled, fullWidth, className, \"aria-label\": ariaLabel, \"data-force\": force },\n ref,\n) {\n const [current, setCurrent] = useControllable(value, defaultValue ?? options[0]?.value ?? \"\", onValueChange);\n const track = useRef<HTMLDivElement | null>(null);\n const ind = useIndicator(track, \"[data-checked]\", `${current}|${options.length}|${size}`);\n return (\n <BaseRadioGroup\n ref={(el: HTMLDivElement | null) => {\n track.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n }}\n value={current}\n onValueChange={(v: unknown) => setCurrent(String(v))}\n {...(disabled !== undefined ? { disabled } : {})}\n aria-label={ariaLabel}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"relative isolate inline-flex items-center rounded-pill bg-fill-1\",\n KAESO_SEGMENTED_VARIANTS.size[size].classes,\n fullWidth && \"flex w-full\",\n disabled && \"opacity-40\",\n className,\n )}\n >\n <span\n aria-hidden\n className={cn(\"absolute top-0 left-0 -z-10 rounded-pill bg-raised shadow-segment\", ind.animate && \"indicator-motion\", !ind.ready && \"opacity-0\")}\n style={{ transform: `translate(${ind.x}px, ${ind.y}px)`, width: ind.w, height: ind.h }}\n />\n {options.map((o) => {\n const iconOnly = o.icon && !o.label;\n const item = (\n <BaseRadio.Root\n key={o.value}\n value={o.value}\n {...(o.disabled ? { disabled: true } : {})}\n {...(iconOnly && o[\"aria-label\"] ? { \"aria-label\": o[\"aria-label\"] } : {})}\n className={cn(\n \"relative inline-flex cursor-pointer items-center justify-center gap-6 rounded-pill font-medium whitespace-nowrap text-fg-secondary transition-control focus-ring tap-target\",\n \"hover:text-fg checked:text-fg disabled:cursor-not-allowed disabled:text-fg-disabled\",\n ITEM[size],\n iconOnly && ITEM_ICON[size],\n fullWidth && \"flex-1\",\n )}\n >\n {o.icon && <Icon icon={o.icon} size=\"sm\" />}\n {o.label}\n </BaseRadio.Root>\n );\n return iconOnly && o[\"aria-label\"] ? (\n <Tooltip key={o.value} content={o[\"aria-label\"]}>\n {item}\n </Tooltip>\n ) : (\n item\n );\n })}\n </BaseRadioGroup>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Segmented.displayName = \"Segmented\";\n"],"mappings":";;;;;;;;;;;AAGA,SAAgBK,EACd,GACA,GACA,GACkF;CAClF,IAAM,CAACC,GAAKC,KAAUC,EAAS;EAAE,GAAG;EAAG,GAAG;EAAG,GAAG;EAAG,GAAG;EAAG,OAAO;CAAM,CAAC,GACjE,CAACC,GAASC,KAAcF,EAAS,EAAK;CAiC5C,OAhCAG,QAAgB;EACd,IAAI,CAACL,EAAI,SAASG,GAAS;EAC3B,IAAIG,IAAM,GACNC,IAAO;EAIX,QAHM,SAAS,OAAO,SAAS,QAAQ,QAAQ,EAAA,CAAG,WAAW;GAC3D,AAAIA,MAAM,IAAM,4BAA6B,IAAM,4BAA4BH,EAAW,EAAI,CAAC,CAAE;EACnG,CAAC,SACY;GAEX,AADA,IAAO,IACP,qBAAqBE,CAAG;EAC1B;CACF,GAAG,CAACN,EAAI,OAAOG,CAAO,CAAC,GACvBK,QAAsB;EACpB,IAAMC,IAAOC,EAAU;EACvB,IAAI,CAACD,GAAM;EACX,IAAME,UAAgB;GACpB,IAAMC,IAAKH,EAAK,cAA2BI,CAAQ;GACnD,IAAI,CAACD,GAAI,OAAOX,GAAQ,OAAO;IAAE,GAAGa;IAAG,OAAO;GAAM,EAAE;GACtD,EAAO;IAAE,GAAG,KAAK,MAAMF,EAAG,UAAU;IAAG,GAAG,KAAK,MAAMA,EAAG,SAAS;IAAG,GAAG,KAAK,MAAMA,EAAG,WAAW;IAAG,GAAG,KAAK,MAAMA,EAAG,YAAY;IAAG,OAAO;GAAK,CAAC;EAClJ;EAEA,IADAD,EAAQ,GACJ,OAAO,iBAAmB,KAAa;EAC3C,IAAIJ,IAAO,IACLQ,IAAOjB,EAAc,CAACW,GAAM,GAAGA,EAAK,iBAAiB,YAAY,CAAC,GAAGE,CAAO;EAIlF,OAHA,SAAc,OAAO,MAAM,WAAW;GACpC,AAAIJ,KAAMI,EAAQ;EACpB,CAAC,SACY;GAEX,AADA,IAAO,IACPI,EAAK;EACP;CACF,GAAG;EAACL;EAAWG;EAAUG;CAAM,CAAC,GACzB;EAAE,GAAGhB;EAAK;CAAQ;AAC3B;;;AClCA,IAAaiB,IAA2B,EACtC,MAAM;CACJ,IAAI,EAAE,SAAS,iBAAiB;CAChC,IAAI,EAAE,SAAS,iBAAiB;AAClC,EACF,GACaC,IAAmC,EAAE,MAAM,KAAK,GAEvDC,IAAO;CAAE,IAAI;CAAwB,IAAI;AAAuB,GAChEC,IAAY;CAAE,IAAI;CAAa,IAAI;AAAY,GAuBxCC,IAA4B,kBAA2C,SAClF,EAAE,YAAS,UAAO,iBAAc,kBAAe,UAAO,MAAM,aAAU,cAAW,cAAW,cAAcC,GAAW,cAAcC,KACnI,GACA;CACA,IAAM,CAACC,GAASC,KAAcC,EAAgBC,GAAOC,KAAgBC,EAAQ,EAAE,EAAE,SAAS,IAAIC,CAAa,GACrGC,IAAQC,EAA8B,IAAI,GAC1CC,IAAMlC,EAAagC,GAAO,kBAAkB,GAAGP,EAAQ,GAAGK,EAAQ,OAAO,GAAGK,GAAM;CACxF,OACE,kBAACxC,GAAD;EACE,MAAM,MAA8B;GAElC,AADA,EAAM,UAAUkB,GACZ,OAAOwB,KAAQ,aAAYA,EAAIxB,CAAE,IAC5BwB,MAAK,EAAI,UAAUxB;EAC9B;EACA,OAAOY;EACP,gBAAgB,MAAeC,EAAW,OAAOY,CAAC,CAAC;EACnD,GAAKC,MAAa,KAAA,IAA2B,CAAC,IAAhB,EAAE,YAAS;EACzC,cAAYhB;EACZ,GAAKC,IAAQ,EAAE,cAAcA,EAAM,IAAI,CAAC;EACxC,WAAW3B,EACT,oEACAqB,EAAyB,KAAKiB,EAAK,CAAC,SACpCK,KAAa,eACbD,KAAY,cACZE,CACF;EAjBF,UAAA,CAmBE,kBAAC,QAAD;GACE,eAAA;GACA,WAAW5C,EAAG,qEAAqEqC,EAAI,WAAW,oBAAoB,CAACA,EAAI,SAAS,WAAW;GAC/I,OAAO;IAAE,WAAW,aAAaA,EAAI,EAAE,MAAMA,EAAI,EAAE;IAAM,OAAOA,EAAI;IAAG,QAAQA,EAAI;GAAE;EACtF,CAAA,GACAJ,EAAQ,KAAK,MAAM;GAClB,IAAMY,IAAWC,EAAE,QAAQ,CAACA,EAAE,OACxBC,IACJ,kBAAChD,EAAU,MAAX;IAEE,OAAO+C,EAAE;IACT,GAAKA,EAAE,WAAW,EAAE,UAAU,GAAK,IAAI,CAAC;IACxC,GAAKD,KAAYC,EAAE,gBAAgB,EAAE,cAAcA,EAAE,cAAc,IAAI,CAAC;IACxE,WAAW9C,EACT,+KACA,uFACAuB,EAAKe,IACLO,KAAYrB,EAAUc,IACtBK,KAAa,QACf;IAXF,UAAA,CAaGG,EAAE,QAAQ,kBAAC7C,GAAD;KAAM,MAAM6C,EAAE;KAAM,MAAK;IAAM,CAAA,GACzCA,EAAE,KACW;GAdT,GAAAA,EAAE,KAcO;GAElB,OAAOD,KAAYC,EAAE,gBACnB,kBAACG,GAAD;IAAuB,SAASH,EAAE;IAC/B,UAAAC;GACM,GAFKD,EAAE,KAEP,IAETC;EAEJ,CAAC,CACa;;AAEpB,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAU,cAAc"}
1
+ {"version":3,"file":"segmented-CErcoxwi.js","names":["BaseRadioGroup","BaseRadio","cn","Icon","observeResize","useIndicator","box","setBox","useState","animate","setAnimate","useEffect","raf","live","useLayoutEffect","root","container","measure","el","selector","b","stop","layout","KAESO_SEGMENTED_VARIANTS","KAESO_SEGMENTED_DEFAULT_VARIANTS","ITEM","ITEM_ICON","Segmented","ariaLabel","force","current","setCurrent","useControllable","value","defaultValue","options","onValueChange","track","useRef","ind","size","RadioGroup","ref","v","disabled","fullWidth","className","iconOnly","o","item","Radio","Tooltip"],"sources":["../../src/hooks/use-indicator.ts","../../src/components/segmented/segmented.tsx"],"sourcesContent":["import { useEffect, useLayoutEffect, useState, type RefObject } from \"react\";\nimport { observeResize } from \"../utils/observe-resize.js\";\n\nexport function useIndicator(\n container: RefObject<HTMLElement | null>,\n selector: string,\n layout: string,\n): { x: number; y: number; w: number; h: number; ready: boolean; animate: boolean } {\n const [box, setBox] = useState({ x: 0, y: 0, w: 0, h: 0, ready: false });\n const [animate, setAnimate] = useState(false);\n useEffect(() => {\n if (!box.ready || animate) return;\n let raf = 0;\n let live = true;\n void (document.fonts?.ready ?? Promise.resolve()).then(() => {\n if (live) raf = requestAnimationFrame(() => (raf = requestAnimationFrame(() => setAnimate(true))));\n });\n return () => {\n live = false;\n cancelAnimationFrame(raf);\n };\n }, [box.ready, animate]);\n useLayoutEffect(() => {\n const root = container.current;\n if (!root) return;\n const measure = () => {\n const el = root.querySelector<HTMLElement>(selector);\n if (!el) return setBox((b) => ({ ...b, ready: false }));\n setBox({ x: Math.round(el.offsetLeft), y: Math.round(el.offsetTop), w: Math.round(el.offsetWidth), h: Math.round(el.offsetHeight), ready: true });\n };\n measure();\n if (typeof ResizeObserver === \"undefined\") return;\n let live = true;\n const stop = observeResize([root, ...root.querySelectorAll(\":scope > *\")], measure);\n void document.fonts?.ready.then(() => {\n if (live) measure();\n });\n return () => {\n live = false;\n stop();\n };\n }, [container, selector, layout]);\n return { ...box, animate };\n}\n","import { forwardRef, useRef, type ReactNode } from \"react\";\nimport { RadioGroup as BaseRadioGroup } from \"@base-ui/react/radio-group\";\nimport { Radio as BaseRadio } from \"@base-ui/react/radio\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useControllable } from \"../../utils/use-controllable.js\";\nimport { useIndicator } from \"../../hooks/use-indicator.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\n\nexport const KAESO_SEGMENTED_VARIANTS = {\n size: {\n sm: { classes: \"h-32 p-2 gap-2\" },\n md: { classes: \"h-36 p-2 gap-2\" },\n },\n} as const;\nexport const KAESO_SEGMENTED_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nconst ITEM = { sm: \"h-28 px-10 text-body\", md: \"h-32 px-12 text-body\" } as const;\nconst ITEM_ICON = { sm: \"w-32 px-0\", md: \"w-36 px-0\" } as const;\n\nexport interface SegmentedOption {\n value: string;\n label?: ReactNode | undefined;\n icon?: IconData | undefined;\n \"aria-label\"?: string | undefined;\n disabled?: boolean | undefined;\n}\n\nexport interface SegmentedProps {\n options: SegmentedOption[];\n value?: string | undefined;\n defaultValue?: string | undefined;\n onValueChange?: ((value: string) => void) | undefined;\n size?: keyof typeof KAESO_SEGMENTED_VARIANTS.size | undefined;\n disabled?: boolean | undefined;\n fullWidth?: boolean | undefined;\n \"aria-label\": string;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport const Segmented = /* @__PURE__ */ forwardRef<HTMLDivElement, SegmentedProps>(function Segmented(\n { options, value, defaultValue, onValueChange, size = \"md\", disabled, fullWidth, className, \"aria-label\": ariaLabel, \"data-force\": force },\n ref,\n) {\n const [current, setCurrent] = useControllable(value, defaultValue ?? options[0]?.value ?? \"\", onValueChange);\n const track = useRef<HTMLDivElement | null>(null);\n const ind = useIndicator(track, \"[data-checked]\", `${current}|${options.length}|${size}`);\n return (\n <BaseRadioGroup\n ref={(el: HTMLDivElement | null) => {\n track.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n }}\n value={current}\n onValueChange={(v: unknown) => setCurrent(String(v))}\n {...(disabled !== undefined ? { disabled } : {})}\n aria-label={ariaLabel}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"relative isolate inline-flex items-center rounded-pill bg-fill-1\",\n KAESO_SEGMENTED_VARIANTS.size[size].classes,\n fullWidth && \"flex w-full\",\n disabled && \"opacity-40\",\n className,\n )}\n >\n <span\n aria-hidden\n className={cn(\"absolute top-0 left-0 -z-10 rounded-pill bg-raised shadow-segment\", ind.animate && \"indicator-motion\", !ind.ready && \"opacity-0\")}\n style={{ transform: `translate(${ind.x}px, ${ind.y}px)`, width: ind.w, height: ind.h }}\n />\n {options.map((o) => {\n const iconOnly = o.icon && !o.label;\n const item = (\n <BaseRadio.Root\n key={o.value}\n value={o.value}\n {...(o.disabled ? { disabled: true } : {})}\n {...(iconOnly && o[\"aria-label\"] ? { \"aria-label\": o[\"aria-label\"] } : {})}\n className={cn(\n \"relative inline-flex cursor-pointer items-center justify-center gap-6 rounded-pill font-medium whitespace-nowrap text-fg-secondary transition-control focus-ring tap-target\",\n \"hover:text-fg checked:text-fg disabled:cursor-not-allowed disabled:text-fg-disabled\",\n ITEM[size],\n iconOnly && ITEM_ICON[size],\n fullWidth && \"flex-1\",\n )}\n >\n {o.icon && <Icon icon={o.icon} size=\"sm\" />}\n {o.label}\n </BaseRadio.Root>\n );\n return iconOnly && o[\"aria-label\"] ? (\n <Tooltip key={o.value} content={o[\"aria-label\"]}>\n {item}\n </Tooltip>\n ) : (\n item\n );\n })}\n </BaseRadioGroup>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Segmented.displayName = \"Segmented\";\n"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import { i as e, o as t } from "./styles-CVJU9t9v.js";
3
- import { t as n } from "./cn-Isw2DnQX.js";
3
+ import { t as n } from "./cn-Dj6sRgkF.js";
4
4
  import { i as r } from "./dev-CR1p7gCm.js";
5
5
  import { n as ee, r as i } from "./portal-context-BBbzDKmY.js";
6
6
  import { i as a } from "./context-BELWW79w.js";
7
- import { t as o } from "./icon-D5uD_mnL.js";
8
- import { a as s, o as te, s as ne } from "./field-DfITT6Jm.js";
7
+ import { t as o } from "./icon-D7ja-_Yk.js";
8
+ import { a as s, o as te, s as ne } from "./field-TviMvYa2.js";
9
9
  import { n as c, t as l } from "./use-layout-width-CbSDbRb0.js";
10
10
  import { t as re } from "./option-checkbox-Df7WhGn4.js";
11
11
  import { Fragment as u, forwardRef as d, useCallback as f, useRef as p } from "react";
@@ -207,4 +207,4 @@ process.env.NODE_ENV !== "production" && (w.displayName = "Select");
207
207
  //#endregion
208
208
  export { b as n, w as r, x as t };
209
209
 
210
- //# sourceMappingURL=select-eFTHLeYG.js.map
210
+ //# sourceMappingURL=select-x4XVsdCI.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"select-eFTHLeYG.js","names":["Select","BaseSelect","__icon_ArrowDown01Icon","__icon_ArrowUp01Icon","__icon_Tick02Icon","MENU_ITEM","MENU_POPUP","cn","warnStylingClassName","pageBoundary","usePortalContainer","useUiText","Icon","useField","useFieldControl","withField","useLayoutWidth","anchorWidthStyle","OptionCheckbox","KAESO_SELECT_VARIANTS","KAESO_SELECT_DEFAULT_VARIANTS","changeWith","accepts","value","onChange","groupsOf","out","o","options","last","Select$1","placeholderProp","ariaLabel","force","props","className","t","placeholder","field","fc","trigger","useRef","triggerWidth","setTrigger","useCallback","el","ref","byValue","textOf","v","valueProps","control","Select","required","disabled","name","open","onOpenChange","id","invalid","error","size","appearance","fullWidth","label","description","icon","multiple","arr","first","ArrowDown01Icon","CSPProvider","ArrowUp01Icon","Fragment","gi","g","Tick02Icon"],"sources":["../../src/components/select/select.tsx"],"sourcesContent":["import { pageBoundary, usePortalContainer } from \"../../utils/portal-context.js\";\nimport { Fragment, forwardRef, useCallback, useRef, type ReactNode } from \"react\";\nimport { CSPProvider } from \"@base-ui/react/csp-provider\";\nimport { Select as BaseSelect } from \"@base-ui/react/select\";\nimport { cn } from \"../../utils/cn.js\";\nimport { warnStylingClassName } from \"../../utils/dev.js\";\nimport { useField, useFieldControl, withField, type FieldWrapProps } from \"../field/field.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { ArrowDown01Icon as __icon_ArrowDown01Icon, ArrowUp01Icon as __icon_ArrowUp01Icon, Tick02Icon as __icon_Tick02Icon } from \"@hugeicons/core-free-icons\";\nimport { MENU_ICON, MENU_ITEM, MENU_LABEL, MENU_POPUP, MENU_SEPARATOR } from \"../menu/styles.js\";\nimport { anchorWidthStyle, useLayoutWidth } from \"../../hooks/use-layout-width.js\";\nimport { useUiText } from \"../../i18n/context.js\";\nimport { OptionCheckbox } from \"./option-checkbox.js\";\n\nexport const KAESO_SELECT_VARIANTS = {\n appearance: {\n default: { classes: \"material-selector\" },\n ghost: {\n classes: \"material-ghost focus-ring text-fg-secondary hover:text-fg open:text-fg\",\n },\n header: { classes: \"material-ghost focus-ring text-fg\" },\n },\n size: {\n sm: { classes: \"h-32 pl-12 pr-10 gap-6 text-body\" },\n md: { classes: \"h-36 pl-16 pr-12 gap-8 text-body\" },\n lg: { classes: \"h-40 pl-18 pr-14 gap-8 text-body\" },\n xl: { classes: \"h-48 pl-22 pr-18 gap-8 text-body-lg\" },\n },\n} as const;\nexport const KAESO_SELECT_DEFAULT_VARIANTS = { appearance: \"default\", size: \"md\" } as const;\n\nexport interface SelectOption {\n value: string;\n label: ReactNode;\n textValue?: string | undefined;\n description?: ReactNode | undefined;\n icon?: IconData | undefined;\n group?: string | undefined;\n disabled?: boolean | undefined;\n}\n\ninterface BaseProps extends FieldWrapProps {\n options: SelectOption[];\n placeholder?: ReactNode | undefined;\n size?: keyof typeof KAESO_SELECT_VARIANTS.size | undefined;\n appearance?: keyof typeof KAESO_SELECT_VARIANTS.appearance | undefined;\n disabled?: boolean | undefined;\n name?: string | undefined;\n id?: string | undefined;\n open?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n invalid?: boolean | undefined;\n icon?: IconData | undefined;\n fullWidth?: boolean | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\nexport interface SingleSelectProps extends BaseProps {\n multiple?: false | undefined;\n value?: string | null | undefined;\n defaultValue?: string | null | undefined;\n onValueChange?: ((value: string) => void) | undefined;\n}\nexport interface MultiSelectProps extends BaseProps {\n multiple: true;\n value?: string[] | undefined;\n defaultValue?: string[] | undefined;\n onValueChange?: ((value: string[]) => void) | undefined;\n}\nexport type SelectProps = SingleSelectProps | MultiSelectProps;\n\nfunction changeWith<T extends string | string[]>(onChange: (value: T) => void, accepts: (value: unknown) => value is T) {\n return (value: unknown) => {\n if (accepts(value)) onChange(value);\n };\n}\n\nfunction groupsOf(options: SelectOption[]) {\n const out: { group: string | undefined; items: SelectOption[] }[] = [];\n for (const o of options) {\n const last = out[out.length - 1];\n if (last && last.group === o.group) last.items.push(o);\n else out.push({ group: o.group, items: [o] });\n }\n return out;\n}\n\nexport const Select = /* @__PURE__ */ forwardRef<HTMLButtonElement, SelectProps>(function Select(props, ref) {\n const {\n options,\n placeholder: placeholderProp,\n size = \"md\",\n appearance = \"default\",\n disabled,\n name,\n id,\n open,\n onOpenChange,\n invalid,\n icon,\n fullWidth,\n label,\n description,\n error,\n optional,\n required,\n layout,\n className,\n multiple,\n \"aria-label\": ariaLabel,\n \"data-force\": force,\n } = props;\n warnStylingClassName(\"Select\", className);\n const t = useUiText();\n const placeholder = placeholderProp ?? t(\"select.placeholder\", \"Select\");\n const field = useField();\n const fc = useFieldControl(props);\n const trigger = useRef<HTMLButtonElement | null>(null);\n const triggerWidth = useLayoutWidth(trigger);\n const setTrigger = useCallback(\n (el: HTMLButtonElement | null) => {\n trigger.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n },\n [ref],\n );\n const byValue = new Map(options.map((o) => [o.value, o]));\n const textOf = (v: string) => {\n const o = byValue.get(v);\n return o?.textValue ?? (typeof o?.label === \"string\" ? o.label : v);\n };\n const valueProps: Pick<BaseSelect.Root.Props<string, boolean>, \"multiple\" | \"value\" | \"defaultValue\" | \"onValueChange\"> = props.multiple\n ? {\n multiple: true,\n ...(props.value !== undefined ? { value: props.value } : {}),\n ...(props.defaultValue !== undefined ? { defaultValue: props.defaultValue } : {}),\n ...(props.onValueChange ? { onValueChange: changeWith(props.onValueChange, Array.isArray) } : {}),\n }\n : {\n ...(props.value !== undefined ? { value: props.value } : {}),\n ...(props.defaultValue !== undefined ? { defaultValue: props.defaultValue } : {}),\n ...(props.onValueChange ? { onValueChange: changeWith(props.onValueChange, (v) => typeof v === \"string\") } : {}),\n };\n const control = (\n <BaseSelect.Root\n {...valueProps}\n {...((field?.required ?? required) ? { required: true } : {})}\n {...(disabled !== undefined ? { disabled } : {})}\n {...(name ? { name } : {})}\n {...(open !== undefined ? { open } : {})}\n {...(onOpenChange ? { onOpenChange: (o: boolean) => onOpenChange(o) } : {})}\n itemToStringLabel={(v: unknown) => textOf(String(v))}\n modal={false}\n >\n <BaseSelect.Trigger\n ref={setTrigger}\n {...(id ? { id } : {})}\n {...fc.controlProps}\n {...(ariaLabel ? { \"aria-label\": ariaLabel } : {})}\n {...(invalid || error ? { \"aria-invalid\": true } : {})}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"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 || error) && appearance !== \"default\" && \"ring-invalid\",\n fullWidth && \"w-full\",\n !(label || description || error) && className,\n )}\n >\n {icon && <Icon icon={icon} size=\"sm\" className=\"text-fg-secondary\" />}\n <BaseSelect.Value\n className=\"min-w-0 flex-1 truncate text-left data-placeholder:text-fg-tertiary data-placeholder:font-regular\"\n placeholder={placeholder}\n >\n {(value: unknown) => {\n if (multiple) {\n const arr = Array.isArray(value) ? value.map(String) : [];\n const [first] = arr;\n if (first === undefined) return placeholder;\n return arr.length === 1 ? textOf(first) : t(\"select.firstAndMore\", \"{first} +{count}\", { first: textOf(first), count: String(arr.length - 1) });\n }\n return value == null || value === \"\" ? placeholder : (byValue.get(String(value))?.label ?? String(value));\n }}\n </BaseSelect.Value>\n <BaseSelect.Icon className=\"flex shrink-0 text-fg-tertiary\">\n <Icon icon={__icon_ArrowDown01Icon} size=\"sm\" />\n </BaseSelect.Icon>\n </BaseSelect.Trigger>\n <CSPProvider disableStyleElements>\n <BaseSelect.Portal container={usePortalContainer()}>\n <BaseSelect.Positioner\n positionMethod=\"fixed\"\n collisionBoundary={pageBoundary()}\n alignItemWithTrigger={false}\n align=\"start\"\n sideOffset={6}\n collisionPadding={8}\n className=\"z-50 outline-none\"\n >\n <BaseSelect.Popup className={cn(MENU_POPUP, \"min-w-anchor overflow-hidden\")} style={anchorWidthStyle(triggerWidth)}>\n <BaseSelect.ScrollUpArrow className=\"flex h-20 items-center justify-center text-fg-tertiary\">\n <Icon icon={__icon_ArrowUp01Icon} size=\"xs\" />\n </BaseSelect.ScrollUpArrow>\n <BaseSelect.List className=\"-mx-6 flex min-h-0 flex-col overflow-y-auto overscroll-contain px-6 outline-none scrollbar-quiet\">\n {groupsOf(options).map((g, gi) => (\n <Fragment key={g.group ?? `g${gi}`}>\n {gi > 0 && <div role=\"presentation\" className={MENU_SEPARATOR} />}\n <BaseSelect.Group className=\"flex flex-col\">\n {g.group && <BaseSelect.GroupLabel className={MENU_LABEL}>{g.group}</BaseSelect.GroupLabel>}\n {g.items.map((o) => (\n <BaseSelect.Item\n key={o.value}\n value={o.value}\n {...(o.disabled ? { disabled: true } : {})}\n label={o.textValue ?? (typeof o.label === \"string\" ? o.label : o.value)}\n className={cn(MENU_ITEM, \"group/opt\")}\n >\n {multiple && (\n <span className=\"pointer-events-none flex\">\n <OptionCheckbox />\n </span>\n )}\n {o.icon && <Icon icon={o.icon} size=\"sm\" className={cn(MENU_ICON, o.description && \"self-start mt-10\")} />}\n <span className={cn(\"flex min-w-0 flex-1 flex-col\", o.description && \"gap-2 py-8\")}>\n <BaseSelect.ItemText className=\"truncate\">{o.label}</BaseSelect.ItemText>\n {o.description && <span className=\"text-small font-regular whitespace-normal text-fg-secondary\">{o.description}</span>}\n </span>\n {!multiple && (\n <BaseSelect.ItemIndicator\n keepMounted\n className={cn(\n \"flex size-16 shrink-0 items-center justify-center text-fg opacity-0 data-selected:opacity-100\",\n o.description && \"self-start mt-10\",\n )}\n >\n <Icon icon={__icon_Tick02Icon} size=\"sm\" />\n </BaseSelect.ItemIndicator>\n )}\n </BaseSelect.Item>\n ))}\n </BaseSelect.Group>\n </Fragment>\n ))}\n </BaseSelect.List>\n <BaseSelect.ScrollDownArrow className=\"flex h-20 items-center justify-center text-fg-tertiary\">\n <Icon icon={__icon_ArrowDown01Icon} size=\"xs\" />\n </BaseSelect.ScrollDownArrow>\n </BaseSelect.Popup>\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n </CSPProvider>\n </BaseSelect.Root>\n );\n if (field) return control;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId ?? id, disabled, className }, control);\n});\nif (process.env.NODE_ENV !== \"production\") Select.displayName = \"Select\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"select-x4XVsdCI.js","names":["Select","BaseSelect","__icon_ArrowDown01Icon","__icon_ArrowUp01Icon","__icon_Tick02Icon","MENU_ITEM","MENU_POPUP","cn","warnStylingClassName","pageBoundary","usePortalContainer","useUiText","Icon","useField","useFieldControl","withField","useLayoutWidth","anchorWidthStyle","OptionCheckbox","KAESO_SELECT_VARIANTS","KAESO_SELECT_DEFAULT_VARIANTS","changeWith","accepts","value","onChange","groupsOf","out","o","options","last","Select$1","placeholderProp","ariaLabel","force","props","className","t","placeholder","field","fc","trigger","useRef","triggerWidth","setTrigger","useCallback","el","ref","byValue","textOf","v","valueProps","control","Select","required","disabled","name","open","onOpenChange","id","invalid","error","size","appearance","fullWidth","label","description","icon","multiple","arr","first","ArrowDown01Icon","CSPProvider","ArrowUp01Icon","Fragment","gi","g","Tick02Icon"],"sources":["../../src/components/select/select.tsx"],"sourcesContent":["import { pageBoundary, usePortalContainer } from \"../../utils/portal-context.js\";\nimport { Fragment, forwardRef, useCallback, useRef, type ReactNode } from \"react\";\nimport { CSPProvider } from \"@base-ui/react/csp-provider\";\nimport { Select as BaseSelect } from \"@base-ui/react/select\";\nimport { cn } from \"../../utils/cn.js\";\nimport { warnStylingClassName } from \"../../utils/dev.js\";\nimport { useField, useFieldControl, withField, type FieldWrapProps } from \"../field/field.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { ArrowDown01Icon as __icon_ArrowDown01Icon, ArrowUp01Icon as __icon_ArrowUp01Icon, Tick02Icon as __icon_Tick02Icon } from \"@hugeicons/core-free-icons\";\nimport { MENU_ICON, MENU_ITEM, MENU_LABEL, MENU_POPUP, MENU_SEPARATOR } from \"../menu/styles.js\";\nimport { anchorWidthStyle, useLayoutWidth } from \"../../hooks/use-layout-width.js\";\nimport { useUiText } from \"../../i18n/context.js\";\nimport { OptionCheckbox } from \"./option-checkbox.js\";\n\nexport const KAESO_SELECT_VARIANTS = {\n appearance: {\n default: { classes: \"material-selector\" },\n ghost: {\n classes: \"material-ghost focus-ring text-fg-secondary hover:text-fg open:text-fg\",\n },\n header: { classes: \"material-ghost focus-ring text-fg\" },\n },\n size: {\n sm: { classes: \"h-32 pl-12 pr-10 gap-6 text-body\" },\n md: { classes: \"h-36 pl-16 pr-12 gap-8 text-body\" },\n lg: { classes: \"h-40 pl-18 pr-14 gap-8 text-body\" },\n xl: { classes: \"h-48 pl-22 pr-18 gap-8 text-body-lg\" },\n },\n} as const;\nexport const KAESO_SELECT_DEFAULT_VARIANTS = { appearance: \"default\", size: \"md\" } as const;\n\nexport interface SelectOption {\n value: string;\n label: ReactNode;\n textValue?: string | undefined;\n description?: ReactNode | undefined;\n icon?: IconData | undefined;\n group?: string | undefined;\n disabled?: boolean | undefined;\n}\n\ninterface BaseProps extends FieldWrapProps {\n options: SelectOption[];\n placeholder?: ReactNode | undefined;\n size?: keyof typeof KAESO_SELECT_VARIANTS.size | undefined;\n appearance?: keyof typeof KAESO_SELECT_VARIANTS.appearance | undefined;\n disabled?: boolean | undefined;\n name?: string | undefined;\n id?: string | undefined;\n open?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n invalid?: boolean | undefined;\n icon?: IconData | undefined;\n fullWidth?: boolean | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\nexport interface SingleSelectProps extends BaseProps {\n multiple?: false | undefined;\n value?: string | null | undefined;\n defaultValue?: string | null | undefined;\n onValueChange?: ((value: string) => void) | undefined;\n}\nexport interface MultiSelectProps extends BaseProps {\n multiple: true;\n value?: string[] | undefined;\n defaultValue?: string[] | undefined;\n onValueChange?: ((value: string[]) => void) | undefined;\n}\nexport type SelectProps = SingleSelectProps | MultiSelectProps;\n\nfunction changeWith<T extends string | string[]>(onChange: (value: T) => void, accepts: (value: unknown) => value is T) {\n return (value: unknown) => {\n if (accepts(value)) onChange(value);\n };\n}\n\nfunction groupsOf(options: SelectOption[]) {\n const out: { group: string | undefined; items: SelectOption[] }[] = [];\n for (const o of options) {\n const last = out[out.length - 1];\n if (last && last.group === o.group) last.items.push(o);\n else out.push({ group: o.group, items: [o] });\n }\n return out;\n}\n\nexport const Select = /* @__PURE__ */ forwardRef<HTMLButtonElement, SelectProps>(function Select(props, ref) {\n const {\n options,\n placeholder: placeholderProp,\n size = \"md\",\n appearance = \"default\",\n disabled,\n name,\n id,\n open,\n onOpenChange,\n invalid,\n icon,\n fullWidth,\n label,\n description,\n error,\n optional,\n required,\n layout,\n className,\n multiple,\n \"aria-label\": ariaLabel,\n \"data-force\": force,\n } = props;\n warnStylingClassName(\"Select\", className);\n const t = useUiText();\n const placeholder = placeholderProp ?? t(\"select.placeholder\", \"Select\");\n const field = useField();\n const fc = useFieldControl(props);\n const trigger = useRef<HTMLButtonElement | null>(null);\n const triggerWidth = useLayoutWidth(trigger);\n const setTrigger = useCallback(\n (el: HTMLButtonElement | null) => {\n trigger.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n },\n [ref],\n );\n const byValue = new Map(options.map((o) => [o.value, o]));\n const textOf = (v: string) => {\n const o = byValue.get(v);\n return o?.textValue ?? (typeof o?.label === \"string\" ? o.label : v);\n };\n const valueProps: Pick<BaseSelect.Root.Props<string, boolean>, \"multiple\" | \"value\" | \"defaultValue\" | \"onValueChange\"> = props.multiple\n ? {\n multiple: true,\n ...(props.value !== undefined ? { value: props.value } : {}),\n ...(props.defaultValue !== undefined ? { defaultValue: props.defaultValue } : {}),\n ...(props.onValueChange ? { onValueChange: changeWith(props.onValueChange, Array.isArray) } : {}),\n }\n : {\n ...(props.value !== undefined ? { value: props.value } : {}),\n ...(props.defaultValue !== undefined ? { defaultValue: props.defaultValue } : {}),\n ...(props.onValueChange ? { onValueChange: changeWith(props.onValueChange, (v) => typeof v === \"string\") } : {}),\n };\n const control = (\n <BaseSelect.Root\n {...valueProps}\n {...((field?.required ?? required) ? { required: true } : {})}\n {...(disabled !== undefined ? { disabled } : {})}\n {...(name ? { name } : {})}\n {...(open !== undefined ? { open } : {})}\n {...(onOpenChange ? { onOpenChange: (o: boolean) => onOpenChange(o) } : {})}\n itemToStringLabel={(v: unknown) => textOf(String(v))}\n modal={false}\n >\n <BaseSelect.Trigger\n ref={setTrigger}\n {...(id ? { id } : {})}\n {...fc.controlProps}\n {...(ariaLabel ? { \"aria-label\": ariaLabel } : {})}\n {...(invalid || error ? { \"aria-invalid\": true } : {})}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"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 || error) && appearance !== \"default\" && \"ring-invalid\",\n fullWidth && \"w-full\",\n !(label || description || error) && className,\n )}\n >\n {icon && <Icon icon={icon} size=\"sm\" className=\"text-fg-secondary\" />}\n <BaseSelect.Value\n className=\"min-w-0 flex-1 truncate text-left data-placeholder:text-fg-tertiary data-placeholder:font-regular\"\n placeholder={placeholder}\n >\n {(value: unknown) => {\n if (multiple) {\n const arr = Array.isArray(value) ? value.map(String) : [];\n const [first] = arr;\n if (first === undefined) return placeholder;\n return arr.length === 1 ? textOf(first) : t(\"select.firstAndMore\", \"{first} +{count}\", { first: textOf(first), count: String(arr.length - 1) });\n }\n return value == null || value === \"\" ? placeholder : (byValue.get(String(value))?.label ?? String(value));\n }}\n </BaseSelect.Value>\n <BaseSelect.Icon className=\"flex shrink-0 text-fg-tertiary\">\n <Icon icon={__icon_ArrowDown01Icon} size=\"sm\" />\n </BaseSelect.Icon>\n </BaseSelect.Trigger>\n <CSPProvider disableStyleElements>\n <BaseSelect.Portal container={usePortalContainer()}>\n <BaseSelect.Positioner\n positionMethod=\"fixed\"\n collisionBoundary={pageBoundary()}\n alignItemWithTrigger={false}\n align=\"start\"\n sideOffset={6}\n collisionPadding={8}\n className=\"z-50 outline-none\"\n >\n <BaseSelect.Popup className={cn(MENU_POPUP, \"min-w-anchor overflow-hidden\")} style={anchorWidthStyle(triggerWidth)}>\n <BaseSelect.ScrollUpArrow className=\"flex h-20 items-center justify-center text-fg-tertiary\">\n <Icon icon={__icon_ArrowUp01Icon} size=\"xs\" />\n </BaseSelect.ScrollUpArrow>\n <BaseSelect.List className=\"-mx-6 flex min-h-0 flex-col overflow-y-auto overscroll-contain px-6 outline-none scrollbar-quiet\">\n {groupsOf(options).map((g, gi) => (\n <Fragment key={g.group ?? `g${gi}`}>\n {gi > 0 && <div role=\"presentation\" className={MENU_SEPARATOR} />}\n <BaseSelect.Group className=\"flex flex-col\">\n {g.group && <BaseSelect.GroupLabel className={MENU_LABEL}>{g.group}</BaseSelect.GroupLabel>}\n {g.items.map((o) => (\n <BaseSelect.Item\n key={o.value}\n value={o.value}\n {...(o.disabled ? { disabled: true } : {})}\n label={o.textValue ?? (typeof o.label === \"string\" ? o.label : o.value)}\n className={cn(MENU_ITEM, \"group/opt\")}\n >\n {multiple && (\n <span className=\"pointer-events-none flex\">\n <OptionCheckbox />\n </span>\n )}\n {o.icon && <Icon icon={o.icon} size=\"sm\" className={cn(MENU_ICON, o.description && \"self-start mt-10\")} />}\n <span className={cn(\"flex min-w-0 flex-1 flex-col\", o.description && \"gap-2 py-8\")}>\n <BaseSelect.ItemText className=\"truncate\">{o.label}</BaseSelect.ItemText>\n {o.description && <span className=\"text-small font-regular whitespace-normal text-fg-secondary\">{o.description}</span>}\n </span>\n {!multiple && (\n <BaseSelect.ItemIndicator\n keepMounted\n className={cn(\n \"flex size-16 shrink-0 items-center justify-center text-fg opacity-0 data-selected:opacity-100\",\n o.description && \"self-start mt-10\",\n )}\n >\n <Icon icon={__icon_Tick02Icon} size=\"sm\" />\n </BaseSelect.ItemIndicator>\n )}\n </BaseSelect.Item>\n ))}\n </BaseSelect.Group>\n </Fragment>\n ))}\n </BaseSelect.List>\n <BaseSelect.ScrollDownArrow className=\"flex h-20 items-center justify-center text-fg-tertiary\">\n <Icon icon={__icon_ArrowDown01Icon} size=\"xs\" />\n </BaseSelect.ScrollDownArrow>\n </BaseSelect.Popup>\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n </CSPProvider>\n </BaseSelect.Root>\n );\n if (field) return control;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId ?? id, disabled, className }, control);\n});\nif (process.env.NODE_ENV !== \"production\") Select.displayName = \"Select\";\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { t as e } from "./cn-Isw2DnQX.js";
2
+ import { t as e } from "./cn-Dj6sRgkF.js";
3
3
  import { forwardRef as t } from "react";
4
4
  import { jsx as n, jsxs as r } from "react/jsx-runtime";
5
5
  //#region src/components/separator/separator.tsx
@@ -42,4 +42,4 @@ process.env.NODE_ENV !== "production" && (o.displayName = "Separator");
42
42
  //#endregion
43
43
  export { i as n, o as r, a as t };
44
44
 
45
- //# sourceMappingURL=separator-D86IW7Ge.js.map
45
+ //# sourceMappingURL=separator-D7TzNHmX.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"separator-D86IW7Ge.js","names":["cn","KAESO_SEPARATOR_VARIANTS","KAESO_SEPARATOR_DEFAULT_VARIANTS","Separator","props","label","orientation","className","tone"],"sources":["../../src/components/separator/separator.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\n\nexport const KAESO_SEPARATOR_VARIANTS = {\n orientation: {\n horizontal: { classes: \"h-1 w-full\" },\n vertical: { classes: \"w-1 self-stretch\" },\n },\n tone: {\n subtle: { classes: \"bg-line-subtle\" },\n default: { classes: \"bg-line\" },\n },\n} as const;\nexport const KAESO_SEPARATOR_DEFAULT_VARIANTS = { orientation: \"horizontal\", tone: \"subtle\" } as const;\n\nexport interface SeparatorProps extends HTMLAttributes<HTMLDivElement> {\n orientation?: keyof typeof KAESO_SEPARATOR_VARIANTS.orientation | undefined;\n tone?: keyof typeof KAESO_SEPARATOR_VARIANTS.tone | undefined;\n label?: ReactNode | undefined;\n}\n\nexport const Separator = /* @__PURE__ */ forwardRef<HTMLDivElement, SeparatorProps>(function Separator(\n { orientation = \"horizontal\", tone = \"subtle\", label, className, ...props },\n ref,\n) {\n if (label && orientation === \"horizontal\") {\n return (\n <div ref={ref} role=\"separator\" aria-orientation=\"horizontal\" className={cn(\"flex w-full items-center gap-12\", className)} {...props}>\n <span className={cn(\"h-1 flex-1\", KAESO_SEPARATOR_VARIANTS.tone[tone].classes)} />\n <span className=\"text-caption font-medium text-fg-tertiary\">{label}</span>\n <span className={cn(\"h-1 flex-1\", KAESO_SEPARATOR_VARIANTS.tone[tone].classes)} />\n </div>\n );\n }\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n className={cn(\"shrink-0\", KAESO_SEPARATOR_VARIANTS.orientation[orientation].classes, KAESO_SEPARATOR_VARIANTS.tone[tone].classes, className)}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Separator.displayName = \"Separator\";\n"],"mappings":";;;;;AAGA,IAAaC,IAA2B;CACtC,aAAa;EACX,YAAY,EAAE,SAAS,aAAa;EACpC,UAAU,EAAE,SAAS,mBAAmB;CAC1C;CACA,MAAM;EACJ,QAAQ,EAAE,SAAS,iBAAiB;EACpC,SAAS,EAAE,SAAS,UAAU;CAChC;AACF,GACaC,IAAmC;CAAE,aAAa;CAAc,MAAM;AAAS,GAQ/EC,IAA4B,kBAA2C,SAClF,EAAE,iBAAc,cAAc,UAAO,UAAU,UAAO,cAAW,GAAGC,KACpE,GACA;CAUA,OATIC,KAASC,MAAgB,eAEzB,kBAAC,OAAD;EAAU;EAAK,MAAK;EAAY,oBAAiB;EAAa,WAAWN,EAAG,mCAAmCO,CAAS;EAAG,GAAIH;EAA/H,UAAA;GACE,kBAAC,QAAD,EAAM,WAAWJ,EAAG,cAAcC,EAAyB,KAAKO,EAAK,CAAC,OAAO,EAAI,CAAA;GACjF,kBAAC,QAAD;IAAM,WAAU;IAA6C,UAAAH;GAAY,CAAA;GACzE,kBAAC,QAAD,EAAM,WAAWL,EAAG,cAAcC,EAAyB,KAAKO,EAAK,CAAC,OAAO,EAAI,CAAA;EAC9E;C,KAIP,kBAAC,OAAD;EACO;EACL,MAAK;EACL,oBAAkBF;EAClB,WAAWN,EAAG,YAAYC,EAAyB,YAAYK,EAAY,CAAC,SAASL,EAAyB,KAAKO,EAAK,CAAC,SAASD,CAAS;EAC3I,GAAIH;CACL,CAAA;AAEL,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAU,cAAc"}
1
+ {"version":3,"file":"separator-D7TzNHmX.js","names":["cn","KAESO_SEPARATOR_VARIANTS","KAESO_SEPARATOR_DEFAULT_VARIANTS","Separator","props","label","orientation","className","tone"],"sources":["../../src/components/separator/separator.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\n\nexport const KAESO_SEPARATOR_VARIANTS = {\n orientation: {\n horizontal: { classes: \"h-1 w-full\" },\n vertical: { classes: \"w-1 self-stretch\" },\n },\n tone: {\n subtle: { classes: \"bg-line-subtle\" },\n default: { classes: \"bg-line\" },\n },\n} as const;\nexport const KAESO_SEPARATOR_DEFAULT_VARIANTS = { orientation: \"horizontal\", tone: \"subtle\" } as const;\n\nexport interface SeparatorProps extends HTMLAttributes<HTMLDivElement> {\n orientation?: keyof typeof KAESO_SEPARATOR_VARIANTS.orientation | undefined;\n tone?: keyof typeof KAESO_SEPARATOR_VARIANTS.tone | undefined;\n label?: ReactNode | undefined;\n}\n\nexport const Separator = /* @__PURE__ */ forwardRef<HTMLDivElement, SeparatorProps>(function Separator(\n { orientation = \"horizontal\", tone = \"subtle\", label, className, ...props },\n ref,\n) {\n if (label && orientation === \"horizontal\") {\n return (\n <div ref={ref} role=\"separator\" aria-orientation=\"horizontal\" className={cn(\"flex w-full items-center gap-12\", className)} {...props}>\n <span className={cn(\"h-1 flex-1\", KAESO_SEPARATOR_VARIANTS.tone[tone].classes)} />\n <span className=\"text-caption font-medium text-fg-tertiary\">{label}</span>\n <span className={cn(\"h-1 flex-1\", KAESO_SEPARATOR_VARIANTS.tone[tone].classes)} />\n </div>\n );\n }\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n className={cn(\"shrink-0\", KAESO_SEPARATOR_VARIANTS.orientation[orientation].classes, KAESO_SEPARATOR_VARIANTS.tone[tone].classes, className)}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Separator.displayName = \"Separator\";\n"],"mappings":";;;;;AAGA,IAAaC,IAA2B;CACtC,aAAa;EACX,YAAY,EAAE,SAAS,aAAa;EACpC,UAAU,EAAE,SAAS,mBAAmB;CAC1C;CACA,MAAM;EACJ,QAAQ,EAAE,SAAS,iBAAiB;EACpC,SAAS,EAAE,SAAS,UAAU;CAChC;AACF,GACaC,IAAmC;CAAE,aAAa;CAAc,MAAM;AAAS,GAQ/EC,IAA4B,kBAA2C,SAClF,EAAE,iBAAc,cAAc,UAAO,UAAU,UAAO,cAAW,GAAGC,KACpE,GACA;CAUA,OATIC,KAASC,MAAgB,eAEzB,kBAAC,OAAD;EAAU;EAAK,MAAK;EAAY,oBAAiB;EAAa,WAAWN,EAAG,mCAAmCO,CAAS;EAAG,GAAIH;EAA/H,UAAA;GACE,kBAAC,QAAD,EAAM,WAAWJ,EAAG,cAAcC,EAAyB,KAAKO,EAAK,CAAC,OAAO,EAAI,CAAA;GACjF,kBAAC,QAAD;IAAM,WAAU;IAA6C,UAAAH;GAAY,CAAA;GACzE,kBAAC,QAAD,EAAM,WAAWL,EAAG,cAAcC,EAAyB,KAAKO,EAAK,CAAC,OAAO,EAAI,CAAA;EAC9E;C,KAIP,kBAAC,OAAD;EACO;EACL,MAAK;EACL,oBAAkBF;EAClB,WAAWN,EAAG,YAAYC,EAAyB,YAAYK,EAAY,CAAC,SAASL,EAAyB,KAAKO,EAAK,CAAC,SAASD,CAAS;EAC3I,GAAIH;CACL,CAAA;AAEL,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAU,cAAc"}