@octanejs/base-ui 0.1.50 → 0.1.51

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 (1179) hide show
  1. package/LICENSE +21 -0
  2. package/MIGRATION.md +47 -0
  3. package/README.md +62 -5
  4. package/UPSTREAM.md +164 -64
  5. package/package.json +458 -27
  6. package/src/accordion/header/AccordionHeader.tsrx +42 -0
  7. package/src/accordion/header/AccordionHeaderDataAttributes.ts +13 -0
  8. package/src/accordion/index.parts.ts +5 -0
  9. package/src/accordion/index.ts +16 -0
  10. package/src/accordion/item/AccordionItem.tsrx +195 -0
  11. package/src/accordion/item/AccordionItemContext.ts +26 -0
  12. package/src/accordion/item/AccordionItemDataAttributes.ts +13 -0
  13. package/src/accordion/item/stateAttributesMapping.ts +12 -0
  14. package/src/accordion/panel/AccordionPanel.tsrx +163 -0
  15. package/src/accordion/panel/AccordionPanelCssVars.ts +10 -0
  16. package/src/accordion/panel/AccordionPanelDataAttributes.ts +27 -0
  17. package/src/accordion/root/AccordionRoot.tsrx +240 -0
  18. package/src/accordion/root/AccordionRootContext.ts +31 -0
  19. package/src/accordion/root/AccordionRootDataAttributes.ts +8 -0
  20. package/src/accordion/trigger/AccordionTrigger.tsrx +81 -0
  21. package/src/accordion/trigger/AccordionTriggerDataAttributes.ts +8 -0
  22. package/src/alert-dialog/handle.ts +22 -0
  23. package/src/alert-dialog/index.parts.ts +10 -0
  24. package/src/alert-dialog/index.ts +39 -0
  25. package/src/alert-dialog/root/AlertDialogRoot.tsrx +58 -0
  26. package/src/alert-dialog/trigger/AlertDialogTrigger.tsrx +38 -0
  27. package/src/alert-dialog/trigger/AlertDialogTriggerDataAttributes.ts +10 -0
  28. package/src/autocomplete/clear/AutocompleteClearDataAttributes.ts +1 -0
  29. package/src/autocomplete/index.parts.ts +25 -0
  30. package/src/autocomplete/index.ts +78 -0
  31. package/src/autocomplete/input-group/AutocompleteInputGroup.tsrx +53 -0
  32. package/src/autocomplete/input-group/AutocompleteInputGroupDataAttributes.ts +49 -0
  33. package/src/autocomplete/item/AutocompleteItem.tsrx +56 -0
  34. package/src/autocomplete/item/AutocompleteItemDataAttributes.ts +10 -0
  35. package/src/autocomplete/root/AutocompleteRoot.tsrx +296 -0
  36. package/src/autocomplete/separator/AutocompleteSeparator.tsrx +37 -0
  37. package/src/autocomplete/trigger/AutocompleteTrigger.tsrx +57 -0
  38. package/src/autocomplete/trigger/AutocompleteTriggerDataAttributes.ts +55 -0
  39. package/src/autocomplete/value/AutocompleteValue.tsrx +38 -0
  40. package/src/avatar/fallback/AvatarFallback.tsrx +68 -0
  41. package/src/avatar/image/AvatarImage.tsrx +210 -0
  42. package/src/avatar/image/AvatarImageDataAttributes.ts +18 -0
  43. package/src/avatar/image/useImageLoadingStatus.ts +72 -0
  44. package/src/avatar/index.parts.ts +3 -0
  45. package/src/avatar/index.ts +5 -0
  46. package/src/avatar/root/AvatarRoot.tsrx +60 -0
  47. package/src/avatar/root/AvatarRootContext.ts +21 -0
  48. package/src/avatar/root/stateAttributesMapping.ts +3 -0
  49. package/src/button/Button.tsrx +63 -0
  50. package/src/button/ButtonDataAttributes.tsrx +4 -0
  51. package/src/button/index.ts +3 -0
  52. package/src/checkbox/index.parts.ts +2 -0
  53. package/src/checkbox/index.ts +4 -0
  54. package/src/checkbox/indicator/CheckboxIndicator.tsrx +96 -0
  55. package/src/checkbox/indicator/CheckboxIndicatorDataAttributes.ts +58 -0
  56. package/src/checkbox/root/CheckboxRoot.tsrx +516 -0
  57. package/src/checkbox/root/CheckboxRootContext.ts +19 -0
  58. package/src/checkbox/root/CheckboxRootDataAttributes.ts +48 -0
  59. package/src/checkbox/utils/getCheckboxStateAttributesMapping.ts +24 -0
  60. package/src/checkbox-group/CheckboxGroup.tsrx +229 -0
  61. package/src/checkbox-group/CheckboxGroupContext.ts +33 -0
  62. package/src/checkbox-group/CheckboxGroupDataAttributes.ts +4 -0
  63. package/src/checkbox-group/index.ts +2 -0
  64. package/src/checkbox-group/useCheckboxGroupParent.ts +176 -0
  65. package/src/collapsible/index.parts.ts +3 -0
  66. package/src/collapsible/index.ts +12 -0
  67. package/src/collapsible/panel/CollapsiblePanel.tsrx +168 -0
  68. package/src/collapsible/panel/CollapsiblePanelCssVars.ts +10 -0
  69. package/src/collapsible/panel/CollapsiblePanelDataAttributes.ts +18 -0
  70. package/src/collapsible/panel/useCollapsiblePanel.ts +577 -0
  71. package/src/collapsible/root/CollapsibleRoot.tsrx +116 -0
  72. package/src/collapsible/root/CollapsibleRootContext.ts +25 -0
  73. package/src/collapsible/root/CollapsibleRootDataAttributes.ts +18 -0
  74. package/src/collapsible/root/stateAttributesMapping.ts +9 -0
  75. package/src/collapsible/root/useCollapsibleRoot.ts +121 -0
  76. package/src/collapsible/trigger/CollapsibleTrigger.tsrx +78 -0
  77. package/src/collapsible/trigger/CollapsibleTriggerDataAttributes.ts +4 -0
  78. package/src/combobox/arrow/ComboboxArrow.tsrx +72 -0
  79. package/src/combobox/arrow/ComboboxArrowDataAttributes.ts +24 -0
  80. package/src/combobox/backdrop/ComboboxBackdrop.tsrx +75 -0
  81. package/src/combobox/backdrop/ComboboxBackdropDataAttributes.ts +18 -0
  82. package/src/combobox/chip/ComboboxChip.tsrx +150 -0
  83. package/src/combobox/chip/ComboboxChipContext.ts +19 -0
  84. package/src/combobox/chip-remove/ComboboxChipRemove.tsrx +138 -0
  85. package/src/combobox/chips/ComboboxChips.tsrx +78 -0
  86. package/src/combobox/chips/ComboboxChipsContext.ts +17 -0
  87. package/src/combobox/clear/ComboboxClear.tsrx +178 -0
  88. package/src/combobox/clear/ComboboxClearDataAttributes.ts +25 -0
  89. package/src/combobox/collection/ComboboxCollection.tsrx +34 -0
  90. package/src/combobox/collection/GroupCollectionContext.tsrx +31 -0
  91. package/src/combobox/empty/ComboboxEmpty.tsrx +58 -0
  92. package/src/combobox/group/ComboboxGroup.tsrx +74 -0
  93. package/src/combobox/group/ComboboxGroupContext.ts +27 -0
  94. package/src/combobox/group-label/ComboboxGroupLabel.tsrx +52 -0
  95. package/src/combobox/icon/ComboboxIcon.tsrx +41 -0
  96. package/src/combobox/index.parts.ts +31 -0
  97. package/src/combobox/index.ts +36 -0
  98. package/src/combobox/input/ComboboxInput.tsrx +507 -0
  99. package/src/combobox/input/ComboboxInputDataAttributes.ts +55 -0
  100. package/src/combobox/input-group/ComboboxInputGroup.tsrx +110 -0
  101. package/src/combobox/input-group/ComboboxInputGroupDataAttributes.ts +53 -0
  102. package/src/combobox/item/ComboboxItem.tsrx +328 -0
  103. package/src/combobox/item/ComboboxItemContext.ts +20 -0
  104. package/src/combobox/item/ComboboxItemDataAttributes.ts +12 -0
  105. package/src/combobox/item-indicator/ComboboxItemIndicator.tsrx +109 -0
  106. package/src/combobox/item-indicator/ComboboxItemIndicatorDataAttributes.ts +10 -0
  107. package/src/combobox/items/createItems.ts +168 -0
  108. package/src/combobox/items/itemCollection.ts +67 -0
  109. package/src/combobox/label/ComboboxLabel.tsrx +88 -0
  110. package/src/combobox/list/ComboboxList.tsrx +152 -0
  111. package/src/combobox/popup/ComboboxPopup.tsrx +214 -0
  112. package/src/combobox/popup/ComboboxPopupDataAttributes.ts +36 -0
  113. package/src/combobox/portal/ComboboxPortal.tsrx +56 -0
  114. package/src/combobox/portal/ComboboxPortalContext.tsrx +12 -0
  115. package/src/combobox/positioner/ComboboxPositioner.tsrx +172 -0
  116. package/src/combobox/positioner/ComboboxPositionerContext.tsrx +30 -0
  117. package/src/combobox/positioner/ComboboxPositionerCssVars.ts +25 -0
  118. package/src/combobox/positioner/ComboboxPositionerDataAttributes.ts +28 -0
  119. package/src/combobox/root/AriaCombobox.tsrx +1970 -0
  120. package/src/combobox/root/ComboboxRoot.tsrx +183 -0
  121. package/src/combobox/root/ComboboxRootContext.tsrx +66 -0
  122. package/src/combobox/root/utils/constants.ts +5 -0
  123. package/src/combobox/root/utils/index.ts +68 -0
  124. package/src/combobox/root/utils/useFilter.ts +50 -0
  125. package/src/combobox/root/utils/useFilteredItems.ts +11 -0
  126. package/src/combobox/row/ComboboxRow.tsrx +37 -0
  127. package/src/combobox/row/ComboboxRowContext.ts +9 -0
  128. package/src/combobox/separator/ComboboxSeparator.tsrx +37 -0
  129. package/src/combobox/status/ComboboxStatus.tsrx +49 -0
  130. package/src/combobox/store.ts +206 -0
  131. package/src/combobox/trigger/ComboboxTrigger.tsrx +302 -0
  132. package/src/combobox/trigger/ComboboxTriggerDataAttributes.ts +59 -0
  133. package/src/combobox/utils/ComboboxInternalDismissButton.tsrx +47 -0
  134. package/src/combobox/utils/handleInputPress.ts +38 -0
  135. package/src/combobox/utils/parts.ts +59 -0
  136. package/src/combobox/utils/stateAttributesMapping.ts +19 -0
  137. package/src/combobox/utils/useInitialLiveRegionTextMutation.ts +66 -0
  138. package/src/combobox/value/ComboboxValue.tsrx +65 -0
  139. package/src/context-menu/index.parts.ts +21 -0
  140. package/src/context-menu/index.ts +66 -0
  141. package/src/context-menu/positioner/ContextMenuPositioner.tsrx +119 -0
  142. package/src/context-menu/positioner/ContextMenuPositionerCssVars.ts +1 -0
  143. package/src/context-menu/positioner/ContextMenuPositionerDataAttributes.ts +1 -0
  144. package/src/context-menu/root/ContextMenuRoot.tsrx +98 -0
  145. package/src/context-menu/root/ContextMenuRootContext.ts +34 -0
  146. package/src/context-menu/trigger/ContextMenuTrigger.tsrx +237 -0
  147. package/src/context-menu/trigger/ContextMenuTriggerDataAttributes.ts +10 -0
  148. package/src/csp-provider/CSPProvider.tsrx +43 -0
  149. package/src/csp-provider/index.parts.ts +1 -0
  150. package/src/csp-provider/index.ts +3 -0
  151. package/src/dialog/backdrop/DialogBackdrop.tsrx +76 -0
  152. package/src/dialog/backdrop/DialogBackdropDataAttributes.ts +18 -0
  153. package/src/dialog/close/DialogClose.tsrx +67 -0
  154. package/src/dialog/close/DialogCloseDataAttributes.ts +4 -0
  155. package/src/dialog/description/DialogDescription.tsrx +41 -0
  156. package/src/dialog/index.parts.ts +10 -0
  157. package/src/dialog/index.ts +14 -0
  158. package/src/dialog/popup/DialogPopup.tsrx +170 -0
  159. package/src/dialog/popup/DialogPopupCssVars.ts +5 -0
  160. package/src/dialog/popup/DialogPopupDataAttributes.ts +26 -0
  161. package/src/dialog/portal/DialogPortal.tsrx +63 -0
  162. package/src/dialog/portal/DialogPortalContext.ts +13 -0
  163. package/src/dialog/root/DialogRoot.tsrx +117 -0
  164. package/src/dialog/root/DialogRootContext.ts +20 -0
  165. package/src/dialog/root/useDialogRoot.ts +128 -0
  166. package/src/dialog/root/useRenderDialogRoot.tsrx +108 -0
  167. package/src/dialog/store/DialogHandle.ts +83 -0
  168. package/src/dialog/store/DialogStore.ts +149 -0
  169. package/src/dialog/title/DialogTitle.tsrx +41 -0
  170. package/src/dialog/trigger/DialogTrigger.tsrx +142 -0
  171. package/src/dialog/trigger/DialogTriggerDataAttributes.ts +10 -0
  172. package/src/dialog/utils/stateAttributesMapping.ts +22 -0
  173. package/src/dialog/viewport/DialogViewport.tsrx +89 -0
  174. package/src/dialog/viewport/DialogViewportDataAttributes.ts +26 -0
  175. package/src/direction-provider/DirectionProvider.tsrx +37 -0
  176. package/src/direction-provider/index.parts.ts +5 -0
  177. package/src/direction-provider/index.ts +2 -0
  178. package/src/drawer/backdrop/DrawerBackdrop.tsrx +81 -0
  179. package/src/drawer/backdrop/DrawerBackdropCssVars.ts +5 -0
  180. package/src/drawer/backdrop/DrawerBackdropDataAttributes.ts +18 -0
  181. package/src/drawer/close/DrawerClose.tsrx +31 -0
  182. package/src/drawer/content/DrawerContent.tsrx +37 -0
  183. package/src/drawer/content/drawerContentAttribute.ts +1 -0
  184. package/src/drawer/description/DrawerDescription.tsrx +25 -0
  185. package/src/drawer/handle.ts +22 -0
  186. package/src/drawer/indent/DrawerIndent.tsrx +104 -0
  187. package/src/drawer/indent-background/DrawerIndentBackground.tsrx +61 -0
  188. package/src/drawer/index.parts.ts +16 -0
  189. package/src/drawer/index.ts +17 -0
  190. package/src/drawer/popup/DrawerPopup.tsrx +485 -0
  191. package/src/drawer/popup/DrawerPopupCssVars.ts +35 -0
  192. package/src/drawer/popup/DrawerPopupDataAttributes.ts +43 -0
  193. package/src/drawer/portal/DrawerPortal.tsrx +39 -0
  194. package/src/drawer/provider/DrawerProvider.tsrx +117 -0
  195. package/src/drawer/provider/DrawerProviderContext.ts +29 -0
  196. package/src/drawer/root/DrawerRoot.tsrx +478 -0
  197. package/src/drawer/root/DrawerRootContext.ts +115 -0
  198. package/src/drawer/root/useDrawerSnapPoints.ts +198 -0
  199. package/src/drawer/swipe-area/DrawerSwipeArea.tsrx +528 -0
  200. package/src/drawer/swipe-area/DrawerSwipeAreaDataAttributes.ts +23 -0
  201. package/src/drawer/title/DrawerTitle.tsrx +25 -0
  202. package/src/drawer/trigger/DrawerTrigger.tsrx +53 -0
  203. package/src/drawer/viewport/DrawerViewport.tsrx +1237 -0
  204. package/src/drawer/viewport/DrawerViewportContext.tsrx +15 -0
  205. package/src/drawer/viewport/DrawerViewportCssVars.ts +6 -0
  206. package/src/drawer/viewport/DrawerViewportDataAttributes.ts +22 -0
  207. package/src/drawer/virtual-keyboard-provider/DrawerVirtualKeyboardContext.tsrx +19 -0
  208. package/src/drawer/virtual-keyboard-provider/DrawerVirtualKeyboardProvider.tsrx +858 -0
  209. package/src/field/control/FieldControl.tsrx +241 -0
  210. package/src/field/control/FieldControlDataAttributes.ts +28 -0
  211. package/src/field/description/FieldDescription.tsrx +67 -0
  212. package/src/field/description/FieldDescriptionDataAttributes.ts +28 -0
  213. package/src/field/error/FieldError.tsrx +160 -0
  214. package/src/field/error/FieldErrorDataAttributes.ts +38 -0
  215. package/src/field/index.parts.ts +9 -0
  216. package/src/field/index.ts +9 -0
  217. package/src/field/item/FieldItem.tsrx +66 -0
  218. package/src/field/item/FieldItemContext.ts +15 -0
  219. package/src/field/item/FieldItemDataAttributes.ts +28 -0
  220. package/src/field/label/FieldLabel.tsrx +107 -0
  221. package/src/field/label/FieldLabelDataAttributes.ts +28 -0
  222. package/src/field/root/FieldRoot.tsrx +336 -0
  223. package/src/field/root/FieldRootDataAttributes.ts +28 -0
  224. package/src/field/root/useFieldValidation.ts +418 -0
  225. package/src/field/utils/getCombinedFieldValidityData.ts +18 -0
  226. package/src/field/validity/FieldValidity.tsrx +69 -0
  227. package/src/fieldset/index.parts.ts +2 -0
  228. package/src/fieldset/index.ts +4 -0
  229. package/src/fieldset/legend/FieldsetLegend.tsrx +51 -0
  230. package/src/fieldset/root/FieldsetRoot.tsrx +74 -0
  231. package/src/fieldset/root/FieldsetRootContext.ts +23 -0
  232. package/src/floating-ui-react/components/FloatingDelayGroup.tsrx +281 -0
  233. package/src/floating-ui-react/components/FloatingFocusManager.tsrx +1004 -0
  234. package/src/floating-ui-react/components/FloatingPortal.tsrx +319 -0
  235. package/src/floating-ui-react/components/FloatingRootStore.ts +136 -0
  236. package/src/floating-ui-react/components/FloatingTree.tsrx +95 -0
  237. package/src/floating-ui-react/components/FloatingTreeStore.ts +24 -0
  238. package/src/floating-ui-react/hooks/gridNavigation.ts +50 -0
  239. package/src/floating-ui-react/hooks/useClick.ts +229 -0
  240. package/src/floating-ui-react/hooks/useClientPoint.ts +261 -0
  241. package/src/floating-ui-react/hooks/useDismiss.ts +808 -0
  242. package/src/floating-ui-react/hooks/useFloating.ts +205 -0
  243. package/src/floating-ui-react/hooks/useFloatingRootContext.ts +84 -0
  244. package/src/floating-ui-react/hooks/useFocus.ts +253 -0
  245. package/src/floating-ui-react/hooks/useHover.ts +468 -0
  246. package/src/floating-ui-react/hooks/useHoverFloatingInteraction.ts +274 -0
  247. package/src/floating-ui-react/hooks/useHoverInteractionSharedState.ts +132 -0
  248. package/src/floating-ui-react/hooks/useHoverReferenceInteraction.ts +523 -0
  249. package/src/floating-ui-react/hooks/useHoverShared.ts +72 -0
  250. package/src/floating-ui-react/hooks/useListNavigation.ts +941 -0
  251. package/src/floating-ui-react/hooks/useSyncedFloatingRootContext.ts +115 -0
  252. package/src/floating-ui-react/hooks/useTypeahead.ts +248 -0
  253. package/src/floating-ui-react/index.ts +48 -0
  254. package/src/floating-ui-react/middleware/arrow.ts +128 -0
  255. package/src/floating-ui-react/middleware/positioning.ts +28 -0
  256. package/src/floating-ui-react/safePolygon.ts +451 -0
  257. package/src/floating-ui-react/types.ts +206 -0
  258. package/src/floating-ui-react/utils/composite.ts +528 -0
  259. package/src/floating-ui-react/utils/constants.ts +10 -0
  260. package/src/floating-ui-react/utils/createAttribute.ts +3 -0
  261. package/src/floating-ui-react/utils/createEventEmitter.ts +19 -0
  262. package/src/floating-ui-react/utils/element.ts +96 -0
  263. package/src/floating-ui-react/utils/enqueueFocus.ts +37 -0
  264. package/src/floating-ui-react/utils/event.ts +60 -0
  265. package/src/floating-ui-react/utils/getEmptyRootContext.ts +17 -0
  266. package/src/floating-ui-react/utils/markOthers.ts +219 -0
  267. package/src/floating-ui-react/utils/nodes.ts +54 -0
  268. package/src/floating-ui-react/utils/tabbable.ts +283 -0
  269. package/src/floating-ui-react/utils.ts +5 -0
  270. package/src/form/Form.tsrx +248 -0
  271. package/src/form/index.ts +3 -0
  272. package/src/global.d.ts +9 -0
  273. package/src/index.ts +45 -39
  274. package/src/input/Input.tsrx +44 -0
  275. package/src/input/InputDataAttributes.ts +28 -0
  276. package/src/input/index.ts +3 -0
  277. package/src/internals/PrehydrationScript.tsrx +59 -0
  278. package/src/internals/RequestQueue.ts +126 -0
  279. package/src/internals/TimeoutManager.ts +29 -0
  280. package/src/internals/TransitionStatusDataAttributes.ts +9 -0
  281. package/src/internals/composite/composite.ts +174 -0
  282. package/src/internals/composite/constants.ts +1 -0
  283. package/src/internals/composite/index.ts +19 -0
  284. package/src/internals/composite/item/CompositeItem.tsrx +57 -0
  285. package/src/internals/composite/item/useCompositeItem.ts +50 -0
  286. package/src/internals/composite/list/CompositeList.tsrx +325 -0
  287. package/src/internals/composite/list/CompositeListContext.ts +28 -0
  288. package/src/internals/composite/list/useCompositeListItem.ts +100 -0
  289. package/src/internals/composite/root/CompositeRoot.tsrx +138 -0
  290. package/src/internals/composite/root/CompositeRootContext.ts +33 -0
  291. package/src/internals/composite/root/gridNavigation.ts +127 -0
  292. package/src/internals/composite/root/useCompositeRoot.ts +378 -0
  293. package/src/internals/constants.ts +41 -0
  294. package/src/internals/createBaseUIEventDetails.ts +166 -0
  295. package/src/internals/csp-context/CSPContext.tsrx +17 -0
  296. package/src/internals/csp-context/index.ts +2 -0
  297. package/src/internals/direction-context/DirectionContext.tsrx +16 -0
  298. package/src/internals/direction-context/index.ts +5 -0
  299. package/src/internals/field-constants/constants.ts +44 -0
  300. package/src/internals/field-constants/index.ts +6 -0
  301. package/src/internals/field-register-control/index.ts +6 -0
  302. package/src/internals/field-register-control/useFieldControlRegistration.ts +185 -0
  303. package/src/internals/field-register-control/useRegisterFieldControl.ts +47 -0
  304. package/src/internals/field-root-context/FieldRootContext.ts +79 -0
  305. package/src/internals/field-root-context/index.ts +2 -0
  306. package/src/internals/filter.ts +82 -0
  307. package/src/internals/form-context/FormContext.ts +51 -0
  308. package/src/internals/form-context/index.ts +2 -0
  309. package/src/internals/getDisabledMountTransitionStyles.ts +10 -0
  310. package/src/internals/getStateAttributesProps.ts +32 -0
  311. package/src/internals/itemEquality.ts +134 -0
  312. package/src/internals/labelable-provider/LabelableContext.ts +49 -0
  313. package/src/internals/labelable-provider/LabelableProvider.tsrx +120 -0
  314. package/src/internals/labelable-provider/index.ts +6 -0
  315. package/src/internals/labelable-provider/useAriaLabelledBy.ts +73 -0
  316. package/src/internals/labelable-provider/useLabel.ts +113 -0
  317. package/src/internals/labelable-provider/useLabelableId.ts +101 -0
  318. package/src/internals/noop.ts +1 -0
  319. package/src/internals/prehydrationScript.stub.ts +6 -0
  320. package/src/internals/reason-parts.ts +42 -0
  321. package/src/internals/reasons.ts +5 -0
  322. package/src/internals/resolveValueLabel.tsrx +158 -0
  323. package/src/internals/serializeValue.ts +13 -0
  324. package/src/internals/stateAttributesMapping.ts +20 -0
  325. package/src/internals/temporal/index.ts +2 -0
  326. package/src/internals/temporal/temporal-adapter.ts +382 -0
  327. package/src/internals/temporal/temporal.ts +49 -0
  328. package/src/internals/temporal-adapter-date-fns/TemporalAdapterDateFns.ts +474 -0
  329. package/src/internals/temporal-adapter-date-fns/index.ts +1 -0
  330. package/src/internals/temporal-adapter-luxon/TemporalAdapterLuxon.ts +380 -0
  331. package/src/internals/temporal-adapter-luxon/index.ts +1 -0
  332. package/src/internals/types.ts +97 -0
  333. package/src/internals/use-button/index.ts +1 -0
  334. package/src/internals/use-button/useButton.ts +309 -0
  335. package/src/internals/useAnchorPositioning.ts +828 -0
  336. package/src/internals/useAnimationsFinished.ts +161 -0
  337. package/src/internals/useBaseUiId.ts +12 -0
  338. package/src/internals/useOpenChangeComplete.tsrx +56 -0
  339. package/src/internals/usePressAndHold.ts +287 -0
  340. package/src/internals/useRenderElement.tsrx +284 -0
  341. package/src/internals/useTransitionStatus.ts +98 -0
  342. package/src/internals/useValueChanged.ts +18 -0
  343. package/src/menu/arrow/MenuArrow.tsrx +71 -0
  344. package/src/menu/arrow/MenuArrowDataAttributes.ts +24 -0
  345. package/src/menu/backdrop/MenuBackdrop.tsrx +75 -0
  346. package/src/menu/backdrop/MenuBackdropDataAttributes.ts +18 -0
  347. package/src/menu/checkbox-item/MenuCheckboxItem.tsrx +184 -0
  348. package/src/menu/checkbox-item/MenuCheckboxItemContext.ts +24 -0
  349. package/src/menu/checkbox-item/MenuCheckboxItemDataAttributes.ts +16 -0
  350. package/src/menu/checkbox-item-indicator/MenuCheckboxItemIndicator.tsrx +96 -0
  351. package/src/menu/checkbox-item-indicator/MenuCheckboxItemIndicatorDataAttributes.ts +22 -0
  352. package/src/menu/group/MenuGroup.tsrx +47 -0
  353. package/src/menu/group/MenuGroupContext.ts +18 -0
  354. package/src/menu/group-label/MenuGroupLabel.tsrx +51 -0
  355. package/src/menu/index.parts.ts +21 -0
  356. package/src/menu/index.ts +24 -0
  357. package/src/menu/item/MenuItem.tsrx +107 -0
  358. package/src/menu/item/MenuItemDataAttributes.ts +8 -0
  359. package/src/menu/item/useMenuItem.ts +142 -0
  360. package/src/menu/item/useMenuItemCommonProps.ts +139 -0
  361. package/src/menu/link-item/MenuLinkItem.tsrx +106 -0
  362. package/src/menu/link-item/MenuLinkItemDataAttributes.ts +4 -0
  363. package/src/menu/popup/MenuPopup.tsrx +199 -0
  364. package/src/menu/popup/MenuPopupDataAttributes.ts +33 -0
  365. package/src/menu/portal/MenuPortal.tsrx +60 -0
  366. package/src/menu/portal/MenuPortalContext.ts +13 -0
  367. package/src/menu/positioner/MenuPositioner.tsrx +378 -0
  368. package/src/menu/positioner/MenuPositionerContext.ts +25 -0
  369. package/src/menu/positioner/MenuPositionerCssVars.ts +37 -0
  370. package/src/menu/positioner/MenuPositionerDataAttributes.ts +24 -0
  371. package/src/menu/radio-group/MenuRadioGroup.tsrx +129 -0
  372. package/src/menu/radio-group/MenuRadioGroupContext.ts +25 -0
  373. package/src/menu/radio-item/MenuRadioItem.tsrx +156 -0
  374. package/src/menu/radio-item/MenuRadioItemContext.ts +24 -0
  375. package/src/menu/radio-item/MenuRadioItemDataAttributes.ts +16 -0
  376. package/src/menu/radio-item-indicator/MenuRadioItemIndicator.tsrx +96 -0
  377. package/src/menu/radio-item-indicator/MenuRadioItemIndicatorDataAttributes.ts +22 -0
  378. package/src/menu/root/MenuRoot.tsrx +818 -0
  379. package/src/menu/root/MenuRootContext.ts +25 -0
  380. package/src/menu/store/MenuHandle.ts +54 -0
  381. package/src/menu/store/MenuStore.ts +234 -0
  382. package/src/menu/submenu-root/MenuSubmenuRoot.tsrx +64 -0
  383. package/src/menu/submenu-root/MenuSubmenuRootContext.ts +16 -0
  384. package/src/menu/submenu-trigger/MenuSubmenuTrigger.tsrx +278 -0
  385. package/src/menu/submenu-trigger/MenuSubmenuTriggerDataAttributes.ts +14 -0
  386. package/src/menu/trigger/MenuTrigger.tsrx +395 -0
  387. package/src/menu/trigger/MenuTriggerDataAttributes.ts +14 -0
  388. package/src/menu/utils/findRootOwnerId.ts +13 -0
  389. package/src/menu/utils/stateAttributesMapping.ts +17 -0
  390. package/src/menu/utils/types.ts +8 -0
  391. package/src/menu/viewport/MenuViewport.tsrx +75 -0
  392. package/src/menu/viewport/MenuViewportCssVars.ts +12 -0
  393. package/src/menu/viewport/MenuViewportDataAttributes.ts +24 -0
  394. package/src/menubar/Menubar.tsrx +173 -0
  395. package/src/menubar/MenubarContext.ts +31 -0
  396. package/src/menubar/MenubarDataAttributes.ts +13 -0
  397. package/src/menubar/index.ts +3 -0
  398. package/src/merge-props/index.ts +1 -0
  399. package/src/merge-props/mergeProps.ts +302 -0
  400. package/src/meter/index.parts.ts +5 -0
  401. package/src/meter/index.ts +7 -0
  402. package/src/meter/indicator/MeterIndicator.tsrx +46 -0
  403. package/src/meter/label/MeterLabel.tsrx +46 -0
  404. package/src/meter/root/MeterRoot.tsrx +129 -0
  405. package/src/meter/root/MeterRootContext.ts +26 -0
  406. package/src/meter/track/MeterTrack.tsrx +34 -0
  407. package/src/meter/value/MeterValue.tsrx +51 -0
  408. package/src/navigation-menu/arrow/NavigationMenuArrow.tsrx +77 -0
  409. package/src/navigation-menu/arrow/NavigationMenuArrowDataAttributes.ts +24 -0
  410. package/src/navigation-menu/backdrop/NavigationMenuBackdrop.tsrx +69 -0
  411. package/src/navigation-menu/backdrop/NavigationMenuBackdropDataAttributes.ts +18 -0
  412. package/src/navigation-menu/content/NavigationMenuContent.tsrx +208 -0
  413. package/src/navigation-menu/content/NavigationMenuContentDataAttributes.ts +23 -0
  414. package/src/navigation-menu/icon/NavigationMenuIcon.tsrx +56 -0
  415. package/src/navigation-menu/icon/NavigationMenuIconDataAttributes.ts +6 -0
  416. package/src/navigation-menu/index.parts.ts +13 -0
  417. package/src/navigation-menu/index.ts +15 -0
  418. package/src/navigation-menu/item/NavigationMenuItem.tsrx +59 -0
  419. package/src/navigation-menu/item/NavigationMenuItemContext.ts +21 -0
  420. package/src/navigation-menu/link/NavigationMenuLink.tsrx +108 -0
  421. package/src/navigation-menu/link/NavigationMenuLinkDataAttributes.ts +4 -0
  422. package/src/navigation-menu/list/NavigationMenuDismissContext.ts +12 -0
  423. package/src/navigation-menu/list/NavigationMenuList.tsrx +144 -0
  424. package/src/navigation-menu/popup/NavigationMenuPopup.tsrx +106 -0
  425. package/src/navigation-menu/popup/NavigationMenuPopupCssVars.ts +10 -0
  426. package/src/navigation-menu/popup/NavigationMenuPopupDataAttributes.ts +32 -0
  427. package/src/navigation-menu/portal/NavigationMenuPortal.tsrx +58 -0
  428. package/src/navigation-menu/portal/NavigationMenuPortalContext.ts +13 -0
  429. package/src/navigation-menu/positioner/NavigationMenuPositioner.tsrx +219 -0
  430. package/src/navigation-menu/positioner/NavigationMenuPositionerContext.ts +26 -0
  431. package/src/navigation-menu/positioner/NavigationMenuPositionerCssVars.ts +35 -0
  432. package/src/navigation-menu/positioner/NavigationMenuPositionerDataAttributes.ts +28 -0
  433. package/src/navigation-menu/root/NavigationMenuRoot.tsrx +439 -0
  434. package/src/navigation-menu/root/NavigationMenuRootContext.ts +84 -0
  435. package/src/navigation-menu/trigger/NavigationMenuTrigger.tsrx +846 -0
  436. package/src/navigation-menu/trigger/NavigationMenuTriggerDataAttributes.ts +14 -0
  437. package/src/navigation-menu/utils/constants.ts +3 -0
  438. package/src/navigation-menu/utils/isOutsideMenuEvent.ts +36 -0
  439. package/src/navigation-menu/utils/setSharedFixedSize.ts +20 -0
  440. package/src/navigation-menu/utils/useNavigationMenuAnchorPositioning.ts +18 -0
  441. package/src/navigation-menu/viewport/NavigationMenuViewport.tsrx +146 -0
  442. package/src/number-field/decrement/NumberFieldDecrement.tsrx +30 -0
  443. package/src/number-field/decrement/NumberFieldDecrementDataAttributes.ts +40 -0
  444. package/src/number-field/group/NumberFieldGroup.tsrx +42 -0
  445. package/src/number-field/group/NumberFieldGroupDataAttributes.ts +40 -0
  446. package/src/number-field/increment/NumberFieldIncrement.tsrx +30 -0
  447. package/src/number-field/increment/NumberFieldIncrementDataAttributes.ts +40 -0
  448. package/src/number-field/index.parts.ts +7 -0
  449. package/src/number-field/index.ts +9 -0
  450. package/src/number-field/input/NumberFieldInput.tsrx +488 -0
  451. package/src/number-field/input/NumberFieldInputDataAttributes.ts +40 -0
  452. package/src/number-field/root/NumberFieldRoot.tsrx +735 -0
  453. package/src/number-field/root/NumberFieldRootContext.ts +52 -0
  454. package/src/number-field/root/NumberFieldRootDataAttributes.ts +40 -0
  455. package/src/number-field/root/useNumberFieldStepperButton.ts +191 -0
  456. package/src/number-field/scrub-area/NumberFieldScrubArea.tsrx +395 -0
  457. package/src/number-field/scrub-area/NumberFieldScrubAreaContext.ts +24 -0
  458. package/src/number-field/scrub-area/NumberFieldScrubAreaDataAttributes.ts +40 -0
  459. package/src/number-field/scrub-area-cursor/NumberFieldScrubAreaCursor.tsrx +73 -0
  460. package/src/number-field/scrub-area-cursor/NumberFieldScrubAreaCursorDataAttributes.ts +40 -0
  461. package/src/number-field/utils/constants.ts +2 -0
  462. package/src/number-field/utils/getViewportRect.ts +34 -0
  463. package/src/number-field/utils/parse.ts +221 -0
  464. package/src/number-field/utils/stateAttributesMapping.ts +9 -0
  465. package/src/number-field/utils/types.ts +27 -0
  466. package/src/number-field/utils/validate.ts +136 -0
  467. package/src/otp-field/index.parts.ts +3 -0
  468. package/src/otp-field/index.ts +4 -0
  469. package/src/otp-field/input/OTPFieldInput.tsrx +356 -0
  470. package/src/otp-field/input/OTPFieldInputDataAttributes.ts +40 -0
  471. package/src/otp-field/root/OTPFieldRoot.tsrx +679 -0
  472. package/src/otp-field/root/OTPFieldRootContext.ts +58 -0
  473. package/src/otp-field/root/OTPFieldRootDataAttributes.ts +40 -0
  474. package/src/otp-field/utils/otp.ts +118 -0
  475. package/src/otp-field/utils/stateAttributesMapping.ts +16 -0
  476. package/src/popover/arrow/PopoverArrow.tsrx +69 -0
  477. package/src/popover/arrow/PopoverArrowDataAttributes.ts +24 -0
  478. package/src/popover/backdrop/PopoverBackdrop.tsrx +71 -0
  479. package/src/popover/backdrop/PopoverBackdropDataAttributes.ts +18 -0
  480. package/src/popover/close/PopoverClose.tsrx +65 -0
  481. package/src/popover/description/PopoverDescription.tsrx +46 -0
  482. package/src/popover/index.parts.ts +15 -0
  483. package/src/popover/index.ts +16 -0
  484. package/src/popover/popup/PopoverPopup.tsrx +188 -0
  485. package/src/popover/popup/PopoverPopupCssVars.ts +8 -0
  486. package/src/popover/popup/PopoverPopupDataAttributes.ts +33 -0
  487. package/src/popover/portal/PopoverPortal.tsrx +54 -0
  488. package/src/popover/portal/PopoverPortalContext.ts +13 -0
  489. package/src/popover/positioner/PopoverPositioner.tsrx +196 -0
  490. package/src/popover/positioner/PopoverPositionerContext.ts +28 -0
  491. package/src/popover/positioner/PopoverPositionerCssVars.ts +37 -0
  492. package/src/popover/positioner/PopoverPositionerDataAttributes.ts +24 -0
  493. package/src/popover/root/PopoverRoot.tsrx +262 -0
  494. package/src/popover/root/PopoverRootContext.ts +20 -0
  495. package/src/popover/store/PopoverHandle.ts +54 -0
  496. package/src/popover/store/PopoverStore.ts +229 -0
  497. package/src/popover/title/PopoverTitle.tsrx +46 -0
  498. package/src/popover/trigger/PopoverTrigger.tsrx +233 -0
  499. package/src/popover/trigger/PopoverTriggerDataAttributes.ts +14 -0
  500. package/src/popover/utils/constants.ts +1 -0
  501. package/src/popover/viewport/PopoverViewport.tsrx +75 -0
  502. package/src/popover/viewport/PopoverViewportCssVars.ts +12 -0
  503. package/src/popover/viewport/PopoverViewportDataAttributes.ts +24 -0
  504. package/src/preview-card/arrow/PreviewCardArrow.tsrx +70 -0
  505. package/src/preview-card/arrow/PreviewCardArrowDataAttributes.ts +24 -0
  506. package/src/preview-card/backdrop/PreviewCardBackdrop.tsrx +73 -0
  507. package/src/preview-card/backdrop/PreviewCardBackdropDataAttributes.ts +18 -0
  508. package/src/preview-card/index.parts.ts +12 -0
  509. package/src/preview-card/index.ts +16 -0
  510. package/src/preview-card/popup/PreviewCardPopup.tsrx +104 -0
  511. package/src/preview-card/popup/PreviewCardPopupDataAttributes.ts +28 -0
  512. package/src/preview-card/portal/PreviewCardPortal.tsrx +59 -0
  513. package/src/preview-card/portal/PreviewCardPortalContext.ts +13 -0
  514. package/src/preview-card/positioner/PreviewCardPositioner.tsrx +145 -0
  515. package/src/preview-card/positioner/PreviewCardPositionerContext.ts +24 -0
  516. package/src/preview-card/positioner/PreviewCardPositionerCssVars.ts +37 -0
  517. package/src/preview-card/positioner/PreviewCardPositionerDataAttributes.ts +24 -0
  518. package/src/preview-card/root/PreviewCardContext.ts +23 -0
  519. package/src/preview-card/root/PreviewCardRoot.tsrx +210 -0
  520. package/src/preview-card/store/PreviewCardHandle.ts +58 -0
  521. package/src/preview-card/store/PreviewCardStore.ts +140 -0
  522. package/src/preview-card/trigger/PreviewCardTrigger.tsrx +148 -0
  523. package/src/preview-card/trigger/PreviewCardTriggerDataAttributes.ts +6 -0
  524. package/src/preview-card/utils/constants.ts +2 -0
  525. package/src/preview-card/viewport/PreviewCardViewport.tsrx +78 -0
  526. package/src/preview-card/viewport/PreviewCardViewportCssVars.ts +12 -0
  527. package/src/preview-card/viewport/PreviewCardViewportDataAttributes.ts +24 -0
  528. package/src/progress/index.parts.ts +7 -0
  529. package/src/progress/index.ts +7 -0
  530. package/src/progress/indicator/ProgressIndicator.tsrx +59 -0
  531. package/src/progress/indicator/ProgressIndicatorDataAttributes.ts +12 -0
  532. package/src/progress/label/ProgressLabel.tsrx +51 -0
  533. package/src/progress/label/ProgressLabelDataAttributes.ts +12 -0
  534. package/src/progress/root/ProgressRoot.tsrx +154 -0
  535. package/src/progress/root/ProgressRootContext.tsrx +37 -0
  536. package/src/progress/root/ProgressRootDataAttributes.ts +12 -0
  537. package/src/progress/root/stateAttributesMapping.ts +18 -0
  538. package/src/progress/track/ProgressTrack.tsrx +42 -0
  539. package/src/progress/track/ProgressTrackDataAttributes.ts +12 -0
  540. package/src/progress/value/ProgressValue.tsrx +62 -0
  541. package/src/progress/value/ProgressValueDataAttributes.ts +12 -0
  542. package/src/radio/index.parts.ts +2 -0
  543. package/src/radio/index.ts +4 -0
  544. package/src/radio/indicator/RadioIndicator.tsrx +84 -0
  545. package/src/radio/indicator/RadioIndicatorDataAttributes.ts +54 -0
  546. package/src/radio/root/RadioRoot.tsrx +337 -0
  547. package/src/radio/root/RadioRootContext.ts +19 -0
  548. package/src/radio/root/RadioRootDataAttributes.ts +44 -0
  549. package/src/radio/utils/stateAttributesMapping.ts +20 -0
  550. package/src/radio-group/RadioGroup.tsrx +337 -0
  551. package/src/radio-group/RadioGroupContext.ts +29 -0
  552. package/src/radio-group/RadioGroupDataAttributes.ts +4 -0
  553. package/src/radio-group/index.ts +3 -0
  554. package/src/scroll-area/constants.ts +2 -0
  555. package/src/scroll-area/content/ScrollAreaContent.tsrx +90 -0
  556. package/src/scroll-area/content/ScrollAreaContentDataAttributes.ts +28 -0
  557. package/src/scroll-area/corner/ScrollAreaCorner.tsrx +54 -0
  558. package/src/scroll-area/index.parts.ts +6 -0
  559. package/src/scroll-area/index.ts +8 -0
  560. package/src/scroll-area/root/ScrollAreaRoot.tsrx +424 -0
  561. package/src/scroll-area/root/ScrollAreaRootContext.ts +61 -0
  562. package/src/scroll-area/root/ScrollAreaRootCssVars.ts +10 -0
  563. package/src/scroll-area/root/ScrollAreaRootDataAttributes.ts +28 -0
  564. package/src/scroll-area/root/stateAttributes.ts +15 -0
  565. package/src/scroll-area/scrollbar/ScrollAreaScrollbar.tsrx +275 -0
  566. package/src/scroll-area/scrollbar/ScrollAreaScrollbarContext.ts +19 -0
  567. package/src/scroll-area/scrollbar/ScrollAreaScrollbarCssVars.ts +10 -0
  568. package/src/scroll-area/scrollbar/ScrollAreaScrollbarDataAttributes.ts +37 -0
  569. package/src/scroll-area/thumb/ScrollAreaThumb.tsrx +80 -0
  570. package/src/scroll-area/thumb/ScrollAreaThumbDataAttributes.ts +9 -0
  571. package/src/scroll-area/utils/getOffset.ts +21 -0
  572. package/src/scroll-area/viewport/ScrollAreaViewport.tsrx +492 -0
  573. package/src/scroll-area/viewport/ScrollAreaViewportContext.ts +21 -0
  574. package/src/scroll-area/viewport/ScrollAreaViewportCssVars.ts +20 -0
  575. package/src/scroll-area/viewport/ScrollAreaViewportDataAttributes.ts +28 -0
  576. package/src/select/arrow/SelectArrow.tsrx +75 -0
  577. package/src/select/arrow/SelectArrowDataAttributes.ts +24 -0
  578. package/src/select/backdrop/SelectBackdrop.tsrx +77 -0
  579. package/src/select/backdrop/SelectBackdropDataAttributes.ts +18 -0
  580. package/src/select/group/SelectGroup.tsrx +52 -0
  581. package/src/select/group/SelectGroupContext.ts +20 -0
  582. package/src/select/group-label/SelectGroupLabel.tsrx +49 -0
  583. package/src/select/icon/SelectIcon.tsrx +51 -0
  584. package/src/select/icon/SelectIconDataAttributes.ts +6 -0
  585. package/src/select/index.parts.ts +19 -0
  586. package/src/select/index.ts +21 -0
  587. package/src/select/item/SelectItem.tsrx +291 -0
  588. package/src/select/item/SelectItemContext.ts +22 -0
  589. package/src/select/item/SelectItemDataAttributes.ts +12 -0
  590. package/src/select/item-indicator/SelectItemIndicator.tsrx +108 -0
  591. package/src/select/item-indicator/SelectItemIndicatorDataAttributes.ts +10 -0
  592. package/src/select/item-text/SelectItemText.tsrx +56 -0
  593. package/src/select/label/SelectLabel.tsrx +64 -0
  594. package/src/select/list/SelectList.tsrx +62 -0
  595. package/src/select/popup/SelectPopup.tsrx +596 -0
  596. package/src/select/popup/SelectPopupDataAttributes.ts +28 -0
  597. package/src/select/popup/utils.ts +13 -0
  598. package/src/select/portal/SelectPortal.tsrx +45 -0
  599. package/src/select/positioner/SelectPositioner.tsrx +268 -0
  600. package/src/select/positioner/SelectPositionerContext.ts +26 -0
  601. package/src/select/positioner/SelectPositionerCssVars.ts +25 -0
  602. package/src/select/positioner/SelectPositionerDataAttributes.ts +24 -0
  603. package/src/select/root/SelectRoot.tsrx +752 -0
  604. package/src/select/root/SelectRootContext.ts +57 -0
  605. package/src/select/scroll-arrow/SelectScrollArrow.tsrx +236 -0
  606. package/src/select/scroll-down-arrow/SelectScrollDownArrow.tsrx +37 -0
  607. package/src/select/scroll-down-arrow/SelectScrollDownArrowDataAttributes.ts +24 -0
  608. package/src/select/scroll-up-arrow/SelectScrollUpArrow.tsrx +37 -0
  609. package/src/select/scroll-up-arrow/SelectScrollUpArrowDataAttributes.ts +24 -0
  610. package/src/select/separator/SelectSeparator.tsrx +34 -0
  611. package/src/select/store.ts +155 -0
  612. package/src/select/trigger/SelectTrigger.tsrx +270 -0
  613. package/src/select/trigger/SelectTriggerDataAttributes.ts +55 -0
  614. package/src/select/value/SelectValue.tsrx +112 -0
  615. package/src/select/value/SelectValueDataAttributes.ts +4 -0
  616. package/src/separator/Separator.tsrx +49 -0
  617. package/src/separator/SeparatorDataAttributes.ts +5 -0
  618. package/src/separator/index.ts +3 -0
  619. package/src/slider/control/SliderControl.tsrx +540 -0
  620. package/src/slider/control/SliderControlDataAttributes.ts +33 -0
  621. package/src/slider/index.parts.ts +7 -0
  622. package/src/slider/index.ts +9 -0
  623. package/src/slider/indicator/SliderIndicator.tsrx +102 -0
  624. package/src/slider/indicator/SliderIndicatorDataAttributes.ts +33 -0
  625. package/src/slider/label/SliderLabel.tsrx +71 -0
  626. package/src/slider/root/SliderRoot.tsrx +610 -0
  627. package/src/slider/root/SliderRootContext.ts +115 -0
  628. package/src/slider/root/SliderRootDataAttributes.ts +33 -0
  629. package/src/slider/root/stateAttributesMapping.ts +15 -0
  630. package/src/slider/thumb/SliderThumb.tsrx +567 -0
  631. package/src/slider/thumb/SliderThumbDataAttributes.ts +37 -0
  632. package/src/slider/thumb/prehydrationScript.min.ts +5 -0
  633. package/src/slider/track/SliderTrack.tsrx +49 -0
  634. package/src/slider/track/SliderTrackDataAttributes.ts +33 -0
  635. package/src/slider/utils/asc.ts +3 -0
  636. package/src/slider/utils/getMidpoint.ts +4 -0
  637. package/src/slider/utils/getPushedThumbValues.ts +60 -0
  638. package/src/slider/utils/getSliderValue.ts +22 -0
  639. package/src/slider/utils/resolveThumbCollision.ts +154 -0
  640. package/src/slider/utils/roundValueToStep.ts +21 -0
  641. package/src/slider/utils/test-utils.ts +18 -0
  642. package/src/slider/utils/validateMinimumDistance.ts +17 -0
  643. package/src/slider/value/SliderValue.tsrx +82 -0
  644. package/src/slider/value/SliderValueDataAttributes.ts +33 -0
  645. package/src/switch/index.parts.ts +2 -0
  646. package/src/switch/index.ts +4 -0
  647. package/src/switch/root/SwitchRoot.tsrx +335 -0
  648. package/src/switch/root/SwitchRootContext.ts +19 -0
  649. package/src/switch/root/SwitchRootDataAttributes.ts +44 -0
  650. package/src/switch/stateAttributesMapping.ts +15 -0
  651. package/src/switch/thumb/SwitchThumb.tsrx +40 -0
  652. package/src/switch/thumb/SwitchThumbDataAttributes.ts +44 -0
  653. package/src/tabs/index.parts.ts +5 -0
  654. package/src/tabs/index.ts +21 -0
  655. package/src/tabs/indicator/TabsIndicator.tsrx +292 -0
  656. package/src/tabs/indicator/TabsIndicatorCssVars.ts +30 -0
  657. package/src/tabs/indicator/TabsIndicatorDataAttributes.ts +10 -0
  658. package/src/tabs/indicator/prehydrationScript.min.ts +5 -0
  659. package/src/tabs/list/TabsList.tsrx +153 -0
  660. package/src/tabs/list/TabsListContext.ts +23 -0
  661. package/src/tabs/list/TabsListDataAttributes.ts +10 -0
  662. package/src/tabs/panel/TabsPanel.tsrx +145 -0
  663. package/src/tabs/panel/TabsPanelDataAttributes.ts +28 -0
  664. package/src/tabs/root/TabsRoot.tsrx +477 -0
  665. package/src/tabs/root/TabsRootContext.ts +55 -0
  666. package/src/tabs/root/TabsRootDataAttributes.ts +10 -0
  667. package/src/tabs/root/stateAttributesMapping.ts +9 -0
  668. package/src/tabs/tab/TabsTab.tsrx +280 -0
  669. package/src/tabs/tab/TabsTabDataAttributes.ts +18 -0
  670. package/src/toast/action/ToastAction.tsrx +72 -0
  671. package/src/toast/action/ToastActionDataAttributes.ts +5 -0
  672. package/src/toast/arrow/ToastArrow.tsrx +57 -0
  673. package/src/toast/arrow/ToastArrowDataAttributes.ts +16 -0
  674. package/src/toast/close/ToastClose.tsrx +79 -0
  675. package/src/toast/close/ToastCloseDataAttributes.ts +5 -0
  676. package/src/toast/content/ToastContent.tsrx +76 -0
  677. package/src/toast/content/ToastContentDataAttributes.ts +10 -0
  678. package/src/toast/createToastManager.ts +104 -0
  679. package/src/toast/description/ToastDescription.tsrx +54 -0
  680. package/src/toast/description/ToastDescriptionDataAttributes.ts +5 -0
  681. package/src/toast/index.parts.ts +14 -0
  682. package/src/toast/index.ts +18 -0
  683. package/src/toast/portal/ToastPortal.tsrx +33 -0
  684. package/src/toast/positioner/ToastPositioner.tsrx +154 -0
  685. package/src/toast/positioner/ToastPositionerContext.ts +23 -0
  686. package/src/toast/positioner/ToastPositionerCssVars.ts +25 -0
  687. package/src/toast/positioner/ToastPositionerDataAttributes.ts +16 -0
  688. package/src/toast/provider/ToastProvider.tsrx +109 -0
  689. package/src/toast/provider/ToastProviderContext.ts +16 -0
  690. package/src/toast/root/ToastRoot.tsrx +563 -0
  691. package/src/toast/root/ToastRootContext.ts +25 -0
  692. package/src/toast/root/ToastRootCssVars.ts +25 -0
  693. package/src/toast/root/ToastRootDataAttributes.ts +35 -0
  694. package/src/toast/store.ts +527 -0
  695. package/src/toast/title/ToastTitle.tsrx +53 -0
  696. package/src/toast/title/ToastTitleDataAttributes.ts +5 -0
  697. package/src/toast/useToastManager.ts +150 -0
  698. package/src/toast/utils/focusVisible.ts +1 -0
  699. package/src/toast/utils/isRenderableNode.ts +18 -0
  700. package/src/toast/utils/resolvePromiseOptions.ts +22 -0
  701. package/src/toast/utils/test-utils.tsrx +39 -0
  702. package/src/toast/utils/useToastLabelPart.ts +53 -0
  703. package/src/toast/viewport/ToastViewport.tsrx +293 -0
  704. package/src/toast/viewport/ToastViewportCssVars.ts +5 -0
  705. package/src/toast/viewport/ToastViewportDataAttributes.ts +5 -0
  706. package/src/toggle/Toggle.tsrx +198 -0
  707. package/src/toggle/ToggleDataAttributes.ts +8 -0
  708. package/src/toggle/index.ts +3 -0
  709. package/src/toggle-group/ToggleGroup.tsrx +201 -0
  710. package/src/toggle-group/ToggleGroupContext.ts +28 -0
  711. package/src/toggle-group/ToggleGroupDataAttributes.ts +13 -0
  712. package/src/toggle-group/index.ts +3 -0
  713. package/src/toolbar/button/ToolbarButton.tsrx +108 -0
  714. package/src/toolbar/button/ToolbarButtonDataAttributes.ts +13 -0
  715. package/src/toolbar/group/ToolbarGroup.tsrx +69 -0
  716. package/src/toolbar/group/ToolbarGroupContext.ts +13 -0
  717. package/src/toolbar/group/ToolbarGroupDataAttributes.ts +9 -0
  718. package/src/toolbar/index.parts.ts +8 -0
  719. package/src/toolbar/index.ts +9 -0
  720. package/src/toolbar/input/ToolbarInput.tsrx +108 -0
  721. package/src/toolbar/input/ToolbarInputDataAttributes.ts +13 -0
  722. package/src/toolbar/link/ToolbarLink.tsrx +64 -0
  723. package/src/toolbar/link/ToolbarLinkDataAttributes.ts +5 -0
  724. package/src/toolbar/root/ToolbarRoot.tsrx +121 -0
  725. package/src/toolbar/root/ToolbarRootContext.ts +24 -0
  726. package/src/toolbar/root/ToolbarRootDataAttributes.ts +9 -0
  727. package/src/toolbar/separator/ToolbarSeparator.tsrx +37 -0
  728. package/src/toolbar/separator/ToolbarSeparatorDataAttributes.ts +5 -0
  729. package/src/tooltip/arrow/TooltipArrow.tsrx +76 -0
  730. package/src/tooltip/arrow/TooltipArrowDataAttributes.ts +29 -0
  731. package/src/tooltip/index.parts.ts +12 -0
  732. package/src/tooltip/index.ts +13 -0
  733. package/src/tooltip/popup/TooltipPopup.tsrx +108 -0
  734. package/src/tooltip/popup/TooltipPopupDataAttributes.ts +33 -0
  735. package/src/tooltip/portal/TooltipPortal.tsrx +54 -0
  736. package/src/tooltip/portal/TooltipPortalContext.ts +13 -0
  737. package/src/tooltip/positioner/TooltipPositioner.tsrx +150 -0
  738. package/src/tooltip/positioner/TooltipPositionerContext.ts +23 -0
  739. package/src/tooltip/positioner/TooltipPositionerCssVars.ts +37 -0
  740. package/src/tooltip/positioner/TooltipPositionerDataAttributes.ts +24 -0
  741. package/src/tooltip/provider/TooltipProvider.tsrx +49 -0
  742. package/src/tooltip/provider/TooltipProviderContext.ts +12 -0
  743. package/src/tooltip/root/TooltipRoot.tsrx +282 -0
  744. package/src/tooltip/root/TooltipRootContext.ts +21 -0
  745. package/src/tooltip/store/TooltipHandle.ts +54 -0
  746. package/src/tooltip/store/TooltipStore.ts +148 -0
  747. package/src/tooltip/trigger/TooltipTrigger.tsrx +351 -0
  748. package/src/tooltip/trigger/TooltipTriggerDataAttributes.ts +10 -0
  749. package/src/tooltip/utils/constants.ts +1 -0
  750. package/src/tooltip/viewport/TooltipViewport.tsrx +75 -0
  751. package/src/tooltip/viewport/TooltipViewportCssVars.ts +12 -0
  752. package/src/tooltip/viewport/TooltipViewportDataAttributes.ts +24 -0
  753. package/src/types/index.ts +29 -0
  754. package/src/unstable-use-media-query/index.ts +94 -0
  755. package/src/use-render/index.ts +2 -0
  756. package/src/use-render/useRender.ts +113 -0
  757. package/src/utils/CommonPopupCssVars.ts +12 -0
  758. package/src/utils/CommonPopupDataAttributes.ts +38 -0
  759. package/src/utils/CommonPositionerCssVars.ts +37 -0
  760. package/src/utils/CommonTriggerDataAttributes.ts +9 -0
  761. package/src/utils/CommonViewportDataAttributes.ts +7 -0
  762. package/src/utils/FloatingPortalLite.tsrx +51 -0
  763. package/src/utils/FocusGuard.tsrx +44 -0
  764. package/src/utils/InternalBackdrop.tsrx +50 -0
  765. package/src/utils/NullStore.ts +26 -0
  766. package/src/utils/adaptiveOriginConstants.ts +12 -0
  767. package/src/utils/adaptiveOriginMiddleware.ts +5 -14
  768. package/src/utils/closePart.tsrx +37 -0
  769. package/src/utils/collapsibleOpenStateMapping.ts +28 -23
  770. package/src/utils/dispatchClickWithModifiers.ts +36 -0
  771. package/src/utils/getCssDimensions.ts +11 -15
  772. package/src/utils/getElementAtPoint.ts +12 -0
  773. package/src/utils/getElementTransform.ts +33 -0
  774. package/src/utils/getPseudoElementBounds.ts +22 -7
  775. package/src/utils/hideMiddleware.ts +15 -12
  776. package/src/utils/listbox-separator/ListboxSeparator.tsrx +47 -0
  777. package/src/utils/mergeStyles.ts +15 -0
  778. package/src/utils/popupStateMapping.ts +57 -35
  779. package/src/utils/popups/index.ts +4 -8
  780. package/src/utils/popups/inlineRect.ts +19 -16
  781. package/src/utils/popups/popupHandle.ts +291 -0
  782. package/src/utils/popups/popupStoreUtils.ts +482 -320
  783. package/src/utils/popups/popupTriggerMap.ts +102 -28
  784. package/src/utils/popups/store.ts +146 -66
  785. package/src/utils/popups/usePopupHandleStore.ts +37 -0
  786. package/src/utils/popups/useTriggerFocusGuards.ts +36 -21
  787. package/src/utils/resolveAriaLabelledBy.ts +2 -1
  788. package/src/utils/resolveClassName.ts +8 -3
  789. package/src/utils/resolveRef.ts +8 -4
  790. package/src/utils/resolveStyle.ts +10 -6
  791. package/src/utils/scrollEdges.ts +33 -0
  792. package/src/utils/scrollable.ts +77 -0
  793. package/src/utils/styles.tsrx +15 -0
  794. package/src/utils/useAnchoredPopupScrollLock.ts +31 -37
  795. package/src/utils/useFocusableWhenDisabled.ts +81 -65
  796. package/src/utils/useIsHydrating.ts +12 -15
  797. package/src/utils/useMixedToggleClickHandler.ts +45 -60
  798. package/src/utils/useOpenInteractionType.ts +43 -45
  799. package/src/utils/usePopupAutoResize.ts +198 -207
  800. package/src/utils/usePopupViewport.tsrx +396 -0
  801. package/src/utils/usePositioner.tsrx +50 -0
  802. package/src/utils/useRegisteredLabelId.ts +16 -27
  803. package/src/utils/useSwipeDismiss.ts +1161 -0
  804. package/src/utils/valueToPercent.ts +1 -2
  805. package/dist/cjs/accordion.cjs +0 -497
  806. package/dist/cjs/alert-dialog.cjs +0 -65
  807. package/dist/cjs/avatar.cjs +0 -234
  808. package/dist/cjs/button.cjs +0 -54
  809. package/dist/cjs/checkbox-group.cjs +0 -165
  810. package/dist/cjs/checkbox.cjs +0 -475
  811. package/dist/cjs/collapsible.cjs +0 -700
  812. package/dist/cjs/context-menu.cjs +0 -257
  813. package/dist/cjs/csp-provider.cjs +0 -40
  814. package/dist/cjs/dialog.cjs +0 -741
  815. package/dist/cjs/direction-provider.cjs +0 -35
  816. package/dist/cjs/field.cjs +0 -559
  817. package/dist/cjs/fieldset.cjs +0 -101
  818. package/dist/cjs/form.cjs +0 -177
  819. package/dist/cjs/index.cjs +0 -133
  820. package/dist/cjs/input.cjs +0 -32
  821. package/dist/cjs/internal.cjs +0 -43
  822. package/dist/cjs/menu.cjs +0 -2420
  823. package/dist/cjs/menubar.cjs +0 -132
  824. package/dist/cjs/merge-props.cjs +0 -34
  825. package/dist/cjs/meter.cjs +0 -169
  826. package/dist/cjs/number-field.cjs +0 -812
  827. package/dist/cjs/popover.cjs +0 -966
  828. package/dist/cjs/preview-card.cjs +0 -632
  829. package/dist/cjs/progress.cjs +0 -206
  830. package/dist/cjs/radio-group.cjs +0 -264
  831. package/dist/cjs/radio.cjs +0 -327
  832. package/dist/cjs/separator.cjs +0 -44
  833. package/dist/cjs/slider.cjs +0 -1384
  834. package/dist/cjs/switch.cjs +0 -306
  835. package/dist/cjs/tabs.cjs +0 -727
  836. package/dist/cjs/toast.cjs +0 -1766
  837. package/dist/cjs/toggle-group.cjs +0 -118
  838. package/dist/cjs/toggle.cjs +0 -121
  839. package/dist/cjs/tooltip.cjs +0 -835
  840. package/dist/cjs/unstable-use-media-query.cjs +0 -79
  841. package/dist/cjs/use-render.cjs +0 -40
  842. package/dist/cjs/utils/CSPContext.cjs +0 -38
  843. package/dist/cjs/utils/CheckboxGroupContext.cjs +0 -40
  844. package/dist/cjs/utils/CompositeRootContext.cjs +0 -40
  845. package/dist/cjs/utils/ContextMenuRootContext.cjs +0 -42
  846. package/dist/cjs/utils/DirectionContext.cjs +0 -34
  847. package/dist/cjs/utils/FloatingPortalLite.cjs +0 -47
  848. package/dist/cjs/utils/InternalBackdrop.cjs +0 -49
  849. package/dist/cjs/utils/MenubarContext.cjs +0 -40
  850. package/dist/cjs/utils/RadioGroupContext.cjs +0 -34
  851. package/dist/cjs/utils/RequestQueue.cjs +0 -111
  852. package/dist/cjs/utils/TimeoutManager.cjs +0 -50
  853. package/dist/cjs/utils/ToggleGroupContext.cjs +0 -40
  854. package/dist/cjs/utils/adaptiveOriginMiddleware.cjs +0 -94
  855. package/dist/cjs/utils/addEventListener.cjs +0 -33
  856. package/dist/cjs/utils/areArraysEqual.cjs +0 -30
  857. package/dist/cjs/utils/clamp.cjs +0 -30
  858. package/dist/cjs/utils/closePart.cjs +0 -70
  859. package/dist/cjs/utils/collapsibleOpenStateMapping.cjs +0 -42
  860. package/dist/cjs/utils/composeRefs.cjs +0 -68
  861. package/dist/cjs/utils/composite/CompositeItem.cjs +0 -59
  862. package/dist/cjs/utils/composite/CompositeList.cjs +0 -177
  863. package/dist/cjs/utils/composite/CompositeListContext.cjs +0 -43
  864. package/dist/cjs/utils/composite/CompositeRoot.cjs +0 -118
  865. package/dist/cjs/utils/composite/grid-utils.cjs +0 -343
  866. package/dist/cjs/utils/composite/gridNavigation.cjs +0 -92
  867. package/dist/cjs/utils/composite/keys.cjs +0 -174
  868. package/dist/cjs/utils/composite/list-utils.cjs +0 -90
  869. package/dist/cjs/utils/composite/useCompositeItem.cjs +0 -63
  870. package/dist/cjs/utils/composite/useCompositeListItem.cjs +0 -104
  871. package/dist/cjs/utils/composite/useCompositeRoot.cjs +0 -263
  872. package/dist/cjs/utils/constants.cjs +0 -56
  873. package/dist/cjs/utils/contains.cjs +0 -46
  874. package/dist/cjs/utils/createChangeEventDetails.cjs +0 -92
  875. package/dist/cjs/utils/dom.cjs +0 -35
  876. package/dist/cjs/utils/empty.cjs +0 -34
  877. package/dist/cjs/utils/field/FieldItemContext.cjs +0 -34
  878. package/dist/cjs/utils/field/FieldRootContext.cjs +0 -80
  879. package/dist/cjs/utils/field/FormContext.cjs +0 -41
  880. package/dist/cjs/utils/field/LabelableContext.cjs +0 -43
  881. package/dist/cjs/utils/field/LabelableProvider.cjs +0 -115
  882. package/dist/cjs/utils/field/constants.cjs +0 -68
  883. package/dist/cjs/utils/field/getCombinedFieldValidityData.cjs +0 -36
  884. package/dist/cjs/utils/field/useAriaLabelledBy.cjs +0 -87
  885. package/dist/cjs/utils/field/useFieldControlRegistration.cjs +0 -165
  886. package/dist/cjs/utils/field/useFieldValidation.cjs +0 -285
  887. package/dist/cjs/utils/field/useLabel.cjs +0 -99
  888. package/dist/cjs/utils/field/useLabelableId.cjs +0 -105
  889. package/dist/cjs/utils/field/useRegisterFieldControl.cjs +0 -60
  890. package/dist/cjs/utils/findRootOwnerId.cjs +0 -37
  891. package/dist/cjs/utils/floating/FloatingDelayGroup.cjs +0 -219
  892. package/dist/cjs/utils/floating/FloatingFocusManager.cjs +0 -685
  893. package/dist/cjs/utils/floating/FloatingPortal.cjs +0 -230
  894. package/dist/cjs/utils/floating/FloatingRootStore.cjs +0 -87
  895. package/dist/cjs/utils/floating/FloatingTree.cjs +0 -86
  896. package/dist/cjs/utils/floating/FloatingTreeStore.cjs +0 -41
  897. package/dist/cjs/utils/floating/FocusGuard.cjs +0 -54
  898. package/dist/cjs/utils/floating/composite.cjs +0 -42
  899. package/dist/cjs/utils/floating/constants.cjs +0 -34
  900. package/dist/cjs/utils/floating/createAttribute.cjs +0 -30
  901. package/dist/cjs/utils/floating/createEventEmitter.cjs +0 -44
  902. package/dist/cjs/utils/floating/element.cjs +0 -103
  903. package/dist/cjs/utils/floating/enqueueFocus.cjs +0 -51
  904. package/dist/cjs/utils/floating/event.cjs +0 -65
  905. package/dist/cjs/utils/floating/getEmptyRootContext.cjs +0 -42
  906. package/dist/cjs/utils/floating/gridNavigation.cjs +0 -45
  907. package/dist/cjs/utils/floating/markOthers.cjs +0 -181
  908. package/dist/cjs/utils/floating/nodes.cjs +0 -48
  909. package/dist/cjs/utils/floating/safePolygon.cjs +0 -301
  910. package/dist/cjs/utils/floating/tabbable.cjs +0 -242
  911. package/dist/cjs/utils/floating/types.cjs +0 -16
  912. package/dist/cjs/utils/floating/useClick.cjs +0 -153
  913. package/dist/cjs/utils/floating/useClientPoint.cjs +0 -225
  914. package/dist/cjs/utils/floating/useDismiss.cjs +0 -506
  915. package/dist/cjs/utils/floating/useFloating.cjs +0 -186
  916. package/dist/cjs/utils/floating/useFloatingRootContext.cjs +0 -75
  917. package/dist/cjs/utils/floating/useFocus.cjs +0 -184
  918. package/dist/cjs/utils/floating/useHoverFloatingInteraction.cjs +0 -231
  919. package/dist/cjs/utils/floating/useHoverInteractionSharedState.cjs +0 -113
  920. package/dist/cjs/utils/floating/useHoverReferenceInteraction.cjs +0 -380
  921. package/dist/cjs/utils/floating/useHoverShared.cjs +0 -65
  922. package/dist/cjs/utils/floating/useListNavigation.cjs +0 -665
  923. package/dist/cjs/utils/floating/useSyncedFloatingRootContext.cjs +0 -91
  924. package/dist/cjs/utils/floating/useTypeahead.cjs +0 -187
  925. package/dist/cjs/utils/formatNumber.cjs +0 -60
  926. package/dist/cjs/utils/generateId.cjs +0 -32
  927. package/dist/cjs/utils/getCssDimensions.cjs +0 -42
  928. package/dist/cjs/utils/getDefaultFormSubmitter.cjs +0 -42
  929. package/dist/cjs/utils/getDisabledMountTransitionStyles.cjs +0 -32
  930. package/dist/cjs/utils/getElementRef.cjs +0 -35
  931. package/dist/cjs/utils/getPseudoElementBounds.cjs +0 -56
  932. package/dist/cjs/utils/getStateAttributesProps.cjs +0 -46
  933. package/dist/cjs/utils/hideMiddleware.cjs +0 -42
  934. package/dist/cjs/utils/inertValue.cjs +0 -30
  935. package/dist/cjs/utils/matchesFocusVisible.cjs +0 -38
  936. package/dist/cjs/utils/mergeCleanups.cjs +0 -37
  937. package/dist/cjs/utils/mergeObjects.cjs +0 -39
  938. package/dist/cjs/utils/mergeProps.cjs +0 -182
  939. package/dist/cjs/utils/noop.cjs +0 -29
  940. package/dist/cjs/utils/number/constants.cjs +0 -34
  941. package/dist/cjs/utils/number/parse.cjs +0 -258
  942. package/dist/cjs/utils/number/types.cjs +0 -16
  943. package/dist/cjs/utils/number/validate.cjs +0 -104
  944. package/dist/cjs/utils/owner.cjs +0 -35
  945. package/dist/cjs/utils/platform.cjs +0 -83
  946. package/dist/cjs/utils/popupStateMapping.cjs +0 -74
  947. package/dist/cjs/utils/popups/index.cjs +0 -39
  948. package/dist/cjs/utils/popups/inlineRect.cjs +0 -218
  949. package/dist/cjs/utils/popups/popupStoreUtils.cjs +0 -379
  950. package/dist/cjs/utils/popups/popupTriggerMap.cjs +0 -76
  951. package/dist/cjs/utils/popups/store.cjs +0 -118
  952. package/dist/cjs/utils/popups/useTriggerFocusGuards.cjs +0 -72
  953. package/dist/cjs/utils/resolveAriaLabelledBy.cjs +0 -35
  954. package/dist/cjs/utils/resolveClassName.cjs +0 -30
  955. package/dist/cjs/utils/resolveRef.cjs +0 -33
  956. package/dist/cjs/utils/resolveStyle.cjs +0 -30
  957. package/dist/cjs/utils/serializeValue.cjs +0 -40
  958. package/dist/cjs/utils/slider/asc.cjs +0 -30
  959. package/dist/cjs/utils/slider/getMidpoint.cjs +0 -34
  960. package/dist/cjs/utils/slider/getPushedThumbValues.cjs +0 -73
  961. package/dist/cjs/utils/slider/getSliderValue.cjs +0 -42
  962. package/dist/cjs/utils/slider/replaceArrayItemAtIndex.cjs +0 -33
  963. package/dist/cjs/utils/slider/resolveThumbCollision.cjs +0 -155
  964. package/dist/cjs/utils/slider/roundValueToStep.cjs +0 -45
  965. package/dist/cjs/utils/slider/validateMinimumDistance.cjs +0 -40
  966. package/dist/cjs/utils/slider/valueArrayToPercentages.cjs +0 -36
  967. package/dist/cjs/utils/store/ReactStore.cjs +0 -135
  968. package/dist/cjs/utils/store/Store.cjs +0 -83
  969. package/dist/cjs/utils/store/createSelector.cjs +0 -74
  970. package/dist/cjs/utils/store/useStore.cjs +0 -51
  971. package/dist/cjs/utils/stringifyLocale.cjs +0 -36
  972. package/dist/cjs/utils/useAnchorPositioning.cjs +0 -421
  973. package/dist/cjs/utils/useAnchoredPopupScrollLock.cjs +0 -59
  974. package/dist/cjs/utils/useAnimationFrame.cjs +0 -93
  975. package/dist/cjs/utils/useAnimationsFinished.cjs +0 -98
  976. package/dist/cjs/utils/useBaseUiId.cjs +0 -36
  977. package/dist/cjs/utils/useButton.cjs +0 -177
  978. package/dist/cjs/utils/useCheckboxGroupParent.cjs +0 -114
  979. package/dist/cjs/utils/useControlled.cjs +0 -47
  980. package/dist/cjs/utils/useEnhancedClickHandler.cjs +0 -60
  981. package/dist/cjs/utils/useFocusableWhenDisabled.cjs +0 -77
  982. package/dist/cjs/utils/useForcedRerendering.cjs +0 -35
  983. package/dist/cjs/utils/useIsHydrating.cjs +0 -44
  984. package/dist/cjs/utils/useMixedToggleClickHandler.cjs +0 -66
  985. package/dist/cjs/utils/useOnFirstRender.cjs +0 -35
  986. package/dist/cjs/utils/useOnMount.cjs +0 -36
  987. package/dist/cjs/utils/useOpenChangeComplete.cjs +0 -57
  988. package/dist/cjs/utils/useOpenInteractionType.cjs +0 -69
  989. package/dist/cjs/utils/usePopupAutoResize.cjs +0 -191
  990. package/dist/cjs/utils/usePopupViewport.cjs +0 -283
  991. package/dist/cjs/utils/usePositioner.cjs +0 -53
  992. package/dist/cjs/utils/usePressAndHold.cjs +0 -51
  993. package/dist/cjs/utils/usePreviousValue.cjs +0 -47
  994. package/dist/cjs/utils/useRefWithInit.cjs +0 -41
  995. package/dist/cjs/utils/useRegisteredLabelId.cjs +0 -48
  996. package/dist/cjs/utils/useRenderElement.cjs +0 -106
  997. package/dist/cjs/utils/useScrollLock.cjs +0 -232
  998. package/dist/cjs/utils/useStableCallback.cjs +0 -41
  999. package/dist/cjs/utils/useTimeout.cjs +0 -66
  1000. package/dist/cjs/utils/useTransitionStatus.cjs +0 -116
  1001. package/dist/cjs/utils/useValueAsRef.cjs +0 -43
  1002. package/dist/cjs/utils/useValueChanged.cjs +0 -55
  1003. package/dist/cjs/utils/valueToPercent.cjs +0 -30
  1004. package/dist/cjs/utils/visuallyHidden.cjs +0 -49
  1005. package/src/accordion.ts +0 -615
  1006. package/src/alert-dialog.ts +0 -49
  1007. package/src/avatar.ts +0 -308
  1008. package/src/button.ts +0 -63
  1009. package/src/checkbox-group.ts +0 -183
  1010. package/src/checkbox.ts +0 -576
  1011. package/src/collapsible.ts +0 -916
  1012. package/src/context-menu.ts +0 -317
  1013. package/src/csp-provider.ts +0 -37
  1014. package/src/dialog.ts +0 -930
  1015. package/src/direction-provider.ts +0 -32
  1016. package/src/field.ts +0 -650
  1017. package/src/fieldset.ts +0 -150
  1018. package/src/form.ts +0 -183
  1019. package/src/input.ts +0 -9
  1020. package/src/internal.ts +0 -29
  1021. package/src/menu.ts +0 -3387
  1022. package/src/menubar.ts +0 -160
  1023. package/src/merge-props.ts +0 -2
  1024. package/src/meter.ts +0 -211
  1025. package/src/number-field.ts +0 -951
  1026. package/src/popover.ts +0 -1282
  1027. package/src/preview-card.ts +0 -812
  1028. package/src/progress.ts +0 -267
  1029. package/src/radio-group.ts +0 -285
  1030. package/src/radio.ts +0 -393
  1031. package/src/separator.ts +0 -43
  1032. package/src/slider.ts +0 -1624
  1033. package/src/switch.ts +0 -363
  1034. package/src/tabs.ts +0 -947
  1035. package/src/toast.ts +0 -2462
  1036. package/src/toggle-group.ts +0 -136
  1037. package/src/toggle.ts +0 -145
  1038. package/src/tooltip.ts +0 -1053
  1039. package/src/unstable-use-media-query.ts +0 -101
  1040. package/src/use-render.ts +0 -41
  1041. package/src/utils/CSPContext.ts +0 -21
  1042. package/src/utils/CheckboxGroupContext.ts +0 -30
  1043. package/src/utils/CompositeRootContext.ts +0 -27
  1044. package/src/utils/ContextMenuRootContext.ts +0 -44
  1045. package/src/utils/DirectionContext.ts +0 -15
  1046. package/src/utils/FloatingPortalLite.ts +0 -34
  1047. package/src/utils/InternalBackdrop.ts +0 -28
  1048. package/src/utils/MenubarContext.ts +0 -38
  1049. package/src/utils/RadioGroupContext.ts +0 -27
  1050. package/src/utils/RequestQueue.ts +0 -132
  1051. package/src/utils/TimeoutManager.ts +0 -32
  1052. package/src/utils/ToggleGroupContext.ts +0 -33
  1053. package/src/utils/addEventListener.ts +0 -13
  1054. package/src/utils/areArraysEqual.ts +0 -11
  1055. package/src/utils/clamp.ts +0 -8
  1056. package/src/utils/closePart.ts +0 -61
  1057. package/src/utils/composeRefs.ts +0 -53
  1058. package/src/utils/composite/CompositeItem.ts +0 -56
  1059. package/src/utils/composite/CompositeList.ts +0 -190
  1060. package/src/utils/composite/CompositeListContext.ts +0 -23
  1061. package/src/utils/composite/CompositeRoot.ts +0 -132
  1062. package/src/utils/composite/grid-utils.ts +0 -437
  1063. package/src/utils/composite/gridNavigation.ts +0 -127
  1064. package/src/utils/composite/keys.ts +0 -179
  1065. package/src/utils/composite/list-utils.ts +0 -106
  1066. package/src/utils/composite/useCompositeItem.ts +0 -58
  1067. package/src/utils/composite/useCompositeListItem.ts +0 -108
  1068. package/src/utils/composite/useCompositeRoot.ts +0 -344
  1069. package/src/utils/constants.ts +0 -41
  1070. package/src/utils/contains.ts +0 -22
  1071. package/src/utils/createChangeEventDetails.ts +0 -95
  1072. package/src/utils/dom.ts +0 -9
  1073. package/src/utils/empty.ts +0 -7
  1074. package/src/utils/field/FieldItemContext.ts +0 -13
  1075. package/src/utils/field/FieldRootContext.ts +0 -98
  1076. package/src/utils/field/FormContext.ts +0 -37
  1077. package/src/utils/field/LabelableContext.ts +0 -32
  1078. package/src/utils/field/LabelableProvider.ts +0 -108
  1079. package/src/utils/field/constants.ts +0 -80
  1080. package/src/utils/field/getCombinedFieldValidityData.ts +0 -16
  1081. package/src/utils/field/useAriaLabelledBy.ts +0 -86
  1082. package/src/utils/field/useFieldControlRegistration.ts +0 -179
  1083. package/src/utils/field/useFieldValidation.ts +0 -311
  1084. package/src/utils/field/useLabel.ts +0 -95
  1085. package/src/utils/field/useLabelableId.ts +0 -99
  1086. package/src/utils/field/useRegisterFieldControl.ts +0 -41
  1087. package/src/utils/findRootOwnerId.ts +0 -19
  1088. package/src/utils/floating/FloatingDelayGroup.ts +0 -280
  1089. package/src/utils/floating/FloatingFocusManager.ts +0 -837
  1090. package/src/utils/floating/FloatingPortal.ts +0 -280
  1091. package/src/utils/floating/FloatingRootStore.ts +0 -127
  1092. package/src/utils/floating/FloatingTree.ts +0 -70
  1093. package/src/utils/floating/FloatingTreeStore.ts +0 -22
  1094. package/src/utils/floating/FocusGuard.ts +0 -34
  1095. package/src/utils/floating/composite.ts +0 -20
  1096. package/src/utils/floating/constants.ts +0 -8
  1097. package/src/utils/floating/createAttribute.ts +0 -4
  1098. package/src/utils/floating/createEventEmitter.ts +0 -20
  1099. package/src/utils/floating/element.ts +0 -88
  1100. package/src/utils/floating/enqueueFocus.ts +0 -38
  1101. package/src/utils/floating/event.ts +0 -53
  1102. package/src/utils/floating/getEmptyRootContext.ts +0 -19
  1103. package/src/utils/floating/gridNavigation.ts +0 -54
  1104. package/src/utils/floating/markOthers.ts +0 -197
  1105. package/src/utils/floating/nodes.ts +0 -31
  1106. package/src/utils/floating/safePolygon.ts +0 -448
  1107. package/src/utils/floating/tabbable.ts +0 -260
  1108. package/src/utils/floating/types.ts +0 -57
  1109. package/src/utils/floating/useClick.ts +0 -174
  1110. package/src/utils/floating/useClientPoint.ts +0 -276
  1111. package/src/utils/floating/useDismiss.ts +0 -639
  1112. package/src/utils/floating/useFloating.ts +0 -198
  1113. package/src/utils/floating/useFloatingRootContext.ts +0 -81
  1114. package/src/utils/floating/useFocus.ts +0 -248
  1115. package/src/utils/floating/useHoverFloatingInteraction.ts +0 -302
  1116. package/src/utils/floating/useHoverInteractionSharedState.ts +0 -139
  1117. package/src/utils/floating/useHoverReferenceInteraction.ts +0 -510
  1118. package/src/utils/floating/useHoverShared.ts +0 -78
  1119. package/src/utils/floating/useListNavigation.ts +0 -1018
  1120. package/src/utils/floating/useSyncedFloatingRootContext.ts +0 -93
  1121. package/src/utils/floating/useTypeahead.ts +0 -287
  1122. package/src/utils/formatNumber.ts +0 -44
  1123. package/src/utils/generateId.ts +0 -10
  1124. package/src/utils/getDefaultFormSubmitter.ts +0 -19
  1125. package/src/utils/getDisabledMountTransitionStyles.ts +0 -12
  1126. package/src/utils/getElementRef.ts +0 -13
  1127. package/src/utils/getStateAttributesProps.ts +0 -34
  1128. package/src/utils/inertValue.ts +0 -5
  1129. package/src/utils/matchesFocusVisible.ts +0 -16
  1130. package/src/utils/mergeCleanups.ts +0 -13
  1131. package/src/utils/mergeObjects.ts +0 -18
  1132. package/src/utils/mergeProps.ts +0 -206
  1133. package/src/utils/noop.ts +0 -4
  1134. package/src/utils/number/constants.ts +0 -4
  1135. package/src/utils/number/parse.ts +0 -227
  1136. package/src/utils/number/types.ts +0 -21
  1137. package/src/utils/number/validate.ts +0 -129
  1138. package/src/utils/owner.ts +0 -9
  1139. package/src/utils/platform.ts +0 -69
  1140. package/src/utils/serializeValue.ts +0 -15
  1141. package/src/utils/slider/asc.ts +0 -4
  1142. package/src/utils/slider/getMidpoint.ts +0 -14
  1143. package/src/utils/slider/getPushedThumbValues.ts +0 -73
  1144. package/src/utils/slider/getSliderValue.ts +0 -27
  1145. package/src/utils/slider/replaceArrayItemAtIndex.ts +0 -8
  1146. package/src/utils/slider/resolveThumbCollision.ts +0 -178
  1147. package/src/utils/slider/roundValueToStep.ts +0 -22
  1148. package/src/utils/slider/validateMinimumDistance.ts +0 -22
  1149. package/src/utils/slider/valueArrayToPercentages.ts +0 -11
  1150. package/src/utils/store/ReactStore.ts +0 -168
  1151. package/src/utils/store/Store.ts +0 -84
  1152. package/src/utils/store/createSelector.ts +0 -66
  1153. package/src/utils/store/useStore.ts +0 -49
  1154. package/src/utils/stringifyLocale.ts +0 -10
  1155. package/src/utils/useAnchorPositioning.ts +0 -581
  1156. package/src/utils/useAnimationFrame.ts +0 -82
  1157. package/src/utils/useAnimationsFinished.ts +0 -100
  1158. package/src/utils/useBaseUiId.ts +0 -19
  1159. package/src/utils/useButton.ts +0 -217
  1160. package/src/utils/useCheckboxGroupParent.ts +0 -113
  1161. package/src/utils/useControlled.ts +0 -42
  1162. package/src/utils/useEnhancedClickHandler.ts +0 -47
  1163. package/src/utils/useForcedRerendering.ts +0 -11
  1164. package/src/utils/useOnFirstRender.ts +0 -11
  1165. package/src/utils/useOnMount.ts +0 -17
  1166. package/src/utils/useOpenChangeComplete.ts +0 -46
  1167. package/src/utils/usePopupViewport.ts +0 -375
  1168. package/src/utils/usePositioner.ts +0 -48
  1169. package/src/utils/usePressAndHold.ts +0 -35
  1170. package/src/utils/usePreviousValue.ts +0 -33
  1171. package/src/utils/useRefWithInit.ts +0 -23
  1172. package/src/utils/useRenderElement.ts +0 -164
  1173. package/src/utils/useScrollLock.ts +0 -253
  1174. package/src/utils/useStableCallback.ts +0 -26
  1175. package/src/utils/useTimeout.ts +0 -51
  1176. package/src/utils/useTransitionStatus.ts +0 -115
  1177. package/src/utils/useValueAsRef.ts +0 -25
  1178. package/src/utils/useValueChanged.ts +0 -37
  1179. package/src/utils/visuallyHidden.ts +0 -24
@@ -1,1766 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var toast_exports = {};
20
- __export(toast_exports, {
21
- Toast: () => Toast,
22
- ToastPositionerCssVars: () => ToastPositionerCssVars,
23
- ToastRootCssVars: () => ToastRootCssVars,
24
- ToastStore: () => ToastStore,
25
- ToastViewportCssVars: () => ToastViewportCssVars,
26
- createToastManager: () => createToastManager,
27
- resolvePromiseOptions: () => resolvePromiseOptions,
28
- toastSelectors: () => toastSelectors,
29
- useToastManager: () => useToastManager,
30
- useToastPositionerContext: () => useToastPositionerContext,
31
- useToastProviderContext: () => useToastProviderContext,
32
- useToastRootContext: () => useToastRootContext
33
- });
34
- module.exports = __toCommonJS(toast_exports);
35
- var import_octane = require("octane");
36
- var import_internal = require("./internal.cjs");
37
- var import_useRenderElement = require("./utils/useRenderElement.cjs");
38
- var import_usePositioner = require("./utils/usePositioner.cjs");
39
- var import_useButton = require("./utils/useButton.cjs");
40
- var import_useStableCallback = require("./utils/useStableCallback.cjs");
41
- var import_useRefWithInit = require("./utils/useRefWithInit.cjs");
42
- var import_useOnMount = require("./utils/useOnMount.cjs");
43
- var import_useTimeout = require("./utils/useTimeout.cjs");
44
- var import_useOpenChangeComplete = require("./utils/useOpenChangeComplete.cjs");
45
- var import_generateId = require("./utils/generateId.cjs");
46
- var import_owner = require("./utils/owner.cjs");
47
- var import_addEventListener = require("./utils/addEventListener.cjs");
48
- var import_mergeCleanups = require("./utils/mergeCleanups.cjs");
49
- var import_visuallyHidden = require("./utils/visuallyHidden.cjs");
50
- var import_inertValue = require("./utils/inertValue.cjs");
51
- var import_empty = require("./utils/empty.cjs");
52
- var import_noop = require("./utils/noop.cjs");
53
- var import_dom = require("./utils/dom.cjs");
54
- var import_ReactStore = require("./utils/store/ReactStore.cjs");
55
- var import_createSelector = require("./utils/store/createSelector.cjs");
56
- var import_useTransitionStatus = require("./utils/useTransitionStatus.cjs");
57
- var import_matchesFocusVisible = require("./utils/matchesFocusVisible.cjs");
58
- var import_element = require("./utils/floating/element.cjs");
59
- var import_list_utils = require("./utils/composite/list-utils.cjs");
60
- var import_FocusGuard = require("./utils/floating/FocusGuard.cjs");
61
- var import_FloatingPortalLite = require("./utils/FloatingPortalLite.cjs");
62
- var import_useFloatingRootContext = require("./utils/floating/useFloatingRootContext.cjs");
63
- var import_useAnchorPositioning = require("./utils/useAnchorPositioning.cjs");
64
- var import_constants = require("./utils/constants.cjs");
65
- const ToastRootCssVars = {
66
- /** The index of the toast in the list. */
67
- index: "--toast-index",
68
- /** The vertical pixel offset of the toast in the list when expanded. */
69
- offsetY: "--toast-offset-y",
70
- /** The measured natural height of the toast in pixels. */
71
- height: "--toast-height",
72
- /** The horizontal swipe movement of the toast. */
73
- swipeMovementX: "--toast-swipe-movement-x",
74
- /** The vertical swipe movement of the toast. */
75
- swipeMovementY: "--toast-swipe-movement-y"
76
- };
77
- const ToastViewportCssVars = {
78
- /** The height of the frontmost toast. */
79
- frontmostHeight: "--toast-frontmost-height"
80
- };
81
- const ToastPositionerCssVars = {
82
- availableWidth: "--available-width",
83
- availableHeight: "--available-height",
84
- anchorWidth: "--anchor-width",
85
- anchorHeight: "--anchor-height",
86
- transformOrigin: "--transform-origin"
87
- };
88
- function resolvePromiseOptions(options, result) {
89
- if (typeof options === "string") {
90
- return { description: options };
91
- }
92
- if (typeof options === "function") {
93
- const resolvedOptions = options(result);
94
- return typeof resolvedOptions === "string" ? { description: resolvedOptions } : resolvedOptions;
95
- }
96
- return options;
97
- }
98
- function createToastMetadata(toasts) {
99
- const metadata = /* @__PURE__ */ new Map();
100
- let visibleIndex = 0;
101
- let offsetY = 0;
102
- toasts.forEach((toast, toastIndex) => {
103
- const isEnding = toast.transitionStatus === "ending";
104
- metadata.set(toast.id, {
105
- value: toast,
106
- domIndex: toastIndex,
107
- visibleIndex: isEnding ? -1 : visibleIndex,
108
- offsetY
109
- });
110
- offsetY += toast.height || 0;
111
- if (!isEnding) {
112
- visibleIndex += 1;
113
- }
114
- });
115
- return metadata;
116
- }
117
- function applyLimited(toasts, limit) {
118
- let activeIndex = 0;
119
- return toasts.map((toast) => {
120
- if (toast.transitionStatus === "ending") {
121
- return toast;
122
- }
123
- const limited = activeIndex >= limit;
124
- activeIndex += 1;
125
- return toast.limited === limited ? toast : { ...toast, limited };
126
- });
127
- }
128
- const toastMetadataSelector = (state) => state.toastMetadata;
129
- const toastSelectors = {
130
- toasts: (0, import_createSelector.createSelector)((state) => state.toasts),
131
- isEmpty: (0, import_createSelector.createSelector)((state) => state.toasts.length === 0),
132
- toast: (0, import_createSelector.createSelector)(
133
- toastMetadataSelector,
134
- (toastMetadata, id) => toastMetadata.get(id)?.value
135
- ),
136
- toastIndex: (0, import_createSelector.createSelector)(
137
- toastMetadataSelector,
138
- (toastMetadata, id) => toastMetadata.get(id)?.domIndex ?? -1
139
- ),
140
- toastOffsetY: (0, import_createSelector.createSelector)(
141
- toastMetadataSelector,
142
- (toastMetadata, id) => toastMetadata.get(id)?.offsetY ?? 0
143
- ),
144
- toastVisibleIndex: (0, import_createSelector.createSelector)(
145
- toastMetadataSelector,
146
- (toastMetadata, id) => toastMetadata.get(id)?.visibleIndex ?? -1
147
- ),
148
- hovering: (0, import_createSelector.createSelector)((state) => state.hovering),
149
- focused: (0, import_createSelector.createSelector)((state) => state.focused),
150
- expanded: (0, import_createSelector.createSelector)((state) => state.hovering || state.focused),
151
- expandedOrOutOfFocus: (0, import_createSelector.createSelector)(
152
- (state) => state.hovering || state.focused || !state.isWindowFocused
153
- ),
154
- prevFocusElement: (0, import_createSelector.createSelector)((state) => state.prevFocusElement)
155
- };
156
- class ToastStore extends import_ReactStore.ReactStore {
157
- timers = /* @__PURE__ */ new Map();
158
- areTimersPaused = false;
159
- constructor(initialState) {
160
- super(
161
- {
162
- ...initialState,
163
- toastMetadata: createToastMetadata(initialState.toasts)
164
- },
165
- {},
166
- toastSelectors
167
- );
168
- }
169
- setFocused(focused) {
170
- this.set("focused", focused);
171
- }
172
- setHovering(hovering) {
173
- this.set("hovering", hovering);
174
- }
175
- setIsWindowFocused(isWindowFocused) {
176
- this.set("isWindowFocused", isWindowFocused);
177
- }
178
- setPrevFocusElement(prevFocusElement) {
179
- this.set("prevFocusElement", prevFocusElement);
180
- }
181
- setViewport = (viewport) => {
182
- this.set("viewport", viewport);
183
- };
184
- syncProviderProps(props) {
185
- const limitChanged = this.state.limit !== props.limit;
186
- if (this.state.timeout === props.timeout && !limitChanged) {
187
- return;
188
- }
189
- const updates = {
190
- timeout: props.timeout,
191
- limit: props.limit
192
- };
193
- if (limitChanged) {
194
- const newToasts = applyLimited(this.state.toasts, props.limit);
195
- updates.toasts = newToasts;
196
- updates.toastMetadata = createToastMetadata(newToasts);
197
- }
198
- this.update(updates);
199
- }
200
- disposeEffect = () => {
201
- return () => {
202
- this.timers.forEach((timer) => {
203
- timer.timeout?.clear();
204
- });
205
- this.timers.clear();
206
- };
207
- };
208
- removeToast(toastId, behavior = {}) {
209
- const index = toastSelectors.toastIndex(this.state, toastId);
210
- if (index === -1) {
211
- return;
212
- }
213
- const toast = this.state.toasts[index];
214
- if (!behavior.skipOnRemove) {
215
- toast?.onRemove?.();
216
- }
217
- const newToasts = [...this.state.toasts];
218
- newToasts.splice(index, 1);
219
- this.setToasts(newToasts);
220
- }
221
- addToast = (toast) => {
222
- const { timeout, limit } = this.state;
223
- const id = toast.id || (0, import_generateId.generateId)("toast");
224
- if (toast.id) {
225
- const existingToast = toastSelectors.toast(this.state, toast.id);
226
- if (existingToast) {
227
- if (existingToast.transitionStatus === "ending") {
228
- this.removeToast(toast.id, { skipOnRemove: true });
229
- } else {
230
- const { id: ignoredId, transitionStatus: ignoredTransitionStatus, ...updates } = toast;
231
- this.updateToastInternal(toast.id, updates, {
232
- resetTimer: true,
233
- markUpdated: true
234
- });
235
- return toast.id;
236
- }
237
- }
238
- }
239
- const toastToAdd = {
240
- ...toast,
241
- id,
242
- updateKey: 0,
243
- transitionStatus: "starting"
244
- };
245
- const updatedToasts = [toastToAdd, ...this.state.toasts];
246
- this.setToasts(applyLimited(updatedToasts, limit));
247
- const duration = toastToAdd.timeout ?? timeout;
248
- if (toastToAdd.type !== "loading" && duration > 0) {
249
- this.scheduleTimer(id, duration, () => this.closeToast(id));
250
- }
251
- if (toastSelectors.expandedOrOutOfFocus(this.state)) {
252
- this.pauseTimers();
253
- }
254
- return id;
255
- };
256
- updateToast = (id, updates) => {
257
- this.updateToastInternal(id, updates, { markUpdated: true });
258
- };
259
- updateToastInternal = (id, updates, behavior = {}) => {
260
- const { timeout, toasts } = this.state;
261
- const prevToast = toastSelectors.toast(this.state, id) ?? null;
262
- if (!prevToast) {
263
- return;
264
- }
265
- if (prevToast.transitionStatus === "ending") {
266
- return;
267
- }
268
- const nextToast = {
269
- ...prevToast,
270
- ...updates,
271
- ...behavior.markUpdated && {
272
- updateKey: (prevToast.updateKey ?? 0) + 1
273
- }
274
- };
275
- this.setToasts(toasts.map((toast) => toast.id === id ? nextToast : toast));
276
- const nextTimeout = nextToast.timeout ?? timeout;
277
- const prevTimeout = prevToast?.timeout ?? timeout;
278
- const timeoutUpdated = Object.hasOwn(updates, "timeout");
279
- const shouldHaveTimer = nextToast.transitionStatus !== "ending" && nextToast.type !== "loading" && nextTimeout > 0;
280
- const hasTimer = this.timers.has(id);
281
- const timeoutChanged = prevTimeout !== nextTimeout;
282
- const wasLoading = prevToast?.type === "loading";
283
- if (!shouldHaveTimer && hasTimer) {
284
- this.clearTimer(id);
285
- return;
286
- }
287
- if (shouldHaveTimer && (!hasTimer || timeoutChanged || timeoutUpdated || wasLoading || behavior.resetTimer)) {
288
- this.clearTimer(id);
289
- this.scheduleTimer(id, nextTimeout, () => this.closeToast(id));
290
- if (toastSelectors.expandedOrOutOfFocus(this.state)) {
291
- this.pauseTimers();
292
- }
293
- }
294
- };
295
- closeToast = (toastId) => {
296
- const closeAll = toastId === void 0;
297
- const { limit, toasts } = this.state;
298
- let toastsToClose;
299
- if (closeAll) {
300
- toastsToClose = toasts;
301
- this.clearTimers();
302
- } else {
303
- const toast = toastSelectors.toast(this.state, toastId);
304
- if (!toast) {
305
- return;
306
- }
307
- toastsToClose = [toast];
308
- this.clearTimer(toastId);
309
- }
310
- const endingToasts = toasts.map(
311
- (item) => closeAll || item.id === toastId ? { ...item, transitionStatus: "ending", height: 0 } : item
312
- );
313
- const newToasts = applyLimited(endingToasts, limit);
314
- const updates = {
315
- toasts: newToasts,
316
- toastMetadata: createToastMetadata(newToasts)
317
- };
318
- const hasActiveToasts = newToasts.some((toast) => toast.transitionStatus !== "ending");
319
- if (!hasActiveToasts) {
320
- updates.hovering = false;
321
- updates.focused = false;
322
- }
323
- this.update(updates);
324
- toastsToClose.forEach((toast) => {
325
- if (toast.transitionStatus !== "ending") {
326
- toast.onClose?.();
327
- }
328
- });
329
- this.handleFocusManagement(toastId);
330
- };
331
- promiseToast = (promiseValue, options) => {
332
- const loadingOptions = resolvePromiseOptions(options.loading);
333
- const id = this.addToast({
334
- ...loadingOptions,
335
- type: "loading"
336
- });
337
- const handledPromise = promiseValue.then((result) => {
338
- const successOptions = resolvePromiseOptions(options.success, result);
339
- this.updateToast(id, {
340
- ...successOptions,
341
- type: "success",
342
- timeout: successOptions.timeout
343
- });
344
- return result;
345
- }).catch((error) => {
346
- const errorOptions = resolvePromiseOptions(options.error, error);
347
- this.updateToast(id, {
348
- ...errorOptions,
349
- type: "error",
350
- timeout: errorOptions.timeout
351
- });
352
- return Promise.reject(error);
353
- });
354
- if ({}.hasOwnProperty.call(options, "setPromise")) {
355
- options.setPromise(handledPromise);
356
- }
357
- return handledPromise;
358
- };
359
- pauseTimers() {
360
- if (this.areTimersPaused) {
361
- return;
362
- }
363
- this.areTimersPaused = true;
364
- this.timers.forEach((timer) => {
365
- if (timer.timeout) {
366
- timer.timeout.clear();
367
- const elapsed = Date.now() - timer.start;
368
- const remaining = timer.delay - elapsed;
369
- timer.remaining = remaining > 0 ? remaining : 0;
370
- }
371
- });
372
- }
373
- resumeTimers() {
374
- if (!this.areTimersPaused) {
375
- return;
376
- }
377
- this.areTimersPaused = false;
378
- this.timers.forEach((timer, id) => {
379
- timer.remaining = timer.remaining > 0 ? timer.remaining : timer.delay;
380
- timer.timeout ??= import_useTimeout.Timeout.create();
381
- timer.timeout.start(timer.remaining, () => {
382
- this.handleTimerFired(id);
383
- timer.callback();
384
- });
385
- timer.start = Date.now();
386
- });
387
- }
388
- restoreFocusToPrevElement() {
389
- this.state.prevFocusElement?.focus({ preventScroll: true });
390
- }
391
- handleDocumentPointerDown = (event) => {
392
- if (event.pointerType !== "touch") {
393
- return;
394
- }
395
- const target = (0, import_list_utils.getTarget)(event);
396
- if ((0, import_element.contains)(this.state.viewport, target)) {
397
- return;
398
- }
399
- this.resumeTimers();
400
- this.update({ hovering: false, focused: false });
401
- };
402
- scheduleTimer(id, delay, callback) {
403
- const start = Date.now();
404
- const shouldStartActive = !toastSelectors.expandedOrOutOfFocus(this.state);
405
- const currentTimeout = shouldStartActive ? import_useTimeout.Timeout.create() : void 0;
406
- currentTimeout?.start(delay, () => {
407
- this.handleTimerFired(id);
408
- callback();
409
- });
410
- this.timers.set(id, {
411
- timeout: currentTimeout,
412
- start: shouldStartActive ? start : 0,
413
- delay,
414
- remaining: delay,
415
- callback
416
- });
417
- }
418
- clearTimers() {
419
- this.timers.forEach((timer) => {
420
- timer.timeout?.clear();
421
- });
422
- this.timers.clear();
423
- this.areTimersPaused = false;
424
- }
425
- clearTimer(id) {
426
- const timer = this.timers.get(id);
427
- timer?.timeout?.clear();
428
- this.timers.delete(id);
429
- this.resetPausedStateIfNoTimersRemain();
430
- }
431
- handleTimerFired(id) {
432
- this.timers.delete(id);
433
- this.resetPausedStateIfNoTimersRemain();
434
- }
435
- resetPausedStateIfNoTimersRemain() {
436
- if (this.timers.size === 0) {
437
- this.areTimersPaused = false;
438
- }
439
- }
440
- setToasts(newToasts) {
441
- const updates = {
442
- toasts: newToasts,
443
- toastMetadata: createToastMetadata(newToasts)
444
- };
445
- if (newToasts.length === 0) {
446
- updates.hovering = false;
447
- updates.focused = false;
448
- }
449
- this.update(updates);
450
- }
451
- handleFocusManagement(toastId) {
452
- const activeEl = (0, import_element.activeElement)((0, import_owner.ownerDocument)(this.state.viewport));
453
- if (!this.state.viewport || !(0, import_element.contains)(this.state.viewport, activeEl) || !(0, import_matchesFocusVisible.matchesFocusVisible)(activeEl)) {
454
- return;
455
- }
456
- if (toastId === void 0) {
457
- this.restoreFocusToPrevElement();
458
- return;
459
- }
460
- const toasts = toastSelectors.toasts(this.state);
461
- const currentIndex = toastSelectors.toastIndex(this.state, toastId);
462
- let nextToast = null;
463
- let index = currentIndex + 1;
464
- while (index < toasts.length) {
465
- if (toasts[index].transitionStatus !== "ending") {
466
- nextToast = toasts[index];
467
- break;
468
- }
469
- index += 1;
470
- }
471
- if (!nextToast) {
472
- index = currentIndex - 1;
473
- while (index >= 0) {
474
- if (toasts[index].transitionStatus !== "ending") {
475
- nextToast = toasts[index];
476
- break;
477
- }
478
- index -= 1;
479
- }
480
- }
481
- if (nextToast) {
482
- nextToast.ref?.current?.focus();
483
- } else {
484
- this.restoreFocusToPrevElement();
485
- }
486
- }
487
- }
488
- function createToastManager() {
489
- const listeners = /* @__PURE__ */ new Set();
490
- function emit(data) {
491
- listeners.forEach((listener) => listener(data));
492
- }
493
- return {
494
- // Private aside from ToastProvider needing to access it.
495
- " subscribe": function subscribe(listener) {
496
- listeners.add(listener);
497
- return () => {
498
- listeners.delete(listener);
499
- };
500
- },
501
- add(options) {
502
- const id = options.id || (0, import_generateId.generateId)("toast");
503
- const toastToAdd = {
504
- ...options,
505
- id,
506
- transitionStatus: "starting"
507
- };
508
- emit({ action: "add", options: toastToAdd });
509
- return id;
510
- },
511
- close(id) {
512
- emit({ action: "close", options: { id } });
513
- },
514
- update(id, updates) {
515
- emit({ action: "update", options: { ...updates, id } });
516
- },
517
- promise(promiseValue, options) {
518
- let handledPromise = promiseValue;
519
- emit({
520
- action: "promise",
521
- options: {
522
- ...options,
523
- promise: promiseValue,
524
- setPromise(promise) {
525
- handledPromise = promise;
526
- }
527
- }
528
- });
529
- return handledPromise;
530
- }
531
- };
532
- }
533
- const ToastContext = (0, import_octane.createContext)(void 0);
534
- function useToastProviderContext() {
535
- const context = (0, import_octane.useContext)(ToastContext);
536
- if (!context) {
537
- throw new Error("Base UI: useToastManager must be used within <Toast.Provider>.");
538
- }
539
- return context;
540
- }
541
- const ToastRootContext = (0, import_octane.createContext)(void 0);
542
- function useToastRootContext() {
543
- const context = (0, import_octane.useContext)(ToastRootContext);
544
- if (!context) {
545
- throw new Error(
546
- "Base UI: ToastRootContext is missing. Toast parts must be used within <Toast.Root>."
547
- );
548
- }
549
- return context;
550
- }
551
- const ToastPositionerContext = (0, import_octane.createContext)(void 0);
552
- function useToastPositionerContext() {
553
- const context = (0, import_octane.useContext)(ToastPositionerContext);
554
- if (context === void 0) {
555
- throw new Error(
556
- "Base UI: ToastPositionerContext is missing. ToastPositioner parts must be placed within <Toast.Positioner>."
557
- );
558
- }
559
- return context;
560
- }
561
- function useToastManager(slotArg) {
562
- const slot = slotArg ?? (0, import_internal.S)("useToastManager");
563
- const store = (0, import_octane.useContext)(ToastContext);
564
- if (!store) {
565
- throw new Error("Base UI: useToastManager must be used within <Toast.Provider>.");
566
- }
567
- const toasts = store.useState("toasts", (0, import_internal.subSlot)(slot, "toasts"));
568
- return (0, import_octane.useMemo)(
569
- () => ({
570
- toasts,
571
- add: store.addToast,
572
- close: store.closeToast,
573
- update: store.updateToast,
574
- promise: store.promiseToast
575
- }),
576
- [toasts, store],
577
- (0, import_internal.subSlot)(slot, "m")
578
- );
579
- }
580
- function ToastProvider(props) {
581
- const slot = (0, import_internal.S)("ToastProvider");
582
- const { children, timeout = 5e3, limit = 3, toastManager } = props;
583
- const store = (0, import_useRefWithInit.useRefWithInit)(
584
- () => new ToastStore({
585
- timeout,
586
- limit,
587
- viewport: null,
588
- toasts: [],
589
- hovering: false,
590
- focused: false,
591
- isWindowFocused: true,
592
- prevFocusElement: null
593
- }),
594
- (0, import_internal.subSlot)(slot, "store")
595
- ).current;
596
- (0, import_useOnMount.useOnMount)(store.disposeEffect, (0, import_internal.subSlot)(slot, "dispose"));
597
- (0, import_octane.useEffect)(
598
- function subscribeToToastManager() {
599
- if (!toastManager) {
600
- return void 0;
601
- }
602
- const unsubscribe = toastManager[" subscribe"](({ action, options }) => {
603
- const id = options.id;
604
- if (action === "promise" && options.promise) {
605
- store.promiseToast(options.promise, options);
606
- } else if (action === "update" && id) {
607
- store.updateToast(id, options);
608
- } else if (action === "close") {
609
- store.closeToast(id);
610
- } else {
611
- store.addToast(options);
612
- }
613
- });
614
- return unsubscribe;
615
- },
616
- [store, toastManager],
617
- (0, import_internal.subSlot)(slot, "e:subscribe")
618
- );
619
- (0, import_octane.useLayoutEffect)(
620
- () => {
621
- store.syncProviderProps({ timeout, limit });
622
- },
623
- [store, timeout, limit],
624
- (0, import_internal.subSlot)(slot, "e:sync")
625
- );
626
- return (0, import_octane.createElement)(ToastContext.Provider, { value: store, children });
627
- }
628
- function ToastViewport(componentProps) {
629
- const slot = (0, import_internal.S)("ToastViewport");
630
- const { render, className, style, children, ref: forwardedRef, ...elementProps } = componentProps;
631
- const store = useToastProviderContext();
632
- const windowFocusTimeout = (0, import_useTimeout.useTimeout)((0, import_internal.subSlot)(slot, "wft"));
633
- const handlingFocusGuardRef = (0, import_octane.useRef)(false, (0, import_internal.subSlot)(slot, "hfg"));
634
- const markedReadyForMouseLeaveRef = (0, import_octane.useRef)(false, (0, import_internal.subSlot)(slot, "mrml"));
635
- const touchActiveRef = (0, import_octane.useRef)(false, (0, import_internal.subSlot)(slot, "touch"));
636
- const isEmpty = store.useState("isEmpty", (0, import_internal.subSlot)(slot, "empty"));
637
- const toasts = store.useState("toasts", (0, import_internal.subSlot)(slot, "toasts"));
638
- const focused = store.useState("focused", (0, import_internal.subSlot)(slot, "focused"));
639
- const expanded = store.useState("expanded", (0, import_internal.subSlot)(slot, "expanded"));
640
- const prevFocusElement = store.useState("prevFocusElement", (0, import_internal.subSlot)(slot, "prevFocus"));
641
- const frontmostHeight = toasts[0]?.height ?? 0;
642
- const hasTransitioningToasts = (0, import_octane.useMemo)(
643
- () => toasts.some((toast) => toast.transitionStatus === "ending"),
644
- [toasts],
645
- (0, import_internal.subSlot)(slot, "transitioning")
646
- );
647
- const highPriorityToasts = (0, import_octane.useMemo)(
648
- () => toasts.filter((toast) => toast.priority === "high"),
649
- [toasts],
650
- (0, import_internal.subSlot)(slot, "highPriority")
651
- );
652
- (0, import_octane.useEffect)(
653
- () => {
654
- const viewport = store.state.viewport;
655
- if (!viewport) {
656
- return void 0;
657
- }
658
- function handleGlobalKeyDown(event) {
659
- if (isEmpty) {
660
- return;
661
- }
662
- if (event.key === "F6" && (0, import_list_utils.getTarget)(event) !== viewport) {
663
- event.preventDefault();
664
- store.setPrevFocusElement((0, import_element.activeElement)((0, import_owner.ownerDocument)(viewport)));
665
- viewport?.focus({ preventScroll: true });
666
- store.pauseTimers();
667
- store.setFocused(true);
668
- }
669
- }
670
- const win = (0, import_owner.ownerWindow)(viewport);
671
- return (0, import_addEventListener.addEventListener)(win, "keydown", handleGlobalKeyDown);
672
- },
673
- [store, isEmpty],
674
- (0, import_internal.subSlot)(slot, "e:f6")
675
- );
676
- (0, import_octane.useEffect)(
677
- () => {
678
- const viewport = store.state.viewport;
679
- if (!viewport || isEmpty) {
680
- return void 0;
681
- }
682
- const win = (0, import_owner.ownerWindow)(viewport);
683
- function handleWindowBlur(event) {
684
- if ((0, import_list_utils.getTarget)(event) !== win) {
685
- return;
686
- }
687
- store.setIsWindowFocused(false);
688
- store.pauseTimers();
689
- }
690
- function handleWindowFocus(event) {
691
- if (event.relatedTarget) {
692
- return;
693
- }
694
- const target = (0, import_list_utils.getTarget)(event);
695
- const activeEl = (0, import_element.activeElement)((0, import_owner.ownerDocument)(viewport));
696
- if (target === win || !(0, import_element.contains)(viewport, target) || !(0, import_matchesFocusVisible.matchesFocusVisible)(activeEl)) {
697
- store.resumeTimers();
698
- }
699
- windowFocusTimeout.start(0, () => store.setIsWindowFocused(true));
700
- }
701
- return (0, import_mergeCleanups.mergeCleanups)(
702
- (0, import_addEventListener.addEventListener)(win, "blur", handleWindowBlur, true),
703
- (0, import_addEventListener.addEventListener)(win, "focus", handleWindowFocus, true)
704
- );
705
- },
706
- [
707
- store,
708
- windowFocusTimeout,
709
- // `store.state.viewport` isn't available on the first render, since the portal node
710
- // hasn't yet been created. This dependency ensures the window listeners are added once
711
- // toasts have been created and the ref is available.
712
- isEmpty
713
- ],
714
- (0, import_internal.subSlot)(slot, "e:window")
715
- );
716
- (0, import_octane.useEffect)(
717
- () => {
718
- const viewport = store.state.viewport;
719
- if (!viewport || isEmpty) {
720
- return void 0;
721
- }
722
- const doc = (0, import_owner.ownerDocument)(viewport);
723
- return (0, import_addEventListener.addEventListener)(doc, "pointerdown", store.handleDocumentPointerDown, true);
724
- },
725
- [isEmpty, store],
726
- (0, import_internal.subSlot)(slot, "e:pointerdown")
727
- );
728
- function handleFocusGuard(event) {
729
- const viewport = store.state.viewport;
730
- if (!viewport) {
731
- return;
732
- }
733
- handlingFocusGuardRef.current = true;
734
- if (event.relatedTarget === viewport) {
735
- const firstFocusableToast = toasts.find(
736
- (toast) => toast.transitionStatus !== "ending" && !toast.limited
737
- );
738
- if (firstFocusableToast) {
739
- firstFocusableToast.ref?.current?.focus();
740
- } else {
741
- store.restoreFocusToPrevElement();
742
- }
743
- } else {
744
- store.restoreFocusToPrevElement();
745
- }
746
- }
747
- function handleKeyDown(event) {
748
- if (event.key === "Tab" && event.shiftKey && (0, import_list_utils.getTarget)(event) === store.state.viewport) {
749
- event.preventDefault();
750
- store.restoreFocusToPrevElement();
751
- store.resumeTimers();
752
- }
753
- }
754
- function flushMouseLeave() {
755
- const hasEndingToasts = store.state.toasts.some(
756
- (toast) => toast.transitionStatus === "ending"
757
- );
758
- if (hasEndingToasts || touchActiveRef.current || !markedReadyForMouseLeaveRef.current) {
759
- return;
760
- }
761
- if (store.state.isWindowFocused) {
762
- store.resumeTimers();
763
- }
764
- store.setHovering(false);
765
- markedReadyForMouseLeaveRef.current = false;
766
- }
767
- (0, import_octane.useEffect)(flushMouseLeave, [hasTransitioningToasts, store], (0, import_internal.subSlot)(slot, "e:flushLeave"));
768
- function handleMouseEnter() {
769
- store.pauseTimers();
770
- store.setHovering(true);
771
- markedReadyForMouseLeaveRef.current = false;
772
- }
773
- function resumeTimersIfWindowFocused() {
774
- if (store.state.isWindowFocused) {
775
- store.resumeTimers();
776
- }
777
- }
778
- function handleMouseLeave() {
779
- const hasEndingToasts = store.state.toasts.some(
780
- (toast) => toast.transitionStatus === "ending"
781
- );
782
- if (hasEndingToasts || touchActiveRef.current) {
783
- markedReadyForMouseLeaveRef.current = true;
784
- } else {
785
- resumeTimersIfWindowFocused();
786
- store.setHovering(false);
787
- }
788
- }
789
- function handlePointerDown(event) {
790
- if (event.pointerType === "touch") {
791
- touchActiveRef.current = true;
792
- }
793
- }
794
- function handlePointerEnd(event) {
795
- if (event.pointerType !== "touch") {
796
- return;
797
- }
798
- touchActiveRef.current = false;
799
- flushMouseLeave();
800
- }
801
- function handleFocus() {
802
- if (handlingFocusGuardRef.current) {
803
- handlingFocusGuardRef.current = false;
804
- return;
805
- }
806
- if (focused) {
807
- return;
808
- }
809
- if ((0, import_matchesFocusVisible.matchesFocusVisible)((0, import_element.activeElement)((0, import_owner.ownerDocument)(store.state.viewport)))) {
810
- store.setFocused(true);
811
- store.pauseTimers();
812
- }
813
- }
814
- function handleBlur(event) {
815
- if (!focused || (0, import_element.contains)(store.state.viewport, event.relatedTarget)) {
816
- return;
817
- }
818
- store.setFocused(false);
819
- resumeTimersIfWindowFocused();
820
- }
821
- const defaultProps = {
822
- tabIndex: -1,
823
- role: "region",
824
- "aria-live": "polite",
825
- "aria-atomic": false,
826
- "aria-relevant": "additions text",
827
- "aria-label": "Notifications",
828
- onMouseEnter: handleMouseEnter,
829
- onMouseMove: handleMouseEnter,
830
- onMouseLeave: handleMouseLeave,
831
- onFocus: handleFocus,
832
- onBlur: handleBlur,
833
- onKeyDown: handleKeyDown,
834
- onClick: handleFocus,
835
- onPointerDown: handlePointerDown,
836
- onPointerUp: handlePointerEnd,
837
- onPointerCancel: handlePointerEnd
838
- };
839
- const state = {
840
- expanded
841
- };
842
- const showGuards = !isEmpty && Boolean(prevFocusElement);
843
- const element = (0, import_useRenderElement.useRenderElement)(
844
- "div",
845
- componentProps,
846
- {
847
- ref: [forwardedRef, store.setViewport],
848
- state,
849
- props: [
850
- defaultProps,
851
- {
852
- style: {
853
- [ToastViewportCssVars.frontmostHeight]: frontmostHeight ? `${frontmostHeight}px` : void 0
854
- }
855
- },
856
- elementProps,
857
- {
858
- children: [
859
- showGuards ? (0, import_octane.createElement)(import_FocusGuard.FocusGuard, { key: "guard-in-start", onFocus: handleFocusGuard }) : null,
860
- (0, import_octane.createElement)(import_octane.Fragment, { key: "children", children }),
861
- showGuards ? (0, import_octane.createElement)(import_FocusGuard.FocusGuard, { key: "guard-in-end", onFocus: handleFocusGuard }) : null
862
- ]
863
- }
864
- ]
865
- },
866
- (0, import_internal.subSlot)(slot, "re")
867
- );
868
- return [
869
- showGuards ? (0, import_octane.createElement)(import_FocusGuard.FocusGuard, { key: "guard-out-start", onFocus: handleFocusGuard }) : null,
870
- (0, import_octane.createElement)(import_octane.Fragment, { key: "viewport", children: element }),
871
- !focused && highPriorityToasts.length > 0 ? (0, import_octane.createElement)("div", {
872
- key: "live-region",
873
- style: import_visuallyHidden.visuallyHidden,
874
- children: highPriorityToasts.map(
875
- (toast) => (0, import_octane.createElement)("div", {
876
- key: toast.id,
877
- role: "alert",
878
- "aria-atomic": true,
879
- children: [
880
- (0, import_octane.createElement)("div", { key: "title", children: toast.title }),
881
- (0, import_octane.createElement)("div", { key: "description", children: toast.description })
882
- ]
883
- })
884
- )
885
- }) : null
886
- ];
887
- }
888
- const toastRootStateAttributesMapping = {
889
- ...import_useTransitionStatus.transitionStatusMapping,
890
- swipeDirection(value) {
891
- return value ? { "data-swipe-direction": value } : null;
892
- }
893
- };
894
- const SWIPE_THRESHOLD = 40;
895
- const REVERSE_CANCEL_THRESHOLD = 10;
896
- const OPPOSITE_DIRECTION_DAMPING_FACTOR = 0.5;
897
- const MIN_DRAG_THRESHOLD = 1;
898
- const TOAST_SWIPE_IGNORE_SELECTOR = `${import_constants.BASE_UI_SWIPE_IGNORE_SELECTOR},${import_constants.LEGACY_SWIPE_IGNORE_SELECTOR}`;
899
- function getDisplacement(direction, deltaX, deltaY) {
900
- switch (direction) {
901
- case "up":
902
- return -deltaY;
903
- case "down":
904
- return deltaY;
905
- case "left":
906
- return -deltaX;
907
- case "right":
908
- return deltaX;
909
- default:
910
- return 0;
911
- }
912
- }
913
- function getElementTransform(element) {
914
- const computedStyle = (0, import_owner.ownerWindow)(element).getComputedStyle(element);
915
- const transform = computedStyle.transform;
916
- let translateX = 0;
917
- let translateY = 0;
918
- let scale = 1;
919
- if (transform && transform !== "none") {
920
- const matrix = transform.match(/matrix(?:3d)?\(([^)]+)\)/);
921
- if (matrix) {
922
- const values = matrix[1].split(", ").map(parseFloat);
923
- if (values.length === 6) {
924
- translateX = values[4];
925
- translateY = values[5];
926
- scale = Math.sqrt(values[0] * values[0] + values[1] * values[1]);
927
- } else if (values.length === 16) {
928
- translateX = values[12];
929
- translateY = values[13];
930
- scale = values[0];
931
- }
932
- }
933
- }
934
- return { x: translateX, y: translateY, scale };
935
- }
936
- function ToastRoot(componentProps) {
937
- const slot = (0, import_internal.S)("ToastRoot");
938
- const {
939
- toast,
940
- render,
941
- className,
942
- swipeDirection = ["down", "right"],
943
- style,
944
- ref: forwardedRef,
945
- ...elementProps
946
- } = componentProps;
947
- const isAnchored = toast.positionerProps?.anchor !== void 0;
948
- let swipeDirections = [];
949
- if (!isAnchored) {
950
- swipeDirections = Array.isArray(swipeDirection) ? swipeDirection : [swipeDirection];
951
- }
952
- const swipeEnabled = swipeDirections.length > 0;
953
- const store = useToastProviderContext();
954
- const [currentSwipeDirection, setCurrentSwipeDirection] = (0, import_octane.useState)(
955
- void 0,
956
- (0, import_internal.subSlot)(slot, "csd")
957
- );
958
- const [isSwiping, setIsSwiping] = (0, import_octane.useState)(false, (0, import_internal.subSlot)(slot, "swiping"));
959
- const [isRealSwipe, setIsRealSwipe] = (0, import_octane.useState)(false, (0, import_internal.subSlot)(slot, "realSwipe"));
960
- const [dragDismissed, setDragDismissed] = (0, import_octane.useState)(false, (0, import_internal.subSlot)(slot, "dismissed"));
961
- const [dragOffset, setDragOffset] = (0, import_octane.useState)({ x: 0, y: 0 }, (0, import_internal.subSlot)(slot, "offset"));
962
- const [initialTransform, setInitialTransform] = (0, import_octane.useState)(
963
- { x: 0, y: 0, scale: 1 },
964
- (0, import_internal.subSlot)(slot, "initTransform")
965
- );
966
- const [titleId, setTitleId] = (0, import_octane.useState)(void 0, (0, import_internal.subSlot)(slot, "titleId"));
967
- const [descriptionId, setDescriptionId] = (0, import_octane.useState)(
968
- void 0,
969
- (0, import_internal.subSlot)(slot, "descId")
970
- );
971
- const [lockedDirection, setLockedDirection] = (0, import_octane.useState)(
972
- null,
973
- (0, import_internal.subSlot)(slot, "locked")
974
- );
975
- const rootRef = (0, import_octane.useRef)(null, (0, import_internal.subSlot)(slot, "root"));
976
- const dragStartPosRef = (0, import_octane.useRef)({ x: 0, y: 0 }, (0, import_internal.subSlot)(slot, "dragStart"));
977
- const initialTransformRef = (0, import_octane.useRef)({ x: 0, y: 0, scale: 1 }, (0, import_internal.subSlot)(slot, "itRef"));
978
- const intendedSwipeDirectionRef = (0, import_octane.useRef)(
979
- void 0,
980
- (0, import_internal.subSlot)(slot, "intended")
981
- );
982
- const maxSwipeDisplacementRef = (0, import_octane.useRef)(0, (0, import_internal.subSlot)(slot, "maxDisp"));
983
- const cancelledSwipeRef = (0, import_octane.useRef)(false, (0, import_internal.subSlot)(slot, "cancelled"));
984
- const swipeCancelBaselineRef = (0, import_octane.useRef)({ x: 0, y: 0 }, (0, import_internal.subSlot)(slot, "baseline"));
985
- const isFirstPointerMoveRef = (0, import_octane.useRef)(false, (0, import_internal.subSlot)(slot, "firstMove"));
986
- const dragOffsetRef = (0, import_octane.useRef)({ x: 0, y: 0 }, (0, import_internal.subSlot)(slot, "offsetRef"));
987
- const activePointerIdRef = (0, import_octane.useRef)(null, (0, import_internal.subSlot)(slot, "pointerId"));
988
- const dragAbortControllerRef = (0, import_octane.useRef)(null, (0, import_internal.subSlot)(slot, "abort"));
989
- const domIndex = store.useState("toastIndex", (0, import_internal.subSlot)(slot, "domIndex"), toast.id);
990
- const visibleIndex = store.useState("toastVisibleIndex", (0, import_internal.subSlot)(slot, "visIndex"), toast.id);
991
- const offsetY = store.useState("toastOffsetY", (0, import_internal.subSlot)(slot, "offsetY"), toast.id);
992
- const focused = store.useState("focused", (0, import_internal.subSlot)(slot, "focused"));
993
- const expanded = store.useState("expanded", (0, import_internal.subSlot)(slot, "expanded"));
994
- (0, import_useOpenChangeComplete.useOpenChangeComplete)(
995
- {
996
- open: toast.transitionStatus !== "ending",
997
- ref: rootRef,
998
- onComplete() {
999
- if (toast.transitionStatus === "ending") {
1000
- store.removeToast(toast.id);
1001
- }
1002
- }
1003
- },
1004
- (0, import_internal.subSlot)(slot, "occ")
1005
- );
1006
- const recalculateHeight = (0, import_useStableCallback.useStableCallback)(
1007
- (shouldFlush = false) => {
1008
- const element2 = rootRef.current;
1009
- if (!element2) {
1010
- return;
1011
- }
1012
- const previousHeight = element2.style.height;
1013
- element2.style.height = "auto";
1014
- const height = element2.offsetHeight;
1015
- element2.style.height = previousHeight;
1016
- function update() {
1017
- store.updateToastInternal(toast.id, {
1018
- ref: rootRef,
1019
- height,
1020
- ...toast.transitionStatus === "starting" ? { transitionStatus: void 0 } : {}
1021
- });
1022
- }
1023
- if (shouldFlush) {
1024
- (0, import_octane.flushSync)(update);
1025
- } else {
1026
- update();
1027
- }
1028
- },
1029
- (0, import_internal.subSlot)(slot, "recalc")
1030
- );
1031
- (0, import_octane.useLayoutEffect)(recalculateHeight, [recalculateHeight], (0, import_internal.subSlot)(slot, "e:recalc"));
1032
- function setResolvedDragOffset(nextDragOffset) {
1033
- dragOffsetRef.current = nextDragOffset;
1034
- setDragOffset(nextDragOffset);
1035
- }
1036
- (0, import_octane.useLayoutEffect)(
1037
- () => {
1038
- return () => {
1039
- dragAbortControllerRef.current?.abort();
1040
- };
1041
- },
1042
- [],
1043
- (0, import_internal.subSlot)(slot, "e:abort")
1044
- );
1045
- function applyDirectionalDamping(deltaX, deltaY) {
1046
- let newDeltaX = deltaX;
1047
- let newDeltaY = deltaY;
1048
- if (!swipeDirections.includes("left") && !swipeDirections.includes("right")) {
1049
- newDeltaX = deltaX > 0 ? deltaX ** OPPOSITE_DIRECTION_DAMPING_FACTOR : -(Math.abs(deltaX) ** OPPOSITE_DIRECTION_DAMPING_FACTOR);
1050
- } else {
1051
- if (!swipeDirections.includes("right") && deltaX > 0) {
1052
- newDeltaX = deltaX ** OPPOSITE_DIRECTION_DAMPING_FACTOR;
1053
- }
1054
- if (!swipeDirections.includes("left") && deltaX < 0) {
1055
- newDeltaX = -(Math.abs(deltaX) ** OPPOSITE_DIRECTION_DAMPING_FACTOR);
1056
- }
1057
- }
1058
- if (!swipeDirections.includes("up") && !swipeDirections.includes("down")) {
1059
- newDeltaY = deltaY > 0 ? deltaY ** OPPOSITE_DIRECTION_DAMPING_FACTOR : -(Math.abs(deltaY) ** OPPOSITE_DIRECTION_DAMPING_FACTOR);
1060
- } else {
1061
- if (!swipeDirections.includes("down") && deltaY > 0) {
1062
- newDeltaY = deltaY ** OPPOSITE_DIRECTION_DAMPING_FACTOR;
1063
- }
1064
- if (!swipeDirections.includes("up") && deltaY < 0) {
1065
- newDeltaY = -(Math.abs(deltaY) ** OPPOSITE_DIRECTION_DAMPING_FACTOR);
1066
- }
1067
- }
1068
- return { x: newDeltaX, y: newDeltaY };
1069
- }
1070
- const handleSwipeEnd = (0, import_useStableCallback.useStableCallback)(
1071
- (event) => {
1072
- if (event.pointerId !== activePointerIdRef.current) {
1073
- return;
1074
- }
1075
- activePointerIdRef.current = null;
1076
- dragAbortControllerRef.current?.abort();
1077
- dragAbortControllerRef.current = null;
1078
- setIsSwiping(false);
1079
- setIsRealSwipe(false);
1080
- setLockedDirection(null);
1081
- const resolvedInitialTransform = initialTransformRef.current;
1082
- if (event.type === "pointercancel" || cancelledSwipeRef.current) {
1083
- setResolvedDragOffset({ x: resolvedInitialTransform.x, y: resolvedInitialTransform.y });
1084
- setCurrentSwipeDirection(void 0);
1085
- return;
1086
- }
1087
- let shouldClose = false;
1088
- const resolvedDragOffset = dragOffsetRef.current;
1089
- const deltaX = resolvedDragOffset.x - resolvedInitialTransform.x;
1090
- const deltaY = resolvedDragOffset.y - resolvedInitialTransform.y;
1091
- let dismissDirection;
1092
- for (const direction of swipeDirections) {
1093
- switch (direction) {
1094
- case "right":
1095
- if (deltaX > SWIPE_THRESHOLD) {
1096
- shouldClose = true;
1097
- dismissDirection = "right";
1098
- }
1099
- break;
1100
- case "left":
1101
- if (deltaX < -SWIPE_THRESHOLD) {
1102
- shouldClose = true;
1103
- dismissDirection = "left";
1104
- }
1105
- break;
1106
- case "down":
1107
- if (deltaY > SWIPE_THRESHOLD) {
1108
- shouldClose = true;
1109
- dismissDirection = "down";
1110
- }
1111
- break;
1112
- case "up":
1113
- if (deltaY < -SWIPE_THRESHOLD) {
1114
- shouldClose = true;
1115
- dismissDirection = "up";
1116
- }
1117
- break;
1118
- default:
1119
- break;
1120
- }
1121
- if (shouldClose) {
1122
- break;
1123
- }
1124
- }
1125
- if (shouldClose) {
1126
- setCurrentSwipeDirection(dismissDirection);
1127
- setDragDismissed(true);
1128
- store.closeToast(toast.id);
1129
- } else {
1130
- setResolvedDragOffset({ x: resolvedInitialTransform.x, y: resolvedInitialTransform.y });
1131
- setCurrentSwipeDirection(void 0);
1132
- }
1133
- },
1134
- (0, import_internal.subSlot)(slot, "swipeEnd")
1135
- );
1136
- function handlePointerDown(event) {
1137
- if (event.button !== 0) {
1138
- return;
1139
- }
1140
- if (event.pointerType === "touch") {
1141
- store.pauseTimers();
1142
- }
1143
- const target = (0, import_list_utils.getTarget)(event);
1144
- const isInteractiveElement = target ? target.closest(`button,a,input,textarea,[role="button"],${TOAST_SWIPE_IGNORE_SELECTOR}`) : false;
1145
- if (isInteractiveElement) {
1146
- return;
1147
- }
1148
- cancelledSwipeRef.current = false;
1149
- intendedSwipeDirectionRef.current = void 0;
1150
- maxSwipeDisplacementRef.current = 0;
1151
- activePointerIdRef.current = event.pointerId;
1152
- dragStartPosRef.current = { x: event.clientX, y: event.clientY };
1153
- swipeCancelBaselineRef.current = dragStartPosRef.current;
1154
- if (rootRef.current) {
1155
- const transform = getElementTransform(rootRef.current);
1156
- initialTransformRef.current = transform;
1157
- setInitialTransform(transform);
1158
- setResolvedDragOffset({
1159
- x: transform.x,
1160
- y: transform.y
1161
- });
1162
- }
1163
- store.setHovering(true);
1164
- setIsSwiping(true);
1165
- setIsRealSwipe(false);
1166
- setLockedDirection(null);
1167
- isFirstPointerMoveRef.current = true;
1168
- const element2 = rootRef.current;
1169
- if (element2) {
1170
- dragAbortControllerRef.current?.abort();
1171
- const dragAbortController = new AbortController();
1172
- dragAbortControllerRef.current = dragAbortController;
1173
- const doc = (0, import_owner.ownerDocument)(element2);
1174
- doc.addEventListener("pointerup", handleSwipeEnd, {
1175
- signal: dragAbortController.signal
1176
- });
1177
- doc.addEventListener("pointercancel", handleSwipeEnd, {
1178
- signal: dragAbortController.signal
1179
- });
1180
- element2.setPointerCapture?.(event.pointerId);
1181
- }
1182
- }
1183
- function handlePointerMove(event) {
1184
- if (event.pointerId !== activePointerIdRef.current) {
1185
- return;
1186
- }
1187
- event.preventDefault();
1188
- if (isFirstPointerMoveRef.current) {
1189
- dragStartPosRef.current = { x: event.clientX, y: event.clientY };
1190
- isFirstPointerMoveRef.current = false;
1191
- }
1192
- const { clientY, clientX, movementX, movementY } = event;
1193
- if (movementY < 0 && clientY > swipeCancelBaselineRef.current.y || movementY > 0 && clientY < swipeCancelBaselineRef.current.y) {
1194
- swipeCancelBaselineRef.current = { x: swipeCancelBaselineRef.current.x, y: clientY };
1195
- }
1196
- if (movementX < 0 && clientX > swipeCancelBaselineRef.current.x || movementX > 0 && clientX < swipeCancelBaselineRef.current.x) {
1197
- swipeCancelBaselineRef.current = { x: clientX, y: swipeCancelBaselineRef.current.y };
1198
- }
1199
- const deltaX = clientX - dragStartPosRef.current.x;
1200
- const deltaY = clientY - dragStartPosRef.current.y;
1201
- const cancelDeltaY = clientY - swipeCancelBaselineRef.current.y;
1202
- const cancelDeltaX = clientX - swipeCancelBaselineRef.current.x;
1203
- if (!isRealSwipe) {
1204
- const movementDistance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
1205
- if (movementDistance >= MIN_DRAG_THRESHOLD) {
1206
- setIsRealSwipe(true);
1207
- if (lockedDirection === null) {
1208
- const hasHorizontal = swipeDirections.includes("left") || swipeDirections.includes("right");
1209
- const hasVertical = swipeDirections.includes("up") || swipeDirections.includes("down");
1210
- if (hasHorizontal && hasVertical) {
1211
- const absX = Math.abs(deltaX);
1212
- const absY = Math.abs(deltaY);
1213
- setLockedDirection(absX > absY ? "horizontal" : "vertical");
1214
- }
1215
- }
1216
- }
1217
- }
1218
- let candidate;
1219
- if (!intendedSwipeDirectionRef.current) {
1220
- if (lockedDirection === "vertical") {
1221
- if (deltaY > 0) {
1222
- candidate = "down";
1223
- } else if (deltaY < 0) {
1224
- candidate = "up";
1225
- }
1226
- } else if (lockedDirection === "horizontal") {
1227
- if (deltaX > 0) {
1228
- candidate = "right";
1229
- } else if (deltaX < 0) {
1230
- candidate = "left";
1231
- }
1232
- } else if (Math.abs(deltaX) >= Math.abs(deltaY)) {
1233
- candidate = deltaX > 0 ? "right" : "left";
1234
- } else {
1235
- candidate = deltaY > 0 ? "down" : "up";
1236
- }
1237
- if (candidate && swipeDirections.includes(candidate)) {
1238
- intendedSwipeDirectionRef.current = candidate;
1239
- maxSwipeDisplacementRef.current = getDisplacement(candidate, deltaX, deltaY);
1240
- setCurrentSwipeDirection(candidate);
1241
- }
1242
- } else {
1243
- const direction = intendedSwipeDirectionRef.current;
1244
- const currentDisplacement = getDisplacement(direction, cancelDeltaX, cancelDeltaY);
1245
- if (currentDisplacement > SWIPE_THRESHOLD) {
1246
- cancelledSwipeRef.current = false;
1247
- setCurrentSwipeDirection(direction);
1248
- } else if (!(swipeDirections.includes("left") && swipeDirections.includes("right")) && !(swipeDirections.includes("up") && swipeDirections.includes("down")) && maxSwipeDisplacementRef.current - currentDisplacement >= REVERSE_CANCEL_THRESHOLD) {
1249
- cancelledSwipeRef.current = true;
1250
- }
1251
- }
1252
- const dampedDelta = applyDirectionalDamping(deltaX, deltaY);
1253
- let newOffsetX = initialTransformRef.current.x;
1254
- let newOffsetY = initialTransformRef.current.y;
1255
- if (lockedDirection === "horizontal") {
1256
- if (swipeDirections.includes("left") || swipeDirections.includes("right")) {
1257
- newOffsetX += dampedDelta.x;
1258
- }
1259
- } else if (lockedDirection === "vertical") {
1260
- if (swipeDirections.includes("up") || swipeDirections.includes("down")) {
1261
- newOffsetY += dampedDelta.y;
1262
- }
1263
- } else {
1264
- if (swipeDirections.includes("left") || swipeDirections.includes("right")) {
1265
- newOffsetX += dampedDelta.x;
1266
- }
1267
- if (swipeDirections.includes("up") || swipeDirections.includes("down")) {
1268
- newOffsetY += dampedDelta.y;
1269
- }
1270
- }
1271
- setResolvedDragOffset({ x: newOffsetX, y: newOffsetY });
1272
- }
1273
- function handleKeyDown(event) {
1274
- if (event.key === "Escape") {
1275
- if (!rootRef.current || !(0, import_element.contains)(rootRef.current, (0, import_element.activeElement)((0, import_owner.ownerDocument)(rootRef.current)))) {
1276
- return;
1277
- }
1278
- store.closeToast(toast.id);
1279
- }
1280
- }
1281
- (0, import_octane.useEffect)(
1282
- () => {
1283
- if (!swipeEnabled) {
1284
- return void 0;
1285
- }
1286
- const element2 = rootRef.current;
1287
- if (!element2) {
1288
- return void 0;
1289
- }
1290
- function preventDefaultTouchStart(event) {
1291
- if (activePointerIdRef.current === null || !(0, import_element.contains)(element2, (0, import_list_utils.getTarget)(event))) {
1292
- return;
1293
- }
1294
- event.preventDefault();
1295
- }
1296
- return (0, import_addEventListener.addEventListener)(element2, "touchmove", preventDefaultTouchStart, {
1297
- passive: false
1298
- });
1299
- },
1300
- [swipeEnabled],
1301
- (0, import_internal.subSlot)(slot, "e:touchmove")
1302
- );
1303
- function getDragStyles() {
1304
- if (!isSwiping && dragOffset.x === initialTransform.x && dragOffset.y === initialTransform.y && !dragDismissed) {
1305
- return {
1306
- [ToastRootCssVars.swipeMovementX]: "0px",
1307
- [ToastRootCssVars.swipeMovementY]: "0px"
1308
- };
1309
- }
1310
- const deltaX = dragOffset.x - initialTransform.x;
1311
- const deltaY = dragOffset.y - initialTransform.y;
1312
- return {
1313
- transition: isSwiping ? "none" : void 0,
1314
- // While swiping, freeze the element at its current visual transform so it doesn't snap
1315
- // to the end position.
1316
- transform: isSwiping ? `translateX(${dragOffset.x}px) translateY(${dragOffset.y}px) scale(${initialTransform.scale})` : void 0,
1317
- [ToastRootCssVars.swipeMovementX]: `${deltaX}px`,
1318
- [ToastRootCssVars.swipeMovementY]: `${deltaY}px`
1319
- };
1320
- }
1321
- const isHighPriority = toast.priority === "high";
1322
- const defaultProps = {
1323
- role: isHighPriority ? "alertdialog" : "dialog",
1324
- tabIndex: 0,
1325
- "aria-modal": false,
1326
- "aria-labelledby": titleId,
1327
- "aria-describedby": descriptionId,
1328
- "aria-hidden": isHighPriority && !focused ? true : void 0,
1329
- onPointerDown: swipeEnabled ? handlePointerDown : void 0,
1330
- onPointerMove: swipeEnabled ? handlePointerMove : void 0,
1331
- onPointerUp: swipeEnabled ? handleSwipeEnd : void 0,
1332
- onPointerCancel: swipeEnabled ? handleSwipeEnd : void 0,
1333
- onKeyDown: handleKeyDown,
1334
- inert: (0, import_inertValue.inertValue)(toast.limited),
1335
- style: {
1336
- ...getDragStyles(),
1337
- [ToastRootCssVars.index]: toast.transitionStatus === "ending" ? domIndex : visibleIndex,
1338
- [ToastRootCssVars.offsetY]: `${offsetY}px`,
1339
- [ToastRootCssVars.height]: toast.height ? `${toast.height}px` : void 0
1340
- }
1341
- };
1342
- const toastRoot = (0, import_octane.useMemo)(
1343
- () => ({
1344
- rootRef,
1345
- toast,
1346
- titleId,
1347
- setTitleId,
1348
- descriptionId,
1349
- setDescriptionId,
1350
- swiping: isSwiping,
1351
- swipeDirection: currentSwipeDirection,
1352
- recalculateHeight,
1353
- index: domIndex,
1354
- visibleIndex,
1355
- expanded
1356
- }),
1357
- [
1358
- toast,
1359
- titleId,
1360
- descriptionId,
1361
- isSwiping,
1362
- currentSwipeDirection,
1363
- recalculateHeight,
1364
- domIndex,
1365
- visibleIndex,
1366
- expanded
1367
- ],
1368
- (0, import_internal.subSlot)(slot, "ctx")
1369
- );
1370
- const state = {
1371
- transitionStatus: toast.transitionStatus,
1372
- expanded,
1373
- limited: toast.limited || false,
1374
- type: toast.type,
1375
- swiping: toastRoot.swiping,
1376
- swipeDirection: toastRoot.swipeDirection
1377
- };
1378
- const element = (0, import_useRenderElement.useRenderElement)(
1379
- "div",
1380
- componentProps,
1381
- {
1382
- ref: [forwardedRef, toastRoot.rootRef],
1383
- state,
1384
- stateAttributesMapping: toastRootStateAttributesMapping,
1385
- props: [defaultProps, elementProps]
1386
- },
1387
- (0, import_internal.subSlot)(slot, "re")
1388
- );
1389
- return (0, import_octane.createElement)(ToastRootContext.Provider, { value: toastRoot, children: element });
1390
- }
1391
- function ToastTitle(componentProps) {
1392
- const slot = (0, import_internal.S)("ToastTitle");
1393
- const {
1394
- render,
1395
- className,
1396
- style,
1397
- id: idProp,
1398
- children: childrenProp,
1399
- ref: forwardedRef,
1400
- ...elementProps
1401
- } = componentProps;
1402
- const { toast, setTitleId } = useToastRootContext();
1403
- const children = childrenProp ?? toast.title;
1404
- const shouldRender = Boolean(children);
1405
- const generatedId = (0, import_octane.useId)((0, import_internal.subSlot)(slot, "id"));
1406
- const id = idProp ?? generatedId;
1407
- (0, import_octane.useLayoutEffect)(
1408
- () => {
1409
- if (!shouldRender) {
1410
- return void 0;
1411
- }
1412
- setTitleId(id);
1413
- return () => {
1414
- setTitleId(void 0);
1415
- };
1416
- },
1417
- [shouldRender, id, setTitleId],
1418
- (0, import_internal.subSlot)(slot, "e")
1419
- );
1420
- const state = {
1421
- type: toast.type
1422
- };
1423
- const element = (0, import_useRenderElement.useRenderElement)(
1424
- "h2",
1425
- componentProps,
1426
- {
1427
- ref: forwardedRef,
1428
- state,
1429
- props: {
1430
- ...elementProps,
1431
- id,
1432
- children
1433
- }
1434
- },
1435
- (0, import_internal.subSlot)(slot, "re")
1436
- );
1437
- if (!shouldRender) {
1438
- return null;
1439
- }
1440
- return element;
1441
- }
1442
- function ToastDescription(componentProps) {
1443
- const slot = (0, import_internal.S)("ToastDescription");
1444
- const {
1445
- render,
1446
- className,
1447
- style,
1448
- id: idProp,
1449
- children: childrenProp,
1450
- ref: forwardedRef,
1451
- ...elementProps
1452
- } = componentProps;
1453
- const { toast, setDescriptionId } = useToastRootContext();
1454
- const children = childrenProp ?? toast.description;
1455
- const shouldRender = Boolean(children);
1456
- const generatedId = (0, import_octane.useId)((0, import_internal.subSlot)(slot, "id"));
1457
- const id = idProp ?? generatedId;
1458
- (0, import_octane.useLayoutEffect)(
1459
- () => {
1460
- if (!shouldRender) {
1461
- return void 0;
1462
- }
1463
- setDescriptionId(id);
1464
- return () => {
1465
- setDescriptionId(void 0);
1466
- };
1467
- },
1468
- [shouldRender, id, setDescriptionId],
1469
- (0, import_internal.subSlot)(slot, "e")
1470
- );
1471
- const state = {
1472
- type: toast.type
1473
- };
1474
- const element = (0, import_useRenderElement.useRenderElement)(
1475
- "p",
1476
- componentProps,
1477
- {
1478
- ref: forwardedRef,
1479
- state,
1480
- props: {
1481
- ...elementProps,
1482
- id,
1483
- children
1484
- }
1485
- },
1486
- (0, import_internal.subSlot)(slot, "re")
1487
- );
1488
- if (!shouldRender) {
1489
- return null;
1490
- }
1491
- return element;
1492
- }
1493
- function ToastContent(componentProps) {
1494
- const slot = (0, import_internal.S)("ToastContent");
1495
- const { render, className, style, ref: forwardedRef, ...elementProps } = componentProps;
1496
- const { visibleIndex, expanded, recalculateHeight } = useToastRootContext();
1497
- const contentRef = (0, import_octane.useRef)(null, (0, import_internal.subSlot)(slot, "content"));
1498
- (0, import_octane.useLayoutEffect)(
1499
- () => {
1500
- const node = contentRef.current;
1501
- if (!node) {
1502
- return void 0;
1503
- }
1504
- recalculateHeight();
1505
- if (typeof ResizeObserver !== "function" || typeof MutationObserver !== "function") {
1506
- return void 0;
1507
- }
1508
- const resizeObserver = new ResizeObserver(() => recalculateHeight(true));
1509
- const mutationObserver = new MutationObserver(() => recalculateHeight(true));
1510
- resizeObserver.observe(node);
1511
- mutationObserver.observe(node, { childList: true, subtree: true, characterData: true });
1512
- return () => {
1513
- resizeObserver.disconnect();
1514
- mutationObserver.disconnect();
1515
- };
1516
- },
1517
- [recalculateHeight],
1518
- (0, import_internal.subSlot)(slot, "e")
1519
- );
1520
- const behind = visibleIndex > 0;
1521
- const state = {
1522
- expanded,
1523
- behind
1524
- };
1525
- return (0, import_useRenderElement.useRenderElement)(
1526
- "div",
1527
- componentProps,
1528
- {
1529
- ref: [forwardedRef, contentRef],
1530
- state,
1531
- props: elementProps
1532
- },
1533
- (0, import_internal.subSlot)(slot, "re")
1534
- );
1535
- }
1536
- function ToastClose(componentProps) {
1537
- const slot = (0, import_internal.S)("ToastClose");
1538
- const {
1539
- render,
1540
- className,
1541
- style,
1542
- disabled,
1543
- nativeButton = true,
1544
- ref: forwardedRef,
1545
- ...elementProps
1546
- } = componentProps;
1547
- const store = useToastProviderContext();
1548
- const { toast } = useToastRootContext();
1549
- const expanded = store.useState("expanded", (0, import_internal.subSlot)(slot, "expanded"));
1550
- const [hasFocus, setHasFocus] = (0, import_octane.useState)(false, (0, import_internal.subSlot)(slot, "focus"));
1551
- const { getButtonProps, buttonRef } = (0, import_useButton.useButton)(
1552
- { disabled, native: nativeButton },
1553
- (0, import_internal.subSlot)(slot, "btn")
1554
- );
1555
- const state = {
1556
- type: toast.type
1557
- };
1558
- return (0, import_useRenderElement.useRenderElement)(
1559
- "button",
1560
- componentProps,
1561
- {
1562
- ref: [forwardedRef, buttonRef],
1563
- state,
1564
- props: [
1565
- {
1566
- "aria-hidden": !expanded && !hasFocus,
1567
- onClick() {
1568
- store.closeToast(toast.id);
1569
- },
1570
- onFocus() {
1571
- setHasFocus(true);
1572
- },
1573
- onBlur() {
1574
- setHasFocus(false);
1575
- }
1576
- },
1577
- elementProps,
1578
- getButtonProps
1579
- ]
1580
- },
1581
- (0, import_internal.subSlot)(slot, "re")
1582
- );
1583
- }
1584
- function ToastAction(componentProps) {
1585
- const slot = (0, import_internal.S)("ToastAction");
1586
- const {
1587
- render,
1588
- className,
1589
- style,
1590
- disabled,
1591
- nativeButton = true,
1592
- ref: forwardedRef,
1593
- ...elementProps
1594
- } = componentProps;
1595
- const { toast } = useToastRootContext();
1596
- const computedChildren = toast.actionProps?.children ?? elementProps.children;
1597
- const shouldRender = Boolean(computedChildren);
1598
- const { getButtonProps, buttonRef } = (0, import_useButton.useButton)(
1599
- { disabled, native: nativeButton },
1600
- (0, import_internal.subSlot)(slot, "btn")
1601
- );
1602
- const state = {
1603
- type: toast.type
1604
- };
1605
- const element = (0, import_useRenderElement.useRenderElement)(
1606
- "button",
1607
- componentProps,
1608
- {
1609
- ref: [forwardedRef, buttonRef],
1610
- state,
1611
- props: [
1612
- elementProps,
1613
- toast.actionProps,
1614
- getButtonProps,
1615
- {
1616
- children: computedChildren
1617
- }
1618
- ]
1619
- },
1620
- (0, import_internal.subSlot)(slot, "re")
1621
- );
1622
- if (!shouldRender) {
1623
- return null;
1624
- }
1625
- return element;
1626
- }
1627
- function ToastPositioner(componentProps) {
1628
- const slot = (0, import_internal.S)("ToastPositioner");
1629
- const { toast, ...props } = componentProps;
1630
- const store = useToastProviderContext();
1631
- const positionerProps = toast.positionerProps ?? import_empty.EMPTY_OBJECT;
1632
- const {
1633
- render,
1634
- className,
1635
- anchor: anchorProp = positionerProps.anchor,
1636
- positionMethod = positionerProps.positionMethod ?? "absolute",
1637
- side = positionerProps.side ?? "top",
1638
- align = positionerProps.align ?? "center",
1639
- sideOffset = positionerProps.sideOffset ?? 0,
1640
- alignOffset = positionerProps.alignOffset ?? 0,
1641
- collisionBoundary = positionerProps.collisionBoundary ?? "clipping-ancestors",
1642
- collisionPadding = positionerProps.collisionPadding ?? 5,
1643
- arrowPadding = positionerProps.arrowPadding ?? 5,
1644
- sticky = positionerProps.sticky ?? false,
1645
- disableAnchorTracking = positionerProps.disableAnchorTracking ?? false,
1646
- collisionAvoidance = positionerProps.collisionAvoidance ?? import_constants.POPUP_COLLISION_AVOIDANCE,
1647
- style,
1648
- ref: forwardedRef,
1649
- ...elementProps
1650
- } = props;
1651
- const [positionerElement, setPositionerElement] = (0, import_octane.useState)(
1652
- null,
1653
- (0, import_internal.subSlot)(slot, "el")
1654
- );
1655
- const domIndex = store.useState("toastIndex", (0, import_internal.subSlot)(slot, "domIndex"), toast.id);
1656
- const visibleIndex = store.useState("toastVisibleIndex", (0, import_internal.subSlot)(slot, "visIndex"), toast.id);
1657
- const anchor = (0, import_dom.isElement)(anchorProp) ? anchorProp : null;
1658
- const floatingRootContext = (0, import_useFloatingRootContext.useFloatingRootContext)(
1659
- {
1660
- open: true,
1661
- onOpenChange: import_noop.NOOP,
1662
- elements: {
1663
- floating: positionerElement,
1664
- reference: anchor
1665
- }
1666
- },
1667
- (0, import_internal.subSlot)(slot, "frc")
1668
- );
1669
- const positioning = (0, import_useAnchorPositioning.useAnchorPositioning)(
1670
- {
1671
- anchor,
1672
- positionMethod,
1673
- floatingRootContext,
1674
- mounted: true,
1675
- side,
1676
- sideOffset,
1677
- align,
1678
- alignOffset,
1679
- collisionBoundary,
1680
- collisionPadding,
1681
- sticky,
1682
- arrowPadding,
1683
- disableAnchorTracking,
1684
- keepMounted: true,
1685
- collisionAvoidance
1686
- },
1687
- (0, import_internal.subSlot)(slot, "positioning")
1688
- );
1689
- const state = (0, import_octane.useMemo)(
1690
- () => ({
1691
- side: positioning.side,
1692
- align: positioning.align,
1693
- anchorHidden: positioning.anchorHidden
1694
- }),
1695
- [positioning.side, positioning.align, positioning.anchorHidden],
1696
- (0, import_internal.subSlot)(slot, "state")
1697
- );
1698
- const element = (0, import_usePositioner.usePositioner)(
1699
- componentProps,
1700
- state,
1701
- {
1702
- styles: {
1703
- ...positioning.positionerStyles,
1704
- [ToastRootCssVars.index]: toast.transitionStatus === "ending" ? domIndex : visibleIndex
1705
- },
1706
- transitionStatus: toast.transitionStatus,
1707
- props: elementProps,
1708
- refs: [forwardedRef, setPositionerElement]
1709
- },
1710
- (0, import_internal.subSlot)(slot, "positioner")
1711
- );
1712
- return (0, import_octane.createElement)(ToastPositionerContext.Provider, {
1713
- value: positioning,
1714
- children: element
1715
- });
1716
- }
1717
- function ToastArrow(componentProps) {
1718
- const slot = (0, import_internal.S)("ToastArrow");
1719
- const { className, render, style, ref: forwardedRef, ...elementProps } = componentProps;
1720
- const { arrowRef, side, align, arrowUncentered, arrowStyles } = useToastPositionerContext();
1721
- const state = {
1722
- side,
1723
- align,
1724
- uncentered: arrowUncentered
1725
- };
1726
- return (0, import_useRenderElement.useRenderElement)(
1727
- "div",
1728
- componentProps,
1729
- {
1730
- state,
1731
- ref: [forwardedRef, arrowRef],
1732
- props: [{ style: arrowStyles, "aria-hidden": true }, elementProps]
1733
- },
1734
- (0, import_internal.subSlot)(slot, "re")
1735
- );
1736
- }
1737
- const Toast = {
1738
- Provider: ToastProvider,
1739
- Viewport: ToastViewport,
1740
- Root: ToastRoot,
1741
- Content: ToastContent,
1742
- Description: ToastDescription,
1743
- Title: ToastTitle,
1744
- Close: ToastClose,
1745
- Action: ToastAction,
1746
- Portal: import_FloatingPortalLite.FloatingPortalLite,
1747
- Positioner: ToastPositioner,
1748
- Arrow: ToastArrow,
1749
- useToastManager,
1750
- createToastManager
1751
- };
1752
- // Annotate the CommonJS export names for ESM import in node:
1753
- 0 && (module.exports = {
1754
- Toast,
1755
- ToastPositionerCssVars,
1756
- ToastRootCssVars,
1757
- ToastStore,
1758
- ToastViewportCssVars,
1759
- createToastManager,
1760
- resolvePromiseOptions,
1761
- toastSelectors,
1762
- useToastManager,
1763
- useToastPositionerContext,
1764
- useToastProviderContext,
1765
- useToastRootContext
1766
- });