@base-ui/react 1.4.1 → 1.5.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 (579) hide show
  1. package/CHANGELOG.md +125 -8
  2. package/README.md +1 -1
  3. package/accordion/item/AccordionItem.d.ts +4 -0
  4. package/accordion/item/AccordionItem.js +5 -4
  5. package/accordion/panel/AccordionPanel.js +29 -51
  6. package/accordion/root/AccordionRoot.js +5 -6
  7. package/accordion/trigger/AccordionTrigger.js +3 -4
  8. package/alert-dialog/handle.d.ts +14 -1
  9. package/alert-dialog/handle.js +22 -5
  10. package/alert-dialog/index.d.ts +1 -1
  11. package/alert-dialog/index.parts.d.ts +2 -3
  12. package/alert-dialog/index.parts.js +4 -5
  13. package/alert-dialog/root/AlertDialogRoot.d.ts +7 -7
  14. package/alert-dialog/root/AlertDialogRoot.js +2 -56
  15. package/alert-dialog/trigger/AlertDialogTrigger.d.ts +25 -0
  16. package/alert-dialog/trigger/AlertDialogTrigger.js +15 -0
  17. package/alert-dialog/trigger/AlertDialogTriggerDataAttributes.d.ts +10 -0
  18. package/alert-dialog/trigger/AlertDialogTriggerDataAttributes.js +18 -0
  19. package/autocomplete/root/AutocompleteRoot.js +9 -10
  20. package/avatar/image/AvatarImage.js +4 -4
  21. package/checkbox/indicator/CheckboxIndicator.js +2 -2
  22. package/checkbox/root/CheckboxRoot.js +49 -11
  23. package/checkbox-group/CheckboxGroup.js +1 -5
  24. package/collapsible/panel/CollapsiblePanel.js +29 -51
  25. package/collapsible/panel/useCollapsiblePanel.d.ts +9 -23
  26. package/collapsible/panel/useCollapsiblePanel.js +308 -268
  27. package/collapsible/root/CollapsibleRoot.d.ts +1 -1
  28. package/collapsible/root/CollapsibleRootContext.d.ts +0 -2
  29. package/collapsible/root/useCollapsibleRoot.d.ts +0 -27
  30. package/collapsible/root/useCollapsibleRoot.js +2 -64
  31. package/collapsible/trigger/CollapsibleTrigger.js +5 -6
  32. package/combobox/arrow/ComboboxArrow.js +1 -1
  33. package/combobox/backdrop/ComboboxBackdrop.js +1 -1
  34. package/combobox/chip/ComboboxChip.js +7 -2
  35. package/combobox/clear/ComboboxClear.d.ts +4 -0
  36. package/combobox/clear/ComboboxClear.js +1 -0
  37. package/combobox/clear/ComboboxClearDataAttributes.d.ts +4 -0
  38. package/combobox/clear/ComboboxClearDataAttributes.js +4 -0
  39. package/combobox/icon/ComboboxIcon.js +1 -1
  40. package/combobox/input/ComboboxInput.js +15 -6
  41. package/combobox/item/ComboboxItem.js +8 -14
  42. package/combobox/item-indicator/ComboboxItemIndicator.js +1 -2
  43. package/combobox/root/AriaCombobox.js +61 -28
  44. package/combobox/store.d.ts +4 -8
  45. package/combobox/store.js +2 -1
  46. package/combobox/utils/ComboboxInternalDismissButton.js +2 -3
  47. package/csp-provider/CSPProvider.js +1 -1
  48. package/dialog/close/DialogClose.js +6 -6
  49. package/dialog/popup/DialogPopup.js +9 -4
  50. package/dialog/root/DialogRoot.d.ts +1 -2
  51. package/dialog/root/DialogRoot.js +3 -73
  52. package/dialog/root/DialogRootContext.d.ts +1 -0
  53. package/dialog/root/DialogRootContext.js +3 -1
  54. package/dialog/root/useDialogRoot.d.ts +12 -4
  55. package/dialog/root/useDialogRoot.js +27 -25
  56. package/dialog/root/useRenderDialogRoot.d.ts +4 -0
  57. package/dialog/root/useRenderDialogRoot.js +96 -0
  58. package/dialog/store/DialogHandle.d.ts +1 -1
  59. package/dialog/store/DialogHandle.js +2 -2
  60. package/dialog/store/DialogStore.d.ts +88 -1
  61. package/dialog/store/DialogStore.js +12 -17
  62. package/dialog/trigger/DialogTrigger.d.ts +1 -1
  63. package/dialog/trigger/DialogTrigger.js +11 -4
  64. package/dialog/viewport/DialogViewport.js +4 -3
  65. package/drawer/popup/DrawerPopup.js +13 -9
  66. package/drawer/root/DrawerRoot.js +11 -11
  67. package/drawer/root/DrawerRootContext.d.ts +1 -1
  68. package/drawer/swipe-area/DrawerSwipeArea.js +6 -5
  69. package/drawer/viewport/DrawerViewport.js +13 -14
  70. package/esm/accordion/item/AccordionItem.d.ts +4 -0
  71. package/esm/accordion/item/AccordionItem.js +5 -4
  72. package/esm/accordion/panel/AccordionPanel.js +29 -51
  73. package/esm/accordion/root/AccordionRoot.js +5 -6
  74. package/esm/accordion/trigger/AccordionTrigger.js +4 -5
  75. package/esm/alert-dialog/handle.d.ts +14 -1
  76. package/esm/alert-dialog/handle.js +20 -5
  77. package/esm/alert-dialog/index.d.ts +1 -1
  78. package/esm/alert-dialog/index.parts.d.ts +2 -3
  79. package/esm/alert-dialog/index.parts.js +2 -3
  80. package/esm/alert-dialog/root/AlertDialogRoot.d.ts +7 -7
  81. package/esm/alert-dialog/root/AlertDialogRoot.js +2 -55
  82. package/esm/alert-dialog/trigger/AlertDialogTrigger.d.ts +25 -0
  83. package/esm/alert-dialog/trigger/AlertDialogTrigger.js +10 -0
  84. package/esm/alert-dialog/trigger/AlertDialogTriggerDataAttributes.d.ts +10 -0
  85. package/esm/alert-dialog/trigger/AlertDialogTriggerDataAttributes.js +12 -0
  86. package/esm/autocomplete/root/AutocompleteRoot.js +9 -10
  87. package/esm/avatar/image/AvatarImage.js +4 -4
  88. package/esm/checkbox/indicator/CheckboxIndicator.js +2 -2
  89. package/esm/checkbox/root/CheckboxRoot.js +49 -11
  90. package/esm/checkbox-group/CheckboxGroup.js +1 -5
  91. package/esm/collapsible/panel/CollapsiblePanel.js +29 -51
  92. package/esm/collapsible/panel/useCollapsiblePanel.d.ts +9 -23
  93. package/esm/collapsible/panel/useCollapsiblePanel.js +309 -269
  94. package/esm/collapsible/root/CollapsibleRoot.d.ts +1 -1
  95. package/esm/collapsible/root/CollapsibleRootContext.d.ts +0 -2
  96. package/esm/collapsible/root/useCollapsibleRoot.d.ts +0 -27
  97. package/esm/collapsible/root/useCollapsibleRoot.js +2 -64
  98. package/esm/collapsible/trigger/CollapsibleTrigger.js +5 -6
  99. package/esm/combobox/arrow/ComboboxArrow.js +1 -1
  100. package/esm/combobox/backdrop/ComboboxBackdrop.js +1 -1
  101. package/esm/combobox/chip/ComboboxChip.js +7 -2
  102. package/esm/combobox/clear/ComboboxClear.d.ts +4 -0
  103. package/esm/combobox/clear/ComboboxClear.js +1 -0
  104. package/esm/combobox/clear/ComboboxClearDataAttributes.d.ts +4 -0
  105. package/esm/combobox/clear/ComboboxClearDataAttributes.js +4 -0
  106. package/esm/combobox/icon/ComboboxIcon.js +1 -1
  107. package/esm/combobox/input/ComboboxInput.js +16 -7
  108. package/esm/combobox/item/ComboboxItem.js +8 -14
  109. package/esm/combobox/item-indicator/ComboboxItemIndicator.js +1 -2
  110. package/esm/combobox/root/AriaCombobox.js +62 -29
  111. package/esm/combobox/store.d.ts +4 -8
  112. package/esm/combobox/store.js +2 -1
  113. package/esm/combobox/utils/ComboboxInternalDismissButton.js +2 -3
  114. package/esm/csp-provider/CSPProvider.js +1 -1
  115. package/esm/dialog/close/DialogClose.js +6 -6
  116. package/esm/dialog/popup/DialogPopup.js +9 -4
  117. package/esm/dialog/root/DialogRoot.d.ts +1 -2
  118. package/esm/dialog/root/DialogRoot.js +4 -72
  119. package/esm/dialog/root/DialogRootContext.d.ts +1 -0
  120. package/esm/dialog/root/DialogRootContext.js +2 -0
  121. package/esm/dialog/root/useDialogRoot.d.ts +12 -4
  122. package/esm/dialog/root/useDialogRoot.js +28 -27
  123. package/esm/dialog/root/useRenderDialogRoot.d.ts +4 -0
  124. package/esm/dialog/root/useRenderDialogRoot.js +90 -0
  125. package/esm/dialog/store/DialogHandle.d.ts +1 -1
  126. package/esm/dialog/store/DialogHandle.js +2 -2
  127. package/esm/dialog/store/DialogStore.d.ts +88 -1
  128. package/esm/dialog/store/DialogStore.js +13 -18
  129. package/esm/dialog/trigger/DialogTrigger.d.ts +1 -1
  130. package/esm/dialog/trigger/DialogTrigger.js +12 -5
  131. package/esm/dialog/viewport/DialogViewport.js +4 -3
  132. package/esm/drawer/popup/DrawerPopup.js +14 -9
  133. package/esm/drawer/root/DrawerRoot.js +11 -11
  134. package/esm/drawer/root/DrawerRootContext.d.ts +1 -1
  135. package/esm/drawer/swipe-area/DrawerSwipeArea.js +6 -5
  136. package/esm/drawer/viewport/DrawerViewport.js +13 -14
  137. package/esm/field/control/FieldControl.js +2 -6
  138. package/esm/field/item/FieldItem.js +1 -4
  139. package/esm/field/root/FieldRoot.js +11 -3
  140. package/esm/field/root/useFieldValidation.d.ts +1 -0
  141. package/esm/field/root/useFieldValidation.js +23 -20
  142. package/esm/field/utils/getCombinedFieldValidityData.d.ts +1 -1
  143. package/esm/field/validity/FieldValidity.d.ts +1 -1
  144. package/esm/floating-ui-react/components/FloatingDelayGroup.js +3 -3
  145. package/esm/floating-ui-react/components/FloatingFocusManager.d.ts +1 -1
  146. package/esm/floating-ui-react/components/FloatingFocusManager.js +20 -8
  147. package/esm/floating-ui-react/components/FloatingPortal.js +3 -3
  148. package/esm/floating-ui-react/hooks/useClick.js +83 -74
  149. package/esm/floating-ui-react/hooks/useClientPoint.js +29 -20
  150. package/esm/floating-ui-react/hooks/useDismiss.d.ts +1 -1
  151. package/esm/floating-ui-react/hooks/useDismiss.js +82 -93
  152. package/esm/floating-ui-react/hooks/useFloating.js +37 -32
  153. package/esm/floating-ui-react/hooks/useFloatingRootContext.d.ts +1 -1
  154. package/esm/floating-ui-react/hooks/useFloatingRootContext.js +2 -2
  155. package/esm/floating-ui-react/hooks/useFocus.js +84 -81
  156. package/esm/floating-ui-react/hooks/useHover.js +72 -76
  157. package/esm/floating-ui-react/hooks/useHoverFloatingInteraction.js +49 -44
  158. package/esm/floating-ui-react/hooks/useHoverInteractionSharedState.js +1 -1
  159. package/esm/floating-ui-react/hooks/useHoverReferenceInteraction.d.ts +7 -2
  160. package/esm/floating-ui-react/hooks/useHoverReferenceInteraction.js +44 -39
  161. package/esm/floating-ui-react/hooks/useHoverShared.d.ts +2 -1
  162. package/esm/floating-ui-react/hooks/useHoverShared.js +4 -0
  163. package/esm/floating-ui-react/hooks/useListNavigation.d.ts +1 -3
  164. package/esm/floating-ui-react/hooks/useListNavigation.js +83 -74
  165. package/esm/floating-ui-react/hooks/useSyncedFloatingRootContext.d.ts +9 -6
  166. package/esm/floating-ui-react/hooks/useSyncedFloatingRootContext.js +25 -20
  167. package/esm/floating-ui-react/hooks/useTypeahead.d.ts +2 -2
  168. package/esm/floating-ui-react/hooks/useTypeahead.js +33 -52
  169. package/esm/floating-ui-react/index.d.ts +0 -2
  170. package/esm/floating-ui-react/index.js +0 -2
  171. package/esm/floating-ui-react/types.d.ts +2 -7
  172. package/esm/floating-ui-react/utils/composite.js +2 -0
  173. package/esm/floating-ui-react/utils/enqueueFocus.d.ts +1 -1
  174. package/esm/floating-ui-react/utils/enqueueFocus.js +10 -7
  175. package/esm/floating-ui-react/utils/getEmptyRootContext.js +1 -1
  176. package/esm/form/Form.js +2 -2
  177. package/esm/index.js +1 -1
  178. package/esm/internals/composite/composite.d.ts +0 -1
  179. package/esm/internals/composite/composite.js +1 -2
  180. package/esm/internals/composite/root/useCompositeRoot.js +2 -2
  181. package/esm/internals/createBaseUIEventDetails.d.ts +2 -0
  182. package/esm/internals/csp-context/index.d.ts +2 -0
  183. package/esm/internals/csp-context/index.js +1 -0
  184. package/esm/internals/field-register-control/index.d.ts +0 -1
  185. package/esm/internals/field-register-control/useFieldControlRegistration.d.ts +2 -1
  186. package/esm/internals/field-register-control/useFieldControlRegistration.js +11 -14
  187. package/esm/internals/field-register-control/useRegisterFieldControl.d.ts +1 -4
  188. package/esm/internals/field-register-control/useRegisterFieldControl.js +6 -11
  189. package/esm/internals/field-root-context/FieldRootContext.d.ts +1 -0
  190. package/esm/internals/field-root-context/FieldRootContext.js +3 -2
  191. package/esm/internals/form-context/FormContext.d.ts +5 -1
  192. package/esm/internals/reason-parts.d.ts +2 -0
  193. package/esm/internals/reason-parts.js +2 -0
  194. package/esm/internals/types.d.ts +1 -0
  195. package/esm/internals/use-button/useButton.js +4 -4
  196. package/esm/internals/usePressAndHold.js +2 -2
  197. package/esm/internals/useRenderElement.js +2 -0
  198. package/esm/menu/arrow/MenuArrow.js +1 -1
  199. package/esm/menu/backdrop/MenuBackdrop.js +1 -1
  200. package/esm/menu/checkbox-item/MenuCheckboxItem.js +5 -7
  201. package/esm/menu/group/MenuGroup.js +1 -4
  202. package/esm/menu/group/MenuGroupContext.d.ts +1 -3
  203. package/esm/menu/group/MenuGroupContext.js +1 -1
  204. package/esm/menu/group-label/MenuGroupLabel.js +4 -6
  205. package/esm/menu/link-item/MenuLinkItem.js +2 -2
  206. package/esm/menu/popup/MenuPopup.js +5 -5
  207. package/esm/menu/radio-group/MenuRadioGroup.js +11 -5
  208. package/esm/menu/radio-item/MenuRadioItem.js +5 -7
  209. package/esm/menu/root/MenuRoot.js +63 -68
  210. package/esm/menu/store/MenuHandle.js +1 -1
  211. package/esm/menu/store/MenuStore.d.ts +87 -0
  212. package/esm/menu/submenu-trigger/MenuSubmenuTrigger.js +8 -5
  213. package/esm/menu/trigger/MenuTrigger.js +13 -10
  214. package/esm/menu/viewport/MenuViewport.d.ts +2 -2
  215. package/esm/menu/viewport/MenuViewport.js +2 -2
  216. package/esm/navigation-menu/arrow/NavigationMenuArrow.js +1 -1
  217. package/esm/navigation-menu/backdrop/NavigationMenuBackdrop.js +1 -1
  218. package/esm/navigation-menu/content/NavigationMenuContent.js +8 -5
  219. package/esm/navigation-menu/icon/NavigationMenuIcon.js +1 -1
  220. package/esm/navigation-menu/item/NavigationMenuItem.js +2 -2
  221. package/esm/navigation-menu/list/NavigationMenuList.js +1 -1
  222. package/esm/navigation-menu/popup/NavigationMenuPopup.js +2 -2
  223. package/esm/navigation-menu/root/NavigationMenuRoot.js +1 -3
  224. package/esm/navigation-menu/trigger/NavigationMenuTrigger.js +24 -17
  225. package/esm/navigation-menu/utils/isOutsideMenuEvent.d.ts +0 -1
  226. package/esm/navigation-menu/utils/isOutsideMenuEvent.js +1 -5
  227. package/esm/navigation-menu/viewport/NavigationMenuViewport.js +2 -3
  228. package/esm/number-field/input/NumberFieldInput.js +3 -5
  229. package/esm/number-field/root/NumberFieldRoot.js +5 -2
  230. package/esm/number-field/scrub-area/NumberFieldScrubArea.js +7 -3
  231. package/esm/otp-field/input/OTPFieldInput.js +43 -29
  232. package/esm/otp-field/root/OTPFieldRoot.d.ts +17 -8
  233. package/esm/otp-field/root/OTPFieldRoot.js +33 -33
  234. package/esm/otp-field/root/OTPFieldRootContext.d.ts +1 -1
  235. package/esm/otp-field/utils/otp.d.ts +5 -4
  236. package/esm/otp-field/utils/otp.js +23 -12
  237. package/esm/popover/arrow/PopoverArrow.js +1 -1
  238. package/esm/popover/backdrop/PopoverBackdrop.js +1 -1
  239. package/esm/popover/close/PopoverClose.js +2 -2
  240. package/esm/popover/description/PopoverDescription.js +1 -7
  241. package/esm/popover/popup/PopoverPopup.d.ts +1 -1
  242. package/esm/popover/popup/PopoverPopup.js +16 -10
  243. package/esm/popover/popup/PopoverPopupDataAttributes.d.ts +1 -1
  244. package/esm/popover/popup/PopoverPopupDataAttributes.js +1 -1
  245. package/esm/popover/positioner/PopoverPositioner.js +5 -5
  246. package/esm/popover/root/PopoverRoot.d.ts +1 -1
  247. package/esm/popover/root/PopoverRoot.js +42 -47
  248. package/esm/popover/store/PopoverHandle.js +1 -1
  249. package/esm/popover/store/PopoverStore.d.ts +91 -4
  250. package/esm/popover/store/PopoverStore.js +17 -18
  251. package/esm/popover/title/PopoverTitle.js +1 -7
  252. package/esm/popover/trigger/PopoverTrigger.js +24 -17
  253. package/esm/popover/viewport/PopoverViewport.d.ts +3 -3
  254. package/esm/popover/viewport/PopoverViewport.js +2 -2
  255. package/esm/popover/viewport/PopoverViewportDataAttributes.d.ts +1 -1
  256. package/esm/popover/viewport/PopoverViewportDataAttributes.js +1 -1
  257. package/esm/preview-card/positioner/PreviewCardPositioner.js +11 -1
  258. package/esm/preview-card/root/PreviewCardRoot.d.ts +1 -1
  259. package/esm/preview-card/root/PreviewCardRoot.js +32 -22
  260. package/esm/preview-card/store/PreviewCardHandle.js +1 -1
  261. package/esm/preview-card/store/PreviewCardStore.d.ts +90 -2
  262. package/esm/preview-card/store/PreviewCardStore.js +19 -31
  263. package/esm/preview-card/trigger/PreviewCardTrigger.js +6 -3
  264. package/esm/preview-card/viewport/PreviewCardViewport.d.ts +2 -2
  265. package/esm/preview-card/viewport/PreviewCardViewport.js +2 -2
  266. package/esm/preview-card/viewport/PreviewCardViewportDataAttributes.d.ts +2 -2
  267. package/esm/preview-card/viewport/PreviewCardViewportDataAttributes.js +2 -2
  268. package/esm/progress/indicator/ProgressIndicator.js +6 -11
  269. package/esm/progress/root/ProgressRoot.d.ts +1 -1
  270. package/esm/radio/root/RadioRoot.js +7 -3
  271. package/esm/radio-group/RadioGroup.js +4 -11
  272. package/esm/radio-group/RadioGroupContext.d.ts +0 -1
  273. package/esm/scroll-area/content/ScrollAreaContent.js +4 -4
  274. package/esm/scroll-area/root/ScrollAreaRoot.js +1 -1
  275. package/esm/scroll-area/scrollbar/ScrollAreaScrollbar.js +16 -20
  276. package/esm/scroll-area/viewport/ScrollAreaViewport.js +6 -10
  277. package/esm/select/arrow/SelectArrow.js +1 -1
  278. package/esm/select/backdrop/SelectBackdrop.js +1 -1
  279. package/esm/select/group/SelectGroup.js +1 -1
  280. package/esm/select/group-label/SelectGroupLabel.js +2 -2
  281. package/esm/select/icon/SelectIcon.js +1 -1
  282. package/esm/select/item/SelectItem.js +46 -32
  283. package/esm/select/item/SelectItemContext.d.ts +1 -1
  284. package/esm/select/item-indicator/SelectItemIndicator.js +1 -2
  285. package/esm/select/item-text/SelectItemText.js +9 -6
  286. package/esm/select/list/SelectList.js +1 -1
  287. package/esm/select/popup/SelectPopup.js +8 -3
  288. package/esm/select/positioner/SelectPositioner.js +3 -0
  289. package/esm/select/root/SelectRoot.js +46 -40
  290. package/esm/select/root/SelectRootContext.d.ts +4 -5
  291. package/esm/select/store.d.ts +3 -0
  292. package/esm/select/store.js +1 -0
  293. package/esm/select/trigger/SelectTrigger.d.ts +5 -0
  294. package/esm/select/trigger/SelectTrigger.js +19 -33
  295. package/esm/select/trigger/SelectTriggerDataAttributes.d.ts +5 -0
  296. package/esm/select/trigger/SelectTriggerDataAttributes.js +5 -0
  297. package/esm/slider/control/SliderControl.js +10 -12
  298. package/esm/slider/root/SliderRoot.js +1 -4
  299. package/esm/slider/thumb/SliderThumb.js +32 -30
  300. package/esm/slider/value/SliderValue.js +7 -15
  301. package/esm/switch/root/SwitchRoot.js +10 -10
  302. package/esm/switch/thumb/SwitchThumb.js +1 -9
  303. package/esm/tabs/indicator/TabsIndicator.js +14 -19
  304. package/esm/tabs/list/TabsList.js +4 -10
  305. package/esm/tabs/list/TabsListContext.d.ts +2 -1
  306. package/esm/tabs/panel/TabsPanel.js +1 -1
  307. package/esm/tabs/root/TabsRoot.d.ts +16 -1
  308. package/esm/tabs/root/TabsRoot.js +73 -25
  309. package/esm/tabs/root/TabsRootContext.d.ts +0 -2
  310. package/esm/toast/provider/ToastProvider.js +1 -1
  311. package/esm/toast/root/ToastRoot.d.ts +1 -1
  312. package/esm/toast/root/ToastRoot.js +108 -131
  313. package/esm/toast/root/ToastRootDataAttributes.d.ts +1 -1
  314. package/esm/toast/root/ToastRootDataAttributes.js +1 -1
  315. package/esm/toast/store.d.ts +9 -1
  316. package/esm/toast/store.js +19 -13
  317. package/esm/toast/useToastManager.d.ts +1 -1
  318. package/esm/toast/viewport/ToastViewport.js +1 -1
  319. package/esm/toggle/Toggle.js +5 -9
  320. package/esm/toggle-group/ToggleGroup.d.ts +2 -2
  321. package/esm/toggle-group/ToggleGroup.js +6 -13
  322. package/esm/toolbar/link/ToolbarLink.d.ts +1 -1
  323. package/esm/toolbar/link/ToolbarLink.js +1 -2
  324. package/esm/tooltip/arrow/TooltipArrow.js +3 -3
  325. package/esm/tooltip/popup/TooltipPopup.js +5 -4
  326. package/esm/tooltip/root/TooltipRoot.js +35 -26
  327. package/esm/tooltip/store/TooltipHandle.js +1 -1
  328. package/esm/tooltip/store/TooltipStore.d.ts +90 -2
  329. package/esm/tooltip/store/TooltipStore.js +18 -31
  330. package/esm/tooltip/trigger/TooltipTrigger.js +151 -20
  331. package/esm/tooltip/viewport/TooltipViewport.d.ts +2 -2
  332. package/esm/tooltip/viewport/TooltipViewport.js +2 -2
  333. package/esm/tooltip/viewport/TooltipViewportDataAttributes.d.ts +1 -1
  334. package/esm/tooltip/viewport/TooltipViewportDataAttributes.js +1 -1
  335. package/esm/unstable-use-media-query/index.js +1 -1
  336. package/esm/utils/popups/index.d.ts +1 -0
  337. package/esm/utils/popups/index.js +1 -0
  338. package/esm/utils/popups/inlineRect.d.ts +15 -0
  339. package/esm/utils/popups/inlineRect.js +191 -0
  340. package/esm/utils/popups/popupStoreUtils.d.ts +28 -10
  341. package/esm/utils/popups/popupStoreUtils.js +105 -20
  342. package/esm/utils/popups/popupTriggerMap.js +2 -0
  343. package/esm/utils/popups/store.d.ts +15 -2
  344. package/esm/utils/popups/store.js +38 -2
  345. package/esm/utils/popups/useTriggerFocusGuards.js +4 -5
  346. package/esm/utils/useAnchorPositioning.d.ts +5 -0
  347. package/esm/utils/useAnchorPositioning.js +12 -9
  348. package/esm/utils/useOpenInteractionType.d.ts +4 -0
  349. package/esm/utils/useOpenInteractionType.js +23 -18
  350. package/field/control/FieldControl.js +2 -6
  351. package/field/item/FieldItem.js +1 -4
  352. package/field/root/FieldRoot.js +11 -3
  353. package/field/root/useFieldValidation.d.ts +1 -0
  354. package/field/root/useFieldValidation.js +23 -20
  355. package/field/utils/getCombinedFieldValidityData.d.ts +1 -1
  356. package/field/validity/FieldValidity.d.ts +1 -1
  357. package/floating-ui-react/components/FloatingDelayGroup.js +3 -3
  358. package/floating-ui-react/components/FloatingFocusManager.d.ts +1 -1
  359. package/floating-ui-react/components/FloatingFocusManager.js +20 -8
  360. package/floating-ui-react/components/FloatingPortal.js +3 -3
  361. package/floating-ui-react/hooks/useClick.js +82 -73
  362. package/floating-ui-react/hooks/useClientPoint.js +29 -20
  363. package/floating-ui-react/hooks/useDismiss.d.ts +1 -1
  364. package/floating-ui-react/hooks/useDismiss.js +82 -92
  365. package/floating-ui-react/hooks/useFloating.js +36 -32
  366. package/floating-ui-react/hooks/useFloatingRootContext.d.ts +1 -1
  367. package/floating-ui-react/hooks/useFloatingRootContext.js +2 -2
  368. package/floating-ui-react/hooks/useFocus.js +84 -81
  369. package/floating-ui-react/hooks/useHover.js +74 -78
  370. package/floating-ui-react/hooks/useHoverFloatingInteraction.js +48 -43
  371. package/floating-ui-react/hooks/useHoverInteractionSharedState.js +1 -1
  372. package/floating-ui-react/hooks/useHoverReferenceInteraction.d.ts +7 -2
  373. package/floating-ui-react/hooks/useHoverReferenceInteraction.js +43 -38
  374. package/floating-ui-react/hooks/useHoverShared.d.ts +2 -1
  375. package/floating-ui-react/hooks/useHoverShared.js +11 -0
  376. package/floating-ui-react/hooks/useListNavigation.d.ts +1 -3
  377. package/floating-ui-react/hooks/useListNavigation.js +83 -74
  378. package/floating-ui-react/hooks/useSyncedFloatingRootContext.d.ts +9 -6
  379. package/floating-ui-react/hooks/useSyncedFloatingRootContext.js +26 -20
  380. package/floating-ui-react/hooks/useTypeahead.d.ts +2 -2
  381. package/floating-ui-react/hooks/useTypeahead.js +33 -52
  382. package/floating-ui-react/index.d.ts +0 -2
  383. package/floating-ui-react/index.js +0 -14
  384. package/floating-ui-react/types.d.ts +2 -7
  385. package/floating-ui-react/utils/composite.js +2 -0
  386. package/floating-ui-react/utils/enqueueFocus.d.ts +1 -1
  387. package/floating-ui-react/utils/enqueueFocus.js +10 -7
  388. package/floating-ui-react/utils/getEmptyRootContext.js +1 -1
  389. package/form/Form.js +2 -2
  390. package/index.js +1 -1
  391. package/internals/composite/composite.d.ts +0 -1
  392. package/internals/composite/composite.js +2 -3
  393. package/internals/composite/root/useCompositeRoot.js +1 -1
  394. package/internals/createBaseUIEventDetails.d.ts +2 -0
  395. package/internals/csp-context/index.d.ts +2 -0
  396. package/internals/csp-context/index.js +18 -0
  397. package/internals/field-register-control/index.d.ts +0 -1
  398. package/internals/field-register-control/useFieldControlRegistration.d.ts +2 -1
  399. package/internals/field-register-control/useFieldControlRegistration.js +11 -14
  400. package/internals/field-register-control/useRegisterFieldControl.d.ts +1 -4
  401. package/internals/field-register-control/useRegisterFieldControl.js +6 -11
  402. package/internals/field-root-context/FieldRootContext.d.ts +1 -0
  403. package/internals/field-root-context/FieldRootContext.js +4 -3
  404. package/internals/form-context/FormContext.d.ts +5 -1
  405. package/internals/reason-parts.d.ts +2 -0
  406. package/internals/reason-parts.js +3 -1
  407. package/internals/types.d.ts +1 -0
  408. package/internals/use-button/useButton.js +4 -4
  409. package/internals/usePressAndHold.js +2 -2
  410. package/internals/useRenderElement.js +2 -0
  411. package/menu/arrow/MenuArrow.js +1 -1
  412. package/menu/backdrop/MenuBackdrop.js +1 -1
  413. package/menu/checkbox-item/MenuCheckboxItem.js +5 -7
  414. package/menu/group/MenuGroup.js +1 -4
  415. package/menu/group/MenuGroupContext.d.ts +1 -3
  416. package/menu/group/MenuGroupContext.js +1 -1
  417. package/menu/group-label/MenuGroupLabel.js +4 -6
  418. package/menu/link-item/MenuLinkItem.js +2 -2
  419. package/menu/popup/MenuPopup.js +5 -5
  420. package/menu/radio-group/MenuRadioGroup.js +11 -5
  421. package/menu/radio-item/MenuRadioItem.js +5 -7
  422. package/menu/root/MenuRoot.js +60 -65
  423. package/menu/store/MenuHandle.js +1 -1
  424. package/menu/store/MenuStore.d.ts +87 -0
  425. package/menu/submenu-trigger/MenuSubmenuTrigger.js +7 -4
  426. package/menu/trigger/MenuTrigger.js +12 -9
  427. package/menu/viewport/MenuViewport.d.ts +2 -2
  428. package/menu/viewport/MenuViewport.js +2 -2
  429. package/navigation-menu/arrow/NavigationMenuArrow.js +1 -1
  430. package/navigation-menu/backdrop/NavigationMenuBackdrop.js +1 -1
  431. package/navigation-menu/content/NavigationMenuContent.js +8 -5
  432. package/navigation-menu/icon/NavigationMenuIcon.js +1 -1
  433. package/navigation-menu/item/NavigationMenuItem.js +2 -2
  434. package/navigation-menu/list/NavigationMenuList.js +1 -1
  435. package/navigation-menu/popup/NavigationMenuPopup.js +2 -2
  436. package/navigation-menu/root/NavigationMenuRoot.js +1 -3
  437. package/navigation-menu/trigger/NavigationMenuTrigger.js +23 -16
  438. package/navigation-menu/utils/isOutsideMenuEvent.d.ts +0 -1
  439. package/navigation-menu/utils/isOutsideMenuEvent.js +1 -5
  440. package/navigation-menu/viewport/NavigationMenuViewport.js +2 -3
  441. package/number-field/input/NumberFieldInput.js +3 -5
  442. package/number-field/root/NumberFieldRoot.js +5 -2
  443. package/number-field/scrub-area/NumberFieldScrubArea.js +7 -3
  444. package/otp-field/input/OTPFieldInput.js +42 -28
  445. package/otp-field/root/OTPFieldRoot.d.ts +17 -8
  446. package/otp-field/root/OTPFieldRoot.js +32 -32
  447. package/otp-field/root/OTPFieldRootContext.d.ts +1 -1
  448. package/otp-field/utils/otp.d.ts +5 -4
  449. package/otp-field/utils/otp.js +24 -12
  450. package/package.json +331 -317
  451. package/popover/arrow/PopoverArrow.js +1 -1
  452. package/popover/backdrop/PopoverBackdrop.js +1 -1
  453. package/popover/close/PopoverClose.js +2 -2
  454. package/popover/description/PopoverDescription.js +1 -7
  455. package/popover/popup/PopoverPopup.d.ts +1 -1
  456. package/popover/popup/PopoverPopup.js +16 -10
  457. package/popover/popup/PopoverPopupDataAttributes.d.ts +1 -1
  458. package/popover/popup/PopoverPopupDataAttributes.js +1 -1
  459. package/popover/positioner/PopoverPositioner.js +5 -5
  460. package/popover/root/PopoverRoot.d.ts +1 -1
  461. package/popover/root/PopoverRoot.js +39 -44
  462. package/popover/store/PopoverHandle.js +1 -1
  463. package/popover/store/PopoverStore.d.ts +91 -4
  464. package/popover/store/PopoverStore.js +16 -19
  465. package/popover/title/PopoverTitle.js +1 -7
  466. package/popover/trigger/PopoverTrigger.js +23 -16
  467. package/popover/viewport/PopoverViewport.d.ts +3 -3
  468. package/popover/viewport/PopoverViewport.js +2 -2
  469. package/popover/viewport/PopoverViewportDataAttributes.d.ts +1 -1
  470. package/popover/viewport/PopoverViewportDataAttributes.js +1 -1
  471. package/preview-card/positioner/PreviewCardPositioner.js +11 -1
  472. package/preview-card/root/PreviewCardRoot.d.ts +1 -1
  473. package/preview-card/root/PreviewCardRoot.js +30 -20
  474. package/preview-card/store/PreviewCardHandle.js +1 -1
  475. package/preview-card/store/PreviewCardStore.d.ts +90 -2
  476. package/preview-card/store/PreviewCardStore.js +18 -30
  477. package/preview-card/trigger/PreviewCardTrigger.js +5 -2
  478. package/preview-card/viewport/PreviewCardViewport.d.ts +2 -2
  479. package/preview-card/viewport/PreviewCardViewport.js +2 -2
  480. package/preview-card/viewport/PreviewCardViewportDataAttributes.d.ts +2 -2
  481. package/preview-card/viewport/PreviewCardViewportDataAttributes.js +2 -2
  482. package/progress/indicator/ProgressIndicator.js +6 -11
  483. package/progress/root/ProgressRoot.d.ts +1 -1
  484. package/radio/root/RadioRoot.js +7 -3
  485. package/radio-group/RadioGroup.js +4 -11
  486. package/radio-group/RadioGroupContext.d.ts +0 -1
  487. package/scroll-area/content/ScrollAreaContent.js +4 -4
  488. package/scroll-area/root/ScrollAreaRoot.js +1 -1
  489. package/scroll-area/scrollbar/ScrollAreaScrollbar.js +16 -20
  490. package/scroll-area/viewport/ScrollAreaViewport.js +6 -10
  491. package/select/arrow/SelectArrow.js +1 -1
  492. package/select/backdrop/SelectBackdrop.js +1 -1
  493. package/select/group/SelectGroup.js +1 -1
  494. package/select/group-label/SelectGroupLabel.js +2 -2
  495. package/select/icon/SelectIcon.js +1 -1
  496. package/select/item/SelectItem.js +46 -32
  497. package/select/item/SelectItemContext.d.ts +1 -1
  498. package/select/item-indicator/SelectItemIndicator.js +1 -2
  499. package/select/item-text/SelectItemText.js +9 -6
  500. package/select/list/SelectList.js +1 -1
  501. package/select/popup/SelectPopup.js +8 -3
  502. package/select/positioner/SelectPositioner.js +3 -0
  503. package/select/root/SelectRoot.js +45 -39
  504. package/select/root/SelectRootContext.d.ts +4 -5
  505. package/select/store.d.ts +3 -0
  506. package/select/store.js +1 -0
  507. package/select/trigger/SelectTrigger.d.ts +5 -0
  508. package/select/trigger/SelectTrigger.js +19 -33
  509. package/select/trigger/SelectTriggerDataAttributes.d.ts +5 -0
  510. package/select/trigger/SelectTriggerDataAttributes.js +5 -0
  511. package/slider/control/SliderControl.js +9 -11
  512. package/slider/root/SliderRoot.js +1 -4
  513. package/slider/thumb/SliderThumb.js +32 -30
  514. package/slider/value/SliderValue.js +7 -15
  515. package/switch/root/SwitchRoot.js +10 -10
  516. package/switch/thumb/SwitchThumb.js +1 -9
  517. package/tabs/indicator/TabsIndicator.js +14 -19
  518. package/tabs/list/TabsList.js +4 -10
  519. package/tabs/list/TabsListContext.d.ts +2 -1
  520. package/tabs/panel/TabsPanel.js +1 -1
  521. package/tabs/root/TabsRoot.d.ts +16 -1
  522. package/tabs/root/TabsRoot.js +71 -24
  523. package/tabs/root/TabsRootContext.d.ts +0 -2
  524. package/toast/provider/ToastProvider.js +1 -1
  525. package/toast/root/ToastRoot.d.ts +1 -1
  526. package/toast/root/ToastRoot.js +110 -133
  527. package/toast/root/ToastRootDataAttributes.d.ts +1 -1
  528. package/toast/root/ToastRootDataAttributes.js +1 -1
  529. package/toast/store.d.ts +9 -1
  530. package/toast/store.js +18 -12
  531. package/toast/useToastManager.d.ts +1 -1
  532. package/toast/viewport/ToastViewport.js +1 -1
  533. package/toggle/Toggle.js +5 -9
  534. package/toggle-group/ToggleGroup.d.ts +2 -2
  535. package/toggle-group/ToggleGroup.js +6 -13
  536. package/toolbar/link/ToolbarLink.d.ts +1 -1
  537. package/toolbar/link/ToolbarLink.js +1 -2
  538. package/tooltip/arrow/TooltipArrow.js +3 -3
  539. package/tooltip/popup/TooltipPopup.js +5 -4
  540. package/tooltip/root/TooltipRoot.js +32 -23
  541. package/tooltip/store/TooltipHandle.js +1 -1
  542. package/tooltip/store/TooltipStore.d.ts +90 -2
  543. package/tooltip/store/TooltipStore.js +17 -30
  544. package/tooltip/trigger/TooltipTrigger.js +152 -20
  545. package/tooltip/viewport/TooltipViewport.d.ts +2 -2
  546. package/tooltip/viewport/TooltipViewport.js +2 -2
  547. package/tooltip/viewport/TooltipViewportDataAttributes.d.ts +1 -1
  548. package/tooltip/viewport/TooltipViewportDataAttributes.js +1 -1
  549. package/unstable-use-media-query/index.js +1 -1
  550. package/utils/popups/index.d.ts +1 -0
  551. package/utils/popups/index.js +11 -0
  552. package/utils/popups/inlineRect.d.ts +15 -0
  553. package/utils/popups/inlineRect.js +198 -0
  554. package/utils/popups/popupStoreUtils.d.ts +28 -10
  555. package/utils/popups/popupStoreUtils.js +110 -20
  556. package/utils/popups/popupTriggerMap.js +2 -0
  557. package/utils/popups/store.d.ts +15 -2
  558. package/utils/popups/store.js +39 -2
  559. package/utils/popups/useTriggerFocusGuards.js +4 -5
  560. package/utils/useAnchorPositioning.d.ts +5 -0
  561. package/utils/useAnchorPositioning.js +12 -9
  562. package/utils/useOpenInteractionType.d.ts +4 -0
  563. package/utils/useOpenInteractionType.js +24 -17
  564. package/checkbox-group/index.parts.d.ts +0 -1
  565. package/checkbox-group/index.parts.js +0 -12
  566. package/esm/checkbox-group/index.parts.d.ts +0 -1
  567. package/esm/checkbox-group/index.parts.js +0 -1
  568. package/esm/floating-ui-react/hooks/useInteractions.d.ts +0 -20
  569. package/esm/floating-ui-react/hooks/useInteractions.js +0 -88
  570. package/esm/floating-ui-react/hooks/useRole.d.ts +0 -17
  571. package/esm/floating-ui-react/hooks/useRole.js +0 -113
  572. package/floating-ui-react/hooks/useInteractions.d.ts +0 -20
  573. package/floating-ui-react/hooks/useInteractions.js +0 -95
  574. package/floating-ui-react/hooks/useRole.d.ts +0 -17
  575. package/floating-ui-react/hooks/useRole.js +0 -120
  576. /package/{csp-provider → esm/internals/csp-context}/CSPContext.d.ts +0 -0
  577. /package/esm/{csp-provider → internals/csp-context}/CSPContext.js +0 -0
  578. /package/{esm/csp-provider → internals/csp-context}/CSPContext.d.ts +0 -0
  579. /package/{csp-provider → internals/csp-context}/CSPContext.js +0 -0
@@ -10,7 +10,7 @@ import { REASONS } from "../../internals/reasons.js";
10
10
  * Documentation: [Base UI Collapsible](https://base-ui.com/react/components/collapsible)
11
11
  */
12
12
  export declare const CollapsibleRoot: React.ForwardRefExoticComponent<Omit<CollapsibleRootProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
13
- export interface CollapsibleRootState extends Pick<UseCollapsibleRootReturnValue, 'open' | 'disabled'> {}
13
+ export interface CollapsibleRootState extends Pick<UseCollapsibleRootReturnValue, 'open' | 'disabled' | 'transitionStatus'> {}
14
14
  export interface CollapsibleRootProps extends BaseUIComponentProps<'div', CollapsibleRootState> {
15
15
  /**
16
16
  * Whether the collapsible panel is currently open.
@@ -1,11 +1,9 @@
1
1
  import * as React from 'react';
2
2
  import type { UseCollapsibleRootReturnValue } from "./useCollapsibleRoot.js";
3
3
  import type { CollapsibleRoot, CollapsibleRootState } from "./CollapsibleRoot.js";
4
- import type { TransitionStatus } from "../../internals/useTransitionStatus.js";
5
4
  export interface CollapsibleRootContext extends UseCollapsibleRootReturnValue {
6
5
  onOpenChange: (open: boolean, eventDetails: CollapsibleRoot.ChangeEventDetails) => void;
7
6
  state: CollapsibleRootState;
8
- transitionStatus: TransitionStatus;
9
7
  }
10
8
  export declare const CollapsibleRootContext: React.Context<CollapsibleRootContext | undefined>;
11
9
  export declare function useCollapsibleRootContext(): CollapsibleRootContext;
@@ -1,11 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { TransitionStatus } from "../../internals/useTransitionStatus.js";
3
3
  import type { CollapsibleRoot } from "./CollapsibleRoot.js";
4
- export type AnimationType = 'css-transition' | 'css-animation' | 'none' | null;
5
- export interface Dimensions {
6
- height: number | undefined;
7
- width: number | undefined;
8
- }
9
4
  export declare function useCollapsibleRoot(parameters: UseCollapsibleRootParameters): UseCollapsibleRootReturnValue;
10
5
  export interface UseCollapsibleRootParameters {
11
6
  /**
@@ -32,17 +27,11 @@ export interface UseCollapsibleRootParameters {
32
27
  disabled: boolean;
33
28
  }
34
29
  export interface UseCollapsibleRootReturnValue {
35
- abortControllerRef: React.RefObject<AbortController | null>;
36
- animationTypeRef: React.RefObject<AnimationType>;
37
30
  /**
38
31
  * Whether the component should ignore user interaction.
39
32
  */
40
33
  disabled: boolean;
41
34
  handleTrigger: (event: React.MouseEvent | React.KeyboardEvent) => void;
42
- /**
43
- * The height of the panel.
44
- */
45
- height: number | undefined;
46
35
  /**
47
36
  * Whether the collapsible panel is mounted for transition and hidden-state
48
37
  * purposes. This can be `false` while the element remains in the DOM when
@@ -54,25 +43,9 @@ export interface UseCollapsibleRootReturnValue {
54
43
  */
55
44
  open: boolean;
56
45
  panelId: React.HTMLAttributes<Element>['id'];
57
- panelRef: React.RefObject<HTMLElement | null>;
58
- runOnceAnimationsFinish: (fnToExecute: () => void, signal?: AbortSignal | null) => void;
59
- setDimensions: React.Dispatch<React.SetStateAction<Dimensions>>;
60
- setHiddenUntilFound: React.Dispatch<React.SetStateAction<boolean>>;
61
- setKeepMounted: React.Dispatch<React.SetStateAction<boolean>>;
62
46
  setMounted: (nextMounted: boolean) => void;
63
47
  setOpen: (open: boolean) => void;
64
48
  setPanelIdState: (id: string | undefined) => void;
65
- setVisible: React.Dispatch<React.SetStateAction<boolean>>;
66
- transitionDimensionRef: React.RefObject<'height' | 'width' | null>;
67
49
  transitionStatus: TransitionStatus;
68
- /**
69
- * The visible state of the panel used to determine the `[hidden]` attribute
70
- * only when CSS keyframe animations are used.
71
- */
72
- visible: boolean;
73
- /**
74
- * The width of the panel.
75
- */
76
- width: number | undefined;
77
50
  }
78
51
  export interface UseCollapsibleRootState {}
@@ -8,12 +8,10 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.useCollapsibleRoot = useCollapsibleRoot;
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  var _useControlled = require("@base-ui/utils/useControlled");
11
- var _useIsoLayoutEffect = require("@base-ui/utils/useIsoLayoutEffect");
12
11
  var _useStableCallback = require("@base-ui/utils/useStableCallback");
13
12
  var _useBaseUiId = require("../../internals/useBaseUiId");
14
13
  var _createBaseUIEventDetails = require("../../internals/createBaseUIEventDetails");
15
14
  var _reasons = require("../../internals/reasons");
16
- var _useAnimationsFinished = require("../../internals/useAnimationsFinished");
17
15
  var _useTransitionStatus = require("../../internals/useTransitionStatus");
18
16
  function useCollapsibleRoot(parameters) {
19
17
  const {
@@ -22,7 +20,6 @@ function useCollapsibleRoot(parameters) {
22
20
  onOpenChange,
23
21
  disabled
24
22
  } = parameters;
25
- const isControlled = openParam !== undefined;
26
23
  const [open, setOpen] = (0, _useControlled.useControlled)({
27
24
  controlled: openParam,
28
25
  default: defaultOpen,
@@ -34,24 +31,9 @@ function useCollapsibleRoot(parameters) {
34
31
  setMounted,
35
32
  transitionStatus
36
33
  } = (0, _useTransitionStatus.useTransitionStatus)(open, true, true);
37
- const [visible, setVisible] = React.useState(open);
38
- const [{
39
- height,
40
- width
41
- }, setDimensions] = React.useState({
42
- height: undefined,
43
- width: undefined
44
- });
45
34
  const defaultPanelId = (0, _useBaseUiId.useBaseUiId)();
46
35
  const [panelIdState, setPanelIdState] = React.useState();
47
36
  const panelId = panelIdState ?? defaultPanelId;
48
- const [hiddenUntilFound, setHiddenUntilFound] = React.useState(false);
49
- const [keepMounted, setKeepMounted] = React.useState(false);
50
- const abortControllerRef = React.useRef(null);
51
- const animationTypeRef = React.useRef(null);
52
- const transitionDimensionRef = React.useRef(null);
53
- const panelRef = React.useRef(null);
54
- const runOnceAnimationsFinish = (0, _useAnimationsFinished.useAnimationsFinished)(panelRef, false);
55
37
  const handleTrigger = (0, _useStableCallback.useStableCallback)(event => {
56
38
  const nextOpen = !open;
57
39
  const eventDetails = (0, _createBaseUIEventDetails.createChangeEventDetails)(_reasons.REASONS.triggerPress, event.nativeEvent);
@@ -59,61 +41,17 @@ function useCollapsibleRoot(parameters) {
59
41
  if (eventDetails.isCanceled) {
60
42
  return;
61
43
  }
62
- const panel = panelRef.current;
63
- if (animationTypeRef.current === 'css-animation' && panel != null) {
64
- panel.style.removeProperty('animation-name');
65
- }
66
- if (!hiddenUntilFound && !keepMounted) {
67
- if (animationTypeRef.current != null && animationTypeRef.current !== 'css-animation') {
68
- if (!mounted && nextOpen) {
69
- setMounted(true);
70
- }
71
- }
72
- if (animationTypeRef.current === 'css-animation') {
73
- if (!visible && nextOpen) {
74
- setVisible(true);
75
- }
76
- if (!mounted && nextOpen) {
77
- setMounted(true);
78
- }
79
- }
80
- }
81
44
  setOpen(nextOpen);
82
- if (animationTypeRef.current === 'none' && mounted && !nextOpen) {
83
- setMounted(false);
84
- }
85
45
  });
86
- (0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
87
- /**
88
- * Close immediately in controlled mode when no CSS animations or
89
- * transitions are applied. `keepMounted` only keeps the element in the
90
- * DOM; `mounted` must still become `false` so the panel regains `hidden`.
91
- */
92
- if (isControlled && animationTypeRef.current === 'none' && !open) {
93
- setMounted(false);
94
- }
95
- }, [isControlled, open, openParam, setMounted]);
96
46
  return React.useMemo(() => ({
97
- abortControllerRef,
98
- animationTypeRef,
99
47
  disabled,
100
48
  handleTrigger,
101
- height,
102
49
  mounted,
103
50
  open,
104
51
  panelId,
105
- panelRef,
106
- runOnceAnimationsFinish,
107
- setDimensions,
108
- setHiddenUntilFound,
109
- setKeepMounted,
110
52
  setMounted,
111
53
  setOpen,
112
54
  setPanelIdState,
113
- setVisible,
114
- transitionDimensionRef,
115
- transitionStatus,
116
- visible,
117
- width
118
- }), [abortControllerRef, animationTypeRef, disabled, handleTrigger, height, mounted, open, panelId, panelRef, runOnceAnimationsFinish, setDimensions, setHiddenUntilFound, setKeepMounted, setMounted, setOpen, setVisible, transitionDimensionRef, transitionStatus, visible, width]);
55
+ transitionStatus
56
+ }), [disabled, handleTrigger, mounted, open, panelId, setMounted, setOpen, setPanelIdState, transitionStatus]);
119
57
  }
@@ -48,15 +48,14 @@ const CollapsibleTrigger = exports.CollapsibleTrigger = /*#__PURE__*/React.forwa
48
48
  focusableWhenDisabled: true,
49
49
  native: nativeButton
50
50
  });
51
- const props = React.useMemo(() => ({
52
- 'aria-controls': open ? panelId : undefined,
53
- 'aria-expanded': open,
54
- onClick: handleTrigger
55
- }), [panelId, open, handleTrigger]);
56
51
  const element = (0, _useRenderElement.useRenderElement)('button', componentProps, {
57
52
  state,
58
53
  ref: [forwardedRef, buttonRef],
59
- props: [props, elementProps, getButtonProps],
54
+ props: [{
55
+ 'aria-controls': open ? panelId : undefined,
56
+ 'aria-expanded': open,
57
+ onClick: handleTrigger
58
+ }, elementProps, getButtonProps],
60
59
  stateAttributesMapping
61
60
  });
62
61
  return element;
@@ -21,8 +21,8 @@ var _popupStateMapping = require("../../utils/popupStateMapping");
21
21
  */
22
22
  const ComboboxArrow = exports.ComboboxArrow = /*#__PURE__*/React.forwardRef(function ComboboxArrow(componentProps, forwardedRef) {
23
23
  const {
24
- className,
25
24
  render,
25
+ className,
26
26
  style,
27
27
  ...elementProps
28
28
  } = componentProps;
@@ -26,8 +26,8 @@ const stateAttributesMapping = {
26
26
  */
27
27
  const ComboboxBackdrop = exports.ComboboxBackdrop = /*#__PURE__*/React.forwardRef(function ComboboxBackdrop(componentProps, forwardedRef) {
28
28
  const {
29
- className,
30
29
  render,
30
+ className,
31
31
  style,
32
32
  ...elementProps
33
33
  } = componentProps;
@@ -18,6 +18,7 @@ var _utils = require("../../floating-ui-react/utils");
18
18
  var _store2 = require("../store");
19
19
  var _createBaseUIEventDetails = require("../../internals/createBaseUIEventDetails");
20
20
  var _reasons = require("../../internals/reasons");
21
+ var _DirectionContext = require("../../internals/direction-context/DirectionContext");
21
22
  var _jsxRuntime = require("react/jsx-runtime");
22
23
  /**
23
24
  * An individual chip that represents a value in a multiselectable input.
@@ -37,6 +38,7 @@ const ComboboxChip = exports.ComboboxChip = /*#__PURE__*/React.forwardRef(functi
37
38
  setHighlightedChipIndex,
38
39
  chipsRef
39
40
  } = (0, _ComboboxChipsContext.useComboboxChipsContext)();
41
+ const direction = (0, _DirectionContext.useDirection)();
40
42
  const disabled = (0, _store.useStore)(store, _store2.selectors.disabled);
41
43
  const readOnly = (0, _store.useStore)(store, _store2.selectors.readOnly);
42
44
  const selectedValue = (0, _store.useStore)(store, _store2.selectors.selectedValue);
@@ -46,14 +48,17 @@ const ComboboxChip = exports.ComboboxChip = /*#__PURE__*/React.forwardRef(functi
46
48
  } = (0, _useCompositeListItem.useCompositeListItem)();
47
49
  function handleKeyDown(event) {
48
50
  let nextIndex = index;
49
- if (event.key === 'ArrowLeft') {
51
+ const isRtl = direction === 'rtl';
52
+ const previousChipKey = isRtl ? 'ArrowRight' : 'ArrowLeft';
53
+ const nextChipKey = isRtl ? 'ArrowLeft' : 'ArrowRight';
54
+ if (event.key === previousChipKey) {
50
55
  event.preventDefault();
51
56
  if (index > 0) {
52
57
  nextIndex = index - 1;
53
58
  } else {
54
59
  nextIndex = undefined;
55
60
  }
56
- } else if (event.key === 'ArrowRight') {
61
+ } else if (event.key === nextChipKey) {
57
62
  event.preventDefault();
58
63
  if (index < chipsRef.current.length - 1) {
59
64
  nextIndex = index + 1;
@@ -17,6 +17,10 @@ export interface ComboboxClearState {
17
17
  * Whether the component should ignore user interaction.
18
18
  */
19
19
  disabled: boolean;
20
+ /**
21
+ * Whether the clear button should be visible.
22
+ */
23
+ visible: boolean;
20
24
  /**
21
25
  * The transition status of the component.
22
26
  */
@@ -74,6 +74,7 @@ const ComboboxClear = exports.ComboboxClear = /*#__PURE__*/React.forwardRef(func
74
74
  } = (0, _useTransitionStatus.useTransitionStatus)(visible);
75
75
  const state = {
76
76
  disabled,
77
+ visible,
77
78
  open,
78
79
  transitionStatus
79
80
  };
@@ -7,6 +7,10 @@ export declare enum ComboboxClearDataAttributes {
7
7
  * Present when the button is disabled.
8
8
  */
9
9
  disabled = "data-disabled",
10
+ /**
11
+ * Present when the clear button is visible.
12
+ */
13
+ visible = "data-visible",
10
14
  /**
11
15
  * Present when the button is animating in.
12
16
  */
@@ -14,6 +14,10 @@ let ComboboxClearDataAttributes = exports.ComboboxClearDataAttributes = function
14
14
  * Present when the button is disabled.
15
15
  */
16
16
  ComboboxClearDataAttributes["disabled"] = "data-disabled";
17
+ /**
18
+ * Present when the clear button is visible.
19
+ */
20
+ ComboboxClearDataAttributes["visible"] = "data-visible";
17
21
  /**
18
22
  * Present when the button is animating in.
19
23
  */
@@ -16,8 +16,8 @@ var _useRenderElement = require("../../internals/useRenderElement");
16
16
  */
17
17
  const ComboboxIcon = exports.ComboboxIcon = /*#__PURE__*/React.forwardRef(function ComboboxIcon(componentProps, forwardedRef) {
18
18
  const {
19
- className,
20
19
  render,
20
+ className,
21
21
  style,
22
22
  ...elementProps
23
23
  } = componentProps;
@@ -94,6 +94,7 @@ const ComboboxInput = exports.ComboboxInput = /*#__PURE__*/React.forwardRef(func
94
94
  const isComposingRef = React.useRef(false);
95
95
  const lastActiveIndexRef = React.useRef(null);
96
96
  const shouldRestoreActiveIndexRef = React.useRef(false);
97
+ const inputOwnsFormValue = selectionMode === 'none' && !hasPositionerParent;
97
98
  const setInputElement = (0, _useStableCallback.useStableCallback)(element => {
98
99
  const nextIsInsidePopup = hasPositionerParent || store.state.inline;
99
100
  if (nextIsInsidePopup && !store.state.hasInputValue) {
@@ -101,7 +102,8 @@ const ComboboxInput = exports.ComboboxInput = /*#__PURE__*/React.forwardRef(func
101
102
  }
102
103
  store.update({
103
104
  inputElement: element,
104
- inputInsidePopup: nextIsInsidePopup
105
+ inputInsidePopup: nextIsInsidePopup,
106
+ inputOwnsFormValue
105
107
  });
106
108
  });
107
109
  const validationProps = hasPositionerParent || !validation ? elementProps : validation.getValidationProps(elementProps);
@@ -122,15 +124,18 @@ const ComboboxInput = exports.ComboboxInput = /*#__PURE__*/React.forwardRef(func
122
124
  highlightedChipIndex
123
125
  } = comboboxChipsContext;
124
126
  const renderedChipsCount = comboboxChipsContext.chipsRef.current.length;
127
+ const isRtl = direction === 'rtl';
128
+ const previousChipKey = isRtl ? 'ArrowRight' : 'ArrowLeft';
129
+ const nextChipKey = isRtl ? 'ArrowLeft' : 'ArrowRight';
125
130
  if (highlightedChipIndex !== undefined) {
126
- if (event.key === 'ArrowLeft') {
131
+ if (event.key === previousChipKey) {
127
132
  event.preventDefault();
128
133
  if (highlightedChipIndex > 0) {
129
134
  nextIndex = highlightedChipIndex - 1;
130
135
  } else {
131
136
  nextIndex = undefined;
132
137
  }
133
- } else if (event.key === 'ArrowRight') {
138
+ } else if (event.key === nextChipKey) {
134
139
  event.preventDefault();
135
140
  if (highlightedChipIndex < renderedChipsCount - 1) {
136
141
  nextIndex = highlightedChipIndex + 1;
@@ -153,7 +158,7 @@ const ComboboxInput = exports.ComboboxInput = /*#__PURE__*/React.forwardRef(func
153
158
  }
154
159
 
155
160
  // Handle navigation when no chip is highlighted
156
- if (event.key === 'ArrowLeft' && (event.currentTarget.selectionStart ?? 0) === 0 && selectedValue.length > 0) {
161
+ if (event.key === previousChipKey && (event.currentTarget.selectionStart ?? 0) === 0 && selectedValue.length > 0) {
157
162
  event.preventDefault();
158
163
  nextIndex = renderedChipsCount > 0 ? renderedChipsCount - 1 : undefined;
159
164
  } else if (event.key === 'Backspace' && event.currentTarget.value === '' && selectedValue.length > 0) {
@@ -179,7 +184,7 @@ const ComboboxInput = exports.ComboboxInput = /*#__PURE__*/React.forwardRef(func
179
184
  readOnly,
180
185
  required: selectionMode === 'none' ? required : undefined,
181
186
  form,
182
- ...(selectionMode === 'none' && name && {
187
+ ...(inputOwnsFormValue && name && {
183
188
  name
184
189
  }),
185
190
  id,
@@ -401,10 +406,14 @@ const ComboboxInput = exports.ComboboxInput = /*#__PURE__*/React.forwardRef(func
401
406
  }, validationProps],
402
407
  stateAttributesMapping: _stateAttributesMapping.triggerStateAttributesMapping
403
408
  });
409
+ const renderedInput = hasPositionerParent ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_FieldRootContext.FieldRootContext.Provider, {
410
+ value: _FieldRootContext.DEFAULT_FIELD_ROOT_CONTEXT,
411
+ children: element
412
+ }) : element;
404
413
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
405
414
  children: [open && focusManagerModal && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ComboboxInternalDismissButton.ComboboxInternalDismissButton, {
406
415
  ref: store.state.startDismissRef
407
- }), element]
416
+ }), renderedInput]
408
417
  });
409
418
  });
410
419
  if (process.env.NODE_ENV !== "production") ComboboxInput.displayName = "ComboboxInput";
@@ -29,11 +29,11 @@ const ComboboxItem = exports.ComboboxItem = /*#__PURE__*/React.memo(/*#__PURE__*
29
29
  const {
30
30
  render,
31
31
  className,
32
+ style,
32
33
  value: itemValue = null,
33
34
  index: indexProp,
34
35
  disabled = false,
35
36
  nativeButton = false,
36
- style,
37
37
  ...elementProps
38
38
  } = componentProps;
39
39
  const didPointerDownRef = React.useRef(false);
@@ -60,7 +60,7 @@ const ComboboxItem = exports.ComboboxItem = /*#__PURE__*/React.memo(/*#__PURE__*
60
60
  const rootId = (0, _store.useStore)(store, _store2.selectors.id);
61
61
  const highlighted = (0, _store.useStore)(store, _store2.selectors.isActive, index);
62
62
  const matchesSelectedValue = (0, _store.useStore)(store, _store2.selectors.isSelected, itemValue);
63
- const getItemProps = (0, _store.useStore)(store, _store2.selectors.getItemProps);
63
+ const itemProps = (0, _store.useStore)(store, _store2.selectors.itemProps);
64
64
  const itemRef = React.useRef(null);
65
65
  const id = rootId != null && hasRegistered ? `${rootId}-${index}` : undefined;
66
66
  const selected = matchesSelectedValue && selectable;
@@ -106,17 +106,6 @@ const ComboboxItem = exports.ComboboxItem = /*#__PURE__*/React.memo(/*#__PURE__*
106
106
  store.set('selectedIndex', index);
107
107
  }
108
108
  }, [hasRegistered, hasItems, open, store, index, itemValue, isItemEqualToValue]);
109
- const state = {
110
- disabled,
111
- selected,
112
- highlighted
113
- };
114
- const rootProps = getItemProps({
115
- active: highlighted,
116
- selected
117
- });
118
- rootProps.id = undefined;
119
- rootProps.onFocus = undefined;
120
109
  const {
121
110
  getButtonProps,
122
111
  buttonRef
@@ -126,6 +115,11 @@ const ComboboxItem = exports.ComboboxItem = /*#__PURE__*/React.memo(/*#__PURE__*
126
115
  native: nativeButton,
127
116
  composite: true
128
117
  });
118
+ const state = {
119
+ disabled,
120
+ selected,
121
+ highlighted
122
+ };
129
123
  function commitSelection(nativeEvent) {
130
124
  function selectItem() {
131
125
  store.state.handleSelection(nativeEvent, itemValue);
@@ -172,7 +166,7 @@ const ComboboxItem = exports.ComboboxItem = /*#__PURE__*/React.memo(/*#__PURE__*
172
166
  const element = (0, _useRenderElement.useRenderElement)('div', componentProps, {
173
167
  ref: [buttonRef, forwardedRef, listItem.ref, itemRef],
174
168
  state,
175
- props: [rootProps, defaultProps, elementProps, getButtonProps]
169
+ props: [itemProps, defaultProps, elementProps, getButtonProps]
176
170
  });
177
171
  const contextValue = React.useMemo(() => ({
178
172
  selected,
@@ -36,8 +36,7 @@ const ComboboxItemIndicator = exports.ComboboxItemIndicator = /*#__PURE__*/React
36
36
  });
37
37
  });
38
38
 
39
- /** The core implementation of the indicator is split here to avoid paying the hooks
40
- * costs unless the element needs to be mounted. */
39
+ // Split the core implementation to avoid paying the hook costs unless the element needs to mount.
41
40
  if (process.env.NODE_ENV !== "production") ComboboxItemIndicator.displayName = "ComboboxItemIndicator";
42
41
  const Inner = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef((componentProps, forwardedRef) => {
43
42
  const {