@cloudflare/kumo 1.15.0 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/CHANGELOG.md +144 -0
  2. package/ai/USAGE.md +3 -1
  3. package/ai/component-registry.json +511 -66
  4. package/ai/component-registry.md +776 -59
  5. package/ai/schemas.ts +33 -7
  6. package/dist/.build-complete +1 -1
  7. package/dist/ai/schemas.d.ts +158 -39
  8. package/dist/ai/schemas.d.ts.map +1 -1
  9. package/dist/ai/schemas.js +456 -418
  10. package/dist/ai/schemas.js.map +1 -1
  11. package/dist/chunks/{Legend-mkh1v83sz972e29d.js → Legend-o0ntojbaplmszwk0.js} +115 -101
  12. package/dist/chunks/Legend-o0ntojbaplmszwk0.js.map +1 -0
  13. package/dist/chunks/badge-n80t3z8u9ttlxi20.js +120 -0
  14. package/dist/chunks/badge-n80t3z8u9ttlxi20.js.map +1 -0
  15. package/dist/chunks/banner-nz0eryqnz3qd86ln.js +79 -0
  16. package/dist/chunks/banner-nz0eryqnz3qd86ln.js.map +1 -0
  17. package/dist/chunks/{breadcrumbs-m79gm4gjwbfajpna.js → breadcrumbs-cjgn3w4drahvqnuj.js} +3 -3
  18. package/dist/chunks/{breadcrumbs-m79gm4gjwbfajpna.js.map → breadcrumbs-cjgn3w4drahvqnuj.js.map} +1 -1
  19. package/dist/chunks/{button-j0hi0afn33w9lxgi.js → button-odxi0hp4fvi5i2w3.js} +50 -48
  20. package/dist/chunks/button-odxi0hp4fvi5i2w3.js.map +1 -0
  21. package/dist/chunks/{checkbox-bvzuggmadtqawis4.js → checkbox-dx8x0rzv582yjv7n.js} +38 -47
  22. package/dist/chunks/{checkbox-bvzuggmadtqawis4.js.map → checkbox-dx8x0rzv582yjv7n.js.map} +1 -1
  23. package/dist/chunks/{clipboard-text-mwcknzn75qdvigrd.js → clipboard-text-kyk51d1ze7zvdn4q.js} +55 -54
  24. package/dist/chunks/clipboard-text-kyk51d1ze7zvdn4q.js.map +1 -0
  25. package/dist/chunks/{combobox-ndbaroqh1c0u49ye.js → combobox-9fhjzprab46csmon.js} +97 -82
  26. package/dist/chunks/combobox-9fhjzprab46csmon.js.map +1 -0
  27. package/dist/chunks/{command-palette-ejoszjfivybu9yi5.js → command-palette-kenx2bbdzd4kpx36.js} +158 -154
  28. package/dist/chunks/command-palette-kenx2bbdzd4kpx36.js.map +1 -0
  29. package/dist/chunks/{dialog-gkmecnx48ge38jrr.js → dialog-e05ysa8t2fklw065.js} +22 -20
  30. package/dist/chunks/dialog-e05ysa8t2fklw065.js.map +1 -0
  31. package/dist/chunks/{dropdown-i8n7nv3cvkvb1x3e.js → dropdown-g587px7zv3ssaxr4.js} +96 -90
  32. package/dist/chunks/dropdown-g587px7zv3ssaxr4.js.map +1 -0
  33. package/dist/chunks/{empty-hrwtammqp0b2nvtf.js → empty-fuz1un7r7mbz0kim.js} +2 -2
  34. package/dist/chunks/{empty-hrwtammqp0b2nvtf.js.map → empty-fuz1un7r7mbz0kim.js.map} +1 -1
  35. package/dist/chunks/{field-lweivfadxgpqhuqi.js → field-fq504lyu7ttsh5m9.js} +3 -3
  36. package/dist/chunks/{field-lweivfadxgpqhuqi.js.map → field-fq504lyu7ttsh5m9.js.map} +1 -1
  37. package/dist/chunks/hcl-hcu7d6ja6t540ijn.js +8 -0
  38. package/dist/chunks/hcl-hcu7d6ja6t540ijn.js.map +1 -0
  39. package/dist/chunks/{input-area-obli4ufvu40bfpgp.js → input-area-nq40szg9110on89c.js} +4 -4
  40. package/dist/chunks/{input-area-obli4ufvu40bfpgp.js.map → input-area-nq40szg9110on89c.js.map} +1 -1
  41. package/dist/chunks/{input-group-dwtsd04lzf2bcsdo.js → input-group-hbebbyh8fo6aqydn.js} +3 -3
  42. package/dist/chunks/{input-group-dwtsd04lzf2bcsdo.js.map → input-group-hbebbyh8fo6aqydn.js.map} +1 -1
  43. package/dist/chunks/{input-ko2dne1givlxq7sz.js → input-kvhyo3p4859bexvx.js} +4 -4
  44. package/dist/chunks/input-kvhyo3p4859bexvx.js.map +1 -0
  45. package/dist/chunks/{label-kjahhybc191quieo.js → label-j9owppbgnn35mebg.js} +3 -3
  46. package/dist/chunks/{label-kjahhybc191quieo.js.map → label-j9owppbgnn35mebg.js.map} +1 -1
  47. package/dist/chunks/{layer-card-mu2w82x6ko1nhhtr.js → layer-card-l5yjvrxry1dhte57.js} +8 -8
  48. package/dist/chunks/{layer-card-mu2w82x6ko1nhhtr.js.map → layer-card-l5yjvrxry1dhte57.js.map} +1 -1
  49. package/dist/chunks/{link-lpzl5s47pmobk361.js → link-hmmf3k1xn6rm72rt.js} +2 -2
  50. package/dist/chunks/{link-lpzl5s47pmobk361.js.map → link-hmmf3k1xn6rm72rt.js.map} +1 -1
  51. package/dist/chunks/{menubar-ifxxdoa35zz79z1q.js → menubar-abojnm0uwjuni8ok.js} +20 -20
  52. package/dist/chunks/menubar-abojnm0uwjuni8ok.js.map +1 -0
  53. package/dist/chunks/{meter-fbtqfg0okpwmaiju.js → meter-i84dte2f82qmvn7y.js} +2 -2
  54. package/dist/chunks/{meter-fbtqfg0okpwmaiju.js.map → meter-i84dte2f82qmvn7y.js.map} +1 -1
  55. package/dist/chunks/{pagination-eo0gzzm7v5w8niqe.js → pagination-pbd7qqik97ac0l7m.js} +3 -3
  56. package/dist/chunks/{pagination-eo0gzzm7v5w8niqe.js.map → pagination-pbd7qqik97ac0l7m.js.map} +1 -1
  57. package/dist/chunks/{popover-dd7hi5ajeoq9od1i.js → popover-i951xjcgezeqr4iv.js} +31 -28
  58. package/dist/chunks/popover-i951xjcgezeqr4iv.js.map +1 -0
  59. package/dist/chunks/portal-provider-hwmkdmkpvct0cb76.js +18 -0
  60. package/dist/chunks/portal-provider-hwmkdmkpvct0cb76.js.map +1 -0
  61. package/dist/chunks/{radio-oi9iw7ls1t04j377.js → radio-l2vkcue40d84fmo1.js} +13 -16
  62. package/dist/chunks/{radio-oi9iw7ls1t04j377.js.map → radio-l2vkcue40d84fmo1.js.map} +1 -1
  63. package/dist/chunks/{select-0m0xklfwdlx8dwba.js → select-paedwa3nlhpq82ua.js} +39 -37
  64. package/dist/chunks/select-paedwa3nlhpq82ua.js.map +1 -0
  65. package/dist/chunks/{sensitive-input-rjpykxn2llh0thx1.js → sensitive-input-kznmknpp5h1grc6k.js} +97 -91
  66. package/dist/chunks/sensitive-input-kznmknpp5h1grc6k.js.map +1 -0
  67. package/dist/chunks/sidebar-jepeq7gaf4issuw6.js +875 -0
  68. package/dist/chunks/sidebar-jepeq7gaf4issuw6.js.map +1 -0
  69. package/dist/chunks/skeleton-line-epxenksfesr2fkcv.js +33 -0
  70. package/dist/chunks/skeleton-line-epxenksfesr2fkcv.js.map +1 -0
  71. package/dist/chunks/surface-blo81kgy9g0sexgm.js +36 -0
  72. package/dist/chunks/surface-blo81kgy9g0sexgm.js.map +1 -0
  73. package/dist/chunks/{switch-lv4mrrkfl5uc99xo.js → switch-i0zwcp3wq6vsxm1c.js} +64 -64
  74. package/dist/chunks/{switch-lv4mrrkfl5uc99xo.js.map → switch-i0zwcp3wq6vsxm1c.js.map} +1 -1
  75. package/dist/chunks/table-nrcw19tlpduayukl.js +183 -0
  76. package/dist/chunks/table-nrcw19tlpduayukl.js.map +1 -0
  77. package/dist/chunks/tabs-bw92jb303zxw7w4f.js +92 -0
  78. package/dist/chunks/{tabs-hy6oa7xtf96d9mxt.js.map → tabs-bw92jb303zxw7w4f.js.map} +1 -1
  79. package/dist/chunks/{text-gzt92mlji1lug13d.js → text-nmyi1rkwdj37f30f.js} +24 -22
  80. package/dist/chunks/text-nmyi1rkwdj37f30f.js.map +1 -0
  81. package/dist/chunks/{toast-kswfqmjysxcrwij3.js → toast-lrnwby56drs7vtae.js} +61 -59
  82. package/dist/chunks/toast-lrnwby56drs7vtae.js.map +1 -0
  83. package/dist/chunks/toml-nczb2z9n0o23o3ci.js +8 -0
  84. package/dist/chunks/toml-nczb2z9n0o23o3ci.js.map +1 -0
  85. package/dist/chunks/{tooltip-k68wcv9mrigb7rcb.js → tooltip-cit9ltlxfuhwctuj.js} +24 -21
  86. package/dist/chunks/tooltip-cit9ltlxfuhwctuj.js.map +1 -0
  87. package/dist/chunks/{vendor-base-ui-cpvkrhz4zgw9nw2b.js → vendor-base-ui-n30qblevnpk9cc5c.js} +551 -549
  88. package/dist/chunks/{vendor-base-ui-cpvkrhz4zgw9nw2b.js.map → vendor-base-ui-n30qblevnpk9cc5c.js.map} +1 -1
  89. package/dist/code/server.js +11 -9
  90. package/dist/code/server.js.map +1 -1
  91. package/dist/code.js +16 -14
  92. package/dist/code.js.map +1 -1
  93. package/dist/components/badge.js +1 -1
  94. package/dist/components/banner.js +1 -1
  95. package/dist/components/breadcrumbs.js +1 -1
  96. package/dist/components/button.js +1 -1
  97. package/dist/components/chart.js +1 -1
  98. package/dist/components/checkbox.js +1 -1
  99. package/dist/components/clipboard-text.js +1 -1
  100. package/dist/components/combobox.js +1 -1
  101. package/dist/components/command-palette.js +1 -1
  102. package/dist/components/dialog.js +1 -1
  103. package/dist/components/dropdown.js +1 -1
  104. package/dist/components/empty.js +1 -1
  105. package/dist/components/field.js +1 -1
  106. package/dist/components/flow.js +2142 -2090
  107. package/dist/components/flow.js.map +1 -1
  108. package/dist/components/input.js +3 -3
  109. package/dist/components/label.js +1 -1
  110. package/dist/components/layer-card.js +1 -1
  111. package/dist/components/link.js +1 -1
  112. package/dist/components/loader.js +1 -1
  113. package/dist/components/menubar.js +1 -1
  114. package/dist/components/meter.js +1 -1
  115. package/dist/components/pagination.js +1 -1
  116. package/dist/components/popover.js +1 -1
  117. package/dist/components/radio.js +1 -1
  118. package/dist/components/select.js +1 -1
  119. package/dist/components/sensitive-input.js +1 -1
  120. package/dist/components/sidebar.js +35 -0
  121. package/dist/components/sidebar.js.map +1 -0
  122. package/dist/components/surface.js +1 -1
  123. package/dist/components/switch.js +1 -1
  124. package/dist/components/table.js +1 -1
  125. package/dist/components/tabs.js +1 -1
  126. package/dist/components/text.js +1 -1
  127. package/dist/components/toast.js +2 -2
  128. package/dist/components/tooltip.js +1 -1
  129. package/dist/index.js +192 -159
  130. package/dist/index.js.map +1 -1
  131. package/dist/primitives/accordion.js +1 -1
  132. package/dist/primitives/alert-dialog.js +1 -1
  133. package/dist/primitives/autocomplete.js +1 -1
  134. package/dist/primitives/avatar.js +1 -1
  135. package/dist/primitives/button.js +1 -1
  136. package/dist/primitives/checkbox-group.js +1 -1
  137. package/dist/primitives/checkbox.js +1 -1
  138. package/dist/primitives/collapsible.js +1 -1
  139. package/dist/primitives/combobox.js +1 -1
  140. package/dist/primitives/context-menu.js +1 -1
  141. package/dist/primitives/csp-provider.js +1 -1
  142. package/dist/primitives/dialog.js +1 -1
  143. package/dist/primitives/direction-provider.js +1 -1
  144. package/dist/primitives/drawer.js +1 -1
  145. package/dist/primitives/field.js +1 -1
  146. package/dist/primitives/fieldset.js +1 -1
  147. package/dist/primitives/form.js +1 -1
  148. package/dist/primitives/input.js +1 -1
  149. package/dist/primitives/menu.js +1 -1
  150. package/dist/primitives/menubar.js +1 -1
  151. package/dist/primitives/meter.js +1 -1
  152. package/dist/primitives/navigation-menu.js +1 -1
  153. package/dist/primitives/number-field.js +1 -1
  154. package/dist/primitives/popover.js +1 -1
  155. package/dist/primitives/preview-card.js +1 -1
  156. package/dist/primitives/progress.js +1 -1
  157. package/dist/primitives/radio-group.js +1 -1
  158. package/dist/primitives/radio.js +1 -1
  159. package/dist/primitives/scroll-area.js +1 -1
  160. package/dist/primitives/select.js +1 -1
  161. package/dist/primitives/separator.js +1 -1
  162. package/dist/primitives/slider.js +1 -1
  163. package/dist/primitives/switch.js +1 -1
  164. package/dist/primitives/tabs.js +1 -1
  165. package/dist/primitives/toast.js +1 -1
  166. package/dist/primitives/toggle-group.js +1 -1
  167. package/dist/primitives/toggle.js +1 -1
  168. package/dist/primitives/toolbar.js +1 -1
  169. package/dist/primitives/tooltip.js +1 -1
  170. package/dist/primitives.js +1 -1
  171. package/dist/scripts/theme-generator/config.d.ts.map +1 -1
  172. package/dist/scripts/theme-generator/config.js +288 -24
  173. package/dist/scripts/theme-generator/config.js.map +1 -1
  174. package/dist/src/code/provider.d.ts.map +1 -1
  175. package/dist/src/code/server.d.ts.map +1 -1
  176. package/dist/src/code/types.d.ts +1 -1
  177. package/dist/src/code/types.d.ts.map +1 -1
  178. package/dist/src/components/badge/badge.d.ts +95 -22
  179. package/dist/src/components/badge/badge.d.ts.map +1 -1
  180. package/dist/src/components/banner/banner.d.ts +2 -0
  181. package/dist/src/components/banner/banner.d.ts.map +1 -1
  182. package/dist/src/components/button/button.d.ts +2 -0
  183. package/dist/src/components/button/button.d.ts.map +1 -1
  184. package/dist/src/components/chart/EChart.d.ts.map +1 -1
  185. package/dist/src/components/chart/TimeseriesChart.d.ts +11 -1
  186. package/dist/src/components/chart/TimeseriesChart.d.ts.map +1 -1
  187. package/dist/src/components/checkbox/checkbox.d.ts.map +1 -1
  188. package/dist/src/components/clipboard-text/clipboard-text.d.ts +2 -0
  189. package/dist/src/components/clipboard-text/clipboard-text.d.ts.map +1 -1
  190. package/dist/src/components/combobox/combobox.d.ts +8 -1
  191. package/dist/src/components/combobox/combobox.d.ts.map +1 -1
  192. package/dist/src/components/command-palette/command-palette.d.ts +9 -2
  193. package/dist/src/components/command-palette/command-palette.d.ts.map +1 -1
  194. package/dist/src/components/command-palette/types.d.ts +7 -0
  195. package/dist/src/components/command-palette/types.d.ts.map +1 -1
  196. package/dist/src/components/dialog/dialog.d.ts +8 -1
  197. package/dist/src/components/dialog/dialog.d.ts.map +1 -1
  198. package/dist/src/components/dropdown/dropdown.d.ts +17 -2
  199. package/dist/src/components/dropdown/dropdown.d.ts.map +1 -1
  200. package/dist/src/components/flow/diagram.d.ts.map +1 -1
  201. package/dist/src/components/flow/node.d.ts.map +1 -1
  202. package/dist/src/components/flow/parallel.d.ts.map +1 -1
  203. package/dist/src/components/loader/skeleton-line.d.ts +2 -1
  204. package/dist/src/components/loader/skeleton-line.d.ts.map +1 -1
  205. package/dist/src/components/popover/popover.d.ts +8 -1
  206. package/dist/src/components/popover/popover.d.ts.map +1 -1
  207. package/dist/src/components/radio/radio.d.ts.map +1 -1
  208. package/dist/src/components/select/select.d.ts +8 -1
  209. package/dist/src/components/select/select.d.ts.map +1 -1
  210. package/dist/src/components/sensitive-input/sensitive-input.d.ts.map +1 -1
  211. package/dist/src/components/sidebar/index.d.ts +2 -0
  212. package/dist/src/components/sidebar/index.d.ts.map +1 -0
  213. package/dist/src/components/sidebar/sidebar.d.ts +556 -0
  214. package/dist/src/components/sidebar/sidebar.d.ts.map +1 -0
  215. package/dist/src/components/surface/surface.d.ts +23 -23
  216. package/dist/src/components/surface/surface.d.ts.map +1 -1
  217. package/dist/src/components/table/table.d.ts +34 -2
  218. package/dist/src/components/table/table.d.ts.map +1 -1
  219. package/dist/src/components/tabs/tabs.d.ts.map +1 -1
  220. package/dist/src/components/text/text.d.ts +5 -0
  221. package/dist/src/components/text/text.d.ts.map +1 -1
  222. package/dist/src/components/toast/toast.d.ts +16 -9
  223. package/dist/src/components/toast/toast.d.ts.map +1 -1
  224. package/dist/src/components/tooltip/tooltip.d.ts +11 -6
  225. package/dist/src/components/tooltip/tooltip.d.ts.map +1 -1
  226. package/dist/src/index.d.ts +2 -0
  227. package/dist/src/index.d.ts.map +1 -1
  228. package/dist/src/utils/index.d.ts +1 -0
  229. package/dist/src/utils/index.d.ts.map +1 -1
  230. package/dist/src/utils/portal-provider.d.ts +56 -0
  231. package/dist/src/utils/portal-provider.d.ts.map +1 -0
  232. package/dist/styles/kumo-binding.css +49 -46
  233. package/dist/styles/kumo-standalone.css +1 -1
  234. package/dist/styles/theme-fedramp.css +3 -3
  235. package/dist/styles/theme-kumo.css +202 -22
  236. package/dist/utils.js +8 -6
  237. package/dist/utils.js.map +1 -1
  238. package/package.json +7 -3
  239. package/scripts/component-registry/index.ts +12 -0
  240. package/scripts/theme-generator/config.ts +298 -24
  241. package/dist/chunks/Legend-mkh1v83sz972e29d.js.map +0 -1
  242. package/dist/chunks/badge-mrshucy2530o70cq.js +0 -56
  243. package/dist/chunks/badge-mrshucy2530o70cq.js.map +0 -1
  244. package/dist/chunks/banner-vzdjbqsb6em7tmdk.js +0 -75
  245. package/dist/chunks/banner-vzdjbqsb6em7tmdk.js.map +0 -1
  246. package/dist/chunks/button-j0hi0afn33w9lxgi.js.map +0 -1
  247. package/dist/chunks/clipboard-text-mwcknzn75qdvigrd.js.map +0 -1
  248. package/dist/chunks/combobox-ndbaroqh1c0u49ye.js.map +0 -1
  249. package/dist/chunks/command-palette-ejoszjfivybu9yi5.js.map +0 -1
  250. package/dist/chunks/dialog-gkmecnx48ge38jrr.js.map +0 -1
  251. package/dist/chunks/dropdown-i8n7nv3cvkvb1x3e.js.map +0 -1
  252. package/dist/chunks/input-ko2dne1givlxq7sz.js.map +0 -1
  253. package/dist/chunks/menubar-ifxxdoa35zz79z1q.js.map +0 -1
  254. package/dist/chunks/popover-dd7hi5ajeoq9od1i.js.map +0 -1
  255. package/dist/chunks/select-0m0xklfwdlx8dwba.js.map +0 -1
  256. package/dist/chunks/sensitive-input-rjpykxn2llh0thx1.js.map +0 -1
  257. package/dist/chunks/skeleton-line-1j5exu6vv07mmhfb.js +0 -28
  258. package/dist/chunks/skeleton-line-1j5exu6vv07mmhfb.js.map +0 -1
  259. package/dist/chunks/surface-dhshylwccuaz91d1.js +0 -21
  260. package/dist/chunks/surface-dhshylwccuaz91d1.js.map +0 -1
  261. package/dist/chunks/table-fh7jmfip27vdapxm.js +0 -155
  262. package/dist/chunks/table-fh7jmfip27vdapxm.js.map +0 -1
  263. package/dist/chunks/tabs-hy6oa7xtf96d9mxt.js +0 -86
  264. package/dist/chunks/text-gzt92mlji1lug13d.js.map +0 -1
  265. package/dist/chunks/toast-kswfqmjysxcrwij3.js.map +0 -1
  266. package/dist/chunks/tooltip-k68wcv9mrigb7rcb.js.map +0 -1
@@ -1,24 +1,25 @@
1
1
  "use client";
2
- import { jsx as o, jsxs as c } from "react/jsx-runtime";
3
- import { CheckIcon as w, XIcon as d, CaretDownIcon as x } from "@phosphor-icons/react";
4
- import { createContext as T, useContext as u, Fragment as V } from "react";
5
- import { i as p, K as P } from "./input-ko2dne1givlxq7sz.js";
2
+ import { jsx as o, jsxs as m } from "react/jsx-runtime";
3
+ import { CheckIcon as S, XIcon as h, CaretDownIcon as x } from "@phosphor-icons/react";
4
+ import { createContext as T, useContext as u, Fragment as P } from "react";
5
+ import { i as p, K as V } from "./input-kvhyo3p4859bexvx.js";
6
6
  import { c as a } from "./cn-ct4n7r74mh8y0f48.js";
7
- import { F as j } from "./field-lweivfadxgpqhuqi.js";
8
- import { a5 as G, a6 as L, a7 as M, a8 as F, a9 as _, aa as A, ab as g, ac as E, ad as K, ae as O, af as U, ag as W, ah as f, ai as D, aj as C, ak as N, al as H, am as X, an as q } from "./vendor-base-ui-cpvkrhz4zgw9nw2b.js";
9
- P.size;
10
- const h = T("base");
7
+ import { F as j } from "./field-fq504lyu7ttsh5m9.js";
8
+ import { u as G } from "./portal-provider-hwmkdmkpvct0cb76.js";
9
+ import { a5 as L, a6 as M, a7 as F, a8 as _, a9 as A, aa as E, ab as b, ac as K, ad as O, ae as U, af as W, ag as D, ah as f, ai as H, aj as C, ak as N, al as X, am as q, an as B } from "./vendor-base-ui-n30qblevnpk9cc5c.js";
10
+ V.size;
11
+ const g = T("base");
11
12
  function y({
12
13
  label: e,
13
14
  required: t,
14
15
  labelTooltip: i,
15
16
  description: r,
16
17
  error: n,
17
- children: s,
18
- size: l = "base",
19
- ...m
18
+ children: c,
19
+ size: s = "base",
20
+ ...l
20
21
  }) {
21
- const b = /* @__PURE__ */ o(h.Provider, { value: l, children: /* @__PURE__ */ o(L, { ...m, children: s }) });
22
+ const d = /* @__PURE__ */ o(g.Provider, { value: s, children: /* @__PURE__ */ o(M, { ...l, children: c }) });
22
23
  return e ? /* @__PURE__ */ o(
23
24
  j,
24
25
  {
@@ -27,28 +28,30 @@ function y({
27
28
  labelTooltip: i,
28
29
  description: r,
29
30
  error: n ? typeof n == "string" ? { message: n, match: !0 } : n : void 0,
30
- children: b
31
+ children: d
31
32
  }
32
- ) : b;
33
+ ) : d;
33
34
  }
34
- function z({
35
+ function v({
35
36
  children: e,
36
37
  className: t,
37
38
  align: i = "start",
38
39
  sideOffset: r = 4,
39
40
  alignOffset: n,
40
- side: s
41
+ side: c,
42
+ container: s
41
43
  }) {
42
- return /* @__PURE__ */ o(H, { children: /* @__PURE__ */ o(
43
- X,
44
+ const l = G();
45
+ return /* @__PURE__ */ o(X, { container: s ?? l ?? void 0, children: /* @__PURE__ */ o(
46
+ q,
44
47
  {
45
48
  className: "",
46
49
  align: i,
47
50
  sideOffset: r,
48
51
  alignOffset: n,
49
- side: s,
52
+ side: c,
50
53
  children: /* @__PURE__ */ o(
51
- q,
54
+ B,
52
55
  {
53
56
  className: a(
54
57
  "flex flex-col",
@@ -66,23 +69,24 @@ function z({
66
69
  }
67
70
  ) });
68
71
  }
69
- const B = {
72
+ const J = {
70
73
  xs: { padding: "pr-5", iconSize: 12, iconRight: "right-1" },
71
74
  sm: { padding: "pr-6", iconSize: 14, iconRight: "right-1.5" },
72
75
  base: { padding: "pr-8", iconSize: 16, iconRight: "right-2" },
73
76
  lg: { padding: "pr-10", iconSize: 18, iconRight: "right-3" }
74
77
  };
75
- function R({
78
+ function z({
76
79
  className: e,
77
80
  ...t
78
81
  }) {
79
- const i = u(h), r = B[i];
80
- return /* @__PURE__ */ c(
82
+ const i = u(g), r = J[i];
83
+ return /* @__PURE__ */ m(
81
84
  C,
82
85
  {
83
86
  className: a(
84
87
  p({ size: i }),
85
88
  "relative flex items-center",
89
+ "data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed",
86
90
  r.padding,
87
91
  e
88
92
  ),
@@ -102,7 +106,7 @@ function R({
102
106
  }
103
107
  );
104
108
  }
105
- const J = {
109
+ const Q = {
106
110
  xs: {
107
111
  padding: "pr-7",
108
112
  iconSize: 12,
@@ -128,28 +132,38 @@ const J = {
128
132
  caretRight: "right-3"
129
133
  }
130
134
  };
131
- function v(e) {
132
- const t = u(h), i = J[t];
133
- return /* @__PURE__ */ c(
135
+ function R(e) {
136
+ const t = u(g), i = Q[t];
137
+ return /* @__PURE__ */ m(
134
138
  "div",
135
139
  {
136
- className: a("relative inline-block w-full max-w-xs", e.className),
140
+ className: a(
141
+ "relative inline-block w-full max-w-xs",
142
+ "has-[:disabled]:opacity-50 has-[:disabled]:cursor-not-allowed",
143
+ e.className
144
+ ),
137
145
  children: [
138
146
  /* @__PURE__ */ o(
139
- g,
147
+ b,
140
148
  {
141
149
  ...e,
142
- className: a(p({ size: t }), "w-full", i.padding)
150
+ className: a(
151
+ p({ size: t }),
152
+ "w-full",
153
+ i.padding,
154
+ "disabled:cursor-not-allowed"
155
+ )
143
156
  }
144
157
  ),
145
158
  /* @__PURE__ */ o(
146
- D,
159
+ H,
147
160
  {
148
161
  className: a(
149
162
  "absolute top-1/2 flex -translate-y-1/2 cursor-pointer bg-transparent p-0",
163
+ "data-[disabled]:pointer-events-none data-[disabled]:opacity-0",
150
164
  i.clearRight
151
165
  ),
152
- children: /* @__PURE__ */ o(d, { size: i.iconSize })
166
+ children: /* @__PURE__ */ o(h, { size: i.iconSize })
153
167
  }
154
168
  ),
155
169
  /* @__PURE__ */ o(C, { className: "p-0", children: /* @__PURE__ */ o(
@@ -167,21 +181,21 @@ function v(e) {
167
181
  );
168
182
  }
169
183
  function I({ children: e, ...t }) {
170
- return /* @__PURE__ */ c(
171
- E,
184
+ return /* @__PURE__ */ m(
185
+ K,
172
186
  {
173
187
  ...t,
174
188
  className: "group mx-1.5 grid cursor-pointer grid-cols-[1fr_16px] gap-2 rounded px-2 py-1.5 text-base data-highlighted:bg-kumo-tint",
175
189
  children: [
176
190
  /* @__PURE__ */ o("div", { className: "col-start-1", children: e }),
177
- /* @__PURE__ */ o(K, { className: "col-start-2 flex items-center", children: /* @__PURE__ */ o(w, {}) })
191
+ /* @__PURE__ */ o(O, { className: "col-start-2 flex items-center", children: /* @__PURE__ */ o(S, {}) })
178
192
  ]
179
193
  }
180
194
  );
181
195
  }
182
- function Q(e) {
196
+ function Y(e) {
183
197
  return /* @__PURE__ */ o(
184
- A,
198
+ E,
185
199
  {
186
200
  ...e,
187
201
  className: a(
@@ -191,9 +205,9 @@ function Q(e) {
191
205
  }
192
206
  );
193
207
  }
194
- function Y(e) {
208
+ function Z(e) {
195
209
  return /* @__PURE__ */ o(
196
- g,
210
+ b,
197
211
  {
198
212
  ...e,
199
213
  className: a(
@@ -204,12 +218,12 @@ function Y(e) {
204
218
  }
205
219
  );
206
220
  }
207
- function Z({
221
+ function $({
208
222
  className: e,
209
223
  ...t
210
224
  }) {
211
225
  return /* @__PURE__ */ o(
212
- M,
226
+ F,
213
227
  {
214
228
  ...t,
215
229
  className: a(
@@ -219,9 +233,9 @@ function Z({
219
233
  }
220
234
  );
221
235
  }
222
- function $(e) {
236
+ function ee(e) {
223
237
  return /* @__PURE__ */ o(
224
- _,
238
+ A,
225
239
  {
226
240
  ...e,
227
241
  className: a(
@@ -231,18 +245,18 @@ function $(e) {
231
245
  }
232
246
  );
233
247
  }
234
- function ee(e) {
248
+ function oe(e) {
235
249
  return /* @__PURE__ */ o(
236
- F,
250
+ _,
237
251
  {
238
252
  ...e,
239
253
  className: "border-t border-kumo-line mt-2 pt-2 first:border-t-0 first:mt-0 first:pt-0"
240
254
  }
241
255
  );
242
256
  }
243
- function k(e) {
244
- return /* @__PURE__ */ c(
245
- O,
257
+ function w(e) {
258
+ return /* @__PURE__ */ m(
259
+ U,
246
260
  {
247
261
  ...e,
248
262
  className: a(
@@ -260,57 +274,58 @@ function k(e) {
260
274
  children: [
261
275
  e.children,
262
276
  /* @__PURE__ */ o(
263
- U,
277
+ W,
264
278
  {
265
279
  className: a(
266
280
  "cursor-pointer rounded-md p-1 hover:bg-kumo-fill-hover",
267
281
  "bg-transparent flex"
268
282
  ),
269
- children: /* @__PURE__ */ o(d, { size: 10 })
283
+ children: /* @__PURE__ */ o(h, { size: 10 })
270
284
  }
271
285
  )
272
286
  ]
273
287
  }
274
288
  );
275
289
  }
276
- const oe = {
290
+ const te = {
277
291
  xs: "min-h-5",
278
292
  sm: "min-h-6.5",
279
293
  base: "min-h-9",
280
294
  lg: "min-h-10"
281
295
  };
282
- function S({
296
+ function k({
283
297
  placeholder: e,
284
298
  renderItem: t,
285
299
  className: i,
286
300
  inputSide: r = "right",
287
301
  value: n
288
302
  }) {
289
- const s = u(h), l = n;
290
- return /* @__PURE__ */ c(
291
- W,
303
+ const c = u(g), s = n;
304
+ return /* @__PURE__ */ m(
305
+ D,
292
306
  {
293
307
  className: a(
294
- p({ size: s }),
308
+ p({ size: c }),
295
309
  "flex flex-col",
296
310
  "gap-1 py-1 px-1.5",
297
- oe[s],
311
+ te[c],
298
312
  "h-auto",
313
+ "data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed",
299
314
  i
300
315
  ),
301
316
  children: [
302
317
  r === "top" && /* @__PURE__ */ o(
303
- g,
318
+ b,
304
319
  {
305
320
  placeholder: e,
306
321
  className: "w-full px-2 py-1 border-0 bg-inherit"
307
322
  }
308
323
  ),
309
- /* @__PURE__ */ c("div", { className: "flex items-center flex-wrap gap-1.5 flex-1", children: [
310
- l !== void 0 && l.length > 0 && l.map((m) => t(m)),
311
- /* @__PURE__ */ o(f, { children: (m) => l !== void 0 ? null : /* @__PURE__ */ o(V, { children: m.map((b) => t(b)) }) }),
324
+ /* @__PURE__ */ m("div", { className: "flex items-center flex-wrap gap-1.5 flex-1", children: [
325
+ s !== void 0 && s.length > 0 && s.map((l) => t(l)),
326
+ /* @__PURE__ */ o(f, { children: (l) => s !== void 0 ? null : /* @__PURE__ */ o(P, { children: l.map((d) => t(d)) }) }),
312
327
  r === "right" && /* @__PURE__ */ o(
313
- g,
328
+ b,
314
329
  {
315
330
  placeholder: e,
316
331
  className: "min-w-[100px] flex-1 px-2 py-1 border-0 bg-inherit"
@@ -322,32 +337,32 @@ function S({
322
337
  );
323
338
  }
324
339
  y.displayName = "Combobox.Root";
325
- z.displayName = "Combobox.Content";
326
- R.displayName = "Combobox.TriggerValue";
327
- v.displayName = "Combobox.TriggerInput";
340
+ v.displayName = "Combobox.Content";
341
+ z.displayName = "Combobox.TriggerValue";
342
+ R.displayName = "Combobox.TriggerInput";
328
343
  I.displayName = "Combobox.Item";
329
- k.displayName = "Combobox.Chip";
330
- S.displayName = "Combobox.TriggerMultipleWithInput";
331
- const ce = Object.assign(y, {
344
+ w.displayName = "Combobox.Chip";
345
+ k.displayName = "Combobox.TriggerMultipleWithInput";
346
+ const de = Object.assign(y, {
332
347
  // Helper components
333
- Content: z,
334
- TriggerValue: R,
335
- TriggerInput: v,
336
- TriggerMultipleWithInput: S,
348
+ Content: v,
349
+ TriggerValue: z,
350
+ TriggerInput: R,
351
+ TriggerMultipleWithInput: k,
337
352
  // Slightly modified BaseUI
338
- Chip: k,
353
+ Chip: w,
339
354
  Item: I,
340
355
  // Styled BaseUI
341
- Input: Y,
342
- Empty: Q,
343
- GroupLabel: $,
344
- Group: ee,
356
+ Input: Z,
357
+ Empty: Y,
358
+ GroupLabel: ee,
359
+ Group: oe,
345
360
  // Styled BaseUI
346
- List: Z,
361
+ List: $,
347
362
  // BaseUI
348
- Collection: G
363
+ Collection: L
349
364
  });
350
365
  export {
351
- ce as C
366
+ de as C
352
367
  };
353
- //# sourceMappingURL=combobox-ndbaroqh1c0u49ye.js.map
368
+ //# sourceMappingURL=combobox-9fhjzprab46csmon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combobox-9fhjzprab46csmon.js","sources":["../../src/components/combobox/combobox.tsx"],"sourcesContent":["import { Combobox as ComboboxBase } from \"@base-ui/react/combobox\";\nimport { CaretDownIcon, CheckIcon, XIcon } from \"@phosphor-icons/react\";\nimport {\n Fragment,\n createContext,\n useContext,\n type PropsWithChildren,\n type ReactNode,\n} from \"react\";\nimport {\n inputVariants,\n KUMO_INPUT_VARIANTS,\n type KumoInputSize,\n} from \"../input/input\";\nimport { cn } from \"../../utils/cn\";\nimport { Field, type FieldErrorMatch } from \"../field/field\";\nimport {\n usePortalContainer,\n type PortalContainer,\n} from \"../../utils/portal-provider\";\n\n/** Combobox variant definitions. */\nexport const KUMO_COMBOBOX_VARIANTS = {\n size: KUMO_INPUT_VARIANTS.size,\n inputSide: {\n right: {\n classes: \"\",\n description: \"Input positioned inline to the right of chips\",\n },\n top: {\n classes: \"\",\n description: \"Input positioned above chips\",\n },\n },\n} as const;\n\nexport const KUMO_COMBOBOX_DEFAULT_VARIANTS = {\n size: \"base\",\n inputSide: \"right\",\n} as const;\n\n// Context to pass size down to sub-components\nconst ComboboxSizeContext = createContext<KumoInputSize>(\"base\");\n\n// Derived types from KUMO_COMBOBOX_VARIANTS\nexport type KumoComboboxSize = keyof typeof KUMO_COMBOBOX_VARIANTS.size;\nexport type KumoComboboxInputSide =\n keyof typeof KUMO_COMBOBOX_VARIANTS.inputSide;\n\nexport interface KumoComboboxVariantsProps {\n /**\n * Size of the combobox trigger. Matches Input component sizes.\n * - `\"xs\"` — Extra small for compact UIs (h-5 / 20px)\n * - `\"sm\"` — Small for secondary fields (h-6.5 / 26px)\n * - `\"base\"` — Default size (h-9 / 36px)\n * - `\"lg\"` — Large for prominent fields (h-10 / 40px)\n * @default \"base\"\n */\n size?: KumoComboboxSize;\n /**\n * Position of the text input relative to chips in multi-select mode.\n * - `\"right\"` — Input inline to the right of chips\n * - `\"top\"` — Input above chips\n * @default \"right\"\n */\n inputSide?: KumoComboboxInputSide;\n}\n\nexport function comboboxVariants({\n inputSide = KUMO_COMBOBOX_DEFAULT_VARIANTS.inputSide,\n}: KumoComboboxVariantsProps = {}) {\n return cn(KUMO_COMBOBOX_VARIANTS.inputSide[inputSide].classes);\n}\n\n// Legacy type alias for backwards compatibility\nexport type ComboboxInputSide = KumoComboboxInputSide;\nexport type ComboboxSize = KumoComboboxSize;\n\nexport type ComboboxRootProps<\n Value = unknown,\n Multiple extends boolean | undefined = false,\n> = ComboboxBase.Root.Props<Value, Multiple>;\n\n/**\n * Combobox component props (simplified for documentation; the actual Root is generic).\n *\n * Combobox provides an autocomplete/typeahead input with a filterable dropdown.\n * Supports single-select, multi-select with chips, grouped items, and Field wrapper integration.\n *\n * @example\n * ```tsx\n * // Single-select with search input\n * <Combobox value={value} onValueChange={setValue} items={options}>\n * <Combobox.TriggerInput placeholder=\"Search…\" />\n * <Combobox.Content>\n * <Combobox.List>\n * {(item) => <Combobox.Item value={item}>{item.label}</Combobox.Item>}\n * </Combobox.List>\n * <Combobox.Empty>No results</Combobox.Empty>\n * </Combobox.Content>\n * </Combobox>\n *\n * // Multi-select with chips\n * <Combobox multiple items={options} label=\"Tags\">\n * <Combobox.TriggerMultipleWithInput\n * placeholder=\"Add tag…\"\n * renderItem={(item) => <Combobox.Chip value={item}>{item.label}</Combobox.Chip>}\n * />\n * <Combobox.Content>\n * <Combobox.List>\n * {(item) => <Combobox.Item value={item}>{item.label}</Combobox.Item>}\n * </Combobox.List>\n * </Combobox.Content>\n * </Combobox>\n * ```\n */\nexport interface ComboboxProps extends KumoComboboxVariantsProps {\n /** Array of items to display in the dropdown */\n items: unknown[];\n /** Currently selected value(s) */\n value?: unknown;\n /** Callback when selection changes */\n onValueChange?: (value: unknown) => void;\n /** Enable multi-select mode */\n multiple?: boolean;\n /** Combobox content (trigger, content, items) */\n children: ReactNode;\n /** Additional CSS classes */\n className?: string;\n /** Label content for the combobox (enables Field wrapper) - can be a string or any React node */\n label?: ReactNode;\n /** Whether the combobox is required */\n required?: boolean;\n /** Tooltip content to display next to the label via an info icon */\n labelTooltip?: ReactNode;\n /** Helper text displayed below the combobox */\n description?: ReactNode;\n /** Error message or validation error object */\n error?: string | { message: ReactNode; match: FieldErrorMatch };\n}\n\nfunction Root<Value, Multiple extends boolean | undefined = false>({\n label,\n required,\n labelTooltip,\n description,\n error,\n children,\n size = \"base\",\n ...props\n}: ComboboxBase.Root.Props<Value, Multiple> & {\n label?: ReactNode;\n required?: boolean;\n labelTooltip?: ReactNode;\n description?: ReactNode;\n error?: string | { message: ReactNode; match: FieldErrorMatch };\n size?: KumoComboboxSize;\n}) {\n const comboboxControl = (\n <ComboboxSizeContext.Provider value={size}>\n <ComboboxBase.Root {...props}>{children}</ComboboxBase.Root>\n </ComboboxSizeContext.Provider>\n );\n\n // Render with Field wrapper if label, description, or error are provided\n if (label) {\n return (\n <Field\n label={label}\n required={required}\n labelTooltip={labelTooltip}\n description={description}\n error={\n error\n ? typeof error === \"string\"\n ? { message: error, match: true }\n : error\n : undefined\n }\n >\n {comboboxControl}\n </Field>\n );\n }\n\n // Render bare combobox without Field wrapper\n return comboboxControl;\n}\n\nfunction Content({\n children,\n className,\n align = \"start\",\n sideOffset = 4,\n alignOffset,\n side,\n container: containerProp,\n}: PropsWithChildren<{\n className?: string;\n align?: ComboboxBase.Positioner.Props[\"align\"];\n alignOffset?: ComboboxBase.Positioner.Props[\"alignOffset\"];\n side?: ComboboxBase.Positioner.Props[\"side\"];\n sideOffset?: ComboboxBase.Positioner.Props[\"sideOffset\"];\n /**\n * Container element for the portal. Use this to render the combobox inside\n * a Shadow DOM or custom container. Overrides `KumoPortalProvider` context.\n * @default document.body (or KumoPortalProvider container if set)\n */\n container?: PortalContainer;\n}>) {\n const contextContainer = usePortalContainer();\n const container = containerProp ?? contextContainer ?? undefined;\n\n return (\n <ComboboxBase.Portal container={container}>\n <ComboboxBase.Positioner\n className=\"\"\n align={align}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n side={side}\n >\n <ComboboxBase.Popup\n className={cn(\n \"flex flex-col\", // flexbox layout for sticky input + scrollable list\n \"max-h-[min(var(--available-height),24rem)] max-w-(--available-width) min-w-(--anchor-width) py-1.5\",\n \"bg-kumo-base text-kumo-default\", // background\n \"rounded-lg shadow-lg ring ring-kumo-line\", // border part\n className,\n )}\n >\n {children}\n </ComboboxBase.Popup>\n </ComboboxBase.Positioner>\n </ComboboxBase.Portal>\n );\n}\n\n// Size-dependent styles for TriggerValue icon\nconst triggerValueIconStyles: Record<\n KumoComboboxSize,\n { padding: string; iconSize: number; iconRight: string }\n> = {\n xs: { padding: \"pr-5\", iconSize: 12, iconRight: \"right-1\" },\n sm: { padding: \"pr-6\", iconSize: 14, iconRight: \"right-1.5\" },\n base: { padding: \"pr-8\", iconSize: 16, iconRight: \"right-2\" },\n lg: { padding: \"pr-10\", iconSize: 18, iconRight: \"right-3\" },\n};\n\nfunction TriggerValue({\n className,\n ...props\n}: ComboboxBase.Value.Props & { className?: string }) {\n const size = useContext(ComboboxSizeContext);\n const iconStyles = triggerValueIconStyles[size];\n\n return (\n <ComboboxBase.Trigger\n className={cn(\n inputVariants({ size }),\n \"relative flex items-center\",\n \"data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed\",\n iconStyles.padding,\n className,\n )}\n >\n <ComboboxBase.Value>{props.children}</ComboboxBase.Value>\n <ComboboxBase.Icon\n className={cn(\n \"absolute top-1/2 -translate-y-1/2 flex items-center text-kumo-subtle\",\n iconStyles.iconRight,\n )}\n >\n <CaretDownIcon size={iconStyles.iconSize} className=\"fill-current\" />\n </ComboboxBase.Icon>\n </ComboboxBase.Trigger>\n );\n}\n\n// Size-dependent styles for TriggerInput icons\nconst triggerInputIconStyles: Record<\n KumoComboboxSize,\n { padding: string; iconSize: number; clearRight: string; caretRight: string }\n> = {\n xs: {\n padding: \"pr-7\",\n iconSize: 12,\n clearRight: \"right-5\",\n caretRight: \"right-1\",\n },\n sm: {\n padding: \"pr-9\",\n iconSize: 14,\n clearRight: \"right-6\",\n caretRight: \"right-1.5\",\n },\n base: {\n padding: \"pr-12\",\n iconSize: 16,\n clearRight: \"right-8\",\n caretRight: \"right-2\",\n },\n lg: {\n padding: \"pr-14\",\n iconSize: 18,\n clearRight: \"right-9\",\n caretRight: \"right-3\",\n },\n};\n\nfunction TriggerInput(props: ComboboxBase.Input.Props) {\n const size = useContext(ComboboxSizeContext);\n const iconStyles = triggerInputIconStyles[size];\n\n return (\n <div\n className={cn(\n \"relative inline-block w-full max-w-xs\",\n \"has-[:disabled]:opacity-50 has-[:disabled]:cursor-not-allowed\",\n props.className,\n )}\n >\n <ComboboxBase.Input\n {...props}\n className={cn(\n inputVariants({ size }),\n \"w-full\",\n iconStyles.padding,\n \"disabled:cursor-not-allowed\",\n )}\n />\n\n <ComboboxBase.Clear\n className={cn(\n \"absolute top-1/2 flex -translate-y-1/2 cursor-pointer bg-transparent p-0\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-0\",\n iconStyles.clearRight,\n )}\n >\n <XIcon size={iconStyles.iconSize} />\n </ComboboxBase.Clear>\n\n <ComboboxBase.Trigger className=\"p-0\">\n <ComboboxBase.Icon\n className={cn(\n \"absolute top-1/2 flex -translate-y-1/2 cursor-pointer text-kumo-subtle\",\n iconStyles.caretRight,\n )}\n >\n <CaretDownIcon size={iconStyles.iconSize} className=\"fill-current\" />\n </ComboboxBase.Icon>\n </ComboboxBase.Trigger>\n </div>\n );\n}\n\nfunction Item({ children, ...props }: ComboboxBase.Item.Props) {\n return (\n <ComboboxBase.Item\n {...props}\n className=\"group mx-1.5 grid cursor-pointer grid-cols-[1fr_16px] gap-2 rounded px-2 py-1.5 text-base data-highlighted:bg-kumo-tint\"\n >\n <div className=\"col-start-1\">{children}</div>\n <ComboboxBase.ItemIndicator className=\"col-start-2 flex items-center\">\n <CheckIcon />\n </ComboboxBase.ItemIndicator>\n </ComboboxBase.Item>\n );\n}\n\nfunction Empty(props: ComboboxBase.Empty.Props) {\n return (\n <ComboboxBase.Empty\n {...props}\n className={cn(\n \"mx-1.5 shrink-0 px-4 py-2 text-[0.925rem] leading-4 text-kumo-subtle empty:m-0 empty:p-0\",\n )}\n children={props.children ?? \"No labels found.\"}\n />\n );\n}\n\nfunction Input(props: ComboboxBase.Input.Props) {\n return (\n <ComboboxBase.Input\n {...props}\n className={cn(\n inputVariants(),\n \"mx-1.5 w-[calc(100%-0.75rem)] shrink-0 first:mb-2\",\n props.className,\n )}\n />\n );\n}\n\nfunction List({\n className,\n ...props\n}: ComboboxBase.List.Props & { className?: string }) {\n return (\n <ComboboxBase.List\n {...props}\n className={cn(\n \"min-h-0 flex-1 overflow-y-auto overscroll-contain scroll-pt-2 scroll-pb-2\",\n className,\n )}\n />\n );\n}\n\nfunction GroupLabel(props: ComboboxBase.GroupLabel.Props) {\n return (\n <ComboboxBase.GroupLabel\n {...props}\n className={cn(\n \"mx-1.5 px-2 py-1.5 text-sm text-kumo-strong\",\n props.className,\n )}\n />\n );\n}\n\nfunction Group(props: ComboboxBase.Group.Props) {\n return (\n <ComboboxBase.Group\n {...props}\n className=\"border-t border-kumo-line mt-2 pt-2 first:border-t-0 first:mt-0 first:pt-0\"\n />\n );\n}\n\nfunction Chip(props: ComboboxBase.Chip.Props) {\n return (\n <ComboboxBase.Chip\n {...props}\n className={cn(\n \"flex items-center gap-2.5\", // Layout\n \"h-6 pl-2 pr-[3px]\", // Dimensions\n \"rounded-sm ring-1 ring-kumo-line\", // Border\n \"bg-kumo-overlay\", // Background\n \"text-sm\", // Typography\n )}\n >\n {props.children}\n <ComboboxBase.ChipRemove\n className={cn(\n \"cursor-pointer rounded-md p-1 hover:bg-kumo-fill-hover\",\n \"bg-transparent flex\",\n )}\n >\n <XIcon size={10} />\n </ComboboxBase.ChipRemove>\n </ComboboxBase.Chip>\n );\n}\n\n// Map size to min-height class for TriggerMultipleWithInput\nconst sizeToMinHeight: Record<KumoComboboxSize, string> = {\n xs: \"min-h-5\",\n sm: \"min-h-6.5\",\n base: \"min-h-9\",\n lg: \"min-h-10\",\n};\n\nfunction TriggerMultipleWithInput<ValueType>({\n placeholder,\n renderItem,\n className,\n inputSide = \"right\",\n value: controlledValue,\n}: {\n placeholder?: string;\n renderItem: (value: ValueType) => React.ReactNode;\n className?: string;\n inputSide?: \"right\" | \"top\";\n /** Optional controlled value for rendering chips (use when pre-selecting values) */\n value?: ValueType[];\n}) {\n const size = useContext(ComboboxSizeContext);\n // Determine which value to use for rendering chips\n const chipsToRender = controlledValue;\n\n return (\n <ComboboxBase.Chips\n className={cn(\n inputVariants({ size }),\n \"flex flex-col\",\n \"gap-1 py-1 px-1.5\",\n sizeToMinHeight[size],\n \"h-auto\",\n \"data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed\",\n className,\n )}\n >\n {inputSide === \"top\" && (\n <ComboboxBase.Input\n placeholder={placeholder}\n className=\"w-full px-2 py-1 border-0 bg-inherit\"\n />\n )}\n {/* Chips container */}\n <div className=\"flex items-center flex-wrap gap-1.5 flex-1\">\n {/* Render chips from controlled value if provided */}\n {chipsToRender !== undefined &&\n chipsToRender.length > 0 &&\n chipsToRender.map((item) => renderItem(item))}\n {/* Also render from BaseUI's internal value for user selections */}\n <ComboboxBase.Value>\n {(internalValue: ValueType[]) => {\n // Skip rendering if using controlled value (to avoid duplicates)\n if (chipsToRender !== undefined) return null;\n return (\n <Fragment>\n {internalValue.map((item) => renderItem(item))}\n </Fragment>\n );\n }}\n </ComboboxBase.Value>\n {inputSide === \"right\" && (\n <ComboboxBase.Input\n placeholder={placeholder}\n className=\"min-w-[100px] flex-1 px-2 py-1 border-0 bg-inherit\"\n />\n )}\n </div>\n </ComboboxBase.Chips>\n );\n}\n\nRoot.displayName = \"Combobox.Root\";\nContent.displayName = \"Combobox.Content\";\nTriggerValue.displayName = \"Combobox.TriggerValue\";\nTriggerInput.displayName = \"Combobox.TriggerInput\";\nItem.displayName = \"Combobox.Item\";\nChip.displayName = \"Combobox.Chip\";\nTriggerMultipleWithInput.displayName = \"Combobox.TriggerMultipleWithInput\";\n\n/**\n * Combobox — autocomplete input with filterable dropdown list.\n *\n * Compound component: `Combobox` (Root), `.TriggerInput`, `.TriggerValue`,\n * `.TriggerMultipleWithInput`, `.Content`, `.Item`, `.Chip`, `.Input`,\n * `.Empty`, `.GroupLabel`, `.Group`, `.List`, `.Collection`.\n *\n * @example\n * ```tsx\n * <Combobox items={fruits} label=\"Fruit\">\n * <Combobox.TriggerInput placeholder=\"Pick a fruit…\" />\n * <Combobox.Content>\n * <Combobox.List>\n * {(item) => <Combobox.Item value={item}>{item}</Combobox.Item>}\n * </Combobox.List>\n * </Combobox.Content>\n * </Combobox>\n * ```\n *\n * @see https://base-ui.com/react/components/combobox\n */\nexport const Combobox = Object.assign(Root, {\n // Helper components\n Content,\n TriggerValue,\n TriggerInput,\n TriggerMultipleWithInput,\n\n // Slightly modified BaseUI\n Chip,\n Item,\n\n // Styled BaseUI\n Input,\n Empty,\n GroupLabel,\n Group,\n\n // Styled BaseUI\n List,\n\n // BaseUI\n Collection: ComboboxBase.Collection,\n});\n"],"names":["KUMO_INPUT_VARIANTS","ComboboxSizeContext","createContext","Root","label","required","labelTooltip","description","error","children","size","props","comboboxControl","jsx","ComboboxBase.Root","Field","Content","className","align","sideOffset","alignOffset","side","containerProp","contextContainer","usePortalContainer","ComboboxBase.Portal","ComboboxBase.Positioner","ComboboxBase.Popup","cn","triggerValueIconStyles","TriggerValue","useContext","iconStyles","jsxs","ComboboxBase.Trigger","inputVariants","ComboboxBase.Value","ComboboxBase.Icon","CaretDownIcon","triggerInputIconStyles","TriggerInput","ComboboxBase.Input","ComboboxBase.Clear","XIcon","Item","ComboboxBase.Item","ComboboxBase.ItemIndicator","CheckIcon","Empty","ComboboxBase.Empty","Input","List","ComboboxBase.List","GroupLabel","ComboboxBase.GroupLabel","Group","ComboboxBase.Group","Chip","ComboboxBase.Chip","ComboboxBase.ChipRemove","sizeToMinHeight","TriggerMultipleWithInput","placeholder","renderItem","inputSide","controlledValue","chipsToRender","ComboboxBase.Chips","item","internalValue","Fragment","Combobox","ComboboxBase.Collection"],"mappings":"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"}