@spark-ui/components 13.1.4 → 13.2.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 (731) hide show
  1. package/dist/Button-B6rA3-e5.js +2 -0
  2. package/dist/Button-B6rA3-e5.js.map +1 -0
  3. package/dist/{chunk-2YM6GKWW.mjs → Button-C3C0aixy.mjs} +130 -173
  4. package/dist/Button-C3C0aixy.mjs.map +1 -0
  5. package/dist/DialogContent.styles-B5pR8ECK.js +2 -0
  6. package/dist/DialogContent.styles-B5pR8ECK.js.map +1 -0
  7. package/dist/{chunk-XZ47F6TP.mjs → DialogContent.styles-_lRDsl8c.mjs} +6 -8
  8. package/dist/DialogContent.styles-_lRDsl8c.mjs.map +1 -0
  9. package/dist/Icon-CF0W0LKr.js +2 -0
  10. package/dist/Icon-CF0W0LKr.js.map +1 -0
  11. package/dist/Icon-Ck-dhfLd.mjs +58 -0
  12. package/dist/Icon-Ck-dhfLd.mjs.map +1 -0
  13. package/dist/IconButton-C62-axzv.mjs +43 -0
  14. package/dist/IconButton-C62-axzv.mjs.map +1 -0
  15. package/dist/IconButton-D3g86WpZ.js +2 -0
  16. package/dist/IconButton-D3g86WpZ.js.map +1 -0
  17. package/dist/Slot-D2Bbf8Gw.mjs +14 -0
  18. package/dist/Slot-D2Bbf8Gw.mjs.map +1 -0
  19. package/dist/Slot-DQ8z2zsy.js +2 -0
  20. package/dist/Slot-DQ8z2zsy.js.map +1 -0
  21. package/dist/Spinner-_Kffli3B.js +2 -0
  22. package/dist/Spinner-_Kffli3B.js.map +1 -0
  23. package/dist/{chunk-GAK4SC2F.mjs → Spinner-jF3-zoh_.mjs} +29 -40
  24. package/dist/Spinner-jF3-zoh_.mjs.map +1 -0
  25. package/dist/{chunk-RKPP7ZOK.mjs → TextLink-BuzFRWO6.mjs} +27 -36
  26. package/dist/TextLink-BuzFRWO6.mjs.map +1 -0
  27. package/dist/TextLink-C3xDLsbC.js +2 -0
  28. package/dist/TextLink-C3xDLsbC.js.map +1 -0
  29. package/dist/VisuallyHidden-CB6Nx76j.js +2 -0
  30. package/dist/VisuallyHidden-CB6Nx76j.js.map +1 -0
  31. package/dist/VisuallyHidden-KH1biLx-.mjs +28 -0
  32. package/dist/VisuallyHidden-KH1biLx-.mjs.map +1 -0
  33. package/dist/accordion/Accordion.d.ts +27 -0
  34. package/dist/accordion/AccordionItem.d.ts +12 -0
  35. package/dist/accordion/AccordionItemContent.d.ts +12 -0
  36. package/dist/accordion/AccordionItemHeader.d.ts +9 -0
  37. package/dist/accordion/AccordionItemTrigger.d.ts +12 -0
  38. package/dist/accordion/index.d.mts +10 -68
  39. package/dist/accordion/index.d.ts +10 -68
  40. package/dist/accordion/index.js +2 -325
  41. package/dist/accordion/index.js.map +1 -1
  42. package/dist/accordion/index.mjs +114 -154
  43. package/dist/accordion/index.mjs.map +1 -1
  44. package/dist/accordion/useRenderSlot.d.ts +3 -0
  45. package/dist/alert-dialog/AlertDialog.d.ts +29 -0
  46. package/dist/alert-dialog/AlertDialogAction.d.ts +13 -0
  47. package/dist/alert-dialog/AlertDialogBody.d.ts +12 -0
  48. package/dist/alert-dialog/AlertDialogCancel.d.ts +13 -0
  49. package/dist/alert-dialog/AlertDialogContent.d.ts +9 -0
  50. package/dist/alert-dialog/AlertDialogContext.d.ts +12 -0
  51. package/dist/alert-dialog/AlertDialogDescription.d.ts +9 -0
  52. package/dist/alert-dialog/AlertDialogFooter.d.ts +10 -0
  53. package/dist/alert-dialog/AlertDialogHeader.d.ts +10 -0
  54. package/dist/alert-dialog/AlertDialogOverlay.d.ts +9 -0
  55. package/dist/alert-dialog/AlertDialogPortal.d.ts +7 -0
  56. package/dist/alert-dialog/AlertDialogTitle.d.ts +9 -0
  57. package/dist/alert-dialog/AlertDialogTrigger.d.ts +13 -0
  58. package/dist/alert-dialog/index.d.mts +26 -147
  59. package/dist/alert-dialog/index.d.ts +26 -147
  60. package/dist/alert-dialog/index.js +2 -405
  61. package/dist/alert-dialog/index.js.map +1 -1
  62. package/dist/alert-dialog/index.mjs +172 -260
  63. package/dist/alert-dialog/index.mjs.map +1 -1
  64. package/dist/alert-dialog/useRenderSlot.d.ts +3 -0
  65. package/dist/avatar/Avatar.d.ts +3 -0
  66. package/dist/avatar/AvatarAction.d.ts +9 -0
  67. package/dist/avatar/AvatarImage.d.ts +7 -0
  68. package/dist/avatar/AvatarOnlineBadge.d.ts +9 -0
  69. package/dist/avatar/AvatarPlaceholder.d.ts +8 -0
  70. package/dist/avatar/AvatarUser.d.ts +7 -0
  71. package/dist/avatar/context.d.ts +5 -0
  72. package/dist/avatar/index.d.mts +8 -59
  73. package/dist/avatar/index.d.ts +8 -59
  74. package/dist/avatar/index.js +2 -1323
  75. package/dist/avatar/index.js.map +1 -1
  76. package/dist/avatar/index.mjs +149 -207
  77. package/dist/avatar/index.mjs.map +1 -1
  78. package/dist/avatar/types.d.ts +24 -0
  79. package/dist/badge/Badge.d.ts +9 -0
  80. package/dist/badge/BadgeItem.d.ts +31 -0
  81. package/dist/badge/BadgeItem.styles.d.ts +7 -0
  82. package/dist/badge/index.d.mts +1 -47
  83. package/dist/badge/index.d.ts +1 -47
  84. package/dist/badge/index.js +2 -122
  85. package/dist/badge/index.js.map +1 -1
  86. package/dist/badge/index.mjs +32 -44
  87. package/dist/badge/index.mjs.map +1 -1
  88. package/dist/breadcrumb/Breadcrumb.d.ts +10 -0
  89. package/dist/breadcrumb/Breadcrumb.styles.d.ts +0 -0
  90. package/dist/breadcrumb/BreadcrumbCurrentPage.d.ts +11 -0
  91. package/dist/breadcrumb/BreadcrumbItem.d.ts +9 -0
  92. package/dist/breadcrumb/BreadcrumbLink.d.ts +12 -0
  93. package/dist/breadcrumb/BreadcrumbSeparator.d.ts +10 -0
  94. package/dist/breadcrumb/index.d.mts +7 -59
  95. package/dist/breadcrumb/index.d.ts +7 -59
  96. package/dist/breadcrumb/index.js +2 -327
  97. package/dist/breadcrumb/index.js.map +1 -1
  98. package/dist/breadcrumb/index.mjs +106 -146
  99. package/dist/breadcrumb/index.mjs.map +1 -1
  100. package/dist/button/Button.d.ts +26 -0
  101. package/dist/button/Button.styles.d.ts +10 -0
  102. package/dist/button/index.d.mts +1 -41
  103. package/dist/button/index.d.ts +1 -41
  104. package/dist/button/index.js +2 -935
  105. package/dist/button/index.js.map +1 -1
  106. package/dist/button/index.mjs +3 -8
  107. package/dist/button/index.mjs.map +1 -1
  108. package/dist/button/variants/contrast.d.ts +45 -0
  109. package/dist/button/variants/filled.d.ts +45 -0
  110. package/dist/button/variants/ghost.d.ts +45 -0
  111. package/dist/button/variants/index.d.mts +5 -0
  112. package/dist/button/variants/index.d.ts +5 -0
  113. package/dist/button/variants/outlined.d.ts +45 -0
  114. package/dist/button/variants/tinted.d.ts +45 -0
  115. package/dist/card/Backdrop.d.ts +14 -0
  116. package/dist/card/Card.d.ts +16 -0
  117. package/dist/card/Card.styles.d.ts +7 -0
  118. package/dist/card/Content.d.ts +15 -0
  119. package/dist/card/Content.styles.d.ts +8 -0
  120. package/dist/card/context.d.ts +11 -0
  121. package/dist/card/index.d.mts +5 -58
  122. package/dist/card/index.d.ts +5 -58
  123. package/dist/card/index.js +2 -502
  124. package/dist/card/index.js.map +1 -1
  125. package/dist/card/index.mjs +125 -178
  126. package/dist/card/index.mjs.map +1 -1
  127. package/dist/card/utils.d.ts +3 -0
  128. package/dist/carousel/Carousel.d.ts +12 -0
  129. package/dist/carousel/CarouselControls.d.ts +9 -0
  130. package/dist/carousel/CarouselNextButton.d.ts +5 -0
  131. package/dist/carousel/CarouselPageIndicator.d.ts +14 -0
  132. package/dist/carousel/CarouselPagePicker.d.ts +14 -0
  133. package/dist/carousel/CarouselPrevButton.d.ts +5 -0
  134. package/dist/carousel/CarouselSlide.d.ts +12 -0
  135. package/dist/carousel/CarouselSlides.d.ts +10 -0
  136. package/dist/carousel/CarouselViewport.d.ts +9 -0
  137. package/dist/carousel/index.d.mts +18 -263
  138. package/dist/carousel/index.d.ts +18 -263
  139. package/dist/carousel/index.js +2 -1882
  140. package/dist/carousel/index.js.map +1 -1
  141. package/dist/carousel/index.mjs +428 -650
  142. package/dist/carousel/index.mjs.map +1 -1
  143. package/dist/carousel/types.d.ts +165 -0
  144. package/dist/carousel/useCarousel.d.ts +2 -0
  145. package/dist/carousel/useCarouselVisibility.d.ts +13 -0
  146. package/dist/carousel/useEvent.d.ts +7 -0
  147. package/dist/carousel/useIsMounted.d.ts +1 -0
  148. package/dist/carousel/useIsVisible.d.ts +6 -0
  149. package/dist/carousel/useResizeObserver.d.ts +2 -0
  150. package/dist/carousel/useScrollEnd.d.ts +3 -0
  151. package/dist/carousel/useSnapPoints.d.ts +10 -0
  152. package/dist/carousel/utils.d.ts +24 -0
  153. package/dist/checkbox/Checkbox.d.ts +10 -0
  154. package/dist/checkbox/CheckboxGroup.d.ts +18 -0
  155. package/dist/checkbox/CheckboxGroup.styles.d.ts +5 -0
  156. package/dist/checkbox/CheckboxGroupContext.d.ts +41 -0
  157. package/dist/checkbox/CheckboxIndicator.d.ts +9 -0
  158. package/dist/checkbox/CheckboxInput.d.ts +47 -0
  159. package/dist/checkbox/CheckboxInput.styles.d.ts +5 -0
  160. package/dist/checkbox/CheckboxLabel.d.ts +12 -0
  161. package/dist/checkbox/CheckboxLabel.styles.d.ts +5 -0
  162. package/dist/checkbox/index.d.mts +2 -120
  163. package/dist/checkbox/index.d.ts +2 -120
  164. package/dist/checkbox/index.js +2 -511
  165. package/dist/checkbox/index.js.map +1 -1
  166. package/dist/checkbox/index.mjs +135 -226
  167. package/dist/checkbox/index.mjs.map +1 -1
  168. package/dist/chip/Chip.d.ts +34 -0
  169. package/dist/chip/Chip.styles.d.ts +8 -0
  170. package/dist/chip/ChipClearButton.d.ts +10 -0
  171. package/dist/chip/ChipClearButton.styles.d.ts +10 -0
  172. package/dist/chip/ChipContent.d.ts +8 -0
  173. package/dist/chip/ChipIcon.d.ts +8 -0
  174. package/dist/chip/ChipLeadingIcon.d.ts +9 -0
  175. package/dist/chip/ChipTrailingIcon.d.ts +9 -0
  176. package/dist/chip/index.d.mts +10 -92
  177. package/dist/chip/index.d.ts +10 -92
  178. package/dist/chip/index.js +2 -908
  179. package/dist/chip/index.js.map +1 -1
  180. package/dist/chip/index.mjs +218 -324
  181. package/dist/chip/index.mjs.map +1 -1
  182. package/dist/chip/useChipContext.d.ts +4 -0
  183. package/dist/chip/useChipElement.d.ts +41 -0
  184. package/dist/chip/variants/dashed.d.ts +49 -0
  185. package/dist/chip/variants/index.d.mts +3 -0
  186. package/dist/chip/variants/index.d.ts +3 -0
  187. package/dist/chip/variants/outlined.d.ts +49 -0
  188. package/dist/chip/variants/tinted.d.ts +49 -0
  189. package/dist/collapsible/Content.d.ts +12 -0
  190. package/dist/collapsible/Root.d.ts +12 -0
  191. package/dist/collapsible/Trigger.d.ts +11 -0
  192. package/dist/collapsible/index.d.mts +4 -40
  193. package/dist/collapsible/index.d.ts +4 -40
  194. package/dist/collapsible/index.js +2 -109
  195. package/dist/collapsible/index.js.map +1 -1
  196. package/dist/collapsible/index.mjs +39 -58
  197. package/dist/collapsible/index.mjs.map +1 -1
  198. package/dist/collapsible/useRenderSlot.d.ts +3 -0
  199. package/dist/combobox/Combobox.d.ts +6 -0
  200. package/dist/combobox/ComboboxClearButton.d.ts +9 -0
  201. package/dist/combobox/ComboboxContext.d.ts +108 -0
  202. package/dist/combobox/ComboboxDisclosure.d.ts +13 -0
  203. package/dist/combobox/ComboboxEmpty.d.ts +11 -0
  204. package/dist/combobox/ComboboxGroup.d.ts +11 -0
  205. package/dist/combobox/ComboboxInput.d.ts +15 -0
  206. package/dist/combobox/ComboboxItem.d.ts +12 -0
  207. package/dist/combobox/ComboboxItemContext.d.ts +17 -0
  208. package/dist/combobox/ComboboxItemIndicator.d.ts +11 -0
  209. package/dist/combobox/ComboboxItemText.d.ts +10 -0
  210. package/dist/combobox/ComboboxItems.d.ts +11 -0
  211. package/dist/combobox/ComboboxItemsGroupContext.d.ts +8 -0
  212. package/dist/combobox/ComboboxLabel.d.ts +11 -0
  213. package/dist/combobox/ComboboxLeadingIcon.d.ts +7 -0
  214. package/dist/combobox/ComboboxPopover.d.ts +10 -0
  215. package/dist/combobox/ComboboxPortal.d.ts +2 -0
  216. package/dist/combobox/ComboboxSelectedItems.d.ts +4 -0
  217. package/dist/combobox/ComboboxTrigger.d.ts +11 -0
  218. package/dist/combobox/ComboboxTrigger.styles.d.ts +6 -0
  219. package/dist/combobox/index.d.mts +19 -271
  220. package/dist/combobox/index.d.ts +19 -271
  221. package/dist/combobox/index.js +2 -2588
  222. package/dist/combobox/index.js.map +1 -1
  223. package/dist/combobox/index.mjs +623 -1017
  224. package/dist/combobox/index.mjs.map +1 -1
  225. package/dist/combobox/tests/test-utils.d.ts +8 -0
  226. package/dist/combobox/types.d.ts +8 -0
  227. package/dist/combobox/useCombobox/multipleSelectionReducer.d.ts +13 -0
  228. package/dist/combobox/useCombobox/singleSelectionReducer.d.ts +8 -0
  229. package/dist/combobox/utils/index.d.mts +14 -0
  230. package/dist/combobox/utils/index.d.ts +14 -0
  231. package/dist/combobox/utils/useWidthIncreaseCallback.d.ts +2 -0
  232. package/dist/dialog/Dialog.d.ts +32 -0
  233. package/dist/dialog/DialogBody.d.ts +12 -0
  234. package/dist/dialog/DialogClose.d.ts +9 -0
  235. package/dist/dialog/DialogCloseButton.d.ts +9 -0
  236. package/dist/dialog/DialogContent.d.ts +14 -0
  237. package/dist/dialog/DialogContent.styles.d.ts +6 -0
  238. package/dist/dialog/DialogContext.d.ts +11 -0
  239. package/dist/dialog/DialogDescription.d.ts +9 -0
  240. package/dist/dialog/DialogFooter.d.ts +10 -0
  241. package/dist/dialog/DialogHeader.d.ts +10 -0
  242. package/dist/dialog/DialogOverlay.d.ts +9 -0
  243. package/dist/dialog/DialogPortal.d.ts +7 -0
  244. package/dist/dialog/DialogTitle.d.ts +9 -0
  245. package/dist/dialog/DialogTrigger.d.ts +17 -0
  246. package/dist/dialog/index.d.mts +25 -154
  247. package/dist/dialog/index.d.ts +25 -154
  248. package/dist/dialog/index.js +2 -1389
  249. package/dist/dialog/index.js.map +1 -1
  250. package/dist/dialog/index.mjs +163 -258
  251. package/dist/dialog/index.mjs.map +1 -1
  252. package/dist/divider/Divider.d.ts +30 -0
  253. package/dist/divider/Divider.styles.d.ts +9 -0
  254. package/dist/divider/DividerContent.d.ts +13 -0
  255. package/dist/divider/index.d.mts +4 -59
  256. package/dist/divider/index.d.ts +4 -59
  257. package/dist/divider/index.js +2 -224
  258. package/dist/divider/index.js.map +1 -1
  259. package/dist/divider/index.mjs +79 -100
  260. package/dist/divider/index.mjs.map +1 -1
  261. package/dist/divider/variants/intents.d.ts +17 -0
  262. package/dist/drawer/Drawer.d.ts +39 -0
  263. package/dist/drawer/DrawerBody.d.ts +11 -0
  264. package/dist/drawer/DrawerBody.styles.d.ts +5 -0
  265. package/dist/drawer/DrawerClose.d.ts +9 -0
  266. package/dist/drawer/DrawerCloseButton.d.ts +7 -0
  267. package/dist/drawer/DrawerContent.d.ts +10 -0
  268. package/dist/drawer/DrawerContent.styles.d.ts +6 -0
  269. package/dist/drawer/DrawerContext.d.ts +9 -0
  270. package/dist/drawer/DrawerDescription.d.ts +9 -0
  271. package/dist/drawer/DrawerFooter.d.ts +8 -0
  272. package/dist/drawer/DrawerHeader.d.ts +10 -0
  273. package/dist/drawer/DrawerOverlay.d.ts +9 -0
  274. package/dist/drawer/DrawerPortal.d.ts +7 -0
  275. package/dist/drawer/DrawerTitle.d.ts +9 -0
  276. package/dist/drawer/DrawerTrigger.d.ts +13 -0
  277. package/dist/drawer/index.d.mts +24 -141
  278. package/dist/drawer/index.d.ts +24 -141
  279. package/dist/drawer/index.js +2 -1400
  280. package/dist/drawer/index.js.map +1 -1
  281. package/dist/drawer/index.mjs +141 -230
  282. package/dist/drawer/index.mjs.map +1 -1
  283. package/dist/dropdown/Dropdown.d.ts +6 -0
  284. package/dist/dropdown/DropdownContext.d.ts +81 -0
  285. package/dist/dropdown/DropdownDivider.d.ts +10 -0
  286. package/dist/dropdown/DropdownGroup.d.ts +11 -0
  287. package/dist/dropdown/DropdownItem.d.ts +12 -0
  288. package/dist/dropdown/DropdownItemContext.d.ts +17 -0
  289. package/dist/dropdown/DropdownItemIndicator.d.ts +11 -0
  290. package/dist/dropdown/DropdownItemText.d.ts +9 -0
  291. package/dist/dropdown/DropdownItems.d.ts +21 -0
  292. package/dist/dropdown/DropdownItemsGroupContext.d.ts +8 -0
  293. package/dist/dropdown/DropdownLabel.d.ts +11 -0
  294. package/dist/dropdown/DropdownLeadingIcon.d.ts +7 -0
  295. package/dist/dropdown/DropdownPopover.d.ts +6 -0
  296. package/dist/dropdown/DropdownPortal.d.ts +2 -0
  297. package/dist/dropdown/DropdownTrigger.d.ts +12 -0
  298. package/dist/dropdown/DropdownTrigger.styles.d.ts +5 -0
  299. package/dist/dropdown/DropdownValue.d.ts +11 -0
  300. package/dist/dropdown/index.d.mts +16 -220
  301. package/dist/dropdown/index.d.ts +16 -220
  302. package/dist/dropdown/index.js +2 -2051
  303. package/dist/dropdown/index.js.map +1 -1
  304. package/dist/dropdown/index.mjs +352 -584
  305. package/dist/dropdown/index.mjs.map +1 -1
  306. package/dist/dropdown/types.d.ts +8 -0
  307. package/dist/dropdown/useDropdown.d.ts +41 -0
  308. package/dist/dropdown/utils.d.ts +13 -0
  309. package/dist/file-upload/FileUpload.d.ts +130 -0
  310. package/dist/file-upload/FileUploadAcceptedFile.d.ts +25 -0
  311. package/dist/file-upload/FileUploadContext.d.ts +17 -0
  312. package/dist/file-upload/FileUploadDropzone.d.ts +10 -0
  313. package/dist/file-upload/FileUploadItemDeleteTrigger.d.ts +11 -0
  314. package/dist/file-upload/FileUploadPreviewImage.d.ts +17 -0
  315. package/dist/file-upload/FileUploadRejectedFile.d.ts +24 -0
  316. package/dist/file-upload/FileUploadRejectedFileDeleteTrigger.d.ts +12 -0
  317. package/dist/file-upload/FileUploadTrigger.d.ts +12 -0
  318. package/dist/file-upload/constants.d.ts +29 -0
  319. package/dist/file-upload/index.d.mts +14 -262
  320. package/dist/file-upload/index.d.ts +14 -262
  321. package/dist/file-upload/index.js +2 -2255
  322. package/dist/file-upload/index.js.map +1 -1
  323. package/dist/file-upload/index.mjs +506 -834
  324. package/dist/file-upload/index.mjs.map +1 -1
  325. package/dist/file-upload/test-utils.d.ts +9 -0
  326. package/dist/file-upload/useFileUploadState.d.ts +88 -0
  327. package/dist/file-upload/utils.d.ts +40 -0
  328. package/dist/form-field/FormField.d.ts +21 -0
  329. package/dist/form-field/FormFieldAlertMessage.d.ts +9 -0
  330. package/dist/form-field/FormFieldCharactersCount.d.ts +26 -0
  331. package/dist/form-field/FormFieldContext.d.ts +49 -0
  332. package/dist/form-field/FormFieldControl.d.ts +12 -0
  333. package/dist/form-field/FormFieldErrorMessage.d.ts +9 -0
  334. package/dist/form-field/FormFieldHelperMessage.d.ts +9 -0
  335. package/dist/form-field/FormFieldLabel.d.ts +13 -0
  336. package/dist/form-field/FormFieldMessage.d.ts +8 -0
  337. package/dist/form-field/FormFieldProvider.d.ts +9 -0
  338. package/dist/form-field/FormFieldRequiredIndicator.d.ts +9 -0
  339. package/dist/form-field/FormFieldStateMessage.d.ts +10 -0
  340. package/dist/form-field/FormFieldSuccessMessage.d.ts +9 -0
  341. package/dist/form-field/index.d.mts +21 -176
  342. package/dist/form-field/index.d.ts +21 -176
  343. package/dist/form-field/index.js +2 -553
  344. package/dist/form-field/index.js.map +1 -1
  345. package/dist/form-field/index.mjs +246 -349
  346. package/dist/form-field/index.mjs.map +1 -1
  347. package/dist/icon/Icon.d.ts +17 -0
  348. package/dist/icon/Icon.styles.d.ts +6 -0
  349. package/dist/icon/index.d.mts +1 -28
  350. package/dist/icon/index.d.ts +1 -28
  351. package/dist/icon/index.js +2 -127
  352. package/dist/icon/index.js.map +1 -1
  353. package/dist/icon/index.mjs +3 -7
  354. package/dist/icon/index.mjs.map +1 -1
  355. package/dist/icon-button/IconButton.d.ts +10 -0
  356. package/dist/icon-button/IconButton.styles.d.ts +5 -0
  357. package/dist/icon-button/index.d.mts +1 -16
  358. package/dist/icon-button/index.d.ts +1 -16
  359. package/dist/icon-button/index.js +2 -980
  360. package/dist/icon-button/index.js.map +1 -1
  361. package/dist/icon-button/index.mjs +3 -9
  362. package/dist/icon-button/index.mjs.map +1 -1
  363. package/dist/input/Input.d.ts +14 -0
  364. package/dist/input/Input.styles.d.ts +11 -0
  365. package/dist/input/InputAddon.d.ts +9 -0
  366. package/dist/input/InputAddon.styles.d.ts +9 -0
  367. package/dist/input/InputClearButton.d.ts +12 -0
  368. package/dist/input/InputGroup.d.ts +17 -0
  369. package/dist/input/InputGroup.styles.d.ts +6 -0
  370. package/dist/input/InputGroupContext.d.ts +14 -0
  371. package/dist/input/InputIcon.d.ts +6 -0
  372. package/dist/input/InputLeadingAddon.d.ts +11 -0
  373. package/dist/input/InputLeadingIcon.d.ts +7 -0
  374. package/dist/input/InputTrailingAddon.d.ts +11 -0
  375. package/dist/input/InputTrailingIcon.d.ts +7 -0
  376. package/dist/input/index.d.mts +15 -72
  377. package/dist/input/index.d.ts +15 -72
  378. package/dist/input/index.js +2 -724
  379. package/dist/input/index.js.map +1 -1
  380. package/dist/input/index.mjs +453 -12
  381. package/dist/input/index.mjs.map +1 -1
  382. package/dist/input-otp/InputOTP.d.ts +85 -0
  383. package/dist/input-otp/InputOTP.styles.d.ts +10 -0
  384. package/dist/input-otp/InputOTPContext.d.ts +16 -0
  385. package/dist/input-otp/InputOTPGroup.d.ts +7 -0
  386. package/dist/input-otp/InputOTPSeparator.d.ts +7 -0
  387. package/dist/input-otp/InputOTPSlot.d.ts +12 -0
  388. package/dist/input-otp/index.d.mts +10 -128
  389. package/dist/input-otp/index.d.ts +10 -128
  390. package/dist/input-otp/index.js +2 -668
  391. package/dist/input-otp/index.js.map +1 -1
  392. package/dist/input-otp/index.mjs +295 -462
  393. package/dist/input-otp/index.mjs.map +1 -1
  394. package/dist/input-otp/useInputOTP.d.ts +45 -0
  395. package/dist/kbd/Kbd.d.ts +5 -0
  396. package/dist/kbd/index.d.mts +1 -9
  397. package/dist/kbd/index.d.ts +1 -9
  398. package/dist/kbd/index.js +2 -47
  399. package/dist/kbd/index.js.map +1 -1
  400. package/dist/kbd/index.mjs +15 -18
  401. package/dist/kbd/index.mjs.map +1 -1
  402. package/dist/label/Label.d.ts +9 -0
  403. package/dist/label/LabelRequiredIndicator.d.ts +6 -0
  404. package/dist/label/index.d.mts +5 -9
  405. package/dist/label/index.d.ts +5 -9
  406. package/dist/label/index.js +2 -78
  407. package/dist/label/index.js.map +1 -1
  408. package/dist/label/index.mjs +38 -5
  409. package/dist/label/index.mjs.map +1 -1
  410. package/dist/link-box/LinkBox.d.ts +8 -0
  411. package/dist/link-box/LinkBoxLink.d.ts +8 -0
  412. package/dist/link-box/LinkBoxRaised.d.ts +9 -0
  413. package/dist/link-box/index.d.mts +6 -31
  414. package/dist/link-box/index.d.ts +6 -31
  415. package/dist/link-box/index.js +2 -92
  416. package/dist/link-box/index.js.map +1 -1
  417. package/dist/link-box/index.mjs +34 -56
  418. package/dist/link-box/index.mjs.map +1 -1
  419. package/dist/pagination/Pagination.d.ts +8 -0
  420. package/dist/pagination/PaginationContext.d.ts +43 -0
  421. package/dist/pagination/PaginationEllipsis.d.ts +9 -0
  422. package/dist/pagination/PaginationFirstPageTrigger.d.ts +16 -0
  423. package/dist/pagination/PaginationItem.d.ts +17 -0
  424. package/dist/pagination/PaginationLastPageTrigger.d.ts +16 -0
  425. package/dist/pagination/PaginationNextTrigger.d.ts +16 -0
  426. package/dist/pagination/PaginationPages.d.ts +16 -0
  427. package/dist/pagination/PaginationPrevTrigger.d.ts +16 -0
  428. package/dist/pagination/index.d.mts +10 -135
  429. package/dist/pagination/index.d.ts +10 -135
  430. package/dist/pagination/index.js +2 -1353
  431. package/dist/pagination/index.js.map +1 -1
  432. package/dist/pagination/index.mjs +176 -269
  433. package/dist/pagination/index.mjs.map +1 -1
  434. package/dist/pagination/utils.d.ts +1 -0
  435. package/dist/popover/Popover.d.ts +9 -0
  436. package/dist/popover/PopoverAnchor.d.ts +9 -0
  437. package/dist/popover/PopoverArrow.d.ts +9 -0
  438. package/dist/popover/PopoverCloseButton.d.ts +10 -0
  439. package/dist/popover/PopoverContent.d.ts +10 -0
  440. package/dist/popover/PopoverContent.styles.d.ts +9 -0
  441. package/dist/popover/PopoverContext.d.ts +15 -0
  442. package/dist/popover/PopoverHeader.d.ts +10 -0
  443. package/dist/popover/PopoverPortal.d.ts +7 -0
  444. package/dist/popover/PopoverTrigger.d.ts +9 -0
  445. package/dist/popover/index.d.mts +17 -6
  446. package/dist/popover/index.d.ts +17 -6
  447. package/dist/popover/index.js +2 -1339
  448. package/dist/popover/index.js.map +1 -1
  449. package/dist/popover/index.mjs +239 -11
  450. package/dist/popover/index.mjs.map +1 -1
  451. package/dist/portal/Portal.d.ts +10 -0
  452. package/dist/portal/index.d.mts +1 -13
  453. package/dist/portal/index.d.ts +1 -13
  454. package/dist/portal/index.js +2 -37
  455. package/dist/portal/index.js.map +1 -1
  456. package/dist/portal/index.mjs +5 -8
  457. package/dist/portal/index.mjs.map +1 -1
  458. package/dist/progress/Progress.d.ts +16 -0
  459. package/dist/progress/ProgressBar.d.ts +6 -0
  460. package/dist/progress/ProgressBar.styles.d.ts +5 -0
  461. package/dist/progress/ProgressContext.d.ts +13 -0
  462. package/dist/progress/ProgressIndicator.d.ts +6 -0
  463. package/dist/progress/ProgressIndicator.styles.d.ts +7 -0
  464. package/dist/progress/ProgressLabel.d.ts +6 -0
  465. package/dist/progress/index.d.mts +9 -48
  466. package/dist/progress/index.d.ts +9 -48
  467. package/dist/progress/index.js +2 -240
  468. package/dist/progress/index.js.map +1 -1
  469. package/dist/progress/index.mjs +166 -5
  470. package/dist/progress/index.mjs.map +1 -1
  471. package/dist/progress-tracker/ProgressTracker.d.ts +27 -0
  472. package/dist/progress-tracker/ProgressTracker.styles.d.ts +1 -0
  473. package/dist/progress-tracker/ProgressTrackerContext.d.ts +15 -0
  474. package/dist/progress-tracker/ProgressTrackerStep.d.ts +12 -0
  475. package/dist/progress-tracker/ProgressTrackerStep.styles.d.ts +10 -0
  476. package/dist/progress-tracker/ProgressTrackerStepIndicator.d.ts +15 -0
  477. package/dist/progress-tracker/ProgressTrackerStepIndicator.styles.d.ts +7 -0
  478. package/dist/progress-tracker/ProgressTrackerStepLabel.d.ts +9 -0
  479. package/dist/progress-tracker/index.d.mts +10 -80
  480. package/dist/progress-tracker/index.d.ts +10 -80
  481. package/dist/progress-tracker/index.js +2 -571
  482. package/dist/progress-tracker/index.js.map +1 -1
  483. package/dist/progress-tracker/index.mjs +115 -183
  484. package/dist/progress-tracker/index.mjs.map +1 -1
  485. package/dist/radio-group/Radio.d.ts +9 -0
  486. package/dist/radio-group/RadioGroup.d.ts +54 -0
  487. package/dist/radio-group/RadioGroup.styles.d.ts +5 -0
  488. package/dist/radio-group/RadioGroupContext.d.ts +5 -0
  489. package/dist/radio-group/RadioGroupProvider.d.ts +7 -0
  490. package/dist/radio-group/RadioIndicator.d.ts +18 -0
  491. package/dist/radio-group/RadioIndicator.styles.d.ts +5 -0
  492. package/dist/radio-group/RadioInput.d.ts +25 -0
  493. package/dist/radio-group/RadioInput.styles.d.ts +5 -0
  494. package/dist/radio-group/RadioLabel.d.ts +20 -0
  495. package/dist/radio-group/RadioLabel.styles.d.ts +5 -0
  496. package/dist/radio-group/index.d.mts +5 -98
  497. package/dist/radio-group/index.d.ts +5 -98
  498. package/dist/radio-group/index.js +2 -318
  499. package/dist/radio-group/index.js.map +1 -1
  500. package/dist/radio-group/index.mjs +105 -174
  501. package/dist/radio-group/index.mjs.map +1 -1
  502. package/dist/rating/Rating.d.ts +52 -0
  503. package/dist/rating/RatingStar.d.ts +10 -0
  504. package/dist/rating/RatingStar.styles.d.ts +14 -0
  505. package/dist/rating/index.d.mts +1 -78
  506. package/dist/rating/index.d.ts +1 -78
  507. package/dist/rating/index.js +2 -363
  508. package/dist/rating/index.js.map +1 -1
  509. package/dist/rating/index.mjs +125 -170
  510. package/dist/rating/index.mjs.map +1 -1
  511. package/dist/rating/types.d.ts +1 -0
  512. package/dist/rating/utils.d.ts +8 -0
  513. package/dist/scrolling-list/ScrollingList.d.ts +57 -0
  514. package/dist/scrolling-list/ScrollingListControls.d.ts +18 -0
  515. package/dist/scrolling-list/ScrollingListItem.d.ts +17 -0
  516. package/dist/scrolling-list/ScrollingListItems.d.ts +11 -0
  517. package/dist/scrolling-list/ScrollingListNextButton.d.ts +5 -0
  518. package/dist/scrolling-list/ScrollingListPrevButton.d.ts +5 -0
  519. package/dist/scrolling-list/ScrollingListSkipButton.d.ts +9 -0
  520. package/dist/scrolling-list/index.d.mts +14 -117
  521. package/dist/scrolling-list/index.d.ts +14 -117
  522. package/dist/scrolling-list/index.js +2 -1428
  523. package/dist/scrolling-list/index.js.map +1 -1
  524. package/dist/scrolling-list/index.mjs +193 -325
  525. package/dist/scrolling-list/index.mjs.map +1 -1
  526. package/dist/scrolling-list/useFocusWithinScroll.d.ts +3 -0
  527. package/dist/segmented-gauge/SegmentedGauge.d.ts +66 -0
  528. package/dist/segmented-gauge/SegmentedGaugeContext.d.ts +14 -0
  529. package/dist/segmented-gauge/SegmentedGaugeLabel.d.ts +9 -0
  530. package/dist/segmented-gauge/SegmentedGaugeSegment.d.ts +12 -0
  531. package/dist/segmented-gauge/SegmentedGaugeTrack.d.ts +8 -0
  532. package/dist/segmented-gauge/index.d.mts +9 -101
  533. package/dist/segmented-gauge/index.d.ts +9 -101
  534. package/dist/segmented-gauge/index.js +2 -274
  535. package/dist/segmented-gauge/index.js.map +1 -1
  536. package/dist/segmented-gauge/index.mjs +132 -178
  537. package/dist/segmented-gauge/index.mjs.map +1 -1
  538. package/dist/select/Select.d.ts +6 -0
  539. package/dist/select/SelectContext.d.ts +59 -0
  540. package/dist/select/SelectGroup.d.ts +11 -0
  541. package/dist/select/SelectItem.d.ts +11 -0
  542. package/dist/select/SelectItems.d.ts +10 -0
  543. package/dist/select/SelectItemsGroupContext.d.ts +9 -0
  544. package/dist/select/SelectLabel.d.ts +8 -0
  545. package/dist/select/SelectLeadingIcon.d.ts +7 -0
  546. package/dist/select/SelectPlaceholder.d.ts +10 -0
  547. package/dist/select/SelectTrigger.d.ts +16 -0
  548. package/dist/select/SelectTrigger.styles.d.ts +5 -0
  549. package/dist/select/SelectValue.d.ts +15 -0
  550. package/dist/select/index.d.mts +12 -158
  551. package/dist/select/index.d.ts +12 -158
  552. package/dist/select/index.js +2 -581
  553. package/dist/select/index.js.map +1 -1
  554. package/dist/select/index.mjs +207 -339
  555. package/dist/select/index.mjs.map +1 -1
  556. package/dist/select/types.d.ts +6 -0
  557. package/dist/select/utils.d.ts +4 -0
  558. package/dist/skeleton/Skeleton.d.ts +17 -0
  559. package/dist/skeleton/Skeleton.styles.d.ts +5 -0
  560. package/dist/skeleton/SkeletonItem.d.ts +31 -0
  561. package/dist/skeleton/SkeletonItem.styles.d.ts +8 -0
  562. package/dist/skeleton/index.d.mts +8 -67
  563. package/dist/skeleton/index.d.ts +8 -67
  564. package/dist/skeleton/index.js +2 -206
  565. package/dist/skeleton/index.js.map +1 -1
  566. package/dist/skeleton/index.mjs +64 -96
  567. package/dist/skeleton/index.mjs.map +1 -1
  568. package/dist/slider/Slider.d.ts +60 -0
  569. package/dist/slider/Slider.styles.d.ts +1 -0
  570. package/dist/slider/SliderContext.d.ts +7 -0
  571. package/dist/slider/SliderThumb.d.ts +14 -0
  572. package/dist/slider/SliderThumb.styles.d.ts +5 -0
  573. package/dist/slider/SliderTrack.d.ts +14 -0
  574. package/dist/slider/SliderTrack.styles.d.ts +9 -0
  575. package/dist/slider/index.d.mts +8 -97
  576. package/dist/slider/index.d.ts +8 -97
  577. package/dist/slider/index.js +2 -220
  578. package/dist/slider/index.js.map +1 -1
  579. package/dist/slider/index.mjs +94 -111
  580. package/dist/slider/index.mjs.map +1 -1
  581. package/dist/slot/Slot.d.ts +12 -0
  582. package/dist/slot/index.d.mts +1 -16
  583. package/dist/slot/index.d.ts +1 -16
  584. package/dist/slot/index.js +2 -51
  585. package/dist/slot/index.js.map +1 -1
  586. package/dist/slot/index.mjs +5 -9
  587. package/dist/slot/index.mjs.map +1 -1
  588. package/dist/snackbar/Snackbar.d.ts +29 -0
  589. package/dist/snackbar/SnackbarItem.d.ts +49 -0
  590. package/dist/snackbar/SnackbarItem.styles.d.ts +10 -0
  591. package/dist/snackbar/SnackbarItemAction.d.ts +10 -0
  592. package/dist/snackbar/SnackbarItemClose.d.ts +9 -0
  593. package/dist/snackbar/SnackbarItemContext.d.ts +8 -0
  594. package/dist/snackbar/SnackbarItemIcon.d.ts +7 -0
  595. package/dist/snackbar/SnackbarRegion.d.ts +30 -0
  596. package/dist/snackbar/SnackbarRegion.styles.d.ts +5 -0
  597. package/dist/snackbar/index.d.mts +13 -158
  598. package/dist/snackbar/index.d.ts +13 -158
  599. package/dist/snackbar/index.js +2 -1756
  600. package/dist/snackbar/index.js.map +1 -1
  601. package/dist/snackbar/index.mjs +237 -429
  602. package/dist/snackbar/index.mjs.map +1 -1
  603. package/dist/snackbar/snackbarVariants.d.ts +82 -0
  604. package/dist/snackbar/useSnackbarGlobalStore.d.ts +18 -0
  605. package/dist/snackbar/useSwipe.d.ts +15 -0
  606. package/dist/spinner/Spinner.d.ts +9 -0
  607. package/dist/spinner/Spinner.styles.d.ts +7 -0
  608. package/dist/spinner/index.d.mts +1 -21
  609. package/dist/spinner/index.d.ts +1 -21
  610. package/dist/spinner/index.js +2 -139
  611. package/dist/spinner/index.js.map +1 -1
  612. package/dist/spinner/index.mjs +3 -7
  613. package/dist/spinner/index.mjs.map +1 -1
  614. package/dist/stepper/Stepper.d.ts +9 -0
  615. package/dist/stepper/StepperButton.d.ts +14 -0
  616. package/dist/stepper/StepperInput.d.ts +7 -0
  617. package/dist/stepper/index.d.mts +9 -81
  618. package/dist/stepper/index.d.ts +9 -81
  619. package/dist/stepper/index.js +2 -1847
  620. package/dist/stepper/index.js.map +1 -1
  621. package/dist/stepper/index.mjs +143 -195
  622. package/dist/stepper/index.mjs.map +1 -1
  623. package/dist/stepper/types.d.ts +46 -0
  624. package/dist/stepper/useStepper.d.ts +2 -0
  625. package/dist/switch/Switch.d.ts +6 -0
  626. package/dist/switch/SwitchInput.d.ts +51 -0
  627. package/dist/switch/SwitchInput.styles.d.ts +16 -0
  628. package/dist/switch/SwitchLabel.d.ts +17 -0
  629. package/dist/switch/SwitchLabel.styles.d.ts +5 -0
  630. package/dist/switch/index.d.mts +1 -64
  631. package/dist/switch/index.d.ts +1 -64
  632. package/dist/switch/index.js +2 -327
  633. package/dist/switch/index.js.map +1 -1
  634. package/dist/switch/index.mjs +90 -130
  635. package/dist/switch/index.mjs.map +1 -1
  636. package/dist/tabs/Tabs.d.ts +24 -0
  637. package/dist/tabs/TabsContent.d.ts +22 -0
  638. package/dist/tabs/TabsContent.styles.d.ts +3 -0
  639. package/dist/tabs/TabsContext.d.ts +7 -0
  640. package/dist/tabs/TabsList.d.ts +20 -0
  641. package/dist/tabs/TabsList.styles.d.ts +3 -0
  642. package/dist/tabs/TabsPopover.d.ts +29 -0
  643. package/dist/tabs/TabsPopoverAbstraction.d.ts +27 -0
  644. package/dist/tabs/TabsRoot.styles.d.ts +1 -0
  645. package/dist/tabs/TabsTrigger.d.ts +41 -0
  646. package/dist/tabs/TabsTrigger.styles.d.ts +8 -0
  647. package/dist/tabs/index.d.mts +13 -137
  648. package/dist/tabs/index.d.ts +13 -137
  649. package/dist/tabs/index.js +2 -1830
  650. package/dist/tabs/index.js.map +1 -1
  651. package/dist/tabs/index.mjs +224 -350
  652. package/dist/tabs/index.mjs.map +1 -1
  653. package/dist/tabs/useResizeObserver.d.ts +8 -0
  654. package/dist/tag/Tag.d.ts +17 -0
  655. package/dist/tag/Tag.styles.d.ts +8 -0
  656. package/dist/tag/index.d.mts +1 -29
  657. package/dist/tag/index.d.ts +1 -29
  658. package/dist/tag/index.js +2 -283
  659. package/dist/tag/index.js.map +1 -1
  660. package/dist/tag/index.mjs +66 -90
  661. package/dist/tag/index.mjs.map +1 -1
  662. package/dist/tag/variants/filled.d.ts +41 -0
  663. package/dist/tag/variants/index.d.mts +3 -0
  664. package/dist/tag/variants/index.d.ts +3 -0
  665. package/dist/tag/variants/outlined.d.ts +37 -0
  666. package/dist/tag/variants/tinted.d.ts +37 -0
  667. package/dist/text-link/TextLink.d.ts +16 -0
  668. package/dist/text-link/index.d.mts +1 -20
  669. package/dist/text-link/index.d.ts +1 -20
  670. package/dist/text-link/index.js +2 -100
  671. package/dist/text-link/index.js.map +1 -1
  672. package/dist/text-link/index.mjs +3 -6
  673. package/dist/text-link/index.mjs.map +1 -1
  674. package/dist/textarea/Textarea.d.ts +14 -0
  675. package/dist/textarea/TextareaClearButton.d.ts +10 -0
  676. package/dist/textarea/TextareaGroup.d.ts +6 -0
  677. package/dist/textarea/TextareaLeadingIcon.d.ts +7 -0
  678. package/dist/textarea/TextareaTrailingIcon.d.ts +7 -0
  679. package/dist/textarea/index.d.mts +10 -53
  680. package/dist/textarea/index.d.ts +10 -53
  681. package/dist/textarea/index.js +2 -797
  682. package/dist/textarea/index.js.map +1 -1
  683. package/dist/textarea/index.mjs +50 -83
  684. package/dist/textarea/index.mjs.map +1 -1
  685. package/dist/toast/Toast.d.ts +4 -0
  686. package/dist/toast/Toast.styles.d.ts +10 -0
  687. package/dist/toast/index.d.mts +10 -53
  688. package/dist/toast/index.d.ts +10 -53
  689. package/dist/toast/index.js +2 -1454
  690. package/dist/toast/index.js.map +1 -1
  691. package/dist/toast/index.mjs +126 -180
  692. package/dist/toast/index.mjs.map +1 -1
  693. package/dist/toast/types.d.ts +41 -0
  694. package/dist/toast/useRenderSlot.d.ts +3 -0
  695. package/dist/toast/useToastManager.d.ts +2 -0
  696. package/dist/visually-hidden/VisuallyHidden.d.ts +12 -0
  697. package/dist/visually-hidden/index.d.mts +1 -16
  698. package/dist/visually-hidden/index.d.ts +1 -16
  699. package/dist/visually-hidden/index.js +2 -67
  700. package/dist/visually-hidden/index.js.map +1 -1
  701. package/dist/visually-hidden/index.mjs +3 -6
  702. package/dist/visually-hidden/index.mjs.map +1 -1
  703. package/package.json +6 -6
  704. package/dist/Input-N8AWWSmt.d.mts +0 -41
  705. package/dist/Input-N8AWWSmt.d.ts +0 -41
  706. package/dist/InputTrailingIcon-BBp7sE6D.d.mts +0 -20
  707. package/dist/InputTrailingIcon-ZZx8PoJy.d.ts +0 -20
  708. package/dist/LabelRequiredIndicator-DRnCzHMU.d.mts +0 -19
  709. package/dist/LabelRequiredIndicator-DRnCzHMU.d.ts +0 -19
  710. package/dist/chunk-2YM6GKWW.mjs.map +0 -1
  711. package/dist/chunk-6QCEPQ3U.mjs +0 -26
  712. package/dist/chunk-6QCEPQ3U.mjs.map +0 -1
  713. package/dist/chunk-7EWSMIZU.mjs +0 -214
  714. package/dist/chunk-7EWSMIZU.mjs.map +0 -1
  715. package/dist/chunk-DCXWGQVZ.mjs +0 -53
  716. package/dist/chunk-DCXWGQVZ.mjs.map +0 -1
  717. package/dist/chunk-GAK4SC2F.mjs.map +0 -1
  718. package/dist/chunk-GPJMLIHC.mjs +0 -308
  719. package/dist/chunk-GPJMLIHC.mjs.map +0 -1
  720. package/dist/chunk-HLXYG643.mjs +0 -52
  721. package/dist/chunk-HLXYG643.mjs.map +0 -1
  722. package/dist/chunk-KEGAAGJW.mjs +0 -36
  723. package/dist/chunk-KEGAAGJW.mjs.map +0 -1
  724. package/dist/chunk-RKPP7ZOK.mjs.map +0 -1
  725. package/dist/chunk-UMUMFMFB.mjs +0 -68
  726. package/dist/chunk-UMUMFMFB.mjs.map +0 -1
  727. package/dist/chunk-VBX7BTNU.mjs +0 -614
  728. package/dist/chunk-VBX7BTNU.mjs.map +0 -1
  729. package/dist/chunk-XZ47F6TP.mjs.map +0 -1
  730. package/dist/index-Cno_GFuW.d.mts +0 -93
  731. package/dist/index-Cno_GFuW.d.ts +0 -93
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/combobox/ComboboxContext.tsx","../../src/combobox/useCombobox/multipleSelectionReducer.ts","../../src/combobox/utils/index.ts","../../src/combobox/useCombobox/singleSelectionReducer.ts","../../src/combobox/Combobox.tsx","../../src/combobox/ComboboxClearButton.tsx","../../src/combobox/ComboboxDisclosure.tsx","../../src/combobox/ComboboxEmpty.tsx","../../src/combobox/ComboboxGroup.tsx","../../src/combobox/ComboboxItemsGroupContext.tsx","../../src/combobox/ComboboxInput.tsx","../../src/combobox/ComboboxItem.tsx","../../src/combobox/ComboboxItemContext.tsx","../../src/combobox/ComboboxItemIndicator.tsx","../../src/combobox/ComboboxItems.tsx","../../src/combobox/ComboboxItemText.tsx","../../src/combobox/ComboboxLabel.tsx","../../src/combobox/ComboboxLeadingIcon.tsx","../../src/combobox/ComboboxPopover.tsx","../../src/combobox/ComboboxPortal.tsx","../../src/combobox/ComboboxSelectedItems.tsx","../../src/combobox/ComboboxTrigger.tsx","../../src/combobox/ComboboxTrigger.styles.tsx","../../src/combobox/utils/useWidthIncreaseCallback.ts","../../src/combobox/index.ts"],"sourcesContent":["/* eslint-disable max-lines-per-function */\nimport { useFormFieldControl } from '@spark-ui/components/form-field'\nimport { useCombinedState } from '@spark-ui/hooks/use-combined-state'\nimport { useCombobox, useMultipleSelection } from 'downshift'\nimport {\n createContext,\n Dispatch,\n Fragment,\n PropsWithChildren,\n RefObject,\n SetStateAction,\n useContext,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react'\n\nimport { Popover } from '../popover'\nimport { type ComboboxItem, type DownshiftState, type ItemsMap } from './types'\nimport { multipleSelectionReducer } from './useCombobox/multipleSelectionReducer'\nimport { singleSelectionReducer } from './useCombobox/singleSelectionReducer'\nimport { getElementByIndex, getItemsFromChildren, hasChildComponent } from './utils'\n\nexport interface ComboboxContextState extends DownshiftState {\n itemsMap: ItemsMap\n filteredItemsMap: ItemsMap\n highlightedItem: ComboboxItem | undefined\n hasPopover: boolean\n areSelectedItemsInTrigger: boolean\n multiple: boolean\n disabled: boolean\n readOnly: boolean\n wrap?: boolean\n state?: 'error' | 'alert' | 'success'\n lastInteractionType: 'mouse' | 'keyboard'\n setHasPopover: Dispatch<SetStateAction<boolean>>\n setAreSelectedItemsInTrigger: Dispatch<SetStateAction<boolean>>\n setLastInteractionType: (type: 'mouse' | 'keyboard') => void\n setOnInputValueChange: Dispatch<SetStateAction<((v: string) => void) | null>>\n innerInputRef: RefObject<HTMLInputElement | null>\n triggerAreaRef: RefObject<HTMLDivElement | null>\n isLoading?: boolean\n isTyping?: boolean\n setIsTyping: Dispatch<SetStateAction<boolean>>\n}\n\nexport type ComboboxContextCommonProps = PropsWithChildren<{\n /**\n * The controlled open state of the select. Must be used in conjunction with `onOpenChange`.\n */\n open?: boolean\n /**\n * Event handler called when the open state of the select changes.\n */\n onOpenChange?: (isOpen: boolean) => void\n /**\n * The open state of the select when it is initially rendered. Use when you do not need to control its open state.\n */\n defaultOpen?: boolean\n /**\n * Use `state` prop to assign a specific state to the combobox, choosing from: `error`, `alert` and `success`. By doing so, the outline styles will be updated.\n */\n state?: 'error' | 'alert' | 'success'\n /**\n * When true, prevents the user from interacting with the combobox.\n */\n disabled?: boolean\n /**\n * Sets the combobox as interactive or not.\n */\n readOnly?: boolean\n /**\n * When true, the items will be filtered depending on the value of the input (not case-sensitive).\n */\n filtering?: 'none' | 'auto' | 'strict'\n /**\n * By default, the combobox will clear or restore the input value to the selected item value on blur.\n */\n allowCustomValue?: boolean\n /**\n * In multiple selection, many selected items might be displayed. Be default, the combobox trigger will expand vertically to display them all.\n * If you wish to keep every item on a single line, disabled this property.\n */\n wrap?: boolean\n /**\n * Display a spinner to indicate to the user that the combobox is loading results for .\n */\n isLoading?: boolean\n}>\n\ninterface ComboboxPropsSingle {\n /**\n * Prop 'multiple' indicating whether multiple values are allowed.\n */\n multiple?: false\n /**\n * The value of the select when initially rendered. Use when you do not need to control the state of the select.\n */\n defaultValue?: string\n /**\n * The controlled value of the select. Should be used in conjunction with `onValueChange`.\n */\n value?: string | null\n /**\n * Event handler called when the value changes.\n */\n onValueChange?: (value: string) => void\n}\n\ninterface ComboboxPropsMultiple {\n /**\n * Prop 'multiple' indicating whether multiple values are allowed.\n */\n multiple: true\n /**\n * The value of the select when initially rendered. Use when you do not need to control the state of the select.\n */\n defaultValue?: string[]\n /**\n * The controlled value of the select. Should be used in conjunction with `onValueChange`.\n */\n value?: string[]\n /**\n * Event handler called when the value changes.\n */\n onValueChange?: (value: string[]) => void\n}\n\nexport type ComboboxContextProps = ComboboxContextCommonProps &\n (ComboboxPropsSingle | ComboboxPropsMultiple)\n\nconst ComboboxContext = createContext<ComboboxContextState | null>(null)\n\nconst getFilteredItemsMap = (map: ItemsMap, inputValue: string | undefined): ItemsMap => {\n if (!inputValue) return map\n\n return new Map(\n Array.from(map).filter(([_, { text }]) => text.toLowerCase().includes(inputValue.toLowerCase()))\n )\n}\n\nexport const ID_PREFIX = ':combobox'\n\nexport const ComboboxProvider = ({\n children,\n state: stateProp,\n allowCustomValue = false,\n filtering = 'auto',\n disabled: disabledProp = false,\n multiple = false,\n readOnly: readOnlyProp = false,\n wrap = true,\n // Value\n value: controlledValue,\n defaultValue,\n onValueChange,\n // Open\n open: controlledOpen,\n defaultOpen,\n onOpenChange,\n isLoading,\n}: ComboboxContextProps) => {\n const isMounted = useRef(false)\n\n // Input state\n const [inputValue, setInputValue] = useState<string | undefined>('')\n const [isTyping, setIsTyping] = useState<boolean>(filtering === 'strict')\n const triggerAreaRef = useRef<HTMLDivElement>(null)\n const innerInputRef = useRef<HTMLInputElement>(null)\n const [onInputValueChange, setOnInputValueChange] = useState<((v: string) => void) | null>(null)\n\n const [comboboxValue] = useCombinedState(controlledValue, defaultValue)\n\n const shouldFilterItems = filtering === 'strict' || (filtering === 'auto' && isTyping)\n\n // Items state\n const [itemsMap, setItemsMap] = useState<ItemsMap>(getItemsFromChildren(children))\n const [filteredItemsMap, setFilteredItems] = useState(\n shouldFilterItems ? getFilteredItemsMap(itemsMap, inputValue) : itemsMap\n )\n\n const [selectedItem, setSelectedItem] = useState<ComboboxItem | null>(\n itemsMap.get(comboboxValue as string) || null\n )\n\n const [selectedItems, setSelectedItems] = useState<ComboboxItem[]>(\n comboboxValue\n ? [...itemsMap.values()].filter(item => (comboboxValue as string[]).includes(item.value))\n : []\n )\n\n const onInternalSelectedItemChange = (item: ComboboxItem | null) => {\n setIsTyping(false)\n\n if (item?.value !== selectedItem?.value) {\n setSelectedItem(item)\n setTimeout(() => {\n onValueChange?.(item?.value as string & string[])\n }, 0)\n }\n }\n\n const onInternalSelectedItemsChange = (items: ComboboxItem[]) => {\n setSelectedItems(items)\n setTimeout(() => {\n onValueChange?.(items.map(i => i.value) as string & string[])\n }, 0)\n }\n\n // Sync internal state with controlled value\n useEffect(() => {\n if (!isMounted.current) {\n isMounted.current = true\n\n return\n }\n\n if (multiple) {\n const newSelectedItems = (comboboxValue as string[]).reduce(\n (accum: ComboboxItem[], value) => {\n const match = itemsMap.get(value)\n\n return match ? [...accum, match] : accum\n },\n []\n )\n\n setSelectedItems(comboboxValue ? newSelectedItems : [])\n } else {\n setSelectedItem(itemsMap.get(comboboxValue as string) || null)\n }\n }, [multiple ? JSON.stringify(comboboxValue) : comboboxValue])\n\n // Form field state\n const field = useFormFieldControl()\n\n const internalFieldLabelID = `${ID_PREFIX}-label-${useId()}`\n const internalFieldID = `${ID_PREFIX}-field-${useId()}`\n const id = field.id || internalFieldID\n const labelId = field.labelId || internalFieldLabelID\n\n const state = field.state || stateProp\n const disabled = field.disabled ?? disabledProp\n const readOnly = field.readOnly ?? readOnlyProp\n\n const [hasPopover, setHasPopover] = useState<boolean>(\n hasChildComponent(children, 'Combobox.Popover')\n )\n\n const [areSelectedItemsInTrigger, setAreSelectedItemsInTrigger] = useState(false)\n\n const [lastInteractionType, setLastInteractionType] = useState<'mouse' | 'keyboard'>('mouse')\n\n useEffect(() => {\n setFilteredItems(shouldFilterItems ? getFilteredItemsMap(itemsMap, inputValue) : itemsMap)\n }, [inputValue, itemsMap])\n\n const multiselect = useMultipleSelection<ComboboxItem>({\n selectedItems,\n stateReducer: (state, { type, changes }) => {\n const types = useMultipleSelection.stateChangeTypes\n\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (type) {\n case types.SelectedItemKeyDownBackspace:\n case types.SelectedItemKeyDownDelete: {\n onInternalSelectedItemsChange(changes.selectedItems || [])\n\n let activeIndex\n\n if (type === types.SelectedItemKeyDownDelete) {\n const isLastItem = state?.activeIndex === changes.selectedItems?.length\n activeIndex = isLastItem ? -1 : state.activeIndex\n } else {\n const hasItemBefore = (changes?.activeIndex || 0) - 1 >= 0\n activeIndex = hasItemBefore ? state.activeIndex - 1 : changes?.activeIndex\n }\n\n return {\n ...changes,\n activeIndex,\n }\n }\n case types.SelectedItemClick:\n if (innerInputRef.current) {\n innerInputRef.current.focus()\n }\n\n return {\n ...changes,\n activeIndex: -1, // the focus will remain on the input\n }\n case types.FunctionRemoveSelectedItem:\n return {\n ...changes,\n activeIndex: -1, // the focus will remain on the input\n }\n case types.DropdownKeyDownNavigationPrevious:\n downshift.closeMenu()\n\n return changes\n default:\n return changes\n }\n },\n })\n\n const filteredItems = Array.from(filteredItemsMap.values())\n\n useEffect(() => {\n onInputValueChange?.(inputValue || '')\n }, [inputValue])\n\n /**\n * - props: https://github.com/downshift-js/downshift/tree/master/src/hooks/useCombobox#basic-props\n * - state (for state reducer): https://github.com/downshift-js/downshift/tree/master/src/hooks/useCombobox#statechangetypes\n * - output: https://github.com/downshift-js/downshift/tree/master/src/hooks/useCombobox#returned-props\n */\n const downshift = useCombobox<ComboboxItem>({\n inputId: id,\n items: filteredItems,\n selectedItem: multiple ? undefined : selectedItem,\n id,\n labelId,\n // Input\n inputValue,\n onInputValueChange: ({ inputValue: newInputValue }) => {\n setInputValue(newInputValue)\n\n if (shouldFilterItems) {\n const filtered = getFilteredItemsMap(itemsMap, newInputValue || '')\n setFilteredItems(filtered)\n }\n },\n // Open\n initialIsOpen: defaultOpen,\n ...(controlledOpen != null && { isOpen: controlledOpen }),\n onIsOpenChange: changes => {\n if (changes.isOpen != null) {\n onOpenChange?.(changes.isOpen)\n }\n },\n // Custom Spark item object parsing\n itemToString: item => {\n return (item as ComboboxItem)?.text\n },\n isItemDisabled: item => {\n const isFilteredOut =\n !!inputValue &&\n !filteredItems.some(filteredItem => {\n return item.value === filteredItem.value\n })\n\n return item.disabled || isFilteredOut\n },\n // Main reducer\n stateReducer: multiple\n ? multipleSelectionReducer({\n multiselect,\n selectedItems,\n allowCustomValue,\n setSelectedItems: onInternalSelectedItemsChange,\n triggerAreaRef,\n items: itemsMap,\n })\n : singleSelectionReducer({\n allowCustomValue,\n setSelectedItem: onInternalSelectedItemChange,\n filteredItems: [...filteredItemsMap.values()],\n }),\n /**\n * Downshift default behaviour is to scroll into view the highlighted item when the dropdown opens. This behaviour is not stable and scrolls the dropdown to the bottom of the screen.\n */\n scrollIntoView: node => {\n if (node) {\n node.scrollIntoView({ block: 'nearest' })\n }\n\n return undefined\n },\n })\n\n /**\n * Indices in a Map are set when an element is added to the Map.\n * If for some reason, in the Combobox:\n * - items order changes\n * - items are added\n * - items are removed\n *\n * The Map must be rebuilt from the new children in order to preserve logical indices.\n *\n * Downshift is heavily indices based for keyboard navigation, so it it important.\n */\n useEffect(() => {\n const newMap = getItemsFromChildren(children)\n\n const previousItems = [...itemsMap.values()]\n const newItems = [...newMap.values()]\n\n const hasItemsChanges =\n previousItems.length !== newItems.length ||\n previousItems.some((item, index) => {\n const hasUpdatedValue = item.value !== newItems[index]?.value\n const hasUpdatedText = item.text !== newItems[index]?.text\n\n return hasUpdatedValue || hasUpdatedText\n })\n\n if (hasItemsChanges) {\n setItemsMap(newMap)\n }\n }, [children])\n\n /**\n * Warning:\n * Downshift is expecting the items list to always be rendered, as per a11y guidelines.\n * This is why the `Popover` is always opened in this component, but visually hidden instead from Combobox.Popover.\n */\n const [WrapperComponent, wrapperProps] = hasPopover ? [Popover, { open: true }] : [Fragment, {}]\n\n return (\n <ComboboxContext.Provider\n value={{\n // Data\n itemsMap,\n filteredItemsMap,\n highlightedItem: getElementByIndex(filteredItemsMap, downshift.highlightedIndex),\n // State\n multiple,\n disabled,\n readOnly,\n areSelectedItemsInTrigger,\n setAreSelectedItemsInTrigger,\n hasPopover,\n setHasPopover,\n state,\n lastInteractionType,\n setLastInteractionType,\n wrap,\n // Refs\n innerInputRef,\n triggerAreaRef,\n // Downshift state\n ...downshift,\n ...multiselect,\n setInputValue,\n selectItem: onInternalSelectedItemChange,\n setSelectedItems: onInternalSelectedItemsChange,\n isLoading,\n setOnInputValueChange,\n isTyping,\n setIsTyping,\n }}\n >\n <WrapperComponent {...wrapperProps}>{children}</WrapperComponent>\n </ComboboxContext.Provider>\n )\n}\n\nexport const useComboboxContext = () => {\n const context = useContext(ComboboxContext)\n\n if (!context) {\n throw Error('useComboboxContext must be used within a Combobox provider')\n }\n\n return context\n}\n","import { useCombobox, UseComboboxProps, UseMultipleSelectionReturnValue } from 'downshift'\nimport { RefObject } from 'react'\n\nimport { ComboboxItem, ItemsMap } from '../types'\nimport { getIndexByKey } from '../utils'\n\ninterface Props {\n allowCustomValue?: boolean\n items: ItemsMap\n selectedItems: ComboboxItem[]\n multiselect: UseMultipleSelectionReturnValue<ComboboxItem>\n setSelectedItems: (items: ComboboxItem[]) => void\n triggerAreaRef: RefObject<HTMLDivElement | null>\n}\n\nexport const multipleSelectionReducer = ({\n multiselect,\n selectedItems,\n allowCustomValue = false,\n setSelectedItems,\n triggerAreaRef,\n items,\n}: Props) => {\n const reducer: UseComboboxProps<ComboboxItem>['stateReducer'] = (_, { changes, type }) => {\n const isFocusInsideTriggerArea = triggerAreaRef.current?.contains?.(document.activeElement)\n\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (type) {\n case useCombobox.stateChangeTypes.InputClick:\n return {\n ...changes,\n isOpen: true, // keep menu opened\n }\n case useCombobox.stateChangeTypes.InputKeyDownEnter:\n case useCombobox.stateChangeTypes.ItemClick: {\n const newState = { ...changes }\n\n if (changes.selectedItem != null) {\n newState.inputValue = '' // keep input value after selection\n newState.isOpen = true // keep menu opened after selection\n\n const highlightedIndex = getIndexByKey(items, changes.selectedItem.value)\n\n newState.highlightedIndex = highlightedIndex // preserve highlighted item index after selection\n\n const isAlreadySelected = multiselect.selectedItems.some(\n selectedItem => selectedItem.value === changes.selectedItem?.value\n )\n\n const updatedItems = isAlreadySelected\n ? selectedItems.filter(item => item.value !== changes.selectedItem?.value)\n : [...selectedItems, changes.selectedItem]\n\n setSelectedItems(updatedItems)\n }\n\n return newState\n }\n\n case useCombobox.stateChangeTypes.ToggleButtonClick:\n return {\n ...changes,\n inputValue: allowCustomValue ? changes.inputValue : '',\n }\n case useCombobox.stateChangeTypes.InputChange:\n return {\n ...changes,\n selectedItem: changes.highlightedIndex === -1 ? null : changes.selectedItem,\n }\n case useCombobox.stateChangeTypes.InputBlur:\n return {\n ...changes,\n inputValue: allowCustomValue ? changes.inputValue : '',\n isOpen: isFocusInsideTriggerArea,\n }\n\n default:\n return changes\n }\n }\n\n return reducer\n}\n","import { type FC, isValidElement, type ReactElement, type ReactNode, Children } from 'react'\n\nimport { type ItemProps } from '../ComboboxItem'\nimport { type ItemTextProps } from '../ComboboxItemText'\nimport { type ComboboxItem, type ItemsMap } from '../types'\n\nexport function getIndexByKey(map: ItemsMap, targetKey: string) {\n let index = 0\n for (const [key] of map.entries()) {\n if (key === targetKey) {\n return index\n }\n index++\n }\n\n return -1\n}\n\nconst getKeyAtIndex = (map: ItemsMap, index: number) => {\n let i = 0\n for (const key of map.keys()) {\n if (i === index) return key\n i++\n }\n\n return undefined\n}\n\nexport const getElementByIndex = (map: ItemsMap, index: number) => {\n const key = getKeyAtIndex(map, index)\n\n return key !== undefined ? map.get(key) : undefined\n}\n\nconst getElementDisplayName = (element?: ReactElement) => {\n return element ? (element.type as FC & { displayName?: string }).displayName : ''\n}\n\nexport const getOrderedItems = (\n children: ReactNode,\n result: ComboboxItem[] = []\n): ComboboxItem[] => {\n Children.forEach(children, child => {\n if (!isValidElement(child)) return\n\n if (getElementDisplayName(child) === 'Combobox.Item') {\n const childProps = child.props as ItemProps\n result.push({\n value: childProps.value,\n disabled: !!childProps.disabled,\n text: getItemText(childProps.children),\n })\n }\n\n if ((child.props as ItemProps).children) {\n getOrderedItems((child.props as ItemProps).children, result)\n }\n })\n\n return result\n}\n\nconst findNestedItemText = (children: ReactNode): string => {\n if (!children) return ''\n\n for (const child of Children.toArray(children)) {\n if (isValidElement(child)) {\n const childElement = child as ReactElement\n\n if (getElementDisplayName(childElement) === 'Combobox.ItemText') {\n return (childElement.props as ItemTextProps).children\n }\n\n const foundText = findNestedItemText((childElement.props as ItemTextProps).children)\n\n if (foundText) return foundText\n }\n }\n\n return ''\n}\n\n/**\n * If Combobox.Item children:\n * - is a string, then the string is used.\n * - is JSX markup, then we look for Combobox.ItemText to get its string value.\n */\nexport const getItemText = (children: ReactNode): string => {\n return typeof children === 'string' ? children : findNestedItemText(children)\n}\n\nexport const getItemsFromChildren = (children: ReactNode): ItemsMap => {\n const newMap: ItemsMap = new Map()\n\n getOrderedItems(children).forEach(itemData => {\n newMap.set(itemData.value, itemData)\n })\n\n return newMap\n}\n\nexport const hasChildComponent = (children: ReactNode, displayName: string): boolean => {\n return Children.toArray(children).some(child => {\n if (!isValidElement(child)) return false\n\n if (getElementDisplayName(child) === displayName) {\n return true\n } else if ((child.props as { children: ReactNode }).children) {\n return hasChildComponent((child.props as { children: ReactNode }).children, displayName)\n }\n\n return false\n })\n}\n\nexport const findElement = (children: ReactNode, value: string) => {\n return Children.toArray(children)\n .filter(isValidElement)\n .find(child => value === getElementDisplayName(child) || '')\n}\n","import { useCombobox, UseComboboxProps } from 'downshift'\n\nimport { ComboboxItem } from '../types'\n\ninterface Props {\n allowCustomValue?: boolean\n filteredItems: ComboboxItem[]\n setSelectedItem: (value: ComboboxItem | null) => void\n}\n\nexport const singleSelectionReducer = ({\n filteredItems,\n allowCustomValue = false,\n setSelectedItem,\n}: Props) => {\n const reducer: UseComboboxProps<ComboboxItem>['stateReducer'] = (state, { changes, type }) => {\n const exactMatch = filteredItems.find(\n item => item.text.toLowerCase() === state.inputValue.toLowerCase()\n )\n\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (type) {\n case useCombobox.stateChangeTypes.InputKeyDownEscape:\n if (!changes.selectedItem) {\n setSelectedItem(null)\n }\n\n return changes\n case useCombobox.stateChangeTypes.ItemClick:\n case useCombobox.stateChangeTypes.InputKeyDownEnter:\n if (changes.selectedItem) {\n setSelectedItem(changes.selectedItem)\n }\n\n return changes\n case useCombobox.stateChangeTypes.InputClick:\n return { ...changes, isOpen: true }\n case useCombobox.stateChangeTypes.ToggleButtonClick:\n case useCombobox.stateChangeTypes.InputBlur:\n if (allowCustomValue) return changes\n\n if (state.inputValue === '') {\n setSelectedItem(null)\n\n return { ...changes, selectedItem: null }\n }\n\n if (exactMatch) {\n setSelectedItem(exactMatch)\n\n return { ...changes, selectedItem: exactMatch, inputValue: exactMatch.text }\n }\n\n if (state.selectedItem) {\n return { ...changes, inputValue: state.selectedItem.text }\n }\n\n return { ...changes, inputValue: '' }\n default:\n return changes\n }\n }\n\n return reducer\n}\n","import { type ComboboxContextProps, ComboboxProvider } from './ComboboxContext'\n\nexport type ComboboxProps = ComboboxContextProps\n\nexport const Combobox = ({ children, ...props }: ComboboxProps) => {\n return <ComboboxProvider {...props}>{children}</ComboboxProvider>\n}\n\nCombobox.displayName = 'Combobox'\n","import { DeleteOutline } from '@spark-ui/icons/DeleteOutline'\nimport { cx } from 'class-variance-authority'\nimport { ComponentPropsWithoutRef, MouseEventHandler, Ref } from 'react'\n\nimport { Icon } from '../icon'\nimport { useComboboxContext } from './ComboboxContext'\n\nexport interface ClearButtonProps extends ComponentPropsWithoutRef<'button'> {\n 'aria-label': string\n ref?: Ref<HTMLButtonElement>\n}\n\nexport const ClearButton = ({\n className,\n tabIndex = -1,\n onClick,\n ref,\n ...others\n}: ClearButtonProps) => {\n const ctx = useComboboxContext()\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = event => {\n event.stopPropagation()\n\n if (ctx.multiple) {\n ctx.setSelectedItems([])\n } else {\n ctx.selectItem(null)\n }\n\n ctx.setInputValue('')\n\n if (ctx.innerInputRef.current) {\n ctx.innerInputRef.current.focus()\n }\n\n if (onClick) {\n onClick(event)\n }\n }\n\n return (\n <button\n ref={ref}\n className={cx(className, 'h-sz-44 text-neutral hover:text-neutral-hovered')}\n tabIndex={tabIndex}\n onClick={handleClick}\n type=\"button\"\n {...others}\n >\n <Icon size=\"sm\">\n <DeleteOutline />\n </Icon>\n </button>\n )\n}\n\nClearButton.displayName = 'Combobox.ClearButton'\n","import { useMergeRefs } from '@spark-ui/hooks/use-merge-refs'\nimport { ArrowHorizontalDown } from '@spark-ui/icons/ArrowHorizontalDown'\nimport { cx } from 'class-variance-authority'\nimport { ComponentProps, Ref } from 'react'\n\nimport { Icon } from '../icon'\nimport { IconButton } from '../icon-button'\nimport { useComboboxContext } from './ComboboxContext'\n\ninterface DisclosureProps extends Omit<ComponentProps<typeof IconButton>, 'aria-label'> {\n className?: string\n closedLabel: string\n openedLabel: string\n ref?: Ref<HTMLButtonElement>\n}\n\nexport const Disclosure = ({\n className,\n closedLabel,\n openedLabel,\n intent = 'neutral',\n design = 'ghost',\n size = 'sm',\n ref: forwardedRef,\n ...props\n}: DisclosureProps) => {\n const ctx = useComboboxContext()\n\n const { ref: downshiftRef, ...downshiftDisclosureProps } = ctx.getToggleButtonProps({\n disabled: ctx.disabled || ctx.readOnly,\n onClick: event => {\n event.stopPropagation()\n },\n })\n const isExpanded = downshiftDisclosureProps['aria-expanded']\n const ref = useMergeRefs(forwardedRef, downshiftRef)\n\n return (\n <IconButton\n ref={ref}\n className={cx(className, 'ml-sm mt-[calc((44px-32px)/2)]')}\n intent={intent}\n design={design}\n size={size}\n {...downshiftDisclosureProps}\n {...props}\n aria-label={isExpanded ? openedLabel : closedLabel}\n disabled={ctx.disabled}\n >\n <Icon\n className={cx('shrink-0', 'rotate-0 transition duration-100 ease-in', {\n 'rotate-180': isExpanded,\n })}\n size=\"sm\"\n >\n <ArrowHorizontalDown />\n </Icon>\n </IconButton>\n )\n}\n\nDisclosure.displayName = 'Combobox.Disclosure'\n","import { cx } from 'class-variance-authority'\nimport { type ReactNode, Ref } from 'react'\n\nimport { useComboboxContext } from './ComboboxContext'\n\ninterface EmptyProps {\n className?: string\n children: ReactNode\n ref?: Ref<HTMLDivElement>\n}\n\nexport const Empty = ({ className, children, ref: forwardedRef }: EmptyProps) => {\n const ctx = useComboboxContext()\n const hasNoItemVisible = ctx.filteredItemsMap.size === 0\n\n return hasNoItemVisible ? (\n <div\n ref={forwardedRef}\n className={cx('px-lg py-md text-body-1 text-on-surface/dim-1', className)}\n >\n {children}\n </div>\n ) : null\n}\n\nEmpty.displayName = 'Combobox.Empty'\n","import { cx } from 'class-variance-authority'\nimport { Children, isValidElement, ReactNode, Ref } from 'react'\n\nimport { useComboboxContext } from './ComboboxContext'\nimport { ComboboxGroupProvider, useComboboxGroupContext } from './ComboboxItemsGroupContext'\n\ninterface GroupProps {\n children: ReactNode\n className?: string\n ref?: Ref<HTMLDivElement>\n}\n\nexport const Group = ({ children, ref: forwardedRef, ...props }: GroupProps) => {\n return (\n <ComboboxGroupProvider>\n <GroupContent ref={forwardedRef} {...props}>\n {children}\n </GroupContent>\n </ComboboxGroupProvider>\n )\n}\n\nconst GroupContent = ({ children, className, ref: forwardedRef }: GroupProps) => {\n const ctx = useComboboxContext()\n const groupCtx = useComboboxGroupContext()\n\n const hasVisibleOptions = Children.toArray(children).some(child => {\n return (\n isValidElement(child) && ctx.filteredItemsMap.get((child.props as { value: string }).value)\n )\n })\n\n return hasVisibleOptions ? (\n <div\n ref={forwardedRef}\n role=\"group\"\n aria-labelledby={groupCtx.groupLabelId}\n className={cx(className)}\n >\n {children}\n </div>\n ) : null\n}\n\nGroup.displayName = 'Combobox.Group'\n","import { createContext, type PropsWithChildren, useContext, useId } from 'react'\n\nimport { ID_PREFIX } from './ComboboxContext'\n\nexport interface ComboboxContextState {\n groupLabelId: string\n}\n\ntype ComboboxContextProps = PropsWithChildren\n\nconst ComboboxGroupContext = createContext<ComboboxContextState | null>(null)\n\nexport const ComboboxGroupProvider = ({ children }: ComboboxContextProps) => {\n const groupLabelId = `${ID_PREFIX}-group-label-${useId()}`\n\n return (\n <ComboboxGroupContext.Provider value={{ groupLabelId }}>\n {children}\n </ComboboxGroupContext.Provider>\n )\n}\n\nexport const useComboboxGroupContext = () => {\n const context = useContext(ComboboxGroupContext)\n\n if (!context) {\n throw Error('useComboboxGroupContext must be used within a ComboboxGroup provider')\n }\n\n return context\n}\n","import { useFormFieldControl } from '@spark-ui/components/form-field'\nimport { useCombinedState } from '@spark-ui/hooks/use-combined-state'\nimport { useMergeRefs } from '@spark-ui/hooks/use-merge-refs'\nimport { cx } from 'class-variance-authority'\nimport {\n ChangeEvent,\n ComponentPropsWithoutRef,\n Fragment,\n Ref,\n SyntheticEvent,\n useEffect,\n} from 'react'\n\nimport { Popover } from '../popover'\nimport { VisuallyHidden } from '../visually-hidden'\nimport { useComboboxContext } from './ComboboxContext'\n\ntype InputPrimitiveProps = ComponentPropsWithoutRef<'input'>\n\ninterface InputProps extends Omit<InputPrimitiveProps, 'value' | 'placeholder'> {\n className?: string\n placeholder?: string\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n ref?: Ref<HTMLInputElement>\n}\n\nexport const Input = ({\n 'aria-label': ariaLabel,\n className,\n placeholder,\n value,\n defaultValue,\n onValueChange,\n ref: forwardedRef,\n ...props\n}: InputProps) => {\n const ctx = useComboboxContext()\n const field = useFormFieldControl()\n const [inputValue] = useCombinedState(value, defaultValue)\n\n const { isInvalid, description } = field\n\n useEffect(() => {\n if (inputValue != null) {\n ctx.setInputValue(inputValue)\n }\n }, [inputValue])\n\n useEffect(() => {\n if (onValueChange) {\n ctx.setOnInputValueChange(() => onValueChange)\n }\n\n // Sync input with combobox default value\n if (!ctx.multiple && ctx.selectedItem) {\n ctx.setInputValue(ctx.selectedItem.text)\n }\n }, [])\n\n const PopoverTrigger = ctx.hasPopover ? Popover.Trigger : Fragment\n const popoverTriggerProps = ctx.hasPopover\n ? {\n asChild: true,\n type: undefined,\n }\n : {}\n\n const multiselectInputProps = ctx.getDropdownProps()\n const inputRef = useMergeRefs(forwardedRef, ctx.innerInputRef, multiselectInputProps.ref)\n const downshiftInputProps = ctx.getInputProps({\n disabled: ctx.disabled || ctx.readOnly,\n ...multiselectInputProps,\n onKeyDown: event => {\n multiselectInputProps.onKeyDown?.(event)\n ctx.setLastInteractionType('keyboard')\n ctx.setIsTyping(true)\n },\n /**\n *\n * Important:\n * - without this, the input cursor is moved to the end after every change.\n * @see https://github.com/downshift-js/downshift/issues/1108#issuecomment-674180157\n */\n onChange: (e: ChangeEvent<HTMLInputElement>) => {\n ctx.setInputValue(e.target.value)\n },\n ref: inputRef,\n })\n\n const hasPlaceholder = ctx.multiple\n ? !ctx.areSelectedItemsInTrigger || ctx.selectedItems.length === 0\n : ctx.selectedItem === null\n\n function mergeHandlers<T extends SyntheticEvent>(\n handlerA?: (event: T) => void,\n handlerB?: (event: T) => void\n ) {\n return (event: T) => {\n handlerA?.(event)\n handlerB?.(event)\n }\n }\n\n /**\n * Downshift has its own callbacks set for a few events types.\n * We must merge the event handlers with the (optional) forwarded props if consumer wish to use the same events for alernate purposes (ex: tracking)\n */\n const mergedEventProps = {\n onBlur: mergeHandlers(props.onBlur, downshiftInputProps.onBlur),\n onChange: mergeHandlers(props.onChange, downshiftInputProps.onChange),\n onClick: mergeHandlers(props.onClick, downshiftInputProps.onClick),\n onKeyDown: mergeHandlers(props.onKeyDown, downshiftInputProps.onKeyDown),\n }\n\n return (\n <>\n {ariaLabel && (\n <VisuallyHidden>\n <label {...ctx.getLabelProps()}>{ariaLabel}</label>\n </VisuallyHidden>\n )}\n <PopoverTrigger {...popoverTriggerProps}>\n <input\n data-spark-component=\"combobox-input\"\n type=\"text\"\n {...(hasPlaceholder && { placeholder })}\n className={cx(\n 'max-w-full shrink-0 grow basis-[80px]',\n 'h-sz-28 bg-surface px-sm text-body-1 text-ellipsis outline-hidden',\n 'disabled:text-on-surface/dim-3 disabled:cursor-not-allowed disabled:bg-transparent',\n 'read-only:text-on-surface read-only:cursor-default read-only:bg-transparent',\n className\n )}\n {...props}\n {...downshiftInputProps}\n {...mergedEventProps}\n value={ctx.inputValue}\n aria-label={ariaLabel}\n disabled={ctx.disabled}\n readOnly={ctx.readOnly}\n // FormField\n aria-invalid={isInvalid}\n aria-describedby={description}\n />\n </PopoverTrigger>\n </>\n )\n}\n\nInput.displayName = 'Combobox.Input'\n","import { useMergeRefs } from '@spark-ui/hooks/use-merge-refs'\nimport { cva, cx } from 'class-variance-authority'\nimport { type HTMLAttributes, type ReactNode, Ref } from 'react'\n\nimport { useComboboxContext } from './ComboboxContext'\nimport { ComboboxItemProvider, useComboboxItemContext } from './ComboboxItemContext'\n\nexport interface ItemProps extends HTMLAttributes<HTMLLIElement> {\n disabled?: boolean\n value: string\n children: ReactNode\n className?: string\n ref?: Ref<HTMLLIElement>\n}\n\nexport const Item = ({ children, ref: forwardedRef, ...props }: ItemProps) => {\n const { value, disabled } = props\n\n return (\n <ComboboxItemProvider value={value} disabled={disabled}>\n <ItemContent ref={forwardedRef} {...props}>\n {children}\n </ItemContent>\n </ComboboxItemProvider>\n )\n}\n\nconst styles = cva('px-lg py-md text-body-1', {\n variants: {\n selected: {\n true: 'font-bold',\n },\n disabled: {\n true: 'opacity-dim-3 cursor-not-allowed',\n false: 'cursor-pointer',\n },\n highlighted: {\n true: '',\n },\n interactionType: {\n mouse: '',\n keyboard: '',\n },\n },\n compoundVariants: [\n {\n highlighted: true,\n interactionType: 'mouse',\n class: 'bg-surface-hovered',\n },\n {\n highlighted: true,\n interactionType: 'keyboard',\n class: 'u-outline',\n },\n ],\n})\n\nconst ItemContent = ({\n className,\n disabled = false,\n value,\n children,\n ref: forwardedRef,\n ...rest\n}: ItemProps) => {\n const ctx = useComboboxContext()\n const itemCtx = useComboboxItemContext()\n\n const isVisible = !!ctx.filteredItemsMap.get(value)\n\n const { ref: downshiftRef, ...downshiftItemProps } = ctx.getItemProps({\n item: itemCtx.itemData,\n index: itemCtx.index,\n })\n\n const ref = useMergeRefs(forwardedRef, downshiftRef)\n\n if (!isVisible) return null\n\n return (\n <li\n ref={ref}\n className={cx(\n styles({\n selected: itemCtx.isSelected,\n disabled,\n highlighted: ctx.highlightedItem?.value === value,\n interactionType: ctx.lastInteractionType,\n className,\n })\n )}\n key={value}\n {...downshiftItemProps}\n {...rest}\n aria-selected={itemCtx.isSelected}\n aria-labelledby={itemCtx.textId}\n >\n {children}\n </li>\n )\n}\n\nItem.displayName = 'Combobox.Item'\n","import {\n createContext,\n Dispatch,\n type PropsWithChildren,\n SetStateAction,\n useContext,\n useState,\n} from 'react'\n\nimport { useComboboxContext } from './ComboboxContext'\nimport { ComboboxItem } from './types'\nimport { getIndexByKey, getItemText } from './utils'\n\ntype ItemTextId = string | undefined\n\ninterface ComboboxItemContextState {\n textId: ItemTextId\n setTextId: Dispatch<SetStateAction<ItemTextId>>\n isSelected: boolean\n itemData: ComboboxItem\n index: number\n disabled: boolean\n}\n\nconst ComboboxItemContext = createContext<ComboboxItemContextState | null>(null)\n\nexport const ComboboxItemProvider = ({\n value,\n disabled = false,\n children,\n}: PropsWithChildren<{ value: string; disabled?: boolean }>) => {\n const ctx = useComboboxContext()\n\n const [textId, setTextId] = useState<ItemTextId>(undefined)\n\n const index = getIndexByKey(ctx.filteredItemsMap, value)\n const itemData: ComboboxItem = { disabled, value, text: getItemText(children) }\n\n const isSelected = ctx.multiple\n ? ctx.selectedItems.some(selectedItem => selectedItem.value === value)\n : ctx.selectedItem?.value === value\n\n return (\n <ComboboxItemContext.Provider\n value={{ textId, setTextId, isSelected, itemData, index, disabled }}\n >\n {children}\n </ComboboxItemContext.Provider>\n )\n}\n\nexport const useComboboxItemContext = () => {\n const context = useContext(ComboboxItemContext)\n\n if (!context) {\n throw Error('useComboboxItemContext must be used within a ComboboxItem provider')\n }\n\n return context\n}\n","import { Check } from '@spark-ui/icons/Check'\nimport { cx } from 'class-variance-authority'\nimport { ReactNode, Ref } from 'react'\n\nimport { Icon } from '../icon'\nimport { useComboboxItemContext } from './ComboboxItemContext'\n\nexport interface ItemIndicatorProps {\n children?: ReactNode\n className?: string\n label?: string\n ref?: Ref<HTMLSpanElement>\n}\n\nexport const ItemIndicator = ({\n className,\n children,\n label,\n ref: forwardedRef,\n}: ItemIndicatorProps) => {\n const { disabled, isSelected } = useComboboxItemContext()\n\n const childElement = children || (\n <Icon size=\"sm\">\n <Check aria-label={label} />\n </Icon>\n )\n\n return (\n <span\n ref={forwardedRef}\n className={cx('min-h-sz-16 min-w-sz-16 flex', disabled && 'opacity-dim-3', className)}\n >\n {isSelected && childElement}\n </span>\n )\n}\n\nItemIndicator.displayName = 'Combobox.ItemIndicator'\n","import { useMergeRefs } from '@spark-ui/hooks/use-merge-refs'\nimport { cx } from 'class-variance-authority'\nimport { ComponentPropsWithoutRef, ReactNode, Ref, useLayoutEffect, useRef } from 'react'\n\nimport { Spinner } from '../spinner'\nimport { useComboboxContext } from './ComboboxContext'\n\ninterface ItemsProps extends ComponentPropsWithoutRef<'ul'> {\n children: ReactNode\n className?: string\n ref?: Ref<HTMLUListElement>\n}\n\nexport const Items = ({ children, className, ref: forwardedRef, ...props }: ItemsProps) => {\n const ctx = useComboboxContext()\n\n const { ref: downshiftRef, ...downshiftMenuProps } = ctx.getMenuProps({\n onMouseMove: () => {\n ctx.setLastInteractionType('mouse')\n },\n })\n\n const innerRef = useRef<HTMLElement>(null)\n\n const ref = useMergeRefs(forwardedRef, downshiftRef, innerRef)\n\n const isOpen = ctx.hasPopover ? ctx.isOpen : true\n\n const isPointerEventsDisabled = ctx.hasPopover && !isOpen\n\n useLayoutEffect(() => {\n if (innerRef.current?.parentElement) {\n innerRef.current.parentElement.style.pointerEvents = isPointerEventsDisabled ? 'none' : ''\n innerRef.current.style.pointerEvents = isPointerEventsDisabled ? 'none' : ''\n }\n }, [isPointerEventsDisabled])\n\n return (\n <ul\n ref={ref}\n className={cx(\n className,\n 'flex flex-col',\n isOpen ? 'block' : 'pointer-events-none invisible opacity-0',\n ctx.hasPopover && 'p-lg',\n ctx.isLoading && 'items-center overflow-y-auto'\n )}\n {...props}\n {...downshiftMenuProps}\n aria-busy={ctx.isLoading}\n data-spark-component=\"combobox-items\"\n >\n {ctx.isLoading ? <Spinner size=\"sm\" /> : children}\n </ul>\n )\n}\n\nItems.displayName = 'Combobox.Items'\n","import { cx } from 'class-variance-authority'\nimport { Ref, useEffect, useId } from 'react'\n\nimport { ID_PREFIX } from './ComboboxContext'\nimport { useComboboxItemContext } from './ComboboxItemContext'\n\nexport interface ItemTextProps {\n children: string\n className?: string\n ref?: Ref<HTMLSpanElement>\n}\n\nexport const ItemText = ({ children, className, ref: forwardedRef }: ItemTextProps) => {\n const id = `${ID_PREFIX}-item-text-${useId()}`\n\n const { setTextId } = useComboboxItemContext()\n\n useEffect(() => {\n setTextId(id)\n\n return () => setTextId(undefined)\n })\n\n return (\n <span id={id} className={cx('inline', className)} ref={forwardedRef}>\n {children}\n </span>\n )\n}\n\nItemText.displayName = 'Combobox.ItemText'\n","import { cx } from 'class-variance-authority'\nimport { Ref } from 'react'\n\nimport { useComboboxGroupContext } from './ComboboxItemsGroupContext'\n\ninterface LabelProps {\n children: string\n className?: string\n ref?: Ref<HTMLDivElement>\n}\n\nexport const Label = ({ children, className, ref: forwardedRef }: LabelProps) => {\n const groupCtx = useComboboxGroupContext()\n\n return (\n <div\n ref={forwardedRef}\n id={groupCtx.groupLabelId}\n className={cx('px-md py-sm text-body-2 text-neutral italic', className)}\n >\n {children}\n </div>\n )\n}\n\nLabel.displayName = 'Combobox.Label'\n","import { ReactElement } from 'react'\n\nimport { Icon } from '../icon'\n\nexport const LeadingIcon = ({ children }: { children: ReactElement }) => {\n return (\n <Icon size={'sm'} className=\"h-sz-44 shrink-0\">\n {children}\n </Icon>\n )\n}\n\nLeadingIcon.displayName = 'Combobox.LeadingIcon'\n","import { cx } from 'class-variance-authority'\nimport { ComponentProps, Ref, useEffect } from 'react'\n\nimport { Popover as SparkPopover } from '../popover'\nimport { useComboboxContext } from './ComboboxContext'\n\ninterface PopoverProps extends ComponentProps<typeof SparkPopover.Content> {\n ref?: Ref<HTMLDivElement>\n}\n\nexport const Popover = ({\n children,\n matchTriggerWidth = true,\n sideOffset = 4,\n className,\n ref: forwardedRef,\n ...props\n}: PopoverProps) => {\n const ctx = useComboboxContext()\n\n useEffect(() => {\n ctx.setHasPopover(true)\n\n return () => ctx.setHasPopover(false)\n }, [])\n\n return (\n <SparkPopover.Content\n ref={forwardedRef}\n inset\n asChild\n matchTriggerWidth={matchTriggerWidth}\n className={cx('z-dropdown! relative', className)}\n sideOffset={sideOffset}\n onOpenAutoFocus={e => {\n /**\n * With a combobox pattern, the focus should remain on the trigger at all times.\n * Passing the focus to the combobox popover would break keyboard navigation.\n */\n e.preventDefault()\n }}\n {...props}\n data-spark-component=\"combobox-popover\"\n >\n {children}\n </SparkPopover.Content>\n )\n}\n\nPopover.displayName = 'Combobox.Popover'\n","import { ReactElement } from 'react'\n\nimport { Popover as SparkPopover } from '../popover'\n\nexport const Portal: typeof SparkPopover.Portal = ({ children, ...rest }): ReactElement => (\n <SparkPopover.Portal {...rest}>{children}</SparkPopover.Portal>\n)\n\nPortal.displayName = 'Combobox.Portal'\n","import { DeleteOutline } from '@spark-ui/icons/DeleteOutline'\nimport { cx } from 'class-variance-authority'\nimport { FocusEvent } from 'react'\n\nimport { Icon } from '../icon'\nimport { useComboboxContext } from './ComboboxContext'\nimport { ComboboxItem } from './types'\n\nconst SelectedItem = ({ item: selectedItem, index }: { item: ComboboxItem; index: number }) => {\n const ctx = useComboboxContext()\n\n const isCleanable = !ctx.disabled && !ctx.readOnly\n\n const handleFocus = (e: FocusEvent<HTMLSpanElement>) => {\n const element = e.target as HTMLSpanElement\n if (ctx.lastInteractionType === 'keyboard') {\n element.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n })\n }\n }\n\n const { disabled, ...selectedItemProps } = ctx.getSelectedItemProps({\n disabled: ctx.disabled || ctx.readOnly,\n selectedItem,\n index,\n })\n\n const Element = disabled ? 'button' : 'span'\n\n return (\n <Element\n role=\"presentation\"\n data-spark-component=\"combobox-selected-item\"\n key={`selected-item-${index}`}\n className={cx(\n 'h-sz-28 bg-neutral-container flex items-center rounded-md align-middle',\n 'text-body-2 text-on-neutral-container',\n 'disabled:opacity-dim-3 disabled:cursor-not-allowed',\n 'focus-visible:u-outline-inset outline-hidden',\n { 'px-md': !isCleanable, 'pl-md': isCleanable }\n )}\n {...selectedItemProps}\n tabIndex={-1}\n {...(disabled && { disabled: true })}\n onFocus={handleFocus}\n >\n <span\n className={cx('line-clamp-1 overflow-x-hidden leading-normal break-all text-ellipsis', {\n 'w-max': !ctx.wrap,\n })}\n >\n {selectedItem.text}\n </span>\n {ctx.disabled}\n {isCleanable && (\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden\n className=\"px-md h-full cursor-pointer\"\n onClick={e => {\n e.stopPropagation()\n\n const updatedSelectedItems = ctx.selectedItems.filter(\n item => item.value !== selectedItem.value\n )\n\n ctx.setSelectedItems(updatedSelectedItems)\n\n if (ctx.innerInputRef.current) {\n ctx.innerInputRef.current.focus({ preventScroll: true })\n }\n }}\n >\n <Icon size=\"sm\">\n <DeleteOutline />\n </Icon>\n </button>\n )}\n </Element>\n )\n}\n\nexport const SelectedItems = () => {\n const ctx = useComboboxContext()\n\n return ctx.multiple && ctx.selectedItems.length ? (\n <>\n {ctx.selectedItems.map((item, index) => (\n <SelectedItem key={item.value} item={item} index={index} />\n ))}\n </>\n ) : null\n}\n\nSelectedItems.displayName = 'Combobox.SelectedItems'\n","import { useFormFieldControl } from '@spark-ui/components/form-field'\nimport { useMergeRefs } from '@spark-ui/hooks/use-merge-refs'\nimport { cx } from 'class-variance-authority'\nimport { Fragment, ReactNode, Ref, useEffect, useRef } from 'react'\n\nimport { Popover } from '../popover'\nimport { useComboboxContext } from './ComboboxContext'\nimport { styles } from './ComboboxTrigger.styles'\nimport { findElement } from './utils'\nimport { useWidthIncreaseCallback } from './utils/useWidthIncreaseCallback'\n\ninterface TriggerProps {\n className?: string\n children: ReactNode\n ref?: Ref<HTMLDivElement>\n}\n\nexport const Trigger = ({ className, children, ref: forwardedRef }: TriggerProps) => {\n const ctx = useComboboxContext()\n const field = useFormFieldControl()\n\n // Trigger compound elements\n const leadingIcon = findElement(children, 'Combobox.LeadingIcon')\n const selectedItems = findElement(children, 'Combobox.SelectedItems')\n const input = findElement(children, 'Combobox.Input')\n const clearButton = findElement(children, 'Combobox.ClearButton')\n const disclosure = findElement(children, 'Combobox.Disclosure')\n\n const [PopoverAnchor, popoverAnchorProps] = ctx.hasPopover\n ? [Popover.Anchor, { asChild: true, type: undefined }]\n : [Fragment, {}]\n\n const ref = useMergeRefs(forwardedRef, ctx.triggerAreaRef)\n const scrollableAreaRef = useRef<HTMLDivElement>(null)\n\n const disabled = field.disabled || ctx.disabled\n const readOnly = field.readOnly || ctx.readOnly\n\n const hasClearButton = !!clearButton && !disabled && !readOnly\n\n /**\n * In case wrap behaviour is disabled, we sometimes need to scroll to the right-side of the trigger:\n * - when a selected item chip is added.\n * - when the component width changes (window resizing, etc.)\n *\n * The goal is that the typing area remains visible at all times.\n */\n const scrollToRight = () => {\n if (scrollableAreaRef.current && !ctx.wrap) {\n const { scrollWidth, clientWidth } = scrollableAreaRef.current\n // Scroll to the rightmost position\n scrollableAreaRef.current.scrollLeft = scrollWidth - clientWidth\n }\n }\n\n useWidthIncreaseCallback(scrollableAreaRef, scrollToRight)\n\n const hasSelectedItems = !!selectedItems\n useEffect(() => {\n ctx.setAreSelectedItemsInTrigger(hasSelectedItems)\n }, [hasSelectedItems])\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver(scrollToRight)\n\n if (scrollableAreaRef.current) {\n resizeObserver.observe(scrollableAreaRef.current)\n }\n\n return () => {\n resizeObserver.disconnect()\n }\n }, [])\n\n return (\n <>\n <PopoverAnchor {...popoverAnchorProps}>\n <div\n ref={ref}\n className={styles({\n className,\n state: ctx.state,\n disabled,\n readOnly,\n allowWrap: ctx.wrap,\n })}\n onClick={() => {\n if (!ctx.isOpen && !disabled && !readOnly) {\n ctx.openMenu()\n if (ctx.innerInputRef.current) {\n ctx.innerInputRef.current.focus()\n }\n }\n }}\n >\n {leadingIcon}\n <div\n ref={scrollableAreaRef}\n className={cx(\n 'min-w-none gap-sm py-md inline-flex grow items-start',\n ctx.wrap ? 'flex-wrap' : 'u-no-scrollbar overflow-x-auto p-[2px]'\n )}\n >\n {selectedItems}\n {input}\n </div>\n\n {hasClearButton && clearButton}\n\n {disclosure}\n </div>\n </PopoverAnchor>\n </>\n )\n}\n\nTrigger.displayName = 'Combobox.Trigger'\n","import { cva } from 'class-variance-authority'\n\nexport const styles = cva(\n [\n 'flex items-start gap-md min-h-sz-44 text-body-1',\n 'h-fit rounded-lg px-lg',\n // outline styles\n 'ring-1 outline-hidden ring-inset focus-within:ring-2 focus-within:ring-focus',\n ],\n {\n variants: {\n allowWrap: {\n true: '',\n false: 'h-sz-44',\n },\n state: {\n undefined: 'ring-outline',\n error: 'ring-error',\n alert: 'ring-alert',\n success: 'ring-success',\n },\n disabled: {\n true: 'cursor-not-allowed border-outline bg-on-surface/dim-5 text-on-surface/dim-3',\n },\n readOnly: {\n true: 'cursor-default bg-on-surface/dim-5 text-on-surface',\n },\n },\n compoundVariants: [\n {\n disabled: false,\n state: undefined,\n class: 'default:hover:ring-outline-high',\n },\n {\n disabled: false,\n readOnly: false,\n class: 'bg-surface text-on-surface cursor-text',\n },\n ],\n defaultVariants: {\n state: undefined,\n disabled: false,\n readOnly: false,\n },\n }\n)\n","import { RefObject, useEffect, useRef } from 'react'\n\nexport const useWidthIncreaseCallback = (\n elementRef: RefObject<HTMLDivElement | null>,\n callback: () => void\n): void => {\n const prevWidthRef = useRef<number | null>(null)\n\n useEffect(() => {\n const checkWidthIncrease = () => {\n const currentWidth = elementRef.current?.scrollWidth || null\n\n if (prevWidthRef.current && currentWidth && currentWidth > prevWidthRef.current) {\n callback()\n }\n\n prevWidthRef.current = currentWidth\n requestAnimationFrame(checkWidthIncrease)\n }\n\n const interval = requestAnimationFrame(checkWidthIncrease)\n\n return () => cancelAnimationFrame(interval)\n }, [elementRef])\n}\n","import { Combobox as Root } from './Combobox'\nimport { ClearButton } from './ComboboxClearButton'\nimport { ComboboxProvider, useComboboxContext } from './ComboboxContext'\nimport { Disclosure } from './ComboboxDisclosure'\nimport { Empty } from './ComboboxEmpty'\nimport { Group } from './ComboboxGroup'\nimport { Input } from './ComboboxInput'\nimport { Item } from './ComboboxItem'\nimport { ItemIndicator } from './ComboboxItemIndicator'\nimport { Items } from './ComboboxItems'\nimport { ItemText } from './ComboboxItemText'\nimport { Label } from './ComboboxLabel'\nimport { LeadingIcon } from './ComboboxLeadingIcon'\nimport { Popover } from './ComboboxPopover'\nimport { Portal } from './ComboboxPortal'\nimport { SelectedItems } from './ComboboxSelectedItems'\nimport { Trigger } from './ComboboxTrigger'\n\nexport { useComboboxContext, ComboboxProvider }\n\nexport const Combobox: typeof Root & {\n Group: typeof Group\n Item: typeof Item\n Items: typeof Items\n ItemText: typeof ItemText\n ItemIndicator: typeof ItemIndicator\n Label: typeof Label\n Popover: typeof Popover\n Trigger: typeof Trigger\n LeadingIcon: typeof LeadingIcon\n Empty: typeof Empty\n Input: typeof Input\n Disclosure: typeof Disclosure\n SelectedItems: typeof SelectedItems\n ClearButton: typeof ClearButton\n Portal: typeof Portal\n} = Object.assign(Root, {\n Group,\n Item,\n Items,\n ItemText,\n ItemIndicator,\n Label,\n Popover,\n Trigger,\n LeadingIcon,\n Empty,\n Input,\n Disclosure,\n SelectedItems,\n ClearButton,\n Portal,\n})\n\nCombobox.displayName = 'Combobox'\nGroup.displayName = 'Combobox.Group'\nItems.displayName = 'Combobox.Items'\nItem.displayName = 'Combobox.Item'\nItemText.displayName = 'Combobox.ItemText'\nItemIndicator.displayName = 'Combobox.ItemIndicator'\nLabel.displayName = 'Combobox.Label'\nPopover.displayName = 'Combobox.Popover'\nTrigger.displayName = 'Combobox.Trigger'\nLeadingIcon.displayName = 'Combobox.LeadingIcon'\nEmpty.displayName = 'Combobox.Empty'\nInput.displayName = 'Combobox.Input'\nDisclosure.displayName = 'Combobox.Disclosure'\nSelectedItems.displayName = 'Combobox.SelectedItems'\nClearButton.displayName = 'Combobox.ClearButton'\nPortal.displayName = 'Combobox.Portal'\n"],"mappings":"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","names":["useCombobox","useCombobox","state","useCombobox","jsx","jsx","cx","jsx","cx","cx","jsx","cx","cx","Children","isValidElement","createContext","useContext","useId","jsx","createContext","useId","useContext","jsx","Children","isValidElement","cx","useFormFieldControl","useCombinedState","useMergeRefs","cx","Fragment","useEffect","Fragment","jsx","useFormFieldControl","useCombinedState","useEffect","useMergeRefs","cx","useMergeRefs","cx","createContext","useContext","useState","jsx","createContext","useState","useContext","jsx","useMergeRefs","cx","cx","jsx","cx","useMergeRefs","cx","useRef","jsx","useRef","useMergeRefs","cx","cx","useEffect","useId","jsx","useId","useEffect","cx","cx","jsx","cx","jsx","cx","useEffect","jsx","Popover","useEffect","cx","jsx","DeleteOutline","cx","Fragment","jsx","jsxs","cx","DeleteOutline","useFormFieldControl","useMergeRefs","cx","Fragment","useEffect","useRef","cva","styles","useEffect","useRef","Fragment","jsx","jsxs","useFormFieldControl","useMergeRefs","useRef","useEffect","styles","cx","Combobox","Popover"]}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/combobox/utils/index.ts","../../src/combobox/useCombobox/multipleSelectionReducer.ts","../../src/combobox/useCombobox/singleSelectionReducer.ts","../../src/combobox/ComboboxContext.tsx","../../src/combobox/Combobox.tsx","../../src/combobox/ComboboxClearButton.tsx","../../src/combobox/ComboboxDisclosure.tsx","../../src/combobox/ComboboxEmpty.tsx","../../src/combobox/ComboboxItemsGroupContext.tsx","../../src/combobox/ComboboxGroup.tsx","../../src/combobox/ComboboxInput.tsx","../../src/combobox/ComboboxItemContext.tsx","../../src/combobox/ComboboxItem.tsx","../../src/combobox/ComboboxItemIndicator.tsx","../../src/combobox/ComboboxItems.tsx","../../src/combobox/ComboboxItemText.tsx","../../src/combobox/ComboboxLabel.tsx","../../src/combobox/ComboboxLeadingIcon.tsx","../../src/combobox/ComboboxPopover.tsx","../../src/combobox/ComboboxPortal.tsx","../../src/combobox/ComboboxSelectedItems.tsx","../../src/combobox/ComboboxTrigger.styles.tsx","../../src/combobox/utils/useWidthIncreaseCallback.ts","../../src/combobox/ComboboxTrigger.tsx","../../src/combobox/index.ts"],"sourcesContent":["import { type FC, isValidElement, type ReactElement, type ReactNode, Children } from 'react'\n\nimport { type ItemProps } from '../ComboboxItem'\nimport { type ItemTextProps } from '../ComboboxItemText'\nimport { type ComboboxItem, type ItemsMap } from '../types'\n\nexport function getIndexByKey(map: ItemsMap, targetKey: string) {\n let index = 0\n for (const [key] of map.entries()) {\n if (key === targetKey) {\n return index\n }\n index++\n }\n\n return -1\n}\n\nconst getKeyAtIndex = (map: ItemsMap, index: number) => {\n let i = 0\n for (const key of map.keys()) {\n if (i === index) return key\n i++\n }\n\n return undefined\n}\n\nexport const getElementByIndex = (map: ItemsMap, index: number) => {\n const key = getKeyAtIndex(map, index)\n\n return key !== undefined ? map.get(key) : undefined\n}\n\nconst getElementDisplayName = (element?: ReactElement) => {\n return element ? (element.type as FC & { displayName?: string }).displayName : ''\n}\n\nexport const getOrderedItems = (\n children: ReactNode,\n result: ComboboxItem[] = []\n): ComboboxItem[] => {\n Children.forEach(children, child => {\n if (!isValidElement(child)) return\n\n if (getElementDisplayName(child) === 'Combobox.Item') {\n const childProps = child.props as ItemProps\n result.push({\n value: childProps.value,\n disabled: !!childProps.disabled,\n text: getItemText(childProps.children),\n })\n }\n\n if ((child.props as ItemProps).children) {\n getOrderedItems((child.props as ItemProps).children, result)\n }\n })\n\n return result\n}\n\nconst findNestedItemText = (children: ReactNode): string => {\n if (!children) return ''\n\n for (const child of Children.toArray(children)) {\n if (isValidElement(child)) {\n const childElement = child as ReactElement\n\n if (getElementDisplayName(childElement) === 'Combobox.ItemText') {\n return (childElement.props as ItemTextProps).children\n }\n\n const foundText = findNestedItemText((childElement.props as ItemTextProps).children)\n\n if (foundText) return foundText\n }\n }\n\n return ''\n}\n\n/**\n * If Combobox.Item children:\n * - is a string, then the string is used.\n * - is JSX markup, then we look for Combobox.ItemText to get its string value.\n */\nexport const getItemText = (children: ReactNode): string => {\n return typeof children === 'string' ? children : findNestedItemText(children)\n}\n\nexport const getItemsFromChildren = (children: ReactNode): ItemsMap => {\n const newMap: ItemsMap = new Map()\n\n getOrderedItems(children).forEach(itemData => {\n newMap.set(itemData.value, itemData)\n })\n\n return newMap\n}\n\nexport const hasChildComponent = (children: ReactNode, displayName: string): boolean => {\n return Children.toArray(children).some(child => {\n if (!isValidElement(child)) return false\n\n if (getElementDisplayName(child) === displayName) {\n return true\n } else if ((child.props as { children: ReactNode }).children) {\n return hasChildComponent((child.props as { children: ReactNode }).children, displayName)\n }\n\n return false\n })\n}\n\nexport const findElement = (children: ReactNode, value: string) => {\n return Children.toArray(children)\n .filter(isValidElement)\n .find(child => value === getElementDisplayName(child) || '')\n}\n","import { useCombobox, UseComboboxProps, UseMultipleSelectionReturnValue } from 'downshift'\nimport { RefObject } from 'react'\n\nimport { ComboboxItem, ItemsMap } from '../types'\nimport { getIndexByKey } from '../utils'\n\ninterface Props {\n allowCustomValue?: boolean\n items: ItemsMap\n selectedItems: ComboboxItem[]\n multiselect: UseMultipleSelectionReturnValue<ComboboxItem>\n setSelectedItems: (items: ComboboxItem[]) => void\n triggerAreaRef: RefObject<HTMLDivElement | null>\n}\n\nexport const multipleSelectionReducer = ({\n multiselect,\n selectedItems,\n allowCustomValue = false,\n setSelectedItems,\n triggerAreaRef,\n items,\n}: Props) => {\n const reducer: UseComboboxProps<ComboboxItem>['stateReducer'] = (_, { changes, type }) => {\n const isFocusInsideTriggerArea = triggerAreaRef.current?.contains?.(document.activeElement)\n\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (type) {\n case useCombobox.stateChangeTypes.InputClick:\n return {\n ...changes,\n isOpen: true, // keep menu opened\n }\n case useCombobox.stateChangeTypes.InputKeyDownEnter:\n case useCombobox.stateChangeTypes.ItemClick: {\n const newState = { ...changes }\n\n if (changes.selectedItem != null) {\n newState.inputValue = '' // keep input value after selection\n newState.isOpen = true // keep menu opened after selection\n\n const highlightedIndex = getIndexByKey(items, changes.selectedItem.value)\n\n newState.highlightedIndex = highlightedIndex // preserve highlighted item index after selection\n\n const isAlreadySelected = multiselect.selectedItems.some(\n selectedItem => selectedItem.value === changes.selectedItem?.value\n )\n\n const updatedItems = isAlreadySelected\n ? selectedItems.filter(item => item.value !== changes.selectedItem?.value)\n : [...selectedItems, changes.selectedItem]\n\n setSelectedItems(updatedItems)\n }\n\n return newState\n }\n\n case useCombobox.stateChangeTypes.ToggleButtonClick:\n return {\n ...changes,\n inputValue: allowCustomValue ? changes.inputValue : '',\n }\n case useCombobox.stateChangeTypes.InputChange:\n return {\n ...changes,\n selectedItem: changes.highlightedIndex === -1 ? null : changes.selectedItem,\n }\n case useCombobox.stateChangeTypes.InputBlur:\n return {\n ...changes,\n inputValue: allowCustomValue ? changes.inputValue : '',\n isOpen: isFocusInsideTriggerArea,\n }\n\n default:\n return changes\n }\n }\n\n return reducer\n}\n","import { useCombobox, UseComboboxProps } from 'downshift'\n\nimport { ComboboxItem } from '../types'\n\ninterface Props {\n allowCustomValue?: boolean\n filteredItems: ComboboxItem[]\n setSelectedItem: (value: ComboboxItem | null) => void\n}\n\nexport const singleSelectionReducer = ({\n filteredItems,\n allowCustomValue = false,\n setSelectedItem,\n}: Props) => {\n const reducer: UseComboboxProps<ComboboxItem>['stateReducer'] = (state, { changes, type }) => {\n const exactMatch = filteredItems.find(\n item => item.text.toLowerCase() === state.inputValue.toLowerCase()\n )\n\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (type) {\n case useCombobox.stateChangeTypes.InputKeyDownEscape:\n if (!changes.selectedItem) {\n setSelectedItem(null)\n }\n\n return changes\n case useCombobox.stateChangeTypes.ItemClick:\n case useCombobox.stateChangeTypes.InputKeyDownEnter:\n if (changes.selectedItem) {\n setSelectedItem(changes.selectedItem)\n }\n\n return changes\n case useCombobox.stateChangeTypes.InputClick:\n return { ...changes, isOpen: true }\n case useCombobox.stateChangeTypes.ToggleButtonClick:\n case useCombobox.stateChangeTypes.InputBlur:\n if (allowCustomValue) return changes\n\n if (state.inputValue === '') {\n setSelectedItem(null)\n\n return { ...changes, selectedItem: null }\n }\n\n if (exactMatch) {\n setSelectedItem(exactMatch)\n\n return { ...changes, selectedItem: exactMatch, inputValue: exactMatch.text }\n }\n\n if (state.selectedItem) {\n return { ...changes, inputValue: state.selectedItem.text }\n }\n\n return { ...changes, inputValue: '' }\n default:\n return changes\n }\n }\n\n return reducer\n}\n","/* eslint-disable max-lines-per-function */\nimport { useFormFieldControl } from '@spark-ui/components/form-field'\nimport { useCombinedState } from '@spark-ui/hooks/use-combined-state'\nimport { useCombobox, useMultipleSelection } from 'downshift'\nimport {\n createContext,\n Dispatch,\n Fragment,\n PropsWithChildren,\n RefObject,\n SetStateAction,\n useContext,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react'\n\nimport { Popover } from '../popover'\nimport { type ComboboxItem, type DownshiftState, type ItemsMap } from './types'\nimport { multipleSelectionReducer } from './useCombobox/multipleSelectionReducer'\nimport { singleSelectionReducer } from './useCombobox/singleSelectionReducer'\nimport { getElementByIndex, getItemsFromChildren, hasChildComponent } from './utils'\n\nexport interface ComboboxContextState extends DownshiftState {\n itemsMap: ItemsMap\n filteredItemsMap: ItemsMap\n highlightedItem: ComboboxItem | undefined\n hasPopover: boolean\n areSelectedItemsInTrigger: boolean\n multiple: boolean\n disabled: boolean\n readOnly: boolean\n wrap?: boolean\n state?: 'error' | 'alert' | 'success'\n lastInteractionType: 'mouse' | 'keyboard'\n setHasPopover: Dispatch<SetStateAction<boolean>>\n setAreSelectedItemsInTrigger: Dispatch<SetStateAction<boolean>>\n setLastInteractionType: (type: 'mouse' | 'keyboard') => void\n setOnInputValueChange: Dispatch<SetStateAction<((v: string) => void) | null>>\n innerInputRef: RefObject<HTMLInputElement | null>\n triggerAreaRef: RefObject<HTMLDivElement | null>\n isLoading?: boolean\n isTyping?: boolean\n setIsTyping: Dispatch<SetStateAction<boolean>>\n}\n\nexport type ComboboxContextCommonProps = PropsWithChildren<{\n /**\n * The controlled open state of the select. Must be used in conjunction with `onOpenChange`.\n */\n open?: boolean\n /**\n * Event handler called when the open state of the select changes.\n */\n onOpenChange?: (isOpen: boolean) => void\n /**\n * The open state of the select when it is initially rendered. Use when you do not need to control its open state.\n */\n defaultOpen?: boolean\n /**\n * Use `state` prop to assign a specific state to the combobox, choosing from: `error`, `alert` and `success`. By doing so, the outline styles will be updated.\n */\n state?: 'error' | 'alert' | 'success'\n /**\n * When true, prevents the user from interacting with the combobox.\n */\n disabled?: boolean\n /**\n * Sets the combobox as interactive or not.\n */\n readOnly?: boolean\n /**\n * When true, the items will be filtered depending on the value of the input (not case-sensitive).\n */\n filtering?: 'none' | 'auto' | 'strict'\n /**\n * By default, the combobox will clear or restore the input value to the selected item value on blur.\n */\n allowCustomValue?: boolean\n /**\n * In multiple selection, many selected items might be displayed. Be default, the combobox trigger will expand vertically to display them all.\n * If you wish to keep every item on a single line, disabled this property.\n */\n wrap?: boolean\n /**\n * Display a spinner to indicate to the user that the combobox is loading results for .\n */\n isLoading?: boolean\n}>\n\ninterface ComboboxPropsSingle {\n /**\n * Prop 'multiple' indicating whether multiple values are allowed.\n */\n multiple?: false\n /**\n * The value of the select when initially rendered. Use when you do not need to control the state of the select.\n */\n defaultValue?: string\n /**\n * The controlled value of the select. Should be used in conjunction with `onValueChange`.\n */\n value?: string | null\n /**\n * Event handler called when the value changes.\n */\n onValueChange?: (value: string) => void\n}\n\ninterface ComboboxPropsMultiple {\n /**\n * Prop 'multiple' indicating whether multiple values are allowed.\n */\n multiple: true\n /**\n * The value of the select when initially rendered. Use when you do not need to control the state of the select.\n */\n defaultValue?: string[]\n /**\n * The controlled value of the select. Should be used in conjunction with `onValueChange`.\n */\n value?: string[]\n /**\n * Event handler called when the value changes.\n */\n onValueChange?: (value: string[]) => void\n}\n\nexport type ComboboxContextProps = ComboboxContextCommonProps &\n (ComboboxPropsSingle | ComboboxPropsMultiple)\n\nconst ComboboxContext = createContext<ComboboxContextState | null>(null)\n\nconst getFilteredItemsMap = (map: ItemsMap, inputValue: string | undefined): ItemsMap => {\n if (!inputValue) return map\n\n return new Map(\n Array.from(map).filter(([_, { text }]) => text.toLowerCase().includes(inputValue.toLowerCase()))\n )\n}\n\nexport const ID_PREFIX = ':combobox'\n\nexport const ComboboxProvider = ({\n children,\n state: stateProp,\n allowCustomValue = false,\n filtering = 'auto',\n disabled: disabledProp = false,\n multiple = false,\n readOnly: readOnlyProp = false,\n wrap = true,\n // Value\n value: controlledValue,\n defaultValue,\n onValueChange,\n // Open\n open: controlledOpen,\n defaultOpen,\n onOpenChange,\n isLoading,\n}: ComboboxContextProps) => {\n const isMounted = useRef(false)\n\n // Input state\n const [inputValue, setInputValue] = useState<string | undefined>('')\n const [isTyping, setIsTyping] = useState<boolean>(filtering === 'strict')\n const triggerAreaRef = useRef<HTMLDivElement>(null)\n const innerInputRef = useRef<HTMLInputElement>(null)\n const [onInputValueChange, setOnInputValueChange] = useState<((v: string) => void) | null>(null)\n\n const [comboboxValue] = useCombinedState(controlledValue, defaultValue)\n\n const shouldFilterItems = filtering === 'strict' || (filtering === 'auto' && isTyping)\n\n // Items state\n const [itemsMap, setItemsMap] = useState<ItemsMap>(getItemsFromChildren(children))\n const [filteredItemsMap, setFilteredItems] = useState(\n shouldFilterItems ? getFilteredItemsMap(itemsMap, inputValue) : itemsMap\n )\n\n const [selectedItem, setSelectedItem] = useState<ComboboxItem | null>(\n itemsMap.get(comboboxValue as string) || null\n )\n\n const [selectedItems, setSelectedItems] = useState<ComboboxItem[]>(\n comboboxValue\n ? [...itemsMap.values()].filter(item => (comboboxValue as string[]).includes(item.value))\n : []\n )\n\n const onInternalSelectedItemChange = (item: ComboboxItem | null) => {\n setIsTyping(false)\n\n if (item?.value !== selectedItem?.value) {\n setSelectedItem(item)\n setTimeout(() => {\n onValueChange?.(item?.value as string & string[])\n }, 0)\n }\n }\n\n const onInternalSelectedItemsChange = (items: ComboboxItem[]) => {\n setSelectedItems(items)\n setTimeout(() => {\n onValueChange?.(items.map(i => i.value) as string & string[])\n }, 0)\n }\n\n // Sync internal state with controlled value\n useEffect(() => {\n if (!isMounted.current) {\n isMounted.current = true\n\n return\n }\n\n if (multiple) {\n const newSelectedItems = (comboboxValue as string[]).reduce(\n (accum: ComboboxItem[], value) => {\n const match = itemsMap.get(value)\n\n return match ? [...accum, match] : accum\n },\n []\n )\n\n setSelectedItems(comboboxValue ? newSelectedItems : [])\n } else {\n setSelectedItem(itemsMap.get(comboboxValue as string) || null)\n }\n }, [multiple ? JSON.stringify(comboboxValue) : comboboxValue])\n\n // Form field state\n const field = useFormFieldControl()\n\n const internalFieldLabelID = `${ID_PREFIX}-label-${useId()}`\n const internalFieldID = `${ID_PREFIX}-field-${useId()}`\n const id = field.id || internalFieldID\n const labelId = field.labelId || internalFieldLabelID\n\n const state = field.state || stateProp\n const disabled = field.disabled ?? disabledProp\n const readOnly = field.readOnly ?? readOnlyProp\n\n const [hasPopover, setHasPopover] = useState<boolean>(\n hasChildComponent(children, 'Combobox.Popover')\n )\n\n const [areSelectedItemsInTrigger, setAreSelectedItemsInTrigger] = useState(false)\n\n const [lastInteractionType, setLastInteractionType] = useState<'mouse' | 'keyboard'>('mouse')\n\n useEffect(() => {\n setFilteredItems(shouldFilterItems ? getFilteredItemsMap(itemsMap, inputValue) : itemsMap)\n }, [inputValue, itemsMap])\n\n const multiselect = useMultipleSelection<ComboboxItem>({\n selectedItems,\n stateReducer: (state, { type, changes }) => {\n const types = useMultipleSelection.stateChangeTypes\n\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (type) {\n case types.SelectedItemKeyDownBackspace:\n case types.SelectedItemKeyDownDelete: {\n onInternalSelectedItemsChange(changes.selectedItems || [])\n\n let activeIndex\n\n if (type === types.SelectedItemKeyDownDelete) {\n const isLastItem = state?.activeIndex === changes.selectedItems?.length\n activeIndex = isLastItem ? -1 : state.activeIndex\n } else {\n const hasItemBefore = (changes?.activeIndex || 0) - 1 >= 0\n activeIndex = hasItemBefore ? state.activeIndex - 1 : changes?.activeIndex\n }\n\n return {\n ...changes,\n activeIndex,\n }\n }\n case types.SelectedItemClick:\n if (innerInputRef.current) {\n innerInputRef.current.focus()\n }\n\n return {\n ...changes,\n activeIndex: -1, // the focus will remain on the input\n }\n case types.FunctionRemoveSelectedItem:\n return {\n ...changes,\n activeIndex: -1, // the focus will remain on the input\n }\n case types.DropdownKeyDownNavigationPrevious:\n downshift.closeMenu()\n\n return changes\n default:\n return changes\n }\n },\n })\n\n const filteredItems = Array.from(filteredItemsMap.values())\n\n useEffect(() => {\n onInputValueChange?.(inputValue || '')\n }, [inputValue])\n\n /**\n * - props: https://github.com/downshift-js/downshift/tree/master/src/hooks/useCombobox#basic-props\n * - state (for state reducer): https://github.com/downshift-js/downshift/tree/master/src/hooks/useCombobox#statechangetypes\n * - output: https://github.com/downshift-js/downshift/tree/master/src/hooks/useCombobox#returned-props\n */\n const downshift = useCombobox<ComboboxItem>({\n inputId: id,\n items: filteredItems,\n selectedItem: multiple ? undefined : selectedItem,\n id,\n labelId,\n // Input\n inputValue,\n onInputValueChange: ({ inputValue: newInputValue }) => {\n setInputValue(newInputValue)\n\n if (shouldFilterItems) {\n const filtered = getFilteredItemsMap(itemsMap, newInputValue || '')\n setFilteredItems(filtered)\n }\n },\n // Open\n initialIsOpen: defaultOpen,\n ...(controlledOpen != null && { isOpen: controlledOpen }),\n onIsOpenChange: changes => {\n if (changes.isOpen != null) {\n onOpenChange?.(changes.isOpen)\n }\n },\n // Custom Spark item object parsing\n itemToString: item => {\n return (item as ComboboxItem)?.text\n },\n isItemDisabled: item => {\n const isFilteredOut =\n !!inputValue &&\n !filteredItems.some(filteredItem => {\n return item.value === filteredItem.value\n })\n\n return item.disabled || isFilteredOut\n },\n // Main reducer\n stateReducer: multiple\n ? multipleSelectionReducer({\n multiselect,\n selectedItems,\n allowCustomValue,\n setSelectedItems: onInternalSelectedItemsChange,\n triggerAreaRef,\n items: itemsMap,\n })\n : singleSelectionReducer({\n allowCustomValue,\n setSelectedItem: onInternalSelectedItemChange,\n filteredItems: [...filteredItemsMap.values()],\n }),\n /**\n * Downshift default behaviour is to scroll into view the highlighted item when the dropdown opens. This behaviour is not stable and scrolls the dropdown to the bottom of the screen.\n */\n scrollIntoView: node => {\n if (node) {\n node.scrollIntoView({ block: 'nearest' })\n }\n\n return undefined\n },\n })\n\n /**\n * Indices in a Map are set when an element is added to the Map.\n * If for some reason, in the Combobox:\n * - items order changes\n * - items are added\n * - items are removed\n *\n * The Map must be rebuilt from the new children in order to preserve logical indices.\n *\n * Downshift is heavily indices based for keyboard navigation, so it it important.\n */\n useEffect(() => {\n const newMap = getItemsFromChildren(children)\n\n const previousItems = [...itemsMap.values()]\n const newItems = [...newMap.values()]\n\n const hasItemsChanges =\n previousItems.length !== newItems.length ||\n previousItems.some((item, index) => {\n const hasUpdatedValue = item.value !== newItems[index]?.value\n const hasUpdatedText = item.text !== newItems[index]?.text\n\n return hasUpdatedValue || hasUpdatedText\n })\n\n if (hasItemsChanges) {\n setItemsMap(newMap)\n }\n }, [children])\n\n /**\n * Warning:\n * Downshift is expecting the items list to always be rendered, as per a11y guidelines.\n * This is why the `Popover` is always opened in this component, but visually hidden instead from Combobox.Popover.\n */\n const [WrapperComponent, wrapperProps] = hasPopover ? [Popover, { open: true }] : [Fragment, {}]\n\n return (\n <ComboboxContext.Provider\n value={{\n // Data\n itemsMap,\n filteredItemsMap,\n highlightedItem: getElementByIndex(filteredItemsMap, downshift.highlightedIndex),\n // State\n multiple,\n disabled,\n readOnly,\n areSelectedItemsInTrigger,\n setAreSelectedItemsInTrigger,\n hasPopover,\n setHasPopover,\n state,\n lastInteractionType,\n setLastInteractionType,\n wrap,\n // Refs\n innerInputRef,\n triggerAreaRef,\n // Downshift state\n ...downshift,\n ...multiselect,\n setInputValue,\n selectItem: onInternalSelectedItemChange,\n setSelectedItems: onInternalSelectedItemsChange,\n isLoading,\n setOnInputValueChange,\n isTyping,\n setIsTyping,\n }}\n >\n <WrapperComponent {...wrapperProps}>{children}</WrapperComponent>\n </ComboboxContext.Provider>\n )\n}\n\nexport const useComboboxContext = () => {\n const context = useContext(ComboboxContext)\n\n if (!context) {\n throw Error('useComboboxContext must be used within a Combobox provider')\n }\n\n return context\n}\n","import { type ComboboxContextProps, ComboboxProvider } from './ComboboxContext'\n\nexport type ComboboxProps = ComboboxContextProps\n\nexport const Combobox = ({ children, ...props }: ComboboxProps) => {\n return <ComboboxProvider {...props}>{children}</ComboboxProvider>\n}\n\nCombobox.displayName = 'Combobox'\n","import { DeleteOutline } from '@spark-ui/icons/DeleteOutline'\nimport { cx } from 'class-variance-authority'\nimport { ComponentPropsWithoutRef, MouseEventHandler, Ref } from 'react'\n\nimport { Icon } from '../icon'\nimport { useComboboxContext } from './ComboboxContext'\n\nexport interface ClearButtonProps extends ComponentPropsWithoutRef<'button'> {\n 'aria-label': string\n ref?: Ref<HTMLButtonElement>\n}\n\nexport const ClearButton = ({\n className,\n tabIndex = -1,\n onClick,\n ref,\n ...others\n}: ClearButtonProps) => {\n const ctx = useComboboxContext()\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = event => {\n event.stopPropagation()\n\n if (ctx.multiple) {\n ctx.setSelectedItems([])\n } else {\n ctx.selectItem(null)\n }\n\n ctx.setInputValue('')\n\n if (ctx.innerInputRef.current) {\n ctx.innerInputRef.current.focus()\n }\n\n if (onClick) {\n onClick(event)\n }\n }\n\n return (\n <button\n ref={ref}\n className={cx(className, 'h-sz-44 text-neutral hover:text-neutral-hovered')}\n tabIndex={tabIndex}\n onClick={handleClick}\n type=\"button\"\n {...others}\n >\n <Icon size=\"sm\">\n <DeleteOutline />\n </Icon>\n </button>\n )\n}\n\nClearButton.displayName = 'Combobox.ClearButton'\n","import { useMergeRefs } from '@spark-ui/hooks/use-merge-refs'\nimport { ArrowHorizontalDown } from '@spark-ui/icons/ArrowHorizontalDown'\nimport { cx } from 'class-variance-authority'\nimport { ComponentProps, Ref } from 'react'\n\nimport { Icon } from '../icon'\nimport { IconButton } from '../icon-button'\nimport { useComboboxContext } from './ComboboxContext'\n\ninterface DisclosureProps extends Omit<ComponentProps<typeof IconButton>, 'aria-label'> {\n className?: string\n closedLabel: string\n openedLabel: string\n ref?: Ref<HTMLButtonElement>\n}\n\nexport const Disclosure = ({\n className,\n closedLabel,\n openedLabel,\n intent = 'neutral',\n design = 'ghost',\n size = 'sm',\n ref: forwardedRef,\n ...props\n}: DisclosureProps) => {\n const ctx = useComboboxContext()\n\n const { ref: downshiftRef, ...downshiftDisclosureProps } = ctx.getToggleButtonProps({\n disabled: ctx.disabled || ctx.readOnly,\n onClick: event => {\n event.stopPropagation()\n },\n })\n const isExpanded = downshiftDisclosureProps['aria-expanded']\n const ref = useMergeRefs(forwardedRef, downshiftRef)\n\n return (\n <IconButton\n ref={ref}\n className={cx(className, 'ml-sm mt-[calc((44px-32px)/2)]')}\n intent={intent}\n design={design}\n size={size}\n {...downshiftDisclosureProps}\n {...props}\n aria-label={isExpanded ? openedLabel : closedLabel}\n disabled={ctx.disabled}\n >\n <Icon\n className={cx('shrink-0', 'rotate-0 transition duration-100 ease-in', {\n 'rotate-180': isExpanded,\n })}\n size=\"sm\"\n >\n <ArrowHorizontalDown />\n </Icon>\n </IconButton>\n )\n}\n\nDisclosure.displayName = 'Combobox.Disclosure'\n","import { cx } from 'class-variance-authority'\nimport { type ReactNode, Ref } from 'react'\n\nimport { useComboboxContext } from './ComboboxContext'\n\ninterface EmptyProps {\n className?: string\n children: ReactNode\n ref?: Ref<HTMLDivElement>\n}\n\nexport const Empty = ({ className, children, ref: forwardedRef }: EmptyProps) => {\n const ctx = useComboboxContext()\n const hasNoItemVisible = ctx.filteredItemsMap.size === 0\n\n return hasNoItemVisible ? (\n <div\n ref={forwardedRef}\n className={cx('px-lg py-md text-body-1 text-on-surface/dim-1', className)}\n >\n {children}\n </div>\n ) : null\n}\n\nEmpty.displayName = 'Combobox.Empty'\n","import { createContext, type PropsWithChildren, useContext, useId } from 'react'\n\nimport { ID_PREFIX } from './ComboboxContext'\n\nexport interface ComboboxContextState {\n groupLabelId: string\n}\n\ntype ComboboxContextProps = PropsWithChildren\n\nconst ComboboxGroupContext = createContext<ComboboxContextState | null>(null)\n\nexport const ComboboxGroupProvider = ({ children }: ComboboxContextProps) => {\n const groupLabelId = `${ID_PREFIX}-group-label-${useId()}`\n\n return (\n <ComboboxGroupContext.Provider value={{ groupLabelId }}>\n {children}\n </ComboboxGroupContext.Provider>\n )\n}\n\nexport const useComboboxGroupContext = () => {\n const context = useContext(ComboboxGroupContext)\n\n if (!context) {\n throw Error('useComboboxGroupContext must be used within a ComboboxGroup provider')\n }\n\n return context\n}\n","import { cx } from 'class-variance-authority'\nimport { Children, isValidElement, ReactNode, Ref } from 'react'\n\nimport { useComboboxContext } from './ComboboxContext'\nimport { ComboboxGroupProvider, useComboboxGroupContext } from './ComboboxItemsGroupContext'\n\ninterface GroupProps {\n children: ReactNode\n className?: string\n ref?: Ref<HTMLDivElement>\n}\n\nexport const Group = ({ children, ref: forwardedRef, ...props }: GroupProps) => {\n return (\n <ComboboxGroupProvider>\n <GroupContent ref={forwardedRef} {...props}>\n {children}\n </GroupContent>\n </ComboboxGroupProvider>\n )\n}\n\nconst GroupContent = ({ children, className, ref: forwardedRef }: GroupProps) => {\n const ctx = useComboboxContext()\n const groupCtx = useComboboxGroupContext()\n\n const hasVisibleOptions = Children.toArray(children).some(child => {\n return (\n isValidElement(child) && ctx.filteredItemsMap.get((child.props as { value: string }).value)\n )\n })\n\n return hasVisibleOptions ? (\n <div\n ref={forwardedRef}\n role=\"group\"\n aria-labelledby={groupCtx.groupLabelId}\n className={cx(className)}\n >\n {children}\n </div>\n ) : null\n}\n\nGroup.displayName = 'Combobox.Group'\n","import { useFormFieldControl } from '@spark-ui/components/form-field'\nimport { useCombinedState } from '@spark-ui/hooks/use-combined-state'\nimport { useMergeRefs } from '@spark-ui/hooks/use-merge-refs'\nimport { cx } from 'class-variance-authority'\nimport {\n ChangeEvent,\n ComponentPropsWithoutRef,\n Fragment,\n Ref,\n SyntheticEvent,\n useEffect,\n} from 'react'\n\nimport { Popover } from '../popover'\nimport { VisuallyHidden } from '../visually-hidden'\nimport { useComboboxContext } from './ComboboxContext'\n\ntype InputPrimitiveProps = ComponentPropsWithoutRef<'input'>\n\ninterface InputProps extends Omit<InputPrimitiveProps, 'value' | 'placeholder'> {\n className?: string\n placeholder?: string\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n ref?: Ref<HTMLInputElement>\n}\n\nexport const Input = ({\n 'aria-label': ariaLabel,\n className,\n placeholder,\n value,\n defaultValue,\n onValueChange,\n ref: forwardedRef,\n ...props\n}: InputProps) => {\n const ctx = useComboboxContext()\n const field = useFormFieldControl()\n const [inputValue] = useCombinedState(value, defaultValue)\n\n const { isInvalid, description } = field\n\n useEffect(() => {\n if (inputValue != null) {\n ctx.setInputValue(inputValue)\n }\n }, [inputValue])\n\n useEffect(() => {\n if (onValueChange) {\n ctx.setOnInputValueChange(() => onValueChange)\n }\n\n // Sync input with combobox default value\n if (!ctx.multiple && ctx.selectedItem) {\n ctx.setInputValue(ctx.selectedItem.text)\n }\n }, [])\n\n const PopoverTrigger = ctx.hasPopover ? Popover.Trigger : Fragment\n const popoverTriggerProps = ctx.hasPopover\n ? {\n asChild: true,\n type: undefined,\n }\n : {}\n\n const multiselectInputProps = ctx.getDropdownProps()\n const inputRef = useMergeRefs(forwardedRef, ctx.innerInputRef, multiselectInputProps.ref)\n const downshiftInputProps = ctx.getInputProps({\n disabled: ctx.disabled || ctx.readOnly,\n ...multiselectInputProps,\n onKeyDown: event => {\n multiselectInputProps.onKeyDown?.(event)\n ctx.setLastInteractionType('keyboard')\n ctx.setIsTyping(true)\n },\n /**\n *\n * Important:\n * - without this, the input cursor is moved to the end after every change.\n * @see https://github.com/downshift-js/downshift/issues/1108#issuecomment-674180157\n */\n onChange: (e: ChangeEvent<HTMLInputElement>) => {\n ctx.setInputValue(e.target.value)\n },\n ref: inputRef,\n })\n\n const hasPlaceholder = ctx.multiple\n ? !ctx.areSelectedItemsInTrigger || ctx.selectedItems.length === 0\n : ctx.selectedItem === null\n\n function mergeHandlers<T extends SyntheticEvent>(\n handlerA?: (event: T) => void,\n handlerB?: (event: T) => void\n ) {\n return (event: T) => {\n handlerA?.(event)\n handlerB?.(event)\n }\n }\n\n /**\n * Downshift has its own callbacks set for a few events types.\n * We must merge the event handlers with the (optional) forwarded props if consumer wish to use the same events for alernate purposes (ex: tracking)\n */\n const mergedEventProps = {\n onBlur: mergeHandlers(props.onBlur, downshiftInputProps.onBlur),\n onChange: mergeHandlers(props.onChange, downshiftInputProps.onChange),\n onClick: mergeHandlers(props.onClick, downshiftInputProps.onClick),\n onKeyDown: mergeHandlers(props.onKeyDown, downshiftInputProps.onKeyDown),\n }\n\n return (\n <>\n {ariaLabel && (\n <VisuallyHidden>\n <label {...ctx.getLabelProps()}>{ariaLabel}</label>\n </VisuallyHidden>\n )}\n <PopoverTrigger {...popoverTriggerProps}>\n <input\n data-spark-component=\"combobox-input\"\n type=\"text\"\n {...(hasPlaceholder && { placeholder })}\n className={cx(\n 'max-w-full shrink-0 grow basis-[80px]',\n 'h-sz-28 bg-surface px-sm text-body-1 text-ellipsis outline-hidden',\n 'disabled:text-on-surface/dim-3 disabled:cursor-not-allowed disabled:bg-transparent',\n 'read-only:text-on-surface read-only:cursor-default read-only:bg-transparent',\n className\n )}\n {...props}\n {...downshiftInputProps}\n {...mergedEventProps}\n value={ctx.inputValue}\n aria-label={ariaLabel}\n disabled={ctx.disabled}\n readOnly={ctx.readOnly}\n // FormField\n aria-invalid={isInvalid}\n aria-describedby={description}\n />\n </PopoverTrigger>\n </>\n )\n}\n\nInput.displayName = 'Combobox.Input'\n","import {\n createContext,\n Dispatch,\n type PropsWithChildren,\n SetStateAction,\n useContext,\n useState,\n} from 'react'\n\nimport { useComboboxContext } from './ComboboxContext'\nimport { ComboboxItem } from './types'\nimport { getIndexByKey, getItemText } from './utils'\n\ntype ItemTextId = string | undefined\n\ninterface ComboboxItemContextState {\n textId: ItemTextId\n setTextId: Dispatch<SetStateAction<ItemTextId>>\n isSelected: boolean\n itemData: ComboboxItem\n index: number\n disabled: boolean\n}\n\nconst ComboboxItemContext = createContext<ComboboxItemContextState | null>(null)\n\nexport const ComboboxItemProvider = ({\n value,\n disabled = false,\n children,\n}: PropsWithChildren<{ value: string; disabled?: boolean }>) => {\n const ctx = useComboboxContext()\n\n const [textId, setTextId] = useState<ItemTextId>(undefined)\n\n const index = getIndexByKey(ctx.filteredItemsMap, value)\n const itemData: ComboboxItem = { disabled, value, text: getItemText(children) }\n\n const isSelected = ctx.multiple\n ? ctx.selectedItems.some(selectedItem => selectedItem.value === value)\n : ctx.selectedItem?.value === value\n\n return (\n <ComboboxItemContext.Provider\n value={{ textId, setTextId, isSelected, itemData, index, disabled }}\n >\n {children}\n </ComboboxItemContext.Provider>\n )\n}\n\nexport const useComboboxItemContext = () => {\n const context = useContext(ComboboxItemContext)\n\n if (!context) {\n throw Error('useComboboxItemContext must be used within a ComboboxItem provider')\n }\n\n return context\n}\n","import { useMergeRefs } from '@spark-ui/hooks/use-merge-refs'\nimport { cva, cx } from 'class-variance-authority'\nimport { type HTMLAttributes, type ReactNode, Ref } from 'react'\n\nimport { useComboboxContext } from './ComboboxContext'\nimport { ComboboxItemProvider, useComboboxItemContext } from './ComboboxItemContext'\n\nexport interface ItemProps extends HTMLAttributes<HTMLLIElement> {\n disabled?: boolean\n value: string\n children: ReactNode\n className?: string\n ref?: Ref<HTMLLIElement>\n}\n\nexport const Item = ({ children, ref: forwardedRef, ...props }: ItemProps) => {\n const { value, disabled } = props\n\n return (\n <ComboboxItemProvider value={value} disabled={disabled}>\n <ItemContent ref={forwardedRef} {...props}>\n {children}\n </ItemContent>\n </ComboboxItemProvider>\n )\n}\n\nconst styles = cva('px-lg py-md text-body-1', {\n variants: {\n selected: {\n true: 'font-bold',\n },\n disabled: {\n true: 'opacity-dim-3 cursor-not-allowed',\n false: 'cursor-pointer',\n },\n highlighted: {\n true: '',\n },\n interactionType: {\n mouse: '',\n keyboard: '',\n },\n },\n compoundVariants: [\n {\n highlighted: true,\n interactionType: 'mouse',\n class: 'bg-surface-hovered',\n },\n {\n highlighted: true,\n interactionType: 'keyboard',\n class: 'u-outline',\n },\n ],\n})\n\nconst ItemContent = ({\n className,\n disabled = false,\n value,\n children,\n ref: forwardedRef,\n ...rest\n}: ItemProps) => {\n const ctx = useComboboxContext()\n const itemCtx = useComboboxItemContext()\n\n const isVisible = !!ctx.filteredItemsMap.get(value)\n\n const { ref: downshiftRef, ...downshiftItemProps } = ctx.getItemProps({\n item: itemCtx.itemData,\n index: itemCtx.index,\n })\n\n const ref = useMergeRefs(forwardedRef, downshiftRef)\n\n if (!isVisible) return null\n\n return (\n <li\n ref={ref}\n className={cx(\n styles({\n selected: itemCtx.isSelected,\n disabled,\n highlighted: ctx.highlightedItem?.value === value,\n interactionType: ctx.lastInteractionType,\n className,\n })\n )}\n key={value}\n {...downshiftItemProps}\n {...rest}\n aria-selected={itemCtx.isSelected}\n aria-labelledby={itemCtx.textId}\n >\n {children}\n </li>\n )\n}\n\nItem.displayName = 'Combobox.Item'\n","import { Check } from '@spark-ui/icons/Check'\nimport { cx } from 'class-variance-authority'\nimport { ReactNode, Ref } from 'react'\n\nimport { Icon } from '../icon'\nimport { useComboboxItemContext } from './ComboboxItemContext'\n\nexport interface ItemIndicatorProps {\n children?: ReactNode\n className?: string\n label?: string\n ref?: Ref<HTMLSpanElement>\n}\n\nexport const ItemIndicator = ({\n className,\n children,\n label,\n ref: forwardedRef,\n}: ItemIndicatorProps) => {\n const { disabled, isSelected } = useComboboxItemContext()\n\n const childElement = children || (\n <Icon size=\"sm\">\n <Check aria-label={label} />\n </Icon>\n )\n\n return (\n <span\n ref={forwardedRef}\n className={cx('min-h-sz-16 min-w-sz-16 flex', disabled && 'opacity-dim-3', className)}\n >\n {isSelected && childElement}\n </span>\n )\n}\n\nItemIndicator.displayName = 'Combobox.ItemIndicator'\n","import { useMergeRefs } from '@spark-ui/hooks/use-merge-refs'\nimport { cx } from 'class-variance-authority'\nimport { ComponentPropsWithoutRef, ReactNode, Ref, useLayoutEffect, useRef } from 'react'\n\nimport { Spinner } from '../spinner'\nimport { useComboboxContext } from './ComboboxContext'\n\ninterface ItemsProps extends ComponentPropsWithoutRef<'ul'> {\n children: ReactNode\n className?: string\n ref?: Ref<HTMLUListElement>\n}\n\nexport const Items = ({ children, className, ref: forwardedRef, ...props }: ItemsProps) => {\n const ctx = useComboboxContext()\n\n const { ref: downshiftRef, ...downshiftMenuProps } = ctx.getMenuProps({\n onMouseMove: () => {\n ctx.setLastInteractionType('mouse')\n },\n })\n\n const innerRef = useRef<HTMLElement>(null)\n\n const ref = useMergeRefs(forwardedRef, downshiftRef, innerRef)\n\n const isOpen = ctx.hasPopover ? ctx.isOpen : true\n\n const isPointerEventsDisabled = ctx.hasPopover && !isOpen\n\n useLayoutEffect(() => {\n if (innerRef.current?.parentElement) {\n innerRef.current.parentElement.style.pointerEvents = isPointerEventsDisabled ? 'none' : ''\n innerRef.current.style.pointerEvents = isPointerEventsDisabled ? 'none' : ''\n }\n }, [isPointerEventsDisabled])\n\n return (\n <ul\n ref={ref}\n className={cx(\n className,\n 'flex flex-col',\n isOpen ? 'block' : 'pointer-events-none invisible opacity-0',\n ctx.hasPopover && 'p-lg',\n ctx.isLoading && 'items-center overflow-y-auto'\n )}\n {...props}\n {...downshiftMenuProps}\n aria-busy={ctx.isLoading}\n data-spark-component=\"combobox-items\"\n >\n {ctx.isLoading ? <Spinner size=\"sm\" /> : children}\n </ul>\n )\n}\n\nItems.displayName = 'Combobox.Items'\n","import { cx } from 'class-variance-authority'\nimport { Ref, useEffect, useId } from 'react'\n\nimport { ID_PREFIX } from './ComboboxContext'\nimport { useComboboxItemContext } from './ComboboxItemContext'\n\nexport interface ItemTextProps {\n children: string\n className?: string\n ref?: Ref<HTMLSpanElement>\n}\n\nexport const ItemText = ({ children, className, ref: forwardedRef }: ItemTextProps) => {\n const id = `${ID_PREFIX}-item-text-${useId()}`\n\n const { setTextId } = useComboboxItemContext()\n\n useEffect(() => {\n setTextId(id)\n\n return () => setTextId(undefined)\n })\n\n return (\n <span id={id} className={cx('inline', className)} ref={forwardedRef}>\n {children}\n </span>\n )\n}\n\nItemText.displayName = 'Combobox.ItemText'\n","import { cx } from 'class-variance-authority'\nimport { Ref } from 'react'\n\nimport { useComboboxGroupContext } from './ComboboxItemsGroupContext'\n\ninterface LabelProps {\n children: string\n className?: string\n ref?: Ref<HTMLDivElement>\n}\n\nexport const Label = ({ children, className, ref: forwardedRef }: LabelProps) => {\n const groupCtx = useComboboxGroupContext()\n\n return (\n <div\n ref={forwardedRef}\n id={groupCtx.groupLabelId}\n className={cx('px-md py-sm text-body-2 text-neutral italic', className)}\n >\n {children}\n </div>\n )\n}\n\nLabel.displayName = 'Combobox.Label'\n","import { ReactElement } from 'react'\n\nimport { Icon } from '../icon'\n\nexport const LeadingIcon = ({ children }: { children: ReactElement }) => {\n return (\n <Icon size={'sm'} className=\"h-sz-44 shrink-0\">\n {children}\n </Icon>\n )\n}\n\nLeadingIcon.displayName = 'Combobox.LeadingIcon'\n","import { cx } from 'class-variance-authority'\nimport { ComponentProps, Ref, useEffect } from 'react'\n\nimport { Popover as SparkPopover } from '../popover'\nimport { useComboboxContext } from './ComboboxContext'\n\ninterface PopoverProps extends ComponentProps<typeof SparkPopover.Content> {\n ref?: Ref<HTMLDivElement>\n}\n\nexport const Popover = ({\n children,\n matchTriggerWidth = true,\n sideOffset = 4,\n className,\n ref: forwardedRef,\n ...props\n}: PopoverProps) => {\n const ctx = useComboboxContext()\n\n useEffect(() => {\n ctx.setHasPopover(true)\n\n return () => ctx.setHasPopover(false)\n }, [])\n\n return (\n <SparkPopover.Content\n ref={forwardedRef}\n inset\n asChild\n matchTriggerWidth={matchTriggerWidth}\n className={cx('z-dropdown! relative', className)}\n sideOffset={sideOffset}\n onOpenAutoFocus={e => {\n /**\n * With a combobox pattern, the focus should remain on the trigger at all times.\n * Passing the focus to the combobox popover would break keyboard navigation.\n */\n e.preventDefault()\n }}\n {...props}\n data-spark-component=\"combobox-popover\"\n >\n {children}\n </SparkPopover.Content>\n )\n}\n\nPopover.displayName = 'Combobox.Popover'\n","import { ReactElement } from 'react'\n\nimport { Popover as SparkPopover } from '../popover'\n\nexport const Portal: typeof SparkPopover.Portal = ({ children, ...rest }): ReactElement => (\n <SparkPopover.Portal {...rest}>{children}</SparkPopover.Portal>\n)\n\nPortal.displayName = 'Combobox.Portal'\n","import { DeleteOutline } from '@spark-ui/icons/DeleteOutline'\nimport { cx } from 'class-variance-authority'\nimport { FocusEvent } from 'react'\n\nimport { Icon } from '../icon'\nimport { useComboboxContext } from './ComboboxContext'\nimport { ComboboxItem } from './types'\n\nconst SelectedItem = ({ item: selectedItem, index }: { item: ComboboxItem; index: number }) => {\n const ctx = useComboboxContext()\n\n const isCleanable = !ctx.disabled && !ctx.readOnly\n\n const handleFocus = (e: FocusEvent<HTMLSpanElement>) => {\n const element = e.target as HTMLSpanElement\n if (ctx.lastInteractionType === 'keyboard') {\n element.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n })\n }\n }\n\n const { disabled, ...selectedItemProps } = ctx.getSelectedItemProps({\n disabled: ctx.disabled || ctx.readOnly,\n selectedItem,\n index,\n })\n\n const Element = disabled ? 'button' : 'span'\n\n return (\n <Element\n role=\"presentation\"\n data-spark-component=\"combobox-selected-item\"\n key={`selected-item-${index}`}\n className={cx(\n 'h-sz-28 bg-neutral-container flex items-center rounded-md align-middle',\n 'text-body-2 text-on-neutral-container',\n 'disabled:opacity-dim-3 disabled:cursor-not-allowed',\n 'focus-visible:u-outline-inset outline-hidden',\n { 'px-md': !isCleanable, 'pl-md': isCleanable }\n )}\n {...selectedItemProps}\n tabIndex={-1}\n {...(disabled && { disabled: true })}\n onFocus={handleFocus}\n >\n <span\n className={cx('line-clamp-1 overflow-x-hidden leading-normal break-all text-ellipsis', {\n 'w-max': !ctx.wrap,\n })}\n >\n {selectedItem.text}\n </span>\n {ctx.disabled}\n {isCleanable && (\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden\n className=\"px-md h-full cursor-pointer\"\n onClick={e => {\n e.stopPropagation()\n\n const updatedSelectedItems = ctx.selectedItems.filter(\n item => item.value !== selectedItem.value\n )\n\n ctx.setSelectedItems(updatedSelectedItems)\n\n if (ctx.innerInputRef.current) {\n ctx.innerInputRef.current.focus({ preventScroll: true })\n }\n }}\n >\n <Icon size=\"sm\">\n <DeleteOutline />\n </Icon>\n </button>\n )}\n </Element>\n )\n}\n\nexport const SelectedItems = () => {\n const ctx = useComboboxContext()\n\n return ctx.multiple && ctx.selectedItems.length ? (\n <>\n {ctx.selectedItems.map((item, index) => (\n <SelectedItem key={item.value} item={item} index={index} />\n ))}\n </>\n ) : null\n}\n\nSelectedItems.displayName = 'Combobox.SelectedItems'\n","import { cva } from 'class-variance-authority'\n\nexport const styles = cva(\n [\n 'flex items-start gap-md min-h-sz-44 text-body-1',\n 'h-fit rounded-lg px-lg',\n // outline styles\n 'ring-1 outline-hidden ring-inset focus-within:ring-2 focus-within:ring-focus',\n ],\n {\n variants: {\n allowWrap: {\n true: '',\n false: 'h-sz-44',\n },\n state: {\n undefined: 'ring-outline',\n error: 'ring-error',\n alert: 'ring-alert',\n success: 'ring-success',\n },\n disabled: {\n true: 'cursor-not-allowed border-outline bg-on-surface/dim-5 text-on-surface/dim-3',\n },\n readOnly: {\n true: 'cursor-default bg-on-surface/dim-5 text-on-surface',\n },\n },\n compoundVariants: [\n {\n disabled: false,\n state: undefined,\n class: 'default:hover:ring-outline-high',\n },\n {\n disabled: false,\n readOnly: false,\n class: 'bg-surface text-on-surface cursor-text',\n },\n ],\n defaultVariants: {\n state: undefined,\n disabled: false,\n readOnly: false,\n },\n }\n)\n","import { RefObject, useEffect, useRef } from 'react'\n\nexport const useWidthIncreaseCallback = (\n elementRef: RefObject<HTMLDivElement | null>,\n callback: () => void\n): void => {\n const prevWidthRef = useRef<number | null>(null)\n\n useEffect(() => {\n const checkWidthIncrease = () => {\n const currentWidth = elementRef.current?.scrollWidth || null\n\n if (prevWidthRef.current && currentWidth && currentWidth > prevWidthRef.current) {\n callback()\n }\n\n prevWidthRef.current = currentWidth\n requestAnimationFrame(checkWidthIncrease)\n }\n\n const interval = requestAnimationFrame(checkWidthIncrease)\n\n return () => cancelAnimationFrame(interval)\n }, [elementRef])\n}\n","import { useFormFieldControl } from '@spark-ui/components/form-field'\nimport { useMergeRefs } from '@spark-ui/hooks/use-merge-refs'\nimport { cx } from 'class-variance-authority'\nimport { Fragment, ReactNode, Ref, useEffect, useRef } from 'react'\n\nimport { Popover } from '../popover'\nimport { useComboboxContext } from './ComboboxContext'\nimport { styles } from './ComboboxTrigger.styles'\nimport { findElement } from './utils'\nimport { useWidthIncreaseCallback } from './utils/useWidthIncreaseCallback'\n\ninterface TriggerProps {\n className?: string\n children: ReactNode\n ref?: Ref<HTMLDivElement>\n}\n\nexport const Trigger = ({ className, children, ref: forwardedRef }: TriggerProps) => {\n const ctx = useComboboxContext()\n const field = useFormFieldControl()\n\n // Trigger compound elements\n const leadingIcon = findElement(children, 'Combobox.LeadingIcon')\n const selectedItems = findElement(children, 'Combobox.SelectedItems')\n const input = findElement(children, 'Combobox.Input')\n const clearButton = findElement(children, 'Combobox.ClearButton')\n const disclosure = findElement(children, 'Combobox.Disclosure')\n\n const [PopoverAnchor, popoverAnchorProps] = ctx.hasPopover\n ? [Popover.Anchor, { asChild: true, type: undefined }]\n : [Fragment, {}]\n\n const ref = useMergeRefs(forwardedRef, ctx.triggerAreaRef)\n const scrollableAreaRef = useRef<HTMLDivElement>(null)\n\n const disabled = field.disabled || ctx.disabled\n const readOnly = field.readOnly || ctx.readOnly\n\n const hasClearButton = !!clearButton && !disabled && !readOnly\n\n /**\n * In case wrap behaviour is disabled, we sometimes need to scroll to the right-side of the trigger:\n * - when a selected item chip is added.\n * - when the component width changes (window resizing, etc.)\n *\n * The goal is that the typing area remains visible at all times.\n */\n const scrollToRight = () => {\n if (scrollableAreaRef.current && !ctx.wrap) {\n const { scrollWidth, clientWidth } = scrollableAreaRef.current\n // Scroll to the rightmost position\n scrollableAreaRef.current.scrollLeft = scrollWidth - clientWidth\n }\n }\n\n useWidthIncreaseCallback(scrollableAreaRef, scrollToRight)\n\n const hasSelectedItems = !!selectedItems\n useEffect(() => {\n ctx.setAreSelectedItemsInTrigger(hasSelectedItems)\n }, [hasSelectedItems])\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver(scrollToRight)\n\n if (scrollableAreaRef.current) {\n resizeObserver.observe(scrollableAreaRef.current)\n }\n\n return () => {\n resizeObserver.disconnect()\n }\n }, [])\n\n return (\n <>\n <PopoverAnchor {...popoverAnchorProps}>\n <div\n ref={ref}\n className={styles({\n className,\n state: ctx.state,\n disabled,\n readOnly,\n allowWrap: ctx.wrap,\n })}\n onClick={() => {\n if (!ctx.isOpen && !disabled && !readOnly) {\n ctx.openMenu()\n if (ctx.innerInputRef.current) {\n ctx.innerInputRef.current.focus()\n }\n }\n }}\n >\n {leadingIcon}\n <div\n ref={scrollableAreaRef}\n className={cx(\n 'min-w-none gap-sm py-md inline-flex grow items-start',\n ctx.wrap ? 'flex-wrap' : 'u-no-scrollbar overflow-x-auto p-[2px]'\n )}\n >\n {selectedItems}\n {input}\n </div>\n\n {hasClearButton && clearButton}\n\n {disclosure}\n </div>\n </PopoverAnchor>\n </>\n )\n}\n\nTrigger.displayName = 'Combobox.Trigger'\n","import { Combobox as Root } from './Combobox'\nimport { ClearButton } from './ComboboxClearButton'\nimport { ComboboxProvider, useComboboxContext } from './ComboboxContext'\nimport { Disclosure } from './ComboboxDisclosure'\nimport { Empty } from './ComboboxEmpty'\nimport { Group } from './ComboboxGroup'\nimport { Input } from './ComboboxInput'\nimport { Item } from './ComboboxItem'\nimport { ItemIndicator } from './ComboboxItemIndicator'\nimport { Items } from './ComboboxItems'\nimport { ItemText } from './ComboboxItemText'\nimport { Label } from './ComboboxLabel'\nimport { LeadingIcon } from './ComboboxLeadingIcon'\nimport { Popover } from './ComboboxPopover'\nimport { Portal } from './ComboboxPortal'\nimport { SelectedItems } from './ComboboxSelectedItems'\nimport { Trigger } from './ComboboxTrigger'\n\nexport { useComboboxContext, ComboboxProvider }\n\nexport const Combobox: typeof Root & {\n Group: typeof Group\n Item: typeof Item\n Items: typeof Items\n ItemText: typeof ItemText\n ItemIndicator: typeof ItemIndicator\n Label: typeof Label\n Popover: typeof Popover\n Trigger: typeof Trigger\n LeadingIcon: typeof LeadingIcon\n Empty: typeof Empty\n Input: typeof Input\n Disclosure: typeof Disclosure\n SelectedItems: typeof SelectedItems\n ClearButton: typeof ClearButton\n Portal: typeof Portal\n} = Object.assign(Root, {\n Group,\n Item,\n Items,\n ItemText,\n ItemIndicator,\n Label,\n Popover,\n Trigger,\n LeadingIcon,\n Empty,\n Input,\n Disclosure,\n SelectedItems,\n ClearButton,\n Portal,\n})\n\nCombobox.displayName = 'Combobox'\nGroup.displayName = 'Combobox.Group'\nItems.displayName = 'Combobox.Items'\nItem.displayName = 'Combobox.Item'\nItemText.displayName = 'Combobox.ItemText'\nItemIndicator.displayName = 'Combobox.ItemIndicator'\nLabel.displayName = 'Combobox.Label'\nPopover.displayName = 'Combobox.Popover'\nTrigger.displayName = 'Combobox.Trigger'\nLeadingIcon.displayName = 'Combobox.LeadingIcon'\nEmpty.displayName = 'Combobox.Empty'\nInput.displayName = 'Combobox.Input'\nDisclosure.displayName = 'Combobox.Disclosure'\nSelectedItems.displayName = 'Combobox.SelectedItems'\nClearButton.displayName = 'Combobox.ClearButton'\nPortal.displayName = 'Combobox.Portal'\n"],"names":["getIndexByKey","map","targetKey","index","key","getKeyAtIndex","i","getElementByIndex","getElementDisplayName","element","getOrderedItems","children","result","Children","child","isValidElement","childProps","getItemText","findNestedItemText","childElement","foundText","getItemsFromChildren","newMap","itemData","hasChildComponent","displayName","findElement","value","multipleSelectionReducer","multiselect","selectedItems","allowCustomValue","setSelectedItems","triggerAreaRef","items","_","changes","type","isFocusInsideTriggerArea","useCombobox","newState","highlightedIndex","updatedItems","selectedItem","item","singleSelectionReducer","filteredItems","setSelectedItem","state","exactMatch","ComboboxContext","createContext","getFilteredItemsMap","inputValue","text","ID_PREFIX","ComboboxProvider","stateProp","filtering","disabledProp","multiple","readOnlyProp","wrap","controlledValue","defaultValue","onValueChange","controlledOpen","defaultOpen","onOpenChange","isLoading","isMounted","useRef","setInputValue","useState","isTyping","setIsTyping","innerInputRef","onInputValueChange","setOnInputValueChange","comboboxValue","useCombinedState","shouldFilterItems","itemsMap","setItemsMap","filteredItemsMap","setFilteredItems","onInternalSelectedItemChange","onInternalSelectedItemsChange","useEffect","newSelectedItems","accum","match","field","useFormFieldControl","internalFieldLabelID","useId","internalFieldID","id","labelId","disabled","readOnly","hasPopover","setHasPopover","areSelectedItemsInTrigger","setAreSelectedItemsInTrigger","lastInteractionType","setLastInteractionType","useMultipleSelection","types","activeIndex","downshift","newInputValue","filtered","isFilteredOut","filteredItem","node","previousItems","newItems","hasUpdatedValue","hasUpdatedText","WrapperComponent","wrapperProps","Popover","Fragment","jsx","useComboboxContext","context","useContext","Combobox","props","ClearButton","className","tabIndex","onClick","ref","others","ctx","handleClick","event","cx","Icon","DeleteOutline","Disclosure","closedLabel","openedLabel","intent","design","size","forwardedRef","downshiftRef","downshiftDisclosureProps","isExpanded","useMergeRefs","IconButton","ArrowHorizontalDown","Empty","ComboboxGroupContext","ComboboxGroupProvider","groupLabelId","useComboboxGroupContext","Group","GroupContent","groupCtx","Input","ariaLabel","placeholder","isInvalid","description","PopoverTrigger","popoverTriggerProps","multiselectInputProps","inputRef","downshiftInputProps","e","hasPlaceholder","mergeHandlers","handlerA","handlerB","mergedEventProps","jsxs","VisuallyHidden","ComboboxItemContext","ComboboxItemProvider","textId","setTextId","isSelected","useComboboxItemContext","Item","ItemContent","styles","cva","rest","itemCtx","isVisible","downshiftItemProps","ItemIndicator","label","Check","Items","downshiftMenuProps","innerRef","isOpen","isPointerEventsDisabled","useLayoutEffect","Spinner","ItemText","Label","LeadingIcon","matchTriggerWidth","sideOffset","SparkPopover","Portal","SelectedItem","isCleanable","handleFocus","selectedItemProps","updatedSelectedItems","SelectedItems","useWidthIncreaseCallback","elementRef","callback","prevWidthRef","checkWidthIncrease","currentWidth","interval","Trigger","leadingIcon","input","clearButton","disclosure","PopoverAnchor","popoverAnchorProps","scrollableAreaRef","hasClearButton","scrollToRight","scrollWidth","clientWidth","hasSelectedItems","resizeObserver","Root"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare const getInput: (accessibleName: string) => HTMLElement;
2
+ export declare const getListbox: (accessibleName: string) => HTMLElement;
3
+ export declare const getItemsGroup: (accessibleName: string) => HTMLElement;
4
+ export declare const getItem: (accessibleName: string) => HTMLElement;
5
+ export declare const queryItem: (accessibleName: string) => HTMLElement | null;
6
+ export declare const getSelectedItem: (accessibleName: string) => HTMLElement;
7
+ export declare const getSelectedItemClearButton: (accessibleName: string) => HTMLElement;
8
+ export declare const getClearButton: (accessibleName: string) => HTMLElement;
@@ -0,0 +1,8 @@
1
+ import { UseComboboxReturnValue, UseMultipleSelectionReturnValue } from 'downshift';
2
+ export interface ComboboxItem {
3
+ disabled: boolean;
4
+ value: string;
5
+ text: string;
6
+ }
7
+ export type ItemsMap = Map<string, ComboboxItem>;
8
+ export type DownshiftState = UseComboboxReturnValue<ComboboxItem> & UseMultipleSelectionReturnValue<ComboboxItem>;
@@ -0,0 +1,13 @@
1
+ import { UseMultipleSelectionReturnValue } from 'downshift';
2
+ import { RefObject } from 'react';
3
+ import { ComboboxItem, ItemsMap } from '../types';
4
+ interface Props {
5
+ allowCustomValue?: boolean;
6
+ items: ItemsMap;
7
+ selectedItems: ComboboxItem[];
8
+ multiselect: UseMultipleSelectionReturnValue<ComboboxItem>;
9
+ setSelectedItems: (items: ComboboxItem[]) => void;
10
+ triggerAreaRef: RefObject<HTMLDivElement | null>;
11
+ }
12
+ export declare const multipleSelectionReducer: ({ multiselect, selectedItems, allowCustomValue, setSelectedItems, triggerAreaRef, items, }: Props) => (state: import('downshift').UseComboboxState<ComboboxItem>, actionAndChanges: import('downshift').UseComboboxStateChangeOptions<ComboboxItem>) => Partial<import('downshift').UseComboboxState<ComboboxItem>>;
13
+ export {};
@@ -0,0 +1,8 @@
1
+ import { ComboboxItem } from '../types';
2
+ interface Props {
3
+ allowCustomValue?: boolean;
4
+ filteredItems: ComboboxItem[];
5
+ setSelectedItem: (value: ComboboxItem | null) => void;
6
+ }
7
+ export declare const singleSelectionReducer: ({ filteredItems, allowCustomValue, setSelectedItem, }: Props) => (state: import('downshift').UseComboboxState<ComboboxItem>, actionAndChanges: import('downshift').UseComboboxStateChangeOptions<ComboboxItem>) => Partial<import('downshift').UseComboboxState<ComboboxItem>>;
8
+ export {};
@@ -0,0 +1,14 @@
1
+ import { ReactElement, ReactNode } from 'react';
2
+ import { ComboboxItem, ItemsMap } from '../types';
3
+ export declare function getIndexByKey(map: ItemsMap, targetKey: string): number;
4
+ export declare const getElementByIndex: (map: ItemsMap, index: number) => ComboboxItem | undefined;
5
+ export declare const getOrderedItems: (children: ReactNode, result?: ComboboxItem[]) => ComboboxItem[];
6
+ /**
7
+ * If Combobox.Item children:
8
+ * - is a string, then the string is used.
9
+ * - is JSX markup, then we look for Combobox.ItemText to get its string value.
10
+ */
11
+ export declare const getItemText: (children: ReactNode) => string;
12
+ export declare const getItemsFromChildren: (children: ReactNode) => ItemsMap;
13
+ export declare const hasChildComponent: (children: ReactNode, displayName: string) => boolean;
14
+ export declare const findElement: (children: ReactNode, value: string) => ReactElement<unknown, string | import('react').JSXElementConstructor<any>> | undefined;
@@ -0,0 +1,14 @@
1
+ import { ReactElement, ReactNode } from 'react';
2
+ import { ComboboxItem, ItemsMap } from '../types';
3
+ export declare function getIndexByKey(map: ItemsMap, targetKey: string): number;
4
+ export declare const getElementByIndex: (map: ItemsMap, index: number) => ComboboxItem | undefined;
5
+ export declare const getOrderedItems: (children: ReactNode, result?: ComboboxItem[]) => ComboboxItem[];
6
+ /**
7
+ * If Combobox.Item children:
8
+ * - is a string, then the string is used.
9
+ * - is JSX markup, then we look for Combobox.ItemText to get its string value.
10
+ */
11
+ export declare const getItemText: (children: ReactNode) => string;
12
+ export declare const getItemsFromChildren: (children: ReactNode) => ItemsMap;
13
+ export declare const hasChildComponent: (children: ReactNode, displayName: string) => boolean;
14
+ export declare const findElement: (children: ReactNode, value: string) => ReactElement<unknown, string | import('react').JSXElementConstructor<any>> | undefined;
@@ -0,0 +1,2 @@
1
+ import { RefObject } from 'react';
2
+ export declare const useWidthIncreaseCallback: (elementRef: RefObject<HTMLDivElement | null>, callback: () => void) => void;
@@ -0,0 +1,32 @@
1
+ import { Dialog as RadixDialog } from 'radix-ui';
2
+ import { ReactElement } from 'react';
3
+ export interface DialogProps {
4
+ /**
5
+ * Children of the component.
6
+ */
7
+ children?: RadixDialog.DialogProps['children'];
8
+ /**
9
+ * Specifies if the dialog is open or not.
10
+ */
11
+ open?: RadixDialog.DialogProps['open'];
12
+ /**
13
+ * Default open state.
14
+ */
15
+ defaultOpen?: RadixDialog.DialogProps['defaultOpen'];
16
+ /**
17
+ * Handler executen on every dialog open state change.
18
+ */
19
+ onOpenChange?: RadixDialog.DialogProps['onOpenChange'];
20
+ /**
21
+ * Specifies if the dialog is a modal.
22
+ */
23
+ modal?: RadixDialog.DialogProps['modal'];
24
+ /**
25
+ * Specifies if the dialog should have a fade animation on its body (in case it is scrollable).
26
+ */
27
+ withFade?: boolean;
28
+ }
29
+ export declare const Dialog: {
30
+ ({ children, withFade, ...rest }: DialogProps): ReactElement;
31
+ displayName: string;
32
+ };
@@ -0,0 +1,12 @@
1
+ import { ReactElement, ReactNode, Ref } from 'react';
2
+ export interface BodyProps {
3
+ children: ReactNode;
4
+ className?: string;
5
+ tabIndex?: number;
6
+ ref?: Ref<HTMLDivElement>;
7
+ inset?: boolean;
8
+ }
9
+ export declare const Body: {
10
+ ({ children, className, inset, ref: forwardedRef, ...rest }: BodyProps): ReactElement;
11
+ displayName: string;
12
+ };
@@ -0,0 +1,9 @@
1
+ import { Dialog as RadixDialog } from 'radix-ui';
2
+ import { Ref } from 'react';
3
+ export type CloseProps = RadixDialog.DialogCloseProps & {
4
+ ref?: Ref<HTMLButtonElement>;
5
+ };
6
+ export declare const Close: {
7
+ (props: CloseProps): import("react/jsx-runtime").JSX.Element;
8
+ displayName: string;
9
+ };
@@ -0,0 +1,9 @@
1
+ import { IconButtonProps } from '../icon-button';
2
+ import { CloseProps } from './DialogClose';
3
+ export type CloseButtonProps = CloseProps & Pick<IconButtonProps, 'size' | 'intent' | 'design' | 'aria-label'>;
4
+ export declare const CloseButton: {
5
+ ({ "aria-label": ariaLabel, className, size, intent, design, children, ref, ...rest }: CloseButtonProps): import("react/jsx-runtime").JSX.Element;
6
+ displayName: string;
7
+ } & {
8
+ id: string;
9
+ };
@@ -0,0 +1,14 @@
1
+ import { Dialog as RadixDialog } from 'radix-ui';
2
+ import { ReactElement, Ref } from 'react';
3
+ import { DialogContentStylesProps } from './DialogContent.styles';
4
+ export interface ContentProps extends RadixDialog.DialogContentProps, DialogContentStylesProps {
5
+ /**
6
+ * When set to true, the content will adjust its width to fit the content rather than taking up the full available width.
7
+ */
8
+ isNarrow?: boolean;
9
+ ref?: Ref<HTMLDivElement>;
10
+ }
11
+ export declare const Content: {
12
+ ({ children, className, isNarrow, size, onInteractOutside, ref, ...rest }: ContentProps): ReactElement;
13
+ displayName: string;
14
+ };
@@ -0,0 +1,6 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ export declare const dialogContentStyles: (props?: ({
3
+ size?: "sm" | "md" | "lg" | "fullscreen" | null | undefined;
4
+ isNarrow?: boolean | null | undefined;
5
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
6
+ export type DialogContentStylesProps = VariantProps<typeof dialogContentStyles>;
@@ -0,0 +1,11 @@
1
+ import { ReactNode } from 'react';
2
+ export interface DialogContextState {
3
+ isFullScreen: boolean;
4
+ setIsFullScreen: (value: boolean) => void;
5
+ withFade: boolean;
6
+ }
7
+ export declare const DialogProvider: ({ children: childrenProp, withFade, }: {
8
+ children: ReactNode;
9
+ withFade?: boolean;
10
+ }) => import("react/jsx-runtime").JSX.Element;
11
+ export declare const useDialog: () => DialogContextState;