@base-ui/react 1.6.0 → 1.7.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 (1217) hide show
  1. package/CHANGELOG.md +229 -0
  2. package/accordion/item/AccordionItem.js +6 -13
  3. package/accordion/item/AccordionItem.mjs +6 -13
  4. package/accordion/item/AccordionItemContext.d.mts +2 -1
  5. package/accordion/item/AccordionItemContext.d.ts +2 -1
  6. package/accordion/item/stateAttributesMapping.js +3 -5
  7. package/accordion/item/stateAttributesMapping.mjs +3 -5
  8. package/accordion/panel/AccordionPanel.js +12 -11
  9. package/accordion/panel/AccordionPanel.mjs +12 -11
  10. package/accordion/panel/AccordionPanelDataAttributes.d.mts +1 -1
  11. package/accordion/panel/AccordionPanelDataAttributes.d.ts +1 -1
  12. package/accordion/panel/AccordionPanelDataAttributes.js +1 -1
  13. package/accordion/panel/AccordionPanelDataAttributes.mjs +1 -1
  14. package/accordion/root/AccordionRoot.js +4 -7
  15. package/accordion/root/AccordionRoot.mjs +4 -7
  16. package/accordion/trigger/AccordionTrigger.js +7 -7
  17. package/accordion/trigger/AccordionTrigger.mjs +7 -7
  18. package/alert-dialog/handle.d.mts +6 -8
  19. package/alert-dialog/handle.d.ts +6 -8
  20. package/alert-dialog/handle.js +8 -19
  21. package/alert-dialog/handle.mjs +7 -17
  22. package/alert-dialog/root/AlertDialogRoot.js +1 -1
  23. package/alert-dialog/root/AlertDialogRoot.mjs +1 -1
  24. package/autocomplete/index.d.mts +1 -0
  25. package/autocomplete/index.d.ts +1 -0
  26. package/autocomplete/index.parts.d.mts +1 -1
  27. package/autocomplete/index.parts.d.ts +1 -1
  28. package/autocomplete/index.parts.js +2 -2
  29. package/autocomplete/index.parts.mjs +1 -1
  30. package/autocomplete/input-group/AutocompleteInputGroup.d.mts +1 -1
  31. package/autocomplete/input-group/AutocompleteInputGroup.d.ts +1 -1
  32. package/autocomplete/root/AutocompleteRoot.d.mts +6 -1
  33. package/autocomplete/root/AutocompleteRoot.d.ts +6 -1
  34. package/autocomplete/root/AutocompleteRoot.js +4 -10
  35. package/autocomplete/root/AutocompleteRoot.mjs +4 -10
  36. package/autocomplete/separator/AutocompleteSeparator.d.mts +26 -0
  37. package/autocomplete/separator/AutocompleteSeparator.d.ts +26 -0
  38. package/autocomplete/separator/AutocompleteSeparator.js +15 -0
  39. package/autocomplete/separator/AutocompleteSeparator.mjs +10 -0
  40. package/autocomplete/trigger/AutocompleteTrigger.d.mts +1 -1
  41. package/autocomplete/trigger/AutocompleteTrigger.d.ts +1 -1
  42. package/avatar/fallback/AvatarFallback.d.mts +2 -0
  43. package/avatar/fallback/AvatarFallback.d.ts +2 -0
  44. package/avatar/fallback/AvatarFallback.js +5 -5
  45. package/avatar/fallback/AvatarFallback.mjs +5 -5
  46. package/avatar/image/AvatarImage.d.mts +1 -1
  47. package/avatar/image/AvatarImage.d.ts +1 -1
  48. package/avatar/image/AvatarImageDataAttributes.d.mts +1 -1
  49. package/avatar/image/AvatarImageDataAttributes.d.ts +1 -1
  50. package/avatar/image/AvatarImageDataAttributes.js +1 -1
  51. package/avatar/image/AvatarImageDataAttributes.mjs +1 -1
  52. package/checkbox/indicator/CheckboxIndicator.js +3 -5
  53. package/checkbox/indicator/CheckboxIndicator.mjs +3 -5
  54. package/checkbox/indicator/CheckboxIndicatorDataAttributes.d.mts +1 -1
  55. package/checkbox/indicator/CheckboxIndicatorDataAttributes.d.ts +1 -1
  56. package/checkbox/indicator/CheckboxIndicatorDataAttributes.js +1 -1
  57. package/checkbox/indicator/CheckboxIndicatorDataAttributes.mjs +1 -1
  58. package/checkbox/root/CheckboxRoot.d.mts +2 -1
  59. package/checkbox/root/CheckboxRoot.d.ts +2 -1
  60. package/checkbox/root/CheckboxRoot.js +39 -31
  61. package/checkbox/root/CheckboxRoot.mjs +39 -31
  62. package/checkbox/utils/{useStateAttributesMapping.d.mts → getCheckboxStateAttributesMapping.d.mts} +1 -1
  63. package/checkbox/utils/{useStateAttributesMapping.d.ts → getCheckboxStateAttributesMapping.d.ts} +1 -1
  64. package/checkbox/utils/getCheckboxStateAttributesMapping.js +26 -0
  65. package/checkbox/utils/{useStateAttributesMapping.mjs → getCheckboxStateAttributesMapping.mjs} +5 -9
  66. package/checkbox-group/CheckboxGroup.js +33 -24
  67. package/checkbox-group/CheckboxGroup.mjs +33 -24
  68. package/checkbox-group/CheckboxGroupContext.d.mts +2 -5
  69. package/checkbox-group/CheckboxGroupContext.d.ts +2 -5
  70. package/checkbox-group/CheckboxGroupContext.js +2 -8
  71. package/checkbox-group/CheckboxGroupContext.mjs +2 -7
  72. package/checkbox-group/useCheckboxGroupParent.d.mts +2 -4
  73. package/checkbox-group/useCheckboxGroupParent.d.ts +2 -4
  74. package/checkbox-group/useCheckboxGroupParent.js +5 -6
  75. package/checkbox-group/useCheckboxGroupParent.mjs +5 -6
  76. package/collapsible/panel/CollapsiblePanel.js +12 -11
  77. package/collapsible/panel/CollapsiblePanel.mjs +12 -11
  78. package/collapsible/panel/CollapsiblePanelDataAttributes.d.mts +1 -1
  79. package/collapsible/panel/CollapsiblePanelDataAttributes.d.ts +1 -1
  80. package/collapsible/panel/CollapsiblePanelDataAttributes.js +1 -1
  81. package/collapsible/panel/CollapsiblePanelDataAttributes.mjs +1 -1
  82. package/collapsible/panel/useCollapsiblePanel.js +29 -24
  83. package/collapsible/panel/useCollapsiblePanel.mjs +29 -24
  84. package/collapsible/root/CollapsibleRootDataAttributes.d.mts +18 -0
  85. package/collapsible/root/CollapsibleRootDataAttributes.d.ts +18 -0
  86. package/collapsible/root/CollapsibleRootDataAttributes.js +26 -0
  87. package/collapsible/root/CollapsibleRootDataAttributes.mjs +20 -0
  88. package/collapsible/root/useCollapsibleRoot.d.mts +2 -1
  89. package/collapsible/root/useCollapsibleRoot.d.ts +2 -1
  90. package/collapsible/root/useCollapsibleRoot.js +5 -3
  91. package/collapsible/root/useCollapsibleRoot.mjs +5 -3
  92. package/combobox/arrow/ComboboxArrow.d.mts +1 -1
  93. package/combobox/arrow/ComboboxArrow.d.ts +1 -1
  94. package/combobox/backdrop/ComboboxBackdropDataAttributes.d.mts +1 -1
  95. package/combobox/backdrop/ComboboxBackdropDataAttributes.d.ts +1 -1
  96. package/combobox/backdrop/ComboboxBackdropDataAttributes.js +1 -1
  97. package/combobox/backdrop/ComboboxBackdropDataAttributes.mjs +1 -1
  98. package/combobox/chip/ComboboxChip.js +4 -6
  99. package/combobox/chip/ComboboxChip.mjs +4 -6
  100. package/combobox/chip-remove/ComboboxChipRemove.js +1 -7
  101. package/combobox/chip-remove/ComboboxChipRemove.mjs +1 -7
  102. package/combobox/clear/ComboboxClear.js +5 -3
  103. package/combobox/clear/ComboboxClear.mjs +5 -3
  104. package/combobox/clear/ComboboxClearDataAttributes.d.mts +1 -1
  105. package/combobox/clear/ComboboxClearDataAttributes.d.ts +1 -1
  106. package/combobox/clear/ComboboxClearDataAttributes.js +1 -1
  107. package/combobox/clear/ComboboxClearDataAttributes.mjs +1 -1
  108. package/combobox/collection/ComboboxCollection.d.mts +1 -1
  109. package/combobox/collection/ComboboxCollection.d.ts +1 -1
  110. package/combobox/collection/ComboboxCollection.js +0 -3
  111. package/combobox/collection/ComboboxCollection.mjs +0 -3
  112. package/combobox/group-label/ComboboxGroupLabel.js +1 -1
  113. package/combobox/group-label/ComboboxGroupLabel.mjs +1 -1
  114. package/combobox/index.d.mts +1 -0
  115. package/combobox/index.d.ts +1 -0
  116. package/combobox/index.parts.d.mts +1 -1
  117. package/combobox/index.parts.d.ts +1 -1
  118. package/combobox/index.parts.js +2 -2
  119. package/combobox/index.parts.mjs +1 -1
  120. package/combobox/input/ComboboxInput.d.mts +1 -1
  121. package/combobox/input/ComboboxInput.d.ts +1 -1
  122. package/combobox/input/ComboboxInput.js +43 -88
  123. package/combobox/input/ComboboxInput.mjs +44 -89
  124. package/combobox/input-group/ComboboxInputGroup.d.mts +1 -1
  125. package/combobox/input-group/ComboboxInputGroup.d.ts +1 -1
  126. package/combobox/input-group/ComboboxInputGroup.js +3 -8
  127. package/combobox/input-group/ComboboxInputGroup.mjs +4 -9
  128. package/combobox/item/ComboboxItem.js +21 -23
  129. package/combobox/item/ComboboxItem.mjs +22 -24
  130. package/combobox/item-indicator/ComboboxItemIndicator.js +1 -2
  131. package/combobox/item-indicator/ComboboxItemIndicator.mjs +1 -2
  132. package/combobox/item-indicator/ComboboxItemIndicatorDataAttributes.d.mts +1 -1
  133. package/combobox/item-indicator/ComboboxItemIndicatorDataAttributes.d.ts +1 -1
  134. package/combobox/item-indicator/ComboboxItemIndicatorDataAttributes.js +1 -1
  135. package/combobox/item-indicator/ComboboxItemIndicatorDataAttributes.mjs +1 -1
  136. package/combobox/label/ComboboxLabel.js +2 -1
  137. package/combobox/label/ComboboxLabel.mjs +2 -1
  138. package/combobox/list/ComboboxList.js +5 -10
  139. package/combobox/list/ComboboxList.mjs +5 -10
  140. package/combobox/popup/ComboboxPopup.d.mts +1 -1
  141. package/combobox/popup/ComboboxPopup.d.ts +1 -1
  142. package/combobox/popup/ComboboxPopup.js +5 -7
  143. package/combobox/popup/ComboboxPopup.mjs +6 -8
  144. package/combobox/popup/ComboboxPopupDataAttributes.d.mts +1 -1
  145. package/combobox/popup/ComboboxPopupDataAttributes.d.ts +1 -1
  146. package/combobox/popup/ComboboxPopupDataAttributes.js +1 -1
  147. package/combobox/popup/ComboboxPopupDataAttributes.mjs +1 -1
  148. package/combobox/portal/ComboboxPortal.d.mts +6 -2
  149. package/combobox/portal/ComboboxPortal.d.ts +6 -2
  150. package/combobox/positioner/ComboboxPositioner.d.mts +1 -1
  151. package/combobox/positioner/ComboboxPositioner.d.ts +1 -1
  152. package/combobox/positioner/ComboboxPositioner.js +13 -13
  153. package/combobox/positioner/ComboboxPositioner.mjs +14 -14
  154. package/combobox/positioner/ComboboxPositionerContext.d.mts +1 -1
  155. package/combobox/positioner/ComboboxPositionerContext.d.ts +1 -1
  156. package/combobox/root/AriaCombobox.d.mts +5 -10
  157. package/combobox/root/AriaCombobox.d.ts +5 -10
  158. package/combobox/root/AriaCombobox.js +259 -196
  159. package/combobox/root/AriaCombobox.mjs +262 -199
  160. package/combobox/root/utils/index.js +2 -4
  161. package/combobox/root/utils/index.mjs +2 -4
  162. package/combobox/root/utils/useFilter.js +2 -3
  163. package/combobox/root/utils/useFilter.mjs +2 -3
  164. package/combobox/separator/ComboboxSeparator.d.mts +26 -0
  165. package/combobox/separator/ComboboxSeparator.d.ts +26 -0
  166. package/combobox/separator/ComboboxSeparator.js +15 -0
  167. package/combobox/separator/ComboboxSeparator.mjs +10 -0
  168. package/combobox/store.d.mts +6 -9
  169. package/combobox/store.d.ts +6 -9
  170. package/combobox/store.js +47 -48
  171. package/combobox/store.mjs +47 -48
  172. package/combobox/trigger/ComboboxTrigger.d.mts +1 -1
  173. package/combobox/trigger/ComboboxTrigger.d.ts +1 -1
  174. package/combobox/trigger/ComboboxTrigger.js +12 -33
  175. package/combobox/trigger/ComboboxTrigger.mjs +14 -34
  176. package/combobox/utils/ComboboxInternalDismissButton.d.mts +1 -5
  177. package/combobox/utils/ComboboxInternalDismissButton.d.ts +1 -5
  178. package/combobox/utils/parts.d.mts +24 -0
  179. package/combobox/utils/parts.d.ts +24 -0
  180. package/combobox/utils/parts.js +59 -0
  181. package/combobox/utils/parts.mjs +50 -0
  182. package/combobox/utils/stateAttributesMapping.d.mts +3 -3
  183. package/combobox/utils/stateAttributesMapping.d.ts +3 -3
  184. package/combobox/utils/useInitialLiveRegionTextMutation.js +1 -1
  185. package/combobox/utils/useInitialLiveRegionTextMutation.mjs +1 -1
  186. package/context-menu/root/ContextMenuRoot.d.mts +3 -1
  187. package/context-menu/root/ContextMenuRoot.d.ts +3 -1
  188. package/context-menu/trigger/ContextMenuTrigger.js +40 -22
  189. package/context-menu/trigger/ContextMenuTrigger.mjs +40 -22
  190. package/dialog/backdrop/DialogBackdrop.js +2 -10
  191. package/dialog/backdrop/DialogBackdrop.mjs +3 -10
  192. package/dialog/backdrop/DialogBackdropDataAttributes.d.mts +1 -1
  193. package/dialog/backdrop/DialogBackdropDataAttributes.d.ts +1 -1
  194. package/dialog/backdrop/DialogBackdropDataAttributes.js +1 -1
  195. package/dialog/backdrop/DialogBackdropDataAttributes.mjs +1 -1
  196. package/dialog/close/DialogClose.js +1 -3
  197. package/dialog/close/DialogClose.mjs +1 -3
  198. package/dialog/description/DialogDescription.js +1 -3
  199. package/dialog/description/DialogDescription.mjs +1 -3
  200. package/dialog/popup/DialogPopup.js +7 -23
  201. package/dialog/popup/DialogPopup.mjs +8 -23
  202. package/dialog/popup/DialogPopupDataAttributes.d.mts +1 -1
  203. package/dialog/popup/DialogPopupDataAttributes.d.ts +1 -1
  204. package/dialog/popup/DialogPopupDataAttributes.js +1 -1
  205. package/dialog/popup/DialogPopupDataAttributes.mjs +1 -1
  206. package/dialog/portal/DialogPortal.d.mts +3 -3
  207. package/dialog/portal/DialogPortal.d.ts +3 -3
  208. package/dialog/portal/DialogPortal.js +1 -3
  209. package/dialog/portal/DialogPortal.mjs +1 -3
  210. package/dialog/root/DialogRoot.js +1 -5
  211. package/dialog/root/DialogRoot.mjs +1 -4
  212. package/dialog/root/DialogRootContext.d.mts +3 -7
  213. package/dialog/root/DialogRootContext.d.ts +3 -7
  214. package/dialog/root/DialogRootContext.js +4 -6
  215. package/dialog/root/DialogRootContext.mjs +3 -5
  216. package/dialog/root/useDialogRoot.d.mts +0 -6
  217. package/dialog/root/useDialogRoot.d.ts +0 -6
  218. package/dialog/root/useDialogRoot.js +33 -46
  219. package/dialog/root/useDialogRoot.mjs +34 -46
  220. package/dialog/root/useRenderDialogRoot.d.mts +1 -1
  221. package/dialog/root/useRenderDialogRoot.d.ts +1 -1
  222. package/dialog/root/useRenderDialogRoot.js +34 -42
  223. package/dialog/root/useRenderDialogRoot.mjs +36 -44
  224. package/dialog/store/DialogHandle.d.mts +20 -16
  225. package/dialog/store/DialogHandle.d.ts +20 -16
  226. package/dialog/store/DialogHandle.js +32 -27
  227. package/dialog/store/DialogHandle.mjs +33 -28
  228. package/dialog/store/DialogStore.d.mts +14 -4
  229. package/dialog/store/DialogStore.d.ts +14 -4
  230. package/dialog/store/DialogStore.js +49 -34
  231. package/dialog/store/DialogStore.mjs +49 -35
  232. package/dialog/title/DialogTitle.js +1 -3
  233. package/dialog/title/DialogTitle.mjs +1 -3
  234. package/dialog/trigger/DialogTrigger.js +4 -5
  235. package/dialog/trigger/DialogTrigger.mjs +5 -6
  236. package/dialog/utils/stateAttributesMapping.d.mts +12 -0
  237. package/dialog/utils/stateAttributesMapping.d.ts +12 -0
  238. package/dialog/utils/stateAttributesMapping.js +21 -0
  239. package/dialog/utils/stateAttributesMapping.mjs +15 -0
  240. package/dialog/viewport/DialogViewport.js +3 -22
  241. package/dialog/viewport/DialogViewport.mjs +3 -21
  242. package/dialog/viewport/DialogViewportDataAttributes.d.mts +1 -1
  243. package/dialog/viewport/DialogViewportDataAttributes.d.ts +1 -1
  244. package/dialog/viewport/DialogViewportDataAttributes.js +1 -1
  245. package/dialog/viewport/DialogViewportDataAttributes.mjs +1 -1
  246. package/docs/index.md +1 -0
  247. package/docs/react/components/accordion.md +1 -1
  248. package/docs/react/components/alert-dialog.md +25 -21
  249. package/docs/react/components/autocomplete.md +158 -103
  250. package/docs/react/components/avatar.md +15 -11
  251. package/docs/react/components/checkbox.md +21 -21
  252. package/docs/react/components/collapsible.md +10 -1
  253. package/docs/react/components/combobox.md +51 -23
  254. package/docs/react/components/context-menu.md +474 -87
  255. package/docs/react/components/dialog.md +396 -21
  256. package/docs/react/components/drawer.md +27 -23
  257. package/docs/react/components/field.md +11 -11
  258. package/docs/react/components/form.md +13 -11
  259. package/docs/react/components/menu.md +138 -118
  260. package/docs/react/components/menubar.md +41 -41
  261. package/docs/react/components/navigation-menu.md +57 -71
  262. package/docs/react/components/number-field.md +6 -6
  263. package/docs/react/components/otp-field.md +20 -18
  264. package/docs/react/components/popover.md +51 -36
  265. package/docs/react/components/preview-card.md +56 -47
  266. package/docs/react/components/progress.md +3 -3
  267. package/docs/react/components/radio.md +1 -1
  268. package/docs/react/components/select.md +57 -55
  269. package/docs/react/components/slider.md +22 -22
  270. package/docs/react/components/tabs.md +275 -1
  271. package/docs/react/components/toast.md +21 -26
  272. package/docs/react/components/toolbar.md +27 -23
  273. package/docs/react/components/tooltip.md +30 -17
  274. package/docs/react/handbook/animation.md +3 -3
  275. package/docs/react/handbook/forms.md +3 -3
  276. package/docs/react/handbook/styling.md +1 -1
  277. package/docs/react/overview/about.md +10 -7
  278. package/docs/react/overview/community.md +3 -2
  279. package/docs/react/overview/quick-start.md +3 -3
  280. package/docs/react/overview/releases/v1-7-0.md +236 -0
  281. package/docs/react/overview/releases.md +10 -2
  282. package/docs/react/utils/direction-provider.md +5 -2
  283. package/drawer/backdrop/DrawerBackdrop.js +2 -10
  284. package/drawer/backdrop/DrawerBackdrop.mjs +3 -10
  285. package/drawer/backdrop/DrawerBackdropDataAttributes.d.mts +1 -1
  286. package/drawer/backdrop/DrawerBackdropDataAttributes.d.ts +1 -1
  287. package/drawer/backdrop/DrawerBackdropDataAttributes.js +1 -1
  288. package/drawer/backdrop/DrawerBackdropDataAttributes.mjs +1 -1
  289. package/drawer/handle.d.mts +16 -0
  290. package/drawer/handle.d.ts +16 -0
  291. package/drawer/handle.js +25 -0
  292. package/drawer/handle.mjs +18 -0
  293. package/drawer/indent/DrawerIndent.js +1 -1
  294. package/drawer/indent/DrawerIndent.mjs +1 -1
  295. package/drawer/indent-background/DrawerIndentBackground.js +1 -1
  296. package/drawer/indent-background/DrawerIndentBackground.mjs +1 -1
  297. package/drawer/index.parts.d.mts +1 -1
  298. package/drawer/index.parts.d.ts +1 -1
  299. package/drawer/index.parts.js +3 -3
  300. package/drawer/index.parts.mjs +1 -1
  301. package/drawer/popup/DrawerPopup.js +10 -12
  302. package/drawer/popup/DrawerPopup.mjs +11 -13
  303. package/drawer/popup/DrawerPopupDataAttributes.d.mts +1 -1
  304. package/drawer/popup/DrawerPopupDataAttributes.d.ts +1 -1
  305. package/drawer/popup/DrawerPopupDataAttributes.js +1 -1
  306. package/drawer/popup/DrawerPopupDataAttributes.mjs +1 -1
  307. package/drawer/portal/DrawerPortal.d.mts +3 -3
  308. package/drawer/portal/DrawerPortal.d.ts +3 -3
  309. package/drawer/provider/DrawerProvider.js +13 -24
  310. package/drawer/provider/DrawerProvider.mjs +13 -24
  311. package/drawer/provider/DrawerProviderContext.d.mts +3 -4
  312. package/drawer/provider/DrawerProviderContext.d.ts +3 -4
  313. package/drawer/provider/DrawerProviderContext.js +2 -8
  314. package/drawer/provider/DrawerProviderContext.mjs +2 -7
  315. package/drawer/root/DrawerRoot.d.mts +2 -2
  316. package/drawer/root/DrawerRoot.d.ts +2 -2
  317. package/drawer/root/DrawerRoot.js +30 -34
  318. package/drawer/root/DrawerRoot.mjs +31 -35
  319. package/drawer/root/DrawerRootContext.d.mts +7 -2
  320. package/drawer/root/DrawerRootContext.d.ts +7 -2
  321. package/drawer/root/DrawerRootContext.js +1 -1
  322. package/drawer/root/DrawerRootContext.mjs +1 -1
  323. package/drawer/root/useDrawerSnapPoints.d.mts +6 -2
  324. package/drawer/root/useDrawerSnapPoints.d.ts +6 -2
  325. package/drawer/root/useDrawerSnapPoints.js +16 -24
  326. package/drawer/root/useDrawerSnapPoints.mjs +15 -24
  327. package/drawer/swipe-area/DrawerSwipeArea.js +82 -49
  328. package/drawer/swipe-area/DrawerSwipeArea.mjs +82 -49
  329. package/drawer/trigger/DrawerTrigger.d.mts +1 -1
  330. package/drawer/trigger/DrawerTrigger.d.ts +1 -1
  331. package/drawer/viewport/DrawerViewport.js +178 -340
  332. package/drawer/viewport/DrawerViewport.mjs +180 -342
  333. package/drawer/viewport/DrawerViewportContext.d.mts +1 -2
  334. package/drawer/viewport/DrawerViewportContext.d.ts +1 -2
  335. package/drawer/viewport/DrawerViewportContext.js +2 -8
  336. package/drawer/viewport/DrawerViewportContext.mjs +2 -7
  337. package/drawer/viewport/DrawerViewportDataAttributes.d.mts +1 -1
  338. package/drawer/viewport/DrawerViewportDataAttributes.d.ts +1 -1
  339. package/drawer/viewport/DrawerViewportDataAttributes.js +1 -1
  340. package/drawer/viewport/DrawerViewportDataAttributes.mjs +1 -1
  341. package/drawer/virtual-keyboard-provider/DrawerVirtualKeyboardProvider.js +250 -60
  342. package/drawer/virtual-keyboard-provider/DrawerVirtualKeyboardProvider.mjs +250 -60
  343. package/field/control/FieldControl.js +2 -2
  344. package/field/control/FieldControl.mjs +2 -2
  345. package/field/error/FieldError.js +2 -2
  346. package/field/error/FieldError.mjs +2 -2
  347. package/field/error/FieldErrorDataAttributes.d.mts +1 -1
  348. package/field/error/FieldErrorDataAttributes.d.ts +1 -1
  349. package/field/error/FieldErrorDataAttributes.js +1 -1
  350. package/field/error/FieldErrorDataAttributes.mjs +1 -1
  351. package/field/item/FieldItem.js +0 -5
  352. package/field/item/FieldItem.mjs +0 -5
  353. package/field/root/FieldRoot.js +8 -15
  354. package/field/root/FieldRoot.mjs +8 -15
  355. package/field/root/useFieldValidation.d.mts +17 -2
  356. package/field/root/useFieldValidation.d.ts +17 -2
  357. package/field/root/useFieldValidation.js +83 -77
  358. package/field/root/useFieldValidation.mjs +82 -77
  359. package/field/validity/FieldValidity.js +4 -0
  360. package/field/validity/FieldValidity.mjs +4 -0
  361. package/fieldset/legend/FieldsetLegend.js +3 -10
  362. package/fieldset/legend/FieldsetLegend.mjs +4 -10
  363. package/fieldset/root/FieldsetRootContext.d.mts +1 -1
  364. package/fieldset/root/FieldsetRootContext.d.ts +1 -1
  365. package/floating-ui-react/components/FloatingDelayGroup.d.mts +2 -41
  366. package/floating-ui-react/components/FloatingDelayGroup.d.ts +2 -41
  367. package/floating-ui-react/components/FloatingDelayGroup.js +0 -9
  368. package/floating-ui-react/components/FloatingDelayGroup.mjs +0 -9
  369. package/floating-ui-react/components/FloatingFocusManager.d.mts +1 -7
  370. package/floating-ui-react/components/FloatingFocusManager.d.ts +1 -7
  371. package/floating-ui-react/components/FloatingFocusManager.js +41 -27
  372. package/floating-ui-react/components/FloatingFocusManager.mjs +41 -27
  373. package/floating-ui-react/components/FloatingPortal.d.mts +7 -14
  374. package/floating-ui-react/components/FloatingPortal.d.ts +7 -14
  375. package/floating-ui-react/components/FloatingPortal.js +11 -13
  376. package/floating-ui-react/components/FloatingPortal.mjs +11 -13
  377. package/floating-ui-react/components/FloatingRootStore.js +6 -6
  378. package/floating-ui-react/components/FloatingRootStore.mjs +7 -7
  379. package/floating-ui-react/components/FloatingTree.d.mts +1 -19
  380. package/floating-ui-react/components/FloatingTree.d.ts +1 -19
  381. package/floating-ui-react/hooks/useClick.js +5 -1
  382. package/floating-ui-react/hooks/useClick.mjs +6 -2
  383. package/floating-ui-react/hooks/useDismiss.js +2 -2
  384. package/floating-ui-react/hooks/useDismiss.mjs +2 -2
  385. package/floating-ui-react/hooks/useFloating.d.mts +9 -1
  386. package/floating-ui-react/hooks/useFloating.d.ts +9 -1
  387. package/floating-ui-react/hooks/useFloating.js +14 -2
  388. package/floating-ui-react/hooks/useFloating.mjs +13 -2
  389. package/floating-ui-react/hooks/useHoverReferenceInteraction.d.mts +12 -0
  390. package/floating-ui-react/hooks/useHoverReferenceInteraction.d.ts +12 -0
  391. package/floating-ui-react/hooks/useHoverReferenceInteraction.js +16 -4
  392. package/floating-ui-react/hooks/useHoverReferenceInteraction.mjs +16 -4
  393. package/floating-ui-react/hooks/useListNavigation.js +15 -1
  394. package/floating-ui-react/hooks/useListNavigation.mjs +15 -1
  395. package/floating-ui-react/hooks/useTypeahead.d.mts +5 -5
  396. package/floating-ui-react/hooks/useTypeahead.d.ts +5 -5
  397. package/floating-ui-react/hooks/useTypeahead.js +9 -14
  398. package/floating-ui-react/hooks/useTypeahead.mjs +9 -14
  399. package/floating-ui-react/index.d.mts +0 -4
  400. package/floating-ui-react/index.d.ts +0 -4
  401. package/floating-ui-react/index.mjs +12 -0
  402. package/floating-ui-react/utils/composite.js +7 -0
  403. package/floating-ui-react/utils/composite.mjs +7 -0
  404. package/form/Form.d.mts +1 -1
  405. package/form/Form.d.ts +1 -1
  406. package/form/Form.js +62 -47
  407. package/form/Form.mjs +62 -47
  408. package/index.js +1 -1
  409. package/index.mjs +1 -1
  410. package/internals/PrehydrationScript.d.mts +36 -0
  411. package/internals/PrehydrationScript.d.ts +36 -0
  412. package/internals/PrehydrationScript.js +59 -0
  413. package/internals/PrehydrationScript.mjs +54 -0
  414. package/internals/composite/composite.d.mts +2 -10
  415. package/internals/composite/composite.d.ts +2 -10
  416. package/internals/composite/composite.js +4 -12
  417. package/internals/composite/composite.mjs +3 -11
  418. package/internals/composite/index.d.mts +2 -1
  419. package/internals/composite/index.d.ts +2 -1
  420. package/internals/composite/index.js +11 -4
  421. package/internals/composite/index.mjs +1 -1
  422. package/internals/composite/item/CompositeItem.d.mts +0 -3
  423. package/internals/composite/item/CompositeItem.d.ts +0 -3
  424. package/internals/composite/item/CompositeItem.js +2 -4
  425. package/internals/composite/item/CompositeItem.mjs +2 -4
  426. package/internals/composite/item/useCompositeItem.d.mts +1 -1
  427. package/internals/composite/item/useCompositeItem.d.ts +1 -1
  428. package/internals/composite/list/CompositeList.d.mts +3 -3
  429. package/internals/composite/list/CompositeList.d.ts +3 -3
  430. package/internals/composite/list/CompositeList.js +165 -86
  431. package/internals/composite/list/CompositeList.mjs +165 -86
  432. package/internals/composite/list/CompositeListContext.d.mts +8 -4
  433. package/internals/composite/list/CompositeListContext.d.ts +8 -4
  434. package/internals/composite/list/CompositeListContext.js +1 -6
  435. package/internals/composite/list/CompositeListContext.mjs +1 -6
  436. package/internals/composite/list/useCompositeListItem.d.mts +11 -8
  437. package/internals/composite/list/useCompositeListItem.d.ts +11 -8
  438. package/internals/composite/list/useCompositeListItem.js +25 -32
  439. package/internals/composite/list/useCompositeListItem.mjs +25 -32
  440. package/internals/composite/root/CompositeRoot.d.mts +1 -4
  441. package/internals/composite/root/CompositeRoot.d.ts +1 -4
  442. package/internals/composite/root/CompositeRoot.js +0 -3
  443. package/internals/composite/root/CompositeRoot.mjs +0 -3
  444. package/internals/composite/root/useCompositeRoot.d.mts +0 -1
  445. package/internals/composite/root/useCompositeRoot.d.ts +0 -1
  446. package/internals/composite/root/useCompositeRoot.js +19 -39
  447. package/internals/composite/root/useCompositeRoot.mjs +20 -40
  448. package/internals/createBaseUIEventDetails.d.mts +1 -1
  449. package/internals/createBaseUIEventDetails.d.ts +1 -1
  450. package/internals/csp-context/CSPContext.d.mts +0 -6
  451. package/internals/csp-context/CSPContext.d.ts +0 -6
  452. package/internals/csp-context/CSPContext.js +0 -7
  453. package/internals/csp-context/CSPContext.mjs +0 -7
  454. package/internals/direction-context/DirectionContext.d.mts +0 -3
  455. package/internals/direction-context/DirectionContext.d.ts +0 -3
  456. package/internals/direction-context/DirectionContext.js +0 -3
  457. package/internals/direction-context/DirectionContext.mjs +0 -3
  458. package/internals/field-constants/constants.js +2 -3
  459. package/internals/field-constants/constants.mjs +2 -3
  460. package/internals/field-register-control/useFieldControlRegistration.d.mts +1 -1
  461. package/internals/field-register-control/useFieldControlRegistration.d.ts +1 -1
  462. package/internals/field-register-control/useFieldControlRegistration.js +21 -16
  463. package/internals/field-register-control/useFieldControlRegistration.mjs +21 -16
  464. package/internals/field-register-control/useRegisterFieldControl.js +13 -9
  465. package/internals/field-register-control/useRegisterFieldControl.mjs +13 -8
  466. package/internals/field-root-context/FieldRootContext.d.mts +0 -7
  467. package/internals/field-root-context/FieldRootContext.d.ts +0 -7
  468. package/internals/field-root-context/FieldRootContext.js +2 -9
  469. package/internals/field-root-context/FieldRootContext.mjs +3 -10
  470. package/internals/form-context/FormContext.d.mts +1 -0
  471. package/internals/form-context/FormContext.d.ts +1 -0
  472. package/internals/form-context/FormContext.js +3 -0
  473. package/internals/form-context/FormContext.mjs +3 -0
  474. package/{utils → internals}/getDisabledMountTransitionStyles.d.mts +1 -1
  475. package/{utils → internals}/getDisabledMountTransitionStyles.d.ts +1 -1
  476. package/{utils → internals}/getDisabledMountTransitionStyles.js +1 -1
  477. package/{utils → internals}/getDisabledMountTransitionStyles.mjs +1 -1
  478. package/internals/itemEquality.d.mts +1 -0
  479. package/internals/itemEquality.d.ts +1 -0
  480. package/internals/itemEquality.js +7 -0
  481. package/internals/itemEquality.mjs +6 -0
  482. package/internals/labelable-provider/LabelableProvider.d.mts +0 -3
  483. package/internals/labelable-provider/LabelableProvider.d.ts +0 -3
  484. package/internals/labelable-provider/LabelableProvider.js +0 -3
  485. package/internals/labelable-provider/LabelableProvider.mjs +0 -4
  486. package/internals/labelable-provider/useAriaLabelledBy.d.mts +0 -3
  487. package/internals/labelable-provider/useAriaLabelledBy.d.ts +0 -3
  488. package/internals/labelable-provider/useAriaLabelledBy.js +0 -3
  489. package/internals/labelable-provider/useAriaLabelledBy.mjs +0 -4
  490. package/internals/labelable-provider/useLabel.d.mts +1 -1
  491. package/internals/labelable-provider/useLabel.d.ts +1 -1
  492. package/internals/labelable-provider/useLabelableId.js +1 -1
  493. package/internals/labelable-provider/useLabelableId.mjs +1 -1
  494. package/internals/prehydrationScript.stub.d.mts +1 -0
  495. package/internals/prehydrationScript.stub.d.ts +1 -0
  496. package/internals/prehydrationScript.stub.js +12 -0
  497. package/internals/prehydrationScript.stub.mjs +6 -0
  498. package/internals/stateAttributesMapping.d.mts +1 -1
  499. package/internals/stateAttributesMapping.d.ts +1 -1
  500. package/internals/stateAttributesMapping.js +3 -3
  501. package/internals/stateAttributesMapping.mjs +3 -3
  502. package/internals/use-button/useButton.js +30 -14
  503. package/internals/use-button/useButton.mjs +30 -14
  504. package/{utils → internals}/useAnchorPositioning.d.mts +11 -4
  505. package/{utils → internals}/useAnchorPositioning.d.ts +11 -4
  506. package/{utils → internals}/useAnchorPositioning.js +97 -68
  507. package/{utils → internals}/useAnchorPositioning.mjs +96 -68
  508. package/internals/useAnimationsFinished.d.mts +2 -3
  509. package/internals/useAnimationsFinished.d.ts +2 -3
  510. package/internals/useAnimationsFinished.js +8 -11
  511. package/internals/useAnimationsFinished.mjs +8 -11
  512. package/internals/useOpenChangeComplete.js +1 -1
  513. package/internals/useOpenChangeComplete.mjs +1 -1
  514. package/internals/usePressAndHold.d.mts +0 -1
  515. package/internals/usePressAndHold.d.ts +0 -1
  516. package/internals/usePressAndHold.js +4 -8
  517. package/internals/usePressAndHold.mjs +4 -8
  518. package/internals/useRenderElement.js +6 -6
  519. package/internals/useRenderElement.mjs +6 -6
  520. package/internals/useValueChanged.js +3 -6
  521. package/internals/useValueChanged.mjs +3 -6
  522. package/menu/arrow/MenuArrow.d.mts +1 -1
  523. package/menu/arrow/MenuArrow.d.ts +1 -1
  524. package/menu/backdrop/MenuBackdrop.js +1 -7
  525. package/menu/backdrop/MenuBackdrop.mjs +2 -7
  526. package/menu/backdrop/MenuBackdropDataAttributes.d.mts +1 -1
  527. package/menu/backdrop/MenuBackdropDataAttributes.d.ts +1 -1
  528. package/menu/backdrop/MenuBackdropDataAttributes.js +1 -1
  529. package/menu/backdrop/MenuBackdropDataAttributes.mjs +1 -1
  530. package/menu/checkbox-item/MenuCheckboxItem.js +6 -2
  531. package/menu/checkbox-item/MenuCheckboxItem.mjs +6 -2
  532. package/menu/checkbox-item-indicator/MenuCheckboxItemIndicator.js +2 -1
  533. package/menu/checkbox-item-indicator/MenuCheckboxItemIndicator.mjs +2 -1
  534. package/menu/checkbox-item-indicator/MenuCheckboxItemIndicatorDataAttributes.d.mts +1 -1
  535. package/menu/checkbox-item-indicator/MenuCheckboxItemIndicatorDataAttributes.d.ts +1 -1
  536. package/menu/checkbox-item-indicator/MenuCheckboxItemIndicatorDataAttributes.js +1 -1
  537. package/menu/checkbox-item-indicator/MenuCheckboxItemIndicatorDataAttributes.mjs +1 -1
  538. package/menu/group/MenuGroupContext.d.mts +1 -1
  539. package/menu/group/MenuGroupContext.d.ts +1 -1
  540. package/menu/group-label/MenuGroupLabel.js +1 -1
  541. package/menu/group-label/MenuGroupLabel.mjs +1 -1
  542. package/menu/item/MenuItem.js +4 -1
  543. package/menu/item/MenuItem.mjs +4 -1
  544. package/menu/item/useMenuItem.js +1 -3
  545. package/menu/item/useMenuItem.mjs +1 -3
  546. package/menu/item/useMenuItemCommonProps.d.mts +2 -3
  547. package/menu/item/useMenuItemCommonProps.d.ts +2 -3
  548. package/menu/item/useMenuItemCommonProps.js +7 -2
  549. package/menu/item/useMenuItemCommonProps.mjs +7 -2
  550. package/menu/link-item/MenuLinkItem.d.mts +1 -1
  551. package/menu/link-item/MenuLinkItem.d.ts +1 -1
  552. package/menu/link-item/MenuLinkItem.js +4 -1
  553. package/menu/link-item/MenuLinkItem.mjs +4 -1
  554. package/menu/popup/MenuPopup.d.mts +1 -1
  555. package/menu/popup/MenuPopup.d.ts +1 -1
  556. package/menu/popup/MenuPopup.js +5 -14
  557. package/menu/popup/MenuPopup.mjs +7 -15
  558. package/menu/popup/MenuPopupDataAttributes.d.mts +1 -1
  559. package/menu/popup/MenuPopupDataAttributes.d.ts +1 -1
  560. package/menu/popup/MenuPopupDataAttributes.js +1 -1
  561. package/menu/popup/MenuPopupDataAttributes.mjs +1 -1
  562. package/menu/portal/MenuPortal.d.mts +6 -2
  563. package/menu/portal/MenuPortal.d.ts +6 -2
  564. package/menu/positioner/MenuPositioner.d.mts +1 -1
  565. package/menu/positioner/MenuPositioner.d.ts +1 -1
  566. package/menu/positioner/MenuPositioner.js +8 -6
  567. package/menu/positioner/MenuPositioner.mjs +8 -6
  568. package/menu/positioner/MenuPositionerContext.d.mts +1 -1
  569. package/menu/positioner/MenuPositionerContext.d.ts +1 -1
  570. package/menu/positioner/MenuPositionerCssVars.d.mts +12 -0
  571. package/menu/positioner/MenuPositionerCssVars.d.ts +12 -0
  572. package/menu/positioner/MenuPositionerCssVars.js +12 -0
  573. package/menu/positioner/MenuPositionerCssVars.mjs +12 -0
  574. package/menu/radio-item/MenuRadioItem.js +5 -2
  575. package/menu/radio-item/MenuRadioItem.mjs +5 -2
  576. package/menu/radio-item-indicator/MenuRadioItemIndicator.js +2 -1
  577. package/menu/radio-item-indicator/MenuRadioItemIndicator.mjs +2 -1
  578. package/menu/radio-item-indicator/MenuRadioItemIndicatorDataAttributes.d.mts +1 -1
  579. package/menu/radio-item-indicator/MenuRadioItemIndicatorDataAttributes.d.ts +1 -1
  580. package/menu/radio-item-indicator/MenuRadioItemIndicatorDataAttributes.js +1 -1
  581. package/menu/radio-item-indicator/MenuRadioItemIndicatorDataAttributes.mjs +1 -1
  582. package/menu/root/MenuRoot.d.mts +11 -7
  583. package/menu/root/MenuRoot.d.ts +11 -7
  584. package/menu/root/MenuRoot.js +36 -13
  585. package/menu/root/MenuRoot.mjs +38 -15
  586. package/menu/store/MenuHandle.d.mts +18 -10
  587. package/menu/store/MenuHandle.d.ts +18 -10
  588. package/menu/store/MenuHandle.js +21 -20
  589. package/menu/store/MenuHandle.mjs +22 -19
  590. package/menu/store/MenuStore.d.mts +22 -7
  591. package/menu/store/MenuStore.d.ts +22 -7
  592. package/menu/store/MenuStore.js +71 -53
  593. package/menu/store/MenuStore.mjs +72 -55
  594. package/menu/submenu-trigger/MenuSubmenuTrigger.js +29 -8
  595. package/menu/submenu-trigger/MenuSubmenuTrigger.mjs +28 -8
  596. package/menu/trigger/MenuTrigger.js +7 -22
  597. package/menu/trigger/MenuTrigger.mjs +10 -24
  598. package/menu/utils/findRootOwnerId.js +1 -1
  599. package/menu/utils/findRootOwnerId.mjs +1 -1
  600. package/menu/viewport/MenuViewport.js +1 -9
  601. package/menu/viewport/MenuViewport.mjs +2 -9
  602. package/menubar/Menubar.js +2 -1
  603. package/menubar/Menubar.mjs +2 -1
  604. package/meter/root/MeterRoot.js +4 -6
  605. package/meter/root/MeterRoot.mjs +4 -6
  606. package/meter/root/MeterRootContext.d.mts +0 -2
  607. package/meter/root/MeterRootContext.d.ts +0 -2
  608. package/navigation-menu/arrow/NavigationMenuArrow.d.mts +1 -1
  609. package/navigation-menu/arrow/NavigationMenuArrow.d.ts +1 -1
  610. package/navigation-menu/arrow/NavigationMenuArrow.js +1 -1
  611. package/navigation-menu/arrow/NavigationMenuArrow.mjs +1 -1
  612. package/navigation-menu/backdrop/NavigationMenuBackdrop.js +1 -7
  613. package/navigation-menu/backdrop/NavigationMenuBackdrop.mjs +2 -7
  614. package/navigation-menu/backdrop/NavigationMenuBackdropDataAttributes.d.mts +1 -1
  615. package/navigation-menu/backdrop/NavigationMenuBackdropDataAttributes.d.ts +1 -1
  616. package/navigation-menu/backdrop/NavigationMenuBackdropDataAttributes.js +1 -1
  617. package/navigation-menu/backdrop/NavigationMenuBackdropDataAttributes.mjs +1 -1
  618. package/navigation-menu/content/NavigationMenuContentDataAttributes.d.mts +1 -1
  619. package/navigation-menu/content/NavigationMenuContentDataAttributes.d.ts +1 -1
  620. package/navigation-menu/content/NavigationMenuContentDataAttributes.js +1 -1
  621. package/navigation-menu/content/NavigationMenuContentDataAttributes.mjs +1 -1
  622. package/navigation-menu/link/NavigationMenuLink.d.mts +1 -1
  623. package/navigation-menu/link/NavigationMenuLink.d.ts +1 -1
  624. package/navigation-menu/popup/NavigationMenuPopup.d.mts +1 -1
  625. package/navigation-menu/popup/NavigationMenuPopup.d.ts +1 -1
  626. package/navigation-menu/popup/NavigationMenuPopup.js +2 -8
  627. package/navigation-menu/popup/NavigationMenuPopup.mjs +3 -8
  628. package/navigation-menu/popup/NavigationMenuPopupDataAttributes.d.mts +1 -1
  629. package/navigation-menu/popup/NavigationMenuPopupDataAttributes.d.ts +1 -1
  630. package/navigation-menu/popup/NavigationMenuPopupDataAttributes.js +1 -1
  631. package/navigation-menu/popup/NavigationMenuPopupDataAttributes.mjs +1 -1
  632. package/navigation-menu/portal/NavigationMenuPortal.d.mts +3 -3
  633. package/navigation-menu/portal/NavigationMenuPortal.d.ts +3 -3
  634. package/navigation-menu/positioner/NavigationMenuPositioner.d.mts +1 -1
  635. package/navigation-menu/positioner/NavigationMenuPositioner.d.ts +1 -1
  636. package/navigation-menu/positioner/NavigationMenuPositioner.js +7 -6
  637. package/navigation-menu/positioner/NavigationMenuPositioner.mjs +7 -6
  638. package/navigation-menu/positioner/NavigationMenuPositionerContext.d.mts +2 -2
  639. package/navigation-menu/positioner/NavigationMenuPositionerContext.d.ts +2 -2
  640. package/navigation-menu/trigger/NavigationMenuTrigger.js +63 -101
  641. package/navigation-menu/trigger/NavigationMenuTrigger.mjs +63 -101
  642. package/navigation-menu/utils/isOutsideMenuEvent.js +2 -5
  643. package/navigation-menu/utils/isOutsideMenuEvent.mjs +2 -5
  644. package/navigation-menu/utils/useNavigationMenuAnchorPositioning.d.mts +6 -0
  645. package/navigation-menu/utils/useNavigationMenuAnchorPositioning.d.ts +6 -0
  646. package/navigation-menu/utils/useNavigationMenuAnchorPositioning.js +16 -0
  647. package/navigation-menu/utils/useNavigationMenuAnchorPositioning.mjs +12 -0
  648. package/number-field/input/NumberFieldInput.d.mts +1 -1
  649. package/number-field/input/NumberFieldInput.d.ts +1 -1
  650. package/number-field/input/NumberFieldInput.js +40 -25
  651. package/number-field/input/NumberFieldInput.mjs +41 -26
  652. package/number-field/root/NumberFieldRoot.js +37 -55
  653. package/number-field/root/NumberFieldRoot.mjs +38 -56
  654. package/number-field/root/NumberFieldRootContext.d.mts +0 -7
  655. package/number-field/root/NumberFieldRootContext.d.ts +0 -7
  656. package/number-field/root/useNumberFieldStepperButton.js +108 -21
  657. package/number-field/root/useNumberFieldStepperButton.mjs +108 -21
  658. package/number-field/scrub-area/NumberFieldScrubArea.js +28 -32
  659. package/number-field/scrub-area/NumberFieldScrubArea.mjs +28 -32
  660. package/number-field/utils/constants.d.mts +1 -2
  661. package/number-field/utils/constants.d.ts +1 -2
  662. package/number-field/utils/constants.js +2 -3
  663. package/number-field/utils/constants.mjs +1 -2
  664. package/number-field/utils/parse.d.mts +27 -15
  665. package/number-field/utils/parse.d.ts +27 -15
  666. package/number-field/utils/parse.js +74 -135
  667. package/number-field/utils/parse.mjs +73 -134
  668. package/number-field/utils/types.d.mts +2 -1
  669. package/number-field/utils/types.d.ts +2 -1
  670. package/number-field/utils/validate.d.mts +1 -19
  671. package/number-field/utils/validate.d.ts +1 -19
  672. package/number-field/utils/validate.js +6 -14
  673. package/number-field/utils/validate.mjs +6 -14
  674. package/otp-field/input/OTPFieldInput.d.mts +1 -1
  675. package/otp-field/input/OTPFieldInput.d.ts +1 -1
  676. package/otp-field/input/OTPFieldInput.js +4 -1
  677. package/otp-field/input/OTPFieldInput.mjs +5 -2
  678. package/otp-field/root/OTPFieldRoot.js +13 -14
  679. package/otp-field/root/OTPFieldRoot.mjs +13 -14
  680. package/package.json +93 -5
  681. package/popover/arrow/PopoverArrow.d.mts +1 -1
  682. package/popover/arrow/PopoverArrow.d.ts +1 -1
  683. package/popover/arrow/PopoverArrow.js +1 -3
  684. package/popover/arrow/PopoverArrow.mjs +1 -3
  685. package/popover/backdrop/PopoverBackdrop.js +3 -11
  686. package/popover/backdrop/PopoverBackdrop.mjs +4 -11
  687. package/popover/backdrop/PopoverBackdropDataAttributes.d.mts +1 -1
  688. package/popover/backdrop/PopoverBackdropDataAttributes.d.ts +1 -1
  689. package/popover/backdrop/PopoverBackdropDataAttributes.js +1 -1
  690. package/popover/backdrop/PopoverBackdropDataAttributes.mjs +1 -1
  691. package/popover/close/PopoverClose.js +1 -3
  692. package/popover/close/PopoverClose.mjs +1 -3
  693. package/popover/description/PopoverDescription.js +1 -3
  694. package/popover/description/PopoverDescription.mjs +1 -3
  695. package/popover/popup/PopoverPopup.d.mts +1 -1
  696. package/popover/popup/PopoverPopup.d.ts +1 -1
  697. package/popover/popup/PopoverPopup.js +6 -17
  698. package/popover/popup/PopoverPopup.mjs +9 -19
  699. package/popover/popup/PopoverPopupDataAttributes.d.mts +1 -1
  700. package/popover/popup/PopoverPopupDataAttributes.d.ts +1 -1
  701. package/popover/popup/PopoverPopupDataAttributes.js +3 -3
  702. package/popover/popup/PopoverPopupDataAttributes.mjs +3 -3
  703. package/popover/portal/PopoverPortal.d.mts +6 -2
  704. package/popover/portal/PopoverPortal.d.ts +6 -2
  705. package/popover/portal/PopoverPortal.js +1 -3
  706. package/popover/portal/PopoverPortal.mjs +1 -3
  707. package/popover/positioner/PopoverPositioner.d.mts +1 -1
  708. package/popover/positioner/PopoverPositioner.d.ts +1 -1
  709. package/popover/positioner/PopoverPositioner.js +19 -22
  710. package/popover/positioner/PopoverPositioner.mjs +19 -22
  711. package/popover/positioner/PopoverPositionerContext.d.mts +1 -1
  712. package/popover/positioner/PopoverPositionerContext.d.ts +1 -1
  713. package/popover/positioner/PopoverPositionerCssVars.d.mts +2 -0
  714. package/popover/positioner/PopoverPositionerCssVars.d.ts +2 -0
  715. package/popover/positioner/PopoverPositionerCssVars.js +2 -0
  716. package/popover/positioner/PopoverPositionerCssVars.mjs +2 -0
  717. package/popover/root/PopoverRoot.d.mts +2 -0
  718. package/popover/root/PopoverRoot.d.ts +2 -0
  719. package/popover/root/PopoverRoot.js +29 -22
  720. package/popover/root/PopoverRoot.mjs +31 -24
  721. package/popover/root/PopoverRootContext.d.mts +1 -3
  722. package/popover/root/PopoverRootContext.d.ts +1 -3
  723. package/popover/store/PopoverHandle.d.mts +18 -10
  724. package/popover/store/PopoverHandle.d.ts +18 -10
  725. package/popover/store/PopoverHandle.js +21 -21
  726. package/popover/store/PopoverHandle.mjs +22 -20
  727. package/popover/store/PopoverStore.d.mts +22 -10
  728. package/popover/store/PopoverStore.d.ts +22 -10
  729. package/popover/store/PopoverStore.js +82 -67
  730. package/popover/store/PopoverStore.mjs +81 -67
  731. package/popover/title/PopoverTitle.js +1 -3
  732. package/popover/title/PopoverTitle.mjs +1 -3
  733. package/popover/trigger/PopoverTrigger.js +9 -11
  734. package/popover/trigger/PopoverTrigger.mjs +10 -12
  735. package/popover/viewport/PopoverViewport.js +2 -12
  736. package/popover/viewport/PopoverViewport.mjs +3 -12
  737. package/preview-card/arrow/PreviewCardArrow.d.mts +1 -1
  738. package/preview-card/arrow/PreviewCardArrow.d.ts +1 -1
  739. package/preview-card/backdrop/PreviewCardBackdrop.d.mts +1 -1
  740. package/preview-card/backdrop/PreviewCardBackdrop.d.ts +1 -1
  741. package/preview-card/backdrop/PreviewCardBackdrop.js +2 -8
  742. package/preview-card/backdrop/PreviewCardBackdrop.mjs +3 -8
  743. package/preview-card/backdrop/PreviewCardBackdropDataAttributes.d.mts +1 -1
  744. package/preview-card/backdrop/PreviewCardBackdropDataAttributes.d.ts +1 -1
  745. package/preview-card/backdrop/PreviewCardBackdropDataAttributes.js +1 -1
  746. package/preview-card/backdrop/PreviewCardBackdropDataAttributes.mjs +1 -1
  747. package/preview-card/popup/PreviewCardPopup.d.mts +1 -1
  748. package/preview-card/popup/PreviewCardPopup.d.ts +1 -1
  749. package/preview-card/popup/PreviewCardPopup.js +6 -12
  750. package/preview-card/popup/PreviewCardPopup.mjs +7 -12
  751. package/preview-card/popup/PreviewCardPopupDataAttributes.d.mts +1 -1
  752. package/preview-card/popup/PreviewCardPopupDataAttributes.d.ts +1 -1
  753. package/preview-card/popup/PreviewCardPopupDataAttributes.js +1 -1
  754. package/preview-card/popup/PreviewCardPopupDataAttributes.mjs +1 -1
  755. package/preview-card/portal/PreviewCardPortal.d.mts +6 -2
  756. package/preview-card/portal/PreviewCardPortal.d.ts +6 -2
  757. package/preview-card/portal/PreviewCardPortal.mjs +1 -2
  758. package/preview-card/positioner/PreviewCardPositioner.d.mts +1 -1
  759. package/preview-card/positioner/PreviewCardPositioner.d.ts +1 -1
  760. package/preview-card/positioner/PreviewCardPositioner.js +3 -4
  761. package/preview-card/positioner/PreviewCardPositioner.mjs +3 -4
  762. package/preview-card/positioner/PreviewCardPositionerContext.d.mts +1 -1
  763. package/preview-card/positioner/PreviewCardPositionerContext.d.ts +1 -1
  764. package/preview-card/positioner/PreviewCardPositionerContext.js +1 -1
  765. package/preview-card/positioner/PreviewCardPositionerContext.mjs +1 -1
  766. package/preview-card/positioner/PreviewCardPositionerCssVars.d.mts +12 -0
  767. package/preview-card/positioner/PreviewCardPositionerCssVars.d.ts +12 -0
  768. package/preview-card/positioner/PreviewCardPositionerCssVars.js +12 -0
  769. package/preview-card/positioner/PreviewCardPositionerCssVars.mjs +12 -0
  770. package/preview-card/root/PreviewCardRoot.js +14 -17
  771. package/preview-card/root/PreviewCardRoot.mjs +15 -18
  772. package/preview-card/store/PreviewCardHandle.d.mts +15 -12
  773. package/preview-card/store/PreviewCardHandle.d.ts +15 -12
  774. package/preview-card/store/PreviewCardHandle.js +18 -23
  775. package/preview-card/store/PreviewCardHandle.mjs +19 -23
  776. package/preview-card/store/PreviewCardStore.d.mts +22 -7
  777. package/preview-card/store/PreviewCardStore.d.ts +22 -7
  778. package/preview-card/store/PreviewCardStore.js +43 -30
  779. package/preview-card/store/PreviewCardStore.mjs +43 -31
  780. package/preview-card/trigger/PreviewCardTrigger.d.mts +1 -1
  781. package/preview-card/trigger/PreviewCardTrigger.d.ts +1 -1
  782. package/preview-card/trigger/PreviewCardTrigger.js +4 -8
  783. package/preview-card/trigger/PreviewCardTrigger.mjs +5 -9
  784. package/preview-card/viewport/PreviewCardViewport.js +1 -9
  785. package/preview-card/viewport/PreviewCardViewport.mjs +2 -9
  786. package/progress/indicator/ProgressIndicator.js +1 -5
  787. package/progress/indicator/ProgressIndicator.mjs +1 -5
  788. package/progress/root/ProgressRoot.d.mts +1 -2
  789. package/progress/root/ProgressRoot.d.ts +1 -2
  790. package/progress/root/ProgressRoot.js +28 -19
  791. package/progress/root/ProgressRoot.mjs +29 -20
  792. package/progress/root/ProgressRootContext.d.mts +4 -12
  793. package/progress/root/ProgressRootContext.d.ts +4 -12
  794. package/progress/root/stateAttributesMapping.js +3 -17
  795. package/progress/root/stateAttributesMapping.mjs +3 -17
  796. package/progress/value/ProgressValue.d.mts +1 -1
  797. package/progress/value/ProgressValue.d.ts +1 -1
  798. package/progress/value/ProgressValue.js +7 -3
  799. package/progress/value/ProgressValue.mjs +7 -3
  800. package/radio/indicator/RadioIndicatorDataAttributes.d.mts +1 -1
  801. package/radio/indicator/RadioIndicatorDataAttributes.d.ts +1 -1
  802. package/radio/indicator/RadioIndicatorDataAttributes.js +1 -1
  803. package/radio/indicator/RadioIndicatorDataAttributes.mjs +1 -1
  804. package/radio/root/RadioRoot.js +22 -29
  805. package/radio/root/RadioRoot.mjs +22 -29
  806. package/radio/utils/stateAttributesMapping.js +2 -3
  807. package/radio/utils/stateAttributesMapping.mjs +2 -3
  808. package/radio-group/RadioGroup.js +47 -32
  809. package/radio-group/RadioGroup.mjs +47 -32
  810. package/radio-group/RadioGroupContext.d.mts +0 -1
  811. package/radio-group/RadioGroupContext.d.ts +0 -1
  812. package/scroll-area/root/ScrollAreaRoot.js +122 -83
  813. package/scroll-area/root/ScrollAreaRoot.mjs +122 -83
  814. package/scroll-area/root/ScrollAreaRootContext.d.mts +1 -3
  815. package/scroll-area/root/ScrollAreaRootContext.d.ts +1 -3
  816. package/scroll-area/root/stateAttributes.js +10 -19
  817. package/scroll-area/root/stateAttributes.mjs +10 -19
  818. package/scroll-area/scrollbar/ScrollAreaScrollbar.js +58 -74
  819. package/scroll-area/scrollbar/ScrollAreaScrollbar.mjs +58 -74
  820. package/scroll-area/scrollbar/ScrollAreaScrollbarContext.d.mts +1 -3
  821. package/scroll-area/scrollbar/ScrollAreaScrollbarContext.d.ts +1 -3
  822. package/scroll-area/thumb/ScrollAreaThumb.js +10 -24
  823. package/scroll-area/thumb/ScrollAreaThumb.mjs +10 -24
  824. package/scroll-area/utils/getOffset.js +4 -3
  825. package/scroll-area/utils/getOffset.mjs +4 -3
  826. package/scroll-area/viewport/ScrollAreaViewport.js +76 -79
  827. package/scroll-area/viewport/ScrollAreaViewport.mjs +77 -80
  828. package/select/arrow/SelectArrow.d.mts +1 -1
  829. package/select/arrow/SelectArrow.d.ts +1 -1
  830. package/select/arrow/SelectArrow.js +1 -7
  831. package/select/arrow/SelectArrow.mjs +2 -7
  832. package/select/backdrop/SelectBackdropDataAttributes.d.mts +1 -1
  833. package/select/backdrop/SelectBackdropDataAttributes.d.ts +1 -1
  834. package/select/backdrop/SelectBackdropDataAttributes.js +1 -1
  835. package/select/backdrop/SelectBackdropDataAttributes.mjs +1 -1
  836. package/select/group-label/SelectGroupLabel.js +3 -0
  837. package/select/group-label/SelectGroupLabel.mjs +3 -0
  838. package/select/index.d.mts +2 -1
  839. package/select/index.d.ts +2 -1
  840. package/select/index.parts.d.mts +1 -1
  841. package/select/index.parts.d.ts +1 -1
  842. package/select/index.parts.js +2 -2
  843. package/select/index.parts.mjs +1 -1
  844. package/select/item/SelectItem.js +12 -25
  845. package/select/item/SelectItem.mjs +13 -26
  846. package/select/item/SelectItemContext.d.mts +0 -1
  847. package/select/item/SelectItemContext.d.ts +0 -1
  848. package/select/item-indicator/SelectItemIndicator.js +1 -2
  849. package/select/item-indicator/SelectItemIndicator.mjs +1 -2
  850. package/select/item-indicator/SelectItemIndicatorDataAttributes.d.mts +1 -1
  851. package/select/item-indicator/SelectItemIndicatorDataAttributes.d.ts +1 -1
  852. package/select/item-indicator/SelectItemIndicatorDataAttributes.js +1 -1
  853. package/select/item-indicator/SelectItemIndicatorDataAttributes.mjs +1 -1
  854. package/select/item-text/SelectItemText.js +4 -5
  855. package/select/item-text/SelectItemText.mjs +4 -5
  856. package/select/label/SelectLabel.js +2 -1
  857. package/select/label/SelectLabel.mjs +2 -1
  858. package/select/list/SelectList.js +3 -6
  859. package/select/list/SelectList.mjs +3 -6
  860. package/select/popup/SelectPopup.d.mts +1 -1
  861. package/select/popup/SelectPopup.d.ts +1 -1
  862. package/select/popup/SelectPopup.js +32 -52
  863. package/select/popup/SelectPopup.mjs +33 -53
  864. package/select/popup/SelectPopupDataAttributes.d.mts +1 -1
  865. package/select/popup/SelectPopupDataAttributes.d.ts +1 -1
  866. package/select/popup/SelectPopupDataAttributes.js +1 -1
  867. package/select/popup/SelectPopupDataAttributes.mjs +1 -1
  868. package/select/portal/SelectPortal.d.mts +7 -2
  869. package/select/portal/SelectPortal.d.ts +7 -2
  870. package/select/portal/SelectPortal.js +3 -7
  871. package/select/portal/SelectPortal.mjs +3 -7
  872. package/select/positioner/SelectPositioner.d.mts +1 -1
  873. package/select/positioner/SelectPositioner.d.ts +1 -1
  874. package/select/positioner/SelectPositioner.js +15 -29
  875. package/select/positioner/SelectPositioner.mjs +17 -31
  876. package/select/positioner/SelectPositionerContext.d.mts +1 -1
  877. package/select/positioner/SelectPositionerContext.d.ts +1 -1
  878. package/select/root/SelectRoot.d.mts +2 -0
  879. package/select/root/SelectRoot.d.ts +2 -0
  880. package/select/root/SelectRoot.js +93 -121
  881. package/select/root/SelectRoot.mjs +95 -123
  882. package/select/root/SelectRootContext.d.mts +4 -5
  883. package/select/root/SelectRootContext.d.ts +4 -5
  884. package/select/root/SelectRootContext.js +1 -11
  885. package/select/root/SelectRootContext.mjs +0 -9
  886. package/select/scroll-arrow/SelectScrollArrow.d.mts +1 -6
  887. package/select/scroll-arrow/SelectScrollArrow.d.ts +1 -6
  888. package/select/scroll-arrow/SelectScrollArrow.js +4 -11
  889. package/select/scroll-arrow/SelectScrollArrow.mjs +4 -11
  890. package/select/scroll-down-arrow/SelectScrollDownArrowDataAttributes.d.mts +1 -1
  891. package/select/scroll-down-arrow/SelectScrollDownArrowDataAttributes.d.ts +1 -1
  892. package/select/scroll-down-arrow/SelectScrollDownArrowDataAttributes.js +1 -1
  893. package/select/scroll-down-arrow/SelectScrollDownArrowDataAttributes.mjs +1 -1
  894. package/select/scroll-up-arrow/SelectScrollUpArrowDataAttributes.d.mts +1 -1
  895. package/select/scroll-up-arrow/SelectScrollUpArrowDataAttributes.d.ts +1 -1
  896. package/select/scroll-up-arrow/SelectScrollUpArrowDataAttributes.js +1 -1
  897. package/select/scroll-up-arrow/SelectScrollUpArrowDataAttributes.mjs +1 -1
  898. package/select/separator/SelectSeparator.d.mts +26 -0
  899. package/select/separator/SelectSeparator.d.ts +26 -0
  900. package/select/separator/SelectSeparator.js +15 -0
  901. package/select/separator/SelectSeparator.mjs +10 -0
  902. package/select/store.d.mts +3 -5
  903. package/select/store.d.ts +3 -5
  904. package/select/store.js +32 -35
  905. package/select/store.mjs +32 -35
  906. package/select/trigger/SelectTrigger.d.mts +1 -1
  907. package/select/trigger/SelectTrigger.d.ts +1 -1
  908. package/select/trigger/SelectTrigger.js +3 -8
  909. package/select/trigger/SelectTrigger.mjs +4 -9
  910. package/select/value/SelectValue.js +1 -1
  911. package/select/value/SelectValue.mjs +1 -1
  912. package/slider/control/SliderControl.js +61 -78
  913. package/slider/control/SliderControl.mjs +61 -78
  914. package/slider/indicator/SliderIndicator.js +15 -34
  915. package/slider/indicator/SliderIndicator.mjs +15 -34
  916. package/slider/root/SliderRoot.d.mts +5 -3
  917. package/slider/root/SliderRoot.d.ts +5 -3
  918. package/slider/root/SliderRoot.js +36 -47
  919. package/slider/root/SliderRoot.mjs +36 -47
  920. package/slider/root/SliderRootContext.d.mts +6 -4
  921. package/slider/root/SliderRootContext.d.ts +6 -4
  922. package/slider/root/stateAttributesMapping.js +7 -6
  923. package/slider/root/stateAttributesMapping.mjs +7 -6
  924. package/slider/thumb/SliderThumb.js +64 -69
  925. package/slider/thumb/SliderThumb.mjs +64 -69
  926. package/slider/utils/getMidpoint.d.mts +1 -2
  927. package/slider/utils/getMidpoint.d.ts +1 -2
  928. package/slider/utils/getMidpoint.js +2 -5
  929. package/slider/utils/getMidpoint.mjs +2 -5
  930. package/slider/utils/getPushedThumbValues.d.mts +4 -21
  931. package/slider/utils/getPushedThumbValues.d.ts +4 -21
  932. package/slider/utils/getPushedThumbValues.js +6 -15
  933. package/slider/utils/getPushedThumbValues.mjs +7 -15
  934. package/slider/utils/getSliderValue.js +8 -8
  935. package/slider/utils/getSliderValue.mjs +8 -8
  936. package/slider/utils/resolveThumbCollision.d.mts +5 -24
  937. package/slider/utils/resolveThumbCollision.d.ts +5 -24
  938. package/slider/utils/resolveThumbCollision.js +33 -64
  939. package/slider/utils/resolveThumbCollision.mjs +33 -64
  940. package/slider/utils/test-utils.d.mts +1 -11
  941. package/slider/utils/test-utils.d.ts +1 -11
  942. package/slider/utils/test-utils.js +1 -11
  943. package/slider/utils/test-utils.mjs +1 -11
  944. package/slider/utils/validateMinimumDistance.js +6 -7
  945. package/slider/utils/validateMinimumDistance.mjs +6 -7
  946. package/slider/value/SliderValue.js +6 -16
  947. package/slider/value/SliderValue.mjs +6 -16
  948. package/switch/root/SwitchRoot.js +18 -19
  949. package/switch/root/SwitchRoot.mjs +18 -19
  950. package/switch/stateAttributesMapping.js +2 -3
  951. package/switch/stateAttributesMapping.mjs +2 -3
  952. package/tabs/indicator/TabsIndicator.js +13 -24
  953. package/tabs/indicator/TabsIndicator.mjs +13 -24
  954. package/tabs/indicator/prehydrationScript.min.d.mts +1 -1
  955. package/tabs/indicator/prehydrationScript.min.d.ts +1 -1
  956. package/tabs/indicator/prehydrationScript.min.js +1 -1
  957. package/tabs/indicator/prehydrationScript.min.mjs +1 -1
  958. package/tabs/list/TabsList.js +1 -11
  959. package/tabs/list/TabsList.mjs +1 -11
  960. package/tabs/list/TabsListContext.d.mts +0 -5
  961. package/tabs/list/TabsListContext.d.ts +0 -5
  962. package/tabs/panel/TabsPanel.js +10 -20
  963. package/tabs/panel/TabsPanel.mjs +10 -20
  964. package/tabs/panel/TabsPanelDataAttributes.d.mts +1 -1
  965. package/tabs/panel/TabsPanelDataAttributes.d.ts +1 -1
  966. package/tabs/panel/TabsPanelDataAttributes.js +1 -1
  967. package/tabs/panel/TabsPanelDataAttributes.mjs +1 -1
  968. package/tabs/root/TabsRoot.js +40 -75
  969. package/tabs/root/TabsRoot.mjs +40 -75
  970. package/tabs/root/TabsRootContext.d.mts +4 -11
  971. package/tabs/root/TabsRootContext.d.ts +4 -11
  972. package/tabs/root/stateAttributesMapping.js +1 -2
  973. package/tabs/root/stateAttributesMapping.mjs +1 -2
  974. package/tabs/tab/TabsTab.js +42 -39
  975. package/tabs/tab/TabsTab.mjs +42 -39
  976. package/toast/action/ToastAction.js +2 -5
  977. package/toast/action/ToastAction.mjs +2 -5
  978. package/toast/arrow/ToastArrow.d.mts +1 -1
  979. package/toast/arrow/ToastArrow.d.ts +1 -1
  980. package/toast/arrow/ToastArrow.js +1 -2
  981. package/toast/arrow/ToastArrow.mjs +1 -2
  982. package/toast/close/ToastClose.js +3 -4
  983. package/toast/close/ToastClose.mjs +3 -4
  984. package/toast/content/ToastContent.js +3 -7
  985. package/toast/content/ToastContent.mjs +3 -7
  986. package/toast/description/ToastDescription.js +8 -23
  987. package/toast/description/ToastDescription.mjs +8 -23
  988. package/toast/portal/ToastPortal.d.mts +9 -3
  989. package/toast/portal/ToastPortal.d.ts +9 -3
  990. package/toast/portal/ToastPortal.js +10 -1
  991. package/toast/portal/ToastPortal.mjs +9 -2
  992. package/toast/positioner/ToastPositioner.d.mts +1 -1
  993. package/toast/positioner/ToastPositioner.d.ts +1 -1
  994. package/toast/positioner/ToastPositioner.js +4 -5
  995. package/toast/positioner/ToastPositioner.mjs +4 -5
  996. package/toast/positioner/ToastPositionerContext.d.mts +1 -1
  997. package/toast/positioner/ToastPositionerContext.d.ts +1 -1
  998. package/toast/provider/ToastProvider.js +19 -10
  999. package/toast/provider/ToastProvider.mjs +20 -11
  1000. package/toast/root/ToastRoot.d.mts +2 -0
  1001. package/toast/root/ToastRoot.d.ts +2 -0
  1002. package/toast/root/ToastRoot.js +93 -140
  1003. package/toast/root/ToastRoot.mjs +92 -139
  1004. package/toast/root/ToastRootContext.d.mts +0 -6
  1005. package/toast/root/ToastRootContext.d.ts +0 -6
  1006. package/toast/root/ToastRootDataAttributes.d.mts +1 -1
  1007. package/toast/root/ToastRootDataAttributes.d.ts +1 -1
  1008. package/toast/root/ToastRootDataAttributes.js +1 -1
  1009. package/toast/root/ToastRootDataAttributes.mjs +1 -1
  1010. package/toast/store.d.mts +17 -22
  1011. package/toast/store.d.ts +17 -22
  1012. package/toast/store.js +51 -85
  1013. package/toast/store.mjs +53 -86
  1014. package/toast/title/ToastTitle.js +8 -23
  1015. package/toast/title/ToastTitle.mjs +8 -23
  1016. package/toast/useToastManager.js +1 -6
  1017. package/toast/useToastManager.mjs +2 -6
  1018. package/toast/utils/isRenderableNode.d.mts +3 -0
  1019. package/toast/utils/isRenderableNode.d.ts +3 -0
  1020. package/toast/utils/isRenderableNode.js +21 -0
  1021. package/toast/utils/isRenderableNode.mjs +13 -0
  1022. package/toast/utils/test-utils.d.mts +1 -8
  1023. package/toast/utils/test-utils.d.ts +1 -8
  1024. package/toast/utils/useToastLabelPart.d.mts +18 -0
  1025. package/toast/utils/useToastLabelPart.d.ts +18 -0
  1026. package/toast/utils/useToastLabelPart.js +52 -0
  1027. package/toast/utils/useToastLabelPart.mjs +47 -0
  1028. package/toast/viewport/ToastViewport.js +42 -78
  1029. package/toast/viewport/ToastViewport.mjs +42 -78
  1030. package/toggle/Toggle.js +1 -2
  1031. package/toggle/Toggle.mjs +1 -2
  1032. package/toggle-group/ToggleGroup.js +4 -19
  1033. package/toggle-group/ToggleGroup.mjs +4 -19
  1034. package/toggle-group/ToggleGroupContext.d.mts +1 -3
  1035. package/toggle-group/ToggleGroupContext.d.ts +1 -3
  1036. package/toggle-group/ToggleGroupContext.js +2 -8
  1037. package/toggle-group/ToggleGroupContext.mjs +2 -7
  1038. package/toolbar/button/ToolbarButton.js +2 -2
  1039. package/toolbar/button/ToolbarButton.mjs +2 -2
  1040. package/toolbar/group/ToolbarGroupContext.d.mts +1 -2
  1041. package/toolbar/group/ToolbarGroupContext.d.ts +1 -2
  1042. package/toolbar/group/ToolbarGroupContext.js +2 -8
  1043. package/toolbar/group/ToolbarGroupContext.mjs +2 -7
  1044. package/toolbar/input/ToolbarInput.js +8 -11
  1045. package/toolbar/input/ToolbarInput.mjs +8 -11
  1046. package/toolbar/link/ToolbarLink.d.mts +1 -1
  1047. package/toolbar/link/ToolbarLink.d.ts +1 -1
  1048. package/toolbar/root/ToolbarRoot.js +4 -5
  1049. package/toolbar/root/ToolbarRoot.mjs +4 -5
  1050. package/toolbar/root/ToolbarRootContext.d.mts +0 -3
  1051. package/toolbar/root/ToolbarRootContext.d.ts +0 -3
  1052. package/toolbar/separator/ToolbarSeparator.d.mts +2 -2
  1053. package/toolbar/separator/ToolbarSeparator.d.ts +2 -2
  1054. package/toolbar/separator/ToolbarSeparator.js +1 -4
  1055. package/toolbar/separator/ToolbarSeparator.mjs +3 -5
  1056. package/tooltip/arrow/TooltipArrow.d.mts +1 -1
  1057. package/tooltip/arrow/TooltipArrow.d.ts +1 -1
  1058. package/tooltip/popup/TooltipPopup.d.mts +1 -1
  1059. package/tooltip/popup/TooltipPopup.d.ts +1 -1
  1060. package/tooltip/popup/TooltipPopup.js +4 -9
  1061. package/tooltip/popup/TooltipPopup.mjs +5 -9
  1062. package/tooltip/popup/TooltipPopupDataAttributes.d.mts +1 -1
  1063. package/tooltip/popup/TooltipPopupDataAttributes.d.ts +1 -1
  1064. package/tooltip/popup/TooltipPopupDataAttributes.js +1 -1
  1065. package/tooltip/popup/TooltipPopupDataAttributes.mjs +1 -1
  1066. package/tooltip/portal/TooltipPortal.d.mts +6 -2
  1067. package/tooltip/portal/TooltipPortal.d.ts +6 -2
  1068. package/tooltip/portal/TooltipPortal.mjs +1 -2
  1069. package/tooltip/positioner/TooltipPositioner.d.mts +1 -1
  1070. package/tooltip/positioner/TooltipPositioner.d.ts +1 -1
  1071. package/tooltip/positioner/TooltipPositioner.js +3 -4
  1072. package/tooltip/positioner/TooltipPositioner.mjs +3 -4
  1073. package/tooltip/positioner/TooltipPositionerContext.d.mts +1 -1
  1074. package/tooltip/positioner/TooltipPositionerContext.d.ts +1 -1
  1075. package/tooltip/positioner/TooltipPositionerCssVars.d.mts +12 -0
  1076. package/tooltip/positioner/TooltipPositionerCssVars.d.ts +12 -0
  1077. package/tooltip/positioner/TooltipPositionerCssVars.js +12 -0
  1078. package/tooltip/positioner/TooltipPositionerCssVars.mjs +12 -0
  1079. package/tooltip/provider/TooltipProvider.d.mts +1 -1
  1080. package/tooltip/provider/TooltipProvider.d.ts +1 -1
  1081. package/tooltip/provider/TooltipProvider.js +1 -5
  1082. package/tooltip/provider/TooltipProvider.mjs +1 -5
  1083. package/tooltip/provider/TooltipProviderContext.d.mts +5 -6
  1084. package/tooltip/provider/TooltipProviderContext.d.ts +5 -6
  1085. package/tooltip/provider/TooltipProviderContext.js +3 -0
  1086. package/tooltip/provider/TooltipProviderContext.mjs +4 -0
  1087. package/tooltip/root/TooltipRoot.js +18 -17
  1088. package/tooltip/root/TooltipRoot.mjs +19 -18
  1089. package/tooltip/store/TooltipHandle.d.mts +15 -12
  1090. package/tooltip/store/TooltipHandle.d.ts +15 -12
  1091. package/tooltip/store/TooltipHandle.js +18 -23
  1092. package/tooltip/store/TooltipHandle.mjs +19 -23
  1093. package/tooltip/store/TooltipStore.d.mts +24 -6
  1094. package/tooltip/store/TooltipStore.d.ts +24 -6
  1095. package/tooltip/store/TooltipStore.js +54 -31
  1096. package/tooltip/store/TooltipStore.mjs +54 -32
  1097. package/tooltip/trigger/TooltipTrigger.d.mts +1 -1
  1098. package/tooltip/trigger/TooltipTrigger.d.ts +1 -1
  1099. package/tooltip/trigger/TooltipTrigger.js +15 -25
  1100. package/tooltip/trigger/TooltipTrigger.mjs +16 -26
  1101. package/tooltip/viewport/TooltipViewport.js +1 -9
  1102. package/tooltip/viewport/TooltipViewport.mjs +2 -9
  1103. package/utils/FloatingPortalLite.d.mts +7 -9
  1104. package/utils/FloatingPortalLite.d.ts +7 -9
  1105. package/utils/FloatingPortalLite.js +4 -4
  1106. package/utils/FloatingPortalLite.mjs +4 -5
  1107. package/utils/FocusGuard.d.mts +1 -5
  1108. package/utils/FocusGuard.d.ts +1 -5
  1109. package/utils/InternalBackdrop.d.mts +0 -4
  1110. package/utils/InternalBackdrop.d.ts +0 -4
  1111. package/utils/NullStore.d.mts +15 -0
  1112. package/utils/NullStore.d.ts +15 -0
  1113. package/utils/NullStore.js +23 -0
  1114. package/utils/NullStore.mjs +16 -0
  1115. package/utils/adaptiveOriginConstants.d.mts +8 -0
  1116. package/utils/adaptiveOriginConstants.d.ts +8 -0
  1117. package/utils/adaptiveOriginConstants.js +14 -0
  1118. package/utils/adaptiveOriginConstants.mjs +8 -0
  1119. package/utils/adaptiveOriginMiddleware.d.mts +0 -4
  1120. package/utils/adaptiveOriginMiddleware.d.ts +0 -4
  1121. package/utils/adaptiveOriginMiddleware.js +5 -8
  1122. package/utils/adaptiveOriginMiddleware.mjs +1 -4
  1123. package/utils/closePart.d.mts +1 -4
  1124. package/utils/closePart.d.ts +1 -4
  1125. package/utils/closePart.js +2 -13
  1126. package/utils/closePart.mjs +1 -12
  1127. package/utils/dispatchClickWithModifiers.d.mts +21 -0
  1128. package/utils/dispatchClickWithModifiers.d.ts +21 -0
  1129. package/utils/dispatchClickWithModifiers.js +30 -0
  1130. package/utils/dispatchClickWithModifiers.mjs +24 -0
  1131. package/utils/formatNumber.d.mts +1 -2
  1132. package/utils/formatNumber.d.ts +1 -2
  1133. package/utils/formatNumber.js +0 -12
  1134. package/utils/formatNumber.mjs +0 -11
  1135. package/utils/getElementAtPoint.d.mts +3 -1
  1136. package/utils/getElementAtPoint.d.ts +3 -1
  1137. package/utils/getElementAtPoint.js +5 -2
  1138. package/utils/getElementAtPoint.mjs +5 -2
  1139. package/utils/getPseudoElementBounds.d.mts +5 -0
  1140. package/utils/getPseudoElementBounds.d.ts +5 -0
  1141. package/utils/getPseudoElementBounds.js +14 -0
  1142. package/utils/getPseudoElementBounds.mjs +13 -0
  1143. package/utils/hideMiddleware.js +7 -4
  1144. package/utils/hideMiddleware.mjs +7 -4
  1145. package/utils/listbox-separator/ListboxSeparator.d.mts +18 -0
  1146. package/utils/listbox-separator/ListboxSeparator.d.ts +18 -0
  1147. package/utils/listbox-separator/ListboxSeparator.js +36 -0
  1148. package/utils/listbox-separator/ListboxSeparator.mjs +31 -0
  1149. package/utils/popupStateMapping.d.mts +19 -7
  1150. package/utils/popupStateMapping.d.ts +19 -7
  1151. package/utils/popupStateMapping.js +14 -9
  1152. package/utils/popupStateMapping.mjs +15 -8
  1153. package/utils/popups/index.d.mts +3 -1
  1154. package/utils/popups/index.d.ts +3 -1
  1155. package/utils/popups/index.js +22 -0
  1156. package/utils/popups/index.mjs +3 -1
  1157. package/utils/popups/popupHandle.d.mts +113 -0
  1158. package/utils/popups/popupHandle.d.ts +113 -0
  1159. package/utils/popups/popupHandle.js +229 -0
  1160. package/utils/popups/popupHandle.mjs +222 -0
  1161. package/utils/popups/popupStoreUtils.d.mts +47 -12
  1162. package/utils/popups/popupStoreUtils.d.ts +47 -12
  1163. package/utils/popups/popupStoreUtils.js +109 -44
  1164. package/utils/popups/popupStoreUtils.mjs +107 -42
  1165. package/utils/popups/popupTriggerMap.d.mts +3 -2
  1166. package/utils/popups/popupTriggerMap.d.ts +3 -2
  1167. package/utils/popups/popupTriggerMap.js +48 -21
  1168. package/utils/popups/popupTriggerMap.mjs +48 -21
  1169. package/utils/popups/store.d.mts +14 -0
  1170. package/utils/popups/store.d.ts +14 -0
  1171. package/utils/popups/store.js +33 -21
  1172. package/utils/popups/store.mjs +33 -21
  1173. package/utils/popups/usePopupHandleStore.d.mts +12 -0
  1174. package/utils/popups/usePopupHandleStore.d.ts +12 -0
  1175. package/utils/popups/usePopupHandleStore.js +33 -0
  1176. package/utils/popups/usePopupHandleStore.mjs +27 -0
  1177. package/utils/scrollable.d.mts +2 -0
  1178. package/utils/scrollable.d.ts +2 -0
  1179. package/utils/scrollable.js +20 -12
  1180. package/utils/scrollable.mjs +18 -12
  1181. package/utils/usePopupAutoResize.d.mts +1 -1
  1182. package/utils/usePopupAutoResize.d.ts +1 -1
  1183. package/utils/usePopupAutoResize.js +15 -18
  1184. package/utils/usePopupAutoResize.mjs +15 -18
  1185. package/utils/usePopupViewport.d.mts +5 -15
  1186. package/utils/usePopupViewport.d.ts +5 -15
  1187. package/utils/usePopupViewport.js +48 -17
  1188. package/utils/usePopupViewport.mjs +47 -17
  1189. package/utils/usePositioner.js +1 -1
  1190. package/utils/usePositioner.mjs +1 -1
  1191. package/utils/useRegisteredLabelId.d.mts +2 -1
  1192. package/utils/useRegisteredLabelId.d.ts +2 -1
  1193. package/utils/useRegisteredLabelId.js +1 -1
  1194. package/utils/useRegisteredLabelId.mjs +1 -1
  1195. package/utils/useSwipeDismiss.js +72 -113
  1196. package/utils/useSwipeDismiss.mjs +72 -113
  1197. package/checkbox/utils/useStateAttributesMapping.js +0 -30
  1198. package/number-field/root/useNumberFieldButton.d.mts +0 -21
  1199. package/number-field/root/useNumberFieldButton.d.ts +0 -21
  1200. package/number-field/root/useNumberFieldButton.js +0 -135
  1201. package/number-field/root/useNumberFieldButton.mjs +0 -130
  1202. package/number-field/utils/subscribeToVisualViewportResize.d.mts +0 -1
  1203. package/number-field/utils/subscribeToVisualViewportResize.d.ts +0 -1
  1204. package/number-field/utils/subscribeToVisualViewportResize.js +0 -23
  1205. package/number-field/utils/subscribeToVisualViewportResize.mjs +0 -18
  1206. package/select/portal/SelectPortalContext.d.mts +0 -3
  1207. package/select/portal/SelectPortalContext.d.ts +0 -3
  1208. package/select/portal/SelectPortalContext.js +0 -21
  1209. package/select/portal/SelectPortalContext.mjs +0 -13
  1210. package/slider/utils/replaceArrayItemAtIndex.d.mts +0 -1
  1211. package/slider/utils/replaceArrayItemAtIndex.d.ts +0 -1
  1212. package/slider/utils/replaceArrayItemAtIndex.js +0 -12
  1213. package/slider/utils/replaceArrayItemAtIndex.mjs +0 -6
  1214. package/slider/utils/valueArrayToPercentages.d.mts +0 -1
  1215. package/slider/utils/valueArrayToPercentages.d.ts +0 -1
  1216. package/slider/utils/valueArrayToPercentages.js +0 -15
  1217. package/slider/utils/valueArrayToPercentages.mjs +0 -9
@@ -6,15 +6,16 @@ import { isElement } from '@floating-ui/utils/dom';
6
6
  import { addEventListener } from '@base-ui/utils/addEventListener';
7
7
  import { ownerDocument, ownerWindow } from '@base-ui/utils/owner';
8
8
  import { useAnimationFrame } from '@base-ui/utils/useAnimationFrame';
9
+ import { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';
9
10
  import { useStableCallback } from '@base-ui/utils/useStableCallback';
10
11
  import { useDialogRootContext } from "../../dialog/root/DialogRootContext.mjs";
11
12
  import { DialogViewport } from "../../dialog/viewport/DialogViewport.mjs";
12
13
  import { mergeProps } from "../../merge-props/index.mjs";
13
14
  import { useDrawerRootContext } from "../root/DrawerRootContext.mjs";
14
- import { getSnapPointSwipeMovement, useDrawerSnapPoints } from "../root/useDrawerSnapPoints.mjs";
15
+ import { closestSnapPointIndex, getSnapPointSwipeMovement, useDrawerSnapPoints } from "../root/useDrawerSnapPoints.mjs";
15
16
  import { useDrawerProviderContext } from "../provider/DrawerProviderContext.mjs";
16
17
  import { clamp } from "../../internals/clamp.mjs";
17
- import { useSwipeDismiss } from "../../utils/useSwipeDismiss.mjs";
18
+ import { getDisplacement, useSwipeDismiss } from "../../utils/useSwipeDismiss.mjs";
18
19
  import { DrawerPopupCssVars } from "../popup/DrawerPopupCssVars.mjs";
19
20
  import { DrawerPopupDataAttributes } from "../popup/DrawerPopupDataAttributes.mjs";
20
21
  import { DrawerBackdropCssVars } from "../backdrop/DrawerBackdropCssVars.mjs";
@@ -40,6 +41,8 @@ const MIN_SWIPE_RELEASE_DURATION_MS = 80;
40
41
  const MAX_SWIPE_RELEASE_DURATION_MS = 360;
41
42
  const MIN_SWIPE_RELEASE_SCALAR = 0.1;
42
43
  const MAX_SWIPE_RELEASE_SCALAR = 1;
44
+ const AXIS_LOCK_SLOP = 6;
45
+ const AXIS_LOCK_BIAS = 2;
43
46
  const DRAWER_CONTENT_SELECTOR = `[${DRAWER_CONTENT_ATTRIBUTE}]`;
44
47
  /**
45
48
  * A positioning container for the drawer popup that can be made scrollable.
@@ -55,9 +58,7 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
55
58
  children,
56
59
  ...elementProps
57
60
  } = props;
58
- const {
59
- store
60
- } = useDialogRootContext();
61
+ const store = useDialogRootContext();
61
62
  const popupRef = store.context.popupRef;
62
63
  const backdropRef = store.context.backdropRef;
63
64
  const {
@@ -65,9 +66,10 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
65
66
  notifyParentSwipingChange,
66
67
  notifyParentSwipeProgressChange,
67
68
  frontmostHeight,
68
- snapToSequentialPoints
69
+ snapToSequentialPoints,
70
+ swipeAreaActiveRef
69
71
  } = useDrawerRootContext();
70
- const providerContext = useDrawerProviderContext(true);
72
+ const providerContext = useDrawerProviderContext();
71
73
  const {
72
74
  snapPoints,
73
75
  resolvedSnapPoints,
@@ -99,30 +101,13 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
99
101
  const touchScrollStateRef = React.useRef(null);
100
102
  const virtualKeyboard = useDrawerVirtualKeyboardContext();
101
103
  const snapPointRange = React.useMemo(() => {
102
- if (!snapPoints || snapPoints.length < 2) {
103
- return null;
104
- }
105
- if (swipeDirection !== 'down' && swipeDirection !== 'up') {
106
- return null;
107
- }
108
- if (resolvedSnapPoints.length < 2) {
109
- return null;
110
- }
111
- const offsets = resolvedSnapPoints.map(point => point.offset).filter(offset => Number.isFinite(offset)).sort((a, b) => a - b);
112
- if (offsets.length < 2) {
104
+ if (!snapPoints || snapPoints.length < 2 || resolvedSnapPoints.length < 2 || swipeDirection !== 'down' && swipeDirection !== 'up') {
113
105
  return null;
114
106
  }
107
+ const offsets = resolvedSnapPoints.map(point => point.offset).sort((a, b) => a - b);
115
108
  const minOffset = offsets[0];
116
109
  const nextOffset = offsets[1];
117
- const maxOffset = offsets[offsets.length - 1];
118
- let range = nextOffset - minOffset;
119
- if (!Number.isFinite(range) || range <= 0) {
120
- const fallbackRange = maxOffset - minOffset;
121
- if (!Number.isFinite(fallbackRange) || fallbackRange <= 0) {
122
- return null;
123
- }
124
- range = fallbackRange;
125
- }
110
+ const range = nextOffset - minOffset;
126
111
  return {
127
112
  minOffset,
128
113
  range
@@ -141,7 +126,8 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
141
126
  return [swipeDirection];
142
127
  }, [snapPoints, swipeDirection]);
143
128
  const setSwipeDismissed = useStableCallback(dismissed => {
144
- setSwipeDismissedElements(popupRef.current, backdropRef.current, dismissed);
129
+ popupRef.current?.toggleAttribute(DrawerPopupDataAttributes.swipeDismiss, dismissed);
130
+ backdropRef.current?.toggleAttribute(DrawerPopupDataAttributes.swipeDismiss, dismissed);
145
131
  });
146
132
  const clearSwipeRelease = useStableCallback(() => {
147
133
  setSwipeDismissed(false);
@@ -155,11 +141,7 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
155
141
  nestedSwipeActiveRef.current = false;
156
142
  notifyParentSwipingChange?.(false);
157
143
  });
158
- const applySwipeProgress = useStableCallback(({
159
- resolvedProgress,
160
- shouldTrackProgress,
161
- notifyParent
162
- }) => {
144
+ const applySwipeProgress = useStableCallback((resolvedProgress, shouldTrackProgress, notifyParent) => {
163
145
  const isActive = open && !nested && shouldTrackProgress;
164
146
  const swipeProgress = isActive ? resolvedProgress : 0;
165
147
  const nestedSwipeProgress = open && shouldTrackProgress ? resolvedProgress : 0;
@@ -177,78 +159,48 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
177
159
  if (!backdropElement) {
178
160
  return;
179
161
  }
180
- if (!isActive || swipeProgress <= 0) {
181
- backdropElement.style.setProperty(DrawerBackdropCssVars.swipeProgress, '0');
182
- backdropElement.style.removeProperty(DrawerPopupCssVars.height);
183
- return;
184
- }
185
- backdropElement.style.setProperty(DrawerBackdropCssVars.swipeProgress, `${swipeProgress}`);
186
- if (frontmostHeight > 0) {
162
+ const showProgress = isActive && swipeProgress > 0;
163
+ backdropElement.style.setProperty(DrawerBackdropCssVars.swipeProgress, showProgress ? `${swipeProgress}` : '0');
164
+ if (showProgress && frontmostHeight > 0) {
187
165
  backdropElement.style.setProperty(DrawerPopupCssVars.height, `${frontmostHeight}px`);
188
166
  } else {
189
167
  backdropElement.style.removeProperty(DrawerPopupCssVars.height);
190
168
  }
191
169
  });
192
- function resolveSwipeRelease({
193
- direction,
194
- deltaX,
195
- deltaY,
196
- velocityX,
197
- velocityY,
198
- releaseVelocityX,
199
- releaseVelocityY
200
- }) {
201
- if (!direction) {
170
+ function resolveSwipeRelease(popupElement, direction, deltaX, deltaY, velocityX, velocityY, releaseVelocityX, releaseVelocityY) {
171
+ const size = getBaseSwipeSize(popupElement, direction);
172
+ if (size <= 0) {
202
173
  return null;
203
174
  }
204
- const popupElement = store.context.popupRef.current;
205
- if (!popupElement) {
206
- return null;
207
- }
208
- const size = direction === 'left' || direction === 'right' ? popupElement.offsetWidth : popupElement.offsetHeight;
209
- if (!Number.isFinite(size) || size <= 0) {
210
- return null;
211
- }
212
- const axisDelta = direction === 'left' || direction === 'right' ? deltaX : deltaY;
213
- const snapPointBaseOffset = snapPoints && snapPoints.length > 0 ? activeSnapPointOffset ?? 0 : 0;
214
- let baseOffset = 0;
215
- if (direction === 'down') {
216
- baseOffset = snapPointBaseOffset;
217
- } else if (direction === 'up') {
218
- baseOffset = -snapPointBaseOffset;
219
- }
220
- const translation = baseOffset + axisDelta;
221
- const translationAlongDirection = direction === 'left' || direction === 'up' ? -translation : translation;
175
+
176
+ // The snap point base offset shifts the popup along the dismiss direction for both
177
+ // `down` (+offset) and `up` (-offset), so it always adds to the directional translation.
178
+ const snapPointBaseOffset = (direction === 'down' || direction === 'up') && snapPoints && snapPoints.length > 0 ? activeSnapPointOffset ?? 0 : 0;
179
+ const translationAlongDirection = snapPointBaseOffset + getDisplacement(direction, deltaX, deltaY);
222
180
  const remainingDistance = Math.max(0, size - translationAlongDirection);
223
- if (!Number.isFinite(remainingDistance) || remainingDistance <= 0) {
181
+ if (remainingDistance <= 0) {
224
182
  return null;
225
183
  }
226
- const axisVelocity = direction === 'left' || direction === 'right' ? releaseVelocityX : releaseVelocityY;
227
- const fallbackVelocity = direction === 'left' || direction === 'right' ? velocityX : velocityY;
228
- const resolvedVelocity = Math.abs(axisVelocity) > 0 && Number.isFinite(axisVelocity) ? axisVelocity : fallbackVelocity;
229
- const directionalVelocity = direction === 'left' || direction === 'up' ? -resolvedVelocity : resolvedVelocity;
230
- if (!Number.isFinite(directionalVelocity) || directionalVelocity <= MIN_SWIPE_RELEASE_VELOCITY) {
184
+ const releaseVelocity = getDisplacement(direction, releaseVelocityX, releaseVelocityY);
185
+ const directionalVelocity = Math.abs(releaseVelocity) > 0 ? releaseVelocity : getDisplacement(direction, velocityX, velocityY);
186
+ if (directionalVelocity <= MIN_SWIPE_RELEASE_VELOCITY) {
231
187
  return null;
232
188
  }
233
189
  const clampedVelocity = clamp(directionalVelocity, MIN_SWIPE_RELEASE_VELOCITY, MAX_SWIPE_RELEASE_VELOCITY);
190
+ // The gesture hook supplies finite deltas and velocities. The guards above keep the remaining
191
+ // distance and divisor positive, so the duration stays within [MIN, MAX] and the resulting
192
+ // scalar within (0, 1].
234
193
  const durationMs = clamp(remainingDistance / clampedVelocity, MIN_SWIPE_RELEASE_DURATION_MS, MAX_SWIPE_RELEASE_DURATION_MS);
235
- if (!Number.isFinite(durationMs)) {
236
- return null;
237
- }
238
194
  const normalizedDuration = (durationMs - MIN_SWIPE_RELEASE_DURATION_MS) / (MAX_SWIPE_RELEASE_DURATION_MS - MIN_SWIPE_RELEASE_DURATION_MS);
239
- const durationScalar = clamp(MIN_SWIPE_RELEASE_SCALAR + normalizedDuration * (MAX_SWIPE_RELEASE_SCALAR - MIN_SWIPE_RELEASE_SCALAR), MIN_SWIPE_RELEASE_SCALAR, MAX_SWIPE_RELEASE_SCALAR);
240
- if (!Number.isFinite(durationScalar) || durationScalar <= 0) {
241
- return null;
242
- }
243
- return durationScalar;
195
+ return MIN_SWIPE_RELEASE_SCALAR + normalizedDuration * (MAX_SWIPE_RELEASE_SCALAR - MIN_SWIPE_RELEASE_SCALAR);
244
196
  }
245
197
  function updateNestedSwipeActive(details) {
246
198
  if (nestedSwipeActiveRef.current || !details) {
247
199
  return;
248
200
  }
249
201
  const direction = details.direction ?? swipeDirection;
250
- const delta = direction === 'left' || direction === 'right' ? details.deltaX : details.deltaY;
251
- if (!Number.isFinite(delta) || Math.abs(delta) < MIN_SWIPE_THRESHOLD) {
202
+ const delta = getDisplacement(direction, details.deltaX, details.deltaY);
203
+ if (Math.abs(delta) < MIN_SWIPE_THRESHOLD) {
252
204
  return;
253
205
  }
254
206
  nestedSwipeActiveRef.current = true;
@@ -265,13 +217,10 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
265
217
  y: DrawerPopupCssVars.swipeMovementY
266
218
  },
267
219
  onSwipeStart(event) {
268
- if ('touches' in event || 'pointerType' in event && event.pointerType === 'touch') {
220
+ if ('touches' in event || event.pointerType === 'touch') {
269
221
  return;
270
222
  }
271
223
  const popupElement = popupRef.current;
272
- if (!popupElement) {
273
- return;
274
- }
275
224
  const doc = ownerDocument(popupElement);
276
225
  const selection = doc.getSelection?.();
277
226
  if (!selection || selection.isCollapsed) {
@@ -303,54 +252,38 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
303
252
  return false;
304
253
  }
305
254
  const doc = popupElement.ownerDocument;
306
- const elementAtPoint = getElementAtPoint(doc, position.x, position.y);
255
+ const elementAtPoint = getElementAtPoint(popupElement.getRootNode(), position.x, position.y);
307
256
  if (!elementAtPoint || !contains(popupElement, elementAtPoint)) {
308
257
  return false;
309
258
  }
310
259
  const nativeEvent = details.nativeEvent;
311
- const touchLike = 'touches' in nativeEvent || 'pointerType' in nativeEvent && nativeEvent.pointerType === 'touch';
260
+ const touchLike = 'touches' in nativeEvent || nativeEvent.pointerType === 'touch';
312
261
  if (touchLike && shouldIgnoreSwipeForTextSelection(doc, popupElement)) {
313
262
  return false;
314
263
  }
315
- if (nativeEvent.type === 'touchstart' && isSwipeIgnoredTarget(elementAtPoint)) {
316
- return false;
317
- }
318
264
  return true;
319
265
  },
320
266
  onProgress(progress, details) {
321
267
  updateNestedSwipeActive(details);
322
268
  const hasSnapPoints = Boolean(snapPoints && snapPoints.length > 0);
323
- if (swipingRef.current && swipeDirection === 'down' && hasSnapPoints && details && Number.isFinite(details.deltaY)) {
269
+ if (swipingRef.current && swipeDirection === 'down' && hasSnapPoints && details) {
324
270
  const popupElement = store.context.popupRef.current;
325
271
  if (popupElement) {
326
272
  popupElement.style.removeProperty('transform');
327
273
  popupElement.style.setProperty(DrawerPopupCssVars.swipeMovementY, `${getSnapPointSwipeMovement(activeSnapPointOffset ?? 0, details.deltaY)}px`);
328
274
  }
329
275
  }
330
- const currentDirection = details?.direction ?? swipe.swipeDirection;
331
- const isDismissSwipe = currentDirection === undefined || currentDirection === swipeDirection;
332
- const isVerticalSwipe = swipeDirection === 'down' || swipeDirection === 'up';
333
- const shouldTrackProgress = hasSnapPoints && isVerticalSwipe || !hasSnapPoints || swipeDirection === 'left' || swipeDirection === 'right' || isDismissSwipe;
334
276
  let resolvedProgress = progress;
335
277
  if (snapPointRange && popupHeight > 0) {
278
+ const baseOffset = activeSnapPointOffset ?? snapPointRange.minOffset;
279
+ const offsetToProgress = nextOffset => clamp((nextOffset - snapPointRange.minOffset) / snapPointRange.range, 0, 1);
336
280
  if (details && Number.isFinite(details.deltaY)) {
337
- const baseOffset = activeSnapPointOffset ?? snapPointRange.minOffset;
338
- const nextOffset = clamp(baseOffset + details.deltaY, 0, popupHeight);
339
- resolvedProgress = clamp((nextOffset - snapPointRange.minOffset) / snapPointRange.range, 0, 1);
281
+ resolvedProgress = offsetToProgress(clamp(baseOffset + details.deltaY, 0, popupHeight));
340
282
  } else if (snapPointProgress !== null) {
341
283
  resolvedProgress = snapPointProgress;
342
- } else if (currentDirection === 'down' || currentDirection === 'up') {
343
- const displacement = progress * popupHeight;
344
- const baseOffset = activeSnapPointOffset ?? snapPointRange.minOffset;
345
- const nextOffset = currentDirection === 'down' ? baseOffset + displacement : baseOffset - displacement;
346
- resolvedProgress = clamp((nextOffset - snapPointRange.minOffset) / snapPointRange.range, 0, 1);
347
284
  }
348
285
  }
349
- applySwipeProgress({
350
- resolvedProgress,
351
- shouldTrackProgress,
352
- notifyParent: true
353
- });
286
+ applySwipeProgress(resolvedProgress, true, true);
354
287
  },
355
288
  onRelease({
356
289
  event,
@@ -362,30 +295,21 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
362
295
  releaseVelocityX,
363
296
  releaseVelocityY
364
297
  }) {
365
- const swipeReleasePayload = {
366
- deltaX,
367
- deltaY,
368
- velocityX,
369
- velocityY,
370
- releaseVelocityX,
371
- releaseVelocityY
372
- };
298
+ const popupElement = store.context.popupRef.current;
299
+ if (!popupElement) {
300
+ clearSwipeRelease();
301
+ return undefined;
302
+ }
303
+ const releasePopupElement = popupElement;
373
304
  function startSwipeRelease(resolvedDirection) {
374
305
  // Start ending transition styles earlier and synchronously to prevent a period where
375
306
  // the popup appears stuck on release before the actual closing animation starts.
376
- const popupElement = store.context.popupRef.current;
377
- if (!popupElement) {
378
- return;
379
- }
380
307
  finishNestedSwipe();
381
308
  setSwipeDismissed(true);
382
- popupElement.style.removeProperty('transition');
383
- popupElement.setAttribute(TransitionStatusDataAttributes.endingStyle, '');
309
+ releasePopupElement.style.removeProperty('transition');
310
+ releasePopupElement.setAttribute(TransitionStatusDataAttributes.endingStyle, '');
384
311
  ReactDOM.flushSync(() => {
385
- setSwipeRelease(resolveSwipeRelease({
386
- direction: resolvedDirection,
387
- ...swipeReleasePayload
388
- }));
312
+ setSwipeRelease(resolveSwipeRelease(releasePopupElement, resolvedDirection, deltaX, deltaY, velocityX, velocityY, releaseVelocityX, releaseVelocityY));
389
313
  });
390
314
  }
391
315
  if (!snapPoints || snapPoints.length === 0) {
@@ -393,29 +317,16 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
393
317
  clearSwipeRelease();
394
318
  return undefined;
395
319
  }
396
- const element = store.context.popupRef.current;
397
- if (!element) {
398
- clearSwipeRelease();
399
- return undefined;
400
- }
401
- const baseThreshold = getBaseSwipeThreshold(element, direction);
402
- const delta = direction === 'left' || direction === 'right' ? deltaX : deltaY;
403
- if (!Number.isFinite(delta)) {
404
- clearSwipeRelease();
405
- return undefined;
406
- }
407
- const directionalDelta = direction === 'left' || direction === 'up' ? -delta : delta;
320
+ const directionalDelta = getDisplacement(direction, deltaX, deltaY);
408
321
  if (directionalDelta <= 0) {
409
322
  clearSwipeRelease();
410
323
  return false;
411
324
  }
412
- const velocity = direction === 'left' || direction === 'right' ? velocityX : velocityY;
413
- const directionalVelocity = direction === 'left' || direction === 'up' ? -velocity : velocity;
414
- if (directionalVelocity >= FAST_SWIPE_VELOCITY && directionalDelta > 0) {
325
+ if (getDisplacement(direction, velocityX, velocityY) >= FAST_SWIPE_VELOCITY) {
415
326
  startSwipeRelease(direction);
416
327
  return true;
417
328
  }
418
- const shouldClose = directionalDelta > baseThreshold;
329
+ const shouldClose = directionalDelta > getBaseSwipeThreshold(releasePopupElement, direction);
419
330
  if (shouldClose) {
420
331
  startSwipeRelease(direction);
421
332
  } else {
@@ -427,20 +338,20 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
427
338
  clearSwipeRelease();
428
339
  return undefined;
429
340
  }
430
- if (!popupHeight || resolvedSnapPoints.length === 0) {
341
+ if (!popupHeight) {
431
342
  clearSwipeRelease();
432
- return undefined;
343
+ return false;
433
344
  }
434
- const dragDelta = swipeDirection === 'down' ? deltaY : -deltaY;
435
- if (!Number.isFinite(dragDelta)) {
345
+ if (resolvedSnapPoints.length === 0) {
436
346
  clearSwipeRelease();
437
347
  return undefined;
438
348
  }
349
+ const dragDelta = swipeDirection === 'down' ? deltaY : -deltaY;
439
350
  const dragDirection = Math.sign(dragDelta);
440
351
  const releaseDirectionalVelocity = swipeDirection === 'down' ? releaseVelocityY : -releaseVelocityY;
441
352
  const fallbackDirectionalVelocity = swipeDirection === 'down' ? velocityY : -velocityY;
442
- let resolvedDirectionalVelocity = Number.isFinite(releaseDirectionalVelocity) ? releaseDirectionalVelocity : fallbackDirectionalVelocity;
443
- if (dragDirection !== 0 && Math.abs(dragDelta) >= MIN_SWIPE_THRESHOLD && Number.isFinite(resolvedDirectionalVelocity)) {
353
+ let resolvedDirectionalVelocity = releaseDirectionalVelocity;
354
+ if (dragDirection !== 0 && Math.abs(dragDelta) >= MIN_SWIPE_THRESHOLD) {
444
355
  const velocityDirection = Math.sign(resolvedDirectionalVelocity);
445
356
  if (velocityDirection !== 0 && velocityDirection !== dragDirection) {
446
357
  // Ignore touch reversals that would otherwise flip the snap decision.
@@ -449,39 +360,20 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
449
360
  }
450
361
  const currentOffset = activeSnapPointOffset ?? 0;
451
362
  const dragTargetOffset = clamp(currentOffset + dragDelta, 0, popupHeight);
452
- const velocityOffset = Number.isFinite(resolvedDirectionalVelocity) && Math.abs(resolvedDirectionalVelocity) >= SNAP_VELOCITY_THRESHOLD ? clamp(resolvedDirectionalVelocity, -MAX_SNAP_VELOCITY, MAX_SNAP_VELOCITY) * SNAP_VELOCITY_MULTIPLIER : 0;
363
+ const velocityOffset = Math.abs(resolvedDirectionalVelocity) >= SNAP_VELOCITY_THRESHOLD ? clamp(resolvedDirectionalVelocity, -MAX_SNAP_VELOCITY, MAX_SNAP_VELOCITY) * SNAP_VELOCITY_MULTIPLIER : 0;
453
364
  const targetOffset = snapToSequentialPoints ? dragTargetOffset : clamp(dragTargetOffset + velocityOffset, 0, popupHeight);
454
365
  const snapPointEventDetails = createChangeEventDetails(REASONS.swipe, event);
455
366
  const closeFromSnapPoints = () => {
456
367
  pendingSwipeCloseSnapPointRef.current = activeSnapPoint;
457
- setActiveSnapPoint?.(null, snapPointEventDetails);
368
+ setActiveSnapPoint(null, snapPointEventDetails);
458
369
  startSwipeRelease(swipeDirection);
459
370
  return true;
460
371
  };
461
372
  if (snapToSequentialPoints) {
462
373
  const orderedSnapPoints = [...resolvedSnapPoints].sort((first, second) => first.offset - second.offset);
463
- if (orderedSnapPoints.length === 0) {
464
- clearSwipeRelease();
465
- return false;
466
- }
467
- let currentIndex = 0;
468
- let closestDistance = Math.abs(currentOffset - orderedSnapPoints[0].offset);
469
- for (let index = 1; index < orderedSnapPoints.length; index += 1) {
470
- const distance = Math.abs(currentOffset - orderedSnapPoints[index].offset);
471
- if (distance < closestDistance) {
472
- closestDistance = distance;
473
- currentIndex = index;
474
- }
475
- }
476
- let targetSnapPoint = orderedSnapPoints[0];
477
- closestDistance = Math.abs(targetOffset - targetSnapPoint.offset);
478
- for (const snapPoint of orderedSnapPoints) {
479
- const distance = Math.abs(targetOffset - snapPoint.offset);
480
- if (distance < closestDistance) {
481
- closestDistance = distance;
482
- targetSnapPoint = snapPoint;
483
- }
484
- }
374
+ const orderedOffsets = orderedSnapPoints.map(point => point.offset);
375
+ const currentIndex = closestSnapPointIndex(orderedOffsets, currentOffset);
376
+ let targetSnapPoint = orderedSnapPoints[closestSnapPointIndex(orderedOffsets, targetOffset)];
485
377
  const velocityDirection = Math.sign(resolvedDirectionalVelocity);
486
378
  const shouldAdvance = dragDirection !== 0 && velocityDirection !== 0 && velocityDirection === dragDirection && Math.abs(resolvedDirectionalVelocity) >= SNAP_VELOCITY_THRESHOLD;
487
379
  let effectiveTargetOffset = targetOffset;
@@ -498,34 +390,24 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
498
390
  return closeFromSnapPoints();
499
391
  }
500
392
  }
501
- const closeOffset = popupHeight;
502
- const closeDistance = Math.abs(effectiveTargetOffset - closeOffset);
393
+ const closeDistance = Math.abs(effectiveTargetOffset - popupHeight);
503
394
  const snapDistance = Math.abs(effectiveTargetOffset - targetSnapPoint.offset);
504
395
  if (closeDistance < snapDistance) {
505
396
  return closeFromSnapPoints();
506
397
  }
507
- setActiveSnapPoint?.(targetSnapPoint.value, snapPointEventDetails);
398
+ setActiveSnapPoint(targetSnapPoint.value, snapPointEventDetails);
508
399
  clearSwipeRelease();
509
400
  return false;
510
401
  }
511
402
  if (resolvedDirectionalVelocity >= FAST_SWIPE_VELOCITY && dragDelta > 0) {
512
403
  return closeFromSnapPoints();
513
404
  }
514
- let closestSnapPoint = resolvedSnapPoints[0];
515
- let closestDistance = Math.abs(targetOffset - closestSnapPoint.offset);
516
- for (const snapPoint of resolvedSnapPoints) {
517
- const distance = Math.abs(targetOffset - snapPoint.offset);
518
- if (distance < closestDistance) {
519
- closestDistance = distance;
520
- closestSnapPoint = snapPoint;
521
- }
522
- }
523
- const closeOffset = popupHeight;
524
- const closeDistance = Math.abs(targetOffset - closeOffset);
525
- if (closeDistance < closestDistance) {
405
+ const closestSnapPoint = resolvedSnapPoints[closestSnapPointIndex(resolvedSnapPoints.map(point => point.offset), targetOffset)];
406
+ const closeDistance = Math.abs(targetOffset - popupHeight);
407
+ if (closeDistance < Math.abs(targetOffset - closestSnapPoint.offset)) {
526
408
  return closeFromSnapPoints();
527
409
  }
528
- setActiveSnapPoint?.(closestSnapPoint.value, snapPointEventDetails);
410
+ setActiveSnapPoint(closestSnapPoint.value, snapPointEventDetails);
529
411
  clearSwipeRelease();
530
412
  return false;
531
413
  },
@@ -544,7 +426,7 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
544
426
  if (dismissEventDetails.isCanceled) {
545
427
  const pendingSnapPoint = pendingSwipeCloseSnapPointRef.current;
546
428
  if (pendingSnapPoint !== undefined) {
547
- setActiveSnapPoint?.(pendingSnapPoint, createChangeEventDetails(REASONS.swipe, event));
429
+ setActiveSnapPoint(pendingSnapPoint, createChangeEventDetails(REASONS.swipe, event));
548
430
  }
549
431
  pendingSwipeCloseSnapPointRef.current = undefined;
550
432
  resetSwipeRef.current?.();
@@ -566,7 +448,7 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
566
448
  // Parent rejected: revert animation and restore snap point.
567
449
  const pendingSnapPoint = pendingSwipeCloseSnapPointRef.current;
568
450
  if (pendingSnapPoint !== undefined) {
569
- setActiveSnapPoint?.(pendingSnapPoint, createChangeEventDetails(REASONS.swipe, savedEvent));
451
+ setActiveSnapPoint(pendingSnapPoint, createChangeEventDetails(REASONS.swipe, savedEvent));
570
452
  }
571
453
  pendingSwipeCloseSnapPointRef.current = undefined;
572
454
  clearSwipeRelease();
@@ -596,42 +478,18 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
596
478
  }
597
479
  const resolvedRootElement = rootElement;
598
480
  const doc = ownerDocument(resolvedRootElement);
599
- const win = ownerWindow(doc);
600
- function handleNativeTouchMove(event) {
601
- // The virtual keyboard provider observes the move to tell a tap apart from a drag.
602
- // It must run even when the swipe gesture below claims the event with
603
- // `stopPropagation()`, which would otherwise prevent React's delegated handlers
604
- // (and the provider) from ever seeing the move.
605
- virtualKeyboard?.onTouchMove(event);
606
- if (ignoreTouchSwipeRef.current) {
607
- return;
608
- }
609
- const touchState = touchScrollStateRef.current;
610
- const touch = event.touches[0];
611
- if (!touch || !touchState) {
612
- return;
613
- }
481
+ function processTouchMove(event, touchState, touch) {
614
482
  const drawerAxisDelta = isVerticalScrollAxis ? touch.clientY - touchState.lastY : touch.clientX - touchState.lastX;
615
483
 
616
- // Preserve native range interaction by never locking touchmove for range inputs.
617
- if (isEventOnRangeInput(event, win)) {
618
- touchState.allowSwipe = false;
619
- updateTouchScrollPosition(touchState, touch);
620
- return;
621
- }
622
-
623
484
  // Avoid blocking pinch zoom or text selection adjustments on iOS Safari.
624
485
  if (event.touches.length === 2) {
625
- updateTouchScrollPosition(touchState, touch);
626
486
  return;
627
487
  }
628
488
  const allowTouchMove = shouldIgnoreSwipeForTextSelection(doc, resolvedRootElement);
629
489
  if (allowTouchMove || !open || !mounted || nestedDrawerOpen) {
630
- updateTouchScrollPosition(touchState, touch);
631
490
  return;
632
491
  }
633
- if (preserveNativeCrossAxisScrollOnMove(touchState, touch, isVerticalScrollAxis)) {
634
- updateTouchScrollPosition(touchState, touch);
492
+ if (shouldYieldTouchMove(touchState, event, touch, isVerticalScrollAxis)) {
635
493
  return;
636
494
  }
637
495
  const scrollTarget = touchState.scrollTarget;
@@ -643,27 +501,21 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
643
501
  // move through React re-rasterizes the popup content on every frame.
644
502
  event.stopPropagation();
645
503
  moveSwipeNative(event, resolvedRootElement);
646
- updateTouchScrollPosition(touchState, touch);
647
504
  return;
648
505
  }
649
- const hasScrollableContent = hasScrollableContentOnAxis(scrollTarget, scrollAxis);
650
- if (!hasScrollableContent) {
506
+ if (!hasScrollableContentOnAxis(scrollTarget, scrollAxis)) {
651
507
  // If the scroll container doesn't overflow on the drawer axis, prevent the window from
652
508
  // scrolling instead.
653
509
  if (event.cancelable) {
654
510
  event.preventDefault();
655
511
  }
656
512
  event.stopPropagation();
657
- updateTouchScrollPosition(touchState, touch);
658
513
  return;
659
514
  }
660
- const delta = drawerAxisDelta;
661
- if (delta !== 0) {
662
- const canSwipeFromScrollEdge = canSwipeFromScrollEdgeOnMove(scrollTarget, scrollAxis, swipeDirection, delta);
515
+ if (drawerAxisDelta !== 0) {
516
+ const canSwipeFromScrollEdge = canSwipeFromScrollEdgeOnMove(scrollTarget, scrollAxis, swipeDirection, drawerAxisDelta);
663
517
  if (!touchState.allowSwipe) {
664
- if (!event.cancelable) {
665
- touchState.allowSwipe = false;
666
- } else if (canSwipeFromScrollEdge) {
518
+ if (event.cancelable && canSwipeFromScrollEdge) {
667
519
  touchState.allowSwipe = true;
668
520
  event.preventDefault();
669
521
  } else {
@@ -677,6 +529,22 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
677
529
  event.stopPropagation();
678
530
  moveSwipeNative(event, resolvedRootElement);
679
531
  }
532
+ }
533
+ function handleNativeTouchMove(event) {
534
+ // The virtual keyboard provider observes the move to tell a tap apart from a drag.
535
+ // It must run even when the swipe gesture below claims the event with
536
+ // `stopPropagation()`, which would otherwise prevent React's delegated handlers
537
+ // (and the provider) from ever seeing the move.
538
+ virtualKeyboard?.onTouchMove(event);
539
+ if (ignoreTouchSwipeRef.current) {
540
+ return;
541
+ }
542
+ const touchState = touchScrollStateRef.current;
543
+ const touch = event.touches[0];
544
+ if (!touch || !touchState) {
545
+ return;
546
+ }
547
+ processTouchMove(event, touchState, touch);
680
548
  updateTouchScrollPosition(touchState, touch);
681
549
  }
682
550
  return addEventListener(doc, 'touchmove', handleNativeTouchMove, {
@@ -684,18 +552,13 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
684
552
  capture: true
685
553
  });
686
554
  }, [mounted, nestedDrawerOpen, open, popupElementState, isVerticalScrollAxis, scrollAxis, swipeDirection, moveSwipeNative, viewportElement, virtualKeyboard]);
687
- React.useEffect(() => {
555
+ useIsoLayoutEffect(() => {
688
556
  if (!snapPointRange || swipe.swiping) {
689
557
  return;
690
558
  }
691
- const resolvedProgress = !open || nested ? 0 : snapPointProgress ?? 0;
692
- applySwipeProgress({
693
- resolvedProgress,
694
- shouldTrackProgress: true,
695
- notifyParent: false
696
- });
559
+ applySwipeProgress(!open || nested ? 0 : snapPointProgress ?? 0, true, false);
697
560
  }, [applySwipeProgress, frontmostHeight, nested, notifyParentSwipeProgressChange, open, snapPointProgress, snapPointRange, swipe.swiping, store, visualStateStore]);
698
- React.useEffect(() => {
561
+ useIsoLayoutEffect(() => {
699
562
  if (!notifyParentSwipeProgressChange) {
700
563
  return undefined;
701
564
  }
@@ -706,13 +569,19 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
706
569
  notifyParentSwipeProgressChange(0);
707
570
  };
708
571
  }, [notifyParentSwipeProgressChange, open]);
709
- React.useEffect(() => {
572
+ useIsoLayoutEffect(() => {
710
573
  if (open) {
711
- resetSwipe();
574
+ // Skip `resetSwipe` while `Drawer.SwipeArea` is driving the open: it zeroes the popup's
575
+ // `--swipe-movement-*` (via `syncDragStyles(false)`), flashing it fully open for a frame.
576
+ // `clearSwipeRelease` doesn't touch those vars, so always run it to clear any leftover
577
+ // release state from a prior dismiss (e.g. when the popup is kept mounted).
578
+ if (!swipeAreaActiveRef.current) {
579
+ resetSwipe();
580
+ }
712
581
  clearSwipeRelease();
713
582
  }
714
- }, [clearSwipeRelease, open, resetSwipe]);
715
- React.useEffect(() => {
583
+ }, [clearSwipeRelease, open, resetSwipe, swipeAreaActiveRef]);
584
+ useIsoLayoutEffect(() => {
716
585
  const backdropElement = backdropRef.current;
717
586
  return () => {
718
587
  visualStateStore?.set({
@@ -737,12 +606,19 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
737
606
  swipeStrength: swipeRelease ?? null,
738
607
  setSwipeDismissed
739
608
  }), [setSwipeDismissed, swipe.getDragStyles, swipe.swiping, swipeRelease]);
740
- function resetTouchTrackingState() {
741
- ignoreTouchSwipeRef.current = false;
609
+ function resetTouchSwipeState(ignoreSwipe) {
610
+ ignoreTouchSwipeRef.current = ignoreSwipe;
742
611
  touchScrollStateRef.current = null;
612
+ }
613
+ function resetTouchTrackingState() {
614
+ resetTouchSwipeState(false);
743
615
  lastPointerTypeRef.current = '';
744
616
  ignoreNextTouchStartFromPenRef.current = false;
745
617
  }
618
+ function handlePointerEnd(event) {
619
+ lastPointerTypeRef.current = '';
620
+ return event.pointerType !== 'touch';
621
+ }
746
622
  return /*#__PURE__*/_jsx(DialogViewport, {
747
623
  ref: forwardedRef,
748
624
  className: className,
@@ -755,8 +631,7 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
755
631
  if (!open || !mounted || nestedDrawerOpen) {
756
632
  return;
757
633
  }
758
- const doc = ownerDocument(event.currentTarget);
759
- const elementAtPoint = getElementAtPoint(doc, event.clientX, event.clientY);
634
+ const elementAtPoint = getElementAtPoint(event.currentTarget.getRootNode(), event.clientX, event.clientY);
760
635
  if (isSwipeIgnoredTarget(elementAtPoint) || isDrawerContentTarget(elementAtPoint)) {
761
636
  return;
762
637
  }
@@ -772,34 +647,24 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
772
647
  swipePointerProps.onPointerMove?.(event);
773
648
  },
774
649
  onPointerUp(event) {
775
- if (lastPointerTypeRef.current === event.pointerType) {
776
- lastPointerTypeRef.current = '';
777
- }
778
- if (event.pointerType === 'touch') {
779
- return;
650
+ if (handlePointerEnd(event)) {
651
+ swipePointerProps.onPointerUp?.(event);
780
652
  }
781
- swipePointerProps.onPointerUp?.(event);
782
653
  },
783
654
  onPointerCancel(event) {
784
- if (lastPointerTypeRef.current === event.pointerType) {
785
- lastPointerTypeRef.current = '';
786
- }
787
- if (event.pointerType === 'touch') {
788
- return;
655
+ if (handlePointerEnd(event)) {
656
+ swipePointerProps.onPointerCancel?.(event);
789
657
  }
790
- swipePointerProps.onPointerCancel?.(event);
791
658
  },
792
659
  onTouchStart(event) {
793
660
  const startedFromPenPointerDown = lastPointerTypeRef.current === 'pen' && ignoreNextTouchStartFromPenRef.current;
794
661
  if (startedFromPenPointerDown) {
795
662
  ignoreNextTouchStartFromPenRef.current = false;
796
- ignoreTouchSwipeRef.current = false;
797
- touchScrollStateRef.current = null;
663
+ resetTouchSwipeState(false);
798
664
  return;
799
665
  }
800
666
  if (!open || !mounted || nestedDrawerOpen) {
801
- ignoreTouchSwipeRef.current = false;
802
- touchScrollStateRef.current = null;
667
+ resetTouchSwipeState(false);
803
668
  return;
804
669
  }
805
670
  const touch = event.touches[0];
@@ -807,32 +672,25 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
807
672
  return;
808
673
  }
809
674
  if (isReactTouchEventOnRangeInput(event)) {
810
- ignoreTouchSwipeRef.current = false;
811
- touchScrollStateRef.current = null;
675
+ resetTouchSwipeState(false);
812
676
  return;
813
677
  }
814
- const doc = ownerDocument(event.currentTarget);
815
- const elementAtPoint = getElementAtPoint(doc, touch.clientX, touch.clientY);
816
- const rootElement = viewportElement ?? popupElementState;
678
+ const rootElement = event.currentTarget;
679
+ const elementAtPoint = getElementAtPoint(rootElement.getRootNode(), touch.clientX, touch.clientY);
817
680
  const eventTarget = getTarget(event.nativeEvent);
818
- const target = isElement(eventTarget) ? eventTarget : null;
819
- if (rootElement && target && !contains(rootElement, target)) {
820
- ignoreTouchSwipeRef.current = true;
821
- touchScrollStateRef.current = null;
681
+ const target = isElement(eventTarget) ? eventTarget : rootElement;
682
+ if (!contains(rootElement, target)) {
683
+ resetTouchSwipeState(true);
822
684
  return;
823
685
  }
824
686
  virtualKeyboard?.onTouchStart(event);
825
- ignoreTouchSwipeRef.current = isSwipeIgnoredTarget(elementAtPoint);
826
- if (ignoreTouchSwipeRef.current) {
827
- touchScrollStateRef.current = null;
687
+ if (isSwipeIgnoredTarget(elementAtPoint)) {
688
+ resetTouchSwipeState(true);
828
689
  return;
829
690
  }
830
- let scrollTarget = null;
831
- let hasCrossAxisScrollableContent = false;
832
- if (rootElement && target) {
833
- scrollTarget = findScrollableTouchTarget(target, rootElement, scrollAxis);
834
- hasCrossAxisScrollableContent = findScrollableTouchTarget(target, rootElement, crossScrollAxis) != null;
835
- }
691
+ ignoreTouchSwipeRef.current = false;
692
+ const scrollTarget = findScrollableTouchTarget(target, rootElement, scrollAxis);
693
+ const hasCrossAxisScrollableContent = findScrollableTouchTarget(target, rootElement, crossScrollAxis) != null;
836
694
  let allowSwipe = null;
837
695
  if (scrollTarget) {
838
696
  const canSwipeFromEdge = isAtSwipeStartEdge(scrollTarget, scrollAxis, swipeDirection);
@@ -846,7 +704,8 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
846
704
  scrollTarget,
847
705
  hasCrossAxisScrollableContent,
848
706
  allowSwipe,
849
- preserveNativeCrossAxisScroll: false
707
+ preserveNativeCrossAxisScroll: false,
708
+ drawerAxisAttributed: false
850
709
  };
851
710
  swipeTouchProps.onTouchStart?.(event);
852
711
  },
@@ -871,24 +730,8 @@ export const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewp
871
730
  });
872
731
  });
873
732
  if (process.env.NODE_ENV !== "production") DrawerViewport.displayName = "DrawerViewport";
874
- function setSwipeDismissedElements(popupElement, backdropElement, dismissed) {
875
- if (dismissed) {
876
- popupElement?.setAttribute(DrawerPopupDataAttributes.swipeDismiss, '');
877
- backdropElement?.setAttribute(DrawerPopupDataAttributes.swipeDismiss, '');
878
- return;
879
- }
880
- popupElement?.removeAttribute(DrawerPopupDataAttributes.swipeDismiss);
881
- backdropElement?.removeAttribute(DrawerPopupDataAttributes.swipeDismiss);
882
- }
883
733
  function setBackdropSwipingAttribute(backdropElement, swiping) {
884
- if (!backdropElement) {
885
- return;
886
- }
887
- if (swiping) {
888
- backdropElement.setAttribute(DrawerPopupDataAttributes.swiping, '');
889
- return;
890
- }
891
- backdropElement.removeAttribute(DrawerPopupDataAttributes.swiping);
734
+ backdropElement?.toggleAttribute(DrawerPopupDataAttributes.swiping, swiping);
892
735
  }
893
736
  function isSwipeIgnoredTarget(target) {
894
737
  return Boolean(target?.closest(BASE_UI_SWIPE_IGNORE_SELECTOR));
@@ -896,17 +739,16 @@ function isSwipeIgnoredTarget(target) {
896
739
  function isDrawerContentTarget(target) {
897
740
  return Boolean(target?.closest(DRAWER_CONTENT_SELECTOR));
898
741
  }
742
+ function getBaseSwipeSize(element, direction) {
743
+ return direction === 'left' || direction === 'right' ? element.offsetWidth : element.offsetHeight;
744
+ }
899
745
  function getBaseSwipeThreshold(element, direction) {
900
- const size = direction === 'left' || direction === 'right' ? element.offsetWidth : element.offsetHeight;
901
- return Math.max(size * 0.5, MIN_SWIPE_THRESHOLD);
746
+ return Math.max(getBaseSwipeSize(element, direction) * 0.5, MIN_SWIPE_THRESHOLD);
902
747
  }
903
748
  function isRangeInput(target, win) {
904
749
  return target instanceof win.HTMLInputElement && target.type === 'range';
905
750
  }
906
751
  function isTextSelectionControl(target) {
907
- if (!isElement(target)) {
908
- return false;
909
- }
910
752
  return target.tagName === 'INPUT' || target.tagName === 'TEXTAREA';
911
753
  }
912
754
  function hasExpandedSelectionWithinTarget(selection, target) {
@@ -916,8 +758,7 @@ function hasExpandedSelectionWithinTarget(selection, target) {
916
758
  }
917
759
  function shouldIgnoreSwipeForTextSelection(doc, rootElement) {
918
760
  const activeEl = activeElement(doc);
919
- const activeElementWithinRoot = Boolean(activeEl && contains(rootElement, activeEl));
920
- if (activeElementWithinRoot && isTextSelectionControl(activeEl)) {
761
+ if (activeEl && contains(rootElement, activeEl) && isTextSelectionControl(activeEl)) {
921
762
  const {
922
763
  selectionStart,
923
764
  selectionEnd
@@ -933,11 +774,7 @@ function shouldIgnoreSwipeForTextSelection(doc, rootElement) {
933
774
  return hasExpandedSelectionWithinTarget(selection, rootElement);
934
775
  }
935
776
  function isEventOnRangeInput(event, win) {
936
- const composedPath = event.composedPath();
937
- if (composedPath) {
938
- return composedPath.some(pathTarget => isRangeInput(pathTarget, win));
939
- }
940
- return isRangeInput(getTarget(event), win);
777
+ return event.composedPath().some(pathTarget => isRangeInput(pathTarget, win));
941
778
  }
942
779
  function isReactTouchEventOnRangeInput(event) {
943
780
  return isEventOnRangeInput(event.nativeEvent, ownerWindow(event.currentTarget));
@@ -946,25 +783,51 @@ function updateTouchScrollPosition(touchState, touch) {
946
783
  touchState.lastX = touch.clientX;
947
784
  touchState.lastY = touch.clientY;
948
785
  }
949
- function preserveNativeCrossAxisScrollOnMove(touchState, touch, isVerticalScrollAxis) {
786
+
787
+ /**
788
+ * Arbitrates a touchmove between the drawer swipe and a native cross-axis scroll.
789
+ * Returns `true` when the move must be left alone — either because the cross axis already won the
790
+ * gesture, or because neither axis has passed the slop yet and the gesture cannot be attributed.
791
+ */
792
+ function shouldYieldTouchMove(touchState, event, touch, isVerticalScrollAxis) {
950
793
  if (touchState.preserveNativeCrossAxisScroll) {
951
794
  return true;
952
795
  }
953
- if (touchState.allowSwipe === true || !touchState.hasCrossAxisScrollableContent) {
796
+
797
+ // Attribution happens once per gesture. Re-arbitrating after the drawer axis has won would let
798
+ // the pre-attribution branches below fire mid-drag (the slop is measured from the touch origin,
799
+ // which is never re-baselined), freezing the popup and dropping `preventDefault()`.
800
+ if (touchState.drawerAxisAttributed || touchState.allowSwipe === true || !touchState.hasCrossAxisScrollableContent) {
954
801
  return false;
955
802
  }
803
+
804
+ // A non-cancelable touchmove means the browser has already committed the gesture to a native
805
+ // scroll; claiming it for the swipe would drag the popup alongside the scrolling content.
806
+ if (!event.cancelable) {
807
+ touchState.preserveNativeCrossAxisScroll = true;
808
+ return true;
809
+ }
956
810
  const drawerAxisGestureDelta = isVerticalScrollAxis ? touch.clientY - touchState.startY : touch.clientX - touchState.startX;
957
811
  const crossAxisGestureDelta = isVerticalScrollAxis ? touch.clientX - touchState.startX : touch.clientY - touchState.startY;
958
812
  const absDrawerAxisGestureDelta = Math.abs(drawerAxisGestureDelta);
959
813
  const absCrossAxisGestureDelta = Math.abs(crossAxisGestureDelta);
960
- if (absCrossAxisGestureDelta < 6 || absCrossAxisGestureDelta <= absDrawerAxisGestureDelta + 2) {
814
+ if (absCrossAxisGestureDelta >= AXIS_LOCK_SLOP && absCrossAxisGestureDelta > absDrawerAxisGestureDelta + AXIS_LOCK_BIAS) {
815
+ touchState.preserveNativeCrossAxisScroll = true;
816
+ return true;
817
+ }
818
+ if (absDrawerAxisGestureDelta >= AXIS_LOCK_SLOP) {
819
+ touchState.drawerAxisAttributed = true;
961
820
  return false;
962
821
  }
963
- touchState.preserveNativeCrossAxisScroll = true;
822
+
823
+ // Neither axis has traveled past the slop yet, so the gesture cannot be attributed. Leave the
824
+ // event alone: on iOS, `preventDefault()` on the first cancelable touchmove cancels native
825
+ // scrolling for the entire gesture, which would lock a cross-axis scroll that only passes the
826
+ // slop on a later move.
964
827
  return true;
965
828
  }
966
829
  function hasScrollableContentOnAxis(scrollTarget, axis) {
967
- return axis === 'vertical' ? scrollTarget.scrollHeight > scrollTarget.clientHeight : scrollTarget.scrollWidth > scrollTarget.clientWidth;
830
+ return getScrollMetrics(scrollTarget, axis).max > 0;
968
831
  }
969
832
  function getScrollMetrics(scrollTarget, axis) {
970
833
  if (axis === 'vertical') {
@@ -981,46 +844,21 @@ function getScrollMetrics(scrollTarget, axis) {
981
844
  };
982
845
  }
983
846
  function isAtSwipeStartEdge(scrollTarget, axis, direction) {
847
+ const dismissFromStartEdge = shouldDismissFromStartEdge(direction, axis);
984
848
  const {
985
849
  offset,
986
850
  max
987
851
  } = getScrollMetrics(scrollTarget, axis);
988
- const dismissFromStartEdge = shouldDismissFromStartEdge(direction, axis);
989
- if (dismissFromStartEdge === null) {
990
- return false;
991
- }
992
852
  return dismissFromStartEdge ? offset <= 0 : offset >= max;
993
853
  }
994
854
  function canSwipeFromScrollEdgeOnMove(scrollTarget, axis, direction, delta) {
995
- const {
996
- offset,
997
- max
998
- } = getScrollMetrics(scrollTarget, axis);
999
855
  const dismissFromStartEdge = shouldDismissFromStartEdge(direction, axis);
1000
- if (dismissFromStartEdge === null) {
1001
- return false;
1002
- }
1003
856
  const movingTowardDismiss = dismissFromStartEdge ? delta > 0 : delta < 0;
1004
857
  if (!movingTowardDismiss) {
1005
858
  return false;
1006
859
  }
1007
- return dismissFromStartEdge ? offset <= 0 : offset >= max;
860
+ return isAtSwipeStartEdge(scrollTarget, axis, direction);
1008
861
  }
1009
862
  function shouldDismissFromStartEdge(direction, axis) {
1010
- if (axis === 'vertical') {
1011
- if (direction === 'down') {
1012
- return true;
1013
- }
1014
- if (direction === 'up') {
1015
- return false;
1016
- }
1017
- return null;
1018
- }
1019
- if (direction === 'right') {
1020
- return true;
1021
- }
1022
- if (direction === 'left') {
1023
- return false;
1024
- }
1025
- return null;
863
+ return axis === 'vertical' ? direction === 'down' : direction === 'right';
1026
864
  }