@base-ui/react 1.0.0 → 1.1.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 (672) hide show
  1. package/CHANGELOG.md +144 -1
  2. package/README.md +2 -3
  3. package/accordion/header/AccordionHeader.d.ts +1 -1
  4. package/accordion/item/AccordionItem.d.ts +1 -1
  5. package/accordion/panel/AccordionPanel.d.ts +1 -1
  6. package/accordion/root/AccordionRoot.d.ts +1 -1
  7. package/accordion/trigger/AccordionTrigger.d.ts +1 -1
  8. package/accordion/trigger/AccordionTrigger.js +3 -4
  9. package/alert-dialog/root/AlertDialogRoot.d.ts +3 -3
  10. package/autocomplete/root/AutocompleteRoot.d.ts +1 -1
  11. package/avatar/fallback/AvatarFallback.d.ts +1 -1
  12. package/avatar/image/AvatarImage.d.ts +1 -1
  13. package/avatar/root/AvatarRoot.d.ts +1 -1
  14. package/button/Button.d.ts +4 -17
  15. package/button/Button.js +1 -2
  16. package/checkbox/indicator/CheckboxIndicator.d.ts +1 -1
  17. package/checkbox/indicator/CheckboxIndicatorDataAttributes.d.ts +4 -0
  18. package/checkbox/indicator/CheckboxIndicatorDataAttributes.js +4 -0
  19. package/checkbox/root/CheckboxRoot.d.ts +1 -1
  20. package/checkbox/root/CheckboxRoot.js +5 -4
  21. package/checkbox/root/CheckboxRootDataAttributes.d.ts +4 -0
  22. package/checkbox/root/CheckboxRootDataAttributes.js +4 -0
  23. package/checkbox-group/CheckboxGroup.d.ts +1 -1
  24. package/collapsible/panel/CollapsiblePanel.d.ts +1 -1
  25. package/collapsible/root/CollapsibleRoot.d.ts +1 -1
  26. package/collapsible/trigger/CollapsibleTrigger.d.ts +1 -1
  27. package/collapsible/trigger/CollapsibleTrigger.js +1 -2
  28. package/combobox/arrow/ComboboxArrow.d.ts +1 -1
  29. package/combobox/backdrop/ComboboxBackdrop.d.ts +1 -1
  30. package/combobox/chip/ComboboxChip.d.ts +1 -1
  31. package/combobox/chip-remove/ComboboxChipRemove.d.ts +1 -1
  32. package/combobox/chip-remove/ComboboxChipRemove.js +3 -2
  33. package/combobox/chips/ComboboxChips.d.ts +1 -1
  34. package/combobox/chips/ComboboxChips.js +7 -1
  35. package/combobox/clear/ComboboxClear.d.ts +1 -1
  36. package/combobox/clear/ComboboxClear.js +2 -2
  37. package/combobox/empty/ComboboxEmpty.d.ts +1 -1
  38. package/combobox/group/ComboboxGroup.d.ts +1 -1
  39. package/combobox/group-label/ComboboxGroupLabel.d.ts +1 -1
  40. package/combobox/icon/ComboboxIcon.d.ts +1 -1
  41. package/combobox/input/ComboboxInput.d.ts +1 -1
  42. package/combobox/input/ComboboxInput.js +12 -18
  43. package/combobox/item/ComboboxItem.d.ts +1 -1
  44. package/combobox/item/ComboboxItem.js +0 -1
  45. package/combobox/item-indicator/ComboboxItemIndicator.d.ts +1 -1
  46. package/combobox/list/ComboboxList.d.ts +1 -1
  47. package/combobox/popup/ComboboxPopup.d.ts +1 -1
  48. package/combobox/popup/ComboboxPopup.js +2 -1
  49. package/combobox/portal/ComboboxPortal.d.ts +1 -1
  50. package/combobox/positioner/ComboboxPositioner.d.ts +1 -1
  51. package/combobox/root/AriaCombobox.d.ts +8 -1
  52. package/combobox/root/AriaCombobox.js +19 -16
  53. package/combobox/root/ComboboxRoot.d.ts +1 -1
  54. package/combobox/row/ComboboxRow.d.ts +1 -1
  55. package/combobox/status/ComboboxStatus.d.ts +1 -1
  56. package/combobox/store.d.ts +3 -0
  57. package/combobox/store.js +21 -0
  58. package/combobox/trigger/ComboboxTrigger.d.ts +14 -1
  59. package/combobox/trigger/ComboboxTrigger.js +31 -11
  60. package/combobox/trigger/ComboboxTriggerDataAttributes.d.ts +13 -0
  61. package/combobox/trigger/ComboboxTriggerDataAttributes.js +13 -0
  62. package/combobox/utils/stateAttributesMapping.d.ts +14 -0
  63. package/combobox/utils/stateAttributesMapping.js +18 -0
  64. package/combobox/value/ComboboxValue.d.ts +5 -0
  65. package/combobox/value/ComboboxValue.js +15 -6
  66. package/composite/root/useCompositeRoot.d.ts +1 -1
  67. package/context-menu/trigger/ContextMenuTrigger.d.ts +1 -1
  68. package/csp-provider/CSPContext.d.ts +13 -0
  69. package/csp-provider/CSPContext.js +25 -0
  70. package/csp-provider/CSPProvider.d.ts +25 -0
  71. package/csp-provider/CSPProvider.js +32 -0
  72. package/csp-provider/index.d.ts +2 -0
  73. package/csp-provider/index.js +12 -0
  74. package/csp-provider/index.parts.d.ts +1 -0
  75. package/csp-provider/index.parts.js +12 -0
  76. package/dialog/backdrop/DialogBackdrop.d.ts +1 -1
  77. package/dialog/close/DialogClose.d.ts +1 -1
  78. package/dialog/description/DialogDescription.d.ts +1 -1
  79. package/dialog/popup/DialogPopup.d.ts +1 -1
  80. package/dialog/portal/DialogPortal.d.ts +1 -1
  81. package/dialog/portal/DialogPortal.js +1 -0
  82. package/dialog/root/DialogRoot.d.ts +4 -4
  83. package/dialog/store/DialogStore.d.ts +2 -2
  84. package/dialog/title/DialogTitle.d.ts +1 -1
  85. package/dialog/viewport/DialogViewport.d.ts +1 -1
  86. package/esm/accordion/header/AccordionHeader.d.ts +1 -1
  87. package/esm/accordion/item/AccordionItem.d.ts +1 -1
  88. package/esm/accordion/panel/AccordionPanel.d.ts +1 -1
  89. package/esm/accordion/root/AccordionRoot.d.ts +1 -1
  90. package/esm/accordion/trigger/AccordionTrigger.d.ts +1 -1
  91. package/esm/accordion/trigger/AccordionTrigger.js +3 -4
  92. package/esm/alert-dialog/root/AlertDialogRoot.d.ts +3 -3
  93. package/esm/autocomplete/root/AutocompleteRoot.d.ts +1 -1
  94. package/esm/avatar/fallback/AvatarFallback.d.ts +1 -1
  95. package/esm/avatar/image/AvatarImage.d.ts +1 -1
  96. package/esm/avatar/root/AvatarRoot.d.ts +1 -1
  97. package/esm/button/Button.d.ts +4 -17
  98. package/esm/button/Button.js +1 -2
  99. package/esm/checkbox/indicator/CheckboxIndicator.d.ts +1 -1
  100. package/esm/checkbox/indicator/CheckboxIndicatorDataAttributes.d.ts +4 -0
  101. package/esm/checkbox/indicator/CheckboxIndicatorDataAttributes.js +4 -0
  102. package/esm/checkbox/root/CheckboxRoot.d.ts +1 -1
  103. package/esm/checkbox/root/CheckboxRoot.js +6 -5
  104. package/esm/checkbox/root/CheckboxRootDataAttributes.d.ts +4 -0
  105. package/esm/checkbox/root/CheckboxRootDataAttributes.js +4 -0
  106. package/esm/checkbox-group/CheckboxGroup.d.ts +1 -1
  107. package/esm/collapsible/panel/CollapsiblePanel.d.ts +1 -1
  108. package/esm/collapsible/root/CollapsibleRoot.d.ts +1 -1
  109. package/esm/collapsible/trigger/CollapsibleTrigger.d.ts +1 -1
  110. package/esm/collapsible/trigger/CollapsibleTrigger.js +1 -2
  111. package/esm/combobox/arrow/ComboboxArrow.d.ts +1 -1
  112. package/esm/combobox/backdrop/ComboboxBackdrop.d.ts +1 -1
  113. package/esm/combobox/chip/ComboboxChip.d.ts +1 -1
  114. package/esm/combobox/chip-remove/ComboboxChipRemove.d.ts +1 -1
  115. package/esm/combobox/chip-remove/ComboboxChipRemove.js +3 -2
  116. package/esm/combobox/chips/ComboboxChips.d.ts +1 -1
  117. package/esm/combobox/chips/ComboboxChips.js +7 -1
  118. package/esm/combobox/clear/ComboboxClear.d.ts +1 -1
  119. package/esm/combobox/clear/ComboboxClear.js +2 -2
  120. package/esm/combobox/empty/ComboboxEmpty.d.ts +1 -1
  121. package/esm/combobox/group/ComboboxGroup.d.ts +1 -1
  122. package/esm/combobox/group-label/ComboboxGroupLabel.d.ts +1 -1
  123. package/esm/combobox/icon/ComboboxIcon.d.ts +1 -1
  124. package/esm/combobox/input/ComboboxInput.d.ts +1 -1
  125. package/esm/combobox/input/ComboboxInput.js +12 -17
  126. package/esm/combobox/item/ComboboxItem.d.ts +1 -1
  127. package/esm/combobox/item/ComboboxItem.js +0 -1
  128. package/esm/combobox/item-indicator/ComboboxItemIndicator.d.ts +1 -1
  129. package/esm/combobox/list/ComboboxList.d.ts +1 -1
  130. package/esm/combobox/popup/ComboboxPopup.d.ts +1 -1
  131. package/esm/combobox/popup/ComboboxPopup.js +2 -1
  132. package/esm/combobox/portal/ComboboxPortal.d.ts +1 -1
  133. package/esm/combobox/positioner/ComboboxPositioner.d.ts +1 -1
  134. package/esm/combobox/root/AriaCombobox.d.ts +8 -1
  135. package/esm/combobox/root/AriaCombobox.js +20 -17
  136. package/esm/combobox/root/ComboboxRoot.d.ts +1 -1
  137. package/esm/combobox/row/ComboboxRow.d.ts +1 -1
  138. package/esm/combobox/status/ComboboxStatus.d.ts +1 -1
  139. package/esm/combobox/store.d.ts +3 -0
  140. package/esm/combobox/store.js +21 -0
  141. package/esm/combobox/trigger/ComboboxTrigger.d.ts +14 -1
  142. package/esm/combobox/trigger/ComboboxTrigger.js +32 -12
  143. package/esm/combobox/trigger/ComboboxTriggerDataAttributes.d.ts +13 -0
  144. package/esm/combobox/trigger/ComboboxTriggerDataAttributes.js +13 -0
  145. package/esm/combobox/utils/stateAttributesMapping.d.ts +14 -0
  146. package/esm/combobox/utils/stateAttributesMapping.js +12 -0
  147. package/esm/combobox/value/ComboboxValue.d.ts +5 -0
  148. package/esm/combobox/value/ComboboxValue.js +16 -7
  149. package/esm/composite/root/useCompositeRoot.d.ts +1 -1
  150. package/esm/context-menu/trigger/ContextMenuTrigger.d.ts +1 -1
  151. package/esm/csp-provider/CSPContext.d.ts +13 -0
  152. package/esm/csp-provider/CSPContext.js +18 -0
  153. package/esm/csp-provider/CSPProvider.d.ts +25 -0
  154. package/esm/csp-provider/CSPProvider.js +27 -0
  155. package/esm/csp-provider/index.d.ts +2 -0
  156. package/esm/csp-provider/index.js +1 -0
  157. package/esm/csp-provider/index.parts.d.ts +1 -0
  158. package/esm/csp-provider/index.parts.js +1 -0
  159. package/esm/dialog/backdrop/DialogBackdrop.d.ts +1 -1
  160. package/esm/dialog/close/DialogClose.d.ts +1 -1
  161. package/esm/dialog/description/DialogDescription.d.ts +1 -1
  162. package/esm/dialog/popup/DialogPopup.d.ts +1 -1
  163. package/esm/dialog/portal/DialogPortal.d.ts +1 -1
  164. package/esm/dialog/portal/DialogPortal.js +1 -0
  165. package/esm/dialog/root/DialogRoot.d.ts +4 -4
  166. package/esm/dialog/store/DialogStore.d.ts +2 -2
  167. package/esm/dialog/title/DialogTitle.d.ts +1 -1
  168. package/esm/dialog/viewport/DialogViewport.d.ts +1 -1
  169. package/esm/field/control/FieldControl.d.ts +1 -1
  170. package/esm/field/description/FieldDescription.d.ts +1 -1
  171. package/esm/field/error/FieldError.d.ts +1 -1
  172. package/esm/field/index.d.ts +2 -1
  173. package/esm/field/item/FieldItem.d.ts +1 -1
  174. package/esm/field/label/FieldLabel.d.ts +11 -2
  175. package/esm/field/label/FieldLabel.js +51 -11
  176. package/esm/field/root/FieldRoot.d.ts +10 -1
  177. package/esm/field/root/FieldRoot.js +8 -0
  178. package/esm/field/useField.js +7 -3
  179. package/esm/fieldset/legend/FieldsetLegend.d.ts +1 -1
  180. package/esm/fieldset/root/FieldsetRoot.d.ts +1 -1
  181. package/esm/floating-ui-react/components/FloatingFocusManager.js +7 -6
  182. package/esm/floating-ui-react/components/FloatingPortal.d.ts +2 -2
  183. package/esm/floating-ui-react/components/FloatingPortal.js +11 -2
  184. package/esm/floating-ui-react/hooks/useClientPoint.js +5 -4
  185. package/esm/floating-ui-react/hooks/useDismiss.js +16 -3
  186. package/esm/floating-ui-react/hooks/useFocus.d.ts +5 -0
  187. package/esm/floating-ui-react/hooks/useFocus.js +43 -9
  188. package/esm/floating-ui-react/hooks/useHoverReferenceInteraction.js +17 -4
  189. package/esm/floating-ui-react/hooks/useSyncedFloatingRootContext.js +3 -0
  190. package/esm/form/Form.d.ts +18 -1
  191. package/esm/form/Form.js +17 -0
  192. package/esm/form/FormContext.d.ts +1 -1
  193. package/esm/index.d.ts +1 -0
  194. package/esm/index.js +2 -1
  195. package/esm/input/Input.d.ts +1 -1
  196. package/esm/menu/arrow/MenuArrow.d.ts +1 -1
  197. package/esm/menu/backdrop/MenuBackdrop.d.ts +1 -1
  198. package/esm/menu/checkbox-item/MenuCheckboxItem.d.ts +1 -1
  199. package/esm/menu/checkbox-item-indicator/MenuCheckboxItemIndicator.d.ts +1 -1
  200. package/esm/menu/group/MenuGroup.d.ts +1 -1
  201. package/esm/menu/group-label/MenuGroupLabel.d.ts +1 -1
  202. package/esm/menu/item/MenuItem.d.ts +1 -1
  203. package/esm/menu/popup/MenuPopup.d.ts +1 -1
  204. package/esm/menu/popup/MenuPopup.js +4 -3
  205. package/esm/menu/portal/MenuPortal.d.ts +1 -1
  206. package/esm/menu/positioner/MenuPositioner.d.ts +1 -1
  207. package/esm/menu/radio-group/MenuRadioGroup.d.ts +1 -1
  208. package/esm/menu/radio-item/MenuRadioItem.d.ts +1 -1
  209. package/esm/menu/radio-item-indicator/MenuRadioItemIndicator.d.ts +1 -1
  210. package/esm/menu/root/MenuRoot.d.ts +7 -6
  211. package/esm/menu/root/MenuRoot.js +4 -2
  212. package/esm/menu/store/MenuStore.js +3 -3
  213. package/esm/menu/submenu-trigger/MenuSubmenuTrigger.d.ts +1 -1
  214. package/esm/menu/trigger/MenuTrigger.js +13 -13
  215. package/esm/menubar/Menubar.d.ts +1 -1
  216. package/esm/merge-props/mergeProps.d.ts +31 -11
  217. package/esm/merge-props/mergeProps.js +29 -8
  218. package/esm/meter/indicator/MeterIndicator.d.ts +1 -1
  219. package/esm/meter/label/MeterLabel.d.ts +1 -1
  220. package/esm/meter/root/MeterRoot.d.ts +1 -1
  221. package/esm/meter/track/MeterTrack.d.ts +1 -1
  222. package/esm/meter/value/MeterValue.d.ts +1 -1
  223. package/esm/navigation-menu/arrow/NavigationMenuArrow.d.ts +1 -1
  224. package/esm/navigation-menu/backdrop/NavigationMenuBackdrop.d.ts +1 -1
  225. package/esm/navigation-menu/content/NavigationMenuContent.d.ts +1 -1
  226. package/esm/navigation-menu/content/NavigationMenuContent.js +6 -0
  227. package/esm/navigation-menu/icon/NavigationMenuIcon.d.ts +1 -1
  228. package/esm/navigation-menu/item/NavigationMenuItem.d.ts +1 -1
  229. package/esm/navigation-menu/link/NavigationMenuLink.d.ts +1 -1
  230. package/esm/navigation-menu/list/NavigationMenuList.d.ts +1 -1
  231. package/esm/navigation-menu/popup/NavigationMenuPopup.d.ts +1 -1
  232. package/esm/navigation-menu/portal/NavigationMenuPortal.d.ts +1 -1
  233. package/esm/navigation-menu/positioner/NavigationMenuPositioner.d.ts +1 -1
  234. package/esm/navigation-menu/root/NavigationMenuRoot.d.ts +2 -2
  235. package/esm/navigation-menu/trigger/NavigationMenuTrigger.d.ts +1 -1
  236. package/esm/navigation-menu/viewport/NavigationMenuViewport.d.ts +1 -1
  237. package/esm/number-field/decrement/NumberFieldDecrement.d.ts +1 -1
  238. package/esm/number-field/decrement/NumberFieldDecrement.js +4 -6
  239. package/esm/number-field/group/NumberFieldGroup.d.ts +1 -1
  240. package/esm/number-field/increment/NumberFieldIncrement.d.ts +1 -1
  241. package/esm/number-field/increment/NumberFieldIncrement.js +4 -6
  242. package/esm/number-field/input/NumberFieldInput.d.ts +1 -1
  243. package/esm/number-field/input/NumberFieldInput.js +5 -2
  244. package/esm/number-field/root/NumberFieldRoot.d.ts +5 -4
  245. package/esm/number-field/root/NumberFieldRoot.js +12 -5
  246. package/esm/number-field/root/useNumberFieldButton.d.ts +0 -3
  247. package/esm/number-field/root/useNumberFieldButton.js +5 -11
  248. package/esm/number-field/scrub-area/NumberFieldScrubArea.d.ts +1 -1
  249. package/esm/number-field/scrub-area-cursor/NumberFieldScrubAreaCursor.d.ts +1 -1
  250. package/esm/popover/arrow/PopoverArrow.d.ts +1 -1
  251. package/esm/popover/backdrop/PopoverBackdrop.d.ts +1 -1
  252. package/esm/popover/close/PopoverClose.d.ts +1 -1
  253. package/esm/popover/description/PopoverDescription.d.ts +1 -1
  254. package/esm/popover/popup/PopoverPopup.d.ts +1 -1
  255. package/esm/popover/popup/PopoverPopup.js +0 -30
  256. package/esm/popover/portal/PopoverPortal.d.ts +1 -1
  257. package/esm/popover/positioner/PopoverPositioner.d.ts +1 -1
  258. package/esm/popover/positioner/PopoverPositioner.js +2 -1
  259. package/esm/popover/root/PopoverRoot.d.ts +2 -2
  260. package/esm/popover/store/PopoverStore.d.ts +4 -2
  261. package/esm/popover/store/PopoverStore.js +8 -5
  262. package/esm/popover/title/PopoverTitle.d.ts +1 -1
  263. package/esm/popover/trigger/PopoverTrigger.js +2 -2
  264. package/esm/popover/viewport/PopoverViewport.d.ts +1 -1
  265. package/esm/popover/viewport/PopoverViewport.js +28 -12
  266. package/esm/preview-card/arrow/PreviewCardArrow.d.ts +1 -1
  267. package/esm/preview-card/arrow/PreviewCardArrow.js +2 -3
  268. package/esm/preview-card/backdrop/PreviewCardBackdrop.d.ts +1 -1
  269. package/esm/preview-card/backdrop/PreviewCardBackdrop.js +4 -5
  270. package/esm/preview-card/index.parts.d.ts +3 -1
  271. package/esm/preview-card/index.parts.js +3 -1
  272. package/esm/preview-card/popup/PreviewCardPopup.d.ts +2 -1
  273. package/esm/preview-card/popup/PreviewCardPopup.js +17 -11
  274. package/esm/preview-card/portal/PreviewCardPortal.d.ts +1 -1
  275. package/esm/preview-card/portal/PreviewCardPortal.js +2 -3
  276. package/esm/preview-card/positioner/PreviewCardPositioner.d.ts +2 -1
  277. package/esm/preview-card/positioner/PreviewCardPositioner.js +16 -11
  278. package/esm/preview-card/root/PreviewCardContext.d.ts +5 -26
  279. package/esm/preview-card/root/PreviewCardContext.js +2 -2
  280. package/esm/preview-card/root/PreviewCardRoot.d.ts +35 -10
  281. package/esm/preview-card/root/PreviewCardRoot.js +61 -116
  282. package/esm/preview-card/store/PreviewCardHandle.d.ts +33 -0
  283. package/esm/preview-card/store/PreviewCardHandle.js +55 -0
  284. package/esm/preview-card/store/PreviewCardStore.d.ts +36 -0
  285. package/esm/preview-card/store/PreviewCardStore.js +97 -0
  286. package/esm/preview-card/trigger/PreviewCardTrigger.d.ts +15 -3
  287. package/esm/preview-card/trigger/PreviewCardTrigger.js +49 -13
  288. package/esm/preview-card/viewport/PreviewCardViewport.d.ts +22 -0
  289. package/esm/preview-card/viewport/PreviewCardViewport.js +272 -0
  290. package/esm/preview-card/viewport/PreviewCardViewportCssVars.d.ts +14 -0
  291. package/esm/preview-card/viewport/PreviewCardViewportCssVars.js +15 -0
  292. package/esm/preview-card/viewport/PreviewCardViewportDataAttributes.d.ts +26 -0
  293. package/esm/preview-card/viewport/PreviewCardViewportDataAttributes.js +27 -0
  294. package/esm/progress/indicator/ProgressIndicator.d.ts +1 -1
  295. package/esm/progress/label/ProgressLabel.d.ts +1 -1
  296. package/esm/progress/root/ProgressRoot.d.ts +1 -1
  297. package/esm/progress/track/ProgressTrack.d.ts +1 -1
  298. package/esm/progress/value/ProgressValue.d.ts +1 -1
  299. package/esm/radio/indicator/RadioIndicator.d.ts +1 -1
  300. package/esm/radio/root/RadioRoot.d.ts +1 -1
  301. package/esm/radio/root/RadioRoot.js +9 -9
  302. package/esm/radio-group/RadioGroup.d.ts +4 -4
  303. package/esm/radio-group/RadioGroup.js +2 -2
  304. package/esm/scroll-area/content/ScrollAreaContent.d.ts +1 -1
  305. package/esm/scroll-area/content/ScrollAreaContent.js +10 -1
  306. package/esm/scroll-area/corner/ScrollAreaCorner.d.ts +1 -1
  307. package/esm/scroll-area/corner/ScrollAreaCorner.js +1 -1
  308. package/esm/scroll-area/root/ScrollAreaRoot.d.ts +26 -2
  309. package/esm/scroll-area/root/ScrollAreaRoot.js +33 -29
  310. package/esm/scroll-area/root/ScrollAreaRootContext.d.ts +10 -43
  311. package/esm/scroll-area/scrollbar/ScrollAreaScrollbar.d.ts +1 -1
  312. package/esm/scroll-area/scrollbar/ScrollAreaScrollbar.js +4 -4
  313. package/esm/scroll-area/thumb/ScrollAreaThumb.d.ts +2 -2
  314. package/esm/scroll-area/thumb/ScrollAreaThumb.js +1 -1
  315. package/esm/scroll-area/viewport/ScrollAreaViewport.d.ts +1 -1
  316. package/esm/scroll-area/viewport/ScrollAreaViewport.js +51 -25
  317. package/esm/select/arrow/SelectArrow.d.ts +1 -1
  318. package/esm/select/backdrop/SelectBackdrop.d.ts +1 -1
  319. package/esm/select/group/SelectGroup.d.ts +1 -1
  320. package/esm/select/group-label/SelectGroupLabel.d.ts +1 -1
  321. package/esm/select/icon/SelectIcon.d.ts +1 -1
  322. package/esm/select/item/SelectItem.d.ts +1 -1
  323. package/esm/select/item/SelectItem.js +0 -1
  324. package/esm/select/item-indicator/SelectItemIndicator.d.ts +1 -1
  325. package/esm/select/item-text/SelectItemText.d.ts +1 -1
  326. package/esm/select/list/SelectList.d.ts +1 -1
  327. package/esm/select/popup/SelectPopup.d.ts +1 -1
  328. package/esm/select/popup/SelectPopup.js +154 -95
  329. package/esm/select/portal/SelectPortal.d.ts +1 -1
  330. package/esm/select/positioner/SelectPositioner.d.ts +1 -1
  331. package/esm/select/root/SelectRoot.d.ts +2 -2
  332. package/esm/select/root/SelectRoot.js +26 -13
  333. package/esm/select/scroll-arrow/SelectScrollArrow.d.ts +1 -1
  334. package/esm/select/scroll-down-arrow/SelectScrollDownArrow.d.ts +1 -1
  335. package/esm/select/scroll-up-arrow/SelectScrollUpArrow.d.ts +1 -1
  336. package/esm/select/store.d.ts +2 -1
  337. package/esm/select/store.js +19 -13
  338. package/esm/select/trigger/SelectTrigger.d.ts +14 -4
  339. package/esm/select/trigger/SelectTrigger.js +50 -18
  340. package/esm/select/value/SelectValue.d.ts +6 -1
  341. package/esm/select/value/SelectValue.js +19 -5
  342. package/esm/separator/Separator.d.ts +1 -1
  343. package/esm/slider/control/SliderControl.d.ts +1 -1
  344. package/esm/slider/control/SliderControl.js +1 -1
  345. package/esm/slider/control/SliderControlDataAttributes.d.ts +0 -8
  346. package/esm/slider/control/SliderControlDataAttributes.js +0 -8
  347. package/esm/slider/indicator/SliderIndicator.d.ts +1 -1
  348. package/esm/slider/indicator/SliderIndicatorDataAttributes.d.ts +0 -8
  349. package/esm/slider/indicator/SliderIndicatorDataAttributes.js +0 -8
  350. package/esm/slider/root/SliderRootDataAttributes.d.ts +0 -8
  351. package/esm/slider/root/SliderRootDataAttributes.js +0 -8
  352. package/esm/slider/thumb/SliderThumb.d.ts +2 -2
  353. package/esm/slider/thumb/SliderThumb.js +7 -1
  354. package/esm/slider/thumb/SliderThumbDataAttributes.d.ts +0 -8
  355. package/esm/slider/thumb/SliderThumbDataAttributes.js +0 -8
  356. package/esm/slider/track/SliderTrack.d.ts +1 -1
  357. package/esm/slider/track/SliderTrackDataAttributes.d.ts +0 -8
  358. package/esm/slider/track/SliderTrackDataAttributes.js +0 -8
  359. package/esm/slider/value/SliderValue.d.ts +1 -1
  360. package/esm/slider/value/SliderValueDataAttributes.d.ts +0 -8
  361. package/esm/slider/value/SliderValueDataAttributes.js +0 -8
  362. package/esm/switch/root/SwitchRoot.d.ts +6 -1
  363. package/esm/switch/root/SwitchRoot.js +15 -6
  364. package/esm/switch/thumb/SwitchThumb.d.ts +1 -1
  365. package/esm/tabs/indicator/TabsIndicator.d.ts +1 -1
  366. package/esm/tabs/indicator/TabsIndicator.js +6 -0
  367. package/esm/tabs/list/TabsList.d.ts +1 -1
  368. package/esm/tabs/panel/TabsPanel.d.ts +1 -1
  369. package/esm/tabs/root/TabsRoot.d.ts +1 -1
  370. package/esm/tabs/tab/TabsTab.d.ts +1 -1
  371. package/esm/toast/action/ToastAction.d.ts +1 -1
  372. package/esm/toast/arrow/ToastArrow.d.ts +1 -1
  373. package/esm/toast/close/ToastClose.d.ts +1 -1
  374. package/esm/toast/content/ToastContent.d.ts +1 -1
  375. package/esm/toast/description/ToastDescription.d.ts +1 -1
  376. package/esm/toast/portal/ToastPortal.d.ts +1 -1
  377. package/esm/toast/positioner/ToastPositioner.d.ts +1 -1
  378. package/esm/toast/provider/ToastProvider.js +46 -19
  379. package/esm/toast/root/ToastRoot.d.ts +1 -1
  380. package/esm/toast/title/ToastTitle.d.ts +1 -1
  381. package/esm/toast/viewport/ToastViewport.d.ts +1 -1
  382. package/esm/toggle/Toggle.d.ts +1 -1
  383. package/esm/toggle-group/ToggleGroup.d.ts +1 -1
  384. package/esm/toolbar/button/ToolbarButton.d.ts +1 -1
  385. package/esm/toolbar/group/ToolbarGroup.d.ts +1 -1
  386. package/esm/toolbar/input/ToolbarInput.d.ts +1 -1
  387. package/esm/toolbar/link/ToolbarLink.d.ts +1 -1
  388. package/esm/toolbar/root/ToolbarRoot.d.ts +1 -1
  389. package/esm/toolbar/separator/ToolbarSeparator.d.ts +1 -1
  390. package/esm/tooltip/arrow/TooltipArrow.d.ts +1 -1
  391. package/esm/tooltip/popup/TooltipPopup.d.ts +1 -1
  392. package/esm/tooltip/popup/TooltipPopup.js +0 -31
  393. package/esm/tooltip/portal/TooltipPortal.d.ts +1 -1
  394. package/esm/tooltip/positioner/TooltipPositioner.d.ts +1 -1
  395. package/esm/tooltip/positioner/TooltipPositioner.js +2 -1
  396. package/esm/tooltip/root/TooltipRoot.d.ts +4 -6
  397. package/esm/tooltip/root/TooltipRoot.js +1 -2
  398. package/esm/tooltip/store/TooltipStore.d.ts +4 -2
  399. package/esm/tooltip/store/TooltipStore.js +7 -4
  400. package/esm/tooltip/trigger/TooltipTrigger.js +1 -1
  401. package/esm/tooltip/viewport/TooltipViewport.d.ts +1 -1
  402. package/esm/tooltip/viewport/TooltipViewport.js +28 -12
  403. package/esm/use-render/index.d.ts +2 -1
  404. package/esm/use-render/index.js +2 -1
  405. package/esm/utils/FloatingPortalLite.d.ts +1 -1
  406. package/esm/utils/popups/popupStoreUtils.js +21 -2
  407. package/esm/utils/resolveValueLabel.d.ts +5 -1
  408. package/esm/utils/resolveValueLabel.js +46 -22
  409. package/esm/utils/styles.d.ts +1 -1
  410. package/esm/utils/styles.js +10 -6
  411. package/esm/utils/types.d.ts +1 -1
  412. package/esm/utils/useAnimationsFinished.d.ts +2 -2
  413. package/esm/utils/useAnimationsFinished.js +56 -33
  414. package/esm/utils/useOpenChangeComplete.js +8 -10
  415. package/esm/utils/useOpenInteractionType.js +6 -1
  416. package/esm/utils/usePopupAutoResize.js +82 -46
  417. package/field/control/FieldControl.d.ts +1 -1
  418. package/field/description/FieldDescription.d.ts +1 -1
  419. package/field/error/FieldError.d.ts +1 -1
  420. package/field/index.d.ts +2 -1
  421. package/field/item/FieldItem.d.ts +1 -1
  422. package/field/label/FieldLabel.d.ts +11 -2
  423. package/field/label/FieldLabel.js +51 -11
  424. package/field/root/FieldRoot.d.ts +10 -1
  425. package/field/root/FieldRoot.js +8 -0
  426. package/field/useField.js +7 -3
  427. package/fieldset/legend/FieldsetLegend.d.ts +1 -1
  428. package/fieldset/root/FieldsetRoot.d.ts +1 -1
  429. package/floating-ui-react/components/FloatingFocusManager.js +7 -6
  430. package/floating-ui-react/components/FloatingPortal.d.ts +2 -2
  431. package/floating-ui-react/components/FloatingPortal.js +11 -2
  432. package/floating-ui-react/hooks/useClientPoint.js +5 -4
  433. package/floating-ui-react/hooks/useDismiss.js +16 -3
  434. package/floating-ui-react/hooks/useFocus.d.ts +5 -0
  435. package/floating-ui-react/hooks/useFocus.js +43 -9
  436. package/floating-ui-react/hooks/useHoverReferenceInteraction.js +17 -4
  437. package/floating-ui-react/hooks/useSyncedFloatingRootContext.js +3 -0
  438. package/form/Form.d.ts +18 -1
  439. package/form/Form.js +17 -0
  440. package/form/FormContext.d.ts +1 -1
  441. package/index.d.ts +1 -0
  442. package/index.js +12 -1
  443. package/input/Input.d.ts +1 -1
  444. package/menu/arrow/MenuArrow.d.ts +1 -1
  445. package/menu/backdrop/MenuBackdrop.d.ts +1 -1
  446. package/menu/checkbox-item/MenuCheckboxItem.d.ts +1 -1
  447. package/menu/checkbox-item-indicator/MenuCheckboxItemIndicator.d.ts +1 -1
  448. package/menu/group/MenuGroup.d.ts +1 -1
  449. package/menu/group-label/MenuGroupLabel.d.ts +1 -1
  450. package/menu/item/MenuItem.d.ts +1 -1
  451. package/menu/popup/MenuPopup.d.ts +1 -1
  452. package/menu/popup/MenuPopup.js +4 -3
  453. package/menu/portal/MenuPortal.d.ts +1 -1
  454. package/menu/positioner/MenuPositioner.d.ts +1 -1
  455. package/menu/radio-group/MenuRadioGroup.d.ts +1 -1
  456. package/menu/radio-item/MenuRadioItem.d.ts +1 -1
  457. package/menu/radio-item-indicator/MenuRadioItemIndicator.d.ts +1 -1
  458. package/menu/root/MenuRoot.d.ts +7 -6
  459. package/menu/root/MenuRoot.js +4 -2
  460. package/menu/store/MenuStore.js +3 -3
  461. package/menu/submenu-trigger/MenuSubmenuTrigger.d.ts +1 -1
  462. package/menu/trigger/MenuTrigger.js +14 -14
  463. package/menubar/Menubar.d.ts +1 -1
  464. package/merge-props/mergeProps.d.ts +31 -11
  465. package/merge-props/mergeProps.js +29 -8
  466. package/meter/indicator/MeterIndicator.d.ts +1 -1
  467. package/meter/label/MeterLabel.d.ts +1 -1
  468. package/meter/root/MeterRoot.d.ts +1 -1
  469. package/meter/track/MeterTrack.d.ts +1 -1
  470. package/meter/value/MeterValue.d.ts +1 -1
  471. package/navigation-menu/arrow/NavigationMenuArrow.d.ts +1 -1
  472. package/navigation-menu/backdrop/NavigationMenuBackdrop.d.ts +1 -1
  473. package/navigation-menu/content/NavigationMenuContent.d.ts +1 -1
  474. package/navigation-menu/content/NavigationMenuContent.js +6 -0
  475. package/navigation-menu/icon/NavigationMenuIcon.d.ts +1 -1
  476. package/navigation-menu/item/NavigationMenuItem.d.ts +1 -1
  477. package/navigation-menu/link/NavigationMenuLink.d.ts +1 -1
  478. package/navigation-menu/list/NavigationMenuList.d.ts +1 -1
  479. package/navigation-menu/popup/NavigationMenuPopup.d.ts +1 -1
  480. package/navigation-menu/portal/NavigationMenuPortal.d.ts +1 -1
  481. package/navigation-menu/positioner/NavigationMenuPositioner.d.ts +1 -1
  482. package/navigation-menu/root/NavigationMenuRoot.d.ts +2 -2
  483. package/navigation-menu/trigger/NavigationMenuTrigger.d.ts +1 -1
  484. package/navigation-menu/viewport/NavigationMenuViewport.d.ts +1 -1
  485. package/number-field/decrement/NumberFieldDecrement.d.ts +1 -1
  486. package/number-field/decrement/NumberFieldDecrement.js +4 -6
  487. package/number-field/group/NumberFieldGroup.d.ts +1 -1
  488. package/number-field/increment/NumberFieldIncrement.d.ts +1 -1
  489. package/number-field/increment/NumberFieldIncrement.js +4 -6
  490. package/number-field/input/NumberFieldInput.d.ts +1 -1
  491. package/number-field/input/NumberFieldInput.js +5 -2
  492. package/number-field/root/NumberFieldRoot.d.ts +5 -4
  493. package/number-field/root/NumberFieldRoot.js +11 -4
  494. package/number-field/root/useNumberFieldButton.d.ts +0 -3
  495. package/number-field/root/useNumberFieldButton.js +5 -11
  496. package/number-field/scrub-area/NumberFieldScrubArea.d.ts +1 -1
  497. package/number-field/scrub-area-cursor/NumberFieldScrubAreaCursor.d.ts +1 -1
  498. package/package.json +13 -3
  499. package/popover/arrow/PopoverArrow.d.ts +1 -1
  500. package/popover/backdrop/PopoverBackdrop.d.ts +1 -1
  501. package/popover/close/PopoverClose.d.ts +1 -1
  502. package/popover/description/PopoverDescription.d.ts +1 -1
  503. package/popover/popup/PopoverPopup.d.ts +1 -1
  504. package/popover/popup/PopoverPopup.js +0 -30
  505. package/popover/portal/PopoverPortal.d.ts +1 -1
  506. package/popover/positioner/PopoverPositioner.d.ts +1 -1
  507. package/popover/positioner/PopoverPositioner.js +2 -1
  508. package/popover/root/PopoverRoot.d.ts +2 -2
  509. package/popover/store/PopoverStore.d.ts +4 -2
  510. package/popover/store/PopoverStore.js +8 -5
  511. package/popover/title/PopoverTitle.d.ts +1 -1
  512. package/popover/trigger/PopoverTrigger.js +2 -2
  513. package/popover/viewport/PopoverViewport.d.ts +1 -1
  514. package/popover/viewport/PopoverViewport.js +28 -12
  515. package/preview-card/arrow/PreviewCardArrow.d.ts +1 -1
  516. package/preview-card/arrow/PreviewCardArrow.js +2 -3
  517. package/preview-card/backdrop/PreviewCardBackdrop.d.ts +1 -1
  518. package/preview-card/backdrop/PreviewCardBackdrop.js +4 -5
  519. package/preview-card/index.parts.d.ts +3 -1
  520. package/preview-card/index.parts.js +21 -1
  521. package/preview-card/popup/PreviewCardPopup.d.ts +2 -1
  522. package/preview-card/popup/PreviewCardPopup.js +17 -11
  523. package/preview-card/portal/PreviewCardPortal.d.ts +1 -1
  524. package/preview-card/portal/PreviewCardPortal.js +2 -3
  525. package/preview-card/positioner/PreviewCardPositioner.d.ts +2 -1
  526. package/preview-card/positioner/PreviewCardPositioner.js +16 -11
  527. package/preview-card/root/PreviewCardContext.d.ts +5 -26
  528. package/preview-card/root/PreviewCardContext.js +2 -2
  529. package/preview-card/root/PreviewCardRoot.d.ts +35 -10
  530. package/preview-card/root/PreviewCardRoot.js +59 -113
  531. package/preview-card/store/PreviewCardHandle.d.ts +33 -0
  532. package/preview-card/store/PreviewCardHandle.js +63 -0
  533. package/preview-card/store/PreviewCardStore.d.ts +36 -0
  534. package/preview-card/store/PreviewCardStore.js +105 -0
  535. package/preview-card/trigger/PreviewCardTrigger.d.ts +15 -3
  536. package/preview-card/trigger/PreviewCardTrigger.js +50 -13
  537. package/preview-card/viewport/PreviewCardViewport.d.ts +22 -0
  538. package/preview-card/viewport/PreviewCardViewport.js +278 -0
  539. package/preview-card/viewport/PreviewCardViewportCssVars.d.ts +14 -0
  540. package/preview-card/viewport/PreviewCardViewportCssVars.js +21 -0
  541. package/preview-card/viewport/PreviewCardViewportDataAttributes.d.ts +26 -0
  542. package/preview-card/viewport/PreviewCardViewportDataAttributes.js +33 -0
  543. package/progress/indicator/ProgressIndicator.d.ts +1 -1
  544. package/progress/label/ProgressLabel.d.ts +1 -1
  545. package/progress/root/ProgressRoot.d.ts +1 -1
  546. package/progress/track/ProgressTrack.d.ts +1 -1
  547. package/progress/value/ProgressValue.d.ts +1 -1
  548. package/radio/indicator/RadioIndicator.d.ts +1 -1
  549. package/radio/root/RadioRoot.d.ts +1 -1
  550. package/radio/root/RadioRoot.js +8 -8
  551. package/radio-group/RadioGroup.d.ts +4 -4
  552. package/radio-group/RadioGroup.js +1 -1
  553. package/scroll-area/content/ScrollAreaContent.d.ts +1 -1
  554. package/scroll-area/content/ScrollAreaContent.js +10 -1
  555. package/scroll-area/corner/ScrollAreaCorner.d.ts +1 -1
  556. package/scroll-area/corner/ScrollAreaCorner.js +1 -1
  557. package/scroll-area/root/ScrollAreaRoot.d.ts +26 -2
  558. package/scroll-area/root/ScrollAreaRoot.js +33 -29
  559. package/scroll-area/root/ScrollAreaRootContext.d.ts +10 -43
  560. package/scroll-area/scrollbar/ScrollAreaScrollbar.d.ts +1 -1
  561. package/scroll-area/scrollbar/ScrollAreaScrollbar.js +4 -4
  562. package/scroll-area/thumb/ScrollAreaThumb.d.ts +2 -2
  563. package/scroll-area/thumb/ScrollAreaThumb.js +1 -1
  564. package/scroll-area/viewport/ScrollAreaViewport.d.ts +1 -1
  565. package/scroll-area/viewport/ScrollAreaViewport.js +51 -25
  566. package/select/arrow/SelectArrow.d.ts +1 -1
  567. package/select/backdrop/SelectBackdrop.d.ts +1 -1
  568. package/select/group/SelectGroup.d.ts +1 -1
  569. package/select/group-label/SelectGroupLabel.d.ts +1 -1
  570. package/select/icon/SelectIcon.d.ts +1 -1
  571. package/select/item/SelectItem.d.ts +1 -1
  572. package/select/item/SelectItem.js +0 -1
  573. package/select/item-indicator/SelectItemIndicator.d.ts +1 -1
  574. package/select/item-text/SelectItemText.d.ts +1 -1
  575. package/select/list/SelectList.d.ts +1 -1
  576. package/select/popup/SelectPopup.d.ts +1 -1
  577. package/select/popup/SelectPopup.js +154 -95
  578. package/select/portal/SelectPortal.d.ts +1 -1
  579. package/select/positioner/SelectPositioner.d.ts +1 -1
  580. package/select/root/SelectRoot.d.ts +2 -2
  581. package/select/root/SelectRoot.js +24 -11
  582. package/select/scroll-arrow/SelectScrollArrow.d.ts +1 -1
  583. package/select/scroll-down-arrow/SelectScrollDownArrow.d.ts +1 -1
  584. package/select/scroll-up-arrow/SelectScrollUpArrow.d.ts +1 -1
  585. package/select/store.d.ts +2 -1
  586. package/select/store.js +18 -12
  587. package/select/trigger/SelectTrigger.d.ts +14 -4
  588. package/select/trigger/SelectTrigger.js +50 -18
  589. package/select/value/SelectValue.d.ts +6 -1
  590. package/select/value/SelectValue.js +18 -4
  591. package/separator/Separator.d.ts +1 -1
  592. package/slider/control/SliderControl.d.ts +1 -1
  593. package/slider/control/SliderControl.js +1 -1
  594. package/slider/control/SliderControlDataAttributes.d.ts +0 -8
  595. package/slider/control/SliderControlDataAttributes.js +0 -8
  596. package/slider/indicator/SliderIndicator.d.ts +1 -1
  597. package/slider/indicator/SliderIndicatorDataAttributes.d.ts +0 -8
  598. package/slider/indicator/SliderIndicatorDataAttributes.js +0 -8
  599. package/slider/root/SliderRootDataAttributes.d.ts +0 -8
  600. package/slider/root/SliderRootDataAttributes.js +0 -8
  601. package/slider/thumb/SliderThumb.d.ts +2 -2
  602. package/slider/thumb/SliderThumb.js +7 -1
  603. package/slider/thumb/SliderThumbDataAttributes.d.ts +0 -8
  604. package/slider/thumb/SliderThumbDataAttributes.js +0 -8
  605. package/slider/track/SliderTrack.d.ts +1 -1
  606. package/slider/track/SliderTrackDataAttributes.d.ts +0 -8
  607. package/slider/track/SliderTrackDataAttributes.js +0 -8
  608. package/slider/value/SliderValue.d.ts +1 -1
  609. package/slider/value/SliderValueDataAttributes.d.ts +0 -8
  610. package/slider/value/SliderValueDataAttributes.js +0 -8
  611. package/switch/root/SwitchRoot.d.ts +6 -1
  612. package/switch/root/SwitchRoot.js +14 -5
  613. package/switch/thumb/SwitchThumb.d.ts +1 -1
  614. package/tabs/indicator/TabsIndicator.d.ts +1 -1
  615. package/tabs/indicator/TabsIndicator.js +6 -0
  616. package/tabs/list/TabsList.d.ts +1 -1
  617. package/tabs/panel/TabsPanel.d.ts +1 -1
  618. package/tabs/root/TabsRoot.d.ts +1 -1
  619. package/tabs/tab/TabsTab.d.ts +1 -1
  620. package/toast/action/ToastAction.d.ts +1 -1
  621. package/toast/arrow/ToastArrow.d.ts +1 -1
  622. package/toast/close/ToastClose.d.ts +1 -1
  623. package/toast/content/ToastContent.d.ts +1 -1
  624. package/toast/description/ToastDescription.d.ts +1 -1
  625. package/toast/portal/ToastPortal.d.ts +1 -1
  626. package/toast/positioner/ToastPositioner.d.ts +1 -1
  627. package/toast/provider/ToastProvider.js +46 -19
  628. package/toast/root/ToastRoot.d.ts +1 -1
  629. package/toast/title/ToastTitle.d.ts +1 -1
  630. package/toast/viewport/ToastViewport.d.ts +1 -1
  631. package/toggle/Toggle.d.ts +1 -1
  632. package/toggle-group/ToggleGroup.d.ts +1 -1
  633. package/toolbar/button/ToolbarButton.d.ts +1 -1
  634. package/toolbar/group/ToolbarGroup.d.ts +1 -1
  635. package/toolbar/input/ToolbarInput.d.ts +1 -1
  636. package/toolbar/link/ToolbarLink.d.ts +1 -1
  637. package/toolbar/root/ToolbarRoot.d.ts +1 -1
  638. package/toolbar/separator/ToolbarSeparator.d.ts +1 -1
  639. package/tooltip/arrow/TooltipArrow.d.ts +1 -1
  640. package/tooltip/popup/TooltipPopup.d.ts +1 -1
  641. package/tooltip/popup/TooltipPopup.js +0 -31
  642. package/tooltip/portal/TooltipPortal.d.ts +1 -1
  643. package/tooltip/positioner/TooltipPositioner.d.ts +1 -1
  644. package/tooltip/positioner/TooltipPositioner.js +2 -1
  645. package/tooltip/root/TooltipRoot.d.ts +4 -6
  646. package/tooltip/root/TooltipRoot.js +1 -2
  647. package/tooltip/store/TooltipStore.d.ts +4 -2
  648. package/tooltip/store/TooltipStore.js +7 -4
  649. package/tooltip/trigger/TooltipTrigger.js +1 -1
  650. package/tooltip/viewport/TooltipViewport.d.ts +1 -1
  651. package/tooltip/viewport/TooltipViewport.js +28 -12
  652. package/use-render/index.d.ts +2 -1
  653. package/utils/FloatingPortalLite.d.ts +1 -1
  654. package/utils/popups/popupStoreUtils.js +21 -2
  655. package/utils/resolveValueLabel.d.ts +5 -1
  656. package/utils/resolveValueLabel.js +48 -22
  657. package/utils/styles.d.ts +1 -1
  658. package/utils/styles.js +10 -6
  659. package/utils/types.d.ts +1 -1
  660. package/utils/useAnimationsFinished.d.ts +2 -2
  661. package/utils/useAnimationsFinished.js +56 -33
  662. package/utils/useOpenChangeComplete.js +8 -10
  663. package/utils/useOpenInteractionType.js +6 -1
  664. package/utils/usePopupAutoResize.js +82 -46
  665. package/esm/utils/interactions/useFocusWithDelay.d.ts +0 -9
  666. package/esm/utils/interactions/useFocusWithDelay.js +0 -81
  667. package/utils/interactions/useFocusWithDelay.d.ts +0 -9
  668. package/utils/interactions/useFocusWithDelay.js +0 -87
  669. /package/esm/utils/{useMixedToggleClickHander.d.ts → useMixedToggleClickHandler.d.ts} +0 -0
  670. /package/esm/utils/{useMixedToggleClickHander.js → useMixedToggleClickHandler.js} +0 -0
  671. /package/utils/{useMixedToggleClickHander.d.ts → useMixedToggleClickHandler.d.ts} +0 -0
  672. /package/utils/{useMixedToggleClickHander.js → useMixedToggleClickHandler.js} +0 -0
@@ -21,7 +21,8 @@ function createInitialState() {
21
21
  stickIfOpen: true,
22
22
  nested: false,
23
23
  openOnHover: false,
24
- closeDelay: 0
24
+ closeDelay: 0,
25
+ hasViewport: false
25
26
  };
26
27
  }
27
28
  const selectors = {
@@ -35,7 +36,8 @@ const selectors = {
35
36
  titleElementId: createSelector(state => state.titleElementId),
36
37
  descriptionElementId: createSelector(state => state.descriptionElementId),
37
38
  openOnHover: createSelector(state => state.openOnHover),
38
- closeDelay: createSelector(state => state.closeDelay)
39
+ closeDelay: createSelector(state => state.closeDelay),
40
+ hasViewport: createSelector(state => state.hasViewport)
39
41
  };
40
42
  export class PopoverStore extends ReactStore {
41
43
  constructor(initialState) {
@@ -113,10 +115,11 @@ export class PopoverStore extends ReactStore {
113
115
  }
114
116
  };
115
117
  static useStore(externalStore, initialState) {
116
- const store = useRefWithInit(() => {
117
- return externalStore ?? new PopoverStore(initialState);
118
+ const internalStore = useRefWithInit(() => {
119
+ return new PopoverStore(initialState);
118
120
  }).current;
119
- useOnMount(store.disposeEffect);
121
+ const store = externalStore ?? internalStore;
122
+ useOnMount(internalStore.disposeEffect);
120
123
  return store;
121
124
  }
122
125
  disposeEffect = () => {
@@ -6,7 +6,7 @@ import type { BaseUIComponentProps } from "../../utils/types.js";
6
6
  *
7
7
  * Documentation: [Base UI Popover](https://base-ui.com/react/components/popover)
8
8
  */
9
- export declare const PopoverTitle: React.ForwardRefExoticComponent<PopoverTitleProps & React.RefAttributes<HTMLHeadingElement>>;
9
+ export declare const PopoverTitle: React.ForwardRefExoticComponent<Omit<PopoverTitleProps, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
10
10
  export interface PopoverTitleState {}
11
11
  export interface PopoverTitleProps extends BaseUIComponentProps<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6', PopoverTitle.State> {}
12
12
  export declare namespace PopoverTitle {
@@ -123,8 +123,8 @@ export const PopoverTrigger = /*#__PURE__*/React.forwardRef(function PopoverTrig
123
123
  ReactDOM.flushSync(() => {
124
124
  store.setOpen(false, createChangeEventDetails(REASONS.focusOut, event.nativeEvent, event.currentTarget));
125
125
  });
126
- let nextTabbable = getTabbableAfterElement(triggerElementRef.current);
127
- while (nextTabbable !== null && contains(positionerElement, nextTabbable) || nextTabbable?.hasAttribute('aria-hidden')) {
126
+ let nextTabbable = getTabbableAfterElement(store.context.triggerFocusTargetRef.current || triggerElementRef.current);
127
+ while (nextTabbable !== null && contains(positionerElement, nextTabbable)) {
128
128
  const prevTabbable = nextTabbable;
129
129
  nextTabbable = getNextTabbable(nextTabbable);
130
130
  if (nextTabbable === prevTabbable) {
@@ -8,7 +8,7 @@ import { BaseUIComponentProps } from "../../utils/types.js";
8
8
  *
9
9
  * Documentation: [Base UI Popover](https://base-ui.com/react/components/popover)
10
10
  */
11
- export declare const PopoverViewport: React.ForwardRefExoticComponent<PopoverViewport.Props & React.RefAttributes<HTMLDivElement>>;
11
+ export declare const PopoverViewport: React.ForwardRefExoticComponent<Omit<PopoverViewport.Props, "ref"> & React.RefAttributes<HTMLDivElement>>;
12
12
  export declare namespace PopoverViewport {
13
13
  interface Props extends BaseUIComponentProps<'div', State> {
14
14
  /**
@@ -7,9 +7,12 @@ import { usePreviousValue } from '@base-ui/utils/usePreviousValue';
7
7
  import { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';
8
8
  import { useStableCallback } from '@base-ui/utils/useStableCallback';
9
9
  import { usePopoverRootContext } from "../root/PopoverRootContext.js";
10
+ import { usePopoverPositionerContext } from "../positioner/PopoverPositionerContext.js";
10
11
  import { useAnimationsFinished } from "../../utils/useAnimationsFinished.js";
12
+ import { usePopupAutoResize } from "../../utils/usePopupAutoResize.js";
11
13
  import { useRenderElement } from "../../utils/useRenderElement.js";
12
14
  import { PopoverViewportCssVars } from "./PopoverViewportCssVars.js";
15
+ import { useDirection } from "../../direction-provider/DirectionContext.js";
13
16
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
17
  const stateAttributesMapping = {
15
18
  activationDirection: value => value ? {
@@ -35,9 +38,14 @@ export const PopoverViewport = /*#__PURE__*/React.forwardRef(function PopoverVie
35
38
  const {
36
39
  store
37
40
  } = usePopoverRootContext();
41
+ const positioner = usePopoverPositionerContext();
42
+ const direction = useDirection();
38
43
  const activeTrigger = store.useState('activeTriggerElement');
39
44
  const open = store.useState('open');
40
- const floatingContext = store.useState('floatingRootContext');
45
+ const mounted = store.useState('mounted');
46
+ const payload = store.useState('payload');
47
+ const popupElement = store.useState('popupElement');
48
+ const positionerElement = store.useState('positionerElement');
41
49
  const previousActiveTrigger = usePreviousValue(open ? activeTrigger : null);
42
50
  const capturedNodeRef = React.useRef(null);
43
51
  const [previousContentNode, setPreviousContentNode] = React.useState(null);
@@ -48,6 +56,12 @@ export const PopoverViewport = /*#__PURE__*/React.forwardRef(function PopoverVie
48
56
  const cleanupFrame = useAnimationFrame();
49
57
  const [previousContentDimensions, setPreviousContentDimensions] = React.useState(null);
50
58
  const [showStartingStyleAttribute, setShowStartingStyleAttribute] = React.useState(false);
59
+ useIsoLayoutEffect(() => {
60
+ store.set('hasViewport', true);
61
+ return () => {
62
+ store.set('hasViewport', false);
63
+ };
64
+ }, [store]);
51
65
 
52
66
  // Capture a clone of the current content DOM subtree when not transitioning.
53
67
  // We can't store previous React nodes as they may be stateful; instead we capture DOM clones for visual continuity.
@@ -73,22 +87,14 @@ export const PopoverViewport = /*#__PURE__*/React.forwardRef(function PopoverVie
73
87
  currentContainerRef.current?.style.setProperty('transition', 'none');
74
88
  previousContainerRef.current?.style.setProperty('display', 'none');
75
89
  });
76
- const handleMeasureLayoutComplete = useStableCallback(data => {
90
+ const handleMeasureLayoutComplete = useStableCallback(previousDimensions => {
77
91
  currentContainerRef.current?.style.removeProperty('animation');
78
92
  currentContainerRef.current?.style.removeProperty('transition');
79
93
  previousContainerRef.current?.style.removeProperty('display');
80
- if (!previousContentDimensions) {
81
- setPreviousContentDimensions(data.previousDimensions);
94
+ if (previousDimensions) {
95
+ setPreviousContentDimensions(previousDimensions);
82
96
  }
83
97
  });
84
- React.useEffect(() => {
85
- floatingContext.context.events.on('measure-layout', handleMeasureLayout);
86
- floatingContext.context.events.on('measure-layout-complete', handleMeasureLayoutComplete);
87
- return () => {
88
- floatingContext.context.events.off('measure-layout', handleMeasureLayout);
89
- floatingContext.context.events.off('measure-layout-complete', handleMeasureLayoutComplete);
90
- };
91
- }, [floatingContext, handleMeasureLayout, handleMeasureLayoutComplete]);
92
98
  const lastHandledTriggerRef = React.useRef(null);
93
99
  useIsoLayoutEffect(() => {
94
100
  // When a trigger changes, set the captured children HTML to state,
@@ -151,6 +157,16 @@ export const PopoverViewport = /*#__PURE__*/React.forwardRef(function PopoverVie
151
157
  }
152
158
  container.replaceChildren(...Array.from(previousContentNode.childNodes));
153
159
  }, [previousContentNode]);
160
+ usePopupAutoResize({
161
+ popupElement,
162
+ positionerElement,
163
+ mounted,
164
+ content: payload,
165
+ onMeasureLayout: handleMeasureLayout,
166
+ onMeasureLayoutComplete: handleMeasureLayoutComplete,
167
+ side: positioner.side,
168
+ direction
169
+ });
154
170
  const state = React.useMemo(() => {
155
171
  return {
156
172
  activationDirection: getActivationDirection(newTriggerOffset),
@@ -7,7 +7,7 @@ import type { Align, Side } from "../../utils/useAnchorPositioning.js";
7
7
  *
8
8
  * Documentation: [Base UI Preview Card](https://base-ui.com/react/components/preview-card)
9
9
  */
10
- export declare const PreviewCardArrow: React.ForwardRefExoticComponent<PreviewCardArrowProps & React.RefAttributes<HTMLDivElement>>;
10
+ export declare const PreviewCardArrow: React.ForwardRefExoticComponent<Omit<PreviewCardArrowProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
11
11
  export interface PreviewCardArrowState {
12
12
  /**
13
13
  * Whether the preview card is currently open.
@@ -18,9 +18,7 @@ export const PreviewCardArrow = /*#__PURE__*/React.forwardRef(function PreviewCa
18
18
  className,
19
19
  ...elementProps
20
20
  } = componentProps;
21
- const {
22
- open
23
- } = usePreviewCardRootContext();
21
+ const store = usePreviewCardRootContext();
24
22
  const {
25
23
  arrowRef,
26
24
  side,
@@ -28,6 +26,7 @@ export const PreviewCardArrow = /*#__PURE__*/React.forwardRef(function PreviewCa
28
26
  arrowUncentered,
29
27
  arrowStyles
30
28
  } = usePreviewCardPositionerContext();
29
+ const open = store.useState('open');
31
30
  const state = React.useMemo(() => ({
32
31
  open,
33
32
  side,
@@ -7,7 +7,7 @@ import type { TransitionStatus } from "../../utils/useTransitionStatus.js";
7
7
  *
8
8
  * Documentation: [Base UI Preview Card](https://base-ui.com/react/components/preview-card)
9
9
  */
10
- export declare const PreviewCardBackdrop: React.ForwardRefExoticComponent<PreviewCardBackdropProps & React.RefAttributes<HTMLDivElement>>;
10
+ export declare const PreviewCardBackdrop: React.ForwardRefExoticComponent<Omit<PreviewCardBackdropProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
11
11
  export interface PreviewCardBackdropState {
12
12
  /**
13
13
  * Whether the preview card is currently open.
@@ -22,11 +22,10 @@ export const PreviewCardBackdrop = /*#__PURE__*/React.forwardRef(function Previe
22
22
  className,
23
23
  ...elementProps
24
24
  } = componentProps;
25
- const {
26
- open,
27
- mounted,
28
- transitionStatus
29
- } = usePreviewCardRootContext();
25
+ const store = usePreviewCardRootContext();
26
+ const open = store.useState('open');
27
+ const mounted = store.useState('mounted');
28
+ const transitionStatus = store.useState('transitionStatus');
30
29
  const state = React.useMemo(() => ({
31
30
  open,
32
31
  transitionStatus
@@ -4,4 +4,6 @@ export { PreviewCardTrigger as Trigger } from "./trigger/PreviewCardTrigger.js";
4
4
  export { PreviewCardPositioner as Positioner } from "./positioner/PreviewCardPositioner.js";
5
5
  export { PreviewCardPopup as Popup } from "./popup/PreviewCardPopup.js";
6
6
  export { PreviewCardArrow as Arrow } from "./arrow/PreviewCardArrow.js";
7
- export { PreviewCardBackdrop as Backdrop } from "./backdrop/PreviewCardBackdrop.js";
7
+ export { PreviewCardBackdrop as Backdrop } from "./backdrop/PreviewCardBackdrop.js";
8
+ export { PreviewCardViewport as Viewport } from "./viewport/PreviewCardViewport.js";
9
+ export { createPreviewCardHandle as createHandle, PreviewCardHandle as Handle } from "./store/PreviewCardHandle.js";
@@ -4,4 +4,6 @@ export { PreviewCardTrigger as Trigger } from "./trigger/PreviewCardTrigger.js";
4
4
  export { PreviewCardPositioner as Positioner } from "./positioner/PreviewCardPositioner.js";
5
5
  export { PreviewCardPopup as Popup } from "./popup/PreviewCardPopup.js";
6
6
  export { PreviewCardArrow as Arrow } from "./arrow/PreviewCardArrow.js";
7
- export { PreviewCardBackdrop as Backdrop } from "./backdrop/PreviewCardBackdrop.js";
7
+ export { PreviewCardBackdrop as Backdrop } from "./backdrop/PreviewCardBackdrop.js";
8
+ export { PreviewCardViewport as Viewport } from "./viewport/PreviewCardViewport.js";
9
+ export { createPreviewCardHandle as createHandle, PreviewCardHandle as Handle } from "./store/PreviewCardHandle.js";
@@ -8,7 +8,7 @@ import type { TransitionStatus } from "../../utils/useTransitionStatus.js";
8
8
  *
9
9
  * Documentation: [Base UI Preview Card](https://base-ui.com/react/components/preview-card)
10
10
  */
11
- export declare const PreviewCardPopup: React.ForwardRefExoticComponent<PreviewCardPopupProps & React.RefAttributes<HTMLDivElement>>;
11
+ export declare const PreviewCardPopup: React.ForwardRefExoticComponent<Omit<PreviewCardPopupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
12
12
  export interface PreviewCardPopupState {
13
13
  /**
14
14
  * Whether the preview card is currently open.
@@ -16,6 +16,7 @@ export interface PreviewCardPopupState {
16
16
  open: boolean;
17
17
  side: Side;
18
18
  align: Align;
19
+ instant: 'dismiss' | 'focus' | undefined;
19
20
  transitionStatus: TransitionStatus;
20
21
  }
21
22
  export interface PreviewCardPopupProps extends BaseUIComponentProps<'div', PreviewCardPopup.State> {}
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import * as React from 'react';
4
+ import { useStableCallback } from '@base-ui/utils/useStableCallback';
4
5
  import { usePreviewCardRootContext } from "../root/PreviewCardContext.js";
5
6
  import { usePreviewCardPositionerContext } from "../positioner/PreviewCardPositionerContext.js";
6
7
  import { popupStateMapping as baseMapping } from "../../utils/popupStateMapping.js";
@@ -8,6 +9,7 @@ import { transitionStatusMapping } from "../../utils/stateAttributesMapping.js";
8
9
  import { useOpenChangeComplete } from "../../utils/useOpenChangeComplete.js";
9
10
  import { useRenderElement } from "../../utils/useRenderElement.js";
10
11
  import { getDisabledMountTransitionStyles } from "../../utils/getDisabledMountTransitionStyles.js";
12
+ import { useHoverFloatingInteraction } from "../../floating-ui-react/index.js";
11
13
  const stateAttributesMapping = {
12
14
  ...baseMapping,
13
15
  ...transitionStatusMapping
@@ -25,35 +27,39 @@ export const PreviewCardPopup = /*#__PURE__*/React.forwardRef(function PreviewCa
25
27
  render,
26
28
  ...elementProps
27
29
  } = componentProps;
28
- const {
29
- open,
30
- transitionStatus,
31
- popupRef,
32
- onOpenChangeComplete,
33
- popupProps
34
- } = usePreviewCardRootContext();
30
+ const store = usePreviewCardRootContext();
35
31
  const {
36
32
  side,
37
33
  align
38
34
  } = usePreviewCardPositionerContext();
35
+ const open = store.useState('open');
36
+ const instantType = store.useState('instantType');
37
+ const transitionStatus = store.useState('transitionStatus');
38
+ const popupProps = store.useState('popupProps');
39
+ const floatingContext = store.useState('floatingRootContext');
39
40
  useOpenChangeComplete({
40
41
  open,
41
- ref: popupRef,
42
+ ref: store.context.popupRef,
42
43
  onComplete() {
43
44
  if (open) {
44
- onOpenChangeComplete?.(true);
45
+ store.context.onOpenChangeComplete?.(true);
45
46
  }
46
47
  }
47
48
  });
49
+ const getCloseDelay = useStableCallback(() => store.context.closeDelayRef.current);
50
+ useHoverFloatingInteraction(floatingContext, {
51
+ closeDelay: getCloseDelay
52
+ });
48
53
  const state = React.useMemo(() => ({
49
54
  open,
50
55
  side,
51
56
  align,
57
+ instant: instantType,
52
58
  transitionStatus
53
- }), [open, side, align, transitionStatus]);
59
+ }), [open, side, align, instantType, transitionStatus]);
54
60
  const element = useRenderElement('div', componentProps, {
55
- ref: [popupRef, forwardedRef],
56
61
  state,
62
+ ref: [forwardedRef, store.context.popupRef, store.useStateSetter('popupElement')],
57
63
  props: [popupProps, getDisabledMountTransitionStyles(transitionStatus), elementProps],
58
64
  stateAttributesMapping
59
65
  });
@@ -7,7 +7,7 @@ import { FloatingPortalLite } from "../../utils/FloatingPortalLite.js";
7
7
  *
8
8
  * Documentation: [Base UI Preview Card](https://base-ui.com/react/components/preview-card)
9
9
  */
10
- export declare const PreviewCardPortal: React.ForwardRefExoticComponent<PreviewCardPortalProps & React.RefAttributes<HTMLDivElement>>;
10
+ export declare const PreviewCardPortal: React.ForwardRefExoticComponent<Omit<PreviewCardPortalProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
11
11
  export declare namespace PreviewCardPortal {
12
12
  interface State {}
13
13
  }
@@ -18,9 +18,8 @@ export const PreviewCardPortal = /*#__PURE__*/React.forwardRef(function PreviewC
18
18
  keepMounted = false,
19
19
  ...portalProps
20
20
  } = props;
21
- const {
22
- mounted
23
- } = usePreviewCardRootContext();
21
+ const store = usePreviewCardRootContext();
22
+ const mounted = store.useState('mounted');
24
23
  const shouldRender = mounted || keepMounted;
25
24
  if (!shouldRender) {
26
25
  return null;
@@ -7,7 +7,7 @@ import type { BaseUIComponentProps } from "../../utils/types.js";
7
7
  *
8
8
  * Documentation: [Base UI Preview Card](https://base-ui.com/react/components/preview-card)
9
9
  */
10
- export declare const PreviewCardPositioner: React.ForwardRefExoticComponent<PreviewCardPositionerProps & React.RefAttributes<HTMLDivElement>>;
10
+ export declare const PreviewCardPositioner: React.ForwardRefExoticComponent<Omit<PreviewCardPositionerProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
11
11
  export interface PreviewCardPositionerState {
12
12
  /**
13
13
  * Whether the preview card is currently open.
@@ -16,6 +16,7 @@ export interface PreviewCardPositionerState {
16
16
  side: Side;
17
17
  align: Align;
18
18
  anchorHidden: boolean;
19
+ instant: 'dismiss' | 'focus' | undefined;
19
20
  }
20
21
  export interface PreviewCardPositionerProps extends useAnchorPositioning.SharedParameters, BaseUIComponentProps<'div', PreviewCardPositioner.State> {}
21
22
  export declare namespace PreviewCardPositioner {
@@ -8,6 +8,8 @@ import { popupStateMapping } from "../../utils/popupStateMapping.js";
8
8
  import { usePreviewCardPortalContext } from "../portal/PreviewCardPortalContext.js";
9
9
  import { POPUP_COLLISION_AVOIDANCE } from "../../utils/constants.js";
10
10
  import { useRenderElement } from "../../utils/useRenderElement.js";
11
+ import { adaptiveOrigin } from "../../utils/adaptiveOriginMiddleware.js";
12
+ import { getDisabledMountTransitionStyles } from "../../utils/getDisabledMountTransitionStyles.js";
11
13
 
12
14
  /**
13
15
  * Positions the popup against the trigger.
@@ -34,13 +36,14 @@ export const PreviewCardPositioner = /*#__PURE__*/React.forwardRef(function Prev
34
36
  collisionAvoidance = POPUP_COLLISION_AVOIDANCE,
35
37
  ...elementProps
36
38
  } = componentProps;
37
- const {
38
- open,
39
- mounted,
40
- floatingRootContext,
41
- setPositionerElement
42
- } = usePreviewCardRootContext();
39
+ const store = usePreviewCardRootContext();
43
40
  const keepMounted = usePreviewCardPortalContext();
41
+ const open = store.useState('open');
42
+ const mounted = store.useState('mounted');
43
+ const floatingRootContext = store.useState('floatingRootContext');
44
+ const instantType = store.useState('instantType');
45
+ const transitionStatus = store.useState('transitionStatus');
46
+ const hasViewport = store.useState('hasViewport');
44
47
  const positioning = useAnchorPositioning({
45
48
  anchor,
46
49
  floatingRootContext,
@@ -56,7 +59,8 @@ export const PreviewCardPositioner = /*#__PURE__*/React.forwardRef(function Prev
56
59
  sticky,
57
60
  disableAnchorTracking,
58
61
  keepMounted,
59
- collisionAvoidance
62
+ collisionAvoidance,
63
+ adaptiveOrigin: hasViewport ? adaptiveOrigin : undefined
60
64
  });
61
65
  const defaultProps = React.useMemo(() => {
62
66
  const hiddenStyles = {};
@@ -76,8 +80,9 @@ export const PreviewCardPositioner = /*#__PURE__*/React.forwardRef(function Prev
76
80
  open,
77
81
  side: positioning.side,
78
82
  align: positioning.align,
79
- anchorHidden: positioning.anchorHidden
80
- }), [open, positioning.side, positioning.align, positioning.anchorHidden]);
83
+ anchorHidden: positioning.anchorHidden,
84
+ instant: instantType
85
+ }), [open, positioning.side, positioning.align, positioning.anchorHidden, instantType]);
81
86
  const contextValue = React.useMemo(() => ({
82
87
  side: positioning.side,
83
88
  align: positioning.align,
@@ -87,8 +92,8 @@ export const PreviewCardPositioner = /*#__PURE__*/React.forwardRef(function Prev
87
92
  }), [positioning.side, positioning.align, positioning.arrowRef, positioning.arrowUncentered, positioning.arrowStyles]);
88
93
  const element = useRenderElement('div', componentProps, {
89
94
  state,
90
- ref: [setPositionerElement, forwardedRef],
91
- props: [defaultProps, elementProps],
95
+ props: [defaultProps, getDisabledMountTransitionStyles(transitionStatus), elementProps],
96
+ ref: [forwardedRef, store.useStateSetter('positionerElement')],
92
97
  stateAttributesMapping: popupStateMapping
93
98
  });
94
99
  return /*#__PURE__*/_jsx(PreviewCardPositionerContext.Provider, {
@@ -1,27 +1,6 @@
1
1
  import * as React from 'react';
2
- import type { FloatingRootContext } from "../../floating-ui-react/index.js";
3
- import type { TransitionStatus } from "../../utils/useTransitionStatus.js";
4
- import type { HTMLProps } from "../../utils/types.js";
5
- import type { PreviewCardRoot } from "./PreviewCardRoot.js";
6
- export interface PreviewCardTriggerDelayConfig {
7
- delay?: number;
8
- closeDelay?: number;
9
- }
10
- export interface PreviewCardRootContext {
11
- open: boolean;
12
- setOpen: (open: boolean, eventDetails: PreviewCardRoot.ChangeEventDetails) => void;
13
- setTriggerElement: (el: Element | null) => void;
14
- positionerElement: HTMLElement | null;
15
- setPositionerElement: (el: HTMLElement | null) => void;
16
- mounted: boolean;
17
- setMounted: React.Dispatch<React.SetStateAction<boolean>>;
18
- triggerProps: HTMLProps;
19
- popupProps: HTMLProps;
20
- floatingRootContext: FloatingRootContext;
21
- transitionStatus: TransitionStatus;
22
- popupRef: React.RefObject<HTMLElement | null>;
23
- onOpenChangeComplete: ((open: boolean) => void) | undefined;
24
- writeDelayRefs: (config: PreviewCardTriggerDelayConfig) => void;
25
- }
26
- export declare const PreviewCardRootContext: React.Context<PreviewCardRootContext | undefined>;
27
- export declare function usePreviewCardRootContext(): PreviewCardRootContext;
2
+ import { PreviewCardStore } from "../store/PreviewCardStore.js";
3
+ export type PreviewCardRootContext<Payload = unknown> = PreviewCardStore<Payload>;
4
+ export declare const PreviewCardRootContext: React.Context<PreviewCardRootContext<unknown> | undefined>;
5
+ export declare function usePreviewCardRootContext(optional?: false): PreviewCardRootContext;
6
+ export declare function usePreviewCardRootContext(optional: true): PreviewCardRootContext | undefined;
@@ -4,9 +4,9 @@ import _formatErrorMessage from "@base-ui/utils/formatErrorMessage";
4
4
  import * as React from 'react';
5
5
  export const PreviewCardRootContext = /*#__PURE__*/React.createContext(undefined);
6
6
  if (process.env.NODE_ENV !== "production") PreviewCardRootContext.displayName = "PreviewCardRootContext";
7
- export function usePreviewCardRootContext() {
7
+ export function usePreviewCardRootContext(optional) {
8
8
  const context = React.useContext(PreviewCardRootContext);
9
- if (context === undefined) {
9
+ if (context === undefined && !optional) {
10
10
  throw new Error(process.env.NODE_ENV !== "production" ? 'Base UI: PreviewCardRootContext is missing. PreviewCard parts must be placed within <PreviewCard.Root>.' : _formatErrorMessage(50));
11
11
  }
12
12
  return context;
@@ -1,16 +1,17 @@
1
1
  import * as React from 'react';
2
2
  import { type BaseUIChangeEventDetails } from "../../utils/createBaseUIEventDetails.js";
3
3
  import { REASONS } from "../../utils/reasons.js";
4
+ import { PayloadChildRenderFunction } from "../../utils/popups/index.js";
5
+ import { PreviewCardHandle } from "../store/PreviewCardHandle.js";
4
6
  /**
5
7
  * Groups all parts of the preview card.
6
8
  * Doesn’t render its own HTML element.
7
9
  *
8
10
  * Documentation: [Base UI Preview Card](https://base-ui.com/react/components/preview-card)
9
11
  */
10
- export declare function PreviewCardRoot(props: PreviewCardRoot.Props): import("react/jsx-runtime").JSX.Element;
12
+ export declare function PreviewCardRoot<Payload>(props: PreviewCardRoot.Props<Payload>): import("react/jsx-runtime").JSX.Element;
11
13
  export interface PreviewCardRootState {}
12
- export interface PreviewCardRootProps {
13
- children?: React.ReactNode;
14
+ export interface PreviewCardRootProps<Payload = unknown> {
14
15
  /**
15
16
  * Whether the preview card is initially open.
16
17
  *
@@ -32,20 +33,44 @@ export interface PreviewCardRootProps {
32
33
  onOpenChangeComplete?: (open: boolean) => void;
33
34
  /**
34
35
  * A ref to imperative actions.
35
- * - `unmount`: When specified, the preview card will not be unmounted when closed.
36
- * Instead, the `unmount` function must be called to unmount the preview card manually.
37
- * Useful when the preview card's animation is controlled by an external library.
36
+ * - `unmount`: Unmounts the preview card popup.
37
+ * - `close`: Closes the preview card imperatively when called.
38
38
  */
39
- actionsRef?: React.RefObject<PreviewCardRoot.Actions>;
39
+ actionsRef?: React.RefObject<PreviewCardRoot.Actions | null>;
40
+ /**
41
+ * A handle to associate the preview card with a trigger.
42
+ * If specified, allows external triggers to control the card's open state.
43
+ * Can be created with the PreviewCard.createHandle() method.
44
+ */
45
+ handle?: PreviewCardHandle<Payload>;
46
+ /**
47
+ * The content of the preview card.
48
+ * This can be a regular React node or a render function that receives the `payload` of the active trigger.
49
+ */
50
+ children?: React.ReactNode | PayloadChildRenderFunction<Payload>;
51
+ /**
52
+ * ID of the trigger that the preview card is associated with.
53
+ * This is useful in conjuntion with the `open` prop to create a controlled preview card.
54
+ * There's no need to specify this prop when the preview card is uncontrolled (i.e. when the `open` prop is not set).
55
+ */
56
+ triggerId?: string | null;
57
+ /**
58
+ * ID of the trigger that the preview card is associated with.
59
+ * This is useful in conjunction with the `defaultOpen` prop to create an initially open preview card.
60
+ */
61
+ defaultTriggerId?: string | null;
40
62
  }
41
63
  export interface PreviewCardRootActions {
42
64
  unmount: () => void;
65
+ close: () => void;
43
66
  }
44
- export type PreviewCardRootChangeEventReason = typeof REASONS.triggerHover | typeof REASONS.triggerFocus | typeof REASONS.triggerPress | typeof REASONS.outsidePress | typeof REASONS.escapeKey | typeof REASONS.none;
45
- export type PreviewCardRootChangeEventDetails = BaseUIChangeEventDetails<PreviewCardRoot.ChangeEventReason>;
67
+ export type PreviewCardRootChangeEventReason = typeof REASONS.triggerHover | typeof REASONS.triggerFocus | typeof REASONS.triggerPress | typeof REASONS.outsidePress | typeof REASONS.escapeKey | typeof REASONS.imperativeAction | typeof REASONS.none;
68
+ export type PreviewCardRootChangeEventDetails = BaseUIChangeEventDetails<PreviewCardRoot.ChangeEventReason> & {
69
+ preventUnmountOnClose(): void;
70
+ };
46
71
  export declare namespace PreviewCardRoot {
47
72
  type State = PreviewCardRootState;
48
- type Props = PreviewCardRootProps;
73
+ type Props<Payload = unknown> = PreviewCardRootProps<Payload>;
49
74
  type Actions = PreviewCardRootActions;
50
75
  type ChangeEventReason = PreviewCardRootChangeEventReason;
51
76
  type ChangeEventDetails = PreviewCardRootChangeEventDetails;