@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,4 +1,6 @@
1
1
  "use strict";
2
+ /* eslint-disable react-hooks/rules-of-hooks */
3
+ 'use client';
2
4
 
3
5
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
6
  Object.defineProperty(exports, "__esModule", {
@@ -9,13 +11,9 @@ var React = _interopRequireWildcard(require("react"));
9
11
  var ReactDOM = _interopRequireWildcard(require("react-dom"));
10
12
  var _store = require("@base-ui/utils/store");
11
13
  var _useTimeout = require("@base-ui/utils/useTimeout");
12
- var _useRefWithInit = require("@base-ui/utils/useRefWithInit");
13
- var _useOnMount = require("@base-ui/utils/useOnMount");
14
14
  var _reasons = require("../../internals/reasons");
15
15
  var _popups = require("../../utils/popups");
16
16
  var _constants = require("../../internals/constants");
17
- /* eslint-disable react-hooks/rules-of-hooks */
18
-
19
17
  function createInitialState() {
20
18
  return {
21
19
  ...(0, _popups.createInitialPopupStoreState)(),
@@ -50,14 +48,16 @@ const selectors = {
50
48
  hasViewport: (0, _store.createSelector)(state => state.hasViewport)
51
49
  };
52
50
  class PopoverStore extends _store.ReactStore {
53
- constructor(initialState) {
51
+ constructor(initialState, floatingId, nested = false) {
54
52
  const initial = {
55
53
  ...createInitialState(),
56
54
  ...initialState
57
55
  };
56
+ const triggerElements = new _popups.PopupTriggerMap();
58
57
  if (initial.open && initialState?.mounted === undefined) {
59
58
  initial.mounted = true;
60
59
  }
60
+ initial.floatingRootContext = (0, _popups.createPopupFloatingRootContext)(triggerElements, floatingId, nested);
61
61
  super(initial, {
62
62
  popupRef: /*#__PURE__*/React.createRef(),
63
63
  backdropRef: /*#__PURE__*/React.createRef(),
@@ -67,7 +67,7 @@ class PopoverStore extends _store.ReactStore {
67
67
  triggerFocusTargetRef: /*#__PURE__*/React.createRef(),
68
68
  beforeContentFocusGuardRef: /*#__PURE__*/React.createRef(),
69
69
  stickIfOpenTimeout: new _useTimeout.Timeout(),
70
- triggerElements: new _popups.PopupTriggerMap()
70
+ triggerElements
71
71
  }, selectors);
72
72
  }
73
73
  setOpen = (nextOpen, eventDetails) => {
@@ -77,6 +77,10 @@ class PopoverStore extends _store.ReactStore {
77
77
  eventDetails.preventUnmountOnClose = () => {
78
78
  this.set('preventUnmountingOnClose', true);
79
79
  };
80
+ const activeTriggerId = this.select('activeTriggerId');
81
+ if (!nextOpen && eventDetails.reason === _reasons.REASONS.closePress && eventDetails.trigger == null && activeTriggerId != null) {
82
+ eventDetails.trigger = this.context.triggerElements.getById(activeTriggerId) ?? this.select('activeTriggerElement') ?? undefined;
83
+ }
80
84
  this.context.onOpenChange?.(nextOpen, eventDetails);
81
85
  if (eventDetails.isCanceled) {
82
86
  return;
@@ -87,14 +91,7 @@ class PopoverStore extends _store.ReactStore {
87
91
  open: nextOpen,
88
92
  openChangeReason: eventDetails.reason
89
93
  };
90
-
91
- // If a popup is closing, the `trigger` may be null.
92
- // We want to keep the previous value so that exit animations are played and focus is returned correctly.
93
- const newTriggerId = eventDetails.trigger?.id ?? null;
94
- if (newTriggerId || nextOpen) {
95
- updatedState.activeTriggerId = newTriggerId;
96
- updatedState.activeTriggerElement = eventDetails.trigger ?? null;
97
- }
94
+ (0, _popups.setOpenTriggerState)(updatedState, nextOpen, eventDetails.trigger);
98
95
  this.update(updatedState);
99
96
  };
100
97
  if (isHover) {
@@ -117,11 +114,11 @@ class PopoverStore extends _store.ReactStore {
117
114
  }
118
115
  };
119
116
  static useStore(externalStore, initialState) {
120
- const internalStore = (0, _useRefWithInit.useRefWithInit)(() => {
121
- return new PopoverStore(initialState);
122
- }).current;
123
- const store = externalStore ?? internalStore;
124
- (0, _useOnMount.useOnMount)(internalStore.disposeEffect);
117
+ const {
118
+ store,
119
+ internalStore
120
+ } = (0, _popups.usePopupStore)(externalStore, (floatingId, nested) => new PopoverStore(initialState, floatingId, nested));
121
+ React.useEffect(() => internalStore?.disposeEffect(), [internalStore]);
125
122
  return store;
126
123
  }
127
124
  disposeEffect = () => {
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.PopoverTitle = void 0;
9
9
  var React = _interopRequireWildcard(require("react"));
10
- var _useIsoLayoutEffect = require("@base-ui/utils/useIsoLayoutEffect");
11
10
  var _PopoverRootContext = require("../root/PopoverRootContext");
12
11
  var _useRenderElement = require("../../internals/useRenderElement");
13
12
  var _useBaseUiId = require("../../internals/useBaseUiId");
@@ -28,12 +27,7 @@ const PopoverTitle = exports.PopoverTitle = /*#__PURE__*/React.forwardRef(functi
28
27
  store
29
28
  } = (0, _PopoverRootContext.usePopoverRootContext)();
30
29
  const id = (0, _useBaseUiId.useBaseUiId)(elementProps.id);
31
- (0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
32
- store.set('titleElementId', id);
33
- return () => {
34
- store.set('titleElementId', undefined);
35
- };
36
- }, [store, id]);
30
+ store.useSyncedValueWithCleanup('titleElementId', id);
37
31
  const element = (0, _useRenderElement.useRenderElement)('h2', componentProps, {
38
32
  ref: forwardedRef,
39
33
  props: [{
@@ -21,6 +21,7 @@ var _FocusGuard = require("../../utils/FocusGuard");
21
21
  var _reasons = require("../../internals/reasons");
22
22
  var _popups = require("../../utils/popups");
23
23
  var _useTriggerFocusGuards = require("../../utils/popups/useTriggerFocusGuards");
24
+ var _useOpenInteractionType = require("../../utils/useOpenInteractionType");
24
25
  var _jsxRuntime = require("react/jsx-runtime");
25
26
  /**
26
27
  * A button that opens the popover.
@@ -32,6 +33,7 @@ const PopoverTrigger = exports.PopoverTrigger = /*#__PURE__*/React.forwardRef(fu
32
33
  const {
33
34
  render,
34
35
  className,
36
+ style,
35
37
  disabled = false,
36
38
  nativeButton = true,
37
39
  handle,
@@ -40,7 +42,6 @@ const PopoverTrigger = exports.PopoverTrigger = /*#__PURE__*/React.forwardRef(fu
40
42
  delay = _constants2.OPEN_DELAY,
41
43
  closeDelay = 0,
42
44
  id: idProp,
43
- style,
44
45
  ...elementProps
45
46
  } = componentProps;
46
47
  const rootContext = (0, _PopoverRootContext.usePopoverRootContext)(true);
@@ -52,6 +53,7 @@ const PopoverTrigger = exports.PopoverTrigger = /*#__PURE__*/React.forwardRef(fu
52
53
  const isTriggerActive = store.useState('isTriggerActive', thisTriggerId);
53
54
  const floatingContext = store.useState('floatingRootContext');
54
55
  const isOpenedByThisTrigger = store.useState('isOpenedByTrigger', thisTriggerId);
56
+ const popupId = store.useState('triggerPopupId', thisTriggerId);
55
57
  const triggerElementRef = React.useRef(null);
56
58
  const {
57
59
  registerTrigger,
@@ -83,12 +85,10 @@ const PopoverTrigger = exports.PopoverTrigger = /*#__PURE__*/React.forwardRef(fu
83
85
  enabled: floatingContext != null,
84
86
  stickIfOpen
85
87
  });
86
- const localProps = (0, _floatingUiReact.useInteractions)([click]);
88
+ const interactionTypeProps = (0, _useOpenInteractionType.useOpenMethodTriggerProps)(() => store.select('open'), interactionType => {
89
+ store.set('openMethod', interactionType);
90
+ });
87
91
  const rootTriggerProps = store.useState('triggerProps', isMountedByThisTrigger);
88
- const state = {
89
- disabled,
90
- open: isOpenedByThisTrigger
91
- };
92
92
  const {
93
93
  getButtonProps,
94
94
  buttonRef
@@ -96,33 +96,40 @@ const PopoverTrigger = exports.PopoverTrigger = /*#__PURE__*/React.forwardRef(fu
96
96
  disabled,
97
97
  native: nativeButton
98
98
  });
99
- const stateAttributesMapping = React.useMemo(() => ({
99
+ const stateAttributesMapping = {
100
100
  open(value) {
101
101
  if (value && openReason === _reasons.REASONS.triggerPress) {
102
102
  return _popupStateMapping.pressableTriggerOpenStateMapping.open(value);
103
103
  }
104
104
  return _popupStateMapping.triggerOpenStateMapping.open(value);
105
105
  }
106
- }), [openReason]);
106
+ };
107
+ const {
108
+ preFocusGuardRef,
109
+ handlePreFocusGuardFocus,
110
+ handleFocusTargetFocus
111
+ } = (0, _useTriggerFocusGuards.useTriggerFocusGuards)(store, triggerElementRef);
112
+ const state = {
113
+ disabled,
114
+ open: isOpenedByThisTrigger
115
+ };
107
116
  const element = (0, _useRenderElement.useRenderElement)('button', componentProps, {
108
117
  state,
109
118
  ref: [buttonRef, forwardedRef, registerTrigger, triggerElementRef],
110
- props: [localProps.getReferenceProps(), hoverProps, rootTriggerProps, {
119
+ props: [click.reference, hoverProps, rootTriggerProps, interactionTypeProps, {
111
120
  [_constants.CLICK_TRIGGER_IDENTIFIER]: '',
112
- id: thisTriggerId
121
+ id: thisTriggerId,
122
+ 'aria-haspopup': 'dialog',
123
+ 'aria-expanded': isOpenedByThisTrigger,
124
+ 'aria-controls': popupId
113
125
  }, elementProps, getButtonProps],
114
126
  stateAttributesMapping
115
127
  });
116
- const {
117
- preFocusGuardRef,
118
- handlePreFocusGuardFocus,
119
- handleFocusTargetFocus
120
- } = (0, _useTriggerFocusGuards.useTriggerFocusGuards)(store, triggerElementRef);
121
128
 
122
129
  // A fragment with key is required to ensure that the `element` is mounted to the same DOM node
123
130
  // regardless of whether the focus guards are rendered or not.
124
131
 
125
- if (isTriggerActive && !focusManagerModal) {
132
+ if (isMountedByThisTrigger && !focusManagerModal) {
126
133
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
127
134
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_FocusGuard.FocusGuard, {
128
135
  ref: preFocusGuardRef,
@@ -2,8 +2,8 @@ import * as React from 'react';
2
2
  import { BaseUIComponentProps } from "../../internals/types.js";
3
3
  /**
4
4
  * A viewport for displaying content transitions.
5
- * This component is only required if one popup can be opened by multiple triggers, its content change based on the trigger
6
- * and switching between them is animated.
5
+ * This component is only required if one popup can be opened by multiple triggers, its content
6
+ * changes based on the trigger, and switching between them is animated.
7
7
  * Renders a `<div>` element.
8
8
  *
9
9
  * Documentation: [Base UI Popover](https://base-ui.com/react/components/popover)
@@ -21,7 +21,7 @@ export interface PopoverViewportState {
21
21
  /**
22
22
  * Present if animations should be instant.
23
23
  */
24
- instant: 'dismiss' | 'click' | undefined;
24
+ instant: 'dismiss' | 'click' | 'focus' | 'trigger-change' | undefined;
25
25
  }
26
26
  export declare namespace PopoverViewport {
27
27
  interface Props extends BaseUIComponentProps<'div', PopoverViewportState> {
@@ -20,8 +20,8 @@ const stateAttributesMapping = {
20
20
 
21
21
  /**
22
22
  * A viewport for displaying content transitions.
23
- * This component is only required if one popup can be opened by multiple triggers, its content change based on the trigger
24
- * and switching between them is animated.
23
+ * This component is only required if one popup can be opened by multiple triggers, its content
24
+ * changes based on the trigger, and switching between them is animated.
25
25
  * Renders a `<div>` element.
26
26
  *
27
27
  * Documentation: [Base UI Popover](https://base-ui.com/react/components/popover)
@@ -20,7 +20,7 @@ export declare enum PopoverViewportDataAttributes {
20
20
  transitioning = "data-transitioning",
21
21
  /**
22
22
  * Present if animations should be instant.
23
- * @type {'dismiss' | 'click'}
23
+ * @type {'click' | 'dismiss' | 'focus' | 'trigger-change'}
24
24
  */
25
25
  instant = "data-instant",
26
26
  }
@@ -26,7 +26,7 @@ let PopoverViewportDataAttributes = exports.PopoverViewportDataAttributes = /*#_
26
26
  PopoverViewportDataAttributes["transitioning"] = "data-transitioning";
27
27
  /**
28
28
  * Present if animations should be instant.
29
- * @type {'dismiss' | 'click'}
29
+ * @type {'click' | 'dismiss' | 'focus' | 'trigger-change'}
30
30
  */
31
31
  PopoverViewportDataAttributes["instant"] = "data-instant";
32
32
  return PopoverViewportDataAttributes;
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.PreviewCardPositioner = void 0;
9
9
  var React = _interopRequireWildcard(require("react"));
10
+ var _useIsoLayoutEffect = require("@base-ui/utils/useIsoLayoutEffect");
10
11
  var _PreviewCardContext = require("../root/PreviewCardContext");
11
12
  var _PreviewCardPositionerContext = require("./PreviewCardPositionerContext");
12
13
  var _floatingUiReact = require("../../floating-ui-react");
@@ -15,6 +16,7 @@ var _PreviewCardPortalContext = require("../portal/PreviewCardPortalContext");
15
16
  var _constants = require("../../internals/constants");
16
17
  var _adaptiveOriginMiddleware = require("../../utils/adaptiveOriginMiddleware");
17
18
  var _usePositioner = require("../../utils/usePositioner");
19
+ var _popups = require("../../utils/popups");
18
20
  var _jsxRuntime = require("react/jsx-runtime");
19
21
  /**
20
22
  * Positions the popup against the trigger.
@@ -50,6 +52,7 @@ const PreviewCardPositioner = exports.PreviewCardPositioner = /*#__PURE__*/React
50
52
  const instantType = store.useState('instantType');
51
53
  const transitionStatus = store.useState('transitionStatus');
52
54
  const hasViewport = store.useState('hasViewport');
55
+ const inlineRectCoordsRef = store.context.inlineRectCoordsRef;
53
56
  const positioning = (0, _useAnchorPositioning.useAnchorPositioning)({
54
57
  anchor,
55
58
  floatingRootContext,
@@ -67,8 +70,15 @@ const PreviewCardPositioner = exports.PreviewCardPositioner = /*#__PURE__*/React
67
70
  keepMounted,
68
71
  nodeId,
69
72
  collisionAvoidance,
70
- adaptiveOrigin: hasViewport ? _adaptiveOriginMiddleware.adaptiveOrigin : undefined
73
+ adaptiveOrigin: hasViewport ? _adaptiveOriginMiddleware.adaptiveOrigin : undefined,
74
+ inline: (0, _popups.createInlineMiddleware)(inlineRectCoordsRef)
71
75
  });
76
+ const updatePosition = positioning.update;
77
+ (0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
78
+ if (open && mounted) {
79
+ updatePosition();
80
+ }
81
+ }, [open, mounted, updatePosition]);
72
82
  const state = {
73
83
  open,
74
84
  side: positioning.side,
@@ -9,7 +9,7 @@ import { PreviewCardHandle } from "../store/PreviewCardHandle.js";
9
9
  *
10
10
  * Documentation: [Base UI Preview Card](https://base-ui.com/react/components/preview-card)
11
11
  */
12
- export declare function PreviewCardRoot<Payload>(props: PreviewCardRoot.Props<Payload>): import("react/jsx-runtime").JSX.Element;
12
+ export declare const PreviewCardRoot: <Payload>(props: PreviewCardRoot.Props<Payload>) => import("react/jsx-runtime").JSX.Element;
13
13
  export interface PreviewCardRootState {}
14
14
  export interface PreviewCardRootProps<Payload = unknown> {
15
15
  /**
@@ -5,8 +5,10 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.PreviewCardRoot = PreviewCardRoot;
8
+ exports.PreviewCardRoot = void 0;
9
9
  var React = _interopRequireWildcard(require("react"));
10
+ var _fastHooks = require("@base-ui/utils/fastHooks");
11
+ var _empty = require("@base-ui/utils/empty");
10
12
  var _useIsoLayoutEffect = require("@base-ui/utils/useIsoLayoutEffect");
11
13
  var _useOnFirstRender = require("@base-ui/utils/useOnFirstRender");
12
14
  var _floatingUiReact = require("../../floating-ui-react");
@@ -15,6 +17,7 @@ var _createBaseUIEventDetails = require("../../internals/createBaseUIEventDetail
15
17
  var _reasons = require("../../internals/reasons");
16
18
  var _PreviewCardStore = require("../store/PreviewCardStore");
17
19
  var _popups = require("../../utils/popups");
20
+ var _mergeProps = require("../../merge-props");
18
21
  var _jsxRuntime = require("react/jsx-runtime");
19
22
  function PreviewCardRootComponent(props) {
20
23
  const {
@@ -49,13 +52,15 @@ function PreviewCardRootComponent(props) {
49
52
  store.useContextCallback('onOpenChange', onOpenChange);
50
53
  store.useContextCallback('onOpenChangeComplete', onOpenChangeComplete);
51
54
  const open = store.useState('open');
52
- const floatingRootContext = store.select('floatingRootContext');
53
55
  const activeTriggerId = store.useState('activeTriggerId');
56
+ const mounted = store.useState('mounted');
54
57
  const payload = store.useState('payload');
55
58
  (0, _popups.useImplicitActiveTrigger)(store);
56
59
  const {
57
60
  forceUnmount
58
- } = (0, _popups.useOpenStateTransitions)(open, store);
61
+ } = (0, _popups.useOpenStateTransitions)(open, store, () => {
62
+ store.context.inlineRectCoordsRef.current = undefined;
63
+ });
59
64
  (0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
60
65
  if (open) {
61
66
  if (activeTriggerId == null) {
@@ -70,26 +75,30 @@ function PreviewCardRootComponent(props) {
70
75
  unmount: forceUnmount,
71
76
  close: handleImperativeClose
72
77
  }), [forceUnmount, handleImperativeClose]);
78
+ const shouldRenderInteractions = open || mounted;
79
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PreviewCardContext.PreviewCardRootContext.Provider, {
80
+ value: store,
81
+ children: [shouldRenderInteractions && /*#__PURE__*/(0, _jsxRuntime.jsx)(PreviewCardInteractions, {
82
+ store: store
83
+ }), typeof children === 'function' ? children({
84
+ payload
85
+ }) : children]
86
+ });
87
+ }
88
+ function PreviewCardInteractions({
89
+ store
90
+ }) {
91
+ const floatingRootContext = store.useState('floatingRootContext');
73
92
  const dismiss = (0, _floatingUiReact.useDismiss)(floatingRootContext);
74
- const {
75
- getReferenceProps,
76
- getTriggerProps,
77
- getFloatingProps
78
- } = (0, _floatingUiReact.useInteractions)([dismiss]);
79
- const activeTriggerProps = React.useMemo(() => getReferenceProps(), [getReferenceProps]);
80
- const inactiveTriggerProps = React.useMemo(() => getTriggerProps(), [getTriggerProps]);
81
- const popupProps = React.useMemo(() => getFloatingProps(), [getFloatingProps]);
82
- store.useSyncedValues({
93
+ const activeTriggerProps = dismiss.reference ?? _empty.EMPTY_OBJECT;
94
+ const inactiveTriggerProps = dismiss.trigger ?? _empty.EMPTY_OBJECT;
95
+ const popupProps = React.useMemo(() => (0, _mergeProps.mergeProps)(_popups.FOCUSABLE_POPUP_PROPS, dismiss.floating), [dismiss.floating]);
96
+ (0, _popups.usePopupInteractionProps)(store, {
83
97
  activeTriggerProps,
84
98
  inactiveTriggerProps,
85
99
  popupProps
86
100
  });
87
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_PreviewCardContext.PreviewCardRootContext.Provider, {
88
- value: store,
89
- children: typeof children === 'function' ? children({
90
- payload
91
- }) : children
92
- });
101
+ return null;
93
102
  }
94
103
 
95
104
  /**
@@ -98,7 +107,7 @@ function PreviewCardRootComponent(props) {
98
107
  *
99
108
  * Documentation: [Base UI Preview Card](https://base-ui.com/react/components/preview-card)
100
109
  */
101
- function PreviewCardRoot(props) {
110
+ const PreviewCardRoot = exports.PreviewCardRoot = (0, _fastHooks.fastComponent)(function PreviewCardRoot(props) {
102
111
  if ((0, _PreviewCardContext.usePreviewCardRootContext)(true)) {
103
112
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(PreviewCardRootComponent, {
104
113
  ...props
@@ -109,4 +118,5 @@ function PreviewCardRoot(props) {
109
118
  ...props
110
119
  })
111
120
  });
112
- }
121
+ });
122
+ if (process.env.NODE_ENV !== "production") PreviewCardRoot.displayName = "PreviewCardRoot";
@@ -50,7 +50,7 @@ class PreviewCardHandle {
50
50
  * Indicates whether the preview card is currently open.
51
51
  */
52
52
  get isOpen() {
53
- return this.store.state.open;
53
+ return this.store.select('open');
54
54
  }
55
55
  }
56
56
 
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { ReactStore } from '@base-ui/utils/store';
3
- import { PopupStoreContext, PopupStoreState } from "../../utils/popups/index.js";
3
+ import { InlineRectCoords, PopupStoreContext, PopupStoreState } from "../../utils/popups/index.js";
4
4
  import { type PreviewCardRoot } from "../root/PreviewCardRoot.js";
5
5
  export type State<Payload> = PopupStoreState<Payload> & {
6
6
  instantType: 'dismiss' | 'focus' | undefined;
@@ -8,6 +8,7 @@ export type State<Payload> = PopupStoreState<Payload> & {
8
8
  };
9
9
  export type Context = PopupStoreContext<PreviewCardRoot.ChangeEventDetails> & {
10
10
  closeDelayRef: React.RefObject<number>;
11
+ inlineRectCoordsRef: React.MutableRefObject<InlineRectCoords | undefined>;
11
12
  };
12
13
  declare const selectors: {
13
14
  instantType: (state: State<unknown>) => "focus" | "dismiss" | undefined;
@@ -18,6 +19,8 @@ declare const selectors: {
18
19
  mounted: boolean;
19
20
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
20
21
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
22
+ floatingId: string | undefined;
23
+ triggerCount: number;
21
24
  preventUnmountingOnClose: boolean;
22
25
  payload: unknown;
23
26
  activeTriggerId: string | null;
@@ -35,6 +38,8 @@ declare const selectors: {
35
38
  mounted: boolean;
36
39
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
37
40
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
41
+ floatingId: string | undefined;
42
+ triggerCount: number;
38
43
  preventUnmountingOnClose: boolean;
39
44
  payload: unknown;
40
45
  activeTriggerId: string | null;
@@ -52,6 +57,8 @@ declare const selectors: {
52
57
  mounted: boolean;
53
58
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
54
59
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
60
+ floatingId: string | undefined;
61
+ triggerCount: number;
55
62
  preventUnmountingOnClose: boolean;
56
63
  payload: unknown;
57
64
  activeTriggerId: string | null;
@@ -69,6 +76,8 @@ declare const selectors: {
69
76
  mounted: boolean;
70
77
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
71
78
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
79
+ floatingId: string | undefined;
80
+ triggerCount: number;
72
81
  preventUnmountingOnClose: boolean;
73
82
  payload: unknown;
74
83
  activeTriggerId: string | null;
@@ -80,12 +89,33 @@ declare const selectors: {
80
89
  inactiveTriggerProps: import("../../index.js").HTMLProps;
81
90
  popupProps: import("../../index.js").HTMLProps;
82
91
  }) => import("../../floating-ui-react/components/FloatingRootStore.js").FloatingRootStore;
92
+ triggerCount: (state: {
93
+ open: boolean;
94
+ readonly openProp: boolean | undefined;
95
+ mounted: boolean;
96
+ transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
97
+ floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
98
+ floatingId: string | undefined;
99
+ triggerCount: number;
100
+ preventUnmountingOnClose: boolean;
101
+ payload: unknown;
102
+ activeTriggerId: string | null;
103
+ activeTriggerElement: Element | null;
104
+ readonly triggerIdProp: string | null | undefined;
105
+ popupElement: HTMLElement | null;
106
+ positionerElement: HTMLElement | null;
107
+ activeTriggerProps: import("../../index.js").HTMLProps;
108
+ inactiveTriggerProps: import("../../index.js").HTMLProps;
109
+ popupProps: import("../../index.js").HTMLProps;
110
+ }) => number;
83
111
  preventUnmountingOnClose: (state: {
84
112
  open: boolean;
85
113
  readonly openProp: boolean | undefined;
86
114
  mounted: boolean;
87
115
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
88
116
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
117
+ floatingId: string | undefined;
118
+ triggerCount: number;
89
119
  preventUnmountingOnClose: boolean;
90
120
  payload: unknown;
91
121
  activeTriggerId: string | null;
@@ -103,6 +133,8 @@ declare const selectors: {
103
133
  mounted: boolean;
104
134
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
105
135
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
136
+ floatingId: string | undefined;
137
+ triggerCount: number;
106
138
  preventUnmountingOnClose: boolean;
107
139
  payload: unknown;
108
140
  activeTriggerId: string | null;
@@ -120,6 +152,8 @@ declare const selectors: {
120
152
  mounted: boolean;
121
153
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
122
154
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
155
+ floatingId: string | undefined;
156
+ triggerCount: number;
123
157
  preventUnmountingOnClose: boolean;
124
158
  payload: unknown;
125
159
  activeTriggerId: string | null;
@@ -137,6 +171,8 @@ declare const selectors: {
137
171
  mounted: boolean;
138
172
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
139
173
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
174
+ floatingId: string | undefined;
175
+ triggerCount: number;
140
176
  preventUnmountingOnClose: boolean;
141
177
  payload: unknown;
142
178
  activeTriggerId: string | null;
@@ -148,12 +184,33 @@ declare const selectors: {
148
184
  inactiveTriggerProps: import("../../index.js").HTMLProps;
149
185
  popupProps: import("../../index.js").HTMLProps;
150
186
  }) => Element | null;
187
+ popupId: (state: {
188
+ open: boolean;
189
+ readonly openProp: boolean | undefined;
190
+ mounted: boolean;
191
+ transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
192
+ floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
193
+ floatingId: string | undefined;
194
+ triggerCount: number;
195
+ preventUnmountingOnClose: boolean;
196
+ payload: unknown;
197
+ activeTriggerId: string | null;
198
+ activeTriggerElement: Element | null;
199
+ readonly triggerIdProp: string | null | undefined;
200
+ popupElement: HTMLElement | null;
201
+ positionerElement: HTMLElement | null;
202
+ activeTriggerProps: import("../../index.js").HTMLProps;
203
+ inactiveTriggerProps: import("../../index.js").HTMLProps;
204
+ popupProps: import("../../index.js").HTMLProps;
205
+ }) => string | undefined;
151
206
  isTriggerActive: (state: {
152
207
  open: boolean;
153
208
  readonly openProp: boolean | undefined;
154
209
  mounted: boolean;
155
210
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
156
211
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
212
+ floatingId: string | undefined;
213
+ triggerCount: number;
157
214
  preventUnmountingOnClose: boolean;
158
215
  payload: unknown;
159
216
  activeTriggerId: string | null;
@@ -171,6 +228,8 @@ declare const selectors: {
171
228
  mounted: boolean;
172
229
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
173
230
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
231
+ floatingId: string | undefined;
232
+ triggerCount: number;
174
233
  preventUnmountingOnClose: boolean;
175
234
  payload: unknown;
176
235
  activeTriggerId: string | null;
@@ -188,6 +247,8 @@ declare const selectors: {
188
247
  mounted: boolean;
189
248
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
190
249
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
250
+ floatingId: string | undefined;
251
+ triggerCount: number;
191
252
  preventUnmountingOnClose: boolean;
192
253
  payload: unknown;
193
254
  activeTriggerId: string | null;
@@ -205,6 +266,8 @@ declare const selectors: {
205
266
  mounted: boolean;
206
267
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
207
268
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
269
+ floatingId: string | undefined;
270
+ triggerCount: number;
208
271
  preventUnmountingOnClose: boolean;
209
272
  payload: unknown;
210
273
  activeTriggerId: string | null;
@@ -216,12 +279,33 @@ declare const selectors: {
216
279
  inactiveTriggerProps: import("../../index.js").HTMLProps;
217
280
  popupProps: import("../../index.js").HTMLProps;
218
281
  }, isActive: boolean) => import("../../index.js").HTMLProps;
282
+ triggerPopupId: (state: {
283
+ open: boolean;
284
+ readonly openProp: boolean | undefined;
285
+ mounted: boolean;
286
+ transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
287
+ floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
288
+ floatingId: string | undefined;
289
+ triggerCount: number;
290
+ preventUnmountingOnClose: boolean;
291
+ payload: unknown;
292
+ activeTriggerId: string | null;
293
+ activeTriggerElement: Element | null;
294
+ readonly triggerIdProp: string | null | undefined;
295
+ popupElement: HTMLElement | null;
296
+ positionerElement: HTMLElement | null;
297
+ activeTriggerProps: import("../../index.js").HTMLProps;
298
+ inactiveTriggerProps: import("../../index.js").HTMLProps;
299
+ popupProps: import("../../index.js").HTMLProps;
300
+ }, triggerId: string | undefined) => string | undefined;
219
301
  popupProps: (state: {
220
302
  open: boolean;
221
303
  readonly openProp: boolean | undefined;
222
304
  mounted: boolean;
223
305
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
224
306
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
307
+ floatingId: string | undefined;
308
+ triggerCount: number;
225
309
  preventUnmountingOnClose: boolean;
226
310
  payload: unknown;
227
311
  activeTriggerId: string | null;
@@ -239,6 +323,8 @@ declare const selectors: {
239
323
  mounted: boolean;
240
324
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
241
325
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
326
+ floatingId: string | undefined;
327
+ triggerCount: number;
242
328
  preventUnmountingOnClose: boolean;
243
329
  payload: unknown;
244
330
  activeTriggerId: string | null;
@@ -256,6 +342,8 @@ declare const selectors: {
256
342
  mounted: boolean;
257
343
  transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
258
344
  floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
345
+ floatingId: string | undefined;
346
+ triggerCount: number;
259
347
  preventUnmountingOnClose: boolean;
260
348
  payload: unknown;
261
349
  activeTriggerId: string | null;
@@ -269,7 +357,7 @@ declare const selectors: {
269
357
  }) => HTMLElement | null;
270
358
  };
271
359
  export declare class PreviewCardStore<Payload> extends ReactStore<Readonly<State<Payload>>, Context, typeof selectors> {
272
- constructor(initialState?: Partial<State<Payload>>);
360
+ constructor(initialState?: Partial<State<Payload>>, floatingId?: string | undefined, nested?: boolean);
273
361
  setOpen: (nextOpen: boolean, eventDetails: Omit<PreviewCardRoot.ChangeEventDetails, "preventUnmountOnClose">) => void;
274
362
  static useStore<Payload>(externalStore: PreviewCardStore<Payload> | undefined, initialState?: Partial<State<Payload>>): PreviewCardStore<Payload>;
275
363
  }