@astryxdesign/core 0.7.7 → 0.7.8-canary.0d54fd3

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 (682) hide show
  1. package/dist/AlertDialog/AlertDialog.d.ts +4 -1
  2. package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
  3. package/dist/AlertDialog/AlertDialog.js +46 -6
  4. package/dist/AppShell/AppShell.d.ts.map +1 -1
  5. package/dist/AppShell/AppShell.js +11 -3
  6. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
  7. package/dist/BottomSheet/BottomSheet.js +1 -0
  8. package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
  9. package/dist/BottomSheet/BottomSheetPanel.js +25 -4
  10. package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
  11. package/dist/BottomSheet/BottomSheetSwitcher.js +5 -0
  12. package/dist/BottomSheet/useMobileKeyboard.d.ts.map +1 -1
  13. package/dist/BottomSheet/useMobileKeyboard.js +6 -0
  14. package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
  15. package/dist/BottomSheet/useSheetGestures.js +12 -1
  16. package/dist/Button/Button.d.ts.map +1 -1
  17. package/dist/Button/Button.js +17 -1
  18. package/dist/Calendar/Calendar.d.ts.map +1 -1
  19. package/dist/Calendar/Calendar.js +18 -22
  20. package/dist/Calendar/getWeekdayHeaderNames.d.ts +16 -0
  21. package/dist/Calendar/getWeekdayHeaderNames.d.ts.map +1 -0
  22. package/dist/Calendar/getWeekdayHeaderNames.js +70 -0
  23. package/dist/Calendar/hooks/useCalendarDays.d.ts.map +1 -1
  24. package/dist/Calendar/hooks/useCalendarDays.js +2 -10
  25. package/dist/Calendar/{standaloneShortWeekdayNames.generated.d.ts → weekdayHeaderNames.generated.d.ts} +14 -14
  26. package/dist/Calendar/weekdayHeaderNames.generated.d.ts.map +1 -0
  27. package/dist/Calendar/{standaloneShortWeekdayNames.generated.js → weekdayHeaderNames.generated.js} +12 -12
  28. package/dist/Carousel/Carousel.d.ts.map +1 -1
  29. package/dist/Carousel/Carousel.js +2 -0
  30. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  31. package/dist/Chat/ChatComposerInput.js +6 -1
  32. package/dist/Chat/ChatMessageList.d.ts.map +1 -1
  33. package/dist/Chat/ChatMessageList.js +2 -1
  34. package/dist/Chat/useChatDictation.d.ts.map +1 -1
  35. package/dist/Chat/useChatDictation.js +2 -0
  36. package/dist/Chat/useChatNewMessages.js +1 -1
  37. package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
  38. package/dist/Chat/useChatStreamScroll.js +2 -0
  39. package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
  40. package/dist/Chat/useSpeechRecognition.js +3 -0
  41. package/dist/Chat/useTriggerMenu.js +1 -1
  42. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  43. package/dist/CheckboxInput/CheckboxInput.js +17 -12
  44. package/dist/CheckboxList/CheckboxList.d.ts +8 -1
  45. package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
  46. package/dist/CheckboxList/CheckboxList.js +2 -0
  47. package/dist/CodeBlock/CodeBlock.d.ts +10 -1
  48. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  49. package/dist/CodeBlock/CodeBlock.js +28 -11
  50. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  51. package/dist/CommandPalette/CommandPalette.js +2 -0
  52. package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
  53. package/dist/CommandPalette/CommandPaletteItem.js +2 -0
  54. package/dist/ComplexSelector/ComplexSelector.d.ts +4 -1
  55. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  56. package/dist/ComplexSelector/ComplexSelector.js +14 -4
  57. package/dist/ContextMenu/ContextMenu.js +2 -2
  58. package/dist/DateInput/MonthScroller.d.ts.map +1 -1
  59. package/dist/DateInput/MonthScroller.js +5 -2
  60. package/dist/DateInput/PickerWheel.d.ts +19 -0
  61. package/dist/DateInput/PickerWheel.d.ts.map +1 -0
  62. package/dist/DateInput/PickerWheel.js +625 -0
  63. package/dist/DateInput/TouchDateField.d.ts.map +1 -1
  64. package/dist/DateInput/TouchDateField.js +9 -30
  65. package/dist/DateInput/Wheel.d.ts +18 -37
  66. package/dist/DateInput/Wheel.d.ts.map +1 -1
  67. package/dist/DateInput/Wheel.js +84 -113
  68. package/dist/DateInput/useOwnScrollGesture.d.ts +10 -0
  69. package/dist/DateInput/useOwnScrollGesture.d.ts.map +1 -1
  70. package/dist/DateInput/useOwnScrollGesture.js +16 -3
  71. package/dist/DateInput/usePointerDragScroll.d.ts.map +1 -1
  72. package/dist/DateInput/usePointerDragScroll.js +2 -0
  73. package/dist/DateInput/useScrollSettle.d.ts.map +1 -1
  74. package/dist/DateInput/useScrollSettle.js +3 -0
  75. package/dist/DateInput/useWheelListbox.d.ts +59 -0
  76. package/dist/DateInput/useWheelListbox.d.ts.map +1 -0
  77. package/dist/DateInput/useWheelListbox.js +88 -0
  78. package/dist/DateInput/wheelOptions.d.ts +74 -0
  79. package/dist/DateInput/wheelOptions.d.ts.map +1 -0
  80. package/dist/DateInput/wheelOptions.js +98 -0
  81. package/dist/DateInput/wheelPhysics.d.ts +127 -0
  82. package/dist/DateInput/wheelPhysics.d.ts.map +1 -0
  83. package/dist/DateInput/wheelPhysics.js +341 -0
  84. package/dist/DateInput/wheelStrip.d.ts +92 -0
  85. package/dist/DateInput/wheelStrip.d.ts.map +1 -0
  86. package/dist/DateInput/wheelStrip.js +258 -0
  87. package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -1
  88. package/dist/DateTimeInput/TouchDateTimeField.js +10 -10
  89. package/dist/Dialog/Dialog.d.ts.map +1 -1
  90. package/dist/Dialog/Dialog.js +9 -32
  91. package/dist/Drawer/useDrawerDialogPresence.d.ts.map +1 -1
  92. package/dist/Drawer/useDrawerDialogPresence.js +3 -0
  93. package/dist/DropdownMenu/useMenuOverflow.d.ts.map +1 -1
  94. package/dist/DropdownMenu/useMenuOverflow.js +5 -0
  95. package/dist/Field/Field.js +2 -2
  96. package/dist/FieldStatus/useFieldStatusAnnouncement.d.ts.map +1 -1
  97. package/dist/FieldStatus/useFieldStatusAnnouncement.js +1 -0
  98. package/dist/FormLayout/FormLayout.d.ts +5 -1
  99. package/dist/FormLayout/FormLayout.d.ts.map +1 -1
  100. package/dist/HoverCard/HoverCard.d.ts +6 -4
  101. package/dist/HoverCard/HoverCard.d.ts.map +1 -1
  102. package/dist/HoverCard/HoverCard.js +48 -3
  103. package/dist/HoverCard/useHoverCard.d.ts +5 -4
  104. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  105. package/dist/HoverCard/useHoverCard.js +20 -33
  106. package/dist/Icon/Icon.d.ts +5 -1
  107. package/dist/Icon/Icon.d.ts.map +1 -1
  108. package/dist/Icon/Icon.js +5 -2
  109. package/dist/InfoTip/InfoTip.d.ts +5 -5
  110. package/dist/InfoTip/InfoTip.d.ts.map +1 -1
  111. package/dist/InfoTip/InfoTip.js +58 -19
  112. package/dist/Item/useSwipeAction.d.ts.map +1 -1
  113. package/dist/Item/useSwipeAction.js +3 -0
  114. package/dist/Layer/modalOutlet.d.ts.map +1 -1
  115. package/dist/Layer/modalOutlet.js +2 -0
  116. package/dist/Layer/outsidePress.d.ts.map +1 -1
  117. package/dist/Layer/outsidePress.js +1 -0
  118. package/dist/Layer/useLayer.d.ts.map +1 -1
  119. package/dist/Layer/useLayer.js +4 -1
  120. package/dist/Layer/useLayerDismissal.d.ts.map +1 -1
  121. package/dist/Layer/useLayerDismissal.js +3 -0
  122. package/dist/Layer/useTouchTrigger.d.ts +13 -7
  123. package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
  124. package/dist/Layer/useTouchTrigger.js +20 -6
  125. package/dist/Layout/index.d.ts +1 -1
  126. package/dist/Layout/index.d.ts.map +1 -1
  127. package/dist/Layout/index.js +1 -1
  128. package/dist/Layout/layoutReset.js +1 -1
  129. package/dist/Layout/overlayPaddingReset.stylex.d.ts +68 -0
  130. package/dist/Layout/overlayPaddingReset.stylex.d.ts.map +1 -0
  131. package/dist/Layout/overlayPaddingReset.stylex.js +72 -0
  132. package/dist/Layout/padding.stylex.d.ts +5 -129
  133. package/dist/Layout/padding.stylex.d.ts.map +1 -1
  134. package/dist/Layout/padding.stylex.js +9 -143
  135. package/dist/Layout/paddingStyles.stylex.d.ts +83 -0
  136. package/dist/Layout/paddingStyles.stylex.d.ts.map +1 -0
  137. package/dist/Layout/paddingStyles.stylex.js +99 -0
  138. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  139. package/dist/Lightbox/Lightbox.js +20 -1
  140. package/dist/MobileNav/MobileNav.d.ts +3 -2
  141. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  142. package/dist/MobileNav/MobileNav.js +10 -26
  143. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  144. package/dist/MultiSelector/MultiSelector.js +2 -1
  145. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  146. package/dist/NumberInput/NumberInput.js +2 -1
  147. package/dist/Outline/useOutlineFromDOM.d.ts.map +1 -1
  148. package/dist/Outline/useOutlineFromDOM.js +3 -0
  149. package/dist/Outline/useScrollSpy.d.ts.map +1 -1
  150. package/dist/Outline/useScrollSpy.js +3 -0
  151. package/dist/OverflowList/OverflowList.d.ts.map +1 -1
  152. package/dist/OverflowList/OverflowList.js +3 -0
  153. package/dist/Popover/Popover.d.ts.map +1 -1
  154. package/dist/Popover/Popover.js +6 -0
  155. package/dist/Popover/usePopover.js +2 -2
  156. package/dist/PowerSearch/PowerSearch.d.ts +39 -4
  157. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  158. package/dist/PowerSearch/PowerSearch.js +441 -134
  159. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts +102 -0
  160. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts.map +1 -0
  161. package/dist/PowerSearch/PowerSearchBottomSheet.js +1919 -0
  162. package/dist/PowerSearch/PowerSearchEditPopover.d.ts +35 -2
  163. package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
  164. package/dist/PowerSearch/PowerSearchEditPopover.js +43 -10
  165. package/dist/PowerSearch/PowerSearchFilterEditor.d.ts +1 -1
  166. package/dist/PowerSearch/PowerSearchFilterEditor.d.ts.map +1 -1
  167. package/dist/PowerSearch/PowerSearchFilterEditor.js +4 -2
  168. package/dist/PowerSearch/PowerSearchToken.d.ts +1 -1
  169. package/dist/PowerSearch/PowerSearchToken.d.ts.map +1 -1
  170. package/dist/PowerSearch/PowerSearchToken.js +3 -2
  171. package/dist/PowerSearch/PowerSearchValueEditor.d.ts +38 -3
  172. package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
  173. package/dist/PowerSearch/PowerSearchValueEditor.js +273 -86
  174. package/dist/PowerSearch/formatFilterValue.d.ts +14 -7
  175. package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
  176. package/dist/PowerSearch/formatFilterValue.js +31 -23
  177. package/dist/PowerSearch/formatTokenValue.d.ts +28 -0
  178. package/dist/PowerSearch/formatTokenValue.d.ts.map +1 -0
  179. package/dist/PowerSearch/formatTokenValue.js +161 -0
  180. package/dist/PowerSearch/index.d.ts +1 -1
  181. package/dist/PowerSearch/index.d.ts.map +1 -1
  182. package/dist/PowerSearch/powerSearchDateZone.d.ts +25 -0
  183. package/dist/PowerSearch/powerSearchDateZone.d.ts.map +1 -0
  184. package/dist/PowerSearch/powerSearchDateZone.js +57 -0
  185. package/dist/PowerSearch/powerSearchSheetUtils.d.ts +65 -0
  186. package/dist/PowerSearch/powerSearchSheetUtils.d.ts.map +1 -0
  187. package/dist/PowerSearch/powerSearchSheetUtils.js +168 -0
  188. package/dist/PowerSearch/types.d.ts +8 -1
  189. package/dist/PowerSearch/types.d.ts.map +1 -1
  190. package/dist/ProgressBar/ProgressBarTouch.d.ts.map +1 -1
  191. package/dist/ProgressBar/ProgressBarTouch.js +2 -0
  192. package/dist/RadioList/RadioList.d.ts.map +1 -1
  193. package/dist/RadioList/RadioList.js +3 -2
  194. package/dist/RadioList/RadioListItem.d.ts +1 -1
  195. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  196. package/dist/RadioList/RadioListItem.js +5 -3
  197. package/dist/Resizable/ResizeHandle.d.ts +2 -1
  198. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  199. package/dist/Resizable/ResizeHandle.js +101 -77
  200. package/dist/Resizable/createResizable.d.ts +145 -0
  201. package/dist/Resizable/createResizable.d.ts.map +1 -0
  202. package/dist/Resizable/createResizable.js +575 -0
  203. package/dist/Resizable/useResizable.d.ts +3 -3
  204. package/dist/Resizable/useResizable.d.ts.map +1 -1
  205. package/dist/Resizable/useResizable.js +252 -459
  206. package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts.map +1 -1
  207. package/dist/SegmentedControl/useSegmentedSelectionMotion.js +3 -3
  208. package/dist/SelectableCard/SelectableCard.d.ts +2 -0
  209. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  210. package/dist/SelectableCard/SelectableCard.js +36 -11
  211. package/dist/SelectableCard/selectableCardInput.d.ts +12 -0
  212. package/dist/SelectableCard/selectableCardInput.d.ts.map +1 -0
  213. package/dist/SelectableCard/selectableCardInput.js +20 -0
  214. package/dist/Selector/Selector.d.ts.map +1 -1
  215. package/dist/Selector/Selector.js +7 -9
  216. package/dist/SideNav/SideNav.d.ts.map +1 -1
  217. package/dist/SideNav/SideNav.js +36 -5
  218. package/dist/Slider/Slider.d.ts.map +1 -1
  219. package/dist/Slider/Slider.js +16 -11
  220. package/dist/Slider/sliderTouchController.js +2 -2
  221. package/dist/Spinner/Spinner.d.ts +1 -1
  222. package/dist/Spinner/Spinner.d.ts.map +1 -1
  223. package/dist/Spinner/Spinner.js +60 -58
  224. package/dist/Stepper/Stepper.d.ts.map +1 -1
  225. package/dist/Stepper/Stepper.js +10 -15
  226. package/dist/Switch/Switch.d.ts.map +1 -1
  227. package/dist/Switch/Switch.js +4 -10
  228. package/dist/Switch/useSwitchTouch.js +4 -4
  229. package/dist/Table/BaseTable.d.ts.map +1 -1
  230. package/dist/Table/BaseTable.js +29 -8
  231. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  232. package/dist/Table/plugins/columnResize/useTableColumnResize.js +3 -1
  233. package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
  234. package/dist/Table/plugins/filtering/useTableFiltering.js +2 -1
  235. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  236. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +4 -0
  237. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
  238. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +2 -0
  239. package/dist/TextArea/TextArea.d.ts.map +1 -1
  240. package/dist/TextArea/TextArea.js +2 -1
  241. package/dist/TextInput/TextInput.d.ts +2 -2
  242. package/dist/TextInput/TextInput.d.ts.map +1 -1
  243. package/dist/TextInput/TextInput.js +12 -8
  244. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  245. package/dist/TimeInput/TimeInput.js +2 -0
  246. package/dist/TimeInput/TouchTimeField.d.ts.map +1 -1
  247. package/dist/TimeInput/TouchTimeField.js +2 -0
  248. package/dist/Timer/Timer.d.ts.map +1 -1
  249. package/dist/Timer/Timer.js +2 -0
  250. package/dist/Timestamp/Timestamp.js +1 -1
  251. package/dist/Timestamp/formatInstant.d.ts.map +1 -1
  252. package/dist/Timestamp/formatInstant.js +1 -23
  253. package/dist/Toast/Toast.d.ts +11 -1
  254. package/dist/Toast/Toast.d.ts.map +1 -1
  255. package/dist/Toast/Toast.js +25 -15
  256. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  257. package/dist/Toast/ToastViewport.js +97 -34
  258. package/dist/Toast/types.d.ts +9 -3
  259. package/dist/Toast/types.d.ts.map +1 -1
  260. package/dist/Toast/useToast.d.ts.map +1 -1
  261. package/dist/Toast/useToast.js +1 -0
  262. package/dist/Tokenizer/Tokenizer.d.ts +44 -46
  263. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  264. package/dist/Tokenizer/Tokenizer.js +20 -21
  265. package/dist/Tokenizer/TokenizerBottomSheet.d.ts +1 -1
  266. package/dist/Tokenizer/TokenizerBottomSheet.js +4 -6
  267. package/dist/Tokenizer/index.d.ts +1 -1
  268. package/dist/Tokenizer/index.d.ts.map +1 -1
  269. package/dist/Tooltip/Tooltip.d.ts +2 -23
  270. package/dist/Tooltip/Tooltip.d.ts.map +1 -1
  271. package/dist/Tooltip/Tooltip.js +5 -29
  272. package/dist/Tooltip/useTooltip.d.ts +23 -30
  273. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  274. package/dist/Tooltip/useTooltip.js +194 -108
  275. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  276. package/dist/Typeahead/BaseTypeahead.js +27 -18
  277. package/dist/Typeahead/TypeaheadItem.d.ts +2 -1
  278. package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
  279. package/dist/animator/createAnimator.d.ts +98 -0
  280. package/dist/animator/createAnimator.d.ts.map +1 -0
  281. package/dist/animator/createAnimator.js +259 -0
  282. package/dist/astryx.css +41 -7
  283. package/dist/gestures/GestureHost.d.ts +16 -1
  284. package/dist/gestures/GestureHost.d.ts.map +1 -1
  285. package/dist/gestures/GestureHost.js +1 -1
  286. package/dist/gestures/PressTracker.d.ts.map +1 -1
  287. package/dist/gestures/PressTracker.js +4 -3
  288. package/dist/hooks/ModalAnnounceProvider.d.ts.map +1 -1
  289. package/dist/hooks/ModalAnnounceProvider.js +1 -0
  290. package/dist/hooks/actionGroupTracker.d.ts +4 -1
  291. package/dist/hooks/actionGroupTracker.d.ts.map +1 -1
  292. package/dist/hooks/actionGroupTracker.js +13 -3
  293. package/dist/hooks/index.d.ts +1 -0
  294. package/dist/hooks/index.d.ts.map +1 -1
  295. package/dist/hooks/index.js +1 -0
  296. package/dist/hooks/longPressDetector.d.ts +66 -0
  297. package/dist/hooks/longPressDetector.d.ts.map +1 -0
  298. package/dist/hooks/longPressDetector.js +200 -0
  299. package/dist/hooks/pressGroupContext.d.ts +6 -0
  300. package/dist/hooks/pressGroupContext.d.ts.map +1 -0
  301. package/dist/hooks/pressGroupContext.js +20 -0
  302. package/dist/hooks/rootScrollStyles.d.ts +48 -0
  303. package/dist/hooks/rootScrollStyles.d.ts.map +1 -0
  304. package/dist/hooks/rootScrollStyles.js +207 -0
  305. package/dist/hooks/scrollLockTouchGuard.d.ts +13 -0
  306. package/dist/hooks/scrollLockTouchGuard.d.ts.map +1 -0
  307. package/dist/hooks/scrollLockTouchGuard.js +117 -0
  308. package/dist/hooks/scrollbarGutter.d.ts +4 -4
  309. package/dist/hooks/scrollbarGutter.d.ts.map +1 -1
  310. package/dist/hooks/scrollbarGutter.js +36 -23
  311. package/dist/hooks/useActionGroupTracking.d.ts +53 -0
  312. package/dist/hooks/useActionGroupTracking.d.ts.map +1 -0
  313. package/dist/hooks/useActionGroupTracking.js +174 -0
  314. package/dist/hooks/useAnimator.d.ts +41 -0
  315. package/dist/hooks/useAnimator.d.ts.map +1 -0
  316. package/dist/hooks/useAnimator.js +70 -0
  317. package/dist/hooks/useAnnounceRenderedText.d.ts.map +1 -1
  318. package/dist/hooks/useAnnounceRenderedText.js +1 -0
  319. package/dist/hooks/useAttachment.d.ts +1 -1
  320. package/dist/hooks/useAttachment.js +1 -1
  321. package/dist/hooks/useAutoMediaMode.d.ts.map +1 -1
  322. package/dist/hooks/useAutoMediaMode.js +1 -0
  323. package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
  324. package/dist/hooks/useBusyAnnouncement.js +2 -0
  325. package/dist/hooks/useDevWarning.d.ts.map +1 -1
  326. package/dist/hooks/useDevWarning.js +2 -0
  327. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  328. package/dist/hooks/useFocusTrap.js +2 -0
  329. package/dist/hooks/useGridFocus.d.ts +8 -5
  330. package/dist/hooks/useGridFocus.d.ts.map +1 -1
  331. package/dist/hooks/useGridFocus.js +4 -3
  332. package/dist/hooks/useHotkeys.d.ts.map +1 -1
  333. package/dist/hooks/useHotkeys.js +3 -0
  334. package/dist/hooks/useImageMode.d.ts.map +1 -1
  335. package/dist/hooks/useImageMode.js +3 -0
  336. package/dist/hooks/useInputStatusIcon.d.ts +1 -1
  337. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  338. package/dist/hooks/useInputStatusIcon.js +2 -2
  339. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
  340. package/dist/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -1
  341. package/dist/hooks/useKeyboardHint.js +1 -1
  342. package/dist/hooks/useLongPress.d.ts +8 -9
  343. package/dist/hooks/useLongPress.d.ts.map +1 -1
  344. package/dist/hooks/useLongPress.js +23 -106
  345. package/dist/hooks/useMenuHover.d.ts.map +1 -1
  346. package/dist/hooks/useMenuHover.js +2 -0
  347. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  348. package/dist/hooks/useMenuPress.js +3 -0
  349. package/dist/hooks/useOverflow.d.ts.map +1 -1
  350. package/dist/hooks/useOverflow.js +2 -1
  351. package/dist/hooks/usePressFeedback.d.ts.map +1 -1
  352. package/dist/hooks/usePressFeedback.js +1 -0
  353. package/dist/hooks/useResolvedRequired.d.ts +3 -0
  354. package/dist/hooks/useResolvedRequired.d.ts.map +1 -1
  355. package/dist/hooks/useResolvedRequired.js +3 -0
  356. package/dist/hooks/useScrollLock.d.ts +8 -9
  357. package/dist/hooks/useScrollLock.d.ts.map +1 -1
  358. package/dist/hooks/useScrollLock.js +50 -48
  359. package/dist/hooks/useScrollableArea.d.ts.map +1 -1
  360. package/dist/hooks/useScrollableArea.js +5 -0
  361. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  362. package/dist/hooks/useStreamingText.js +3 -0
  363. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts +8 -0
  364. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts.map +1 -0
  365. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.js +42 -0
  366. package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.d.ts.map +1 -1
  367. package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.js +6 -0
  368. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts +8 -0
  369. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts.map +1 -0
  370. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.js +14 -0
  371. package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
  372. package/dist/i18n/generated-locales/en.generated.js +30 -0
  373. package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
  374. package/dist/i18n/generated-locales/pseudo.generated.js +30 -0
  375. package/dist/index.d.ts +1 -0
  376. package/dist/index.d.ts.map +1 -1
  377. package/dist/index.js +4 -0
  378. package/dist/internal/indicatorPress.stylex.d.ts +20 -0
  379. package/dist/internal/indicatorPress.stylex.d.ts.map +1 -0
  380. package/dist/internal/indicatorPress.stylex.js +26 -0
  381. package/dist/internal/selectable-card.d.ts +21 -0
  382. package/dist/internal/selectable-card.d.ts.map +1 -0
  383. package/dist/internal/selectable-card.js +20 -0
  384. package/dist/internal/sheetDraft.d.ts +2 -2
  385. package/dist/internal/sheetDraft.js +2 -2
  386. package/dist/motion/animatedLayout.d.ts +8 -0
  387. package/dist/motion/animatedLayout.d.ts.map +1 -1
  388. package/dist/motion/animatedLayout.js +246 -53
  389. package/dist/motion/animator.d.ts +14 -14
  390. package/dist/motion/animator.d.ts.map +1 -1
  391. package/dist/motion/animator.js +45 -26
  392. package/dist/motion/frameBlock.d.ts +14 -0
  393. package/dist/motion/frameBlock.d.ts.map +1 -0
  394. package/dist/motion/frameBlock.js +16 -0
  395. package/dist/motion/progress.d.ts +88 -0
  396. package/dist/motion/progress.d.ts.map +1 -0
  397. package/dist/motion/progress.js +128 -0
  398. package/dist/motion/reducedMotion.d.ts.map +1 -1
  399. package/dist/motion/reducedMotion.js +3 -1
  400. package/dist/motion/uikit/alert.d.ts +41 -0
  401. package/dist/motion/uikit/alert.d.ts.map +1 -0
  402. package/dist/motion/uikit/alert.js +43 -0
  403. package/dist/motion/uikit/index.d.ts +4 -3
  404. package/dist/motion/uikit/index.d.ts.map +1 -1
  405. package/dist/motion/uikit/index.js +4 -3
  406. package/dist/motion/uikit/picker.d.ts +96 -0
  407. package/dist/motion/uikit/picker.d.ts.map +1 -0
  408. package/dist/motion/uikit/picker.js +117 -0
  409. package/dist/privateAttributes/pressGroupItem.stylex.d.ts +22 -0
  410. package/dist/privateAttributes/pressGroupItem.stylex.d.ts.map +1 -0
  411. package/dist/privateAttributes/pressGroupItem.stylex.js +36 -0
  412. package/dist/privateAttributes/reducedMotion.stylex.d.ts +23 -0
  413. package/dist/privateAttributes/reducedMotion.stylex.d.ts.map +1 -0
  414. package/dist/privateAttributes/reducedMotion.stylex.js +40 -0
  415. package/dist/theme/Theme.d.ts.map +1 -1
  416. package/dist/theme/Theme.js +29 -4
  417. package/dist/theme/generateThemeRules.d.ts.map +1 -1
  418. package/dist/theme/generateThemeRules.js +14 -13
  419. package/dist/theme/motionKnobs.d.ts +4 -3
  420. package/dist/theme/motionKnobs.d.ts.map +1 -1
  421. package/dist/theme/motionKnobs.js +3 -2
  422. package/dist/theme/themeMotion.d.ts +6 -0
  423. package/dist/theme/themeMotion.d.ts.map +1 -1
  424. package/dist/theme/themeMotion.js +15 -2
  425. package/dist/theme/tokens.stylex.d.ts +3 -0
  426. package/dist/theme/tokens.stylex.d.ts.map +1 -1
  427. package/dist/theme/tokens.stylex.js +4 -1
  428. package/dist/utils/dateParser.d.ts.map +1 -1
  429. package/dist/utils/dateParser.js +12 -0
  430. package/dist/utils/disabledInteraction.d.ts +10 -2
  431. package/dist/utils/disabledInteraction.d.ts.map +1 -1
  432. package/dist/utils/disabledInteraction.js +16 -2
  433. package/dist/utils/focusReturn.d.ts +22 -25
  434. package/dist/utils/focusReturn.d.ts.map +1 -1
  435. package/dist/utils/focusReturn.js +36 -29
  436. package/dist/utils/index.d.ts +1 -1
  437. package/dist/utils/index.d.ts.map +1 -1
  438. package/dist/utils/index.js +1 -1
  439. package/dist/utils/interactionModality.d.ts.map +1 -1
  440. package/dist/utils/interactionModality.js +4 -0
  441. package/dist/utils/interactionOverlay.stylex.d.ts +3 -2
  442. package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
  443. package/dist/utils/interactionOverlay.stylex.js +3 -2
  444. package/dist/utils/isFocusDetached.d.ts +27 -0
  445. package/dist/utils/isFocusDetached.d.ts.map +1 -0
  446. package/dist/utils/isFocusDetached.js +32 -0
  447. package/dist/utils/plainDate.d.ts +31 -0
  448. package/dist/utils/plainDate.d.ts.map +1 -1
  449. package/dist/utils/plainDate.js +68 -4
  450. package/dist/utils/pressFeedback.d.ts.map +1 -1
  451. package/dist/utils/pressFeedback.js +20 -6
  452. package/dist/utils/triggerFocus.d.ts +36 -0
  453. package/dist/utils/triggerFocus.d.ts.map +1 -0
  454. package/dist/utils/triggerFocus.js +65 -0
  455. package/locales/en.json +120 -0
  456. package/locales/pseudo.json +90 -0
  457. package/package.json +14 -9
  458. package/src/AlertDialog/AlertDialog.doc.mjs +2 -2
  459. package/src/AlertDialog/AlertDialog.tsx +46 -5
  460. package/src/AppShell/AppShell.tsx +13 -4
  461. package/src/BottomSheet/BottomSheet.tsx +1 -0
  462. package/src/BottomSheet/BottomSheetPanel.tsx +39 -3
  463. package/src/BottomSheet/BottomSheetSwitcher.tsx +5 -0
  464. package/src/BottomSheet/useMobileKeyboard.ts +4 -0
  465. package/src/BottomSheet/useSheetGestures.ts +10 -1
  466. package/src/Button/Button.tsx +26 -4
  467. package/src/Calendar/Calendar.tsx +40 -32
  468. package/src/Calendar/getWeekdayHeaderNames.ts +88 -0
  469. package/src/Calendar/hooks/useCalendarDays.ts +5 -10
  470. package/src/Calendar/{standaloneShortWeekdayNames.generated.ts → weekdayHeaderNames.generated.ts} +14 -14
  471. package/src/Carousel/Carousel.tsx +1 -0
  472. package/src/Chat/ChatComposerInput.tsx +4 -7
  473. package/src/Chat/ChatMessageList.tsx +2 -1
  474. package/src/Chat/useChatDictation.ts +1 -0
  475. package/src/Chat/useChatNewMessages.ts +1 -1
  476. package/src/Chat/useChatStreamScroll.ts +2 -0
  477. package/src/Chat/useSpeechRecognition.ts +2 -0
  478. package/src/Chat/useTriggerMenu.tsx +1 -1
  479. package/src/CheckboxInput/CheckboxInput.doc.mjs +18 -0
  480. package/src/CheckboxInput/CheckboxInput.tsx +38 -15
  481. package/src/CheckboxList/CheckboxList.doc.mjs +7 -0
  482. package/src/CheckboxList/CheckboxList.tsx +9 -0
  483. package/src/CodeBlock/CodeBlock.doc.mjs +9 -1
  484. package/src/CodeBlock/CodeBlock.tsx +41 -4
  485. package/src/CommandPalette/CommandPalette.tsx +1 -0
  486. package/src/CommandPalette/CommandPaletteItem.tsx +1 -0
  487. package/src/ComplexSelector/ComplexSelector.tsx +20 -5
  488. package/src/ContextMenu/ContextMenu.tsx +2 -2
  489. package/src/DateInput/MonthScroller.tsx +8 -2
  490. package/src/DateInput/PickerWheel.tsx +765 -0
  491. package/src/DateInput/TouchDateField.tsx +6 -32
  492. package/src/DateInput/Wheel.tsx +94 -150
  493. package/src/DateInput/useOwnScrollGesture.ts +25 -3
  494. package/src/DateInput/usePointerDragScroll.ts +1 -0
  495. package/src/DateInput/useScrollSettle.ts +2 -0
  496. package/src/DateInput/useWheelListbox.ts +112 -0
  497. package/src/DateInput/wheelOptions.ts +155 -0
  498. package/src/DateInput/wheelPhysics.ts +406 -0
  499. package/src/DateInput/wheelStrip.ts +341 -0
  500. package/src/DateTimeInput/TouchDateTimeField.tsx +8 -13
  501. package/src/Dialog/Dialog.tsx +12 -32
  502. package/src/Drawer/useDrawerDialogPresence.ts +2 -0
  503. package/src/DropdownMenu/useMenuOverflow.ts +3 -0
  504. package/src/Field/Field.tsx +2 -2
  505. package/src/FieldStatus/useFieldStatusAnnouncement.ts +1 -0
  506. package/src/FormLayout/FormLayout.doc.mjs +181 -46
  507. package/src/FormLayout/FormLayout.tsx +5 -1
  508. package/src/HoverCard/HoverCard.doc.mjs +10 -8
  509. package/src/HoverCard/HoverCard.tsx +58 -6
  510. package/src/HoverCard/useHoverCard.doc.mjs +178 -36
  511. package/src/HoverCard/useHoverCard.tsx +49 -54
  512. package/src/Icon/Icon.doc.mjs +51 -10
  513. package/src/Icon/Icon.tsx +15 -7
  514. package/src/IconButton/IconButton.doc.mjs +141 -21
  515. package/src/InfoTip/InfoTip.tsx +72 -16
  516. package/src/Item/useSwipeAction.ts +2 -0
  517. package/src/Layer/modalOutlet.ts +2 -0
  518. package/src/Layer/outsidePress.ts +1 -0
  519. package/src/Layer/useLayer.tsx +3 -1
  520. package/src/Layer/useLayerDismissal.ts +2 -0
  521. package/src/Layer/useTouchTrigger.ts +19 -6
  522. package/src/Layout/index.ts +1 -1
  523. package/src/Layout/layoutReset.ts +1 -1
  524. package/src/Layout/overlayPaddingReset.stylex.ts +73 -0
  525. package/src/Layout/padding.stylex.ts +9 -133
  526. package/src/Layout/paddingStyles.stylex.ts +87 -0
  527. package/src/Lightbox/Lightbox.tsx +20 -1
  528. package/src/Lightbox/useLightbox.doc.mjs +167 -0
  529. package/src/MobileNav/MobileNav.tsx +10 -31
  530. package/src/MultiSelector/MultiSelector.tsx +2 -7
  531. package/src/NumberInput/NumberInput.tsx +2 -7
  532. package/src/Outline/useOutlineFromDOM.ts +2 -0
  533. package/src/Outline/useScrollSpy.ts +2 -0
  534. package/src/OverflowList/OverflowList.tsx +2 -0
  535. package/src/Popover/Popover.tsx +4 -0
  536. package/src/Popover/usePopover.tsx +2 -2
  537. package/src/PowerSearch/PowerSearch.doc.mjs +60 -8
  538. package/src/PowerSearch/PowerSearch.tsx +620 -157
  539. package/src/PowerSearch/PowerSearchBottomSheet.tsx +2525 -0
  540. package/src/PowerSearch/PowerSearchEditPopover.tsx +65 -9
  541. package/src/PowerSearch/PowerSearchFilterEditor.tsx +2 -0
  542. package/src/PowerSearch/PowerSearchToken.tsx +2 -0
  543. package/src/PowerSearch/PowerSearchValueEditor.tsx +340 -59
  544. package/src/PowerSearch/formatFilterValue.ts +49 -27
  545. package/src/PowerSearch/formatTokenValue.ts +220 -0
  546. package/src/PowerSearch/index.ts +5 -1
  547. package/src/PowerSearch/powerSearchDateZone.ts +95 -0
  548. package/src/PowerSearch/powerSearchSheetUtils.ts +224 -0
  549. package/src/PowerSearch/types.ts +8 -1
  550. package/src/ProgressBar/ProgressBarTouch.ts +2 -0
  551. package/src/RadioList/RadioList.tsx +3 -2
  552. package/src/RadioList/RadioListItem.tsx +5 -3
  553. package/src/Resizable/Resizable.doc.mjs +5 -4
  554. package/src/Resizable/ResizeHandle.tsx +169 -109
  555. package/src/Resizable/createResizable.ts +831 -0
  556. package/src/Resizable/useResizable.ts +292 -623
  557. package/src/SegmentedControl/useSegmentedSelectionMotion.ts +6 -3
  558. package/src/SelectableCard/SelectableCard.tsx +39 -10
  559. package/src/SelectableCard/selectableCardInput.ts +30 -0
  560. package/src/Selector/Selector.tsx +7 -19
  561. package/src/SideNav/SideNav.tsx +41 -5
  562. package/src/Slider/Slider.tsx +20 -11
  563. package/src/Slider/sliderTouchController.ts +2 -2
  564. package/src/Spinner/Spinner.tsx +77 -63
  565. package/src/Stepper/Stepper.tsx +10 -27
  566. package/src/Switch/Switch.tsx +2 -6
  567. package/src/Switch/useSwitchTouch.ts +4 -4
  568. package/src/Table/BaseTable.tsx +46 -12
  569. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +2 -1
  570. package/src/Table/plugins/filtering/useTableFiltering.tsx +1 -0
  571. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +4 -0
  572. package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +2 -0
  573. package/src/TextArea/TextArea.tsx +2 -7
  574. package/src/TextInput/TextInput.tsx +13 -17
  575. package/src/TimeInput/TimeInput.tsx +2 -0
  576. package/src/TimeInput/TouchTimeField.tsx +2 -0
  577. package/src/Timer/Timer.tsx +1 -0
  578. package/src/Timestamp/Timestamp.tsx +1 -1
  579. package/src/Timestamp/formatInstant.ts +1 -33
  580. package/src/Toast/Toast.doc.mjs +4 -3
  581. package/src/Toast/Toast.tsx +52 -32
  582. package/src/Toast/ToastViewport.tsx +123 -35
  583. package/src/Toast/types.ts +9 -3
  584. package/src/Toast/useToast.tsx +1 -0
  585. package/src/Tokenizer/Tokenizer.doc.mjs +10 -10
  586. package/src/Tokenizer/Tokenizer.tsx +61 -62
  587. package/src/Tokenizer/TokenizerBottomSheet.tsx +9 -11
  588. package/src/Tokenizer/index.ts +1 -0
  589. package/src/Tooltip/Tooltip.tsx +6 -42
  590. package/src/Tooltip/useTooltip.doc.mjs +24 -0
  591. package/src/Tooltip/useTooltip.tsx +237 -134
  592. package/src/Typeahead/BaseTypeahead.tsx +27 -17
  593. package/src/Typeahead/TypeaheadItem.doc.mjs +6 -3
  594. package/src/Typeahead/TypeaheadItem.tsx +2 -1
  595. package/src/animator/createAnimator.doc.mjs +153 -0
  596. package/src/animator/createAnimator.ts +324 -0
  597. package/src/gestures/GestureHost.ts +1 -1
  598. package/src/gestures/PressTracker.ts +4 -3
  599. package/src/gestures/README.md +10 -4
  600. package/src/hooks/ModalAnnounceProvider.tsx +1 -0
  601. package/src/hooks/actionGroupTracker.ts +20 -5
  602. package/src/hooks/index.ts +2 -0
  603. package/src/hooks/longPressDetector.ts +273 -0
  604. package/src/hooks/pressGroupContext.ts +21 -0
  605. package/src/hooks/rootScrollStyles.ts +247 -0
  606. package/src/hooks/scrollLockTouchGuard.ts +149 -0
  607. package/src/hooks/scrollbarGutter.ts +41 -26
  608. package/src/hooks/useActionGroupTracking.ts +224 -0
  609. package/src/hooks/useAnimator.doc.mjs +109 -0
  610. package/src/hooks/useAnimator.ts +67 -0
  611. package/src/hooks/useAnnounceRenderedText.ts +1 -0
  612. package/src/hooks/useAttachment.ts +1 -1
  613. package/src/hooks/useAutoMediaMode.ts +1 -0
  614. package/src/hooks/useBusyAnnouncement.ts +2 -0
  615. package/src/hooks/useDevWarning.ts +2 -0
  616. package/src/hooks/useFocusTrap.ts +2 -0
  617. package/src/hooks/useGridFocus.doc.mjs +6 -6
  618. package/src/hooks/useGridFocus.ts +10 -7
  619. package/src/hooks/useHotkeys.ts +2 -0
  620. package/src/hooks/useImageMode.ts +2 -0
  621. package/src/hooks/useInputStatusIcon.tsx +3 -2
  622. package/src/hooks/useKeyboardHint.tsx +1 -1
  623. package/src/hooks/useLongPress.doc.mjs +2 -2
  624. package/src/hooks/useLongPress.ts +32 -122
  625. package/src/hooks/useMenuHover.ts +1 -0
  626. package/src/hooks/useMenuPress.ts +2 -0
  627. package/src/hooks/useOverflow.ts +2 -1
  628. package/src/hooks/usePressFeedback.ts +1 -0
  629. package/src/hooks/useResolvedRequired.ts +3 -0
  630. package/src/hooks/useScrollLock.doc.mjs +51 -12
  631. package/src/hooks/useScrollLock.ts +53 -60
  632. package/src/hooks/useScrollableArea.ts +4 -0
  633. package/src/hooks/useStreamingText.ts +2 -0
  634. package/src/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.ts +43 -0
  635. package/src/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.ts +6 -0
  636. package/src/i18n/generated-english/PowerSearch/formatTokenValue.generated.ts +15 -0
  637. package/src/i18n/generated-locales/en.generated.ts +41 -0
  638. package/src/i18n/generated-locales/pseudo.generated.ts +42 -0
  639. package/src/index.ts +13 -0
  640. package/src/internal/indicatorPress.stylex.ts +24 -0
  641. package/src/internal/selectable-card.ts +21 -0
  642. package/src/internal/sheetDraft.ts +2 -2
  643. package/src/motion/MEASUREMENTS.md +18 -0
  644. package/src/motion/README.md +10 -5
  645. package/src/motion/animatedLayout.ts +323 -60
  646. package/src/motion/animator.ts +66 -37
  647. package/src/motion/frameBlock.ts +16 -0
  648. package/src/motion/progress.ts +155 -0
  649. package/src/motion/reducedMotion.ts +3 -1
  650. package/src/motion/uikit/alert.ts +43 -0
  651. package/src/motion/uikit/index.ts +4 -3
  652. package/src/motion/uikit/picker.ts +116 -0
  653. package/src/privateAttributes/pressGroupItem.stylex.ts +44 -0
  654. package/src/privateAttributes/reducedMotion.stylex.ts +45 -0
  655. package/src/theme/Theme.tsx +37 -3
  656. package/src/theme/generateThemeRules.ts +14 -12
  657. package/src/theme/motionKnobs.ts +4 -3
  658. package/src/theme/themeMotion.ts +17 -2
  659. package/src/theme/tokens.stylex.ts +2 -0
  660. package/src/utils/dateParser.ts +16 -0
  661. package/src/utils/disabledInteraction.ts +23 -2
  662. package/src/utils/focusReturn.ts +38 -31
  663. package/src/utils/index.ts +1 -1
  664. package/src/utils/interactionModality.ts +4 -0
  665. package/src/utils/interactionOverlay.stylex.ts +3 -2
  666. package/src/utils/isFocusDetached.ts +34 -0
  667. package/src/utils/plainDate.ts +80 -4
  668. package/src/utils/pressFeedback.ts +24 -6
  669. package/src/utils/triggerFocus.ts +80 -0
  670. package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts +0 -14
  671. package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts.map +0 -1
  672. package/dist/Calendar/getStandaloneShortWeekdayNames.js +0 -26
  673. package/dist/Calendar/standaloneShortWeekdayNames.generated.d.ts.map +0 -1
  674. package/dist/Layer/usePressPin.d.ts +0 -93
  675. package/dist/Layer/usePressPin.d.ts.map +0 -1
  676. package/dist/Layer/usePressPin.js +0 -363
  677. package/dist/internal/touch-sheet.d.ts +0 -21
  678. package/dist/internal/touch-sheet.d.ts.map +0 -1
  679. package/dist/internal/touch-sheet.js +0 -19
  680. package/src/Calendar/getStandaloneShortWeekdayNames.ts +0 -38
  681. package/src/Layer/usePressPin.ts +0 -510
  682. package/src/internal/touch-sheet.ts +0 -21
@@ -4,22 +4,23 @@
4
4
 
5
5
  /**
6
6
  * @file useTooltip.tsx
7
- * @input Uses useLayer, usePressPin, React hooks
8
- * @output Exports useTooltip hook with stable trigger refs for hover/focus/tap tooltips,
9
- * and the module-only useTooltipWithTriggerBehavior that InfoTip's press-to-pin uses
7
+ * @input Uses useLayer, useTouchTriggerInternal, React hooks
8
+ * @output Exports useTooltip hook with stable trigger refs for hover/focus/tap tooltips
9
+ * and imperative show() and hide() for an app-built toggle trigger
10
10
  * @position Layer hook; builds on useLayer for tooltip behavior
11
11
  *
12
12
  * SYNC: When modified, update:
13
13
  * - /packages/core/src/Tooltip/index.ts
14
14
  */
15
- import { useCallback, useEffect, useRef } from 'react';
15
+ import { useCallback, useEffect, useRef, useState } from 'react';
16
+ import { createTriggerFocusGate } from "../utils/triggerFocus.js";
16
17
  import * as stylex from '@stylexjs/stylex';
17
18
  import { useLayerInternal } from "../Layer/useLayer.js";
19
+ import { useTouchTriggerInternal } from "../Layer/useTouchTrigger.js";
18
20
  import { useAnnounceRenderedText } from "../hooks/useAnnounceRenderedText.js";
19
21
  import { useMergedRefs } from "../hooks/useMergedRefs.js";
20
22
  import { layerAnimations } from "../Layer/layerAnimations.stylex.js";
21
23
  import { registerLayerSurface } from "../Layer/layerSurfacePress.js";
22
- import { usePressPin } from "../Layer/usePressPin.js";
23
24
  import { useLayerDismissal } from "../Layer/useLayerDismissal.js";
24
25
  import { themeProps } from "../utils/themeProps.js";
25
26
  import "../theme/tokens.stylex.js";
@@ -52,28 +53,6 @@ const styles = {
52
53
  * Touch trigger behavior for tooltips
53
54
  */
54
55
 
55
- /**
56
- * Check if an element is naturally focusable
57
- */
58
- function isFocusable(element) {
59
- // Elements with explicit tabindex
60
- if (element.hasAttribute('tabindex')) {
61
- return element.tabIndex >= 0;
62
- }
63
-
64
- // Naturally focusable elements
65
- const focusableTags = ['A', 'BUTTON', 'INPUT', 'SELECT', 'TEXTAREA'];
66
- if (focusableTags.includes(element.tagName)) {
67
- return !element.disabled;
68
- }
69
-
70
- // Elements with contenteditable
71
- if (element.isContentEditable) {
72
- return true;
73
- }
74
- return false;
75
- }
76
-
77
56
  /**
78
57
  * Hook for tooltip behavior with hover/focus triggers.
79
58
  *
@@ -100,24 +79,6 @@ function isFocusable(element) {
100
79
  */
101
80
 
102
81
  export function useTooltip(options = {}) {
103
- // The option is fixed to `adaptive`, so an options object that carries it at
104
- // runtime cannot reach the press-to-pin path.
105
- return useTooltipWithTriggerBehavior({
106
- ...options,
107
- triggerBehavior: 'adaptive'
108
- });
109
- }
110
-
111
- /**
112
- * Module-only options for `useTooltipWithTriggerBehavior`. Not exported from
113
- * the package.
114
- */
115
-
116
- /**
117
- * `useTooltip` with a trigger behavior. Module-only: InfoTip's press-to-pin
118
- * goes through it, and the package does not export it.
119
- */
120
- export function useTooltipWithTriggerBehavior(options = {}) {
121
82
  const {
122
83
  placement = 'above',
123
84
  alignment = 'center',
@@ -125,7 +86,6 @@ export function useTooltipWithTriggerBehavior(options = {}) {
125
86
  hideDelay = 0,
126
87
  focusTrigger = 'auto',
127
88
  touchTrigger = 'auto',
128
- triggerBehavior = 'adaptive',
129
89
  isEnabled = true,
130
90
  isOpen,
131
91
  isDefaultOpen = false,
@@ -180,39 +140,118 @@ export function useTooltipWithTriggerBehavior(options = {}) {
180
140
  hideLayer();
181
141
  }, [clearTimeouts, hideLayer]);
182
142
 
183
- // A press pins the tooltip under `triggerBehavior="toggle"`. The pin also
184
- // owns the tooltip's touch trigger, so this one call wires both.
143
+ // DOM listeners read the latest controlled state through a ref.
144
+ const latestRef = useRef({
145
+ isOpen,
146
+ isLayerOpen,
147
+ onShow,
148
+ onHide
149
+ });
150
+ latestRef.current = {
151
+ isOpen,
152
+ isLayerOpen,
153
+ onShow,
154
+ onHide
155
+ };
156
+
157
+ // The app's show() holds the tooltip open until hide(), Escape, a press or
158
+ // scroll outside, or focus leaving the trigger and the tooltip.
159
+ const isHeldRef = useRef(false);
160
+ const [isHeldState, setIsHeldState] = useState(false);
161
+ const setHeld = useCallback(next => {
162
+ isHeldRef.current = next;
163
+ setIsHeldState(next);
164
+ }, []);
165
+
166
+ // Whether the current hold began during a press on the trigger. Such a
167
+ // hold ends with the press when the press ends off the trigger, as no click
168
+ // pins it. The hover rules then decide. isHoldInThisTaskRef covers a show()
169
+ // that runs before the hook's own pointerdown listener.
170
+ const isHoldFromPressRef = useRef(false);
171
+ const isHoldInThisTaskRef = useRef(false);
172
+ const handleReleaseInLayer = useCallback(() => {
173
+ if (isHoldFromPressRef.current && isHeldRef.current) {
174
+ isHoldFromPressRef.current = false;
175
+ setHeld(false);
176
+ }
177
+ }, [setHeld]);
178
+
179
+ // The touch trigger's outside dismissal (a press or scroll outside) ends a
180
+ // hold with the tooltip.
181
+ const hideFromTouch = useCallback(() => {
182
+ if (isHeldRef.current) {
183
+ setHeld(false);
184
+ const latest = latestRef.current;
185
+ if (latest.isOpen !== undefined) {
186
+ latest.onHide?.();
187
+ return;
188
+ }
189
+ }
190
+ hideNow();
191
+ }, [setHeld, hideNow]);
185
192
  const {
186
- isToggleTrigger,
187
- isHeldOpen: isPressHeldOpen,
188
- attach: attachPressPin,
189
- unpin: unpinPress,
190
- isPinShown,
191
- touch: {
192
- isTouchPointerRef,
193
- isTouchInteraction,
194
- handlePointerEnter,
195
- handlePointerDown: handleTouchPointerDown,
196
- clearTapOpen
197
- }
198
- } = usePressPin({
199
- triggerBehavior,
193
+ isTouchPointerRef,
194
+ isTouchInteraction,
195
+ handlePointerEnter,
196
+ handlePointerDown: handleTouchPointerDown,
197
+ clearTapOpen,
198
+ armOutsideDismiss
199
+ } = useTouchTriggerInternal({
200
200
  touchTrigger,
201
201
  isEnabled,
202
- isOpen,
203
- isLayerOpen,
202
+ isControlled: isOpen !== undefined,
203
+ isOpen: isLayerOpen,
204
204
  layerId,
205
205
  triggerRef,
206
- component: 'Tooltip',
207
206
  show: showNow,
208
- hide: hideNow,
209
- report: next => next ? onShow?.() : onHide?.()
210
- });
207
+ hide: hideFromTouch
208
+ }, handleReleaseInLayer);
209
+ const isHeldOpen = useCallback(() => {
210
+ const latest = latestRef.current;
211
+ return isHeldRef.current && latest.isLayerOpen && latest.isOpen !== false;
212
+ }, []);
213
+ const releaseHold = useCallback(() => {
214
+ clearTapOpen();
215
+ setHeld(false);
216
+ const latest = latestRef.current;
217
+ if (latest.isOpen !== undefined) {
218
+ latest.onHide?.();
219
+ return;
220
+ }
221
+ hideNow();
222
+ }, [clearTapOpen, setHeld, hideNow]);
223
+ const dropHold = useCallback(() => {
224
+ if (isHeldRef.current) {
225
+ setHeld(false);
226
+ }
227
+ }, [setHeld]);
228
+
229
+ // Focus leaving the trigger and the tooltip ends a hold, whatever
230
+ // `focusTrigger` is. Focus that leaves for no element is a press's to
231
+ // decide. The trigger can sit in another document, so the check uses its
232
+ // own window.
233
+ const handleHeldFocusOut = useCallback(event => {
234
+ if (!isHeldOpen()) {
235
+ return;
236
+ }
237
+ const next = event.relatedTarget;
238
+ const trigger = triggerRef.current;
239
+ const view = trigger?.ownerDocument.defaultView;
240
+ if (view == null || !(next instanceof view.Node)) {
241
+ return;
242
+ }
243
+ const surface = trigger?.ownerDocument.getElementById(layerId) ?? null;
244
+ if (trigger?.contains(next) === true || surface?.contains(next) === true) {
245
+ return;
246
+ }
247
+ releaseHold();
248
+ }, [isHeldOpen, layerId, releaseHold]);
249
+ const isHoldShown = isHeldState && isLayerOpen && isOpen !== false;
211
250
 
212
- // Only a pin announces the text: a preview is already the trigger's
251
+ // Only a hold announces the text: a preview is already the trigger's
213
252
  // description.
214
253
  const contentRef = useRef(null);
215
- useAnnounceRenderedText(contentRef, isPinShown, 'pinned');
254
+ useAnnounceRenderedText(contentRef, isHoldShown, 'pinned');
216
255
  const contentRefs = useMergedRefs(contentRef, registerLayerSurface);
217
256
 
218
257
  // Schedule show with delay (suppressed when isOpen is false)
@@ -242,7 +281,7 @@ export function useTooltipWithTriggerBehavior(options = {}) {
242
281
  // trigger onto the tooltip surface without the tooltip vanishing — required
243
282
  // for WCAG 1.4.13 (Content on Hover or Focus: hoverable).
244
283
  const scheduleHide = useCallback(() => {
245
- if (isOpen === true || isPressHeldOpen()) {
284
+ if (isOpen === true || isHeldOpen()) {
246
285
  return;
247
286
  }
248
287
  clearTimeouts();
@@ -250,7 +289,7 @@ export function useTooltipWithTriggerBehavior(options = {}) {
250
289
  hideTimeoutRef.current = setTimeout(() => {
251
290
  hideLayer();
252
291
  }, effectiveHideDelay);
253
- }, [isOpen, isPressHeldOpen, clearTimeouts, hideLayer, hideDelay]);
292
+ }, [isOpen, isHeldOpen, clearTimeouts, hideLayer, hideDelay]);
254
293
 
255
294
  // Cancel a pending hide (e.g. the pointer entered the tooltip surface).
256
295
  const cancelHide = useCallback(() => {
@@ -289,25 +328,11 @@ export function useTooltipWithTriggerBehavior(options = {}) {
289
328
  scheduleHide();
290
329
  }, [isTouchPointerRef, layerId, scheduleHide]);
291
330
 
292
- // Under `auto`, whether focus counts is decided when it arrives, not when
293
- // the listeners attach: a roving-tabindex member that was `tabindex="-1"`
294
- // then can be the tab stop now. A trigger that receives focus is focusable
295
- // by definition; focus inside it counts only while the trigger is
296
- // focusable too, so a plain wrapper still ignores its children's focus.
297
- const isFocusForTrigger = useCallback(e => {
298
- if (focusTrigger === 'always') {
299
- return true;
300
- }
301
- const triggerEl = e.currentTarget;
302
- return triggerEl != null && (e.target === triggerEl || isFocusable(triggerEl));
303
- }, [focusTrigger]);
304
-
305
- // Whether the trigger's current focus counted when it arrived, so its blur
306
- // hides the tooltip even if the trigger has since left the tab order.
307
- const focusCountedRef = useRef(false);
331
+ // Under `auto`, whether focus counts is decided when it arrives, and a
332
+ // focus that counted still hides on blur (utils/triggerFocus.ts).
333
+ const [focusGate] = useState(createTriggerFocusGate);
308
334
  const handleFocusIn = useCallback(e => {
309
- focusCountedRef.current = isFocusForTrigger(e);
310
- if (!isEnabled || !focusCountedRef.current) {
335
+ if (!focusGate.focusIn(e, focusTrigger) || !isEnabled) {
311
336
  return;
312
337
  }
313
338
  // A tap focuses the trigger it activates, and `:focus-visible` does not
@@ -326,18 +351,17 @@ export function useTooltipWithTriggerBehavior(options = {}) {
326
351
  }
327
352
  clearTimeouts();
328
353
  showLayer();
329
- }, [isEnabled, isFocusForTrigger, isTouchInteraction, clearTimeouts, showLayer]);
354
+ }, [focusGate, focusTrigger, isEnabled, isTouchInteraction, clearTimeouts, showLayer]);
330
355
 
331
- // A pinned tooltip's focus-leave close is the pin's own: it listens on the
332
- // trigger whatever `focusTrigger` is. This schedules the unpinned hide,
333
- // which a held tooltip skips.
356
+ // A held tooltip's focus-leave close is the hold's own: it listens on the
357
+ // trigger whatever `focusTrigger` is. This schedules the unheld hide, which
358
+ // a held tooltip skips.
334
359
  const handleFocusOut = useCallback(e => {
335
- if (!focusCountedRef.current && !isFocusForTrigger(e)) {
360
+ if (!focusGate.focusOut(e, focusTrigger)) {
336
361
  return;
337
362
  }
338
- focusCountedRef.current = false;
339
363
  scheduleHide();
340
- }, [isFocusForTrigger, scheduleHide]);
364
+ }, [focusGate, focusTrigger, scheduleHide]);
341
365
 
342
366
  // Pressing the trigger hides its own tooltip: once the control is activated
343
367
  // the hint has served its purpose, and a tooltip lingering over a
@@ -346,10 +370,41 @@ export function useTooltipWithTriggerBehavior(options = {}) {
346
370
  // is owned by the consumer. `hideLayer()` self-guards when already closed.
347
371
  // A touch press is a different gesture (it may be the only way to open the
348
372
  // tooltip at all), so the touch path answers it first.
373
+ // Whether a press on the trigger is down, from the hook's pointerdown to
374
+ // the press's end.
375
+ const isTriggerPressedRef = useRef(false);
376
+ const stopPressTrackingRef = useRef(null);
377
+ const trackTriggerPress = useCallback(() => {
378
+ stopPressTrackingRef.current?.();
379
+ const view = triggerRef.current?.ownerDocument.defaultView;
380
+ if (view == null) {
381
+ return;
382
+ }
383
+ isTriggerPressedRef.current = true;
384
+ const trigger = triggerRef.current;
385
+ const stop = event => {
386
+ // A press that ends on the trigger keeps its hold, as a click does.
387
+ if (event?.type === 'pointerup' && event.target instanceof view.Node && trigger?.contains(event.target) === true) {
388
+ isHoldFromPressRef.current = false;
389
+ }
390
+ view.removeEventListener('pointerup', stop, true);
391
+ view.removeEventListener('pointercancel', stop, true);
392
+ isTriggerPressedRef.current = false;
393
+ stopPressTrackingRef.current = null;
394
+ };
395
+ view.addEventListener('pointerup', stop, true);
396
+ view.addEventListener('pointercancel', stop, true);
397
+ stopPressTrackingRef.current = stop;
398
+ }, []);
349
399
  const handlePointerDown = useCallback(event => {
350
- // A press on a toggle trigger pins or closes through its click. It
351
- // neither hides the preview here nor waits for a tap verdict.
352
- if (isToggleTrigger(triggerRef.current)) {
400
+ trackTriggerPress();
401
+ // The app's hide() closes a held tooltip. A press neither hides it here
402
+ // nor waits for a tap verdict. A show() in a capture handler of this
403
+ // press runs before this listener. Tie that hold to the press.
404
+ if (isHeldRef.current) {
405
+ if (isHoldInThisTaskRef.current) {
406
+ isHoldFromPressRef.current = true;
407
+ }
353
408
  return;
354
409
  }
355
410
  if (handleTouchPointerDown(event)) {
@@ -360,7 +415,7 @@ export function useTooltipWithTriggerBehavior(options = {}) {
360
415
  }
361
416
  clearTimeouts();
362
417
  hideLayer();
363
- }, [isToggleTrigger, handleTouchPointerDown, isOpen, clearTimeouts, hideLayer]);
418
+ }, [handleTouchPointerDown, trackTriggerPress, isOpen, clearTimeouts, hideLayer]);
364
419
 
365
420
  // Interaction ref that handles event listeners only
366
421
  const interactionRef = useCallback(el => {
@@ -370,6 +425,8 @@ export function useTooltipWithTriggerBehavior(options = {}) {
370
425
  triggerRef.current.removeEventListener('mouseleave', handleMouseLeave);
371
426
  triggerRef.current.removeEventListener('focusin', handleFocusIn);
372
427
  triggerRef.current.removeEventListener('focusout', handleFocusOut);
428
+ triggerRef.current.removeEventListener('focusout', handleHeldFocusOut);
429
+ stopPressTrackingRef.current?.();
373
430
  triggerRef.current.removeEventListener('pointerenter', handlePointerEnter);
374
431
  triggerRef.current.removeEventListener('pointerdown', handlePointerDown);
375
432
  }
@@ -384,15 +441,17 @@ export function useTooltipWithTriggerBehavior(options = {}) {
384
441
  el.addEventListener('pointerdown', handlePointerDown);
385
442
 
386
443
  // Focus listeners unless focus never opens the tooltip; `auto` decides
387
- // per event (isFocusForTrigger).
444
+ // per event (utils/triggerFocus.ts).
388
445
  if (focusTrigger !== 'never') {
389
446
  el.addEventListener('focusin', handleFocusIn);
390
447
  el.addEventListener('focusout', handleFocusOut);
391
448
  }
392
449
  }
450
+
451
+ // Its own focus-leave listener: `focusTrigger="never"` attaches none.
452
+ el?.addEventListener('focusout', handleHeldFocusOut);
393
453
  triggerRef.current = el;
394
- attachPressPin(el);
395
- }, [attachPressPin, focusTrigger, handleMouseEnter, handleMouseLeave, handleFocusIn, handleFocusOut, handlePointerEnter, handlePointerDown]);
454
+ }, [handleHeldFocusOut, focusTrigger, handleMouseEnter, handleMouseLeave, handleFocusIn, handleFocusOut, handlePointerEnter, handlePointerDown]);
396
455
 
397
456
  // Combined ref - shorthand for calling both positionRef and interactionRef
398
457
  const ref = useCallback(el => {
@@ -425,9 +484,11 @@ export function useTooltipWithTriggerBehavior(options = {}) {
425
484
  showLayer();
426
485
  } else {
427
486
  clearTimeouts();
487
+ // A hold ends when the consumer closes the tooltip.
488
+ dropHold();
428
489
  hideLayer();
429
490
  }
430
- }, [isOpen, clearTimeouts, showLayer, hideLayer]);
491
+ }, [isOpen, clearTimeouts, showLayer, hideLayer, dropHold]);
431
492
 
432
493
  // Dismiss on Escape (WCAG 1.4.13 — dismissible) through the shared layer
433
494
  // stack. A visible tip is the top-most layer, so it takes the press and
@@ -465,7 +526,7 @@ export function useTooltipWithTriggerBehavior(options = {}) {
465
526
  onDismiss: () => {
466
527
  clearTimeouts();
467
528
  clearTapOpen();
468
- unpinPress();
529
+ dropHold();
469
530
  if (isOpen !== undefined) {
470
531
  onHide?.();
471
532
  return;
@@ -498,7 +559,7 @@ export function useTooltipWithTriggerBehavior(options = {}) {
498
559
  // something else in the shared interactive-ancestor walk, so a
499
560
  // clickable container around the trigger leaves the press alone while
500
561
  // document listeners still see it.
501
- // The pin's announcement reads this element's text.
562
+ // The hold's announcement reads this element's text.
502
563
  _jsx("div", {
503
564
  ref: contentRefs,
504
565
  ...{
@@ -507,12 +568,37 @@ export function useTooltipWithTriggerBehavior(options = {}) {
507
568
  children: children
508
569
  }), renderProps);
509
570
  }, [renderLayer, placement, alignment, popoverXstyle, cancelHide, scheduleHide, contentRefs]);
571
+ const show = useCallback(() => {
572
+ clearTimeouts();
573
+ if (!isEnabled) {
574
+ return;
575
+ }
576
+ setHeld(true);
577
+ armOutsideDismiss();
578
+ isHoldFromPressRef.current = isTriggerPressedRef.current;
579
+ isHoldInThisTaskRef.current = true;
580
+ triggerRef.current?.ownerDocument.defaultView?.setTimeout(() => {
581
+ isHoldInThisTaskRef.current = false;
582
+ }, 0);
583
+ const latest = latestRef.current;
584
+ if (latest.isOpen !== undefined) {
585
+ latest.onShow?.();
586
+ return;
587
+ }
588
+ showLayer();
589
+ }, [clearTimeouts, isEnabled, setHeld, armOutsideDismiss, showLayer]);
590
+ const hide = useCallback(() => {
591
+ clearTimeouts();
592
+ releaseHold();
593
+ }, [clearTimeouts, releaseHold]);
510
594
  return {
511
595
  ref,
512
596
  positionRef: layerRef,
513
597
  interactionRef,
514
598
  anchorId: layerAnchorId,
515
599
  describedBy: layerId,
516
- renderTooltip
600
+ renderTooltip,
601
+ show,
602
+ hide
517
603
  };
518
604
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BaseTypeahead.d.ts","sourceRoot":"","sources":["../../src/Typeahead/BaseTypeahead.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAgCnD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAgB,cAAc,EAAE,YAAY,EAAC,MAAM,SAAS,CAAC;AAmBzE,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,cAAc,CAAE,SAAQ,IAAI,CACxE,SAAS,CAAC,WAAW,CAAC,EACtB,UAAU,CACX;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAE9B;;OAEG;IACH,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAEhB;;OAEG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAEnC;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC;IAEpC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC;IAE5B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;OASG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAEtD;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;IAE3B;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAE1C;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAE/D;;;;OAIG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC3B;AA8MD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,aAAa,EAq1CrB,CAAC,CAAC,SAAS,cAAc,EAC5B,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,KACzB,KAAK,CAAC,YAAY,CAAC"}
1
+ {"version":3,"file":"BaseTypeahead.d.ts","sourceRoot":"","sources":["../../src/Typeahead/BaseTypeahead.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAQZ,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAgCnD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAgB,cAAc,EAAE,YAAY,EAAC,MAAM,SAAS,CAAC;AAmBzE,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,cAAc,CAAE,SAAQ,IAAI,CACxE,SAAS,CAAC,WAAW,CAAC,EACtB,UAAU,CACX;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAE9B;;OAEG;IACH,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAEhB;;OAEG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAEnC;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC;IAEpC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC;IAE5B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;OASG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAEtD;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;IAE3B;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAE1C;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAE/D;;;;OAIG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC3B;AA8MD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,aAAa,EA81CrB,CAAC,CAAC,SAAS,cAAc,EAC5B,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,KACzB,KAAK,CAAC,YAAY,CAAC"}
@@ -19,7 +19,7 @@
19
19
  * - /packages/core/src/Typeahead/index.ts
20
20
  * - /packages/cli/assets/templates/blocks/components/Typeahead/ (showcase blocks)
21
21
  */
22
- import React, { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';
22
+ import React, { useCallback, useEffect, useId, useInsertionEffect, useMemo, useRef, useState } from 'react';
23
23
  import * as stylex from '@stylexjs/stylex';
24
24
  import { useBusyIndicatorLane } from "./busyIndicatorLane.js";
25
25
  import { useTrailingKeyDown } from "./trailingKeyDown.js";
@@ -455,15 +455,6 @@ export const BaseTypeahead = function BaseTypeahead({
455
455
  // source: they can never be re-shown, so focus bootstraps the new source.
456
456
  const sourceGenRef = useRef(0);
457
457
 
458
- // Results still arriving from a replaced source must not land in the new
459
- // one's menu.
460
- const prevSearchSourceRef = useRef(searchSource);
461
- if (prevSearchSourceRef.current !== searchSource) {
462
- prevSearchSourceRef.current.cancel?.();
463
- prevSearchSourceRef.current = searchSource;
464
- sourceGenRef.current = ++searchGenRef.current;
465
- }
466
-
467
458
  // The previous source is remembered in state, not a ref, so a render React
468
459
  // discards cannot consume the comparison without its state updates.
469
460
  const [sourceOfState, setSourceOfState] = useState(searchSource);
@@ -473,7 +464,6 @@ export const BaseTypeahead = function BaseTypeahead({
473
464
  setIsLoading(false);
474
465
  setHasSearched(false);
475
466
  }
476
- loadingRef.current = false;
477
467
  }
478
468
  // A field that becomes disabled stops showing a search as busy in the same
479
469
  // render, and the dropped query shows no outcome, so no empty state; the
@@ -487,15 +477,34 @@ export const BaseTypeahead = function BaseTypeahead({
487
477
  }
488
478
  }
489
479
 
490
- // When the search source is replaced, any in-flight load from the previous
491
- // source is abandoned (generation bumped above). Notify the wrapper's busy lane
492
- // in an effect so external store listeners run safely after commit.
493
- const isInitialMountRef = useRef(true);
494
- useEffect(() => {
495
- if (isInitialMountRef.current) {
496
- isInitialMountRef.current = false;
480
+ // Results that arrive from a replaced source must not land in the new
481
+ // source's menu, so the replacement starts a new generation. That happens
482
+ // when the replacement commits, not in render. React can render a
483
+ // replacement and then discard it, for example when a transition suspends
484
+ // and a newer update replaces it. The source that stays then keeps its read.
485
+ // An insertion effect runs before every layout effect and ref callback of
486
+ // its commit. A read that one of them starts against the replacement gets a
487
+ // later generation, after the replaced source stopped its requests.
488
+ const prevSearchSourceRef = useRef(searchSource);
489
+ const isSourceReplacedRef = useRef(false);
490
+ useInsertionEffect(() => {
491
+ if (prevSearchSourceRef.current === searchSource) {
492
+ return;
493
+ }
494
+ prevSearchSourceRef.current.cancel?.();
495
+ prevSearchSourceRef.current = searchSource;
496
+ sourceGenRef.current = ++searchGenRef.current;
497
+ // The replacing render cleared the busy state.
498
+ loadingRef.current = false;
499
+ isSourceReplacedRef.current = true;
500
+ }, [searchSource]);
501
+ // Syncs the wrapper's busy lane. A read of the replacement that already
502
+ // started keeps the lane busy.
503
+ useIsomorphicLayoutEffect(() => {
504
+ if (!isSourceReplacedRef.current) {
497
505
  return;
498
506
  }
507
+ isSourceReplacedRef.current = false;
499
508
  if (!loadingRef.current) {
500
509
  onLoadingChangeRef.current?.(false);
501
510
  }
@@ -31,7 +31,8 @@ export interface TypeaheadItemProps<T extends SearchableItem = SearchableItem> e
31
31
  */
32
32
  isDisabled?: boolean;
33
33
  /**
34
- * Group label for grouping items visually.
34
+ * This prop has no effect. Set `item.auxiliaryData.group` on search-source
35
+ * items to group results in Typeahead or BaseTypeahead.
35
36
  */
36
37
  group?: string;
37
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TypeaheadItem.d.ts","sourceRoot":"","sources":["../../src/Typeahead/TypeaheadItem.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAQ5C,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAQ5C,MAAM,WAAW,kBAAkB,CACjC,CAAC,SAAS,cAAc,GAAG,cAAc,CACzC,SAAQ,SAAS,CAAC,cAAc,CAAC;IACjC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC;IAER;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA6CD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,cAAc,EAAE,EACtD,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,UAAkB,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,kBAAkB,CAAC,CAAC,CAAC,qBAyBvB;yBApCe,aAAa"}
1
+ {"version":3,"file":"TypeaheadItem.d.ts","sourceRoot":"","sources":["../../src/Typeahead/TypeaheadItem.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAQ5C,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAQ5C,MAAM,WAAW,kBAAkB,CACjC,CAAC,SAAS,cAAc,GAAG,cAAc,CACzC,SAAQ,SAAS,CAAC,cAAc,CAAC;IACjC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC;IAER;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA6CD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,cAAc,EAAE,EACtD,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,UAAkB,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,kBAAkB,CAAC,CAAC,CAAC,qBAyBvB;yBApCe,aAAa"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * A channel the animator drives. `x` and `y` translate the element (px).
3
+ * `scale` scales it about its transform origin (1 is its size). `rotate`
4
+ * turns it (degrees, clockwise), and `opacity` fades it (0 to 1).
5
+ */
6
+ export type AnimatorChannel = 'x' | 'y' | 'scale' | 'rotate' | 'opacity';
7
+ /**
8
+ * Values by channel. A velocity uses the same keys, in units per second:
9
+ * px/s, scale per second, deg/s, opacity per second.
10
+ */
11
+ export type AnimatorValues = Partial<Record<AnimatorChannel, number>>;
12
+ /** Every channel's value (or velocity), as `get` and `getVelocity` read it. */
13
+ export type AnimatorSnapshot = Readonly<Record<AnimatorChannel, number>>;
14
+ /** Options of `AnimatorHandle.animate`. */
15
+ export interface AnimatorAnimateOptions {
16
+ /**
17
+ * Each channel's velocity at the start, such as a drag's release velocity.
18
+ * A channel without one keeps the
19
+ * velocity it has on screen, so an `animate` that interrupts another
20
+ * carries on smoothly.
21
+ */
22
+ velocity?: AnimatorValues;
23
+ }
24
+ /**
25
+ * A release velocity for `AnimatorHandle.decay`, per channel, in its units
26
+ * per second. That is px/s for `x` and `y`, and degrees per second for
27
+ * `rotate`. `scale` and `opacity` take their units per second.
28
+ */
29
+ export type AnimatorDecayVelocity = AnimatorValues;
30
+ /**
31
+ * Animates one element. Each method acts on the channels it is given and
32
+ * leaves the others where they are.
33
+ */
34
+ export interface AnimatorHandle {
35
+ /**
36
+ * Springs the given channels to `target` on the `springs.stateChange`
37
+ * motion role, from wherever they are on screen. The promise resolves when
38
+ * they arrive, or as soon as a later `animate`, `decay`, `set` or `stop`
39
+ * takes any of them over.
40
+ */
41
+ animate(target: AnimatorValues, options?: AnimatorAnimateOptions): Promise<void>;
42
+ /**
43
+ * Coasts the given channels from a release velocity, slowing as a scroll
44
+ * view's momentum does. It resolves when they stop, or when another call
45
+ * takes them over. The distance follows from the velocity alone: there are
46
+ * no bounds, except that opacity stops at 0 or 1.
47
+ */
48
+ decay(velocity: AnimatorDecayVelocity): Promise<void>;
49
+ /**
50
+ * Puts the given channels at these values at once, ending their motion:
51
+ * the per-frame write of a drag.
52
+ */
53
+ set(values: AnimatorValues): void;
54
+ /** Every channel's value on screen now. */
55
+ get(): AnimatorSnapshot;
56
+ /** Every channel's velocity on screen now, in units per second. */
57
+ getVelocity(): AnimatorSnapshot;
58
+ /** Halts every channel where it is on screen. */
59
+ stop(): void;
60
+ }
61
+ /** What `createAnimator` returns: the handle, and `destroy`. */
62
+ export interface Animator extends AnimatorHandle {
63
+ /**
64
+ * Stops every motion and lets go of the element; the element keeps the
65
+ * values it shows. The animator does nothing after this.
66
+ */
67
+ destroy(): void;
68
+ }
69
+ /**
70
+ * An animator whose element is attached later, through `attach`. It is the
71
+ * one construction `createAnimator` and `useAnimator` share, so the hook has
72
+ * no behavior of its own. Not exported from the package.
73
+ */
74
+ export declare function createAttachableAnimator(): {
75
+ readonly animator: Animator;
76
+ readonly attach: (element: HTMLElement | null) => void;
77
+ };
78
+ /**
79
+ * Animates `element` with the motion Core uses. `animate` springs channels to
80
+ * a target on the state-change motion, and `decay` coasts them from a release
81
+ * velocity. `set` jumps them, `get` and `getVelocity` read them, `stop` halts
82
+ * them, and `destroy` lets the element go. Under Reduce Motion every call is
83
+ * planned. A move becomes a short cross-fade on a touch screen, and it lands
84
+ * at once with a mouse.
85
+ *
86
+ * Use one animator per element: two on one element overwrite each other.
87
+ *
88
+ * @example
89
+ * ```
90
+ * const card = document.querySelector('.card');
91
+ * const animator = createAnimator(card);
92
+ * await animator.animate({x: 0, rotate: 0}, {velocity: {x: -900}});
93
+ * animator.decay({x: 2400});
94
+ * animator.destroy();
95
+ * ```
96
+ */
97
+ export declare function createAnimator(element: HTMLElement): Animator;
98
+ //# sourceMappingURL=createAnimator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAnimator.d.ts","sourceRoot":"","sources":["../../src/animator/createAnimator.ts"],"names":[],"mappings":"AA+BA;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,GAAG,GAAG,GAAG,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEzE;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;AAEtE,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;AAEzE,2CAA2C;AAC3C,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,cAAc,CAAC;AAEnD;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,OAAO,CACL,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD;;;OAGG;IACH,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAClC,2CAA2C;IAC3C,GAAG,IAAI,gBAAgB,CAAC;IACxB,mEAAmE;IACnE,WAAW,IAAI,gBAAgB,CAAC;IAChC,iDAAiD;IACjD,IAAI,IAAI,IAAI,CAAC;CACd;AAED,gEAAgE;AAChE,MAAM,WAAW,QAAS,SAAQ,cAAc;IAC9C;;;OAGG;IACH,OAAO,IAAI,IAAI,CAAC;CACjB;AAqFD;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI;IAC1C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;CACxD,CA+FA;AAKD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,QAAQ,CAI7D"}