@astryxdesign/core 0.7.7 → 0.7.8-canary.36cde5e

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 (581) 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 +5 -0
  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 +15 -16
  20. package/dist/Carousel/Carousel.d.ts.map +1 -1
  21. package/dist/Carousel/Carousel.js +2 -0
  22. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  23. package/dist/Chat/ChatComposerInput.js +4 -0
  24. package/dist/Chat/ChatMessageList.d.ts.map +1 -1
  25. package/dist/Chat/ChatMessageList.js +2 -1
  26. package/dist/Chat/useChatDictation.d.ts.map +1 -1
  27. package/dist/Chat/useChatDictation.js +2 -0
  28. package/dist/Chat/useChatNewMessages.js +1 -1
  29. package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
  30. package/dist/Chat/useChatStreamScroll.js +2 -0
  31. package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
  32. package/dist/Chat/useSpeechRecognition.js +3 -0
  33. package/dist/Chat/useTriggerMenu.js +1 -1
  34. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  35. package/dist/CheckboxInput/CheckboxInput.js +17 -12
  36. package/dist/CodeBlock/CodeBlock.d.ts +10 -1
  37. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  38. package/dist/CodeBlock/CodeBlock.js +28 -11
  39. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  40. package/dist/CommandPalette/CommandPalette.js +2 -0
  41. package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
  42. package/dist/CommandPalette/CommandPaletteItem.js +2 -0
  43. package/dist/ComplexSelector/ComplexSelector.d.ts +4 -1
  44. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  45. package/dist/ComplexSelector/ComplexSelector.js +14 -4
  46. package/dist/ContextMenu/ContextMenu.js +2 -2
  47. package/dist/DateInput/MonthScroller.d.ts.map +1 -1
  48. package/dist/DateInput/MonthScroller.js +5 -2
  49. package/dist/DateInput/PickerWheel.d.ts +19 -0
  50. package/dist/DateInput/PickerWheel.d.ts.map +1 -0
  51. package/dist/DateInput/PickerWheel.js +625 -0
  52. package/dist/DateInput/TouchDateField.d.ts.map +1 -1
  53. package/dist/DateInput/TouchDateField.js +1 -0
  54. package/dist/DateInput/Wheel.d.ts +18 -37
  55. package/dist/DateInput/Wheel.d.ts.map +1 -1
  56. package/dist/DateInput/Wheel.js +84 -113
  57. package/dist/DateInput/useOwnScrollGesture.d.ts +10 -0
  58. package/dist/DateInput/useOwnScrollGesture.d.ts.map +1 -1
  59. package/dist/DateInput/useOwnScrollGesture.js +16 -3
  60. package/dist/DateInput/usePointerDragScroll.d.ts.map +1 -1
  61. package/dist/DateInput/usePointerDragScroll.js +2 -0
  62. package/dist/DateInput/useScrollSettle.d.ts.map +1 -1
  63. package/dist/DateInput/useScrollSettle.js +3 -0
  64. package/dist/DateInput/useWheelListbox.d.ts +59 -0
  65. package/dist/DateInput/useWheelListbox.d.ts.map +1 -0
  66. package/dist/DateInput/useWheelListbox.js +88 -0
  67. package/dist/DateInput/wheelOptions.d.ts +74 -0
  68. package/dist/DateInput/wheelOptions.d.ts.map +1 -0
  69. package/dist/DateInput/wheelOptions.js +98 -0
  70. package/dist/DateInput/wheelPhysics.d.ts +127 -0
  71. package/dist/DateInput/wheelPhysics.d.ts.map +1 -0
  72. package/dist/DateInput/wheelPhysics.js +341 -0
  73. package/dist/DateInput/wheelStrip.d.ts +92 -0
  74. package/dist/DateInput/wheelStrip.d.ts.map +1 -0
  75. package/dist/DateInput/wheelStrip.js +258 -0
  76. package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -1
  77. package/dist/DateTimeInput/TouchDateTimeField.js +2 -0
  78. package/dist/Dialog/Dialog.d.ts.map +1 -1
  79. package/dist/Dialog/Dialog.js +9 -32
  80. package/dist/Drawer/useDrawerDialogPresence.d.ts.map +1 -1
  81. package/dist/Drawer/useDrawerDialogPresence.js +3 -0
  82. package/dist/DropdownMenu/useMenuOverflow.d.ts.map +1 -1
  83. package/dist/DropdownMenu/useMenuOverflow.js +5 -0
  84. package/dist/Field/Field.js +2 -2
  85. package/dist/FieldStatus/useFieldStatusAnnouncement.d.ts.map +1 -1
  86. package/dist/FieldStatus/useFieldStatusAnnouncement.js +1 -0
  87. package/dist/FormLayout/FormLayout.d.ts +5 -1
  88. package/dist/FormLayout/FormLayout.d.ts.map +1 -1
  89. package/dist/HoverCard/HoverCard.d.ts +6 -4
  90. package/dist/HoverCard/HoverCard.d.ts.map +1 -1
  91. package/dist/HoverCard/HoverCard.js +48 -3
  92. package/dist/HoverCard/useHoverCard.d.ts +5 -4
  93. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  94. package/dist/HoverCard/useHoverCard.js +20 -33
  95. package/dist/Icon/Icon.d.ts +5 -1
  96. package/dist/Icon/Icon.d.ts.map +1 -1
  97. package/dist/Icon/Icon.js +5 -2
  98. package/dist/Item/useSwipeAction.d.ts.map +1 -1
  99. package/dist/Item/useSwipeAction.js +3 -0
  100. package/dist/Layer/modalOutlet.d.ts.map +1 -1
  101. package/dist/Layer/modalOutlet.js +2 -0
  102. package/dist/Layer/outsidePress.d.ts.map +1 -1
  103. package/dist/Layer/outsidePress.js +1 -0
  104. package/dist/Layer/useLayer.d.ts.map +1 -1
  105. package/dist/Layer/useLayer.js +3 -0
  106. package/dist/Layer/useLayerDismissal.d.ts.map +1 -1
  107. package/dist/Layer/useLayerDismissal.js +3 -0
  108. package/dist/Layer/usePressPin.d.ts +17 -5
  109. package/dist/Layer/usePressPin.d.ts.map +1 -1
  110. package/dist/Layer/usePressPin.js +62 -12
  111. package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
  112. package/dist/Layer/useTouchTrigger.js +3 -0
  113. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  114. package/dist/Lightbox/Lightbox.js +19 -0
  115. package/dist/MobileNav/MobileNav.d.ts +3 -2
  116. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  117. package/dist/MobileNav/MobileNav.js +9 -25
  118. package/dist/Outline/useOutlineFromDOM.d.ts.map +1 -1
  119. package/dist/Outline/useOutlineFromDOM.js +3 -0
  120. package/dist/Outline/useScrollSpy.d.ts.map +1 -1
  121. package/dist/Outline/useScrollSpy.js +3 -0
  122. package/dist/OverflowList/OverflowList.d.ts.map +1 -1
  123. package/dist/OverflowList/OverflowList.js +3 -0
  124. package/dist/Popover/Popover.d.ts.map +1 -1
  125. package/dist/Popover/Popover.js +6 -0
  126. package/dist/PowerSearch/PowerSearch.d.ts +43 -4
  127. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  128. package/dist/PowerSearch/PowerSearch.js +445 -134
  129. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts +102 -0
  130. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts.map +1 -0
  131. package/dist/PowerSearch/PowerSearchBottomSheet.js +1919 -0
  132. package/dist/PowerSearch/PowerSearchEditPopover.d.ts +35 -2
  133. package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
  134. package/dist/PowerSearch/PowerSearchEditPopover.js +25 -6
  135. package/dist/PowerSearch/PowerSearchFilterEditor.d.ts +1 -1
  136. package/dist/PowerSearch/PowerSearchFilterEditor.d.ts.map +1 -1
  137. package/dist/PowerSearch/PowerSearchFilterEditor.js +4 -2
  138. package/dist/PowerSearch/PowerSearchToken.d.ts +1 -1
  139. package/dist/PowerSearch/PowerSearchToken.d.ts.map +1 -1
  140. package/dist/PowerSearch/PowerSearchToken.js +7 -2
  141. package/dist/PowerSearch/PowerSearchValueEditor.d.ts +38 -3
  142. package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
  143. package/dist/PowerSearch/PowerSearchValueEditor.js +193 -83
  144. package/dist/PowerSearch/formatFilterValue.d.ts +18 -6
  145. package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
  146. package/dist/PowerSearch/formatFilterValue.js +33 -12
  147. package/dist/PowerSearch/formatTokenValue.d.ts +28 -0
  148. package/dist/PowerSearch/formatTokenValue.d.ts.map +1 -0
  149. package/dist/PowerSearch/formatTokenValue.js +162 -0
  150. package/dist/PowerSearch/powerSearchDateZone.d.ts +21 -0
  151. package/dist/PowerSearch/powerSearchDateZone.d.ts.map +1 -0
  152. package/dist/PowerSearch/powerSearchDateZone.js +37 -0
  153. package/dist/PowerSearch/powerSearchSheetUtils.d.ts +65 -0
  154. package/dist/PowerSearch/powerSearchSheetUtils.d.ts.map +1 -0
  155. package/dist/PowerSearch/powerSearchSheetUtils.js +168 -0
  156. package/dist/PowerSearch/types.d.ts +2 -0
  157. package/dist/PowerSearch/types.d.ts.map +1 -1
  158. package/dist/ProgressBar/ProgressBarTouch.d.ts.map +1 -1
  159. package/dist/ProgressBar/ProgressBarTouch.js +2 -0
  160. package/dist/RadioList/RadioList.d.ts.map +1 -1
  161. package/dist/RadioList/RadioList.js +3 -2
  162. package/dist/RadioList/RadioListItem.d.ts +1 -1
  163. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  164. package/dist/RadioList/RadioListItem.js +5 -3
  165. package/dist/Resizable/ResizeHandle.d.ts +2 -1
  166. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  167. package/dist/Resizable/ResizeHandle.js +101 -77
  168. package/dist/Resizable/createResizable.d.ts +145 -0
  169. package/dist/Resizable/createResizable.d.ts.map +1 -0
  170. package/dist/Resizable/createResizable.js +575 -0
  171. package/dist/Resizable/useResizable.d.ts +3 -3
  172. package/dist/Resizable/useResizable.d.ts.map +1 -1
  173. package/dist/Resizable/useResizable.js +252 -459
  174. package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts.map +1 -1
  175. package/dist/SegmentedControl/useSegmentedSelectionMotion.js +3 -3
  176. package/dist/SelectableCard/SelectableCard.d.ts +2 -0
  177. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  178. package/dist/SelectableCard/SelectableCard.js +36 -11
  179. package/dist/SelectableCard/selectableCardInput.d.ts +12 -0
  180. package/dist/SelectableCard/selectableCardInput.d.ts.map +1 -0
  181. package/dist/SelectableCard/selectableCardInput.js +20 -0
  182. package/dist/Selector/Selector.d.ts.map +1 -1
  183. package/dist/Selector/Selector.js +5 -8
  184. package/dist/Slider/sliderTouchController.js +2 -2
  185. package/dist/Spinner/Spinner.d.ts +1 -1
  186. package/dist/Spinner/Spinner.d.ts.map +1 -1
  187. package/dist/Spinner/Spinner.js +60 -58
  188. package/dist/Switch/Switch.d.ts.map +1 -1
  189. package/dist/Switch/Switch.js +4 -10
  190. package/dist/Switch/useSwitchTouch.js +4 -4
  191. package/dist/Table/BaseTable.d.ts.map +1 -1
  192. package/dist/Table/BaseTable.js +29 -8
  193. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  194. package/dist/Table/plugins/columnResize/useTableColumnResize.js +3 -1
  195. package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
  196. package/dist/Table/plugins/filtering/useTableFiltering.js +2 -1
  197. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  198. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +4 -0
  199. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
  200. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +2 -0
  201. package/dist/TextInput/TextInput.d.ts +2 -2
  202. package/dist/TextInput/TextInput.d.ts.map +1 -1
  203. package/dist/TextInput/TextInput.js +10 -7
  204. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  205. package/dist/TimeInput/TimeInput.js +2 -0
  206. package/dist/TimeInput/TouchTimeField.d.ts.map +1 -1
  207. package/dist/TimeInput/TouchTimeField.js +2 -0
  208. package/dist/Timer/Timer.d.ts.map +1 -1
  209. package/dist/Timer/Timer.js +2 -0
  210. package/dist/Timestamp/Timestamp.js +1 -1
  211. package/dist/Toast/Toast.d.ts +11 -1
  212. package/dist/Toast/Toast.d.ts.map +1 -1
  213. package/dist/Toast/Toast.js +25 -15
  214. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  215. package/dist/Toast/ToastViewport.js +97 -34
  216. package/dist/Toast/types.d.ts +9 -3
  217. package/dist/Toast/types.d.ts.map +1 -1
  218. package/dist/Toast/useToast.d.ts.map +1 -1
  219. package/dist/Toast/useToast.js +1 -0
  220. package/dist/Tokenizer/Tokenizer.d.ts +49 -37
  221. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  222. package/dist/Tokenizer/Tokenizer.js +22 -19
  223. package/dist/Tokenizer/TokenizerBottomSheet.d.ts +1 -1
  224. package/dist/Tokenizer/TokenizerBottomSheet.js +1 -1
  225. package/dist/Tokenizer/index.d.ts +1 -1
  226. package/dist/Tokenizer/index.d.ts.map +1 -1
  227. package/dist/Tooltip/useTooltip.d.ts +19 -1
  228. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  229. package/dist/Tooltip/useTooltip.js +34 -53
  230. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  231. package/dist/Typeahead/BaseTypeahead.js +27 -18
  232. package/dist/Typeahead/TypeaheadItem.d.ts +2 -1
  233. package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
  234. package/dist/animator/createAnimator.d.ts +98 -0
  235. package/dist/animator/createAnimator.d.ts.map +1 -0
  236. package/dist/animator/createAnimator.js +259 -0
  237. package/dist/astryx.css +39 -6
  238. package/dist/gestures/GestureHost.d.ts +16 -1
  239. package/dist/gestures/GestureHost.d.ts.map +1 -1
  240. package/dist/gestures/GestureHost.js +1 -1
  241. package/dist/gestures/PressTracker.d.ts.map +1 -1
  242. package/dist/gestures/PressTracker.js +4 -3
  243. package/dist/hooks/ModalAnnounceProvider.d.ts.map +1 -1
  244. package/dist/hooks/ModalAnnounceProvider.js +1 -0
  245. package/dist/hooks/actionGroupTracker.d.ts +4 -1
  246. package/dist/hooks/actionGroupTracker.d.ts.map +1 -1
  247. package/dist/hooks/actionGroupTracker.js +13 -3
  248. package/dist/hooks/index.d.ts +1 -0
  249. package/dist/hooks/index.d.ts.map +1 -1
  250. package/dist/hooks/index.js +1 -0
  251. package/dist/hooks/longPressDetector.d.ts +66 -0
  252. package/dist/hooks/longPressDetector.d.ts.map +1 -0
  253. package/dist/hooks/longPressDetector.js +200 -0
  254. package/dist/hooks/pressGroupContext.d.ts +6 -0
  255. package/dist/hooks/pressGroupContext.d.ts.map +1 -0
  256. package/dist/hooks/pressGroupContext.js +20 -0
  257. package/dist/hooks/rootScrollStyles.d.ts +48 -0
  258. package/dist/hooks/rootScrollStyles.d.ts.map +1 -0
  259. package/dist/hooks/rootScrollStyles.js +207 -0
  260. package/dist/hooks/scrollLockTouchGuard.d.ts +13 -0
  261. package/dist/hooks/scrollLockTouchGuard.d.ts.map +1 -0
  262. package/dist/hooks/scrollLockTouchGuard.js +134 -0
  263. package/dist/hooks/scrollbarGutter.d.ts +4 -4
  264. package/dist/hooks/scrollbarGutter.d.ts.map +1 -1
  265. package/dist/hooks/scrollbarGutter.js +36 -23
  266. package/dist/hooks/useActionGroupTracking.d.ts +53 -0
  267. package/dist/hooks/useActionGroupTracking.d.ts.map +1 -0
  268. package/dist/hooks/useActionGroupTracking.js +174 -0
  269. package/dist/hooks/useAnimator.d.ts +41 -0
  270. package/dist/hooks/useAnimator.d.ts.map +1 -0
  271. package/dist/hooks/useAnimator.js +70 -0
  272. package/dist/hooks/useAnnounceRenderedText.d.ts.map +1 -1
  273. package/dist/hooks/useAnnounceRenderedText.js +1 -0
  274. package/dist/hooks/useAttachment.d.ts +1 -1
  275. package/dist/hooks/useAttachment.js +1 -1
  276. package/dist/hooks/useAutoMediaMode.d.ts.map +1 -1
  277. package/dist/hooks/useAutoMediaMode.js +1 -0
  278. package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
  279. package/dist/hooks/useBusyAnnouncement.js +2 -0
  280. package/dist/hooks/useDevWarning.d.ts.map +1 -1
  281. package/dist/hooks/useDevWarning.js +2 -0
  282. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  283. package/dist/hooks/useFocusTrap.js +2 -0
  284. package/dist/hooks/useGridFocus.d.ts +8 -5
  285. package/dist/hooks/useGridFocus.d.ts.map +1 -1
  286. package/dist/hooks/useGridFocus.js +4 -3
  287. package/dist/hooks/useHotkeys.d.ts.map +1 -1
  288. package/dist/hooks/useHotkeys.js +3 -0
  289. package/dist/hooks/useImageMode.d.ts.map +1 -1
  290. package/dist/hooks/useImageMode.js +3 -0
  291. package/dist/hooks/useInputStatusIcon.d.ts +1 -1
  292. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  293. package/dist/hooks/useInputStatusIcon.js +2 -2
  294. package/dist/hooks/useKeyboardHint.js +1 -1
  295. package/dist/hooks/useLongPress.d.ts +8 -9
  296. package/dist/hooks/useLongPress.d.ts.map +1 -1
  297. package/dist/hooks/useLongPress.js +23 -106
  298. package/dist/hooks/useMenuHover.d.ts.map +1 -1
  299. package/dist/hooks/useMenuHover.js +2 -0
  300. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  301. package/dist/hooks/useMenuPress.js +3 -0
  302. package/dist/hooks/useOverflow.d.ts.map +1 -1
  303. package/dist/hooks/useOverflow.js +2 -1
  304. package/dist/hooks/usePressFeedback.d.ts.map +1 -1
  305. package/dist/hooks/usePressFeedback.js +1 -0
  306. package/dist/hooks/useResolvedRequired.d.ts +3 -0
  307. package/dist/hooks/useResolvedRequired.d.ts.map +1 -1
  308. package/dist/hooks/useResolvedRequired.js +3 -0
  309. package/dist/hooks/useScrollLock.d.ts +7 -9
  310. package/dist/hooks/useScrollLock.d.ts.map +1 -1
  311. package/dist/hooks/useScrollLock.js +55 -48
  312. package/dist/hooks/useScrollableArea.d.ts.map +1 -1
  313. package/dist/hooks/useScrollableArea.js +5 -0
  314. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  315. package/dist/hooks/useStreamingText.js +3 -0
  316. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts +8 -0
  317. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts.map +1 -0
  318. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.js +42 -0
  319. package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.d.ts.map +1 -1
  320. package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.js +6 -0
  321. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts +8 -0
  322. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts.map +1 -0
  323. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.js +14 -0
  324. package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
  325. package/dist/i18n/generated-locales/en.generated.js +30 -0
  326. package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
  327. package/dist/i18n/generated-locales/pseudo.generated.js +30 -0
  328. package/dist/index.d.ts +1 -0
  329. package/dist/index.d.ts.map +1 -1
  330. package/dist/index.js +4 -0
  331. package/dist/internal/indicatorPress.stylex.d.ts +20 -0
  332. package/dist/internal/indicatorPress.stylex.d.ts.map +1 -0
  333. package/dist/internal/indicatorPress.stylex.js +26 -0
  334. package/dist/internal/selectable-card.d.ts +21 -0
  335. package/dist/internal/selectable-card.d.ts.map +1 -0
  336. package/dist/internal/selectable-card.js +20 -0
  337. package/dist/internal/sheetDraft.d.ts +2 -2
  338. package/dist/internal/sheetDraft.js +2 -2
  339. package/dist/motion/animatedLayout.d.ts.map +1 -1
  340. package/dist/motion/animatedLayout.js +7 -7
  341. package/dist/motion/animator.d.ts +14 -14
  342. package/dist/motion/animator.d.ts.map +1 -1
  343. package/dist/motion/animator.js +45 -20
  344. package/dist/motion/progress.d.ts +88 -0
  345. package/dist/motion/progress.d.ts.map +1 -0
  346. package/dist/motion/progress.js +128 -0
  347. package/dist/motion/reducedMotion.d.ts.map +1 -1
  348. package/dist/motion/reducedMotion.js +3 -1
  349. package/dist/motion/uikit/alert.d.ts +41 -0
  350. package/dist/motion/uikit/alert.d.ts.map +1 -0
  351. package/dist/motion/uikit/alert.js +43 -0
  352. package/dist/motion/uikit/index.d.ts +4 -3
  353. package/dist/motion/uikit/index.d.ts.map +1 -1
  354. package/dist/motion/uikit/index.js +4 -3
  355. package/dist/motion/uikit/picker.d.ts +96 -0
  356. package/dist/motion/uikit/picker.d.ts.map +1 -0
  357. package/dist/motion/uikit/picker.js +117 -0
  358. package/dist/privateAttributes/pressGroupItem.stylex.d.ts +22 -0
  359. package/dist/privateAttributes/pressGroupItem.stylex.d.ts.map +1 -0
  360. package/dist/privateAttributes/pressGroupItem.stylex.js +36 -0
  361. package/dist/privateAttributes/reducedMotion.stylex.d.ts +23 -0
  362. package/dist/privateAttributes/reducedMotion.stylex.d.ts.map +1 -0
  363. package/dist/privateAttributes/reducedMotion.stylex.js +40 -0
  364. package/dist/theme/Theme.d.ts.map +1 -1
  365. package/dist/theme/Theme.js +29 -4
  366. package/dist/theme/motionKnobs.d.ts +4 -3
  367. package/dist/theme/motionKnobs.d.ts.map +1 -1
  368. package/dist/theme/motionKnobs.js +3 -2
  369. package/dist/theme/themeMotion.d.ts +6 -0
  370. package/dist/theme/themeMotion.d.ts.map +1 -1
  371. package/dist/theme/themeMotion.js +7 -0
  372. package/dist/utils/dateParser.d.ts.map +1 -1
  373. package/dist/utils/dateParser.js +12 -0
  374. package/dist/utils/focusReturn.d.ts +15 -0
  375. package/dist/utils/focusReturn.d.ts.map +1 -1
  376. package/dist/utils/focusReturn.js +28 -0
  377. package/dist/utils/interactionModality.d.ts.map +1 -1
  378. package/dist/utils/interactionModality.js +4 -0
  379. package/dist/utils/interactionOverlay.stylex.d.ts +3 -2
  380. package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
  381. package/dist/utils/interactionOverlay.stylex.js +3 -2
  382. package/dist/utils/plainDate.d.ts +8 -0
  383. package/dist/utils/plainDate.d.ts.map +1 -1
  384. package/dist/utils/plainDate.js +19 -0
  385. package/dist/utils/pressFeedback.d.ts.map +1 -1
  386. package/dist/utils/pressFeedback.js +20 -6
  387. package/dist/utils/triggerFocus.d.ts +36 -0
  388. package/dist/utils/triggerFocus.d.ts.map +1 -0
  389. package/dist/utils/triggerFocus.js +65 -0
  390. package/locales/en.json +120 -0
  391. package/locales/pseudo.json +90 -0
  392. package/package.json +14 -9
  393. package/src/AlertDialog/AlertDialog.doc.mjs +2 -2
  394. package/src/AlertDialog/AlertDialog.tsx +46 -5
  395. package/src/AppShell/AppShell.tsx +4 -0
  396. package/src/BottomSheet/BottomSheet.tsx +1 -0
  397. package/src/BottomSheet/BottomSheetPanel.tsx +39 -3
  398. package/src/BottomSheet/BottomSheetSwitcher.tsx +5 -0
  399. package/src/BottomSheet/useMobileKeyboard.ts +4 -0
  400. package/src/BottomSheet/useSheetGestures.ts +10 -1
  401. package/src/Button/Button.tsx +26 -4
  402. package/src/Calendar/Calendar.tsx +36 -25
  403. package/src/Carousel/Carousel.tsx +1 -0
  404. package/src/Chat/ChatComposerInput.tsx +2 -0
  405. package/src/Chat/ChatMessageList.tsx +2 -1
  406. package/src/Chat/useChatDictation.ts +1 -0
  407. package/src/Chat/useChatNewMessages.ts +1 -1
  408. package/src/Chat/useChatStreamScroll.ts +2 -0
  409. package/src/Chat/useSpeechRecognition.ts +2 -0
  410. package/src/Chat/useTriggerMenu.tsx +1 -1
  411. package/src/CheckboxInput/CheckboxInput.doc.mjs +18 -0
  412. package/src/CheckboxInput/CheckboxInput.tsx +38 -15
  413. package/src/CodeBlock/CodeBlock.doc.mjs +9 -1
  414. package/src/CodeBlock/CodeBlock.tsx +41 -4
  415. package/src/CommandPalette/CommandPalette.tsx +1 -0
  416. package/src/CommandPalette/CommandPaletteItem.tsx +1 -0
  417. package/src/ComplexSelector/ComplexSelector.tsx +20 -5
  418. package/src/ContextMenu/ContextMenu.tsx +2 -2
  419. package/src/DateInput/MonthScroller.tsx +8 -2
  420. package/src/DateInput/PickerWheel.tsx +765 -0
  421. package/src/DateInput/TouchDateField.tsx +1 -0
  422. package/src/DateInput/Wheel.tsx +94 -150
  423. package/src/DateInput/useOwnScrollGesture.ts +25 -3
  424. package/src/DateInput/usePointerDragScroll.ts +1 -0
  425. package/src/DateInput/useScrollSettle.ts +2 -0
  426. package/src/DateInput/useWheelListbox.ts +112 -0
  427. package/src/DateInput/wheelOptions.ts +155 -0
  428. package/src/DateInput/wheelPhysics.ts +406 -0
  429. package/src/DateInput/wheelStrip.ts +341 -0
  430. package/src/DateTimeInput/TouchDateTimeField.tsx +2 -0
  431. package/src/Dialog/Dialog.tsx +12 -32
  432. package/src/Drawer/useDrawerDialogPresence.ts +2 -0
  433. package/src/DropdownMenu/useMenuOverflow.ts +3 -0
  434. package/src/Field/Field.tsx +2 -2
  435. package/src/FieldStatus/useFieldStatusAnnouncement.ts +1 -0
  436. package/src/FormLayout/FormLayout.doc.mjs +181 -46
  437. package/src/FormLayout/FormLayout.tsx +5 -1
  438. package/src/HoverCard/HoverCard.doc.mjs +10 -8
  439. package/src/HoverCard/HoverCard.tsx +58 -6
  440. package/src/HoverCard/useHoverCard.doc.mjs +178 -36
  441. package/src/HoverCard/useHoverCard.tsx +49 -54
  442. package/src/Icon/Icon.doc.mjs +49 -8
  443. package/src/Icon/Icon.tsx +15 -7
  444. package/src/IconButton/IconButton.doc.mjs +141 -21
  445. package/src/Item/useSwipeAction.ts +2 -0
  446. package/src/Layer/modalOutlet.ts +2 -0
  447. package/src/Layer/outsidePress.ts +1 -0
  448. package/src/Layer/useLayer.tsx +2 -0
  449. package/src/Layer/useLayerDismissal.ts +2 -0
  450. package/src/Layer/usePressPin.ts +81 -15
  451. package/src/Layer/useTouchTrigger.ts +2 -0
  452. package/src/Lightbox/Lightbox.tsx +19 -0
  453. package/src/MobileNav/MobileNav.tsx +9 -30
  454. package/src/Outline/useOutlineFromDOM.ts +2 -0
  455. package/src/Outline/useScrollSpy.ts +2 -0
  456. package/src/OverflowList/OverflowList.tsx +2 -0
  457. package/src/Popover/Popover.tsx +4 -0
  458. package/src/PowerSearch/PowerSearch.doc.mjs +60 -8
  459. package/src/PowerSearch/PowerSearch.tsx +627 -157
  460. package/src/PowerSearch/PowerSearchBottomSheet.tsx +2525 -0
  461. package/src/PowerSearch/PowerSearchEditPopover.tsx +39 -6
  462. package/src/PowerSearch/PowerSearchFilterEditor.tsx +2 -0
  463. package/src/PowerSearch/PowerSearchToken.tsx +7 -0
  464. package/src/PowerSearch/PowerSearchValueEditor.tsx +244 -58
  465. package/src/PowerSearch/formatFilterValue.ts +55 -17
  466. package/src/PowerSearch/formatTokenValue.ts +222 -0
  467. package/src/PowerSearch/powerSearchDateZone.ts +64 -0
  468. package/src/PowerSearch/powerSearchSheetUtils.ts +224 -0
  469. package/src/PowerSearch/types.ts +2 -0
  470. package/src/ProgressBar/ProgressBarTouch.ts +2 -0
  471. package/src/RadioList/RadioList.tsx +3 -2
  472. package/src/RadioList/RadioListItem.tsx +5 -3
  473. package/src/Resizable/Resizable.doc.mjs +5 -4
  474. package/src/Resizable/ResizeHandle.tsx +169 -109
  475. package/src/Resizable/createResizable.ts +831 -0
  476. package/src/Resizable/useResizable.ts +292 -623
  477. package/src/SegmentedControl/useSegmentedSelectionMotion.ts +6 -3
  478. package/src/SelectableCard/SelectableCard.tsx +39 -10
  479. package/src/SelectableCard/selectableCardInput.ts +30 -0
  480. package/src/Selector/Selector.tsx +5 -12
  481. package/src/Slider/sliderTouchController.ts +2 -2
  482. package/src/Spinner/Spinner.tsx +77 -63
  483. package/src/Switch/Switch.tsx +2 -6
  484. package/src/Switch/useSwitchTouch.ts +4 -4
  485. package/src/Table/BaseTable.tsx +46 -12
  486. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +2 -1
  487. package/src/Table/plugins/filtering/useTableFiltering.tsx +1 -0
  488. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +4 -0
  489. package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +2 -0
  490. package/src/TextInput/TextInput.tsx +11 -10
  491. package/src/TimeInput/TimeInput.tsx +2 -0
  492. package/src/TimeInput/TouchTimeField.tsx +2 -0
  493. package/src/Timer/Timer.tsx +1 -0
  494. package/src/Timestamp/Timestamp.tsx +1 -1
  495. package/src/Toast/Toast.doc.mjs +4 -3
  496. package/src/Toast/Toast.tsx +52 -32
  497. package/src/Toast/ToastViewport.tsx +123 -35
  498. package/src/Toast/types.ts +9 -3
  499. package/src/Toast/useToast.tsx +1 -0
  500. package/src/Tokenizer/Tokenizer.doc.mjs +19 -3
  501. package/src/Tokenizer/Tokenizer.tsx +73 -51
  502. package/src/Tokenizer/TokenizerBottomSheet.tsx +1 -1
  503. package/src/Tokenizer/index.ts +1 -0
  504. package/src/Tooltip/useTooltip.doc.mjs +24 -0
  505. package/src/Tooltip/useTooltip.tsx +61 -56
  506. package/src/Typeahead/BaseTypeahead.tsx +27 -17
  507. package/src/Typeahead/TypeaheadItem.doc.mjs +6 -3
  508. package/src/Typeahead/TypeaheadItem.tsx +2 -1
  509. package/src/animator/createAnimator.doc.mjs +153 -0
  510. package/src/animator/createAnimator.ts +324 -0
  511. package/src/gestures/GestureHost.ts +1 -1
  512. package/src/gestures/PressTracker.ts +4 -3
  513. package/src/gestures/README.md +10 -4
  514. package/src/hooks/ModalAnnounceProvider.tsx +1 -0
  515. package/src/hooks/actionGroupTracker.ts +20 -5
  516. package/src/hooks/index.ts +2 -0
  517. package/src/hooks/longPressDetector.ts +273 -0
  518. package/src/hooks/pressGroupContext.ts +21 -0
  519. package/src/hooks/rootScrollStyles.ts +247 -0
  520. package/src/hooks/scrollLockTouchGuard.ts +182 -0
  521. package/src/hooks/scrollbarGutter.ts +41 -26
  522. package/src/hooks/useActionGroupTracking.ts +224 -0
  523. package/src/hooks/useAnimator.doc.mjs +109 -0
  524. package/src/hooks/useAnimator.ts +67 -0
  525. package/src/hooks/useAnnounceRenderedText.ts +1 -0
  526. package/src/hooks/useAttachment.ts +1 -1
  527. package/src/hooks/useAutoMediaMode.ts +1 -0
  528. package/src/hooks/useBusyAnnouncement.ts +2 -0
  529. package/src/hooks/useDevWarning.ts +2 -0
  530. package/src/hooks/useFocusTrap.ts +2 -0
  531. package/src/hooks/useGridFocus.doc.mjs +6 -6
  532. package/src/hooks/useGridFocus.ts +10 -7
  533. package/src/hooks/useHotkeys.ts +2 -0
  534. package/src/hooks/useImageMode.ts +2 -0
  535. package/src/hooks/useInputStatusIcon.tsx +3 -2
  536. package/src/hooks/useKeyboardHint.tsx +1 -1
  537. package/src/hooks/useLongPress.doc.mjs +2 -2
  538. package/src/hooks/useLongPress.ts +32 -122
  539. package/src/hooks/useMenuHover.ts +1 -0
  540. package/src/hooks/useMenuPress.ts +2 -0
  541. package/src/hooks/useOverflow.ts +2 -1
  542. package/src/hooks/usePressFeedback.ts +1 -0
  543. package/src/hooks/useResolvedRequired.ts +3 -0
  544. package/src/hooks/useScrollLock.doc.mjs +51 -12
  545. package/src/hooks/useScrollLock.ts +57 -60
  546. package/src/hooks/useScrollableArea.ts +4 -0
  547. package/src/hooks/useStreamingText.ts +2 -0
  548. package/src/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.ts +43 -0
  549. package/src/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.ts +6 -0
  550. package/src/i18n/generated-english/PowerSearch/formatTokenValue.generated.ts +15 -0
  551. package/src/i18n/generated-locales/en.generated.ts +41 -0
  552. package/src/i18n/generated-locales/pseudo.generated.ts +42 -0
  553. package/src/index.ts +13 -0
  554. package/src/internal/indicatorPress.stylex.ts +24 -0
  555. package/src/internal/selectable-card.ts +21 -0
  556. package/src/internal/sheetDraft.ts +2 -2
  557. package/src/motion/MEASUREMENTS.md +18 -0
  558. package/src/motion/README.md +10 -5
  559. package/src/motion/animatedLayout.ts +10 -5
  560. package/src/motion/animator.ts +66 -31
  561. package/src/motion/progress.ts +155 -0
  562. package/src/motion/reducedMotion.ts +3 -1
  563. package/src/motion/uikit/alert.ts +43 -0
  564. package/src/motion/uikit/index.ts +4 -3
  565. package/src/motion/uikit/picker.ts +116 -0
  566. package/src/privateAttributes/pressGroupItem.stylex.ts +44 -0
  567. package/src/privateAttributes/reducedMotion.stylex.ts +45 -0
  568. package/src/theme/Theme.tsx +37 -3
  569. package/src/theme/motionKnobs.ts +4 -3
  570. package/src/theme/themeMotion.ts +7 -0
  571. package/src/utils/dateParser.ts +16 -0
  572. package/src/utils/focusReturn.ts +30 -0
  573. package/src/utils/interactionModality.ts +4 -0
  574. package/src/utils/interactionOverlay.stylex.ts +3 -2
  575. package/src/utils/plainDate.ts +21 -0
  576. package/src/utils/pressFeedback.ts +24 -6
  577. package/src/utils/triggerFocus.ts +80 -0
  578. package/dist/internal/touch-sheet.d.ts +0 -21
  579. package/dist/internal/touch-sheet.d.ts.map +0 -1
  580. package/dist/internal/touch-sheet.js +0 -19
  581. package/src/internal/touch-sheet.ts +0 -21
@@ -0,0 +1,128 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file progress.ts
5
+ * @input A spring, a normalized progress, an animator's presented velocities
6
+ * @output Exports `progressCurve` (a spring's progress from 0 to 1 as a
7
+ * MotionCurve), `mapProgress` (one curve as a function of another),
8
+ * `mapRange` (the clamped linear map most companions use) and
9
+ * `presentedProgressVelocity` (the progress velocity that continues what
10
+ * an animator shows)
11
+ * @position Shared by the motion building blocks that move several channels
12
+ * along one path and by companion motion (a
13
+ * scrim's dim following a sheet): one velocity unit, one curve mapping and
14
+ * one way to continue an interrupted motion
15
+ *
16
+ * A path is described by a normalized progress: 0 where it starts, 1 where
17
+ * it rests, beyond either end on a spring's overshoot. Its velocity is in
18
+ * progress per second; each channel's own velocity stays in the channel's
19
+ * units per second.
20
+ *
21
+ * An interrupted motion continues from what is on screen: the
22
+ * block reads the presented values and velocities from the animator at one
23
+ * `now` (`get`, `getVelocity`), restarts a path from those values, and starts
24
+ * its progress with the presented velocity projected on the path's tangent
25
+ * at its start, v·t / (t·t), where t = d(values)/dp. Channels are weighted
26
+ * into one unit first (px per unit of scale, say), so a scale and a
27
+ * translation count alike.
28
+ *
29
+ * A companion follows a driving curve through `mapProgress`, most often
30
+ * with `mapRange`: `mapProgress(sheetY, mapRange([closedY, openY], [0, dim]))`
31
+ * dims a scrim as a sheet rises. Played on another animator, it stays in
32
+ * lockstep only when it starts with its driver: pass the driver's start,
33
+ * `scrim.play({opacity}, {at: start})` with `start = await handle.started`
34
+ * (or one shared `at` for both calls); two calls from rest otherwise each
35
+ * start at their own commit.
36
+ *
37
+ * SYNC: When modified, update /packages/core/src/motion/progress.test.ts and
38
+ * /packages/core/src/motion/README.md.
39
+ */
40
+
41
+ import { SETTLING_EPSILON, solveSpring, toSpring } from "./spring.js";
42
+
43
+ /** The step of the finite differences taken on a progress. */
44
+ const STEP = 1e-4;
45
+
46
+ /**
47
+ * The progress of `spring` from 0 to 1, starting with `velocity` (progress
48
+ * per second): exactly 1 once it settles within `epsilon`.
49
+ */
50
+ export function progressCurve(spring, {
51
+ velocity = 0,
52
+ epsilon = SETTLING_EPSILON
53
+ } = {}) {
54
+ const curve = solveSpring(toSpring(spring), {
55
+ from: 0,
56
+ to: 1,
57
+ velocity
58
+ });
59
+ const duration = curve.settleTime(epsilon);
60
+ return {
61
+ duration,
62
+ at: t => t >= duration ? 1 : curve.value(t),
63
+ velocity: t => t >= duration ? 0 : curve.velocity(t)
64
+ };
65
+ }
66
+
67
+ /**
68
+ * The curve of `f(driver(t))`, its velocity by the chain rule: a channel
69
+ * following a path as its progress moves, or a companion following any
70
+ * driving curve (a sheet's `y` mapped onto its scrim's opacity). The driver
71
+ * is any MotionCurve, not only a progress from 0 to 1. A companion played on
72
+ * another animator starts with its driver (`{at: start}`; see the file
73
+ * header).
74
+ */
75
+ export function mapProgress(driver, f) {
76
+ return {
77
+ duration: driver.duration,
78
+ at: t => f(driver.at(t)),
79
+ velocity: t => {
80
+ const value = driver.at(t);
81
+ return (f(value + STEP) - f(value - STEP)) / (2 * STEP) * driver.velocity(t);
82
+ }
83
+ };
84
+ }
85
+
86
+ /**
87
+ * The linear map from `input` to `output`, held at `output`'s ends outside
88
+ * `input` unless `clamp` is false: what most companions are (a scrim's dim
89
+ * along a sheet's travel, a parallax, a dismissal's fade). Either range may
90
+ * run backward (`[openY, closedY]`).
91
+ */
92
+ export function mapRange(input, output, {
93
+ clamp = true
94
+ } = {}) {
95
+ const [a, b] = input;
96
+ const [c, d] = output;
97
+ return x => {
98
+ let t = a === b ? x < a ? 0 : 1 : (x - a) / (b - a);
99
+ if (clamp) {
100
+ t = Math.min(1, Math.max(0, t));
101
+ }
102
+ // Exact at both ends.
103
+ return t === 0 ? c : t === 1 ? d : c + (d - c) * t;
104
+ };
105
+ }
106
+
107
+ /**
108
+ * One channel of a path: an animator property and its value at each
109
+ * progress.
110
+ */
111
+
112
+ /**
113
+ * The progress velocity, per second, that continues what `animator`
114
+ * presents at `now` along a path that starts there: the presented velocity
115
+ * projected on the path's tangent at progress 0, v·t / (t·t). 0 when the
116
+ * path does not move any of its channels.
117
+ */
118
+ export function presentedProgressVelocity(animator, channels, now) {
119
+ let along = 0;
120
+ let squared = 0;
121
+ for (const channel of channels) {
122
+ const weight = channel.weight ?? 1;
123
+ const tangent = (channel.at(STEP) - channel.at(0)) / STEP * weight;
124
+ along += animator.getVelocity(channel.property, now) * weight * tangent;
125
+ squared += tangent * tangent;
126
+ }
127
+ return squared > 1e-12 ? along / squared : 0;
128
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"reducedMotion.d.ts","sourceRoot":"","sources":["../../src/motion/reducedMotion.ts"],"names":[],"mappings":"AAqDA,6EAA6E;AAC7E,eAAO,MAAM,yBAAyB,2DACoB,CAAC;AAE3D,gFAAgF;AAChF,eAAO,MAAM,4BAA4B,iEACuB,CAAC;AAEjE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,EACxB,OAAO,GAAE;IACP,gEAAgE;IAChE,YAAY,CAAC,EAAE,OAAO,CAAC;CACnB,GACL,iBAAiB,GAAG,IAAI,CAmB1B;AAED,oCAAoC;AACpC,MAAM,WAAW,gBAAgB;IAC/B,mEAAmE;IACnE,MAAM,IAAI,IAAI,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,MAAM,IAAI,EAChB,IAAI,SAAI,GACP,gBAAgB,CAyClB"}
1
+ {"version":3,"file":"reducedMotion.d.ts","sourceRoot":"","sources":["../../src/motion/reducedMotion.ts"],"names":[],"mappings":"AAsDA,6EAA6E;AAC7E,eAAO,MAAM,yBAAyB,2DACoB,CAAC;AAE3D,gFAAgF;AAChF,eAAO,MAAM,4BAA4B,iEACuB,CAAC;AAEjE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,EACxB,OAAO,GAAE;IACP,gEAAgE;IAChE,YAAY,CAAC,EAAE,OAAO,CAAC;CACnB,GACL,iBAAiB,GAAG,IAAI,CAoB1B;AAED,oCAAoC;AACpC,MAAM,WAAW,gBAAgB;IAC/B,mEAAmE;IACnE,MAAM,IAAI,IAAI,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,MAAM,IAAI,EAChB,IAAI,SAAI,GACP,gBAAgB,CAyClB"}
@@ -46,6 +46,7 @@
46
46
 
47
47
  import { defaultIsCoarsePointer, defaultPrefersReducedMotion } from "./animator.js";
48
48
  import { resolveMotion } from "./resolveMotion.js";
49
+ import { themeReducesMotion } from "../privateAttributes/reducedMotion.stylex.js";
49
50
  import { reducedMotionCrossFade, registerReducedMotionCrossFade } from "./uikit/timing.js";
50
51
 
51
52
  /** Reduce Motion on a coarse primary pointer: an opacity-only cross-fade. */
@@ -68,7 +69,8 @@ export const REDUCED_MOTION_INSTANT_QUERY = '(prefers-reduced-motion: reduce) an
68
69
  * the length is fixed.
69
70
  */
70
71
  export function reducedMotionFade(element, options = {}) {
71
- if (!defaultPrefersReducedMotion()) {
72
+ // A theme that reduces motion for everyone counts as the setting.
73
+ if (!defaultPrefersReducedMotion() && !themeReducesMotion(element)) {
72
74
  return null;
73
75
  }
74
76
  const fades = options.touchRelease === true || defaultIsCoarsePointer();
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @file alert.ts
3
+ * @input Nothing; data only
4
+ * @output Exports `alertController`: how UIAlertController (`.alert`) tracks
5
+ * a finger across its actions
6
+ * @position The alert domain of the UIKit constants table (motion/uikit);
7
+ * its springs are `springs.alertPresent` and `springs.alertDismiss`
8
+ *
9
+ * Every value was read from UIKit on the iOS 26.2 simulator. A host app
10
+ * presented `UIAlertController(.alert)` with two and with three actions.
11
+ * Real HID touches drove it, and the action views' highlight was sampled
12
+ * every frame. Lengths are in pt (CSS px), durations in ms.
13
+ *
14
+ * Every leaf carries one or more `@source`; GUESS values also carry the
15
+ * `@measure` task that will confirm or replace them. uikit.test.ts enforces
16
+ * both.
17
+ *
18
+ * SYNC: When modified, update /packages/core/src/motion/MEASUREMENTS.md
19
+ */
20
+ export declare const alertController: {
21
+ readonly actions: {
22
+ /**
23
+ * How long after touch-down the touched action highlights: none, it is
24
+ * highlighted in the touch-down frame (a tap and a 300 ms hold alike).
25
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
26
+ * iPhone 17 Pro, per-frame highlight of the action views under real HID
27
+ * touches, Oct 23 2026
28
+ */
29
+ readonly highlightOnsetMs: 0;
30
+ /**
31
+ * How far outside an action the finger may go and keep it highlighted:
32
+ * none. The highlight cleared 1 pt below the action, and a lift there ran
33
+ * nothing. UIButton keeps 70 pt; an alert action does not.
34
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
35
+ * iPhone 17 Pro, per-frame highlight of the action views under real HID
36
+ * touches, Oct 23 2026
37
+ */
38
+ readonly highlightExpansion: 0;
39
+ };
40
+ };
41
+ //# sourceMappingURL=alert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../src/motion/uikit/alert.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,eAAe;;QAExB;;;;;;WAMG;;QAEH;;;;;;;WAOG;;;CAGG,CAAC"}
@@ -0,0 +1,43 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file alert.ts
5
+ * @input Nothing; data only
6
+ * @output Exports `alertController`: how UIAlertController (`.alert`) tracks
7
+ * a finger across its actions
8
+ * @position The alert domain of the UIKit constants table (motion/uikit);
9
+ * its springs are `springs.alertPresent` and `springs.alertDismiss`
10
+ *
11
+ * Every value was read from UIKit on the iOS 26.2 simulator. A host app
12
+ * presented `UIAlertController(.alert)` with two and with three actions.
13
+ * Real HID touches drove it, and the action views' highlight was sampled
14
+ * every frame. Lengths are in pt (CSS px), durations in ms.
15
+ *
16
+ * Every leaf carries one or more `@source`; GUESS values also carry the
17
+ * `@measure` task that will confirm or replace them. uikit.test.ts enforces
18
+ * both.
19
+ *
20
+ * SYNC: When modified, update /packages/core/src/motion/MEASUREMENTS.md
21
+ */
22
+
23
+ export const alertController = {
24
+ actions: {
25
+ /**
26
+ * How long after touch-down the touched action highlights: none, it is
27
+ * highlighted in the touch-down frame (a tap and a 300 ms hold alike).
28
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
29
+ * iPhone 17 Pro, per-frame highlight of the action views under real HID
30
+ * touches, Oct 23 2026
31
+ */
32
+ highlightOnsetMs: 0,
33
+ /**
34
+ * How far outside an action the finger may go and keep it highlighted:
35
+ * none. The highlight cleared 1 pt below the action, and a lift there ran
36
+ * nothing. UIButton keeps 70 pt; an alert action does not.
37
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
38
+ * iPhone 17 Pro, per-frame highlight of the action views under real HID
39
+ * touches, Oct 23 2026
40
+ */
41
+ highlightExpansion: 0
42
+ }
43
+ };
@@ -2,9 +2,9 @@
2
2
  * @file index.ts
3
3
  * @input The domain files of the UIKit constants table
4
4
  * @output Re-exports `springs` and one constant per spring (`SHEET_PRESENT_SPRING`,
5
- * …), `scroll`, `timing`, `navigation`, `progressBar`, `segmentedControl`,
6
- * the `slider` and switch (`switchControl`) domains, and the gesture
7
- * thresholds (one `UIKIT_*` group per recognizer, their union
5
+ * …), `scroll`, `timing`, `navigation`, `picker`, `progressBar`,
6
+ * `segmentedControl`, the `slider` and switch (`switchControl`) domains, and
7
+ * the gesture thresholds (one `UIKIT_*` group per recognizer, their union
8
8
  * `UIKIT_GESTURES`, and the haptic tables)
9
9
  * @position Entry of the UIKit constants table (motion/uikit). Internal to
10
10
  * core: not exported from the package entry point
@@ -19,6 +19,7 @@
19
19
  */
20
20
  export { HAPTIC_FEEDBACK_KINDS, HAPTIC_VIBRATION_PATTERNS, UIKIT_CLICK, UIKIT_CONTROL, UIKIT_GESTURES, UIKIT_LONG_PRESS, UIKIT_PAN, UIKIT_PINCH, UIKIT_PRESS, UIKIT_ROTATION, UIKIT_SCREEN_EDGE_PAN, UIKIT_SWIPE, UIKIT_TAP, UIKIT_VELOCITY, type GestureConstant, type GestureConstantUnit, type HapticFeedbackKind, } from './gestures.js';
21
21
  export { navigation, registerNavigationTable } from './navigation.js';
22
+ export { picker } from './picker.js';
22
23
  export { progressBar, registerProgressBarTable } from './progressBar.js';
23
24
  export { registerScrollTable, scroll } from './scroll.js';
24
25
  export { segmentedControl } from './segmented.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/motion/uikit/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,WAAW,EACX,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,WAAW,EACX,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,SAAS,EACT,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAC,UAAU,EAAE,uBAAuB,EAAC,MAAM,cAAc,CAAC;AACjE,OAAO,EAAC,WAAW,EAAE,wBAAwB,EAAC,MAAM,eAAe,CAAC;AACpE,OAAO,EAAC,mBAAmB,EAAE,MAAM,EAAC,MAAM,UAAU,CAAC;AACrD,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAChC,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC1B,8BAA8B,EAC9B,wCAAwC,EACxC,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,OAAO,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AACvC,OAAO,EAAC,mBAAmB,EAAE,MAAM,EAAC,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/motion/uikit/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,WAAW,EACX,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,WAAW,EACX,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,SAAS,EACT,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAC,UAAU,EAAE,uBAAuB,EAAC,MAAM,cAAc,CAAC;AACjE,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAChC,OAAO,EAAC,WAAW,EAAE,wBAAwB,EAAC,MAAM,eAAe,CAAC;AACpE,OAAO,EAAC,mBAAmB,EAAE,MAAM,EAAC,MAAM,UAAU,CAAC;AACrD,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAChC,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC1B,8BAA8B,EAC9B,wCAAwC,EACxC,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,OAAO,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AACvC,OAAO,EAAC,mBAAmB,EAAE,MAAM,EAAC,MAAM,UAAU,CAAC"}
@@ -4,9 +4,9 @@
4
4
  * @file index.ts
5
5
  * @input The domain files of the UIKit constants table
6
6
  * @output Re-exports `springs` and one constant per spring (`SHEET_PRESENT_SPRING`,
7
- * …), `scroll`, `timing`, `navigation`, `progressBar`, `segmentedControl`,
8
- * the `slider` and switch (`switchControl`) domains, and the gesture
9
- * thresholds (one `UIKIT_*` group per recognizer, their union
7
+ * …), `scroll`, `timing`, `navigation`, `picker`, `progressBar`,
8
+ * `segmentedControl`, the `slider` and switch (`switchControl`) domains, and
9
+ * the gesture thresholds (one `UIKIT_*` group per recognizer, their union
10
10
  * `UIKIT_GESTURES`, and the haptic tables)
11
11
  * @position Entry of the UIKit constants table (motion/uikit). Internal to
12
12
  * core: not exported from the package entry point
@@ -22,6 +22,7 @@
22
22
 
23
23
  export { HAPTIC_FEEDBACK_KINDS, HAPTIC_VIBRATION_PATTERNS, UIKIT_CLICK, UIKIT_CONTROL, UIKIT_GESTURES, UIKIT_LONG_PRESS, UIKIT_PAN, UIKIT_PINCH, UIKIT_PRESS, UIKIT_ROTATION, UIKIT_SCREEN_EDGE_PAN, UIKIT_SWIPE, UIKIT_TAP, UIKIT_VELOCITY } from "./gestures.js";
24
24
  export { navigation, registerNavigationTable } from "./navigation.js";
25
+ export { picker } from "./picker.js";
25
26
  export { progressBar, registerProgressBarTable } from "./progressBar.js";
26
27
  export { registerScrollTable, scroll } from "./scroll.js";
27
28
  export { segmentedControl } from "./segmented.js";
@@ -0,0 +1,96 @@
1
+ export declare const picker: {
2
+ readonly geometry: {
3
+ /**
4
+ * Row pitch: rows sit at k × 32 pt in each column's table.
5
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
6
+ * iPhone 17 Pro, UIPickerView table offsets and cell frames, Oct 23 2026
7
+ */
8
+ readonly rowHeight: 32;
9
+ /**
10
+ * The picker's height (its intrinsic content size).
11
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
12
+ * iPhone 17 Pro, UIPickerView frame, Oct 23 2026
13
+ */
14
+ readonly height: 216;
15
+ /**
16
+ * d of the rubber band past the first or last row. The column's table view
17
+ * is 291 pt tall in a 216 pt picker. With c = 0.55, scroll.rubberBand's
18
+ * formula puts 10, 50 and 110 pt of finger travel past the end at 5.4, 25.1
19
+ * and 50.1 pt. The measured values are 5.3, 25 and 50.
20
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
21
+ * iPhone 17 Pro, UIPickerTableView frame and offsets during drags
22
+ * 20, 60 and 120 pt past the last row, Oct 23 2026
23
+ */
24
+ readonly rubberBandDimension: 291;
25
+ };
26
+ readonly release: {
27
+ /**
28
+ * The speed at which a coast ends. The scroll view projects the target at
29
+ * offset + (v − this) × r ÷ (1 − r), with r = scroll.decelerationRate
30
+ * .normal. That gives 461.33, 502.67 and 266.67 pt for v = 0.9334, 1.0162
31
+ * and 0.5436, all three to 0.3 pt. The coast onto the row it snaps to keeps
32
+ * the release velocity. It re-solves the rate so that the speed reaches
33
+ * this exactly at that row, where it stops. Two coasts fit it to 0.4 and
34
+ * 0.3 pt RMS, ending within 30 ms of the measured end.
35
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
36
+ * iPhone 17 Pro, scrollViewWillEndDragging targets and per-frame
37
+ * offsets to rest, Oct 23 2026
38
+ */
39
+ readonly stopSpeed: 0.0089;
40
+ /**
41
+ * Below this release speed (pt/ms, a scroll view's release velocity), a
42
+ * release inside the rows carries no velocity. The wheel then snaps to the
43
+ * nearest row instead of coasting. Past the first or last row the velocity
44
+ * is kept, however small (0.0816 kept). A pause before the lift does not
45
+ * zero it: the velocity changes only when the finger moves.
46
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
47
+ * iPhone 17 Pro, steady 100 pt drags mid-list lifted while moving: zeroed
48
+ * at 100 to 250 pt/s both ways, passed from 260 pt/s (0.2577 the
49
+ * smallest velocity handed on); a 300 pt/s drag held still 300 ms
50
+ * still coasted, Oct 23 2026
51
+ */
52
+ readonly minimumSpeed: 0.25;
53
+ };
54
+ /**
55
+ * A release without velocity, or a coast already on a row, eases onto the
56
+ * nearest row exponentially. Each millisecond it covers this fraction of the
57
+ * distance left: e^(−0.011 t), done in about 0.3 s. Snaps of 4, 6 and 8 pt
58
+ * fit 0.0099, 0.0107 and 0.0123.
59
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
60
+ * iPhone 17 Pro, per-frame offsets after three slow releases between
61
+ * rows, Oct 23 2026
62
+ */
63
+ readonly snapRate: 0.011;
64
+ readonly tapSpin: {
65
+ /**
66
+ * A tap on a row turns the wheel onto it in this long (setContentOffset
67
+ * animated), on Core Animation's ease-in-ease-out (timing.curves.move). The
68
+ * row is selected on arrival. A tap on the band's row does nothing.
69
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
70
+ * iPhone 17 Pro, per-frame offsets after a tap two rows below the band
71
+ * (6.8, 25.1, 50.2, 75.4, 93.7 % at 50 ms steps, arriving at 300 ms;
72
+ * the same with Reduce Motion and Prefer Cross-Fade on), Oct 23 2026
73
+ */
74
+ readonly durationMs: 300;
75
+ };
76
+ readonly selectionTick: {
77
+ /**
78
+ * One selection haptic per row whose centre reaches the band's centre,
79
+ * at most one per this interval. Not during a tap's spin.
80
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
81
+ * iPhone 17 Pro, selectionChangedAtLocation: and the feedback
82
+ * generator's minimum interval (0.040 s) logged during drags and
83
+ * coasts, Oct 23 2026
84
+ */
85
+ readonly minimumIntervalMs: 40;
86
+ };
87
+ };
88
+ /**
89
+ * Registers the tap spin's duration as an internal motion role,
90
+ * `picker.tapSpin.durationMs`. Every other value stays an internal measured
91
+ * constant. The tap spin's curve is the shared role `timing.curves.move`, and
92
+ * the bounce at an end is `scroll.bounce`. Nothing registers on import, and
93
+ * registering again does nothing.
94
+ */
95
+ export declare function registerPickerTable(): void;
96
+ //# sourceMappingURL=picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"picker.d.ts","sourceRoot":"","sources":["../../../src/motion/uikit/picker.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,MAAM;;QAEf;;;;WAIG;;QAEH;;;;WAIG;;QAEH;;;;;;;;WAQG;;;;QAIH;;;;;;;;;;;WAWG;;QAEH;;;;;;;;;;;WAWG;;;IAGL;;;;;;;;OAQG;;;QAGD;;;;;;;;WAQG;;;;QAIH;;;;;;;WAOG;;;CAGG,CAAC;AAEX;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
@@ -0,0 +1,117 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file picker.ts
5
+ * @input Nothing; data only
6
+ * @output `picker`, UIPickerView's measured constants, and
7
+ * `registerPickerTable`, which makes the tap spin's duration a motion role
8
+ * @position The picker domain of the UIKit table (motion/uikit); read by
9
+ * DateInput's wheelPhysics.ts, wheelStrip.ts and PickerWheel.tsx
10
+ *
11
+ * Lengths are pt at UIKit's scale, times ms and velocities pt/ms. Every leaf
12
+ * carries one `@source`, as uikit.test.ts enforces.
13
+ *
14
+ * SYNC: When modified, update motion/MEASUREMENTS.md and PickerWheel.tsx.
15
+ */
16
+
17
+ import { registerMotionTable } from "../roles.js";
18
+ export const picker = {
19
+ geometry: {
20
+ /**
21
+ * Row pitch: rows sit at k × 32 pt in each column's table.
22
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
23
+ * iPhone 17 Pro, UIPickerView table offsets and cell frames, Oct 23 2026
24
+ */
25
+ rowHeight: 32,
26
+ /**
27
+ * The picker's height (its intrinsic content size).
28
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
29
+ * iPhone 17 Pro, UIPickerView frame, Oct 23 2026
30
+ */
31
+ height: 216,
32
+ /**
33
+ * d of the rubber band past the first or last row. The column's table view
34
+ * is 291 pt tall in a 216 pt picker. With c = 0.55, scroll.rubberBand's
35
+ * formula puts 10, 50 and 110 pt of finger travel past the end at 5.4, 25.1
36
+ * and 50.1 pt. The measured values are 5.3, 25 and 50.
37
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
38
+ * iPhone 17 Pro, UIPickerTableView frame and offsets during drags
39
+ * 20, 60 and 120 pt past the last row, Oct 23 2026
40
+ */
41
+ rubberBandDimension: 291
42
+ },
43
+ release: {
44
+ /**
45
+ * The speed at which a coast ends. The scroll view projects the target at
46
+ * offset + (v − this) × r ÷ (1 − r), with r = scroll.decelerationRate
47
+ * .normal. That gives 461.33, 502.67 and 266.67 pt for v = 0.9334, 1.0162
48
+ * and 0.5436, all three to 0.3 pt. The coast onto the row it snaps to keeps
49
+ * the release velocity. It re-solves the rate so that the speed reaches
50
+ * this exactly at that row, where it stops. Two coasts fit it to 0.4 and
51
+ * 0.3 pt RMS, ending within 30 ms of the measured end.
52
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
53
+ * iPhone 17 Pro, scrollViewWillEndDragging targets and per-frame
54
+ * offsets to rest, Oct 23 2026
55
+ */
56
+ stopSpeed: 0.0089,
57
+ /**
58
+ * Below this release speed (pt/ms, a scroll view's release velocity), a
59
+ * release inside the rows carries no velocity. The wheel then snaps to the
60
+ * nearest row instead of coasting. Past the first or last row the velocity
61
+ * is kept, however small (0.0816 kept). A pause before the lift does not
62
+ * zero it: the velocity changes only when the finger moves.
63
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
64
+ * iPhone 17 Pro, steady 100 pt drags mid-list lifted while moving: zeroed
65
+ * at 100 to 250 pt/s both ways, passed from 260 pt/s (0.2577 the
66
+ * smallest velocity handed on); a 300 pt/s drag held still 300 ms
67
+ * still coasted, Oct 23 2026
68
+ */
69
+ minimumSpeed: 0.25
70
+ },
71
+ /**
72
+ * A release without velocity, or a coast already on a row, eases onto the
73
+ * nearest row exponentially. Each millisecond it covers this fraction of the
74
+ * distance left: e^(−0.011 t), done in about 0.3 s. Snaps of 4, 6 and 8 pt
75
+ * fit 0.0099, 0.0107 and 0.0123.
76
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
77
+ * iPhone 17 Pro, per-frame offsets after three slow releases between
78
+ * rows, Oct 23 2026
79
+ */
80
+ snapRate: 0.011,
81
+ tapSpin: {
82
+ /**
83
+ * A tap on a row turns the wheel onto it in this long (setContentOffset
84
+ * animated), on Core Animation's ease-in-ease-out (timing.curves.move). The
85
+ * row is selected on arrival. A tap on the band's row does nothing.
86
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
87
+ * iPhone 17 Pro, per-frame offsets after a tap two rows below the band
88
+ * (6.8, 25.1, 50.2, 75.4, 93.7 % at 50 ms steps, arriving at 300 ms;
89
+ * the same with Reduce Motion and Prefer Cross-Fade on), Oct 23 2026
90
+ */
91
+ durationMs: 300
92
+ },
93
+ selectionTick: {
94
+ /**
95
+ * One selection haptic per row whose centre reaches the band's centre,
96
+ * at most one per this interval. Not during a tap's spin.
97
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
98
+ * iPhone 17 Pro, selectionChangedAtLocation: and the feedback
99
+ * generator's minimum interval (0.040 s) logged during drags and
100
+ * coasts, Oct 23 2026
101
+ */
102
+ minimumIntervalMs: 40
103
+ }
104
+ };
105
+
106
+ /**
107
+ * Registers the tap spin's duration as an internal motion role,
108
+ * `picker.tapSpin.durationMs`. Every other value stays an internal measured
109
+ * constant. The tap spin's curve is the shared role `timing.curves.move`, and
110
+ * the bounce at an end is `scroll.bounce`. Nothing registers on import, and
111
+ * registering again does nothing.
112
+ */
113
+ export function registerPickerTable() {
114
+ registerMotionTable('picker', picker, {
115
+ roles: ['tapSpin.durationMs']
116
+ });
117
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @file privateAttributes/pressGroupItem.stylex.ts
3
+ * @input Nothing: the private press-group-item attribute
4
+ * @output pressGroupItemProps, which marks an action a group's tracker
5
+ * follows with the pointers it follows, and isTrackedByGroup, which reads
6
+ * the mark
7
+ * @position Owner module of the private press-group-item attribute: the only
8
+ * file that writes its name. AlertDialog marks its actions, and the press
9
+ * controller (utils/pressFeedback.ts) leaves a press of those pointers to
10
+ * the group's tracker. No package entry exports it.
11
+ */
12
+ /**
13
+ * Spread on each action that a group's tracker follows. It names the pointer
14
+ * types the tracker follows, such as `['touch', 'pen']`.
15
+ */
16
+ export declare function pressGroupItemProps(pointerTypes: ReadonlyArray<string>): Readonly<Record<string, string>>;
17
+ /**
18
+ * Whether a group's tracker paints the press on `element` or an ancestor: a
19
+ * press of `pointerType`, or any press when it is null.
20
+ */
21
+ export declare function isTrackedByGroup(element: Element, pointerType?: string | null): boolean;
22
+ //# sourceMappingURL=pressGroupItem.stylex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pressGroupItem.stylex.d.ts","sourceRoot":"","sources":["../../src/privateAttributes/pressGroupItem.stylex.ts"],"names":[],"mappings":"AACA;;;;;;;;;;GAUG;AAIH;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,GAClC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAElC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,WAAW,GAAE,MAAM,GAAG,IAAW,GAChC,OAAO,CAWT"}
@@ -0,0 +1,36 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ /**
3
+ * @file privateAttributes/pressGroupItem.stylex.ts
4
+ * @input Nothing: the private press-group-item attribute
5
+ * @output pressGroupItemProps, which marks an action a group's tracker
6
+ * follows with the pointers it follows, and isTrackedByGroup, which reads
7
+ * the mark
8
+ * @position Owner module of the private press-group-item attribute: the only
9
+ * file that writes its name. AlertDialog marks its actions, and the press
10
+ * controller (utils/pressFeedback.ts) leaves a press of those pointers to
11
+ * the group's tracker. No package entry exports it.
12
+ */
13
+
14
+ const PRESS_GROUP_ITEM = 'data-astryx-press-group-item';
15
+
16
+ /**
17
+ * Spread on each action that a group's tracker follows. It names the pointer
18
+ * types the tracker follows, such as `['touch', 'pen']`.
19
+ */
20
+ export function pressGroupItemProps(pointerTypes) {
21
+ return {
22
+ [PRESS_GROUP_ITEM]: pointerTypes.join(' ')
23
+ };
24
+ }
25
+
26
+ /**
27
+ * Whether a group's tracker paints the press on `element` or an ancestor: a
28
+ * press of `pointerType`, or any press when it is null.
29
+ */
30
+ export function isTrackedByGroup(element, pointerType = null) {
31
+ const marked = element.closest(`[${PRESS_GROUP_ITEM}]`);
32
+ if (marked == null) {
33
+ return false;
34
+ }
35
+ return pointerType == null || (marked.getAttribute(PRESS_GROUP_ITEM) ?? '').split(' ').includes(pointerType);
36
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @file privateAttributes/reducedMotion.stylex.ts
3
+ * @input Whether a theme reduces motion for everyone
4
+ * @output reducedMotionMarkProps and setRootReducedMotionMark, which write the
5
+ * mark, and themeReducesMotion, which reads it
6
+ * @position Owner module of the private reduced-motion attribute: the only
7
+ * file that writes its name. Theme marks its root, and the root theme marks
8
+ * `<html>`; the animator, reducedMotionFade and the layout glide read it as
9
+ * the person's Reduce Motion setting. No package entry exports it.
10
+ */
11
+ /** Spread on a theme's root when the theme reduces motion for everyone. */
12
+ export declare function reducedMotionMarkProps(isMarked: boolean): Readonly<Record<string, string>>;
13
+ /**
14
+ * Marks or unmarks `<html>` for the root theme, so a layer portaled outside
15
+ * the theme's root reads the mark too.
16
+ */
17
+ export declare function setRootReducedMotionMark(root: HTMLElement, isMarked: boolean): void;
18
+ /**
19
+ * Whether the theme `element` is in reduces motion for everyone: its root,
20
+ * or `<html>` for the root theme, carries the mark.
21
+ */
22
+ export declare function themeReducesMotion(element: Element | null | undefined): boolean;
23
+ //# sourceMappingURL=reducedMotion.stylex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducedMotion.stylex.d.ts","sourceRoot":"","sources":["../../src/privateAttributes/reducedMotion.stylex.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AAIH,2EAA2E;AAC3E,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,OAAO,GAChB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAElC;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,OAAO,GAChB,IAAI,CAMN;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,GAClC,OAAO,CAET"}
@@ -0,0 +1,40 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ /**
3
+ * @file privateAttributes/reducedMotion.stylex.ts
4
+ * @input Whether a theme reduces motion for everyone
5
+ * @output reducedMotionMarkProps and setRootReducedMotionMark, which write the
6
+ * mark, and themeReducesMotion, which reads it
7
+ * @position Owner module of the private reduced-motion attribute: the only
8
+ * file that writes its name. Theme marks its root, and the root theme marks
9
+ * `<html>`; the animator, reducedMotionFade and the layout glide read it as
10
+ * the person's Reduce Motion setting. No package entry exports it.
11
+ */
12
+
13
+ const REDUCED_MOTION = 'data-astryx-reduced-motion';
14
+
15
+ /** Spread on a theme's root when the theme reduces motion for everyone. */
16
+ export function reducedMotionMarkProps(isMarked) {
17
+ return isMarked ? {
18
+ [REDUCED_MOTION]: ''
19
+ } : {};
20
+ }
21
+
22
+ /**
23
+ * Marks or unmarks `<html>` for the root theme, so a layer portaled outside
24
+ * the theme's root reads the mark too.
25
+ */
26
+ export function setRootReducedMotionMark(root, isMarked) {
27
+ if (isMarked) {
28
+ root.setAttribute(REDUCED_MOTION, '');
29
+ } else {
30
+ root.removeAttribute(REDUCED_MOTION);
31
+ }
32
+ }
33
+
34
+ /**
35
+ * Whether the theme `element` is in reduces motion for everyone: its root,
36
+ * or `<html>` for the root theme, carries the mark.
37
+ */
38
+ export function themeReducesMotion(element) {
39
+ return element?.closest?.(`[${REDUCED_MOTION}]`) != null;
40
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"Theme.d.ts","sourceRoot":"","sources":["../../src/theme/Theme.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAgD,MAAM,OAAO,CAAC;AAGrE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAmB,KAAK,YAAY,EAAC,MAAM,eAAe,CAAC;AAMlE;;GAEG;AACH,UAAU,UAAU;IAClB,+BAA+B;IAC/B,KAAK,EAAE,YAAY,CAAC;IACpB,kDAAkD;IAClD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,yBAAyB;IACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AA0BD;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,wBAA6B,CAAC;AA6I9D;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,IAAe,EACf,QAAQ,GACT,EAAE,UAAU,GAAG,KAAK,CAAC,YAAY,CA+BjC;yBAnCe,KAAK"}
1
+ {"version":3,"file":"Theme.d.ts","sourceRoot":"","sources":["../../src/theme/Theme.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAgD,MAAM,OAAO,CAAC;AAGrE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAmB,KAAK,YAAY,EAAC,MAAM,eAAe,CAAC;AAWlE;;GAEG;AACH,UAAU,UAAU;IAClB,+BAA+B;IAC/B,KAAK,EAAE,YAAY,CAAC;IACpB,kDAAkD;IAClD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,yBAAyB;IACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AA+BD;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,wBAA6B,CAAC;AA4J9D;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,IAAe,EACf,QAAQ,GACT,EAAE,UAAU,GAAG,KAAK,CAAC,YAAY,CAwCjC;yBA5Ce,KAAK"}