@astryxdesign/core 0.7.7-canary.c0929c8 → 0.7.7-canary.c19ca12

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 (472) 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 +36 -6
  4. package/dist/AppShell/useCloseMobileDrawerOnActivate.d.ts +13 -0
  5. package/dist/AppShell/useCloseMobileDrawerOnActivate.d.ts.map +1 -0
  6. package/dist/AppShell/useCloseMobileDrawerOnActivate.js +45 -0
  7. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
  8. package/dist/BottomSheet/BottomSheet.js +79 -9
  9. package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
  10. package/dist/BottomSheet/BottomSheetPanel.js +23 -4
  11. package/dist/BottomSheet/bottomSheetStack.d.ts.map +1 -1
  12. package/dist/BottomSheet/bottomSheetStack.js +5 -4
  13. package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
  14. package/dist/BottomSheet/useSheetGestures.js +3 -1
  15. package/dist/Breadcrumbs/BreadcrumbItem.d.ts +2 -1
  16. package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  17. package/dist/Breadcrumbs/BreadcrumbItem.js +7 -3
  18. package/dist/Button/Button.d.ts.map +1 -1
  19. package/dist/Button/Button.js +47 -3
  20. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  21. package/dist/CheckboxInput/CheckboxInput.js +13 -2
  22. package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
  23. package/dist/CheckboxList/CheckboxList.js +7 -1
  24. package/dist/CheckboxList/CheckboxListContext.d.ts +6 -0
  25. package/dist/CheckboxList/CheckboxListContext.d.ts.map +1 -1
  26. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  27. package/dist/CheckboxList/CheckboxListItem.js +10 -2
  28. package/dist/ComplexSelector/ComplexSelector.d.ts +4 -1
  29. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  30. package/dist/ComplexSelector/ComplexSelector.js +14 -4
  31. package/dist/ContextMenu/ContextMenu.js +2 -2
  32. package/dist/DateInput/DateInput.d.ts.map +1 -1
  33. package/dist/DateInput/DateInput.js +5 -2
  34. package/dist/DateInput/MonthScroller.d.ts.map +1 -1
  35. package/dist/DateInput/MonthScroller.js +13 -27
  36. package/dist/DateInput/Wheel.d.ts.map +1 -1
  37. package/dist/DateInput/Wheel.js +22 -41
  38. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  39. package/dist/DateTimeInput/DateTimeInput.js +5 -2
  40. package/dist/Dialog/Dialog.d.ts.map +1 -1
  41. package/dist/Dialog/Dialog.js +23 -45
  42. package/dist/Drawer/Drawer.d.ts.map +1 -1
  43. package/dist/Drawer/Drawer.js +15 -11
  44. package/dist/Drawer/useDrawerDialogPresence.d.ts.map +1 -1
  45. package/dist/Drawer/useDrawerDialogPresence.js +5 -1
  46. package/dist/Field/Field.js +2 -2
  47. package/dist/Field/PanelSearchInput.d.ts +9 -1
  48. package/dist/Field/PanelSearchInput.d.ts.map +1 -1
  49. package/dist/Field/PanelSearchInput.js +3 -1
  50. package/dist/HoverCard/HoverCard.d.ts +4 -3
  51. package/dist/HoverCard/HoverCard.d.ts.map +1 -1
  52. package/dist/HoverCard/HoverCard.js +27 -2
  53. package/dist/HoverCard/useHoverCard.d.ts +5 -4
  54. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  55. package/dist/HoverCard/useHoverCard.js +17 -31
  56. package/dist/Icon/Icon.d.ts +5 -1
  57. package/dist/Icon/Icon.d.ts.map +1 -1
  58. package/dist/Icon/Icon.js +5 -2
  59. package/dist/InfoTip/InfoTip.d.ts +63 -0
  60. package/dist/InfoTip/InfoTip.d.ts.map +1 -0
  61. package/dist/InfoTip/InfoTip.js +126 -0
  62. package/dist/InfoTip/index.d.ts +10 -0
  63. package/dist/InfoTip/index.d.ts.map +1 -0
  64. package/dist/InfoTip/index.js +12 -0
  65. package/dist/Layer/layerAnimations.stylex.d.ts +7 -8
  66. package/dist/Layer/layerAnimations.stylex.d.ts.map +1 -1
  67. package/dist/Layer/layerAnimations.stylex.js +25 -20
  68. package/dist/Layer/useBackdropPress.d.ts +27 -0
  69. package/dist/Layer/useBackdropPress.d.ts.map +1 -0
  70. package/dist/Layer/useBackdropPress.js +53 -0
  71. package/dist/Layer/usePressPin.d.ts +20 -10
  72. package/dist/Layer/usePressPin.d.ts.map +1 -1
  73. package/dist/Layer/usePressPin.js +66 -18
  74. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  75. package/dist/Lightbox/Lightbox.js +18 -0
  76. package/dist/MobileNav/MobileNav.js +0 -1
  77. package/dist/MultiSelector/hooks.d.ts.map +1 -1
  78. package/dist/MultiSelector/hooks.js +2 -4
  79. package/dist/Outline/Outline.d.ts +2 -4
  80. package/dist/Outline/Outline.d.ts.map +1 -1
  81. package/dist/Outline/Outline.js +4 -52
  82. package/dist/Outline/useOutlineFromMarkdown.d.ts.map +1 -1
  83. package/dist/Outline/useOutlineFromMarkdown.js +1 -0
  84. package/dist/Outline/useScrollSpy.js +3 -3
  85. package/dist/PowerSearch/PowerSearch.d.ts +36 -3
  86. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  87. package/dist/PowerSearch/PowerSearch.js +571 -302
  88. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts +100 -0
  89. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts.map +1 -0
  90. package/dist/PowerSearch/PowerSearchBottomSheet.js +1913 -0
  91. package/dist/PowerSearch/PowerSearchEditPopover.d.ts +32 -1
  92. package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
  93. package/dist/PowerSearch/PowerSearchEditPopover.js +17 -6
  94. package/dist/PowerSearch/PowerSearchValueEditor.d.ts +38 -3
  95. package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
  96. package/dist/PowerSearch/PowerSearchValueEditor.js +170 -61
  97. package/dist/PowerSearch/formatFilterValue.d.ts +7 -0
  98. package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
  99. package/dist/PowerSearch/formatFilterValue.js +11 -1
  100. package/dist/PowerSearch/formatTokenValue.d.ts +28 -0
  101. package/dist/PowerSearch/formatTokenValue.d.ts.map +1 -0
  102. package/dist/PowerSearch/formatTokenValue.js +160 -0
  103. package/dist/PowerSearch/powerSearchSheetUtils.d.ts +65 -0
  104. package/dist/PowerSearch/powerSearchSheetUtils.d.ts.map +1 -0
  105. package/dist/PowerSearch/powerSearchSheetUtils.js +168 -0
  106. package/dist/RadioList/RadioList.d.ts.map +1 -1
  107. package/dist/RadioList/RadioList.js +8 -2
  108. package/dist/RadioList/RadioListItem.d.ts +1 -1
  109. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  110. package/dist/RadioList/RadioListItem.js +5 -3
  111. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  112. package/dist/Resizable/ResizeHandle.js +118 -260
  113. package/dist/Resizable/resizeGesture.d.ts +91 -0
  114. package/dist/Resizable/resizeGesture.d.ts.map +1 -0
  115. package/dist/Resizable/resizeGesture.js +251 -0
  116. package/dist/SegmentedControl/SegmentedControl.d.ts +3 -1
  117. package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  118. package/dist/SegmentedControl/SegmentedControl.js +115 -8
  119. package/dist/SegmentedControl/SegmentedControlContext.d.ts +6 -0
  120. package/dist/SegmentedControl/SegmentedControlContext.d.ts.map +1 -1
  121. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -0
  122. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  123. package/dist/SegmentedControl/SegmentedControlItem.js +8 -1
  124. package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts +357 -0
  125. package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts.map +1 -0
  126. package/dist/SegmentedControl/useSegmentedSelectionMotion.js +1349 -0
  127. package/dist/SegmentedControl/useSegmentedTouchTracking.d.ts +70 -0
  128. package/dist/SegmentedControl/useSegmentedTouchTracking.d.ts.map +1 -0
  129. package/dist/SegmentedControl/useSegmentedTouchTracking.js +264 -0
  130. package/dist/Selector/Selector.d.ts.map +1 -1
  131. package/dist/Selector/Selector.js +96 -67
  132. package/dist/Selector/optionShape.d.ts +24 -0
  133. package/dist/Selector/optionShape.d.ts.map +1 -0
  134. package/dist/Selector/optionShape.js +48 -0
  135. package/dist/Selector/selectableOptionEntries.d.ts +20 -0
  136. package/dist/Selector/selectableOptionEntries.d.ts.map +1 -0
  137. package/dist/Selector/selectableOptionEntries.js +38 -0
  138. package/dist/Selector/utils.d.ts +2 -17
  139. package/dist/Selector/utils.d.ts.map +1 -1
  140. package/dist/Selector/utils.js +3 -51
  141. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  142. package/dist/SideNav/SideNavItem.js +3 -9
  143. package/dist/Slider/sliderTouchController.js +2 -2
  144. package/dist/Spinner/Spinner.d.ts +1 -1
  145. package/dist/Spinner/Spinner.d.ts.map +1 -1
  146. package/dist/Spinner/Spinner.js +60 -58
  147. package/dist/Switch/switchTouch.d.ts +0 -7
  148. package/dist/Switch/switchTouch.d.ts.map +1 -1
  149. package/dist/Switch/switchTouch.js +2 -10
  150. package/dist/Switch/useSwitchTouch.d.ts +2 -11
  151. package/dist/Switch/useSwitchTouch.d.ts.map +1 -1
  152. package/dist/Switch/useSwitchTouch.js +35 -93
  153. package/dist/Table/BaseTable.d.ts.map +1 -1
  154. package/dist/Table/BaseTable.js +29 -8
  155. package/dist/TextInput/TextInput.d.ts +2 -2
  156. package/dist/TextInput/TextInput.d.ts.map +1 -1
  157. package/dist/TextInput/TextInput.js +10 -7
  158. package/dist/Toast/Toast.d.ts +11 -1
  159. package/dist/Toast/Toast.d.ts.map +1 -1
  160. package/dist/Toast/Toast.js +30 -15
  161. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  162. package/dist/Toast/ToastViewport.js +94 -34
  163. package/dist/Toast/types.d.ts +9 -3
  164. package/dist/Toast/types.d.ts.map +1 -1
  165. package/dist/Token/Token.d.ts +2 -2
  166. package/dist/Token/Token.d.ts.map +1 -1
  167. package/dist/Token/Token.js +13 -4
  168. package/dist/Token/TokenNamingContext.d.ts +14 -0
  169. package/dist/Token/TokenNamingContext.d.ts.map +1 -0
  170. package/dist/Token/TokenNamingContext.js +23 -0
  171. package/dist/Tokenizer/Tokenizer.d.ts +46 -59
  172. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  173. package/dist/Tokenizer/Tokenizer.js +40 -57
  174. package/dist/Tokenizer/TokenizerBottomSheet.d.ts +25 -28
  175. package/dist/Tokenizer/TokenizerBottomSheet.d.ts.map +1 -1
  176. package/dist/Tokenizer/TokenizerBottomSheet.js +157 -54
  177. package/dist/Tokenizer/TokenizerItemRemovableContext.d.ts +3 -0
  178. package/dist/Tokenizer/TokenizerItemRemovableContext.d.ts.map +1 -0
  179. package/dist/Tokenizer/TokenizerItemRemovableContext.js +19 -0
  180. package/dist/Tooltip/Tooltip.d.ts +25 -30
  181. package/dist/Tooltip/Tooltip.d.ts.map +1 -1
  182. package/dist/Tooltip/Tooltip.js +24 -5
  183. package/dist/Tooltip/index.d.ts +1 -1
  184. package/dist/Tooltip/index.d.ts.map +1 -1
  185. package/dist/Tooltip/useTooltip.d.ts +45 -28
  186. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  187. package/dist/Tooltip/useTooltip.js +52 -59
  188. package/dist/TopNav/TopNavItem.d.ts.map +1 -1
  189. package/dist/TopNav/TopNavItem.js +4 -7
  190. package/dist/TopNav/TopNavMegaMenuItem.d.ts.map +1 -1
  191. package/dist/TopNav/TopNavMegaMenuItem.js +4 -7
  192. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  193. package/dist/TopNav/TopNavMenu.js +4 -7
  194. package/dist/Typeahead/TypeaheadItem.d.ts +2 -1
  195. package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
  196. package/dist/animator/createAnimator.d.ts +98 -0
  197. package/dist/animator/createAnimator.d.ts.map +1 -0
  198. package/dist/animator/createAnimator.js +259 -0
  199. package/dist/astryx.css +96 -7
  200. package/dist/gestures/GestureHost.d.ts +27 -1
  201. package/dist/gestures/GestureHost.d.ts.map +1 -1
  202. package/dist/gestures/GestureHost.js +157 -21
  203. package/dist/gestures/PressTracker.d.ts.map +1 -1
  204. package/dist/gestures/PressTracker.js +4 -3
  205. package/dist/hooks/actionGroupTracker.d.ts +7 -4
  206. package/dist/hooks/actionGroupTracker.d.ts.map +1 -1
  207. package/dist/hooks/actionGroupTracker.js +19 -56
  208. package/dist/hooks/index.d.ts +1 -0
  209. package/dist/hooks/index.d.ts.map +1 -1
  210. package/dist/hooks/index.js +1 -0
  211. package/dist/hooks/pressGroupContext.d.ts +6 -0
  212. package/dist/hooks/pressGroupContext.d.ts.map +1 -0
  213. package/dist/hooks/pressGroupContext.js +20 -0
  214. package/dist/hooks/useActionGroupTracking.d.ts +53 -0
  215. package/dist/hooks/useActionGroupTracking.d.ts.map +1 -0
  216. package/dist/hooks/useActionGroupTracking.js +174 -0
  217. package/dist/hooks/useAnimator.d.ts +41 -0
  218. package/dist/hooks/useAnimator.d.ts.map +1 -0
  219. package/dist/hooks/useAnimator.js +70 -0
  220. package/dist/hooks/useAttachment.d.ts +1 -1
  221. package/dist/hooks/useAttachment.js +1 -1
  222. package/dist/hooks/useHighlightedOptionScroll.d.ts +11 -1
  223. package/dist/hooks/useHighlightedOptionScroll.d.ts.map +1 -1
  224. package/dist/hooks/useHighlightedOptionScroll.js +112 -11
  225. package/dist/hooks/useInputStatusIcon.d.ts +1 -1
  226. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  227. package/dist/hooks/useInputStatusIcon.js +2 -2
  228. package/dist/hooks/useLongPress.d.ts +6 -2
  229. package/dist/hooks/useLongPress.d.ts.map +1 -1
  230. package/dist/hooks/useLongPress.js +95 -15
  231. package/dist/hooks/useMediaQuery.d.ts +2 -1
  232. package/dist/hooks/useMediaQuery.d.ts.map +1 -1
  233. package/dist/hooks/useMediaQuery.js +7 -4
  234. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  235. package/dist/hooks/useMenuPress.js +4 -2
  236. package/dist/i18n/generated-english/InfoTip/InfoTip.generated.d.ts +8 -0
  237. package/dist/i18n/generated-english/InfoTip/InfoTip.generated.d.ts.map +1 -0
  238. package/dist/i18n/generated-english/InfoTip/InfoTip.generated.js +12 -0
  239. package/dist/i18n/generated-english/PowerSearch/PowerSearch.generated.d.ts.map +1 -1
  240. package/dist/i18n/generated-english/PowerSearch/PowerSearch.generated.js +1 -0
  241. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts +8 -0
  242. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts.map +1 -0
  243. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.js +42 -0
  244. package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.d.ts.map +1 -1
  245. package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.js +6 -0
  246. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts +8 -0
  247. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts.map +1 -0
  248. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.js +14 -0
  249. package/dist/i18n/generated-english/Tokenizer/TokenizerBottomSheet.generated.d.ts.map +1 -1
  250. package/dist/i18n/generated-english/Tokenizer/TokenizerBottomSheet.generated.js +7 -1
  251. package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
  252. package/dist/i18n/generated-locales/en.generated.js +33 -1
  253. package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
  254. package/dist/i18n/generated-locales/pseudo.generated.js +33 -1
  255. package/dist/index.d.ts +2 -0
  256. package/dist/index.d.ts.map +1 -1
  257. package/dist/index.js +5 -0
  258. package/dist/internal/SheetConfirmation.d.ts +11 -0
  259. package/dist/internal/SheetConfirmation.d.ts.map +1 -0
  260. package/dist/internal/SheetConfirmation.js +92 -0
  261. package/dist/internal/indicatorPress.stylex.d.ts +20 -0
  262. package/dist/internal/indicatorPress.stylex.d.ts.map +1 -0
  263. package/dist/internal/indicatorPress.stylex.js +26 -0
  264. package/dist/internal/sheetDraft.d.ts +35 -0
  265. package/dist/internal/sheetDraft.d.ts.map +1 -0
  266. package/dist/internal/sheetDraft.js +65 -0
  267. package/dist/internal/touch-sheet.d.ts +21 -0
  268. package/dist/internal/touch-sheet.d.ts.map +1 -0
  269. package/dist/internal/touch-sheet.js +19 -0
  270. package/dist/internal/useDismissSearchOnTouchDrag.d.ts +24 -0
  271. package/dist/internal/useDismissSearchOnTouchDrag.d.ts.map +1 -0
  272. package/dist/internal/useDismissSearchOnTouchDrag.js +56 -0
  273. package/dist/motion/animator.d.ts +14 -14
  274. package/dist/motion/animator.d.ts.map +1 -1
  275. package/dist/motion/animator.js +41 -18
  276. package/dist/motion/reducedMotion.d.ts +24 -0
  277. package/dist/motion/reducedMotion.d.ts.map +1 -1
  278. package/dist/motion/reducedMotion.js +78 -1
  279. package/dist/motion/roles.d.ts +7 -1
  280. package/dist/motion/roles.d.ts.map +1 -1
  281. package/dist/motion/roles.js +20 -1
  282. package/dist/motion/uikit/alert.d.ts +41 -0
  283. package/dist/motion/uikit/alert.d.ts.map +1 -0
  284. package/dist/motion/uikit/alert.js +43 -0
  285. package/dist/motion/uikit/index.d.ts +6 -5
  286. package/dist/motion/uikit/index.d.ts.map +1 -1
  287. package/dist/motion/uikit/index.js +6 -5
  288. package/dist/motion/uikit/segmented.d.ts +55 -0
  289. package/dist/motion/uikit/segmented.d.ts.map +1 -0
  290. package/dist/motion/uikit/segmented.js +77 -0
  291. package/dist/motion/uikit/springs.d.ts +0 -18
  292. package/dist/motion/uikit/springs.d.ts.map +1 -1
  293. package/dist/motion/uikit/springs.js +5 -21
  294. package/dist/privateAttributes/pressGroupItem.stylex.d.ts +15 -0
  295. package/dist/privateAttributes/pressGroupItem.stylex.d.ts.map +1 -0
  296. package/dist/privateAttributes/pressGroupItem.stylex.js +23 -0
  297. package/dist/privateAttributes/segmentTitle.stylex.d.ts +5 -0
  298. package/dist/privateAttributes/segmentTitle.stylex.d.ts.map +1 -0
  299. package/dist/privateAttributes/segmentTitle.stylex.js +22 -0
  300. package/dist/utils/browserClickWait.d.ts +35 -0
  301. package/dist/utils/browserClickWait.d.ts.map +1 -0
  302. package/dist/utils/browserClickWait.js +123 -0
  303. package/dist/utils/clickGuard.d.ts +14 -1
  304. package/dist/utils/clickGuard.d.ts.map +1 -1
  305. package/dist/utils/clickGuard.js +46 -1
  306. package/dist/utils/dateParser.d.ts.map +1 -1
  307. package/dist/utils/dateParser.js +12 -0
  308. package/dist/utils/focusReturn.d.ts +15 -0
  309. package/dist/utils/focusReturn.d.ts.map +1 -1
  310. package/dist/utils/focusReturn.js +28 -0
  311. package/dist/utils/interactionOverlay.stylex.d.ts +3 -2
  312. package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
  313. package/dist/utils/interactionOverlay.stylex.js +3 -2
  314. package/dist/utils/pressFeedback.d.ts.map +1 -1
  315. package/dist/utils/pressFeedback.js +19 -6
  316. package/dist/utils/triggerFocus.d.ts +36 -0
  317. package/dist/utils/triggerFocus.d.ts.map +1 -0
  318. package/dist/utils/triggerFocus.js +65 -0
  319. package/locales/en.json +128 -0
  320. package/locales/pseudo.json +96 -0
  321. package/package.json +18 -8
  322. package/src/AlertDialog/AlertDialog.doc.mjs +2 -2
  323. package/src/AlertDialog/AlertDialog.tsx +37 -5
  324. package/src/AppShell/useCloseMobileDrawerOnActivate.ts +52 -0
  325. package/src/BottomSheet/BottomSheet.tsx +95 -10
  326. package/src/BottomSheet/BottomSheetPanel.tsx +40 -5
  327. package/src/BottomSheet/bottomSheetStack.ts +8 -4
  328. package/src/BottomSheet/useSheetGestures.ts +3 -1
  329. package/src/Breadcrumbs/BreadcrumbItem.tsx +13 -3
  330. package/src/Button/Button.tsx +63 -5
  331. package/src/CheckboxInput/CheckboxInput.doc.mjs +18 -0
  332. package/src/CheckboxInput/CheckboxInput.tsx +36 -9
  333. package/src/CheckboxList/CheckboxList.doc.mjs +4 -2
  334. package/src/CheckboxList/CheckboxList.tsx +6 -0
  335. package/src/CheckboxList/CheckboxListContext.tsx +6 -0
  336. package/src/CheckboxList/CheckboxListItem.tsx +11 -2
  337. package/src/ComplexSelector/ComplexSelector.tsx +20 -5
  338. package/src/ContextMenu/ContextMenu.tsx +2 -2
  339. package/src/DateInput/DateInput.tsx +8 -2
  340. package/src/DateInput/MonthScroller.tsx +18 -22
  341. package/src/DateInput/Wheel.tsx +30 -32
  342. package/src/DateTimeInput/DateTimeInput.tsx +8 -2
  343. package/src/Dialog/Dialog.tsx +54 -45
  344. package/src/Drawer/Drawer.tsx +28 -11
  345. package/src/Drawer/useDrawerDialogPresence.ts +5 -1
  346. package/src/Field/Field.tsx +2 -2
  347. package/src/Field/PanelSearchInput.tsx +11 -0
  348. package/src/HoverCard/HoverCard.doc.mjs +4 -2
  349. package/src/HoverCard/HoverCard.tsx +35 -4
  350. package/src/HoverCard/useHoverCard.doc.mjs +178 -36
  351. package/src/HoverCard/useHoverCard.tsx +46 -52
  352. package/src/Icon/Icon.doc.mjs +49 -8
  353. package/src/Icon/Icon.tsx +15 -7
  354. package/src/InfoTip/InfoTip.doc.mjs +192 -0
  355. package/src/InfoTip/InfoTip.tsx +186 -0
  356. package/src/InfoTip/index.ts +14 -0
  357. package/src/Layer/layerAnimations.stylex.ts +24 -16
  358. package/src/Layer/useBackdropPress.ts +81 -0
  359. package/src/Layer/usePressPin.ts +86 -26
  360. package/src/Lightbox/Lightbox.tsx +18 -0
  361. package/src/MobileNav/MobileNav.tsx +1 -1
  362. package/src/MultiSelector/hooks.ts +2 -4
  363. package/src/Outline/Outline.doc.mjs +177 -51
  364. package/src/Outline/Outline.tsx +5 -57
  365. package/src/Outline/useOutlineFromMarkdown.doc.mjs +157 -0
  366. package/src/Outline/useOutlineFromMarkdown.ts +1 -0
  367. package/src/Outline/useScrollSpy.ts +3 -3
  368. package/src/PowerSearch/PowerSearch.doc.mjs +55 -6
  369. package/src/PowerSearch/PowerSearch.tsx +798 -324
  370. package/src/PowerSearch/PowerSearchBottomSheet.tsx +2515 -0
  371. package/src/PowerSearch/PowerSearchEditPopover.tsx +28 -6
  372. package/src/PowerSearch/PowerSearchValueEditor.tsx +203 -38
  373. package/src/PowerSearch/formatFilterValue.ts +18 -1
  374. package/src/PowerSearch/formatTokenValue.ts +215 -0
  375. package/src/PowerSearch/powerSearchSheetUtils.ts +224 -0
  376. package/src/RadioList/RadioList.doc.mjs +4 -2
  377. package/src/RadioList/RadioList.tsx +7 -2
  378. package/src/RadioList/RadioListItem.tsx +5 -3
  379. package/src/Resizable/ResizeHandle.tsx +133 -328
  380. package/src/Resizable/resizeGesture.ts +368 -0
  381. package/src/SegmentedControl/SegmentedControl.doc.mjs +3 -3
  382. package/src/SegmentedControl/SegmentedControl.tsx +179 -5
  383. package/src/SegmentedControl/SegmentedControlContext.ts +6 -0
  384. package/src/SegmentedControl/SegmentedControlItem.tsx +12 -1
  385. package/src/SegmentedControl/useSegmentedSelectionMotion.ts +1640 -0
  386. package/src/SegmentedControl/useSegmentedTouchTracking.ts +308 -0
  387. package/src/Selector/Selector.tsx +136 -89
  388. package/src/Selector/optionShape.ts +64 -0
  389. package/src/Selector/selectableOptionEntries.ts +39 -0
  390. package/src/Selector/utils.ts +9 -68
  391. package/src/SideNav/SideNavItem.tsx +3 -7
  392. package/src/Slider/sliderTouchController.ts +2 -2
  393. package/src/Spinner/Spinner.tsx +77 -63
  394. package/src/Switch/switchTouch.ts +2 -10
  395. package/src/Switch/useSwitchTouch.ts +38 -104
  396. package/src/Table/BaseTable.tsx +46 -12
  397. package/src/TextInput/TextInput.tsx +11 -10
  398. package/src/Toast/Toast.doc.mjs +4 -3
  399. package/src/Toast/Toast.tsx +57 -32
  400. package/src/Toast/ToastViewport.tsx +121 -35
  401. package/src/Toast/types.ts +9 -3
  402. package/src/Token/Token.tsx +15 -4
  403. package/src/Token/TokenNamingContext.ts +28 -0
  404. package/src/Tokenizer/Tokenizer.doc.mjs +16 -0
  405. package/src/Tokenizer/Tokenizer.tsx +89 -85
  406. package/src/Tokenizer/TokenizerBottomSheet.tsx +219 -93
  407. package/src/Tokenizer/TokenizerItemRemovableContext.ts +24 -0
  408. package/src/Tooltip/Tooltip.doc.mjs +123 -54
  409. package/src/Tooltip/Tooltip.tsx +36 -39
  410. package/src/Tooltip/index.ts +0 -1
  411. package/src/Tooltip/useTooltip.doc.mjs +171 -33
  412. package/src/Tooltip/useTooltip.tsx +98 -86
  413. package/src/TopNav/TopNavItem.tsx +6 -5
  414. package/src/TopNav/TopNavMegaMenuItem.tsx +6 -5
  415. package/src/TopNav/TopNavMenu.tsx +6 -5
  416. package/src/Typeahead/TypeaheadItem.doc.mjs +6 -3
  417. package/src/Typeahead/TypeaheadItem.tsx +2 -1
  418. package/src/animator/createAnimator.doc.mjs +153 -0
  419. package/src/animator/createAnimator.ts +324 -0
  420. package/src/gestures/GestureHost.ts +198 -20
  421. package/src/gestures/PressTracker.ts +4 -3
  422. package/src/gestures/README.md +7 -1
  423. package/src/hooks/actionGroupTracker.ts +32 -61
  424. package/src/hooks/index.ts +2 -0
  425. package/src/hooks/pressGroupContext.ts +21 -0
  426. package/src/hooks/useActionGroupTracking.ts +224 -0
  427. package/src/hooks/useAnimator.doc.mjs +109 -0
  428. package/src/hooks/useAnimator.ts +67 -0
  429. package/src/hooks/useAttachment.ts +1 -1
  430. package/src/hooks/useHighlightedOptionScroll.ts +123 -15
  431. package/src/hooks/useInputStatusIcon.tsx +3 -2
  432. package/src/hooks/useLongPress.doc.mjs +2 -2
  433. package/src/hooks/useLongPress.ts +136 -15
  434. package/src/hooks/useMediaQuery.doc.mjs +2 -2
  435. package/src/hooks/useMediaQuery.ts +13 -4
  436. package/src/hooks/useMenuPress.ts +8 -2
  437. package/src/i18n/generated-english/InfoTip/InfoTip.generated.ts +13 -0
  438. package/src/i18n/generated-english/PowerSearch/PowerSearch.generated.ts +1 -0
  439. package/src/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.ts +43 -0
  440. package/src/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.ts +6 -0
  441. package/src/i18n/generated-english/PowerSearch/formatTokenValue.generated.ts +15 -0
  442. package/src/i18n/generated-english/Tokenizer/TokenizerBottomSheet.generated.ts +7 -1
  443. package/src/i18n/generated-locales/en.generated.ts +43 -0
  444. package/src/i18n/generated-locales/pseudo.generated.ts +44 -0
  445. package/src/index.ts +14 -0
  446. package/src/internal/SheetConfirmation.tsx +101 -0
  447. package/src/internal/indicatorPress.stylex.ts +24 -0
  448. package/src/internal/sheetDraft.ts +80 -0
  449. package/src/internal/touch-sheet.ts +21 -0
  450. package/src/internal/useDismissSearchOnTouchDrag.ts +69 -0
  451. package/src/motion/MEASUREMENTS.md +7 -0
  452. package/src/motion/README.md +9 -5
  453. package/src/motion/animator.ts +61 -29
  454. package/src/motion/reducedMotion.ts +79 -1
  455. package/src/motion/roles.ts +20 -1
  456. package/src/motion/uikit/alert.ts +43 -0
  457. package/src/motion/uikit/index.ts +5 -5
  458. package/src/motion/uikit/segmented.ts +74 -0
  459. package/src/motion/uikit/springs.ts +5 -21
  460. package/src/privateAttributes/pressGroupItem.stylex.ts +23 -0
  461. package/src/privateAttributes/segmentTitle.stylex.ts +22 -0
  462. package/src/utils/browserClickWait.ts +133 -0
  463. package/src/utils/clickGuard.ts +64 -1
  464. package/src/utils/dateParser.ts +16 -0
  465. package/src/utils/focusReturn.ts +30 -0
  466. package/src/utils/interactionOverlay.stylex.ts +3 -2
  467. package/src/utils/pressFeedback.ts +19 -6
  468. package/src/utils/triggerFocus.ts +80 -0
  469. package/dist/internal/tokenizer-presentation.d.ts +0 -21
  470. package/dist/internal/tokenizer-presentation.d.ts.map +0 -1
  471. package/dist/internal/tokenizer-presentation.js +0 -21
  472. package/src/internal/tokenizer-presentation.ts +0 -25
@@ -4,7 +4,7 @@
4
4
  * @file reducedMotion.ts
5
5
  * @input The Reduced Motion preference, the primary pointer, the motion tables
6
6
  * @output reducedMotionFade (the fade the animator would play, for motion it
7
- * does not drive) and the two media queries a StyleX transition spells
7
+ * does not drive), playReducedMotionDip, and the queries a transition spells
8
8
  * @position The one Reduced Motion policy (design:reduced-motion) for code
9
9
  * beside the animator: a raw Web Animations fade, a CSS transition
10
10
  *
@@ -86,4 +86,81 @@ export function reducedMotionFade(element, options = {}) {
86
86
  duration: reducedMotionCrossFade.durationMs,
87
87
  easing: `cubic-bezier(${curve.join(', ')})`
88
88
  };
89
+ }
90
+
91
+ /** A running Reduced Motion dip. */
92
+
93
+ /**
94
+ * Plays `fade` on `element` as a dip, and runs `land` at its middle: the
95
+ * fade-out, the change, then the fade-in. The fade-out holds at 0 until `land`
96
+ * has run, and the fade-in starts only after it. So the change never shows at
97
+ * full opacity, however late the main thread runs. A timer at the middle can
98
+ * fire after the fade-in has begun.
99
+ *
100
+ * `land` must apply the change before it returns: the fade-in starts right
101
+ * after it. `from` is the opacity the fade-out starts at: a leaving element
102
+ * fades out from where it is.
103
+ *
104
+ * @example
105
+ * ```
106
+ * const dip = playReducedMotionDip(scroller, fade, () => scroller.scrollTo({top}));
107
+ * // A newer change replaces it:
108
+ * dip.cancel();
109
+ * ```
110
+ */
111
+ export function playReducedMotionDip(element, fade, land, from = 1) {
112
+ const half = fade.duration / 2;
113
+ let isCancelled = false;
114
+ let fadeIn = null;
115
+ const fadeOut = element.animate([{
116
+ opacity: from,
117
+ easing: fade.easing
118
+ }, {
119
+ opacity: 0
120
+ }], {
121
+ duration: half,
122
+ fill: 'forwards'
123
+ });
124
+ fadeOut.finished.then(() => {
125
+ if (isCancelled) {
126
+ return;
127
+ }
128
+ land();
129
+ // The fade-in holds 0 until it starts: after a long stall, its start can
130
+ // come after the frame that runs this.
131
+ fadeIn = element.animate([{
132
+ opacity: 0,
133
+ easing: fade.easing
134
+ }, {
135
+ opacity: 1
136
+ }], {
137
+ duration: half,
138
+ fill: 'backwards'
139
+ });
140
+ // The fade-in keeps the dip's own schedule: it starts where the fade-out
141
+ // ended, so the dip keeps its length. The clock is read after the
142
+ // landing, because a frame's timestamp does not count the landing's own
143
+ // work. After a long stall, half of the fade-in still plays.
144
+ const fadeOutEnd = endTime(fadeOut, half);
145
+ if (fadeOutEnd != null) {
146
+ fadeIn.startTime = Math.max(fadeOutEnd, performance.now() - half / 2);
147
+ }
148
+ // The fade-in now holds the opacity, so the held 0 can go.
149
+ fadeOut.cancel();
150
+ },
151
+ // A cancelled fade-out rejects `finished`: nothing lands.
152
+ () => {});
153
+ return {
154
+ cancel() {
155
+ isCancelled = true;
156
+ fadeOut.cancel();
157
+ fadeIn?.cancel();
158
+ }
159
+ };
160
+ }
161
+
162
+ /** When `animation` was due to end, on its timeline (ms), if it has started. */
163
+ function endTime(animation, duration) {
164
+ const start = animation.startTime;
165
+ return typeof start === 'number' ? start + duration : null;
89
166
  }
@@ -3,7 +3,8 @@
3
3
  * @input The motion tables (motion/uikit and each component's own table)
4
4
  * @output registerMotionTable, motionRoleOf, motionRoleIn, listMotionRoles,
5
5
  * motionRoleVariable, and the CSS form of a role's value
6
- * (formatMotionRoleValue, parseMotionRoleValue)
6
+ * (formatMotionRoleValue, parseMotionRoleValue), and parseCssEasing for a
7
+ * CSS transition's easing
7
8
  * @position Motion foundation, internal to core: read by the code that
8
9
  * resolves a role when a motion starts. No public API writes a role: touch
9
10
  * motion stays internal until the public motion-token set is decided.
@@ -76,4 +77,9 @@ export declare function parseMotionRoleValue(kind: 'spring', text: string): Dura
76
77
  export declare function parseMotionRoleValue(kind: 'duration', text: string): number | null;
77
78
  export declare function parseMotionRoleValue(kind: 'curve', text: string): MotionCurvePoints | null;
78
79
  export declare function parseMotionRoleValue(kind: MotionRoleKind, text: string): DurationBounce | number | MotionCurvePoints | null;
80
+ /**
81
+ * Reads a CSS easing, a keyword or a `cubic-bezier()`, as a curve role's value
82
+ * is read. Returns null for any other easing, such as `steps()`.
83
+ */
84
+ export declare function parseCssEasing(text: string): MotionCurvePoints | null;
79
85
  //# sourceMappingURL=roles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../src/motion/roles.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EACL,qBAAqB,EAErB,cAAc,EAEd,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAC,cAAc,EAAE,iBAAiB,EAAC,MAAM,UAAU,CAAC;AAEhE,OAAO,EAAC,qBAAqB,EAAE,cAAc,EAAE,kBAAkB,EAAC,CAAC;AACnE,YAAY,EAAC,iBAAiB,EAAE,cAAc,EAAC,CAAC;AAEhD,2BAA2B;AAC3B,MAAM,WAAW,UAAU;IACzB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,GAAG,iBAAiB,CAAC;CAChE;AAYD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,EACE,KAAU,EACV,OAAY,EACZ,MAAW,GACZ,GAAE;IACD,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACtC,GACL,IAAI,CAoEN;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAIlE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,UAAU,GAAG,SAAS,CAOxB;AAED,2DAA2D;AAC3D,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAE7D;AAED,oCAAoC;AACpC,wBAAgB,eAAe,IAAI,UAAU,EAAE,CAE9C;AASD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,MAAM,GACX,cAAc,GAAG,IAAI,CAAC;AACzB,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,IAAI,CAAC;AACjB,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,GACX,iBAAiB,GAAG,IAAI,CAAC;AAC5B,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,MAAM,GACX,cAAc,GAAG,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../src/motion/roles.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EACL,qBAAqB,EAErB,cAAc,EAEd,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAC,cAAc,EAAE,iBAAiB,EAAC,MAAM,UAAU,CAAC;AAEhE,OAAO,EAAC,qBAAqB,EAAE,cAAc,EAAE,kBAAkB,EAAC,CAAC;AACnE,YAAY,EAAC,iBAAiB,EAAE,cAAc,EAAC,CAAC;AAEhD,2BAA2B;AAC3B,MAAM,WAAW,UAAU;IACzB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,GAAG,iBAAiB,CAAC;CAChE;AAYD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,EACE,KAAU,EACV,OAAY,EACZ,MAAW,GACZ,GAAE;IACD,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACtC,GACL,IAAI,CAoEN;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAIlE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,UAAU,GAAG,SAAS,CAOxB;AAED,2DAA2D;AAC3D,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAE7D;AAED,oCAAoC;AACpC,wBAAgB,eAAe,IAAI,UAAU,EAAE,CAE9C;AASD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,MAAM,GACX,cAAc,GAAG,IAAI,CAAC;AACzB,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,IAAI,CAAC;AACjB,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,GACX,iBAAiB,GAAG,IAAI,CAAC;AAC5B,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,MAAM,GACX,cAAc,GAAG,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAAC;AAqDtD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAGrE"}
@@ -5,7 +5,8 @@
5
5
  * @input The motion tables (motion/uikit and each component's own table)
6
6
  * @output registerMotionTable, motionRoleOf, motionRoleIn, listMotionRoles,
7
7
  * motionRoleVariable, and the CSS form of a role's value
8
- * (formatMotionRoleValue, parseMotionRoleValue)
8
+ * (formatMotionRoleValue, parseMotionRoleValue), and parseCssEasing for a
9
+ * CSS transition's easing
9
10
  * @position Motion foundation, internal to core: read by the code that
10
11
  * resolves a role when a motion starts. No public API writes a role: touch
11
12
  * motion stays internal until the public motion-token set is decided.
@@ -196,4 +197,22 @@ export function parseMotionRoleValue(kind, text) {
196
197
  }
197
198
  const points = [m[1], m[2], m[3], m[4]].map(Number);
198
199
  return points[0] >= 0 && points[0] <= 1 && points[2] >= 0 && points[2] <= 1 ? points : null;
200
+ }
201
+
202
+ /** The CSS easing keywords, as the control points CSS gives them. */
203
+ const EASING_KEYWORDS = {
204
+ linear: [0, 0, 1, 1],
205
+ ease: [0.25, 0.1, 0.25, 1],
206
+ 'ease-in': [0.42, 0, 1, 1],
207
+ 'ease-out': [0, 0, 0.58, 1],
208
+ 'ease-in-out': [0.42, 0, 0.58, 1]
209
+ };
210
+
211
+ /**
212
+ * Reads a CSS easing, a keyword or a `cubic-bezier()`, as a curve role's value
213
+ * is read. Returns null for any other easing, such as `steps()`.
214
+ */
215
+ export function parseCssEasing(text) {
216
+ const value = text.trim();
217
+ return EASING_KEYWORDS[value] ?? parseMotionRoleValue('curve', value);
199
218
  }
@@ -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,10 +2,10 @@
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`, the `slider` and
6
- * switch (`switchControl`) domains, and the gesture thresholds (one
7
- * `UIKIT_*` group per recognizer, their union `UIKIT_GESTURES`, and the
8
- * haptic tables)
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
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
11
11
  *
@@ -21,8 +21,9 @@ export { HAPTIC_FEEDBACK_KINDS, HAPTIC_VIBRATION_PATTERNS, UIKIT_CLICK, UIKIT_CO
21
21
  export { navigation, registerNavigationTable } from './navigation.js';
22
22
  export { progressBar, registerProgressBarTable } from './progressBar.js';
23
23
  export { registerScrollTable, scroll } from './scroll.js';
24
+ export { segmentedControl } from './segmented.js';
24
25
  export { slider } from './slider.js';
25
- export { ACTION_SHEET_DISMISS_SPRING, ACTION_SHEET_PRESENT_SPRING, ALERT_DISMISS_SPRING, ALERT_PRESENT_SPRING, BANNER_SPRING, CONTEXT_MENU_DISMISS_SPRING, CONTEXT_MENU_LIFT_SPRING, CONTEXT_MENU_MORPH_SPRING, DIRECT_CHANGE_SPRING, EMPHASIS_SPRING, FINGER_TRACKING_SPRING, KEYBOARD_SPRING, MENU_CLOSE_SPRING, MENU_OPEN_SPRING, MENU_REDUCED_MOTION_SPRING, NAVIGATION_BAR_ELEMENTS_SPRING, NAVIGATION_INTERACTIVE_POP_FINISH_SPRING, NAVIGATION_POP_SPRING, NAVIGATION_PUSH_SPRING, QUICK_CHANGE_SPRING, SEGMENTED_THUMB_SPRING, SETTLE_SPRING, SHEET_DETENT_SPRING, SHEET_DISMISS_SPRING, SHEET_DISMISS_SWIPE_SPRING, SHEET_PRESENT_SPRING, SHEET_RELEASE_FAST_SPRING, STATE_CHANGE_SPRING, SUB_MENU_BACK_SPRING, SUB_MENU_OPEN_SPRING, SWITCH_THUMB_MOVE_SPRING, TIMED_CHANGE_SPRING, VIEW_CHANGE_SPRING, registerSpringsTable, springs, } from './springs.js';
26
+ export { ACTION_SHEET_DISMISS_SPRING, ACTION_SHEET_PRESENT_SPRING, ALERT_DISMISS_SPRING, ALERT_PRESENT_SPRING, BANNER_SPRING, CONTEXT_MENU_DISMISS_SPRING, CONTEXT_MENU_LIFT_SPRING, CONTEXT_MENU_MORPH_SPRING, DIRECT_CHANGE_SPRING, EMPHASIS_SPRING, FINGER_TRACKING_SPRING, KEYBOARD_SPRING, MENU_CLOSE_SPRING, MENU_OPEN_SPRING, MENU_REDUCED_MOTION_SPRING, NAVIGATION_BAR_ELEMENTS_SPRING, NAVIGATION_INTERACTIVE_POP_FINISH_SPRING, NAVIGATION_POP_SPRING, NAVIGATION_PUSH_SPRING, QUICK_CHANGE_SPRING, SETTLE_SPRING, SHEET_DETENT_SPRING, SHEET_DISMISS_SPRING, SHEET_DISMISS_SWIPE_SPRING, SHEET_PRESENT_SPRING, SHEET_RELEASE_FAST_SPRING, STATE_CHANGE_SPRING, SUB_MENU_BACK_SPRING, SUB_MENU_OPEN_SPRING, SWITCH_THUMB_MOVE_SPRING, TIMED_CHANGE_SPRING, VIEW_CHANGE_SPRING, registerSpringsTable, springs, } from './springs.js';
26
27
  export { switchControl } from './switch.js';
27
28
  export { registerTimingTable, timing } from './timing.js';
28
29
  //# sourceMappingURL=index.d.ts.map
@@ -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,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,sBAAsB,EACtB,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,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,10 +4,10 @@
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`, the `slider` and
8
- * switch (`switchControl`) domains, and the gesture thresholds (one
9
- * `UIKIT_*` group per recognizer, their union `UIKIT_GESTURES`, and the
10
- * haptic tables)
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
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
13
13
  *
@@ -24,7 +24,8 @@ export { HAPTIC_FEEDBACK_KINDS, HAPTIC_VIBRATION_PATTERNS, UIKIT_CLICK, UIKIT_CO
24
24
  export { navigation, registerNavigationTable } from "./navigation.js";
25
25
  export { progressBar, registerProgressBarTable } from "./progressBar.js";
26
26
  export { registerScrollTable, scroll } from "./scroll.js";
27
+ export { segmentedControl } from "./segmented.js";
27
28
  export { slider } from "./slider.js";
28
- export { ACTION_SHEET_DISMISS_SPRING, ACTION_SHEET_PRESENT_SPRING, ALERT_DISMISS_SPRING, ALERT_PRESENT_SPRING, BANNER_SPRING, CONTEXT_MENU_DISMISS_SPRING, CONTEXT_MENU_LIFT_SPRING, CONTEXT_MENU_MORPH_SPRING, DIRECT_CHANGE_SPRING, EMPHASIS_SPRING, FINGER_TRACKING_SPRING, KEYBOARD_SPRING, MENU_CLOSE_SPRING, MENU_OPEN_SPRING, MENU_REDUCED_MOTION_SPRING, NAVIGATION_BAR_ELEMENTS_SPRING, NAVIGATION_INTERACTIVE_POP_FINISH_SPRING, NAVIGATION_POP_SPRING, NAVIGATION_PUSH_SPRING, QUICK_CHANGE_SPRING, SEGMENTED_THUMB_SPRING, SETTLE_SPRING, SHEET_DETENT_SPRING, SHEET_DISMISS_SPRING, SHEET_DISMISS_SWIPE_SPRING, SHEET_PRESENT_SPRING, SHEET_RELEASE_FAST_SPRING, STATE_CHANGE_SPRING, SUB_MENU_BACK_SPRING, SUB_MENU_OPEN_SPRING, SWITCH_THUMB_MOVE_SPRING, TIMED_CHANGE_SPRING, VIEW_CHANGE_SPRING, registerSpringsTable, springs } from "./springs.js";
29
+ export { ACTION_SHEET_DISMISS_SPRING, ACTION_SHEET_PRESENT_SPRING, ALERT_DISMISS_SPRING, ALERT_PRESENT_SPRING, BANNER_SPRING, CONTEXT_MENU_DISMISS_SPRING, CONTEXT_MENU_LIFT_SPRING, CONTEXT_MENU_MORPH_SPRING, DIRECT_CHANGE_SPRING, EMPHASIS_SPRING, FINGER_TRACKING_SPRING, KEYBOARD_SPRING, MENU_CLOSE_SPRING, MENU_OPEN_SPRING, MENU_REDUCED_MOTION_SPRING, NAVIGATION_BAR_ELEMENTS_SPRING, NAVIGATION_INTERACTIVE_POP_FINISH_SPRING, NAVIGATION_POP_SPRING, NAVIGATION_PUSH_SPRING, QUICK_CHANGE_SPRING, SETTLE_SPRING, SHEET_DETENT_SPRING, SHEET_DISMISS_SPRING, SHEET_DISMISS_SWIPE_SPRING, SHEET_PRESENT_SPRING, SHEET_RELEASE_FAST_SPRING, STATE_CHANGE_SPRING, SUB_MENU_BACK_SPRING, SUB_MENU_OPEN_SPRING, SWITCH_THUMB_MOVE_SPRING, TIMED_CHANGE_SPRING, VIEW_CHANGE_SPRING, registerSpringsTable, springs } from "./springs.js";
29
30
  export { switchControl } from "./switch.js";
30
31
  export { registerTimingTable, timing } from "./timing.js";
@@ -0,0 +1,55 @@
1
+ /**
2
+ * UIKit's own UISegmentedControl, measured with three text segments in a
3
+ * 300 × 31 pt control. A tap and a programmatic change follow the same
4
+ * spring. Every leaf carries a `@source`, and uikit.test.ts checks it.
5
+ *
6
+ * Some UIKit motion is left out on purpose. UIKit cross-fades the two titles
7
+ * that change, over 0.2 s. Astryx switches them at once, because a
8
+ * cross-fade needs a second copy of each title. Under Reduce Motion, UIKit's
9
+ * lens fades in at the new segment and scales from 0.88. Astryx allows no
10
+ * scaling there, so the animator's Reduce Motion cross-fade replaces it.
11
+ * UIKit's lens also lifts and stretches under a finger. A theme role owns
12
+ * the lift, and the stretch is not modeled. The lens chases a dragging
13
+ * finger on the shared `springs.fingerTracking` role, which matches the
14
+ * values UIKit reports for this control.
15
+ */
16
+ export declare const segmentedControl: {
17
+ /**
18
+ * The selection indicator's slide from the old segment to the new one,
19
+ * after a tap or a programmatic change. Its response is 0.40 s and its
20
+ * damping ratio 0.85. That gives about 1.25 pt of overshoot on a 200 pt
21
+ * move, settled by about 0.6 s. The width follows the same spring when the
22
+ * segments differ in width.
23
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
24
+ * iPhone 17 Pro, UIViewSpringAnimationBehavior read on the lens position
25
+ * for a tap and a programmatic set (dampingRatio 0.85, response 0.40,
26
+ * tracking off), Oct 23 2026
27
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
28
+ * iPhone 17 Pro, per-frame log of the lens's presentation position and
29
+ * velocity (method C) for a tap, a programmatic set and an animated set,
30
+ * least-squares spring fit (response 0.395 / 0.405 / 0.400 s, damping
31
+ * ratio 0.855 / 0.845 / 0.850, rms at most 0.65 pt over 200 pt),
32
+ * Oct 23 2026
33
+ */
34
+ readonly selectionSpring: {
35
+ readonly response: 0.4;
36
+ readonly dampingRatio: 0.85;
37
+ };
38
+ /**
39
+ * How far past the first or last segment's center the lens follows a
40
+ * dragging finger, in pt. Beyond that, the lens stays put while the finger
41
+ * goes on.
42
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
43
+ * iPhone 17 Pro, a drag 60 pt past the last segment: the lens stops about
44
+ * 11 pt past its center (312 vs 301), Oct 23 2026
45
+ */
46
+ readonly dragOvershoot: 11;
47
+ };
48
+ /**
49
+ * Registers this table with the motion registry (motion/roles.ts). The
50
+ * slide's spring becomes an internal motion role. The drag overshoot is not
51
+ * motion, so it stays an internal constant. Nothing registers on import, and
52
+ * a second call does nothing.
53
+ */
54
+ export declare function registerSegmentedTable(): void;
55
+ //# sourceMappingURL=segmented.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segmented.d.ts","sourceRoot":"","sources":["../../../src/motion/uikit/segmented.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB;IAC3B;;;;;;;;;;;;;;;;OAgBG;;;;;IAEH;;;;;;;OAOG;;CAEK,CAAC;AAEX;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAI7C"}
@@ -0,0 +1,77 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file segmented.ts
5
+ * @input Nothing; data only
6
+ * @output Exports `segmentedControl`, UISegmentedControl's selection slide
7
+ * spring and its drag overshoot; and `registerSegmentedTable`, which
8
+ * registers the spring as an internal motion role
9
+ * @position The segmented-control domain of the UIKit constants table
10
+ * (motion/uikit); read by SegmentedControl's touch presentation
11
+ *
12
+ * SYNC: When modified, update:
13
+ * - /packages/core/src/SegmentedControl/useSegmentedSelectionMotion.ts
14
+ * - /packages/core/src/motion/README.md (domain list)
15
+ */
16
+
17
+ import { registerMotionTable } from "../roles.js";
18
+
19
+ /**
20
+ * UIKit's own UISegmentedControl, measured with three text segments in a
21
+ * 300 × 31 pt control. A tap and a programmatic change follow the same
22
+ * spring. Every leaf carries a `@source`, and uikit.test.ts checks it.
23
+ *
24
+ * Some UIKit motion is left out on purpose. UIKit cross-fades the two titles
25
+ * that change, over 0.2 s. Astryx switches them at once, because a
26
+ * cross-fade needs a second copy of each title. Under Reduce Motion, UIKit's
27
+ * lens fades in at the new segment and scales from 0.88. Astryx allows no
28
+ * scaling there, so the animator's Reduce Motion cross-fade replaces it.
29
+ * UIKit's lens also lifts and stretches under a finger. A theme role owns
30
+ * the lift, and the stretch is not modeled. The lens chases a dragging
31
+ * finger on the shared `springs.fingerTracking` role, which matches the
32
+ * values UIKit reports for this control.
33
+ */
34
+ export const segmentedControl = {
35
+ /**
36
+ * The selection indicator's slide from the old segment to the new one,
37
+ * after a tap or a programmatic change. Its response is 0.40 s and its
38
+ * damping ratio 0.85. That gives about 1.25 pt of overshoot on a 200 pt
39
+ * move, settled by about 0.6 s. The width follows the same spring when the
40
+ * segments differ in width.
41
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
42
+ * iPhone 17 Pro, UIViewSpringAnimationBehavior read on the lens position
43
+ * for a tap and a programmatic set (dampingRatio 0.85, response 0.40,
44
+ * tracking off), Oct 23 2026
45
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
46
+ * iPhone 17 Pro, per-frame log of the lens's presentation position and
47
+ * velocity (method C) for a tap, a programmatic set and an animated set,
48
+ * least-squares spring fit (response 0.395 / 0.405 / 0.400 s, damping
49
+ * ratio 0.855 / 0.845 / 0.850, rms at most 0.65 pt over 200 pt),
50
+ * Oct 23 2026
51
+ */
52
+ selectionSpring: {
53
+ response: 0.4,
54
+ dampingRatio: 0.85
55
+ },
56
+ /**
57
+ * How far past the first or last segment's center the lens follows a
58
+ * dragging finger, in pt. Beyond that, the lens stays put while the finger
59
+ * goes on.
60
+ * @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
61
+ * iPhone 17 Pro, a drag 60 pt past the last segment: the lens stops about
62
+ * 11 pt past its center (312 vs 301), Oct 23 2026
63
+ */
64
+ dragOvershoot: 11
65
+ };
66
+
67
+ /**
68
+ * Registers this table with the motion registry (motion/roles.ts). The
69
+ * slide's spring becomes an internal motion role. The drag overshoot is not
70
+ * motion, so it stays an internal constant. Nothing registers on import, and
71
+ * a second call does nothing.
72
+ */
73
+ export function registerSegmentedTable() {
74
+ registerMotionTable('segmented', segmentedControl, {
75
+ roles: ['selectionSpring']
76
+ });
77
+ }
@@ -349,20 +349,6 @@ export declare const SWITCH_THUMB_MOVE_SPRING: {
349
349
  readonly response: 0.3;
350
350
  readonly dampingRatio: 1;
351
351
  };
352
- /**
353
- * UISegmentedControl selection thumb sliding to a new segment.
354
- * @source GUESS — WebKit's UIKit-matched switch thumb spring
355
- * (RenderThemeCocoa.mm `thumbMoveSpring`: response 0.30 s, ratio 0.75),
356
- * kept only until UISegmentedControl's measured spring replaces it;
357
- * UISwitch's measured travel (`SWITCH_THUMB_MOVE_SPRING`)
358
- * belongs to another control
359
- * @measure M-SG02
360
- * @measure M-SG03
361
- */
362
- export declare const SEGMENTED_THUMB_SPRING: {
363
- readonly response: 0.3;
364
- readonly dampingRatio: 0.75;
365
- };
366
352
  /**
367
353
  * Keyboard frame animation, show and hide alike: critically damped,
368
354
  * response 0.2667 s. The notification reports curve 7 and 0.3833 s
@@ -553,10 +539,6 @@ export declare const springs: {
553
539
  readonly response: 0.3;
554
540
  readonly dampingRatio: 1;
555
541
  };
556
- readonly segmentedThumb: {
557
- readonly response: 0.3;
558
- readonly dampingRatio: 0.75;
559
- };
560
542
  readonly keyboard: {
561
543
  readonly mass: 1;
562
544
  readonly stiffness: 555.0265;
@@ -1 +1 @@
1
- {"version":3,"file":"springs.d.ts","sourceRoot":"","sources":["../../../src/motion/uikit/springs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"springs.d.ts","sourceRoot":"","sources":["../../../src/motion/uikit/springs.ts"],"names":[],"mappings":"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"}
@@ -15,11 +15,11 @@
15
15
  * that will confirm or replace them (MEASUREMENTS.md lists them all).
16
16
  * uikit.test.ts enforces both.
17
17
  *
18
- * Most springs are measured on iOS 26.2 or documented by Apple; two are still
19
- * GUESSES (`segmentedThumb`, `banner`). `switchThumbMove` is the switch's
20
- * measured travel, which uikit/switch.ts reads. A guess starts from the
21
- * nearest sourced spring and names it. A component built on the table gets
22
- * the measured value the moment it lands, without changing.
18
+ * Most springs are measured on iOS 26.2 or documented by Apple; one is still
19
+ * a GUESS (`banner`). `switchThumbMove` is the switch's measured travel,
20
+ * which uikit/switch.ts reads. A guess starts from the nearest sourced
21
+ * spring and names it. A component built on the table gets the measured
22
+ * value the moment it lands, without changing.
23
23
  *
24
24
  * Press highlight in/out are fades, not springs: see timing.ts.
25
25
  *
@@ -430,21 +430,6 @@ export const SWITCH_THUMB_MOVE_SPRING = {
430
430
  dampingRatio: 1
431
431
  };
432
432
 
433
- /**
434
- * UISegmentedControl selection thumb sliding to a new segment.
435
- * @source GUESS — WebKit's UIKit-matched switch thumb spring
436
- * (RenderThemeCocoa.mm `thumbMoveSpring`: response 0.30 s, ratio 0.75),
437
- * kept only until UISegmentedControl's measured spring replaces it;
438
- * UISwitch's measured travel (`SWITCH_THUMB_MOVE_SPRING`)
439
- * belongs to another control
440
- * @measure M-SG02
441
- * @measure M-SG03
442
- */
443
- export const SEGMENTED_THUMB_SPRING = {
444
- response: 0.3,
445
- dampingRatio: 0.75
446
- };
447
-
448
433
  // ---------------------------------------------------------------------
449
434
  // System
450
435
  // ---------------------------------------------------------------------
@@ -547,7 +532,6 @@ export const springs = {
547
532
  contextMenuMorph: CONTEXT_MENU_MORPH_SPRING,
548
533
  menuReducedMotion: MENU_REDUCED_MOTION_SPRING,
549
534
  switchThumbMove: SWITCH_THUMB_MOVE_SPRING,
550
- segmentedThumb: SEGMENTED_THUMB_SPRING,
551
535
  keyboard: KEYBOARD_SPRING,
552
536
  banner: BANNER_SPRING,
553
537
  sliderRelease: SLIDER_RELEASE_SPRING,
@@ -0,0 +1,15 @@
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, and isTrackedByGroup, which reads the mark
6
+ * @position Owner module of the private press-group-item attribute: the only
7
+ * file that writes its name. AlertDialog marks its actions, and the press
8
+ * controller (utils/pressFeedback.ts) leaves their press to the group's
9
+ * tracker. No package entry exports it.
10
+ */
11
+ /** Spread on each action that a group's tracker follows. */
12
+ export declare const pressGroupItemProps: Readonly<Record<string, string>>;
13
+ /** Whether a group's tracker paints the press on `element` or an ancestor. */
14
+ export declare function isTrackedByGroup(element: Element): boolean;
15
+ //# 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;;;;;;;;;GASG;AAIH,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEhE,CAAC;AAEF,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAE1D"}
@@ -0,0 +1,23 @@
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, and isTrackedByGroup, which reads 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 their press to the group's
10
+ * tracker. No package entry exports it.
11
+ */
12
+
13
+ const PRESS_GROUP_ITEM = 'data-astryx-press-group-item';
14
+
15
+ /** Spread on each action that a group's tracker follows. */
16
+ export const pressGroupItemProps = {
17
+ [PRESS_GROUP_ITEM]: ''
18
+ };
19
+
20
+ /** Whether a group's tracker paints the press on `element` or an ancestor. */
21
+ export function isTrackedByGroup(element) {
22
+ return element.closest(`[${PRESS_GROUP_ITEM}]`) != null;
23
+ }
@@ -0,0 +1,5 @@
1
+ /** Spread on a segment's title: marks it for the touch layer. */
2
+ export declare const segmentTitleProps: Readonly<Record<string, string>>;
3
+ /** The title inside `segment`, or null when the label is hidden. */
4
+ export declare function titleOfSegment(segment: Element): HTMLElement | null;
5
+ //# sourceMappingURL=segmentTitle.stylex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segmentTitle.stylex.d.ts","sourceRoot":"","sources":["../../src/privateAttributes/segmentTitle.stylex.ts"],"names":[],"mappings":"AAaA,iEAAiE;AACjE,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE9D,CAAC;AAEF,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAEnE"}
@@ -0,0 +1,22 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file privateAttributes/segmentTitle.stylex.ts
5
+ * @input Nothing
6
+ * @output segmentTitleProps, which marks a SegmentedControl segment's title,
7
+ * and titleOfSegment, which finds that title in a segment
8
+ * @position Owner module of the private segment-title attribute: the only
9
+ * file that writes its name. No package entry exports it.
10
+ */
11
+
12
+ const SEGMENT_TITLE = 'data-astryx-segment-title';
13
+
14
+ /** Spread on a segment's title: marks it for the touch layer. */
15
+ export const segmentTitleProps = {
16
+ [SEGMENT_TITLE]: ''
17
+ };
18
+
19
+ /** The title inside `segment`, or null when the label is hidden. */
20
+ export function titleOfSegment(segment) {
21
+ return segment.querySelector(`[${SEGMENT_TITLE}]`);
22
+ }