@central-ui/react 0.0.0-stage → 0.1.1

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 (292) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +33 -2
  3. package/dist/components/accordion/index.d.ts +73 -0
  4. package/dist/components/accordion/index.d.ts.map +1 -0
  5. package/dist/components/accordion/index.js +92 -0
  6. package/dist/components/accordion/index.js.map +1 -0
  7. package/dist/components/autocomplete/index.d.ts +365 -0
  8. package/dist/components/autocomplete/index.d.ts.map +1 -0
  9. package/dist/components/autocomplete/index.js +369 -0
  10. package/dist/components/autocomplete/index.js.map +1 -0
  11. package/dist/components/avatar/index.d.ts +48 -0
  12. package/dist/components/avatar/index.d.ts.map +1 -0
  13. package/dist/components/avatar/index.js +60 -0
  14. package/dist/components/avatar/index.js.map +1 -0
  15. package/dist/components/badge/index.d.ts +29 -0
  16. package/dist/components/badge/index.d.ts.map +1 -0
  17. package/dist/components/badge/index.js +36 -0
  18. package/dist/components/badge/index.js.map +1 -0
  19. package/dist/components/banner/index.d.ts +71 -0
  20. package/dist/components/banner/index.d.ts.map +1 -0
  21. package/dist/components/banner/index.js +119 -0
  22. package/dist/components/banner/index.js.map +1 -0
  23. package/dist/components/breadcrumb/index.d.ts +31 -0
  24. package/dist/components/breadcrumb/index.d.ts.map +1 -0
  25. package/dist/components/breadcrumb/index.js +42 -0
  26. package/dist/components/breadcrumb/index.js.map +1 -0
  27. package/dist/components/button/index.d.ts +48 -0
  28. package/dist/components/button/index.d.ts.map +1 -0
  29. package/dist/components/button/index.js +60 -0
  30. package/dist/components/button/index.js.map +1 -0
  31. package/dist/components/card/index.d.ts +34 -0
  32. package/dist/components/card/index.d.ts.map +1 -0
  33. package/dist/components/card/index.js +45 -0
  34. package/dist/components/card/index.js.map +1 -0
  35. package/dist/components/checkbox/index.d.ts +66 -0
  36. package/dist/components/checkbox/index.d.ts.map +1 -0
  37. package/dist/components/checkbox/index.js +146 -0
  38. package/dist/components/checkbox/index.js.map +1 -0
  39. package/dist/components/chip/index.d.ts +26 -0
  40. package/dist/components/chip/index.d.ts.map +1 -0
  41. package/dist/components/chip/index.js +40 -0
  42. package/dist/components/chip/index.js.map +1 -0
  43. package/dist/components/combobox/index.d.ts +427 -0
  44. package/dist/components/combobox/index.d.ts.map +1 -0
  45. package/dist/components/combobox/index.js +416 -0
  46. package/dist/components/combobox/index.js.map +1 -0
  47. package/dist/components/datepicker/index.d.ts +297 -0
  48. package/dist/components/datepicker/index.d.ts.map +1 -0
  49. package/dist/components/datepicker/index.js +507 -0
  50. package/dist/components/datepicker/index.js.map +1 -0
  51. package/dist/components/dialog/index.d.ts +88 -0
  52. package/dist/components/dialog/index.d.ts.map +1 -0
  53. package/dist/components/dialog/index.js +102 -0
  54. package/dist/components/dialog/index.js.map +1 -0
  55. package/dist/components/divider/index.d.ts +21 -0
  56. package/dist/components/divider/index.d.ts.map +1 -0
  57. package/dist/components/divider/index.js +24 -0
  58. package/dist/components/divider/index.js.map +1 -0
  59. package/dist/components/drawer/index.d.ts +99 -0
  60. package/dist/components/drawer/index.d.ts.map +1 -0
  61. package/dist/components/drawer/index.js +137 -0
  62. package/dist/components/drawer/index.js.map +1 -0
  63. package/dist/components/empty/index.d.ts +40 -0
  64. package/dist/components/empty/index.d.ts.map +1 -0
  65. package/dist/components/empty/index.js +61 -0
  66. package/dist/components/empty/index.js.map +1 -0
  67. package/dist/components/fileupload/index.d.ts +107 -0
  68. package/dist/components/fileupload/index.d.ts.map +1 -0
  69. package/dist/components/fileupload/index.js +185 -0
  70. package/dist/components/fileupload/index.js.map +1 -0
  71. package/dist/components/form/index.d.ts +34 -0
  72. package/dist/components/form/index.d.ts.map +1 -0
  73. package/dist/components/form/index.js +35 -0
  74. package/dist/components/form/index.js.map +1 -0
  75. package/dist/components/input/index.d.ts +85 -0
  76. package/dist/components/input/index.d.ts.map +1 -0
  77. package/dist/components/input/index.js +249 -0
  78. package/dist/components/input/index.js.map +1 -0
  79. package/dist/components/menu/index.d.ts +115 -0
  80. package/dist/components/menu/index.d.ts.map +1 -0
  81. package/dist/components/menu/index.js +188 -0
  82. package/dist/components/menu/index.js.map +1 -0
  83. package/dist/components/metric/index.d.ts +24 -0
  84. package/dist/components/metric/index.d.ts.map +1 -0
  85. package/dist/components/metric/index.js +26 -0
  86. package/dist/components/metric/index.js.map +1 -0
  87. package/dist/components/numberinput/index.d.ts +105 -0
  88. package/dist/components/numberinput/index.d.ts.map +1 -0
  89. package/dist/components/numberinput/index.js +240 -0
  90. package/dist/components/numberinput/index.js.map +1 -0
  91. package/dist/components/otpinput/index.d.ts +63 -0
  92. package/dist/components/otpinput/index.d.ts.map +1 -0
  93. package/dist/components/otpinput/index.js +133 -0
  94. package/dist/components/otpinput/index.js.map +1 -0
  95. package/dist/components/page/index.d.ts +54 -0
  96. package/dist/components/page/index.d.ts.map +1 -0
  97. package/dist/components/page/index.js +100 -0
  98. package/dist/components/page/index.js.map +1 -0
  99. package/dist/components/passwordinput/index.d.ts +88 -0
  100. package/dist/components/passwordinput/index.d.ts.map +1 -0
  101. package/dist/components/passwordinput/index.js +251 -0
  102. package/dist/components/passwordinput/index.js.map +1 -0
  103. package/dist/components/popover/index.d.ts +67 -0
  104. package/dist/components/popover/index.d.ts.map +1 -0
  105. package/dist/components/popover/index.js +76 -0
  106. package/dist/components/popover/index.js.map +1 -0
  107. package/dist/components/radio/index.d.ts +90 -0
  108. package/dist/components/radio/index.d.ts.map +1 -0
  109. package/dist/components/radio/index.js +232 -0
  110. package/dist/components/radio/index.js.map +1 -0
  111. package/dist/components/ratinginput/index.d.ts +59 -0
  112. package/dist/components/ratinginput/index.d.ts.map +1 -0
  113. package/dist/components/ratinginput/index.js +88 -0
  114. package/dist/components/ratinginput/index.js.map +1 -0
  115. package/dist/components/select/index.d.ts +205 -0
  116. package/dist/components/select/index.d.ts.map +1 -0
  117. package/dist/components/select/index.js +234 -0
  118. package/dist/components/select/index.js.map +1 -0
  119. package/dist/components/skeleton/index.d.ts +19 -0
  120. package/dist/components/skeleton/index.d.ts.map +1 -0
  121. package/dist/components/skeleton/index.js +20 -0
  122. package/dist/components/skeleton/index.js.map +1 -0
  123. package/dist/components/slider/index.d.ts +72 -0
  124. package/dist/components/slider/index.d.ts.map +1 -0
  125. package/dist/components/slider/index.js +159 -0
  126. package/dist/components/slider/index.js.map +1 -0
  127. package/dist/components/spinner/index.d.ts +14 -0
  128. package/dist/components/spinner/index.d.ts.map +1 -0
  129. package/dist/components/spinner/index.js +15 -0
  130. package/dist/components/spinner/index.js.map +1 -0
  131. package/dist/components/splitter/index.d.ts +49 -0
  132. package/dist/components/splitter/index.d.ts.map +1 -0
  133. package/dist/components/splitter/index.js +67 -0
  134. package/dist/components/splitter/index.js.map +1 -0
  135. package/dist/components/stepper/index.d.ts +82 -0
  136. package/dist/components/stepper/index.d.ts.map +1 -0
  137. package/dist/components/stepper/index.js +100 -0
  138. package/dist/components/stepper/index.js.map +1 -0
  139. package/dist/components/switch/index.d.ts +57 -0
  140. package/dist/components/switch/index.d.ts.map +1 -0
  141. package/dist/components/switch/index.js +101 -0
  142. package/dist/components/switch/index.js.map +1 -0
  143. package/dist/components/table/index.d.ts +110 -0
  144. package/dist/components/table/index.d.ts.map +1 -0
  145. package/dist/components/table/index.js +211 -0
  146. package/dist/components/table/index.js.map +1 -0
  147. package/dist/components/tabs/index.d.ts +67 -0
  148. package/dist/components/tabs/index.d.ts.map +1 -0
  149. package/dist/components/tabs/index.js +78 -0
  150. package/dist/components/tabs/index.js.map +1 -0
  151. package/dist/components/textarea/index.d.ts +72 -0
  152. package/dist/components/textarea/index.d.ts.map +1 -0
  153. package/dist/components/textarea/index.js +205 -0
  154. package/dist/components/textarea/index.js.map +1 -0
  155. package/dist/components/textlink/index.d.ts +39 -0
  156. package/dist/components/textlink/index.d.ts.map +1 -0
  157. package/dist/components/textlink/index.js +42 -0
  158. package/dist/components/textlink/index.js.map +1 -0
  159. package/dist/components/toast/index.d.ts +111 -0
  160. package/dist/components/toast/index.d.ts.map +1 -0
  161. package/dist/components/toast/index.js +205 -0
  162. package/dist/components/toast/index.js.map +1 -0
  163. package/dist/components/toggle/index.d.ts +41 -0
  164. package/dist/components/toggle/index.d.ts.map +1 -0
  165. package/dist/components/toggle/index.js +78 -0
  166. package/dist/components/toggle/index.js.map +1 -0
  167. package/dist/components/tooltip/index.d.ts +44 -0
  168. package/dist/components/tooltip/index.d.ts.map +1 -0
  169. package/dist/components/tooltip/index.js +51 -0
  170. package/dist/components/tooltip/index.js.map +1 -0
  171. package/dist/index.d.ts +50 -0
  172. package/dist/index.d.ts.map +1 -0
  173. package/dist/index.js +46 -0
  174. package/dist/index.js.map +1 -0
  175. package/dist/types/Style.d.ts +14 -0
  176. package/dist/types/Style.d.ts.map +1 -0
  177. package/dist/types/Style.js +2 -0
  178. package/dist/types/Style.js.map +1 -0
  179. package/dist/types/Tone.d.ts +4 -0
  180. package/dist/types/Tone.d.ts.map +1 -0
  181. package/dist/types/Tone.js +2 -0
  182. package/dist/types/Tone.js.map +1 -0
  183. package/dist/utils/ArkStateToDataAttributes.d.ts +4 -0
  184. package/dist/utils/ArkStateToDataAttributes.d.ts.map +1 -0
  185. package/dist/utils/ArkStateToDataAttributes.js +9 -0
  186. package/dist/utils/ArkStateToDataAttributes.js.map +1 -0
  187. package/dist/utils/Tone.d.ts +3 -0
  188. package/dist/utils/Tone.d.ts.map +1 -0
  189. package/dist/utils/Tone.js +7 -0
  190. package/dist/utils/Tone.js.map +1 -0
  191. package/dist/utils/useForwardClickToInput.d.ts +4 -0
  192. package/dist/utils/useForwardClickToInput.d.ts.map +1 -0
  193. package/dist/utils/useForwardClickToInput.js +27 -0
  194. package/dist/utils/useForwardClickToInput.js.map +1 -0
  195. package/dist/utils/virtualization/useVirtualizedAutocomplete.d.ts +198 -0
  196. package/dist/utils/virtualization/useVirtualizedAutocomplete.d.ts.map +1 -0
  197. package/dist/utils/virtualization/useVirtualizedAutocomplete.js +180 -0
  198. package/dist/utils/virtualization/useVirtualizedAutocomplete.js.map +1 -0
  199. package/dist/utils/virtualization/useVirtualizedCombobox.d.ts +200 -0
  200. package/dist/utils/virtualization/useVirtualizedCombobox.d.ts.map +1 -0
  201. package/dist/utils/virtualization/useVirtualizedCombobox.js +174 -0
  202. package/dist/utils/virtualization/useVirtualizedCombobox.js.map +1 -0
  203. package/dist/utils/virtualization/useVirtualizedTable.d.ts +169 -0
  204. package/dist/utils/virtualization/useVirtualizedTable.d.ts.map +1 -0
  205. package/dist/utils/virtualization/useVirtualizedTable.js +127 -0
  206. package/dist/utils/virtualization/useVirtualizedTable.js.map +1 -0
  207. package/package.json +64 -4
  208. package/src/presets/shopify-polaris/shopify-polaris-accordion.css +28 -0
  209. package/src/presets/shopify-polaris/shopify-polaris-autocomplete.css +155 -0
  210. package/src/presets/shopify-polaris/shopify-polaris-avatar.css +47 -0
  211. package/src/presets/shopify-polaris/shopify-polaris-badge.css +27 -0
  212. package/src/presets/shopify-polaris/shopify-polaris-banner.css +111 -0
  213. package/src/presets/shopify-polaris/shopify-polaris-breadcrumb.css +16 -0
  214. package/src/presets/shopify-polaris/shopify-polaris-button.css +79 -0
  215. package/src/presets/shopify-polaris/shopify-polaris-card.css +28 -0
  216. package/src/presets/shopify-polaris/shopify-polaris-checkbox.css +52 -0
  217. package/src/presets/shopify-polaris/shopify-polaris-chip.css +16 -0
  218. package/src/presets/shopify-polaris/shopify-polaris-combobox.css +179 -0
  219. package/src/presets/shopify-polaris/shopify-polaris-datepicker.css +183 -0
  220. package/src/presets/shopify-polaris/shopify-polaris-dialog.css +40 -0
  221. package/src/presets/shopify-polaris/shopify-polaris-divider.css +12 -0
  222. package/src/presets/shopify-polaris/shopify-polaris-drawer.css +40 -0
  223. package/src/presets/shopify-polaris/shopify-polaris-empty.css +32 -0
  224. package/src/presets/shopify-polaris/shopify-polaris-fileupload.css +78 -0
  225. package/src/presets/shopify-polaris/shopify-polaris-form.css +8 -0
  226. package/src/presets/shopify-polaris/shopify-polaris-input.css +72 -0
  227. package/src/presets/shopify-polaris/shopify-polaris-menu.css +112 -0
  228. package/src/presets/shopify-polaris/shopify-polaris-metric.css +16 -0
  229. package/src/presets/shopify-polaris/shopify-polaris-numberinput.css +88 -0
  230. package/src/presets/shopify-polaris/shopify-polaris-otpinput.css +42 -0
  231. package/src/presets/shopify-polaris/shopify-polaris-page.css +69 -0
  232. package/src/presets/shopify-polaris/shopify-polaris-passwordinput.css +76 -0
  233. package/src/presets/shopify-polaris/shopify-polaris-popover.css +47 -0
  234. package/src/presets/shopify-polaris/shopify-polaris-radio.css +54 -0
  235. package/src/presets/shopify-polaris/shopify-polaris-ratinginput.css +42 -0
  236. package/src/presets/shopify-polaris/shopify-polaris-select.css +119 -0
  237. package/src/presets/shopify-polaris/shopify-polaris-skeleton.css +8 -0
  238. package/src/presets/shopify-polaris/shopify-polaris-slider.css +86 -0
  239. package/src/presets/shopify-polaris/shopify-polaris-spinner.css +16 -0
  240. package/src/presets/shopify-polaris/shopify-polaris-splitter.css +34 -0
  241. package/src/presets/shopify-polaris/shopify-polaris-stepper.css +55 -0
  242. package/src/presets/shopify-polaris/shopify-polaris-switch.css +38 -0
  243. package/src/presets/shopify-polaris/shopify-polaris-table.css +72 -0
  244. package/src/presets/shopify-polaris/shopify-polaris-tabs.css +33 -0
  245. package/src/presets/shopify-polaris/shopify-polaris-textarea.css +61 -0
  246. package/src/presets/shopify-polaris/shopify-polaris-textlink.css +8 -0
  247. package/src/presets/shopify-polaris/shopify-polaris-toggle.css +52 -0
  248. package/src/presets/shopify-polaris/shopify-polaris-tooltip.css +31 -0
  249. package/src/presets/shopify-polaris/shopify-polaris.css +380 -0
  250. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-accordion.css +28 -0
  251. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-autocomplete.css +155 -0
  252. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-avatar.css +47 -0
  253. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-badge.css +27 -0
  254. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-banner.css +96 -0
  255. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-breadcrumb.css +16 -0
  256. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-button.css +68 -0
  257. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-card.css +28 -0
  258. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-checkbox.css +52 -0
  259. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-chip.css +16 -0
  260. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-combobox.css +184 -0
  261. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-datepicker.css +187 -0
  262. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-dialog.css +40 -0
  263. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-divider.css +12 -0
  264. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-drawer.css +40 -0
  265. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-empty.css +32 -0
  266. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-fileupload.css +72 -0
  267. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-form.css +8 -0
  268. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-input.css +72 -0
  269. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-menu.css +112 -0
  270. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-metric.css +16 -0
  271. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-numberinput.css +88 -0
  272. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-otpinput.css +42 -0
  273. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-page.css +69 -0
  274. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-passwordinput.css +76 -0
  275. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-popover.css +47 -0
  276. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-radio.css +54 -0
  277. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-ratinginput.css +42 -0
  278. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-select.css +118 -0
  279. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-skeleton.css +8 -0
  280. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-slider.css +86 -0
  281. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-spinner.css +16 -0
  282. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-splitter.css +34 -0
  283. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-stepper.css +55 -0
  284. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-switch.css +38 -0
  285. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-table.css +72 -0
  286. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-tabs.css +33 -0
  287. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-textarea.css +61 -0
  288. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-textlink.css +8 -0
  289. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-toast.css +43 -0
  290. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-toggle.css +52 -0
  291. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy-tooltip.css +31 -0
  292. package/src/presets/shopify-polaris-legacy/shopify-polaris-legacy.css +381 -0
@@ -0,0 +1,416 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Combobox as BaseCombobox } from '@base-ui/react/combobox';
3
+ import { Check, ChevronsUpDown, LoaderCircle, X } from 'lucide-react';
4
+ import { cloneElement, createContext, forwardRef, useContext, useId, useState, } from 'react';
5
+ import { twMerge } from 'tailwind-merge';
6
+ import { ToneProvider, useToneContext } from "../../utils/Tone.js";
7
+ /**
8
+ * Searchable selection using Base UI's built-in filtering and keyboard handling.
9
+ * Does not render an element. Keep all parts inside Root.
10
+ * Supply grouped items even for a visually flat list: one unlabeled Group is flat.
11
+ * IMPORTANT: children callbacks do not infer your data shape from the surrounding Root.
12
+ * Manually annotate their data arguments with Combobox.GroupType, Combobox.ItemType,
13
+ * or Combobox.ChipsType. Pass typeof the SAME items variable supplied to Root;
14
+ * do not use typeof a single group's items or an unrelated data array.
15
+ * Use Input directly inside InputGroup for the usual input composition.
16
+ * To display multiple selections as chips, replace that Input with ChipsList
17
+ * containing chips followed by one Input; do not keep a second Input beside ChipsList.
18
+ * Container is optional when you supply your own layout. The popup nesting stays the same.
19
+ * Examples below reuse the cities and groups from the first example.
20
+ *
21
+ * To virtualize, import useVirtualizedCombobox from '@central-ui/react'.
22
+ * See the hook's types and documentation for configuration and integration examples.
23
+ *
24
+ * @example Complete grouped composition
25
+ * import { Combobox } from '@central-ui/react'
26
+ *
27
+ * const cities = [
28
+ * { value: 'city_1', label: 'Casablanca', country: 'Morocco', population: 3359818 },
29
+ * { value: 'city_2', label: 'Rabat', country: 'Morocco', population: 580000 },
30
+ * { value: 'city_3', label: 'Paris', country: 'France', population: 2102650 },
31
+ * ]
32
+ * // Prepare groups in your data; there is no groupBy prop.
33
+ * const groups = [
34
+ * { label: 'Morocco', items: cities.filter((city) => city.country === 'Morocco') },
35
+ * { label: 'France', items: cities.filter((city) => city.country === 'France') },
36
+ * ]
37
+ * // Callback annotations below use typeof groups because Root receives items={groups}.
38
+ *
39
+ * function CityCombobox() {
40
+ * return (
41
+ * <Combobox.Root items={groups}>
42
+ * <Combobox.Container>
43
+ * <Combobox.Label>City</Combobox.Label>
44
+ * <Combobox.InputGroup>
45
+ * <Combobox.Input placeholder="Search cities" />
46
+ * <Combobox.Addon>
47
+ * <Combobox.AddonOpenButton aria-label="Show cities">
48
+ * <Combobox.AddonOpenButtonIcon />
49
+ * </Combobox.AddonOpenButton>
50
+ * <Combobox.AddonClearButton aria-label="Clear city">
51
+ * <Combobox.AddonClearButtonIcon />
52
+ * </Combobox.AddonClearButton>
53
+ * </Combobox.Addon>
54
+ * </Combobox.InputGroup>
55
+ * <Combobox.Popup>
56
+ * <Combobox.Empty // Required: keep mounted; contents show only for no matches.
57
+ * >
58
+ * <Combobox.EmptyText>No cities found.</Combobox.EmptyText>
59
+ * </Combobox.Empty>
60
+ * <Combobox.ScrollArea // Required: provides listbox semantics and keyboard handling.
61
+ * >
62
+ * <Combobox.GroupsList // Required: renders the filtered groups automatically.
63
+ * >
64
+ * {(group: Combobox.GroupType<typeof groups>, groupIndex) => (
65
+ * <Combobox.Group
66
+ * key={groupIndex}
67
+ * items={group.items} // Required even without a heading.
68
+ * >
69
+ * <Combobox.GroupLabel // Optional: display the group label; omit for a flat list.
70
+ * >
71
+ * {group.label}
72
+ * </Combobox.GroupLabel>
73
+ * <Combobox.ItemsList // Required: renders this group's filtered items.
74
+ * >
75
+ * {(city: Combobox.ItemType<typeof groups>) => (
76
+ * <Combobox.Item
77
+ * key={city.value}
78
+ * value={city} // Required: pass the complete item object.
79
+ * >
80
+ * <Combobox.ItemText>{city.label}</Combobox.ItemText>
81
+ * <Combobox.ItemIndicator // Built-in checkmark; no children needed.
82
+ * />
83
+ * </Combobox.Item>
84
+ * )}
85
+ * </Combobox.ItemsList>
86
+ * </Combobox.Group>
87
+ * )}
88
+ * </Combobox.GroupsList>
89
+ * </Combobox.ScrollArea>
90
+ * </Combobox.Popup>
91
+ * </Combobox.Container>
92
+ * </Combobox.Root>
93
+ * )
94
+ * }
95
+ *
96
+ * @example Flat data uses the same composition
97
+ * // Keep Group and ItemsList; omit only GroupLabel in the composition above.
98
+ * ;<Combobox.Root items={[{ label: '', items: cities }]}>
99
+ * {
100
+ * // Rest of components here
101
+ * }
102
+ * </Combobox.Root>
103
+ *
104
+ * @example Controlled single selection
105
+ * import { useState } from 'react'
106
+ * function ControlledCityCombobox() {
107
+ * const [city, setCity] = useState<Combobox.ItemType<typeof groups> | null>(null)
108
+ * return (
109
+ * <Combobox.Root items={groups} value={city} onValueChange={setCity}>
110
+ * {
111
+ * // Rest of components here
112
+ * }
113
+ * </Combobox.Root>
114
+ * )
115
+ * }
116
+ *
117
+ * @example Controlled multiple selection
118
+ * function MultipleCityCombobox() {
119
+ * const [selectedCities, setSelectedCities] = useState<Combobox.ChipsType<typeof groups>>(
120
+ * [],
121
+ * )
122
+ * return (
123
+ * <Combobox.Root
124
+ * items={groups}
125
+ * multiple
126
+ * value={selectedCities}
127
+ * onValueChange={setSelectedCities}
128
+ * >
129
+ * {
130
+ * // Rest of components here
131
+ * }
132
+ * </Combobox.Root>
133
+ * )
134
+ * }
135
+ *
136
+ * @example Optional loading message for asynchronous items
137
+ * // Inside Popup, below Empty and above ScrollArea. isLoading comes from your request state.
138
+ * // Unlike Empty, Loading does not detect requests: you control its contents.
139
+ * // Keep Loading mounted so screen readers can announce changes.
140
+ * // Omit Loading entirely when items are not fetched asynchronously.
141
+ * ;<Combobox.Loading>
142
+ * {isLoading && (
143
+ * <>
144
+ * <Combobox.LoadingIcon />
145
+ * <Combobox.LoadingText>Loading cities…</Combobox.LoadingText>
146
+ * </>
147
+ * )}
148
+ * </Combobox.Loading>
149
+ *
150
+ * @example Style only one part yourself
151
+ * // Other parts keep the imported preset. Core inline styles are preserved.
152
+ * ;<Combobox.AddonOpenButton
153
+ * disableStyle
154
+ * className="rounded-full bg-blue-600 p-2"
155
+ * aria-label="Show cities"
156
+ * >
157
+ * <Combobox.AddonOpenButtonIcon />
158
+ * </Combobox.AddonOpenButton>
159
+ */
160
+ export function Root({ children, id, tone = 'neutral', open, defaultOpen = false, onOpenChange, onItemHighlighted, ...props }) {
161
+ const generatedId = useId();
162
+ const inputId = id ?? generatedId;
163
+ const [openInternalState, setOpenInternalState] = useState(defaultOpen);
164
+ return (_jsx(BaseCombobox.Root, { ...props, id: inputId, open: open, defaultOpen: defaultOpen, onItemHighlighted: onItemHighlighted, isItemEqualToValue: (item, selected) => item.value === selected.value, onOpenChange: (nextOpen, details) => {
165
+ onOpenChange?.(nextOpen, details);
166
+ if (!details.isCanceled)
167
+ setOpenInternalState(nextOpen);
168
+ }, children: _jsx(ComboboxContext.Provider, { value: {
169
+ inputId,
170
+ open: open ?? openInternalState,
171
+ disabled: props.disabled ?? false,
172
+ readOnly: props.readOnly ?? false,
173
+ required: props.required ?? false,
174
+ }, children: _jsx(ToneProvider, { value: tone, children: children }) }) }));
175
+ }
176
+ /** Use for the standard stacked layout, or omit when supplying your own layout. */
177
+ export const Container = forwardRef(function Container({ disableStyle, className, ...props }, ref) {
178
+ return (_jsx("div", { ...props, ref: ref, "data-component": "combobox-container", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
179
+ });
180
+ /** Labels the input automatically using Root's id. Supply the visible label as children; no htmlFor needed. */
181
+ export const Label = forwardRef(function Label({ disableStyle, className, ...props }, ref) {
182
+ const { inputId } = useComboboxContext();
183
+ const attributes = usePartAttributes();
184
+ return (_jsx("label", { ...attributes, ...props, ref: ref, htmlFor: inputId, "data-component": "combobox-label", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
185
+ });
186
+ /** Search input with built-in filtering and selected-label display. Its id is managed by Root. Inside ChipsList, the preset automatically uses the compact chip-input sizing. */
187
+ export const Input = forwardRef(function Input({ disableStyle, className, ...props }, ref) {
188
+ const { inputId } = useComboboxContext();
189
+ const inChips = useContext(ChipsContext);
190
+ return (_jsx(BaseCombobox.Input, { ...props, ref: ref, id: inputId, "data-component": "combobox-input", "data-style-disabled": disableStyle ? '' : undefined, "data-in-chips": inChips ? '' : undefined, className: className }));
191
+ });
192
+ function ChipsListInner({ disableStyle, children, className, ...props }, ref) {
193
+ return (_jsx(BaseCombobox.Value, { children: (selected) => (_jsx(ChipsContext.Provider, { value: true, children: _jsx(BaseCombobox.Chips, { ...props, ref: ref, "data-slot": "chips-list", "data-component": "combobox-chipslist", "data-style-disabled": disableStyle ? '' : undefined, className: className, children: typeof children === 'function' ? children(selected) : children }) })) }));
194
+ }
195
+ /**
196
+ * Selected-item chips inside InputGroup for multiple selection.
197
+ * Its children callback supplies selected item objects automatically.
198
+ * Manually annotate selected with Combobox.ChipsType<typeof groups> when Root
199
+ * receives items={groups}; the data shape is not inferred from the surrounding Root.
200
+ * Keep Input inside ChipsList, after the chips, for keyboard chip navigation.
201
+ *
202
+ * @example Chips composition inside a multiple Root
203
+ * ;<Combobox.InputGroup>
204
+ * <Combobox.ChipsList>
205
+ * {(selected: Combobox.ChipsType<typeof groups>) => (
206
+ * <>
207
+ * {selected.map((city) => (
208
+ * <Combobox.Chip key={city.value} aria-label={city.label}>
209
+ * {city.label}
210
+ * <Combobox.ChipRemoveButton aria-label={'Remove ' + city.label}>
211
+ * <Combobox.ChipRemoveButtonIcon />
212
+ * </Combobox.ChipRemoveButton>
213
+ * </Combobox.Chip>
214
+ * ))}
215
+ * <Combobox.Input placeholder="Choose cities" />
216
+ * </>
217
+ * )}
218
+ * </Combobox.ChipsList>
219
+ * </Combobox.InputGroup>
220
+ */
221
+ export const ChipsList = forwardRef(ChipsListInner);
222
+ /** Reads Base UI selection without rendering its own element. Use its children callback only when you need a custom selection display; Input already displays the selected label automatically. */
223
+ export const Value = BaseCombobox.Value;
224
+ /** Required listbox and scroll viewport inside Popup. Place GroupsList inside it. Owns keyboard/listbox semantics; do not nest another listbox primitive. */
225
+ export const ScrollArea = forwardRef(function ScrollArea({ disableStyle, className, style, ...props }, ref) {
226
+ return (_jsx(BaseCombobox.List, { ...props, ref: ref, style: style, "data-component": "combobox-scrollarea", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
227
+ });
228
+ /** Required groups container inside ScrollArea. A children callback receives each automatically filtered group; do not filter or map the original groups again. Manually annotate group with Combobox.GroupType<typeof rootItems>, using the exact items variable passed to Root. */
229
+ export function GroupsList({ disableStyle, children, className, style, ...props }) {
230
+ return (_jsx("div", { ...props, style: style, "data-component": "combobox-groupslist", "data-style-disabled": disableStyle ? '' : undefined, className: className, children: typeof children === 'function' ? (_jsx(BaseCombobox.Collection, { children: children })) : (children) }));
231
+ }
232
+ /** Required items container inside Group. A children callback receives the filtered items belonging to that Group; do not repeat filtering yourself. Manually annotate item with Combobox.ItemType<typeof rootItems>, using the exact items variable passed to Root. */
233
+ export function ItemsList({ disableStyle, children, className, style, ...props }) {
234
+ return (_jsx("div", { ...props, style: style, "data-component": "combobox-itemslist", "data-style-disabled": disableStyle ? '' : undefined, className: className, children: typeof children === 'function' ? (_jsx(BaseCombobox.Collection, { children: children })) : (children) }));
235
+ }
236
+ /** Required wrapper around ItemsList, even for a visually flat list. Pass group.items. A GroupLabel is optional; omit it when the group has an empty label. */
237
+ export function Group({ disableStyle, className, style, ...props }) {
238
+ return (_jsx(BaseCombobox.Group, { ...props, style: style, "data-component": "combobox-group", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
239
+ }
240
+ /** Required selectable row inside ItemsList. Pass the complete item object as value, with ItemText and ItemIndicator inside. Selection, highlighting, and keyboard behavior are built in. */
241
+ export function Item({ disableStyle, className, style, ...props }) {
242
+ return (_jsx(BaseCombobox.Item, { ...props, style: style, "data-component": "combobox-item", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
243
+ }
244
+ /** Popup containing Empty, an optional Loading message, and ScrollArea, in that order. Already includes the portal and positioner: do not add either yourself. Defaults to bottom/start with a 5px gap. Core available-space and anchor-width inline styles stay active when preset styling is disabled. */
245
+ export function Popup({ disableStyle, container, keepMounted, anchor, positionMethod, side = 'bottom', sideOffset = 5, align = 'start', alignOffset, collisionBoundary, collisionPadding, sticky, arrowPadding, disableAnchorTracking, collisionAvoidance, className, style, ...props }) {
246
+ const baseStyle = {
247
+ maxHeight: 'var(--available-height)',
248
+ minWidth: 'var(--anchor-width)',
249
+ };
250
+ return (_jsx(BaseCombobox.Portal, { container: container, keepMounted: keepMounted, children: _jsx(BaseCombobox.Positioner, { anchor: anchor, positionMethod: positionMethod, side: side, sideOffset: sideOffset, align: align, alignOffset: alignOffset, collisionBoundary: collisionBoundary, collisionPadding: collisionPadding, sticky: sticky, arrowPadding: arrowPadding, disableAnchorTracking: disableAnchorTracking, collisionAvoidance: collisionAvoidance, style: { zIndex: 80, maxWidth: 'var(--available-width)' }, children: _jsx(BaseCombobox.Popup, { ...props, "data-component": "combobox-popup", "data-style-disabled": disableStyle ? '' : undefined, className: className, style: typeof style === 'function'
251
+ ? (state) => ({ ...baseStyle, ...style(state) })
252
+ : { ...baseStyle, ...style } }) }) }));
253
+ }
254
+ /** Optional decorative popup arrow. Place inside Popup; the SVG and direction handling are supplied. No children needed. */
255
+ export const Arrow = forwardRef(function Arrow({ disableStyle, className, style, ...props }, ref) {
256
+ return (_jsxs(BaseCombobox.Arrow, { style: style, render: _jsx("svg", { ...props, ref: ref, "aria-hidden": true, width: "20", height: "10", viewBox: "0 0 20 10" }), "data-component": "combobox-arrow", "data-style-disabled": disableStyle ? '' : undefined, className: className, children: [_jsx("path", { d: "M9.66437 2.60207L4.80758 6.97318C4.07308 7.63423 3.11989 8 2.13172 8H0V10H20V8H18.5349C17.5468 8 16.5936 7.63423 15.8591 6.97318L11.0023 2.60207C10.622 2.2598 10.0447 2.25979 9.66437 2.60207Z", "data-component": "combobox-arrow-1" }), _jsx("path", { d: "M8.99542 1.85876C9.75604 1.17425 10.9106 1.17422 11.6713 1.85878L16.5281 6.22989C17.0789 6.72568 17.7938 7.00001 18.5349 7.00001L15.89 7L11.0023 2.60207C10.622 2.2598 10.0447 2.2598 9.66436 2.60207L4.77734 7L2.13171 7.00001C2.87284 7.00001 3.58774 6.72568 4.13861 6.22989L8.99542 1.85876Z", "data-component": "combobox-arrow-2" }), _jsx("path", { d: "M10.3333 3.34539L5.47654 7.71648C4.55842 8.54279 3.36693 9 2.13172 9H0V8H2.13172C3.11989 8 4.07308 7.63423 4.80758 6.97318L9.66437 2.60207C10.0447 2.25979 10.622 2.2598 11.0023 2.60207L15.8591 6.97318C16.5936 7.63423 17.5468 8 18.5349 8H20V9H18.5349C17.2998 9 16.1083 8.54278 15.1901 7.71648L10.3333 3.34539Z", "data-component": "combobox-arrow-3" })] }));
257
+ });
258
+ /** Behavior only: turns its single child element into the popup trigger. Adds no preset styling and has no disableStyle prop. Use an accessible button child; pass className to the child for its appearance. */
259
+ export const PopupOpenHandler = forwardRef(function PopupOpenHandler({ children, ...props }, ref) {
260
+ return _jsx(BaseCombobox.Trigger, { ...props, ref: ref, render: children });
261
+ });
262
+ /** Behavior only: turns its single child element into a removal control for the surrounding Chip. Adds no preset styling and has no disableStyle prop. Use an accessible button child. */
263
+ export const ChipRemoveHandler = forwardRef(function ChipRemoveHandler({ children, ...props }, ref) {
264
+ return _jsx(BaseCombobox.ChipRemove, { ...props, ref: ref, render: children });
265
+ });
266
+ /** Optional input adornment container inside InputGroup. Wraps icons, text, or buttons without adding trigger behavior. */
267
+ export const Addon = forwardRef(function Addon({ disableStyle, variant = 'normal', className, ...props }, ref) {
268
+ return (_jsx("div", { ...props, ref: ref, "data-variant": variant, "data-component": "combobox-addon", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
269
+ });
270
+ /** Clones one supplied icon element, forwarding its ref and preserving its classes. Decorative only; does not open the popup or perform an action. */
271
+ export const AddonIcon = forwardRef(function AddonIcon({ disableStyle, children, className, strokeWidth = 1.5, ...props }, ref) {
272
+ const attributes = usePartAttributes();
273
+ return cloneElement(children, {
274
+ ...attributes,
275
+ ...props,
276
+ ref,
277
+ strokeWidth,
278
+ 'aria-hidden': true,
279
+ 'data-component': 'combobox-addonicon',
280
+ 'data-style-disabled': disableStyle ? '' : undefined,
281
+ className: twMerge(children.props.className, className),
282
+ });
283
+ });
284
+ /** Optional general-purpose button inside Addon. Supply its action yourself. Automatically disabled when Root is disabled or readOnly; defaults to type="button". */
285
+ export const AddonButton = forwardRef(function AddonButton({ disableStyle, className, disabled, type = 'button', ...props }, ref) {
286
+ const context = useComboboxContext();
287
+ const attributes = usePartAttributes();
288
+ return (_jsx("button", { ...attributes, ...props, ref: ref, type: type, disabled: disabled || context.disabled || context.readOnly, "data-component": "combobox-addonbutton", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
289
+ });
290
+ /** Input control wrapper. Place Input (or ChipsList containing Input) and optional Addon controls inside. Root tone controls its preset validation border. */
291
+ export const InputGroup = forwardRef(function InputGroup({ disableStyle, className, ...props }, ref) {
292
+ const tone = useToneContext();
293
+ return (_jsx(BaseCombobox.InputGroup, { "data-tone": tone, ...props, ref: ref, "data-component": "combobox-inputgroup", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
294
+ });
295
+ /** Displays one selected item inside ChipsList. Keep chips in selected-item order so Base UI can remove the matching item. Supply the item label and an optional removal control. */
296
+ export const Chip = forwardRef(function Chip({ disableStyle, className, ...props }, ref) {
297
+ return (_jsx(BaseCombobox.Chip, { ...props, ref: ref, "data-component": "combobox-chip", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
298
+ });
299
+ /** Removes the surrounding Chip from selection automatically; no onClick handler needed. Supply its content, normally ChipRemoveButtonIcon, and an accessible label. */
300
+ export const ChipRemoveButton = forwardRef(function ChipRemoveButton({ disableStyle, className, ...props }, ref) {
301
+ return (_jsx(BaseCombobox.ChipRemove, { ...props, ref: ref, "data-component": "combobox-chipremovebutton", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
302
+ });
303
+ /** Opens and closes the popup automatically; no click handler needed. Supply its content, normally AddonOpenButtonIcon, and an accessible label. */
304
+ export const AddonOpenButton = forwardRef(function AddonOpenButton({ disableStyle, className, ...props }, ref) {
305
+ return (_jsx(BaseCombobox.Trigger, { ...props, ref: ref, "data-component": "combobox-addonopenbutton", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
306
+ });
307
+ /** Clears the selection automatically; no click handler needed. Supply its content, normally AddonClearButtonIcon, and an accessible label. */
308
+ export const AddonClearButton = forwardRef(function AddonClearButton({ disableStyle, className, ...props }, ref) {
309
+ return (_jsx(BaseCombobox.Clear, { ...props, ref: ref, "data-component": "combobox-addonclearbutton", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
310
+ });
311
+ /** Optional heading inside Group. Supply group.label as children. Omit this part for an empty label; always keep Group and ItemsList. */
312
+ export const GroupLabel = forwardRef(function GroupLabel({ disableStyle, className, ...props }, ref) {
313
+ return (_jsx(BaseCombobox.GroupLabel, { ...props, ref: ref, "data-component": "combobox-grouplabel", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
314
+ });
315
+ /** Required empty-results message inside Popup, before optional Loading and ScrollArea. Keep mounted statically: Base UI renders its children only when no items match. Do not manually toggle, hide, or conditionally mount it. */
316
+ export const Empty = forwardRef(function Empty({ disableStyle, className, ...props }, ref) {
317
+ return (_jsx(BaseCombobox.Empty, { ...props, ref: ref, "data-component": "combobox-empty", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
318
+ });
319
+ /** Optional visual separator inside the popup. Does not replace Group or any required list containers. */
320
+ export const Separator = forwardRef(function Separator({ disableStyle, className, ...props }, ref) {
321
+ return (_jsx(BaseCombobox.Separator, { ...props, ref: ref, "data-component": "combobox-separator", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
322
+ });
323
+ /** Required label content inside Item. Supply item.label as children; does not derive text from the item automatically. */
324
+ export const ItemText = forwardRef(function ItemText({ disableStyle, className, ...props }, ref) {
325
+ const attributes = usePartAttributes();
326
+ return (_jsx("span", { ...attributes, ...props, ref: ref, "data-component": "combobox-itemtext", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
327
+ });
328
+ /** Optional decorative text inside Addon. Supply the text as children. */
329
+ export const AddonText = forwardRef(function AddonText({ disableStyle, className, ...props }, ref) {
330
+ const attributes = usePartAttributes();
331
+ return (_jsx("span", { ...attributes, ...props, ref: ref, "data-component": "combobox-addontext", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
332
+ });
333
+ /** Text content inside Empty. Supply your empty-result message; Empty handles its visibility automatically. */
334
+ export const EmptyText = forwardRef(function EmptyText({ disableStyle, className, ...props }, ref) {
335
+ const attributes = usePartAttributes();
336
+ return (_jsx("div", { ...attributes, ...props, ref: ref, "data-component": "combobox-emptytext", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
337
+ });
338
+ /** Optional supporting text. Supply its content; it does not connect itself to the input with aria-describedby. Use matching id and Input aria-describedby when needed. */
339
+ export const Description = forwardRef(function Description({ disableStyle, className, ...props }, ref) {
340
+ const attributes = usePartAttributes();
341
+ return (_jsx("div", { ...attributes, ...props, ref: ref, "data-component": "combobox-description", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
342
+ });
343
+ /** Optional alert message. You control when it is rendered and its contents; tone does not validate or show this message automatically. */
344
+ export const Error = forwardRef(function Error({ disableStyle, className, ...props }, ref) {
345
+ const attributes = usePartAttributes();
346
+ return (_jsx("div", { role: "alert", "aria-atomic": "true", ...attributes, ...props, ref: ref, "data-component": "combobox-error", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
347
+ });
348
+ /** Optional success status. You control when it is rendered and its contents; tone does not show this message automatically. */
349
+ export const Success = forwardRef(function Success({ disableStyle, className, ...props }, ref) {
350
+ const attributes = usePartAttributes();
351
+ return (_jsx("div", { role: "status", "aria-atomic": "true", ...attributes, ...props, ref: ref, "data-component": "combobox-success", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
352
+ });
353
+ /** Built-in decorative open-button icon. Place inside AddonOpenButton; no children needed. Defaults to strokeWidth 1.5. */
354
+ export const AddonOpenButtonIcon = forwardRef(function AddonOpenButtonIcon({ disableStyle, className, strokeWidth = 1.5, ...props }, ref) {
355
+ const attributes = usePartAttributes();
356
+ return (_jsx(ChevronsUpDown, { ...attributes, "aria-hidden": true, ...props, ref: ref, strokeWidth: strokeWidth, "data-component": "combobox-addonopenbuttonicon", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
357
+ });
358
+ /** Built-in decorative clear icon. Place inside AddonClearButton; no children needed. Defaults to strokeWidth 1.5. */
359
+ export const AddonClearButtonIcon = forwardRef(function AddonClearButtonIcon({ disableStyle, className, strokeWidth = 1.5, ...props }, ref) {
360
+ const attributes = usePartAttributes();
361
+ return (_jsx(X, { ...attributes, "aria-hidden": true, ...props, ref: ref, strokeWidth: strokeWidth, "data-component": "combobox-addonclearbuttonicon", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
362
+ });
363
+ /** Built-in decorative removal icon. Place inside ChipRemoveButton; no children needed. Defaults to strokeWidth 1.5. */
364
+ export const ChipRemoveButtonIcon = forwardRef(function ChipRemoveButtonIcon({ disableStyle, className, strokeWidth = 1.5, ...props }, ref) {
365
+ const attributes = usePartAttributes();
366
+ return (_jsx(X, { ...attributes, "aria-hidden": true, ...props, ref: ref, strokeWidth: strokeWidth, "data-component": "combobox-chipremovebuttonicon", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
367
+ });
368
+ /** Optional spinner inside Addon. Does not detect requests: you decide when to render it. Defaults to strokeWidth 1.5. */
369
+ export const AddonLoadingIcon = forwardRef(function AddonLoadingIcon({ disableStyle, className, strokeWidth = 1.5, ...props }, ref) {
370
+ const attributes = usePartAttributes();
371
+ return (_jsx(LoaderCircle, { ...attributes, "aria-hidden": true, ...props, ref: ref, strokeWidth: strokeWidth, "data-component": "combobox-addonloadingicon", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
372
+ });
373
+ /** Required selection indicator inside Item. Visibility is automatic and a checkmark is supplied: no children or selection condition needed. Pass children only to replace the built-in checkmark. */
374
+ export const ItemIndicator = forwardRef(function ItemIndicator({ disableStyle, children, keepMounted, ...props }, ref) {
375
+ const iconProps = {
376
+ 'aria-hidden': true,
377
+ strokeWidth: 2,
378
+ ...props,
379
+ ref,
380
+ 'data-component': 'combobox-itemindicator',
381
+ 'data-style-disabled': disableStyle ? '' : undefined,
382
+ };
383
+ return (_jsx(BaseCombobox.ItemIndicator, { keepMounted: keepMounted, children: null, render: cloneElement(children ?? _jsx(Check, {}), iconProps) }));
384
+ });
385
+ /** Optional async status inside Popup, below Empty and above ScrollArea. Omit entirely for synchronous items. For async items, keep Loading mounted and conditionally render only LoadingIcon and LoadingText from your request state. Does not detect requests or manage visibility. */
386
+ export const Loading = forwardRef(function Loading({ disableStyle, className, ...props }, ref) {
387
+ return (_jsx(BaseCombobox.Status, { ...props, ref: ref, "data-component": "combobox-loading", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
388
+ });
389
+ /** Text inside Loading. Supply the message only while your request is loading; this part does not detect request state. */
390
+ export const LoadingText = forwardRef(function LoadingText({ disableStyle, className, ...props }, ref) {
391
+ return (_jsx("div", { ...props, ref: ref, "data-component": "combobox-loadingtext", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
392
+ });
393
+ /** Built-in decorative spinner for Loading. No children needed; you control when it is rendered. */
394
+ export const LoadingIcon = forwardRef(function LoadingIcon({ disableStyle, className, ...props }, ref) {
395
+ return (_jsx(LoaderCircle, { "aria-hidden": true, strokeWidth: undefined, ...props, ref: ref, "data-component": "combobox-loadingicon", "data-style-disabled": disableStyle ? '' : undefined, className: className }));
396
+ });
397
+ const ComboboxContext = createContext(null);
398
+ const ChipsContext = createContext(false);
399
+ function useComboboxContext() {
400
+ const context = useContext(ComboboxContext);
401
+ if (!context)
402
+ throw new globalThis.Error('Combobox parts must be inside Combobox.Root');
403
+ return context;
404
+ }
405
+ function usePartAttributes() {
406
+ const { open, disabled, readOnly, required } = useComboboxContext();
407
+ const tone = useToneContext();
408
+ return {
409
+ 'data-open': open ? '' : undefined,
410
+ 'data-disabled': disabled ? '' : undefined,
411
+ 'data-readonly': readOnly ? '' : undefined,
412
+ 'data-required': required ? '' : undefined,
413
+ 'data-tone': tone,
414
+ };
415
+ }
416
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/combobox/index.tsx"],"names":[],"mappings":"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"}