@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
@@ -14,6 +14,8 @@ var _popupStateMapping = require("../../utils/popupStateMapping");
14
14
  var _PreviewCardPortalContext = require("../portal/PreviewCardPortalContext");
15
15
  var _constants = require("../../utils/constants");
16
16
  var _useRenderElement = require("../../utils/useRenderElement");
17
+ var _adaptiveOriginMiddleware = require("../../utils/adaptiveOriginMiddleware");
18
+ var _getDisabledMountTransitionStyles = require("../../utils/getDisabledMountTransitionStyles");
17
19
  var _jsxRuntime = require("react/jsx-runtime");
18
20
  /**
19
21
  * Positions the popup against the trigger.
@@ -39,13 +41,14 @@ const PreviewCardPositioner = exports.PreviewCardPositioner = /*#__PURE__*/React
39
41
  collisionAvoidance = _constants.POPUP_COLLISION_AVOIDANCE,
40
42
  ...elementProps
41
43
  } = componentProps;
42
- const {
43
- open,
44
- mounted,
45
- floatingRootContext,
46
- setPositionerElement
47
- } = (0, _PreviewCardContext.usePreviewCardRootContext)();
44
+ const store = (0, _PreviewCardContext.usePreviewCardRootContext)();
48
45
  const keepMounted = (0, _PreviewCardPortalContext.usePreviewCardPortalContext)();
46
+ const open = store.useState('open');
47
+ const mounted = store.useState('mounted');
48
+ const floatingRootContext = store.useState('floatingRootContext');
49
+ const instantType = store.useState('instantType');
50
+ const transitionStatus = store.useState('transitionStatus');
51
+ const hasViewport = store.useState('hasViewport');
49
52
  const positioning = (0, _useAnchorPositioning.useAnchorPositioning)({
50
53
  anchor,
51
54
  floatingRootContext,
@@ -61,7 +64,8 @@ const PreviewCardPositioner = exports.PreviewCardPositioner = /*#__PURE__*/React
61
64
  sticky,
62
65
  disableAnchorTracking,
63
66
  keepMounted,
64
- collisionAvoidance
67
+ collisionAvoidance,
68
+ adaptiveOrigin: hasViewport ? _adaptiveOriginMiddleware.adaptiveOrigin : undefined
65
69
  });
66
70
  const defaultProps = React.useMemo(() => {
67
71
  const hiddenStyles = {};
@@ -81,8 +85,9 @@ const PreviewCardPositioner = exports.PreviewCardPositioner = /*#__PURE__*/React
81
85
  open,
82
86
  side: positioning.side,
83
87
  align: positioning.align,
84
- anchorHidden: positioning.anchorHidden
85
- }), [open, positioning.side, positioning.align, positioning.anchorHidden]);
88
+ anchorHidden: positioning.anchorHidden,
89
+ instant: instantType
90
+ }), [open, positioning.side, positioning.align, positioning.anchorHidden, instantType]);
86
91
  const contextValue = React.useMemo(() => ({
87
92
  side: positioning.side,
88
93
  align: positioning.align,
@@ -92,8 +97,8 @@ const PreviewCardPositioner = exports.PreviewCardPositioner = /*#__PURE__*/React
92
97
  }), [positioning.side, positioning.align, positioning.arrowRef, positioning.arrowUncentered, positioning.arrowStyles]);
93
98
  const element = (0, _useRenderElement.useRenderElement)('div', componentProps, {
94
99
  state,
95
- ref: [setPositionerElement, forwardedRef],
96
- props: [defaultProps, elementProps],
100
+ props: [defaultProps, (0, _getDisabledMountTransitionStyles.getDisabledMountTransitionStyles)(transitionStatus), elementProps],
101
+ ref: [forwardedRef, store.useStateSetter('positionerElement')],
97
102
  stateAttributesMapping: _popupStateMapping.popupStateMapping
98
103
  });
99
104
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_PreviewCardPositionerContext.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;
@@ -12,9 +12,9 @@ var _formatErrorMessage2 = _interopRequireDefault(require("@base-ui/utils/format
12
12
  var React = _interopRequireWildcard(require("react"));
13
13
  const PreviewCardRootContext = exports.PreviewCardRootContext = /*#__PURE__*/React.createContext(undefined);
14
14
  if (process.env.NODE_ENV !== "production") PreviewCardRootContext.displayName = "PreviewCardRootContext";
15
- function usePreviewCardRootContext() {
15
+ function usePreviewCardRootContext(optional) {
16
16
  const context = React.useContext(PreviewCardRootContext);
17
- if (context === undefined) {
17
+ if (context === undefined && !optional) {
18
18
  throw new Error(process.env.NODE_ENV !== "production" ? 'Base UI: PreviewCardRootContext is missing. PreviewCard parts must be placed within <PreviewCard.Root>.' : (0, _formatErrorMessage2.default)(50));
19
19
  }
20
20
  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;
@@ -7,16 +7,13 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.PreviewCardRoot = PreviewCardRoot;
9
9
  var React = _interopRequireWildcard(require("react"));
10
- var ReactDOM = _interopRequireWildcard(require("react-dom"));
11
- var _useControlled = require("@base-ui/utils/useControlled");
12
- var _useStableCallback = require("@base-ui/utils/useStableCallback");
10
+ var _useIsoLayoutEffect = require("@base-ui/utils/useIsoLayoutEffect");
13
11
  var _floatingUiReact = require("../../floating-ui-react");
14
12
  var _PreviewCardContext = require("./PreviewCardContext");
15
- var _constants = require("../utils/constants");
13
+ var _createBaseUIEventDetails = require("../../utils/createBaseUIEventDetails");
16
14
  var _reasons = require("../../utils/reasons");
17
- var _useFocusWithDelay = require("../../utils/interactions/useFocusWithDelay");
18
- var _useOpenChangeComplete = require("../../utils/useOpenChangeComplete");
19
- var _useTransitionStatus = require("../../utils/useTransitionStatus");
15
+ var _PreviewCardStore = require("../store/PreviewCardStore");
16
+ var _popups = require("../../utils/popups");
20
17
  var _jsxRuntime = require("react/jsx-runtime");
21
18
  /**
22
19
  * Groups all parts of the preview card.
@@ -26,122 +23,71 @@ var _jsxRuntime = require("react/jsx-runtime");
26
23
  */
27
24
  function PreviewCardRoot(props) {
28
25
  const {
29
- open: externalOpen,
30
- defaultOpen,
31
- onOpenChange: onOpenChangeProp,
26
+ open: openProp,
27
+ defaultOpen = false,
28
+ onOpenChange,
32
29
  onOpenChangeComplete,
33
- actionsRef
30
+ actionsRef,
31
+ handle,
32
+ triggerId: triggerIdProp,
33
+ defaultTriggerId: defaultTriggerIdProp = null,
34
+ children
34
35
  } = props;
35
- const delayRef = React.useRef(_constants.OPEN_DELAY);
36
- const closeDelayRef = React.useRef(_constants.CLOSE_DELAY);
37
- const writeDelayRefs = (0, _useStableCallback.useStableCallback)(config => {
38
- delayRef.current = config.delay ?? _constants.OPEN_DELAY;
39
- closeDelayRef.current = config.closeDelay ?? _constants.CLOSE_DELAY;
36
+ const store = _PreviewCardStore.PreviewCardStore.useStore(handle?.store, {
37
+ open: openProp ?? defaultOpen,
38
+ activeTriggerId: triggerIdProp !== undefined ? triggerIdProp : defaultTriggerIdProp
40
39
  });
41
- const [triggerElement, setTriggerElement] = React.useState(null);
42
- const [positionerElement, setPositionerElement] = React.useState(null);
43
- const [instantTypeState, setInstantTypeState] = React.useState();
44
- const popupRef = React.useRef(null);
45
- const [open, setOpenUnwrapped] = (0, _useControlled.useControlled)({
46
- controlled: externalOpen,
47
- default: defaultOpen,
48
- name: 'PreviewCard',
49
- state: 'open'
50
- });
51
- const onOpenChange = (0, _useStableCallback.useStableCallback)(onOpenChangeProp);
40
+ store.useControlledProp('open', openProp, defaultOpen);
41
+ store.useControlledProp('activeTriggerId', triggerIdProp, defaultTriggerIdProp);
42
+ store.useContextCallback('onOpenChange', onOpenChange);
43
+ store.useContextCallback('onOpenChangeComplete', onOpenChangeComplete);
44
+ const open = store.useState('open');
45
+ const activeTriggerId = store.useState('activeTriggerId');
46
+ const payload = store.useState('payload');
47
+ (0, _popups.useImplicitActiveTrigger)(store);
52
48
  const {
53
- mounted,
54
- setMounted,
55
- transitionStatus
56
- } = (0, _useTransitionStatus.useTransitionStatus)(open);
57
- const handleUnmount = (0, _useStableCallback.useStableCallback)(() => {
58
- setMounted(false);
59
- onOpenChangeComplete?.(false);
60
- });
61
- (0, _useOpenChangeComplete.useOpenChangeComplete)({
62
- enabled: !actionsRef,
63
- open,
64
- ref: popupRef,
65
- onComplete() {
66
- if (!open) {
67
- handleUnmount();
49
+ forceUnmount
50
+ } = (0, _popups.useOpenStateTransitions)(open, store);
51
+ (0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
52
+ if (open) {
53
+ if (activeTriggerId == null) {
54
+ store.set('payload', undefined);
68
55
  }
69
56
  }
70
- });
57
+ }, [store, activeTriggerId, open]);
58
+ const handleImperativeClose = React.useCallback(() => {
59
+ store.setOpen(false, createPreviewCardEventDetails(store, _reasons.REASONS.imperativeAction));
60
+ }, [store]);
71
61
  React.useImperativeHandle(actionsRef, () => ({
72
- unmount: handleUnmount
73
- }), [handleUnmount]);
74
- const setOpen = (0, _useStableCallback.useStableCallback)((nextOpen, eventDetails) => {
75
- const isHover = eventDetails.reason === _reasons.REASONS.triggerHover;
76
- const isFocusOpen = nextOpen && eventDetails.reason === _reasons.REASONS.triggerFocus;
77
- const isDismissClose = !nextOpen && (eventDetails.reason === _reasons.REASONS.triggerPress || eventDetails.reason === _reasons.REASONS.escapeKey);
78
- onOpenChange(nextOpen, eventDetails);
79
- if (eventDetails.isCanceled) {
80
- return;
81
- }
82
- function changeState() {
83
- setOpenUnwrapped(nextOpen);
84
- }
85
- if (isHover) {
86
- // If a hover reason is provided, we need to flush the state synchronously. This ensures
87
- // `node.getAnimations()` knows about the new state.
88
- ReactDOM.flushSync(changeState);
89
- } else {
90
- changeState();
91
- }
92
- if (isFocusOpen || isDismissClose) {
93
- setInstantTypeState(isFocusOpen ? 'focus' : 'dismiss');
94
- } else if (eventDetails.reason === _reasons.REASONS.triggerHover) {
95
- setInstantTypeState(undefined);
96
- }
97
- });
98
- const context = (0, _floatingUiReact.useFloatingRootContext)({
99
- elements: {
100
- reference: triggerElement,
101
- floating: positionerElement
102
- },
103
- open,
104
- onOpenChange: setOpen
105
- });
106
- const instantType = instantTypeState;
107
- const getDelayValue = () => delayRef.current;
108
- const getCloseDelayValue = () => closeDelayRef.current;
109
- const hover = (0, _floatingUiReact.useHover)(context, {
110
- mouseOnly: true,
111
- move: false,
112
- handleClose: (0, _floatingUiReact.safePolygon)(),
113
- restMs: getDelayValue,
114
- delay: () => ({
115
- close: getCloseDelayValue()
116
- })
117
- });
118
- const focus = (0, _useFocusWithDelay.useFocusWithDelay)(context, {
119
- delay: getDelayValue
120
- });
121
- const dismiss = (0, _floatingUiReact.useDismiss)(context);
62
+ unmount: forceUnmount,
63
+ close: handleImperativeClose
64
+ }), [forceUnmount, handleImperativeClose]);
65
+ const floatingRootContext = store.useState('floatingRootContext');
66
+ const dismiss = (0, _floatingUiReact.useDismiss)(floatingRootContext);
122
67
  const {
123
68
  getReferenceProps,
69
+ getTriggerProps,
124
70
  getFloatingProps
125
- } = (0, _floatingUiReact.useInteractions)([hover, focus, dismiss]);
126
- const contextValue = React.useMemo(() => ({
127
- open,
128
- setOpen,
129
- mounted,
130
- setMounted,
131
- setTriggerElement,
132
- positionerElement,
133
- setPositionerElement,
134
- popupRef,
135
- triggerProps: getReferenceProps(),
136
- popupProps: getFloatingProps(),
137
- floatingRootContext: context,
138
- instantType,
139
- transitionStatus,
140
- onOpenChangeComplete,
141
- writeDelayRefs
142
- }), [open, setOpen, mounted, setMounted, positionerElement, getReferenceProps, getFloatingProps, context, instantType, transitionStatus, onOpenChangeComplete, writeDelayRefs]);
71
+ } = (0, _floatingUiReact.useInteractions)([dismiss]);
72
+ const activeTriggerProps = React.useMemo(() => getReferenceProps(), [getReferenceProps]);
73
+ const inactiveTriggerProps = React.useMemo(() => getTriggerProps(), [getTriggerProps]);
74
+ const popupProps = React.useMemo(() => getFloatingProps(), [getFloatingProps]);
75
+ store.useSyncedValues({
76
+ activeTriggerProps,
77
+ inactiveTriggerProps,
78
+ popupProps
79
+ });
143
80
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_PreviewCardContext.PreviewCardRootContext.Provider, {
144
- value: contextValue,
145
- children: props.children
81
+ value: store,
82
+ children: typeof children === 'function' ? children({
83
+ payload
84
+ }) : children
146
85
  });
86
+ }
87
+ function createPreviewCardEventDetails(store, reason) {
88
+ const details = (0, _createBaseUIEventDetails.createChangeEventDetails)(reason);
89
+ details.preventUnmountOnClose = () => {
90
+ store.set('preventUnmountingOnClose', true);
91
+ };
92
+ return details;
147
93
  }
@@ -0,0 +1,33 @@
1
+ import { PreviewCardStore } from "./PreviewCardStore.js";
2
+ /**
3
+ * A handle to control a preview card imperatively and to associate detached triggers with it.
4
+ */
5
+ export declare class PreviewCardHandle<Payload> {
6
+ /**
7
+ * Internal store holding the preview card state.
8
+ * @internal
9
+ */
10
+ readonly store: PreviewCardStore<Payload>;
11
+ constructor();
12
+ /**
13
+ * Opens the preview card and associates it with the trigger with the given ID.
14
+ * The trigger must be a PreviewCard.Trigger component with this handle passed as a prop.
15
+ *
16
+ * This method should only be called in an event handler or an effect (not during rendering).
17
+ *
18
+ * @param triggerId ID of the trigger to associate with the preview card.
19
+ */
20
+ open(triggerId: string): void;
21
+ /**
22
+ * Closes the preview card.
23
+ */
24
+ close(): void;
25
+ /**
26
+ * Indicates whether the preview card is currently open.
27
+ */
28
+ get isOpen(): boolean;
29
+ }
30
+ /**
31
+ * Creates a new handle to connect a PreviewCard.Root with detached PreviewCard.Trigger components.
32
+ */
33
+ export declare function createPreviewCardHandle<Payload>(): PreviewCardHandle<Payload>;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.PreviewCardHandle = void 0;
8
+ exports.createPreviewCardHandle = createPreviewCardHandle;
9
+ var _formatErrorMessage2 = _interopRequireDefault(require("@base-ui/utils/formatErrorMessage"));
10
+ var _PreviewCardStore = require("./PreviewCardStore");
11
+ var _createBaseUIEventDetails = require("../../utils/createBaseUIEventDetails");
12
+ var _reasons = require("../../utils/reasons");
13
+ /**
14
+ * A handle to control a preview card imperatively and to associate detached triggers with it.
15
+ */
16
+ class PreviewCardHandle {
17
+ /**
18
+ * Internal store holding the preview card state.
19
+ * @internal
20
+ */
21
+
22
+ constructor() {
23
+ this.store = new _PreviewCardStore.PreviewCardStore();
24
+ }
25
+
26
+ /**
27
+ * Opens the preview card and associates it with the trigger with the given ID.
28
+ * The trigger must be a PreviewCard.Trigger component with this handle passed as a prop.
29
+ *
30
+ * This method should only be called in an event handler or an effect (not during rendering).
31
+ *
32
+ * @param triggerId ID of the trigger to associate with the preview card.
33
+ */
34
+ open(triggerId) {
35
+ const triggerElement = triggerId ? this.store.context.triggerElements.getById(triggerId) : undefined;
36
+ if (triggerId && !triggerElement) {
37
+ throw new Error(process.env.NODE_ENV !== "production" ? `Base UI: PreviewCardHandle.open: No trigger found with id "${triggerId}".` : (0, _formatErrorMessage2.default)(88, triggerId));
38
+ }
39
+ this.store.setOpen(true, (0, _createBaseUIEventDetails.createChangeEventDetails)(_reasons.REASONS.imperativeAction, undefined, triggerElement));
40
+ }
41
+
42
+ /**
43
+ * Closes the preview card.
44
+ */
45
+ close() {
46
+ this.store.setOpen(false, (0, _createBaseUIEventDetails.createChangeEventDetails)(_reasons.REASONS.imperativeAction, undefined, undefined));
47
+ }
48
+
49
+ /**
50
+ * Indicates whether the preview card is currently open.
51
+ */
52
+ get isOpen() {
53
+ return this.store.state.open;
54
+ }
55
+ }
56
+
57
+ /**
58
+ * Creates a new handle to connect a PreviewCard.Root with detached PreviewCard.Trigger components.
59
+ */
60
+ exports.PreviewCardHandle = PreviewCardHandle;
61
+ function createPreviewCardHandle() {
62
+ return new PreviewCardHandle();
63
+ }
@@ -0,0 +1,36 @@
1
+ import * as React from 'react';
2
+ import { ReactStore } from '@base-ui/utils/store';
3
+ import { PopupStoreContext, PopupStoreState } from "../../utils/popups/index.js";
4
+ import { type PreviewCardRoot } from "../root/PreviewCardRoot.js";
5
+ export type State<Payload> = PopupStoreState<Payload> & {
6
+ instantType: 'dismiss' | 'focus' | undefined;
7
+ hasViewport: boolean;
8
+ };
9
+ export type Context = PopupStoreContext<PreviewCardRoot.ChangeEventDetails> & {
10
+ closeDelayRef: React.RefObject<number>;
11
+ };
12
+ declare const selectors: {
13
+ instantType: (state: State<unknown>) => "focus" | "dismiss" | undefined;
14
+ hasViewport: (state: State<unknown>) => boolean;
15
+ open: (state: PopupStoreState<unknown>) => boolean;
16
+ mounted: (state: PopupStoreState<unknown>) => boolean;
17
+ transitionStatus: (state: PopupStoreState<unknown>) => import("../../utils/useTransitionStatus.js").TransitionStatus;
18
+ floatingRootContext: (state: PopupStoreState<unknown>) => import("../../floating-ui-react/components/FloatingRootStore.js").FloatingRootStore;
19
+ preventUnmountingOnClose: (state: PopupStoreState<unknown>) => boolean;
20
+ payload: (state: PopupStoreState<unknown>) => unknown;
21
+ activeTriggerId: (state: PopupStoreState<unknown>) => string | null;
22
+ activeTriggerElement: (state: PopupStoreState<unknown>) => Element | null;
23
+ isTriggerActive: (state: PopupStoreState<unknown>, triggerId: string | undefined) => boolean;
24
+ isOpenedByTrigger: (state: PopupStoreState<unknown>, triggerId: string | undefined) => boolean;
25
+ isMountedByTrigger: (state: PopupStoreState<unknown>, triggerId: string | undefined) => boolean;
26
+ triggerProps: (state: PopupStoreState<unknown>, isActive: boolean) => import("../../index.js").HTMLProps;
27
+ popupProps: (state: PopupStoreState<unknown>) => import("../../index.js").HTMLProps;
28
+ popupElement: (state: PopupStoreState<unknown>) => HTMLElement | null;
29
+ positionerElement: (state: PopupStoreState<unknown>) => HTMLElement | null;
30
+ };
31
+ export declare class PreviewCardStore<Payload> extends ReactStore<Readonly<State<Payload>>, Context, typeof selectors> {
32
+ constructor(initialState?: Partial<State<Payload>>);
33
+ setOpen: (nextOpen: boolean, eventDetails: Omit<PreviewCardRoot.ChangeEventDetails, "preventUnmountOnClose">) => void;
34
+ static useStore<Payload>(externalStore: PreviewCardStore<Payload> | undefined, initialState?: Partial<State<Payload>>): PreviewCardStore<Payload>;
35
+ }
36
+ export {};
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.PreviewCardStore = void 0;
8
+ var React = _interopRequireWildcard(require("react"));
9
+ var ReactDOM = _interopRequireWildcard(require("react-dom"));
10
+ var _store = require("@base-ui/utils/store");
11
+ var _useRefWithInit = require("@base-ui/utils/useRefWithInit");
12
+ var _popups = require("../../utils/popups");
13
+ var _floatingUiReact = require("../../floating-ui-react");
14
+ var _reasons = require("../../utils/reasons");
15
+ var _constants = require("../utils/constants");
16
+ const selectors = {
17
+ ..._popups.popupStoreSelectors,
18
+ instantType: (0, _store.createSelector)(state => state.instantType),
19
+ hasViewport: (0, _store.createSelector)(state => state.hasViewport)
20
+ };
21
+ class PreviewCardStore extends _store.ReactStore {
22
+ constructor(initialState) {
23
+ super({
24
+ ...createInitialState(),
25
+ ...initialState
26
+ }, {
27
+ popupRef: /*#__PURE__*/React.createRef(),
28
+ onOpenChange: undefined,
29
+ onOpenChangeComplete: undefined,
30
+ triggerElements: new _popups.PopupTriggerMap(),
31
+ closeDelayRef: {
32
+ current: _constants.CLOSE_DELAY
33
+ }
34
+ }, selectors);
35
+ }
36
+ setOpen = (nextOpen, eventDetails) => {
37
+ const reason = eventDetails.reason;
38
+ const isHover = reason === _reasons.REASONS.triggerHover;
39
+ const isFocusOpen = nextOpen && reason === _reasons.REASONS.triggerFocus;
40
+ const isDismissClose = !nextOpen && (reason === _reasons.REASONS.triggerPress || reason === _reasons.REASONS.escapeKey);
41
+ eventDetails.preventUnmountOnClose = () => {
42
+ this.set('preventUnmountingOnClose', true);
43
+ };
44
+ this.context.onOpenChange?.(nextOpen, eventDetails);
45
+ if (eventDetails.isCanceled) {
46
+ return;
47
+ }
48
+ const changeState = () => {
49
+ const updatedState = {
50
+ open: nextOpen
51
+ };
52
+ if (isFocusOpen) {
53
+ updatedState.instantType = 'focus';
54
+ } else if (isDismissClose) {
55
+ updatedState.instantType = 'dismiss';
56
+ } else if (reason === _reasons.REASONS.triggerHover) {
57
+ updatedState.instantType = undefined;
58
+ }
59
+
60
+ // If a popup is closing, the `trigger` may be null.
61
+ // We want to keep the previous value so that exit animations are played and focus is returned correctly.
62
+ const newTriggerId = eventDetails.trigger?.id ?? null;
63
+ if (newTriggerId || nextOpen) {
64
+ updatedState.activeTriggerId = newTriggerId;
65
+ updatedState.activeTriggerElement = eventDetails.trigger ?? null;
66
+ }
67
+ this.update(updatedState);
68
+ };
69
+ if (isHover) {
70
+ // If a hover reason is provided, we need to flush the state synchronously. This ensures
71
+ // `node.getAnimations()` knows about the new state.
72
+ ReactDOM.flushSync(changeState);
73
+ } else {
74
+ changeState();
75
+ }
76
+ };
77
+ static useStore(externalStore, initialState) {
78
+ // eslint-disable-next-line react-hooks/rules-of-hooks
79
+ const internalStore = (0, _useRefWithInit.useRefWithInit)(() => {
80
+ return new PreviewCardStore(initialState);
81
+ }).current;
82
+ const store = externalStore ?? internalStore;
83
+
84
+ // eslint-disable-next-line react-hooks/rules-of-hooks
85
+ const floatingRootContext = (0, _floatingUiReact.useSyncedFloatingRootContext)({
86
+ popupStore: store,
87
+ onOpenChange: store.setOpen
88
+ });
89
+
90
+ // It's safe to set this here because when this code runs for the first time,
91
+ // nothing has had a chance to subscribe to the `store` yet.
92
+ // For subsequent renders, the `floatingRootContext` reference remains the same,
93
+ // so it's basically a no-op.
94
+ store.state.floatingRootContext = floatingRootContext;
95
+ return store;
96
+ }
97
+ }
98
+ exports.PreviewCardStore = PreviewCardStore;
99
+ function createInitialState() {
100
+ return {
101
+ ...(0, _popups.createInitialPopupStoreState)(),
102
+ instantType: undefined,
103
+ hasViewport: false
104
+ };
105
+ }
@@ -1,19 +1,31 @@
1
1
  import * as React from 'react';
2
2
  import type { BaseUIComponentProps } from "../../utils/types.js";
3
+ import { PreviewCardHandle } from "../store/PreviewCardHandle.js";
3
4
  /**
4
5
  * A link that opens the preview card.
5
6
  * Renders an `<a>` element.
6
7
  *
7
8
  * Documentation: [Base UI Preview Card](https://base-ui.com/react/components/preview-card)
8
9
  */
9
- export declare const PreviewCardTrigger: React.ForwardRefExoticComponent<PreviewCardTriggerProps & React.RefAttributes<HTMLAnchorElement>>;
10
+ export declare const PreviewCardTrigger: PreviewCardTrigger;
11
+ export interface PreviewCardTrigger {
12
+ <Payload>(componentProps: PreviewCardTrigger.Props<Payload> & React.RefAttributes<HTMLElement>): React.JSX.Element;
13
+ }
10
14
  export interface PreviewCardTriggerState {
11
15
  /**
12
16
  * Whether the preview card is currently open.
13
17
  */
14
18
  open: boolean;
15
19
  }
16
- export interface PreviewCardTriggerProps extends BaseUIComponentProps<'a', PreviewCardTrigger.State> {
20
+ export interface PreviewCardTriggerProps<Payload = unknown> extends BaseUIComponentProps<'a', PreviewCardTrigger.State> {
21
+ /**
22
+ * A handle to associate the trigger with a preview card.
23
+ */
24
+ handle?: PreviewCardHandle<Payload>;
25
+ /**
26
+ * A payload to pass to the preview card when it is opened.
27
+ */
28
+ payload?: Payload;
17
29
  /**
18
30
  * How long to wait before the preview card opens. Specified in milliseconds.
19
31
  * @default 600
@@ -27,5 +39,5 @@ export interface PreviewCardTriggerProps extends BaseUIComponentProps<'a', Previ
27
39
  }
28
40
  export declare namespace PreviewCardTrigger {
29
41
  type State = PreviewCardTriggerState;
30
- type Props = PreviewCardTriggerProps;
42
+ type Props<Payload = unknown> = PreviewCardTriggerProps<Payload>;
31
43
  }