@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
@@ -1,17 +1,11 @@
1
1
  "use strict";
2
2
  'use client';
3
3
 
4
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.AlertDialogRoot = AlertDialogRoot;
9
- var React = _interopRequireWildcard(require("react"));
10
- var _DialogRoot = require("../../dialog/root/DialogRoot");
11
- var _useDialogRoot = require("../../dialog/root/useDialogRoot");
12
- var _DialogRootContext = require("../../dialog/root/DialogRootContext");
13
- var _DialogStore = require("../../dialog/store/DialogStore");
14
- var _jsxRuntime = require("react/jsx-runtime");
8
+ var _useRenderDialogRoot = require("../../dialog/root/useRenderDialogRoot");
15
9
  /**
16
10
  * Groups all parts of the alert dialog.
17
11
  * Doesn't render its own HTML element.
@@ -19,53 +13,5 @@ var _jsxRuntime = require("react/jsx-runtime");
19
13
  * Documentation: [Base UI Alert Dialog](https://base-ui.com/react/components/alert-dialog)
20
14
  */
21
15
  function AlertDialogRoot(props) {
22
- const {
23
- children,
24
- open: openProp,
25
- defaultOpen = false,
26
- onOpenChange,
27
- onOpenChangeComplete,
28
- actionsRef,
29
- handle,
30
- triggerId: triggerIdProp,
31
- defaultTriggerId: defaultTriggerIdProp = null
32
- } = props;
33
- const parentDialogRootContext = (0, _DialogRootContext.useDialogRootContext)(true);
34
- const nested = Boolean(parentDialogRootContext);
35
- const store = _DialogStore.DialogStore.useStore(handle?.store, {
36
- open: defaultOpen,
37
- openProp,
38
- activeTriggerId: defaultTriggerIdProp,
39
- triggerIdProp,
40
- modal: true,
41
- disablePointerDismissal: true,
42
- nested,
43
- role: 'alertdialog'
44
- });
45
- store.useControlledProp('openProp', openProp);
46
- store.useControlledProp('triggerIdProp', triggerIdProp);
47
- store.useSyncedValue('nested', nested);
48
- store.useContextCallback('onOpenChange', onOpenChange);
49
- store.useContextCallback('onOpenChangeComplete', onOpenChangeComplete);
50
- const payload = store.useState('payload');
51
- (0, _useDialogRoot.useDialogRoot)({
52
- store,
53
- actionsRef,
54
- parentContext: parentDialogRootContext?.store.context,
55
- isDrawer: false,
56
- onOpenChange,
57
- triggerIdProp
58
- });
59
- const contextValue = React.useMemo(() => ({
60
- store
61
- }), [store]);
62
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogRoot.IsDrawerContext.Provider, {
63
- value: false,
64
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogRootContext.DialogRootContext.Provider, {
65
- value: contextValue,
66
- children: typeof children === 'function' ? children({
67
- payload
68
- }) : children
69
- })
70
- });
16
+ return (0, _useRenderDialogRoot.useRenderDialogRoot)(props, 'alert-dialog');
71
17
  }
@@ -0,0 +1,25 @@
1
+ import type * as React from 'react';
2
+ import { type DialogTriggerProps, type DialogTriggerState } from "../../dialog/trigger/DialogTrigger.js";
3
+ import type { AlertDialogHandle } from "../handle.js";
4
+ /**
5
+ * A button that opens the alert dialog.
6
+ * Renders a `<button>` element.
7
+ *
8
+ * Documentation: [Base UI Alert Dialog](https://base-ui.com/react/components/alert-dialog)
9
+ */
10
+ export declare const AlertDialogTrigger: AlertDialogTrigger;
11
+ export interface AlertDialogTrigger {
12
+ <Payload>(componentProps: AlertDialogTriggerProps<Payload>): React.JSX.Element;
13
+ }
14
+ export interface AlertDialogTriggerProps<Payload = unknown> extends Omit<DialogTriggerProps<Payload>, 'handle'> {
15
+ /**
16
+ * A handle to associate the trigger with an alert dialog.
17
+ * Can be created with the AlertDialog.createHandle() method.
18
+ */
19
+ handle?: AlertDialogHandle<Payload> | undefined;
20
+ }
21
+ export interface AlertDialogTriggerState extends DialogTriggerState {}
22
+ export declare namespace AlertDialogTrigger {
23
+ type Props<Payload = unknown> = AlertDialogTriggerProps<Payload>;
24
+ type State = AlertDialogTriggerState;
25
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ 'use client';
3
+
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.AlertDialogTrigger = void 0;
8
+ var _DialogTrigger = require("../../dialog/trigger/DialogTrigger");
9
+ /**
10
+ * A button that opens the alert dialog.
11
+ * Renders a `<button>` element.
12
+ *
13
+ * Documentation: [Base UI Alert Dialog](https://base-ui.com/react/components/alert-dialog)
14
+ */
15
+ const AlertDialogTrigger = exports.AlertDialogTrigger = _DialogTrigger.DialogTrigger;
@@ -0,0 +1,10 @@
1
+ export declare enum AlertDialogTriggerDataAttributes {
2
+ /**
3
+ * Present when the trigger is disabled.
4
+ */
5
+ disabled = "data-disabled",
6
+ /**
7
+ * Present when the corresponding alert dialog is open.
8
+ */
9
+ popupOpen = "data-popup-open",
10
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AlertDialogTriggerDataAttributes = void 0;
7
+ var _popupStateMapping = require("../../utils/popupStateMapping");
8
+ let AlertDialogTriggerDataAttributes = exports.AlertDialogTriggerDataAttributes = function (AlertDialogTriggerDataAttributes) {
9
+ /**
10
+ * Present when the trigger is disabled.
11
+ */
12
+ AlertDialogTriggerDataAttributes["disabled"] = "data-disabled";
13
+ /**
14
+ * Present when the corresponding alert dialog is open.
15
+ */
16
+ AlertDialogTriggerDataAttributes[AlertDialogTriggerDataAttributes["popupOpen"] = _popupStateMapping.CommonTriggerDataAttributes.popupOpen] = "popupOpen";
17
+ return AlertDialogTriggerDataAttributes;
18
+ }({});
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.AutocompleteRoot = AutocompleteRoot;
9
9
  var React = _interopRequireWildcard(require("react"));
10
- var _useStableCallback = require("@base-ui/utils/useStableCallback");
11
10
  var _AriaCombobox = require("../../combobox/root/AriaCombobox");
12
11
  var _useFilter = require("../../combobox/root/utils/useFilter");
13
12
  var _resolveValueLabel = require("../../internals/resolveValueLabel");
@@ -53,13 +52,6 @@ function AutocompleteRoot(props) {
53
52
  } else {
54
53
  resolvedInputValue = internalValue;
55
54
  }
56
- const handleValueChange = (0, _useStableCallback.useStableCallback)((nextValue, eventDetails) => {
57
- setInlineInputValue('');
58
- if (!isControlled) {
59
- setInternalValue(nextValue);
60
- }
61
- onValueChange?.(nextValue, eventDetails);
62
- });
63
55
  const collator = (0, _useFilter.useCoreFilter)();
64
56
  const baseFilter = React.useMemo(() => {
65
57
  if (other.filter !== undefined) {
@@ -81,7 +73,14 @@ function AutocompleteRoot(props) {
81
73
  return baseFilter(item, resolvedQuery, toString);
82
74
  };
83
75
  }, [baseFilter, mode, resolvedQuery, staticItems]);
84
- const handleItemHighlighted = (0, _useStableCallback.useStableCallback)((highlightedValue, eventDetails) => {
76
+ function handleValueChange(nextValue, eventDetails) {
77
+ setInlineInputValue('');
78
+ if (!isControlled) {
79
+ setInternalValue(nextValue);
80
+ }
81
+ onValueChange?.(nextValue, eventDetails);
82
+ }
83
+ function handleItemHighlighted(highlightedValue, eventDetails) {
85
84
  props.onItemHighlighted?.(highlightedValue, eventDetails);
86
85
  if (eventDetails.reason === _reasons.REASONS.pointer) {
87
86
  return;
@@ -95,7 +94,7 @@ function AutocompleteRoot(props) {
95
94
  } else {
96
95
  setInlineInputValue('');
97
96
  }
98
- });
97
+ }
99
98
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_AriaCombobox.AriaCombobox, {
100
99
  ...other,
101
100
  itemToStringLabel: itemToStringValue,
@@ -58,10 +58,6 @@ const AvatarImage = exports.AvatarImage = /*#__PURE__*/React.forwardRef(function
58
58
  handleLoadingStatusChange(imageLoadingStatus);
59
59
  }
60
60
  }, [imageLoadingStatus, handleLoadingStatusChange]);
61
- const state = {
62
- imageLoadingStatus,
63
- transitionStatus
64
- };
65
61
  (0, _useOpenChangeComplete.useOpenChangeComplete)({
66
62
  open: isVisible,
67
63
  ref: imageRef,
@@ -71,6 +67,10 @@ const AvatarImage = exports.AvatarImage = /*#__PURE__*/React.forwardRef(function
71
67
  }
72
68
  }
73
69
  });
70
+ const state = {
71
+ imageLoadingStatus,
72
+ transitionStatus
73
+ };
74
74
  const element = (0, _useRenderElement.useRenderElement)('img', componentProps, {
75
75
  state,
76
76
  ref: [forwardedRef, imageRef],
@@ -50,11 +50,11 @@ const CheckboxIndicator = exports.CheckboxIndicator = /*#__PURE__*/React.forward
50
50
  }
51
51
  });
52
52
  const baseStateAttributesMapping = (0, _useStateAttributesMapping.useStateAttributesMapping)(rootState);
53
- const stateAttributesMapping = React.useMemo(() => ({
53
+ const stateAttributesMapping = {
54
54
  ...baseStateAttributesMapping,
55
55
  ..._stateAttributesMapping.transitionStatusMapping,
56
56
  ..._constants.fieldValidityMapping
57
- }), [baseStateAttributesMapping]);
57
+ };
58
58
  const shouldRender = keepMounted || mounted;
59
59
  const element = (0, _useRenderElement.useRenderElement)('span', componentProps, {
60
60
  ref: [forwardedRef, indicatorRef],
@@ -9,11 +9,12 @@ exports.PARENT_CHECKBOX = exports.CheckboxRoot = void 0;
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  var _empty = require("@base-ui/utils/empty");
11
11
  var _useControlled = require("@base-ui/utils/useControlled");
12
- var _useStableCallback = require("@base-ui/utils/useStableCallback");
13
12
  var _useIsoLayoutEffect = require("@base-ui/utils/useIsoLayoutEffect");
14
13
  var _useMergedRefs = require("@base-ui/utils/useMergedRefs");
15
14
  var _useRefWithInit = require("@base-ui/utils/useRefWithInit");
16
15
  var _visuallyHidden = require("@base-ui/utils/visuallyHidden");
16
+ var _owner = require("@base-ui/utils/owner");
17
+ var _getDefaultFormSubmitter = require("@base-ui/utils/getDefaultFormSubmitter");
17
18
  var _noop = require("../../internals/noop");
18
19
  var _useStateAttributesMapping = require("../utils/useStateAttributesMapping");
19
20
  var _useRenderElement = require("../../internals/useRenderElement");
@@ -52,7 +53,7 @@ const CheckboxRoot = exports.CheckboxRoot = /*#__PURE__*/React.forwardRef(functi
52
53
  indeterminate = false,
53
54
  inputRef: inputRefProp,
54
55
  name: nameProp,
55
- onCheckedChange: onCheckedChangeProp,
56
+ onCheckedChange,
56
57
  parent = false,
57
58
  readOnly = false,
58
59
  render,
@@ -108,7 +109,6 @@ const CheckboxRoot = exports.CheckboxRoot = /*#__PURE__*/React.forwardRef(functi
108
109
  groupProps = groupContext.parent.getChildProps(value);
109
110
  }
110
111
  }
111
- const onCheckedChange = (0, _useStableCallback.useStableCallback)(onCheckedChangeProp);
112
112
  const {
113
113
  checked: groupChecked = checkedProp,
114
114
  indeterminate: groupIndeterminate = indeterminate,
@@ -144,7 +144,7 @@ const CheckboxRoot = exports.CheckboxRoot = /*#__PURE__*/React.forwardRef(functi
144
144
  hasRegisteredRef.current = true;
145
145
  registerControlId(controlSourceRef.current, inputId);
146
146
  return undefined;
147
- }, [inputId, groupContext, registerControlId, parent, controlSourceRef]);
147
+ }, [inputId, registerControlId, controlSourceRef]);
148
148
  React.useEffect(() => {
149
149
  const controlSource = controlSourceRef.current;
150
150
  return () => {
@@ -155,11 +155,7 @@ const CheckboxRoot = exports.CheckboxRoot = /*#__PURE__*/React.forwardRef(functi
155
155
  registerControlId(controlSource, undefined);
156
156
  };
157
157
  }, [registerControlId, controlSourceRef]);
158
- (0, _useRegisterFieldControl.useRegisterFieldControl)(controlRef, {
159
- enabled: !groupContext,
160
- id,
161
- value: checked
162
- });
158
+ (0, _useRegisterFieldControl.useRegisterFieldControl)(controlRef, id, checked, undefined, !groupContext);
163
159
  const inputRef = React.useRef(null);
164
160
  const mergedInputRef = (0, _useMergedRefs.useMergedRefs)(inputRefProp, inputRef, validation.inputRef);
165
161
  const ariaLabelledBy = (0, _useAriaLabelledBy.useAriaLabelledBy)(ariaLabelledByProp, labelId, inputRef, !nativeButton, inputId ?? undefined);
@@ -211,7 +207,7 @@ const CheckboxRoot = exports.CheckboxRoot = /*#__PURE__*/React.forwardRef(functi
211
207
  const nextChecked = event.currentTarget.checked;
212
208
  const details = (0, _createBaseUIEventDetails.createChangeEventDetails)(_reasons.REASONS.none, event.nativeEvent);
213
209
  groupOnChange?.(nextChecked, details);
214
- onCheckedChange(nextChecked, details);
210
+ onCheckedChange?.(nextChecked, details);
215
211
  if (details.isCanceled) {
216
212
  return;
217
213
  }
@@ -276,12 +272,54 @@ const CheckboxRoot = exports.CheckboxRoot = /*#__PURE__*/React.forwardRef(functi
276
272
  validation.commit(groupContext ? groupValue : inputEl.checked);
277
273
  }
278
274
  },
275
+ onKeyDown(event) {
276
+ if (event.key !== 'Enter') {
277
+ return;
278
+ }
279
+
280
+ // Let consumer `preventDefault()` handlers opt out while defensively stopping
281
+ // any remaining Base UI Enter handling from treating the checkbox as a button.
282
+ event.preventBaseUIHandler();
283
+ if (event.defaultPrevented) {
284
+ return;
285
+ }
286
+ const formToSubmit = inputRef.current?.form ?? null;
287
+ const currentTarget = event.currentTarget;
288
+ const nativeEvent = event.nativeEvent;
289
+ const originalPreventDefault = event.preventDefault;
290
+ const originalNativePreventDefault = nativeEvent.preventDefault;
291
+ let preventDefaultCalledAfterPropagation = false;
292
+ event.preventDefault = () => {
293
+ preventDefaultCalledAfterPropagation = true;
294
+ originalPreventDefault.call(event);
295
+ };
296
+ nativeEvent.preventDefault = () => {
297
+ preventDefaultCalledAfterPropagation = true;
298
+ originalNativePreventDefault.call(nativeEvent);
299
+ };
300
+
301
+ // Enter should not activate/toggle the checkbox. Cancel the native button behavior
302
+ // without setting React's synthetic `defaultPrevented`, so ancestor React handlers
303
+ // can still opt out by calling `preventDefault()` during propagation.
304
+ originalNativePreventDefault.call(nativeEvent);
305
+ (0, _owner.ownerWindow)(currentTarget).queueMicrotask(() => {
306
+ event.preventDefault = originalPreventDefault;
307
+ nativeEvent.preventDefault = originalNativePreventDefault;
308
+ if (!preventDefaultCalledAfterPropagation) {
309
+ (0, _getDefaultFormSubmitter.getDefaultFormSubmitter)(formToSubmit)?.click();
310
+ }
311
+ });
312
+ },
279
313
  onClick(event) {
280
314
  if (readOnly || disabled) {
281
315
  return;
282
316
  }
283
317
  event.preventDefault();
284
- inputRef.current?.dispatchEvent(new PointerEvent('click', {
318
+ const input = inputRef.current;
319
+ if (!input) {
320
+ return;
321
+ }
322
+ input.dispatchEvent(new ((0, _owner.ownerWindow)(input).PointerEvent)('click', {
285
323
  bubbles: true,
286
324
  shiftKey: event.shiftKey,
287
325
  ctrlKey: event.ctrlKey,
@@ -90,11 +90,7 @@ const CheckboxGroup = exports.CheckboxGroup = /*#__PURE__*/React.forwardRef(func
90
90
  controlRef.current = element;
91
91
  }
92
92
  }, []);
93
- (0, _useRegisterFieldControl.useRegisterFieldControl)(controlRef, {
94
- enabled: !!fieldName,
95
- id,
96
- value
97
- });
93
+ (0, _useRegisterFieldControl.useRegisterFieldControl)(controlRef, id, value, undefined, !!fieldName);
98
94
  const resolvedValue = value ?? _empty.EMPTY_ARRAY;
99
95
  (0, _useValueChanged.useValueChanged)(resolvedValue, () => {
100
96
  if (fieldName) {
@@ -9,12 +9,12 @@ exports.CollapsiblePanel = void 0;
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  var _useIsoLayoutEffect = require("@base-ui/utils/useIsoLayoutEffect");
11
11
  var _warn = require("@base-ui/utils/warn");
12
+ var _resolveStyle = require("../../utils/resolveStyle");
12
13
  var _useRenderElement = require("../../internals/useRenderElement");
13
14
  var _CollapsibleRootContext = require("../root/CollapsibleRootContext");
14
15
  var _stateAttributesMapping = require("../root/stateAttributesMapping");
15
16
  var _useCollapsiblePanel = require("./useCollapsiblePanel");
16
17
  var _CollapsiblePanelCssVars = require("./CollapsiblePanelCssVars");
17
- var _useOpenChangeComplete = require("../../internals/useOpenChangeComplete");
18
18
  /**
19
19
  * A panel with the collapsible contents.
20
20
  * Renders a `<div>` element.
@@ -35,31 +35,19 @@ const CollapsiblePanel = exports.CollapsiblePanel = /*#__PURE__*/React.forwardRe
35
35
  // eslint-disable-next-line react-hooks/rules-of-hooks
36
36
  (0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
37
37
  if (hiddenUntilFoundProp && keepMountedProp === false) {
38
- (0, _warn.warn)('The `keepMounted={false}` prop on a Collapsible will be ignored when using `hiddenUntilFound` since it requires the Panel to remain mounted even when closed.');
38
+ (0, _warn.warn)('The `keepMounted={false}` prop on `Collapsible.Panel` is ignored when `hiddenUntilFound` is enabled, since the panel must remain mounted while closed.');
39
39
  }
40
40
  }, [hiddenUntilFoundProp, keepMountedProp]);
41
41
  }
42
42
  const {
43
- abortControllerRef,
44
- animationTypeRef,
45
- height,
46
43
  mounted,
47
44
  onOpenChange,
48
45
  open,
49
46
  panelId,
50
- panelRef,
51
- runOnceAnimationsFinish,
52
- setDimensions,
53
- setHiddenUntilFound,
54
- setKeepMounted,
55
47
  setMounted,
56
48
  setPanelIdState,
57
49
  setOpen,
58
- setVisible,
59
50
  state,
60
- transitionDimensionRef,
61
- visible,
62
- width,
63
51
  transitionStatus
64
52
  } = (0, _CollapsibleRootContext.useCollapsibleRootContext)();
65
53
  const hiddenUntilFound = hiddenUntilFoundProp ?? false;
@@ -73,64 +61,54 @@ const CollapsiblePanel = exports.CollapsiblePanel = /*#__PURE__*/React.forwardRe
73
61
  }
74
62
  return undefined;
75
63
  }, [idProp, setPanelIdState]);
76
- (0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
77
- setHiddenUntilFound(hiddenUntilFound);
78
- }, [setHiddenUntilFound, hiddenUntilFound]);
79
- (0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
80
- setKeepMounted(keepMounted);
81
- }, [setKeepMounted, keepMounted]);
82
64
  const {
83
- props
65
+ height,
66
+ props,
67
+ ref,
68
+ shouldPreventOpenAnimation,
69
+ shouldRender,
70
+ transitionStatus: panelTransitionStatus,
71
+ width
84
72
  } = (0, _useCollapsiblePanel.useCollapsiblePanel)({
85
- abortControllerRef,
86
- animationTypeRef,
87
73
  externalRef: forwardedRef,
88
- height,
89
74
  hiddenUntilFound,
90
75
  id: panelId,
91
76
  keepMounted,
92
77
  mounted,
93
78
  onOpenChange,
94
79
  open,
95
- panelRef,
96
- runOnceAnimationsFinish,
97
- setDimensions,
98
80
  setMounted,
99
81
  setOpen,
100
- setVisible,
101
- transitionDimensionRef,
102
- visible,
103
- width
104
- });
105
- (0, _useOpenChangeComplete.useOpenChangeComplete)({
106
- open: open && transitionStatus === 'idle',
107
- ref: panelRef,
108
- onComplete() {
109
- if (!open) {
110
- return;
111
- }
112
- setDimensions({
113
- height: undefined,
114
- width: undefined
115
- });
116
- }
82
+ transitionStatus
117
83
  });
118
- const panelState = React.useMemo(() => ({
84
+ const panelState = {
119
85
  ...state,
120
- transitionStatus
121
- }), [state, transitionStatus]);
122
- const element = (0, _useRenderElement.useRenderElement)('div', componentProps, {
86
+ transitionStatus: panelTransitionStatus
87
+ };
88
+ const resolvedStyle = (0, _resolveStyle.resolveStyle)(style, panelState);
89
+ const element = (0, _useRenderElement.useRenderElement)('div', {
90
+ ...componentProps,
91
+ style: undefined
92
+ }, {
123
93
  state: panelState,
124
- ref: [forwardedRef, panelRef],
94
+ ref,
125
95
  props: [props, {
126
96
  style: {
127
97
  [_CollapsiblePanelCssVars.CollapsiblePanelCssVars.collapsiblePanelHeight]: height === undefined ? 'auto' : `${height}px`,
128
98
  [_CollapsiblePanelCssVars.CollapsiblePanelCssVars.collapsiblePanelWidth]: width === undefined ? 'auto' : `${width}px`
129
99
  }
130
- }, elementProps],
100
+ }, elementProps, resolvedStyle ? {
101
+ style: resolvedStyle
102
+ } : undefined,
103
+ // Resolve the public `style` prop so temporary `animationName: 'none'`
104
+ // can still win after user's inline styles have been merged.
105
+ shouldPreventOpenAnimation ? {
106
+ style: {
107
+ animationName: 'none'
108
+ }
109
+ } : undefined],
131
110
  stateAttributesMapping: _stateAttributesMapping.collapsibleStateAttributesMapping
132
111
  });
133
- const shouldRender = keepMounted || hiddenUntilFound || mounted;
134
112
  if (!shouldRender) {
135
113
  return null;
136
114
  }
@@ -1,16 +1,10 @@
1
1
  import * as React from 'react';
2
2
  import { HTMLProps } from "../../internals/types.js";
3
- import type { AnimationType, Dimensions } from "../root/useCollapsibleRoot.js";
4
3
  import type { CollapsibleRoot } from "../root/CollapsibleRoot.js";
4
+ import type { TransitionStatus } from "../../internals/useTransitionStatus.js";
5
5
  export declare function useCollapsiblePanel(parameters: UseCollapsiblePanelParameters): UseCollapsiblePanelReturnValue;
6
6
  export interface UseCollapsiblePanelParameters {
7
- abortControllerRef: React.RefObject<AbortController | null>;
8
- animationTypeRef: React.RefObject<AnimationType>;
9
7
  externalRef: React.ForwardedRef<HTMLDivElement>;
10
- /**
11
- * The height of the panel.
12
- */
13
- height: number | undefined;
14
8
  /**
15
9
  * Allows the browser's built-in page search to find and expand the panel contents.
16
10
  *
@@ -38,24 +32,16 @@ export interface UseCollapsiblePanelParameters {
38
32
  * Whether the collapsible panel is currently open.
39
33
  */
40
34
  open: boolean;
41
- panelRef: React.RefObject<HTMLElement | null>;
42
- runOnceAnimationsFinish: (fnToExecute: () => void, signal?: AbortSignal | null) => void;
43
- setDimensions: React.Dispatch<React.SetStateAction<Dimensions>>;
44
35
  setMounted: (nextMounted: boolean) => void;
45
36
  setOpen: (nextOpen: boolean) => void;
46
- setVisible: React.Dispatch<React.SetStateAction<boolean>>;
47
- transitionDimensionRef: React.RefObject<'height' | 'width' | null>;
48
- /**
49
- * The visible state of the panel used to determine the `[hidden]` attribute
50
- * only when CSS keyframe animations are used.
51
- */
52
- visible: boolean;
53
- /**
54
- * The width of the panel.
55
- */
56
- width: number | undefined;
37
+ transitionStatus: TransitionStatus;
57
38
  }
58
39
  export interface UseCollapsiblePanelReturnValue {
40
+ height: number | undefined;
59
41
  props: HTMLProps;
60
- }
61
- export interface UseCollapsiblePanelState {}
42
+ ref: React.Ref<HTMLDivElement>;
43
+ shouldPreventOpenAnimation: boolean;
44
+ shouldRender: boolean;
45
+ transitionStatus: TransitionStatus;
46
+ width: number | undefined;
47
+ }