@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
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ 'use client';
3
+
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useRenderDialogRoot = useRenderDialogRoot;
9
+ var React = _interopRequireWildcard(require("react"));
10
+ var _useOnFirstRender = require("@base-ui/utils/useOnFirstRender");
11
+ var _useDialogRoot = require("./useDialogRoot");
12
+ var _DialogRootContext = require("./DialogRootContext");
13
+ var _DialogStore = require("../store/DialogStore");
14
+ var _jsxRuntime = require("react/jsx-runtime");
15
+ function useRenderDialogRoot(props, mode = 'dialog') {
16
+ const {
17
+ children,
18
+ open: openProp,
19
+ defaultOpen = false,
20
+ onOpenChange,
21
+ onOpenChangeComplete,
22
+ disablePointerDismissal: disablePointerDismissalProp = false,
23
+ modal: modalProp = true,
24
+ actionsRef,
25
+ handle,
26
+ triggerId: triggerIdProp,
27
+ defaultTriggerId: defaultTriggerIdProp = null
28
+ } = props;
29
+ const isDrawer = mode === 'drawer';
30
+ const isAlertDialog = mode === 'alert-dialog';
31
+ const modal = isAlertDialog ? true : modalProp;
32
+ const disablePointerDismissal = isAlertDialog || disablePointerDismissalProp;
33
+ const role = isAlertDialog ? 'alertdialog' : 'dialog';
34
+ const parentDialogRootContext = (0, _DialogRootContext.useDialogRootContext)(true);
35
+ const nested = Boolean(parentDialogRootContext);
36
+ const rootState = {
37
+ modal,
38
+ disablePointerDismissal,
39
+ nested,
40
+ role
41
+ };
42
+ const store = _DialogStore.DialogStore.useStore(handle?.store, {
43
+ open: defaultOpen,
44
+ openProp,
45
+ activeTriggerId: defaultTriggerIdProp,
46
+ triggerIdProp,
47
+ ...rootState
48
+ });
49
+
50
+ // Support initially open state when uncontrolled
51
+ (0, _useOnFirstRender.useOnFirstRender)(() => {
52
+ const nextState = openProp === undefined && store.state.open === false && defaultOpen === true ? {
53
+ open: true,
54
+ activeTriggerId: defaultTriggerIdProp
55
+ } : null;
56
+ if (isAlertDialog) {
57
+ // Handles can reuse plain Dialog stores; alert dialog invariants must exist immediately.
58
+ store.update(nextState ? {
59
+ ...rootState,
60
+ ...nextState
61
+ } : rootState);
62
+ } else if (nextState) {
63
+ store.update(nextState);
64
+ }
65
+ });
66
+ store.useControlledProp('openProp', openProp);
67
+ store.useControlledProp('triggerIdProp', triggerIdProp);
68
+ store.useSyncedValues(rootState);
69
+ store.useContextCallback('onOpenChange', onOpenChange);
70
+ store.useContextCallback('onOpenChangeComplete', onOpenChangeComplete);
71
+ const open = store.useState('open');
72
+ const mounted = store.useState('mounted');
73
+ const payload = store.useState('payload');
74
+ const dialogRoot = (0, _useDialogRoot.useDialogRoot)({
75
+ store,
76
+ actionsRef,
77
+ parentContext: parentDialogRootContext?.store.context,
78
+ isDrawer
79
+ });
80
+ const shouldRenderInteractions = open || mounted;
81
+ const contextValue = React.useMemo(() => ({
82
+ store
83
+ }), [store]);
84
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogRootContext.IsDrawerContext.Provider, {
85
+ value: false,
86
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_DialogRootContext.DialogRootContext.Provider, {
87
+ value: contextValue,
88
+ children: [shouldRenderInteractions && /*#__PURE__*/(0, _jsxRuntime.jsx)(_useDialogRoot.DialogInteractions, {
89
+ store: store,
90
+ dialogRoot: dialogRoot
91
+ }), typeof children === 'function' ? children({
92
+ payload
93
+ }) : children]
94
+ })
95
+ });
96
+ }
@@ -11,7 +11,7 @@ export declare class DialogHandle<Payload> {
11
11
  constructor(store?: DialogStore<Payload>);
12
12
  /**
13
13
  * Opens the dialog and associates it with the trigger with the given id.
14
- * The trigger, if provided, must be a Dialog.Trigger component with this handle passed as a prop.
14
+ * The trigger, if provided, must be a matching Trigger component with this handle passed as a prop.
15
15
  *
16
16
  * This method should only be called in an event handler or an effect (not during rendering).
17
17
  *
@@ -23,7 +23,7 @@ class DialogHandle {
23
23
 
24
24
  /**
25
25
  * Opens the dialog and associates it with the trigger with the given id.
26
- * The trigger, if provided, must be a Dialog.Trigger component with this handle passed as a prop.
26
+ * The trigger, if provided, must be a matching Trigger component with this handle passed as a prop.
27
27
  *
28
28
  * This method should only be called in an event handler or an effect (not during rendering).
29
29
  *
@@ -61,7 +61,7 @@ class DialogHandle {
61
61
  * Indicates whether the dialog is currently open.
62
62
  */
63
63
  get isOpen() {
64
- return this.store.state.open;
64
+ return this.store.select('open');
65
65
  }
66
66
  }
67
67
 
@@ -40,6 +40,8 @@ declare const selectors: {
40
40
  mounted: boolean;
41
41
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
42
42
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
43
+ floatingId: string | undefined;
44
+ triggerCount: number;
43
45
  preventUnmountingOnClose: boolean;
44
46
  payload: unknown;
45
47
  activeTriggerId: string | null;
@@ -57,6 +59,8 @@ declare const selectors: {
57
59
  mounted: boolean;
58
60
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
59
61
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
62
+ floatingId: string | undefined;
63
+ triggerCount: number;
60
64
  preventUnmountingOnClose: boolean;
61
65
  payload: unknown;
62
66
  activeTriggerId: string | null;
@@ -74,6 +78,8 @@ declare const selectors: {
74
78
  mounted: boolean;
75
79
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
76
80
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
81
+ floatingId: string | undefined;
82
+ triggerCount: number;
77
83
  preventUnmountingOnClose: boolean;
78
84
  payload: unknown;
79
85
  activeTriggerId: string | null;
@@ -91,6 +97,8 @@ declare const selectors: {
91
97
  mounted: boolean;
92
98
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
93
99
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
100
+ floatingId: string | undefined;
101
+ triggerCount: number;
94
102
  preventUnmountingOnClose: boolean;
95
103
  payload: unknown;
96
104
  activeTriggerId: string | null;
@@ -102,12 +110,33 @@ declare const selectors: {
102
110
  inactiveTriggerProps: import("../../index.js").HTMLProps;
103
111
  popupProps: import("../../index.js").HTMLProps;
104
112
  }) => import("../../floating-ui-react/components/FloatingRootStore.js").FloatingRootStore;
113
+ triggerCount: (state: {
114
+ open: boolean;
115
+ readonly openProp: boolean | undefined;
116
+ mounted: boolean;
117
+ transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
118
+ floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
119
+ floatingId: string | undefined;
120
+ triggerCount: number;
121
+ preventUnmountingOnClose: boolean;
122
+ payload: unknown;
123
+ activeTriggerId: string | null;
124
+ activeTriggerElement: Element | null;
125
+ readonly triggerIdProp: string | null | undefined;
126
+ popupElement: HTMLElement | null;
127
+ positionerElement: HTMLElement | null;
128
+ activeTriggerProps: import("../../index.js").HTMLProps;
129
+ inactiveTriggerProps: import("../../index.js").HTMLProps;
130
+ popupProps: import("../../index.js").HTMLProps;
131
+ }) => number;
105
132
  preventUnmountingOnClose: (state: {
106
133
  open: boolean;
107
134
  readonly openProp: boolean | undefined;
108
135
  mounted: boolean;
109
136
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
110
137
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
138
+ floatingId: string | undefined;
139
+ triggerCount: number;
111
140
  preventUnmountingOnClose: boolean;
112
141
  payload: unknown;
113
142
  activeTriggerId: string | null;
@@ -125,6 +154,8 @@ declare const selectors: {
125
154
  mounted: boolean;
126
155
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
127
156
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
157
+ floatingId: string | undefined;
158
+ triggerCount: number;
128
159
  preventUnmountingOnClose: boolean;
129
160
  payload: unknown;
130
161
  activeTriggerId: string | null;
@@ -142,6 +173,8 @@ declare const selectors: {
142
173
  mounted: boolean;
143
174
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
144
175
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
176
+ floatingId: string | undefined;
177
+ triggerCount: number;
145
178
  preventUnmountingOnClose: boolean;
146
179
  payload: unknown;
147
180
  activeTriggerId: string | null;
@@ -159,6 +192,8 @@ declare const selectors: {
159
192
  mounted: boolean;
160
193
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
161
194
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
195
+ floatingId: string | undefined;
196
+ triggerCount: number;
162
197
  preventUnmountingOnClose: boolean;
163
198
  payload: unknown;
164
199
  activeTriggerId: string | null;
@@ -170,12 +205,33 @@ declare const selectors: {
170
205
  inactiveTriggerProps: import("../../index.js").HTMLProps;
171
206
  popupProps: import("../../index.js").HTMLProps;
172
207
  }) => Element | null;
208
+ popupId: (state: {
209
+ open: boolean;
210
+ readonly openProp: boolean | undefined;
211
+ mounted: boolean;
212
+ transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
213
+ floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
214
+ floatingId: string | undefined;
215
+ triggerCount: number;
216
+ preventUnmountingOnClose: boolean;
217
+ payload: unknown;
218
+ activeTriggerId: string | null;
219
+ activeTriggerElement: Element | null;
220
+ readonly triggerIdProp: string | null | undefined;
221
+ popupElement: HTMLElement | null;
222
+ positionerElement: HTMLElement | null;
223
+ activeTriggerProps: import("../../index.js").HTMLProps;
224
+ inactiveTriggerProps: import("../../index.js").HTMLProps;
225
+ popupProps: import("../../index.js").HTMLProps;
226
+ }) => string | undefined;
173
227
  isTriggerActive: (state: {
174
228
  open: boolean;
175
229
  readonly openProp: boolean | undefined;
176
230
  mounted: boolean;
177
231
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
178
232
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
233
+ floatingId: string | undefined;
234
+ triggerCount: number;
179
235
  preventUnmountingOnClose: boolean;
180
236
  payload: unknown;
181
237
  activeTriggerId: string | null;
@@ -193,6 +249,8 @@ declare const selectors: {
193
249
  mounted: boolean;
194
250
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
195
251
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
252
+ floatingId: string | undefined;
253
+ triggerCount: number;
196
254
  preventUnmountingOnClose: boolean;
197
255
  payload: unknown;
198
256
  activeTriggerId: string | null;
@@ -210,6 +268,8 @@ declare const selectors: {
210
268
  mounted: boolean;
211
269
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
212
270
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
271
+ floatingId: string | undefined;
272
+ triggerCount: number;
213
273
  preventUnmountingOnClose: boolean;
214
274
  payload: unknown;
215
275
  activeTriggerId: string | null;
@@ -227,6 +287,8 @@ declare const selectors: {
227
287
  mounted: boolean;
228
288
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
229
289
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
290
+ floatingId: string | undefined;
291
+ triggerCount: number;
230
292
  preventUnmountingOnClose: boolean;
231
293
  payload: unknown;
232
294
  activeTriggerId: string | null;
@@ -238,12 +300,33 @@ declare const selectors: {
238
300
  inactiveTriggerProps: import("../../index.js").HTMLProps;
239
301
  popupProps: import("../../index.js").HTMLProps;
240
302
  }, isActive: boolean) => import("../../index.js").HTMLProps;
303
+ triggerPopupId: (state: {
304
+ open: boolean;
305
+ readonly openProp: boolean | undefined;
306
+ mounted: boolean;
307
+ transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
308
+ floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
309
+ floatingId: string | undefined;
310
+ triggerCount: number;
311
+ preventUnmountingOnClose: boolean;
312
+ payload: unknown;
313
+ activeTriggerId: string | null;
314
+ activeTriggerElement: Element | null;
315
+ readonly triggerIdProp: string | null | undefined;
316
+ popupElement: HTMLElement | null;
317
+ positionerElement: HTMLElement | null;
318
+ activeTriggerProps: import("../../index.js").HTMLProps;
319
+ inactiveTriggerProps: import("../../index.js").HTMLProps;
320
+ popupProps: import("../../index.js").HTMLProps;
321
+ }, triggerId: string | undefined) => string | undefined;
241
322
  popupProps: (state: {
242
323
  open: boolean;
243
324
  readonly openProp: boolean | undefined;
244
325
  mounted: boolean;
245
326
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
246
327
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
328
+ floatingId: string | undefined;
329
+ triggerCount: number;
247
330
  preventUnmountingOnClose: boolean;
248
331
  payload: unknown;
249
332
  activeTriggerId: string | null;
@@ -261,6 +344,8 @@ declare const selectors: {
261
344
  mounted: boolean;
262
345
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
263
346
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
347
+ floatingId: string | undefined;
348
+ triggerCount: number;
264
349
  preventUnmountingOnClose: boolean;
265
350
  payload: unknown;
266
351
  activeTriggerId: string | null;
@@ -278,6 +363,8 @@ declare const selectors: {
278
363
  mounted: boolean;
279
364
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
280
365
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
366
+ floatingId: string | undefined;
367
+ triggerCount: number;
281
368
  preventUnmountingOnClose: boolean;
282
369
  payload: unknown;
283
370
  activeTriggerId: string | null;
@@ -291,7 +378,7 @@ declare const selectors: {
291
378
  }) => HTMLElement | null;
292
379
  };
293
380
  export declare class DialogStore<Payload> extends ReactStore<Readonly<State<Payload>>, Context, typeof selectors> {
294
- constructor(initialState?: Partial<State<Payload>>);
381
+ constructor(initialState?: Partial<State<Payload>>, floatingId?: string | undefined, nested?: boolean);
295
382
  setOpen: (nextOpen: boolean, eventDetails: Omit<DialogRoot.ChangeEventDetails, "preventUnmountOnClose">) => void;
296
383
  static useStore<Payload>(externalStore: DialogStore<Payload> | undefined, initialState?: Partial<State<Payload>>): DialogStore<Payload>;
297
384
  }
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.DialogStore = void 0;
8
8
  var React = _interopRequireWildcard(require("react"));
9
9
  var _store = require("@base-ui/utils/store");
10
- var _useRefWithInit = require("@base-ui/utils/useRefWithInit");
11
10
  var _popups = require("../../utils/popups");
12
11
  const selectors = {
13
12
  ..._popups.popupStoreSelectors,
@@ -23,15 +22,18 @@ const selectors = {
23
22
  role: (0, _store.createSelector)(state => state.role)
24
23
  };
25
24
  class DialogStore extends _store.ReactStore {
26
- constructor(initialState) {
27
- super(createInitialState(initialState), {
25
+ constructor(initialState, floatingId, nested = false) {
26
+ const triggerElements = new _popups.PopupTriggerMap();
27
+ const state = createInitialState(initialState);
28
+ state.floatingRootContext = (0, _popups.createPopupFloatingRootContext)(triggerElements, floatingId, nested);
29
+ super(state, {
28
30
  popupRef: /*#__PURE__*/React.createRef(),
29
31
  backdropRef: /*#__PURE__*/React.createRef(),
30
32
  internalBackdropRef: /*#__PURE__*/React.createRef(),
31
33
  outsidePressEnabledRef: {
32
34
  current: true
33
35
  },
34
- triggerElements: new _popups.PopupTriggerMap(),
36
+ triggerElements,
35
37
  onOpenChange: undefined,
36
38
  onOpenChangeComplete: undefined
37
39
  }, selectors);
@@ -53,22 +55,15 @@ class DialogStore extends _store.ReactStore {
53
55
  const updatedState = {
54
56
  open: nextOpen
55
57
  };
56
-
57
- // If a popup is closing, the `trigger` may be null.
58
- // We want to keep the previous value so that exit animations are played and focus is returned correctly.
59
- const newTriggerId = eventDetails.trigger?.id ?? null;
60
- if (newTriggerId || nextOpen) {
61
- updatedState.activeTriggerId = newTriggerId;
62
- updatedState.activeTriggerElement = eventDetails.trigger ?? null;
63
- }
58
+ (0, _popups.setOpenTriggerState)(updatedState, nextOpen, eventDetails.trigger);
64
59
  this.update(updatedState);
65
60
  };
66
61
  static useStore(externalStore, initialState) {
67
- // eslint-disable-next-line react-hooks/rules-of-hooks
68
- const internalStore = (0, _useRefWithInit.useRefWithInit)(() => {
69
- return new DialogStore(initialState);
70
- }).current;
71
- return externalStore ?? internalStore;
62
+ /* eslint-disable react-hooks/rules-of-hooks */
63
+ const store = (0, _popups.usePopupStore)(externalStore, (floatingId, nested) => new DialogStore(initialState, floatingId, nested), true).store;
64
+ /* eslint-enable react-hooks/rules-of-hooks */
65
+
66
+ return store;
72
67
  }
73
68
  }
74
69
  exports.DialogStore = DialogStore;
@@ -23,7 +23,7 @@ export interface DialogTriggerProps<Payload = unknown> extends NativeButtonProps
23
23
  payload?: Payload | undefined;
24
24
  /**
25
25
  * ID of the trigger. In addition to being forwarded to the rendered element,
26
- * it is also used to specify the active trigger for the dialogs in controlled mode (with the DialogRoot `triggerId` prop).
26
+ * it is also used to specify the active trigger for the dialog in controlled mode (with the DialogRoot `triggerId` prop).
27
27
  */
28
28
  id?: string | undefined;
29
29
  }
@@ -17,6 +17,7 @@ var _constants = require("../../internals/constants");
17
17
  var _popups = require("../../utils/popups");
18
18
  var _useBaseUiId = require("../../internals/useBaseUiId");
19
19
  var _floatingUiReact = require("../../floating-ui-react");
20
+ var _useOpenInteractionType = require("../../utils/useOpenInteractionType");
20
21
  /**
21
22
  * A button that opens the dialog.
22
23
  * Renders a `<button>` element.
@@ -27,12 +28,12 @@ const DialogTrigger = exports.DialogTrigger = /*#__PURE__*/React.forwardRef(func
27
28
  const {
28
29
  render,
29
30
  className,
31
+ style,
30
32
  disabled = false,
31
33
  nativeButton = true,
32
34
  id: idProp,
33
35
  payload,
34
36
  handle,
35
- style,
36
37
  ...elementProps
37
38
  } = componentProps;
38
39
  const dialogRootContext = (0, _DialogRootContext.useDialogRootContext)(true);
@@ -43,6 +44,7 @@ const DialogTrigger = exports.DialogTrigger = /*#__PURE__*/React.forwardRef(func
43
44
  const thisTriggerId = (0, _useBaseUiId.useBaseUiId)(idProp);
44
45
  const floatingContext = store.useState('floatingRootContext');
45
46
  const isOpenedByThisTrigger = store.useState('isOpenedByTrigger', thisTriggerId);
47
+ const popupId = store.useState('triggerPopupId', thisTriggerId);
46
48
  const triggerElementRef = React.useRef(null);
47
49
  const {
48
50
  registerTrigger,
@@ -60,7 +62,9 @@ const DialogTrigger = exports.DialogTrigger = /*#__PURE__*/React.forwardRef(func
60
62
  const click = (0, _floatingUiReact.useClick)(floatingContext, {
61
63
  enabled: floatingContext != null
62
64
  });
63
- const localInteractionProps = (0, _floatingUiReact.useInteractions)([click]);
65
+ const interactionTypeProps = (0, _useOpenInteractionType.useOpenMethodTriggerProps)(() => store.select('open'), interactionType => {
66
+ store.set('openMethod', interactionType);
67
+ });
64
68
  const state = {
65
69
  disabled,
66
70
  open: isOpenedByThisTrigger
@@ -69,9 +73,12 @@ const DialogTrigger = exports.DialogTrigger = /*#__PURE__*/React.forwardRef(func
69
73
  return (0, _useRenderElement.useRenderElement)('button', componentProps, {
70
74
  state,
71
75
  ref: [buttonRef, forwardedRef, registerTrigger, triggerElementRef],
72
- props: [localInteractionProps.getReferenceProps(), rootTriggerProps, {
76
+ props: [click.reference, rootTriggerProps, interactionTypeProps, {
73
77
  [_constants.CLICK_TRIGGER_IDENTIFIER]: '',
74
- id: thisTriggerId
78
+ id: thisTriggerId,
79
+ 'aria-haspopup': 'dialog',
80
+ 'aria-expanded': isOpenedByThisTrigger,
81
+ 'aria-controls': popupId
75
82
  }, elementProps, getButtonProps],
76
83
  stateAttributesMapping: _popupStateMapping.triggerOpenStateMapping
77
84
  });
@@ -36,10 +36,10 @@ const stateAttributesMapping = {
36
36
  */
37
37
  const DialogViewport = exports.DialogViewport = /*#__PURE__*/React.forwardRef(function DialogViewport(componentProps, forwardedRef) {
38
38
  const {
39
- className,
40
39
  render,
41
- children,
40
+ className,
42
41
  style,
42
+ children,
43
43
  ...elementProps
44
44
  } = componentProps;
45
45
  const keepMounted = (0, _DialogPortalContext.useDialogPortalContext)();
@@ -51,6 +51,7 @@ const DialogViewport = exports.DialogViewport = /*#__PURE__*/React.forwardRef(fu
51
51
  const transitionStatus = store.useState('transitionStatus');
52
52
  const nestedOpenDialogCount = store.useState('nestedOpenDialogCount');
53
53
  const mounted = store.useState('mounted');
54
+ const setViewportElement = store.useStateSetter('viewportElement');
54
55
  const nestedDialogOpen = nestedOpenDialogCount > 0;
55
56
  const state = {
56
57
  open,
@@ -62,7 +63,7 @@ const DialogViewport = exports.DialogViewport = /*#__PURE__*/React.forwardRef(fu
62
63
  return (0, _useRenderElement.useRenderElement)('div', componentProps, {
63
64
  enabled: shouldRender,
64
65
  state,
65
- ref: [forwardedRef, store.useStateSetter('viewportElement')],
66
+ ref: [forwardedRef, setViewportElement],
66
67
  stateAttributesMapping,
67
68
  props: [{
68
69
  role: 'presentation',
@@ -26,6 +26,7 @@ var _composite = require("../../internals/composite/composite");
26
26
  var _DrawerRootContext = require("../root/DrawerRootContext");
27
27
  var _useDrawerSnapPoints = require("../root/useDrawerSnapPoints");
28
28
  var _DrawerViewportContext = require("../viewport/DrawerViewportContext");
29
+ var _popups = require("../../utils/popups");
29
30
  var _jsxRuntime = require("react/jsx-runtime");
30
31
  // Module-level flag to ensure we only register the CSS properties once,
31
32
  // regardless of how many Drawer components are mounted.
@@ -34,7 +35,6 @@ let drawerSwipeVarsRegistered = false;
34
35
  /**
35
36
  * Removes inheritance of high-frequency drawer swipe CSS variables, which
36
37
  * reduces style recalculation cost in complex drawers with deep subtrees.
37
- * Child elements that need these values can still opt-in by using `inherit`.
38
38
  * See https://motion.dev/blog/web-animation-performance-tier-list
39
39
  * under the "Improving CSS variable performance" section.
40
40
  */
@@ -122,11 +122,11 @@ const stateAttributesMapping = {
122
122
  */
123
123
  const DrawerPopup = exports.DrawerPopup = /*#__PURE__*/React.forwardRef(function DrawerPopup(componentProps, forwardedRef) {
124
124
  const {
125
+ render,
125
126
  className,
127
+ style,
126
128
  finalFocus,
127
129
  initialFocus,
128
- render,
129
- style,
130
130
  ...elementProps
131
131
  } = componentProps;
132
132
  const {
@@ -155,16 +155,18 @@ const DrawerPopup = exports.DrawerPopup = /*#__PURE__*/React.forwardRef(function
155
155
  const openMethod = store.useState('openMethod');
156
156
  const titleElementId = store.useState('titleElementId');
157
157
  const role = store.useState('role');
158
- const nestedDrawerOpen = nestedOpenDrawerCount > 0;
158
+ const floatingId = floatingRootContext.useState('floatingId');
159
+ const popupId = elementProps.id ?? floatingId;
159
160
  const swipe = (0, _DrawerViewportContext.useDrawerViewportContext)(true);
160
- const swiping = swipe?.swiping ?? false;
161
- const swipeStrength = swipe?.swipeStrength ?? null;
161
+ (0, _DialogPortalContext.useDialogPortalContext)();
162
162
  const {
163
163
  snapPoints,
164
164
  activeSnapPoint,
165
165
  activeSnapPointOffset
166
166
  } = (0, _useDrawerSnapPoints.useDrawerSnapPoints)();
167
- (0, _DialogPortalContext.useDialogPortalContext)();
167
+ const nestedDrawerOpen = nestedOpenDrawerCount > 0;
168
+ const swiping = swipe?.swiping ?? false;
169
+ const swipeStrength = swipe?.swipeStrength ?? null;
168
170
  const [popupHeight, setPopupHeight] = React.useState(0);
169
171
  const popupHeightRef = React.useRef(0);
170
172
  if (process.env.NODE_ENV !== 'production') {
@@ -279,6 +281,7 @@ const DrawerPopup = exports.DrawerPopup = /*#__PURE__*/React.forwardRef(function
279
281
  }
280
282
  });
281
283
  const resolvedInitialFocus = initialFocus === undefined ? store.context.popupRef : initialFocus;
284
+ const setPopupElement = store.useStateSetter('popupElement');
282
285
  const state = {
283
286
  open,
284
287
  nested,
@@ -324,10 +327,11 @@ const DrawerPopup = exports.DrawerPopup = /*#__PURE__*/React.forwardRef(function
324
327
  const element = (0, _useRenderElement.useRenderElement)('div', componentProps, {
325
328
  state,
326
329
  props: [rootPopupProps, {
330
+ id: popupId,
327
331
  'aria-labelledby': titleElementId,
328
332
  'aria-describedby': descriptionElementId,
329
333
  role,
330
- tabIndex: -1,
334
+ ..._popups.FOCUSABLE_POPUP_PROPS,
331
335
  hidden: !mounted,
332
336
  onKeyDown(event) {
333
337
  if (_composite.COMPOSITE_KEYS.has(event.key)) {
@@ -344,7 +348,7 @@ const DrawerPopup = exports.DrawerPopup = /*#__PURE__*/React.forwardRef(function
344
348
  [_DrawerPopupCssVars.DrawerPopupCssVars.swipeStrength]: typeof swipeStrength === 'number' && Number.isFinite(swipeStrength) && swipeStrength > 0 ? `${swipeStrength}` : '1'
345
349
  }
346
350
  }, elementProps],
347
- ref: [forwardedRef, store.context.popupRef, store.useStateSetter('popupElement')],
351
+ ref: [forwardedRef, store.context.popupRef, setPopupElement],
348
352
  stateAttributesMapping
349
353
  });
350
354
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingUiReact.FloatingFocusManager, {
@@ -15,7 +15,6 @@ var _detectBrowser = require("@base-ui/utils/detectBrowser");
15
15
  var _useId = require("@base-ui/utils/useId");
16
16
  var _DrawerRootContext = require("./DrawerRootContext");
17
17
  var _dialog = require("../../dialog");
18
- var _DialogRoot = require("../../dialog/root/DialogRoot");
19
18
  var _createBaseUIEventDetails = require("../../internals/createBaseUIEventDetails");
20
19
  var _reasons = require("../../internals/reasons");
21
20
  var _DialogRootContext = require("../../dialog/root/DialogRootContext");
@@ -46,9 +45,8 @@ function DrawerRoot(props) {
46
45
  snapPoints,
47
46
  snapPoint: snapPointProp,
48
47
  defaultSnapPoint,
49
- onSnapPointChange: onSnapPointChangeProp
48
+ onSnapPointChange
50
49
  } = props;
51
- const onSnapPointChange = (0, _useStableCallback.useStableCallback)(onSnapPointChangeProp);
52
50
  const parentDrawerRootContext = (0, _DrawerRootContext.useDrawerRootContext)(true);
53
51
  const notifyParentSwipeProgressChange = parentDrawerRootContext?.onNestedSwipeProgressChange;
54
52
  const notifyParentFrontmostHeight = parentDrawerRootContext?.onNestedFrontmostHeightChange;
@@ -153,7 +151,7 @@ function DrawerRoot(props) {
153
151
  });
154
152
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DrawerRootContext.DrawerRootContext.Provider, {
155
153
  value: contextValue,
156
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogRoot.IsDrawerContext.Provider, {
154
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogRootContext.IsDrawerContext.Provider, {
157
155
  value: true,
158
156
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_dialog.Dialog.Root, {
159
157
  open: openProp,
@@ -197,10 +195,12 @@ function createNestedSwipeProgressStore() {
197
195
  function DrawerProviderReporter() {
198
196
  const drawerId = (0, _useId.useId)();
199
197
  const providerContext = (0, _DrawerProviderContext.useDrawerProviderContext)(true);
200
- const dialogRootContext = (0, _DialogRootContext.useDialogRootContext)(false);
201
- const open = dialogRootContext.store.useState('open');
202
- const nestedOpenDialogCount = dialogRootContext.store.useState('nestedOpenDialogCount');
203
- const popupElement = dialogRootContext.store.useState('popupElement');
198
+ const {
199
+ store
200
+ } = (0, _DialogRootContext.useDialogRootContext)(false);
201
+ const open = store.useState('open');
202
+ const nestedOpenDialogCount = store.useState('nestedOpenDialogCount');
203
+ const popupElement = store.useState('popupElement');
204
204
  const isTopmost = nestedOpenDialogCount === 0;
205
205
  React.useEffect(() => {
206
206
  if (!providerContext || drawerId == null) {
@@ -228,10 +228,10 @@ function DrawerProviderReporter() {
228
228
  return undefined;
229
229
  }
230
230
  function handleCloseWatcher(event) {
231
- if (!dialogRootContext.store.select('open')) {
231
+ if (!store.select('open')) {
232
232
  return;
233
233
  }
234
- dialogRootContext.store.setOpen(false, (0, _createBaseUIEventDetails.createChangeEventDetails)(_reasons.REASONS.closeWatcher, event));
234
+ store.setOpen(false, (0, _createBaseUIEventDetails.createChangeEventDetails)(_reasons.REASONS.closeWatcher, event));
235
235
  }
236
236
  const closeWatcher = new CloseWatcherCtor();
237
237
  const unsubscribe = (0, _addEventListener.addEventListener)(closeWatcher, 'close', handleCloseWatcher);
@@ -239,6 +239,6 @@ function DrawerProviderReporter() {
239
239
  unsubscribe();
240
240
  closeWatcher.destroy();
241
241
  };
242
- }, [dialogRootContext.store, isTopmost, open, popupElement]);
242
+ }, [store, isTopmost, open, popupElement]);
243
243
  return null;
244
244
  }
@@ -10,7 +10,7 @@ export interface DrawerNestedSwipeProgressStore {
10
10
  export interface DrawerRootContext {
11
11
  swipeDirection: DrawerSwipeDirection;
12
12
  /**
13
- * Whether snap points can be skipped based on swipe velocity.
13
+ * Whether to disable velocity-based snap skipping.
14
14
  */
15
15
  snapToSequentialPoints: boolean;
16
16
  /**