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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (682) hide show
  1. package/dist/AlertDialog/AlertDialog.d.ts +4 -1
  2. package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
  3. package/dist/AlertDialog/AlertDialog.js +46 -6
  4. package/dist/AppShell/AppShell.d.ts.map +1 -1
  5. package/dist/AppShell/AppShell.js +11 -3
  6. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
  7. package/dist/BottomSheet/BottomSheet.js +1 -0
  8. package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
  9. package/dist/BottomSheet/BottomSheetPanel.js +25 -4
  10. package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
  11. package/dist/BottomSheet/BottomSheetSwitcher.js +5 -0
  12. package/dist/BottomSheet/useMobileKeyboard.d.ts.map +1 -1
  13. package/dist/BottomSheet/useMobileKeyboard.js +6 -0
  14. package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
  15. package/dist/BottomSheet/useSheetGestures.js +12 -1
  16. package/dist/Button/Button.d.ts.map +1 -1
  17. package/dist/Button/Button.js +17 -1
  18. package/dist/Calendar/Calendar.d.ts.map +1 -1
  19. package/dist/Calendar/Calendar.js +18 -22
  20. package/dist/Calendar/getWeekdayHeaderNames.d.ts +16 -0
  21. package/dist/Calendar/getWeekdayHeaderNames.d.ts.map +1 -0
  22. package/dist/Calendar/getWeekdayHeaderNames.js +70 -0
  23. package/dist/Calendar/hooks/useCalendarDays.d.ts.map +1 -1
  24. package/dist/Calendar/hooks/useCalendarDays.js +2 -10
  25. package/dist/Calendar/{standaloneShortWeekdayNames.generated.d.ts → weekdayHeaderNames.generated.d.ts} +14 -14
  26. package/dist/Calendar/weekdayHeaderNames.generated.d.ts.map +1 -0
  27. package/dist/Calendar/{standaloneShortWeekdayNames.generated.js → weekdayHeaderNames.generated.js} +12 -12
  28. package/dist/Carousel/Carousel.d.ts.map +1 -1
  29. package/dist/Carousel/Carousel.js +2 -0
  30. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  31. package/dist/Chat/ChatComposerInput.js +6 -1
  32. package/dist/Chat/ChatMessageList.d.ts.map +1 -1
  33. package/dist/Chat/ChatMessageList.js +2 -1
  34. package/dist/Chat/useChatDictation.d.ts.map +1 -1
  35. package/dist/Chat/useChatDictation.js +2 -0
  36. package/dist/Chat/useChatNewMessages.js +1 -1
  37. package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
  38. package/dist/Chat/useChatStreamScroll.js +2 -0
  39. package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
  40. package/dist/Chat/useSpeechRecognition.js +3 -0
  41. package/dist/Chat/useTriggerMenu.js +1 -1
  42. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  43. package/dist/CheckboxInput/CheckboxInput.js +17 -12
  44. package/dist/CheckboxList/CheckboxList.d.ts +8 -1
  45. package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
  46. package/dist/CheckboxList/CheckboxList.js +2 -0
  47. package/dist/CodeBlock/CodeBlock.d.ts +10 -1
  48. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  49. package/dist/CodeBlock/CodeBlock.js +28 -11
  50. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  51. package/dist/CommandPalette/CommandPalette.js +2 -0
  52. package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
  53. package/dist/CommandPalette/CommandPaletteItem.js +2 -0
  54. package/dist/ComplexSelector/ComplexSelector.d.ts +4 -1
  55. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  56. package/dist/ComplexSelector/ComplexSelector.js +14 -4
  57. package/dist/ContextMenu/ContextMenu.js +2 -2
  58. package/dist/DateInput/MonthScroller.d.ts.map +1 -1
  59. package/dist/DateInput/MonthScroller.js +5 -2
  60. package/dist/DateInput/PickerWheel.d.ts +19 -0
  61. package/dist/DateInput/PickerWheel.d.ts.map +1 -0
  62. package/dist/DateInput/PickerWheel.js +625 -0
  63. package/dist/DateInput/TouchDateField.d.ts.map +1 -1
  64. package/dist/DateInput/TouchDateField.js +9 -30
  65. package/dist/DateInput/Wheel.d.ts +18 -37
  66. package/dist/DateInput/Wheel.d.ts.map +1 -1
  67. package/dist/DateInput/Wheel.js +84 -113
  68. package/dist/DateInput/useOwnScrollGesture.d.ts +10 -0
  69. package/dist/DateInput/useOwnScrollGesture.d.ts.map +1 -1
  70. package/dist/DateInput/useOwnScrollGesture.js +16 -3
  71. package/dist/DateInput/usePointerDragScroll.d.ts.map +1 -1
  72. package/dist/DateInput/usePointerDragScroll.js +2 -0
  73. package/dist/DateInput/useScrollSettle.d.ts.map +1 -1
  74. package/dist/DateInput/useScrollSettle.js +3 -0
  75. package/dist/DateInput/useWheelListbox.d.ts +59 -0
  76. package/dist/DateInput/useWheelListbox.d.ts.map +1 -0
  77. package/dist/DateInput/useWheelListbox.js +88 -0
  78. package/dist/DateInput/wheelOptions.d.ts +74 -0
  79. package/dist/DateInput/wheelOptions.d.ts.map +1 -0
  80. package/dist/DateInput/wheelOptions.js +98 -0
  81. package/dist/DateInput/wheelPhysics.d.ts +127 -0
  82. package/dist/DateInput/wheelPhysics.d.ts.map +1 -0
  83. package/dist/DateInput/wheelPhysics.js +341 -0
  84. package/dist/DateInput/wheelStrip.d.ts +92 -0
  85. package/dist/DateInput/wheelStrip.d.ts.map +1 -0
  86. package/dist/DateInput/wheelStrip.js +258 -0
  87. package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -1
  88. package/dist/DateTimeInput/TouchDateTimeField.js +10 -10
  89. package/dist/Dialog/Dialog.d.ts.map +1 -1
  90. package/dist/Dialog/Dialog.js +9 -32
  91. package/dist/Drawer/useDrawerDialogPresence.d.ts.map +1 -1
  92. package/dist/Drawer/useDrawerDialogPresence.js +3 -0
  93. package/dist/DropdownMenu/useMenuOverflow.d.ts.map +1 -1
  94. package/dist/DropdownMenu/useMenuOverflow.js +5 -0
  95. package/dist/Field/Field.js +2 -2
  96. package/dist/FieldStatus/useFieldStatusAnnouncement.d.ts.map +1 -1
  97. package/dist/FieldStatus/useFieldStatusAnnouncement.js +1 -0
  98. package/dist/FormLayout/FormLayout.d.ts +5 -1
  99. package/dist/FormLayout/FormLayout.d.ts.map +1 -1
  100. package/dist/HoverCard/HoverCard.d.ts +6 -4
  101. package/dist/HoverCard/HoverCard.d.ts.map +1 -1
  102. package/dist/HoverCard/HoverCard.js +48 -3
  103. package/dist/HoverCard/useHoverCard.d.ts +5 -4
  104. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  105. package/dist/HoverCard/useHoverCard.js +20 -33
  106. package/dist/Icon/Icon.d.ts +5 -1
  107. package/dist/Icon/Icon.d.ts.map +1 -1
  108. package/dist/Icon/Icon.js +5 -2
  109. package/dist/InfoTip/InfoTip.d.ts +5 -5
  110. package/dist/InfoTip/InfoTip.d.ts.map +1 -1
  111. package/dist/InfoTip/InfoTip.js +58 -19
  112. package/dist/Item/useSwipeAction.d.ts.map +1 -1
  113. package/dist/Item/useSwipeAction.js +3 -0
  114. package/dist/Layer/modalOutlet.d.ts.map +1 -1
  115. package/dist/Layer/modalOutlet.js +2 -0
  116. package/dist/Layer/outsidePress.d.ts.map +1 -1
  117. package/dist/Layer/outsidePress.js +1 -0
  118. package/dist/Layer/useLayer.d.ts.map +1 -1
  119. package/dist/Layer/useLayer.js +4 -1
  120. package/dist/Layer/useLayerDismissal.d.ts.map +1 -1
  121. package/dist/Layer/useLayerDismissal.js +3 -0
  122. package/dist/Layer/useTouchTrigger.d.ts +13 -7
  123. package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
  124. package/dist/Layer/useTouchTrigger.js +20 -6
  125. package/dist/Layout/index.d.ts +1 -1
  126. package/dist/Layout/index.d.ts.map +1 -1
  127. package/dist/Layout/index.js +1 -1
  128. package/dist/Layout/layoutReset.js +1 -1
  129. package/dist/Layout/overlayPaddingReset.stylex.d.ts +68 -0
  130. package/dist/Layout/overlayPaddingReset.stylex.d.ts.map +1 -0
  131. package/dist/Layout/overlayPaddingReset.stylex.js +72 -0
  132. package/dist/Layout/padding.stylex.d.ts +5 -129
  133. package/dist/Layout/padding.stylex.d.ts.map +1 -1
  134. package/dist/Layout/padding.stylex.js +9 -143
  135. package/dist/Layout/paddingStyles.stylex.d.ts +83 -0
  136. package/dist/Layout/paddingStyles.stylex.d.ts.map +1 -0
  137. package/dist/Layout/paddingStyles.stylex.js +99 -0
  138. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  139. package/dist/Lightbox/Lightbox.js +20 -1
  140. package/dist/MobileNav/MobileNav.d.ts +3 -2
  141. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  142. package/dist/MobileNav/MobileNav.js +10 -26
  143. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  144. package/dist/MultiSelector/MultiSelector.js +2 -1
  145. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  146. package/dist/NumberInput/NumberInput.js +2 -1
  147. package/dist/Outline/useOutlineFromDOM.d.ts.map +1 -1
  148. package/dist/Outline/useOutlineFromDOM.js +3 -0
  149. package/dist/Outline/useScrollSpy.d.ts.map +1 -1
  150. package/dist/Outline/useScrollSpy.js +3 -0
  151. package/dist/OverflowList/OverflowList.d.ts.map +1 -1
  152. package/dist/OverflowList/OverflowList.js +3 -0
  153. package/dist/Popover/Popover.d.ts.map +1 -1
  154. package/dist/Popover/Popover.js +6 -0
  155. package/dist/Popover/usePopover.js +2 -2
  156. package/dist/PowerSearch/PowerSearch.d.ts +39 -4
  157. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  158. package/dist/PowerSearch/PowerSearch.js +441 -134
  159. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts +102 -0
  160. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts.map +1 -0
  161. package/dist/PowerSearch/PowerSearchBottomSheet.js +1919 -0
  162. package/dist/PowerSearch/PowerSearchEditPopover.d.ts +35 -2
  163. package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
  164. package/dist/PowerSearch/PowerSearchEditPopover.js +43 -10
  165. package/dist/PowerSearch/PowerSearchFilterEditor.d.ts +1 -1
  166. package/dist/PowerSearch/PowerSearchFilterEditor.d.ts.map +1 -1
  167. package/dist/PowerSearch/PowerSearchFilterEditor.js +4 -2
  168. package/dist/PowerSearch/PowerSearchToken.d.ts +1 -1
  169. package/dist/PowerSearch/PowerSearchToken.d.ts.map +1 -1
  170. package/dist/PowerSearch/PowerSearchToken.js +3 -2
  171. package/dist/PowerSearch/PowerSearchValueEditor.d.ts +38 -3
  172. package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
  173. package/dist/PowerSearch/PowerSearchValueEditor.js +273 -86
  174. package/dist/PowerSearch/formatFilterValue.d.ts +14 -7
  175. package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
  176. package/dist/PowerSearch/formatFilterValue.js +31 -23
  177. package/dist/PowerSearch/formatTokenValue.d.ts +28 -0
  178. package/dist/PowerSearch/formatTokenValue.d.ts.map +1 -0
  179. package/dist/PowerSearch/formatTokenValue.js +161 -0
  180. package/dist/PowerSearch/index.d.ts +1 -1
  181. package/dist/PowerSearch/index.d.ts.map +1 -1
  182. package/dist/PowerSearch/powerSearchDateZone.d.ts +25 -0
  183. package/dist/PowerSearch/powerSearchDateZone.d.ts.map +1 -0
  184. package/dist/PowerSearch/powerSearchDateZone.js +57 -0
  185. package/dist/PowerSearch/powerSearchSheetUtils.d.ts +65 -0
  186. package/dist/PowerSearch/powerSearchSheetUtils.d.ts.map +1 -0
  187. package/dist/PowerSearch/powerSearchSheetUtils.js +168 -0
  188. package/dist/PowerSearch/types.d.ts +8 -1
  189. package/dist/PowerSearch/types.d.ts.map +1 -1
  190. package/dist/ProgressBar/ProgressBarTouch.d.ts.map +1 -1
  191. package/dist/ProgressBar/ProgressBarTouch.js +2 -0
  192. package/dist/RadioList/RadioList.d.ts.map +1 -1
  193. package/dist/RadioList/RadioList.js +3 -2
  194. package/dist/RadioList/RadioListItem.d.ts +1 -1
  195. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  196. package/dist/RadioList/RadioListItem.js +5 -3
  197. package/dist/Resizable/ResizeHandle.d.ts +2 -1
  198. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  199. package/dist/Resizable/ResizeHandle.js +101 -77
  200. package/dist/Resizable/createResizable.d.ts +145 -0
  201. package/dist/Resizable/createResizable.d.ts.map +1 -0
  202. package/dist/Resizable/createResizable.js +575 -0
  203. package/dist/Resizable/useResizable.d.ts +3 -3
  204. package/dist/Resizable/useResizable.d.ts.map +1 -1
  205. package/dist/Resizable/useResizable.js +252 -459
  206. package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts.map +1 -1
  207. package/dist/SegmentedControl/useSegmentedSelectionMotion.js +3 -3
  208. package/dist/SelectableCard/SelectableCard.d.ts +2 -0
  209. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  210. package/dist/SelectableCard/SelectableCard.js +36 -11
  211. package/dist/SelectableCard/selectableCardInput.d.ts +12 -0
  212. package/dist/SelectableCard/selectableCardInput.d.ts.map +1 -0
  213. package/dist/SelectableCard/selectableCardInput.js +20 -0
  214. package/dist/Selector/Selector.d.ts.map +1 -1
  215. package/dist/Selector/Selector.js +7 -9
  216. package/dist/SideNav/SideNav.d.ts.map +1 -1
  217. package/dist/SideNav/SideNav.js +36 -5
  218. package/dist/Slider/Slider.d.ts.map +1 -1
  219. package/dist/Slider/Slider.js +16 -11
  220. package/dist/Slider/sliderTouchController.js +2 -2
  221. package/dist/Spinner/Spinner.d.ts +1 -1
  222. package/dist/Spinner/Spinner.d.ts.map +1 -1
  223. package/dist/Spinner/Spinner.js +60 -58
  224. package/dist/Stepper/Stepper.d.ts.map +1 -1
  225. package/dist/Stepper/Stepper.js +10 -15
  226. package/dist/Switch/Switch.d.ts.map +1 -1
  227. package/dist/Switch/Switch.js +4 -10
  228. package/dist/Switch/useSwitchTouch.js +4 -4
  229. package/dist/Table/BaseTable.d.ts.map +1 -1
  230. package/dist/Table/BaseTable.js +29 -8
  231. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  232. package/dist/Table/plugins/columnResize/useTableColumnResize.js +3 -1
  233. package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
  234. package/dist/Table/plugins/filtering/useTableFiltering.js +2 -1
  235. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  236. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +4 -0
  237. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
  238. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +2 -0
  239. package/dist/TextArea/TextArea.d.ts.map +1 -1
  240. package/dist/TextArea/TextArea.js +2 -1
  241. package/dist/TextInput/TextInput.d.ts +2 -2
  242. package/dist/TextInput/TextInput.d.ts.map +1 -1
  243. package/dist/TextInput/TextInput.js +12 -8
  244. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  245. package/dist/TimeInput/TimeInput.js +2 -0
  246. package/dist/TimeInput/TouchTimeField.d.ts.map +1 -1
  247. package/dist/TimeInput/TouchTimeField.js +2 -0
  248. package/dist/Timer/Timer.d.ts.map +1 -1
  249. package/dist/Timer/Timer.js +2 -0
  250. package/dist/Timestamp/Timestamp.js +1 -1
  251. package/dist/Timestamp/formatInstant.d.ts.map +1 -1
  252. package/dist/Timestamp/formatInstant.js +1 -23
  253. package/dist/Toast/Toast.d.ts +11 -1
  254. package/dist/Toast/Toast.d.ts.map +1 -1
  255. package/dist/Toast/Toast.js +25 -15
  256. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  257. package/dist/Toast/ToastViewport.js +97 -34
  258. package/dist/Toast/types.d.ts +9 -3
  259. package/dist/Toast/types.d.ts.map +1 -1
  260. package/dist/Toast/useToast.d.ts.map +1 -1
  261. package/dist/Toast/useToast.js +1 -0
  262. package/dist/Tokenizer/Tokenizer.d.ts +44 -46
  263. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  264. package/dist/Tokenizer/Tokenizer.js +20 -21
  265. package/dist/Tokenizer/TokenizerBottomSheet.d.ts +1 -1
  266. package/dist/Tokenizer/TokenizerBottomSheet.js +4 -6
  267. package/dist/Tokenizer/index.d.ts +1 -1
  268. package/dist/Tokenizer/index.d.ts.map +1 -1
  269. package/dist/Tooltip/Tooltip.d.ts +2 -23
  270. package/dist/Tooltip/Tooltip.d.ts.map +1 -1
  271. package/dist/Tooltip/Tooltip.js +5 -29
  272. package/dist/Tooltip/useTooltip.d.ts +23 -30
  273. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  274. package/dist/Tooltip/useTooltip.js +194 -108
  275. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  276. package/dist/Typeahead/BaseTypeahead.js +27 -18
  277. package/dist/Typeahead/TypeaheadItem.d.ts +2 -1
  278. package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
  279. package/dist/animator/createAnimator.d.ts +98 -0
  280. package/dist/animator/createAnimator.d.ts.map +1 -0
  281. package/dist/animator/createAnimator.js +259 -0
  282. package/dist/astryx.css +41 -7
  283. package/dist/gestures/GestureHost.d.ts +16 -1
  284. package/dist/gestures/GestureHost.d.ts.map +1 -1
  285. package/dist/gestures/GestureHost.js +1 -1
  286. package/dist/gestures/PressTracker.d.ts.map +1 -1
  287. package/dist/gestures/PressTracker.js +4 -3
  288. package/dist/hooks/ModalAnnounceProvider.d.ts.map +1 -1
  289. package/dist/hooks/ModalAnnounceProvider.js +1 -0
  290. package/dist/hooks/actionGroupTracker.d.ts +4 -1
  291. package/dist/hooks/actionGroupTracker.d.ts.map +1 -1
  292. package/dist/hooks/actionGroupTracker.js +13 -3
  293. package/dist/hooks/index.d.ts +1 -0
  294. package/dist/hooks/index.d.ts.map +1 -1
  295. package/dist/hooks/index.js +1 -0
  296. package/dist/hooks/longPressDetector.d.ts +66 -0
  297. package/dist/hooks/longPressDetector.d.ts.map +1 -0
  298. package/dist/hooks/longPressDetector.js +200 -0
  299. package/dist/hooks/pressGroupContext.d.ts +6 -0
  300. package/dist/hooks/pressGroupContext.d.ts.map +1 -0
  301. package/dist/hooks/pressGroupContext.js +20 -0
  302. package/dist/hooks/rootScrollStyles.d.ts +48 -0
  303. package/dist/hooks/rootScrollStyles.d.ts.map +1 -0
  304. package/dist/hooks/rootScrollStyles.js +207 -0
  305. package/dist/hooks/scrollLockTouchGuard.d.ts +13 -0
  306. package/dist/hooks/scrollLockTouchGuard.d.ts.map +1 -0
  307. package/dist/hooks/scrollLockTouchGuard.js +117 -0
  308. package/dist/hooks/scrollbarGutter.d.ts +4 -4
  309. package/dist/hooks/scrollbarGutter.d.ts.map +1 -1
  310. package/dist/hooks/scrollbarGutter.js +36 -23
  311. package/dist/hooks/useActionGroupTracking.d.ts +53 -0
  312. package/dist/hooks/useActionGroupTracking.d.ts.map +1 -0
  313. package/dist/hooks/useActionGroupTracking.js +174 -0
  314. package/dist/hooks/useAnimator.d.ts +41 -0
  315. package/dist/hooks/useAnimator.d.ts.map +1 -0
  316. package/dist/hooks/useAnimator.js +70 -0
  317. package/dist/hooks/useAnnounceRenderedText.d.ts.map +1 -1
  318. package/dist/hooks/useAnnounceRenderedText.js +1 -0
  319. package/dist/hooks/useAttachment.d.ts +1 -1
  320. package/dist/hooks/useAttachment.js +1 -1
  321. package/dist/hooks/useAutoMediaMode.d.ts.map +1 -1
  322. package/dist/hooks/useAutoMediaMode.js +1 -0
  323. package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
  324. package/dist/hooks/useBusyAnnouncement.js +2 -0
  325. package/dist/hooks/useDevWarning.d.ts.map +1 -1
  326. package/dist/hooks/useDevWarning.js +2 -0
  327. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  328. package/dist/hooks/useFocusTrap.js +2 -0
  329. package/dist/hooks/useGridFocus.d.ts +8 -5
  330. package/dist/hooks/useGridFocus.d.ts.map +1 -1
  331. package/dist/hooks/useGridFocus.js +4 -3
  332. package/dist/hooks/useHotkeys.d.ts.map +1 -1
  333. package/dist/hooks/useHotkeys.js +3 -0
  334. package/dist/hooks/useImageMode.d.ts.map +1 -1
  335. package/dist/hooks/useImageMode.js +3 -0
  336. package/dist/hooks/useInputStatusIcon.d.ts +1 -1
  337. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  338. package/dist/hooks/useInputStatusIcon.js +2 -2
  339. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
  340. package/dist/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -1
  341. package/dist/hooks/useKeyboardHint.js +1 -1
  342. package/dist/hooks/useLongPress.d.ts +8 -9
  343. package/dist/hooks/useLongPress.d.ts.map +1 -1
  344. package/dist/hooks/useLongPress.js +23 -106
  345. package/dist/hooks/useMenuHover.d.ts.map +1 -1
  346. package/dist/hooks/useMenuHover.js +2 -0
  347. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  348. package/dist/hooks/useMenuPress.js +3 -0
  349. package/dist/hooks/useOverflow.d.ts.map +1 -1
  350. package/dist/hooks/useOverflow.js +2 -1
  351. package/dist/hooks/usePressFeedback.d.ts.map +1 -1
  352. package/dist/hooks/usePressFeedback.js +1 -0
  353. package/dist/hooks/useResolvedRequired.d.ts +3 -0
  354. package/dist/hooks/useResolvedRequired.d.ts.map +1 -1
  355. package/dist/hooks/useResolvedRequired.js +3 -0
  356. package/dist/hooks/useScrollLock.d.ts +8 -9
  357. package/dist/hooks/useScrollLock.d.ts.map +1 -1
  358. package/dist/hooks/useScrollLock.js +50 -48
  359. package/dist/hooks/useScrollableArea.d.ts.map +1 -1
  360. package/dist/hooks/useScrollableArea.js +5 -0
  361. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  362. package/dist/hooks/useStreamingText.js +3 -0
  363. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts +8 -0
  364. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts.map +1 -0
  365. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.js +42 -0
  366. package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.d.ts.map +1 -1
  367. package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.js +6 -0
  368. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts +8 -0
  369. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts.map +1 -0
  370. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.js +14 -0
  371. package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
  372. package/dist/i18n/generated-locales/en.generated.js +30 -0
  373. package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
  374. package/dist/i18n/generated-locales/pseudo.generated.js +30 -0
  375. package/dist/index.d.ts +1 -0
  376. package/dist/index.d.ts.map +1 -1
  377. package/dist/index.js +4 -0
  378. package/dist/internal/indicatorPress.stylex.d.ts +20 -0
  379. package/dist/internal/indicatorPress.stylex.d.ts.map +1 -0
  380. package/dist/internal/indicatorPress.stylex.js +26 -0
  381. package/dist/internal/selectable-card.d.ts +21 -0
  382. package/dist/internal/selectable-card.d.ts.map +1 -0
  383. package/dist/internal/selectable-card.js +20 -0
  384. package/dist/internal/sheetDraft.d.ts +2 -2
  385. package/dist/internal/sheetDraft.js +2 -2
  386. package/dist/motion/animatedLayout.d.ts +8 -0
  387. package/dist/motion/animatedLayout.d.ts.map +1 -1
  388. package/dist/motion/animatedLayout.js +246 -53
  389. package/dist/motion/animator.d.ts +14 -14
  390. package/dist/motion/animator.d.ts.map +1 -1
  391. package/dist/motion/animator.js +45 -26
  392. package/dist/motion/frameBlock.d.ts +14 -0
  393. package/dist/motion/frameBlock.d.ts.map +1 -0
  394. package/dist/motion/frameBlock.js +16 -0
  395. package/dist/motion/progress.d.ts +88 -0
  396. package/dist/motion/progress.d.ts.map +1 -0
  397. package/dist/motion/progress.js +128 -0
  398. package/dist/motion/reducedMotion.d.ts.map +1 -1
  399. package/dist/motion/reducedMotion.js +3 -1
  400. package/dist/motion/uikit/alert.d.ts +41 -0
  401. package/dist/motion/uikit/alert.d.ts.map +1 -0
  402. package/dist/motion/uikit/alert.js +43 -0
  403. package/dist/motion/uikit/index.d.ts +4 -3
  404. package/dist/motion/uikit/index.d.ts.map +1 -1
  405. package/dist/motion/uikit/index.js +4 -3
  406. package/dist/motion/uikit/picker.d.ts +96 -0
  407. package/dist/motion/uikit/picker.d.ts.map +1 -0
  408. package/dist/motion/uikit/picker.js +117 -0
  409. package/dist/privateAttributes/pressGroupItem.stylex.d.ts +22 -0
  410. package/dist/privateAttributes/pressGroupItem.stylex.d.ts.map +1 -0
  411. package/dist/privateAttributes/pressGroupItem.stylex.js +36 -0
  412. package/dist/privateAttributes/reducedMotion.stylex.d.ts +23 -0
  413. package/dist/privateAttributes/reducedMotion.stylex.d.ts.map +1 -0
  414. package/dist/privateAttributes/reducedMotion.stylex.js +40 -0
  415. package/dist/theme/Theme.d.ts.map +1 -1
  416. package/dist/theme/Theme.js +29 -4
  417. package/dist/theme/generateThemeRules.d.ts.map +1 -1
  418. package/dist/theme/generateThemeRules.js +14 -13
  419. package/dist/theme/motionKnobs.d.ts +4 -3
  420. package/dist/theme/motionKnobs.d.ts.map +1 -1
  421. package/dist/theme/motionKnobs.js +3 -2
  422. package/dist/theme/themeMotion.d.ts +6 -0
  423. package/dist/theme/themeMotion.d.ts.map +1 -1
  424. package/dist/theme/themeMotion.js +15 -2
  425. package/dist/theme/tokens.stylex.d.ts +3 -0
  426. package/dist/theme/tokens.stylex.d.ts.map +1 -1
  427. package/dist/theme/tokens.stylex.js +4 -1
  428. package/dist/utils/dateParser.d.ts.map +1 -1
  429. package/dist/utils/dateParser.js +12 -0
  430. package/dist/utils/disabledInteraction.d.ts +10 -2
  431. package/dist/utils/disabledInteraction.d.ts.map +1 -1
  432. package/dist/utils/disabledInteraction.js +16 -2
  433. package/dist/utils/focusReturn.d.ts +22 -25
  434. package/dist/utils/focusReturn.d.ts.map +1 -1
  435. package/dist/utils/focusReturn.js +36 -29
  436. package/dist/utils/index.d.ts +1 -1
  437. package/dist/utils/index.d.ts.map +1 -1
  438. package/dist/utils/index.js +1 -1
  439. package/dist/utils/interactionModality.d.ts.map +1 -1
  440. package/dist/utils/interactionModality.js +4 -0
  441. package/dist/utils/interactionOverlay.stylex.d.ts +3 -2
  442. package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
  443. package/dist/utils/interactionOverlay.stylex.js +3 -2
  444. package/dist/utils/isFocusDetached.d.ts +27 -0
  445. package/dist/utils/isFocusDetached.d.ts.map +1 -0
  446. package/dist/utils/isFocusDetached.js +32 -0
  447. package/dist/utils/plainDate.d.ts +31 -0
  448. package/dist/utils/plainDate.d.ts.map +1 -1
  449. package/dist/utils/plainDate.js +68 -4
  450. package/dist/utils/pressFeedback.d.ts.map +1 -1
  451. package/dist/utils/pressFeedback.js +20 -6
  452. package/dist/utils/triggerFocus.d.ts +36 -0
  453. package/dist/utils/triggerFocus.d.ts.map +1 -0
  454. package/dist/utils/triggerFocus.js +65 -0
  455. package/locales/en.json +120 -0
  456. package/locales/pseudo.json +90 -0
  457. package/package.json +14 -9
  458. package/src/AlertDialog/AlertDialog.doc.mjs +2 -2
  459. package/src/AlertDialog/AlertDialog.tsx +46 -5
  460. package/src/AppShell/AppShell.tsx +13 -4
  461. package/src/BottomSheet/BottomSheet.tsx +1 -0
  462. package/src/BottomSheet/BottomSheetPanel.tsx +39 -3
  463. package/src/BottomSheet/BottomSheetSwitcher.tsx +5 -0
  464. package/src/BottomSheet/useMobileKeyboard.ts +4 -0
  465. package/src/BottomSheet/useSheetGestures.ts +10 -1
  466. package/src/Button/Button.tsx +26 -4
  467. package/src/Calendar/Calendar.tsx +40 -32
  468. package/src/Calendar/getWeekdayHeaderNames.ts +88 -0
  469. package/src/Calendar/hooks/useCalendarDays.ts +5 -10
  470. package/src/Calendar/{standaloneShortWeekdayNames.generated.ts → weekdayHeaderNames.generated.ts} +14 -14
  471. package/src/Carousel/Carousel.tsx +1 -0
  472. package/src/Chat/ChatComposerInput.tsx +4 -7
  473. package/src/Chat/ChatMessageList.tsx +2 -1
  474. package/src/Chat/useChatDictation.ts +1 -0
  475. package/src/Chat/useChatNewMessages.ts +1 -1
  476. package/src/Chat/useChatStreamScroll.ts +2 -0
  477. package/src/Chat/useSpeechRecognition.ts +2 -0
  478. package/src/Chat/useTriggerMenu.tsx +1 -1
  479. package/src/CheckboxInput/CheckboxInput.doc.mjs +18 -0
  480. package/src/CheckboxInput/CheckboxInput.tsx +38 -15
  481. package/src/CheckboxList/CheckboxList.doc.mjs +7 -0
  482. package/src/CheckboxList/CheckboxList.tsx +9 -0
  483. package/src/CodeBlock/CodeBlock.doc.mjs +9 -1
  484. package/src/CodeBlock/CodeBlock.tsx +41 -4
  485. package/src/CommandPalette/CommandPalette.tsx +1 -0
  486. package/src/CommandPalette/CommandPaletteItem.tsx +1 -0
  487. package/src/ComplexSelector/ComplexSelector.tsx +20 -5
  488. package/src/ContextMenu/ContextMenu.tsx +2 -2
  489. package/src/DateInput/MonthScroller.tsx +8 -2
  490. package/src/DateInput/PickerWheel.tsx +765 -0
  491. package/src/DateInput/TouchDateField.tsx +6 -32
  492. package/src/DateInput/Wheel.tsx +94 -150
  493. package/src/DateInput/useOwnScrollGesture.ts +25 -3
  494. package/src/DateInput/usePointerDragScroll.ts +1 -0
  495. package/src/DateInput/useScrollSettle.ts +2 -0
  496. package/src/DateInput/useWheelListbox.ts +112 -0
  497. package/src/DateInput/wheelOptions.ts +155 -0
  498. package/src/DateInput/wheelPhysics.ts +406 -0
  499. package/src/DateInput/wheelStrip.ts +341 -0
  500. package/src/DateTimeInput/TouchDateTimeField.tsx +8 -13
  501. package/src/Dialog/Dialog.tsx +12 -32
  502. package/src/Drawer/useDrawerDialogPresence.ts +2 -0
  503. package/src/DropdownMenu/useMenuOverflow.ts +3 -0
  504. package/src/Field/Field.tsx +2 -2
  505. package/src/FieldStatus/useFieldStatusAnnouncement.ts +1 -0
  506. package/src/FormLayout/FormLayout.doc.mjs +181 -46
  507. package/src/FormLayout/FormLayout.tsx +5 -1
  508. package/src/HoverCard/HoverCard.doc.mjs +10 -8
  509. package/src/HoverCard/HoverCard.tsx +58 -6
  510. package/src/HoverCard/useHoverCard.doc.mjs +178 -36
  511. package/src/HoverCard/useHoverCard.tsx +49 -54
  512. package/src/Icon/Icon.doc.mjs +51 -10
  513. package/src/Icon/Icon.tsx +15 -7
  514. package/src/IconButton/IconButton.doc.mjs +141 -21
  515. package/src/InfoTip/InfoTip.tsx +72 -16
  516. package/src/Item/useSwipeAction.ts +2 -0
  517. package/src/Layer/modalOutlet.ts +2 -0
  518. package/src/Layer/outsidePress.ts +1 -0
  519. package/src/Layer/useLayer.tsx +3 -1
  520. package/src/Layer/useLayerDismissal.ts +2 -0
  521. package/src/Layer/useTouchTrigger.ts +19 -6
  522. package/src/Layout/index.ts +1 -1
  523. package/src/Layout/layoutReset.ts +1 -1
  524. package/src/Layout/overlayPaddingReset.stylex.ts +73 -0
  525. package/src/Layout/padding.stylex.ts +9 -133
  526. package/src/Layout/paddingStyles.stylex.ts +87 -0
  527. package/src/Lightbox/Lightbox.tsx +20 -1
  528. package/src/Lightbox/useLightbox.doc.mjs +167 -0
  529. package/src/MobileNav/MobileNav.tsx +10 -31
  530. package/src/MultiSelector/MultiSelector.tsx +2 -7
  531. package/src/NumberInput/NumberInput.tsx +2 -7
  532. package/src/Outline/useOutlineFromDOM.ts +2 -0
  533. package/src/Outline/useScrollSpy.ts +2 -0
  534. package/src/OverflowList/OverflowList.tsx +2 -0
  535. package/src/Popover/Popover.tsx +4 -0
  536. package/src/Popover/usePopover.tsx +2 -2
  537. package/src/PowerSearch/PowerSearch.doc.mjs +60 -8
  538. package/src/PowerSearch/PowerSearch.tsx +620 -157
  539. package/src/PowerSearch/PowerSearchBottomSheet.tsx +2525 -0
  540. package/src/PowerSearch/PowerSearchEditPopover.tsx +65 -9
  541. package/src/PowerSearch/PowerSearchFilterEditor.tsx +2 -0
  542. package/src/PowerSearch/PowerSearchToken.tsx +2 -0
  543. package/src/PowerSearch/PowerSearchValueEditor.tsx +340 -59
  544. package/src/PowerSearch/formatFilterValue.ts +49 -27
  545. package/src/PowerSearch/formatTokenValue.ts +220 -0
  546. package/src/PowerSearch/index.ts +5 -1
  547. package/src/PowerSearch/powerSearchDateZone.ts +95 -0
  548. package/src/PowerSearch/powerSearchSheetUtils.ts +224 -0
  549. package/src/PowerSearch/types.ts +8 -1
  550. package/src/ProgressBar/ProgressBarTouch.ts +2 -0
  551. package/src/RadioList/RadioList.tsx +3 -2
  552. package/src/RadioList/RadioListItem.tsx +5 -3
  553. package/src/Resizable/Resizable.doc.mjs +5 -4
  554. package/src/Resizable/ResizeHandle.tsx +169 -109
  555. package/src/Resizable/createResizable.ts +831 -0
  556. package/src/Resizable/useResizable.ts +292 -623
  557. package/src/SegmentedControl/useSegmentedSelectionMotion.ts +6 -3
  558. package/src/SelectableCard/SelectableCard.tsx +39 -10
  559. package/src/SelectableCard/selectableCardInput.ts +30 -0
  560. package/src/Selector/Selector.tsx +7 -19
  561. package/src/SideNav/SideNav.tsx +41 -5
  562. package/src/Slider/Slider.tsx +20 -11
  563. package/src/Slider/sliderTouchController.ts +2 -2
  564. package/src/Spinner/Spinner.tsx +77 -63
  565. package/src/Stepper/Stepper.tsx +10 -27
  566. package/src/Switch/Switch.tsx +2 -6
  567. package/src/Switch/useSwitchTouch.ts +4 -4
  568. package/src/Table/BaseTable.tsx +46 -12
  569. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +2 -1
  570. package/src/Table/plugins/filtering/useTableFiltering.tsx +1 -0
  571. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +4 -0
  572. package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +2 -0
  573. package/src/TextArea/TextArea.tsx +2 -7
  574. package/src/TextInput/TextInput.tsx +13 -17
  575. package/src/TimeInput/TimeInput.tsx +2 -0
  576. package/src/TimeInput/TouchTimeField.tsx +2 -0
  577. package/src/Timer/Timer.tsx +1 -0
  578. package/src/Timestamp/Timestamp.tsx +1 -1
  579. package/src/Timestamp/formatInstant.ts +1 -33
  580. package/src/Toast/Toast.doc.mjs +4 -3
  581. package/src/Toast/Toast.tsx +52 -32
  582. package/src/Toast/ToastViewport.tsx +123 -35
  583. package/src/Toast/types.ts +9 -3
  584. package/src/Toast/useToast.tsx +1 -0
  585. package/src/Tokenizer/Tokenizer.doc.mjs +10 -10
  586. package/src/Tokenizer/Tokenizer.tsx +61 -62
  587. package/src/Tokenizer/TokenizerBottomSheet.tsx +9 -11
  588. package/src/Tokenizer/index.ts +1 -0
  589. package/src/Tooltip/Tooltip.tsx +6 -42
  590. package/src/Tooltip/useTooltip.doc.mjs +24 -0
  591. package/src/Tooltip/useTooltip.tsx +237 -134
  592. package/src/Typeahead/BaseTypeahead.tsx +27 -17
  593. package/src/Typeahead/TypeaheadItem.doc.mjs +6 -3
  594. package/src/Typeahead/TypeaheadItem.tsx +2 -1
  595. package/src/animator/createAnimator.doc.mjs +153 -0
  596. package/src/animator/createAnimator.ts +324 -0
  597. package/src/gestures/GestureHost.ts +1 -1
  598. package/src/gestures/PressTracker.ts +4 -3
  599. package/src/gestures/README.md +10 -4
  600. package/src/hooks/ModalAnnounceProvider.tsx +1 -0
  601. package/src/hooks/actionGroupTracker.ts +20 -5
  602. package/src/hooks/index.ts +2 -0
  603. package/src/hooks/longPressDetector.ts +273 -0
  604. package/src/hooks/pressGroupContext.ts +21 -0
  605. package/src/hooks/rootScrollStyles.ts +247 -0
  606. package/src/hooks/scrollLockTouchGuard.ts +149 -0
  607. package/src/hooks/scrollbarGutter.ts +41 -26
  608. package/src/hooks/useActionGroupTracking.ts +224 -0
  609. package/src/hooks/useAnimator.doc.mjs +109 -0
  610. package/src/hooks/useAnimator.ts +67 -0
  611. package/src/hooks/useAnnounceRenderedText.ts +1 -0
  612. package/src/hooks/useAttachment.ts +1 -1
  613. package/src/hooks/useAutoMediaMode.ts +1 -0
  614. package/src/hooks/useBusyAnnouncement.ts +2 -0
  615. package/src/hooks/useDevWarning.ts +2 -0
  616. package/src/hooks/useFocusTrap.ts +2 -0
  617. package/src/hooks/useGridFocus.doc.mjs +6 -6
  618. package/src/hooks/useGridFocus.ts +10 -7
  619. package/src/hooks/useHotkeys.ts +2 -0
  620. package/src/hooks/useImageMode.ts +2 -0
  621. package/src/hooks/useInputStatusIcon.tsx +3 -2
  622. package/src/hooks/useKeyboardHint.tsx +1 -1
  623. package/src/hooks/useLongPress.doc.mjs +2 -2
  624. package/src/hooks/useLongPress.ts +32 -122
  625. package/src/hooks/useMenuHover.ts +1 -0
  626. package/src/hooks/useMenuPress.ts +2 -0
  627. package/src/hooks/useOverflow.ts +2 -1
  628. package/src/hooks/usePressFeedback.ts +1 -0
  629. package/src/hooks/useResolvedRequired.ts +3 -0
  630. package/src/hooks/useScrollLock.doc.mjs +51 -12
  631. package/src/hooks/useScrollLock.ts +53 -60
  632. package/src/hooks/useScrollableArea.ts +4 -0
  633. package/src/hooks/useStreamingText.ts +2 -0
  634. package/src/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.ts +43 -0
  635. package/src/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.ts +6 -0
  636. package/src/i18n/generated-english/PowerSearch/formatTokenValue.generated.ts +15 -0
  637. package/src/i18n/generated-locales/en.generated.ts +41 -0
  638. package/src/i18n/generated-locales/pseudo.generated.ts +42 -0
  639. package/src/index.ts +13 -0
  640. package/src/internal/indicatorPress.stylex.ts +24 -0
  641. package/src/internal/selectable-card.ts +21 -0
  642. package/src/internal/sheetDraft.ts +2 -2
  643. package/src/motion/MEASUREMENTS.md +18 -0
  644. package/src/motion/README.md +10 -5
  645. package/src/motion/animatedLayout.ts +323 -60
  646. package/src/motion/animator.ts +66 -37
  647. package/src/motion/frameBlock.ts +16 -0
  648. package/src/motion/progress.ts +155 -0
  649. package/src/motion/reducedMotion.ts +3 -1
  650. package/src/motion/uikit/alert.ts +43 -0
  651. package/src/motion/uikit/index.ts +4 -3
  652. package/src/motion/uikit/picker.ts +116 -0
  653. package/src/privateAttributes/pressGroupItem.stylex.ts +44 -0
  654. package/src/privateAttributes/reducedMotion.stylex.ts +45 -0
  655. package/src/theme/Theme.tsx +37 -3
  656. package/src/theme/generateThemeRules.ts +14 -12
  657. package/src/theme/motionKnobs.ts +4 -3
  658. package/src/theme/themeMotion.ts +17 -2
  659. package/src/theme/tokens.stylex.ts +2 -0
  660. package/src/utils/dateParser.ts +16 -0
  661. package/src/utils/disabledInteraction.ts +23 -2
  662. package/src/utils/focusReturn.ts +38 -31
  663. package/src/utils/index.ts +1 -1
  664. package/src/utils/interactionModality.ts +4 -0
  665. package/src/utils/interactionOverlay.stylex.ts +3 -2
  666. package/src/utils/isFocusDetached.ts +34 -0
  667. package/src/utils/plainDate.ts +80 -4
  668. package/src/utils/pressFeedback.ts +24 -6
  669. package/src/utils/triggerFocus.ts +80 -0
  670. package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts +0 -14
  671. package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts.map +0 -1
  672. package/dist/Calendar/getStandaloneShortWeekdayNames.js +0 -26
  673. package/dist/Calendar/standaloneShortWeekdayNames.generated.d.ts.map +0 -1
  674. package/dist/Layer/usePressPin.d.ts +0 -93
  675. package/dist/Layer/usePressPin.d.ts.map +0 -1
  676. package/dist/Layer/usePressPin.js +0 -363
  677. package/dist/internal/touch-sheet.d.ts +0 -21
  678. package/dist/internal/touch-sheet.d.ts.map +0 -1
  679. package/dist/internal/touch-sheet.js +0 -19
  680. package/src/Calendar/getStandaloneShortWeekdayNames.ts +0 -38
  681. package/src/Layer/usePressPin.ts +0 -510
  682. package/src/internal/touch-sheet.ts +0 -21
@@ -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"}
@@ -44,6 +44,8 @@ import { registerTheme } from "./themeRegistry.js";
44
44
  import { dataAttr } from "../naming.js";
45
45
  import { ThemeContext } from "./useTheme.js";
46
46
  import { warnOnce } from "../utils/devWarning.js";
47
+ import { REDUCED_MOTION_PROPERTY, resolveMotionKnobs } from "./themeMotion.js";
48
+ import { reducedMotionMarkProps, setRootReducedMotionMark } from "../privateAttributes/reducedMotion.stylex.js";
47
49
 
48
50
  /**
49
51
  * Theme provider props
@@ -70,6 +72,10 @@ const wrapperStyles = {
70
72
  system: {
71
73
  kQNsl9: "x108lcm5",
72
74
  $$css: true
75
+ },
76
+ reducedMotion: {
77
+ "--_astryx-reduced-motion": "x1e3mt4b",
78
+ $$css: true
73
79
  }
74
80
  };
75
81
 
@@ -104,6 +110,8 @@ const THEME_LAYER_ORDER = '@layer reset, astryx-base, astryx-theme;';
104
110
  */
105
111
  function useThemeStyleInjection(theme) {
106
112
  const id = useId();
113
+
114
+ // Syncs the document's stylesheets with the runtime theme CSS.
107
115
  useInsertionEffect(() => {
108
116
  // Built themes have their CSS in a separate file — skip injection
109
117
  if (theme.__built) {
@@ -178,8 +186,13 @@ function useThemeStyleInjection(theme) {
178
186
  *
179
187
  * - 'light' | 'dark' → sets data-theme="light" | "dark"
180
188
  * - 'system' → removes data-theme (reset.css defaults to color-scheme: light dark)
189
+ *
190
+ * A theme that reduces motion for everyone also marks `<html>` with
191
+ * `data-astryx-reduced-motion` and its custom property, so layers portaled
192
+ * outside the wrapper reduce their motion too.
181
193
  */
182
- function useRootThemeSync(isNested, mode, themeName) {
194
+ function useRootThemeSync(isNested, mode, themeName, reducesMotion) {
195
+ // Syncs the theme attributes on the root `<html>` element.
183
196
  useIsomorphicLayoutEffect(() => {
184
197
  if (isNested) {
185
198
  return;
@@ -196,11 +209,19 @@ function useRootThemeSync(isNested, mode, themeName) {
196
209
 
197
210
  // Sync theme name so @scope rules reach portals/fallback viewports.
198
211
  document.documentElement.setAttribute(dataAttr('theme'), themeName);
212
+ setRootReducedMotionMark(document.documentElement, reducesMotion);
213
+ if (reducesMotion) {
214
+ document.documentElement.style.setProperty(REDUCED_MOTION_PROPERTY, '1');
215
+ } else {
216
+ document.documentElement.style.removeProperty(REDUCED_MOTION_PROPERTY);
217
+ }
199
218
  return () => {
200
219
  document.documentElement.removeAttribute('data-theme');
201
220
  document.documentElement.removeAttribute(dataAttr('theme'));
221
+ setRootReducedMotionMark(document.documentElement, false);
222
+ document.documentElement.style.removeProperty(REDUCED_MOTION_PROPERTY);
202
223
  };
203
- }, [isNested, mode, themeName]);
224
+ }, [isNested, mode, themeName, reducesMotion]);
204
225
  }
205
226
 
206
227
  // =============================================================================
@@ -228,7 +249,10 @@ export function Theme({
228
249
  const isNested = use(ThemeNestingContext);
229
250
  registerTheme(theme);
230
251
  useThemeStyleInjection(theme);
231
- useRootThemeSync(isNested, mode, theme.name);
252
+ // resolveMotionKnobs resolves no public theme to 'always', so no theme
253
+ // marks its root.
254
+ const reducesMotion = resolveMotionKnobs(theme.__axes?.motion).reducedMotion === 'always';
255
+ useRootThemeSync(isNested, mode, theme.name, reducesMotion);
232
256
 
233
257
  // Get color-scheme style
234
258
  const colorSchemeStyle = mode === 'dark' ? wrapperStyles.dark : mode === 'light' ? wrapperStyles.light : wrapperStyles.system;
@@ -243,8 +267,9 @@ export function Theme({
243
267
  children: /*#__PURE__*/_jsx(ThemeNestingContext, {
244
268
  value: true,
245
269
  children: /*#__PURE__*/_jsx("div", {
246
- ...stylex.props(wrapperStyles.base, colorSchemeStyle),
270
+ ...stylex.props(wrapperStyles.base, colorSchemeStyle, reducesMotion && wrapperStyles.reducedMotion),
247
271
  "data-astryx-theme": theme.name,
272
+ ...reducedMotionMarkProps(reducesMotion),
248
273
  "data-theme": mode === 'system' ? undefined : mode,
249
274
  children: children
250
275
  })
@@ -1 +1 @@
1
- {"version":3,"file":"generateThemeRules.d.ts","sourceRoot":"","sources":["../../src/theme/generateThemeRules.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAC,iBAAiB,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AACnE,OAAO,EAGL,KAAK,2BAA2B,EACjC,MAAM,oBAAoB,CAAC;AAmH5B;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,+EAA+E;IAC/E,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kFAAkF;IAClF,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAyhBD,sFAAsF;AACtF,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACxC,KAAK,GAAE,aAAa,CAAC,2BAA2B,CAAM,GACrD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAqDpB;AA+OD;;;;;GAKG;AACH;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,0CAA0C;IAC1C,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AA4FD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,eAAe,EACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,MAAM,EAAE,CA6DV;AAoZD;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,eAAe,CAejB;AA8BD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,EACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,MAAM,CA+GR;AAmDD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,YAAY,EACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,cAAc,CAgGhB;AAOD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,YAAY,EACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,cAAc,CAWhB"}
1
+ {"version":3,"file":"generateThemeRules.d.ts","sourceRoot":"","sources":["../../src/theme/generateThemeRules.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAC,iBAAiB,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AACnE,OAAO,EAGL,KAAK,2BAA2B,EACjC,MAAM,oBAAoB,CAAC;AAmH5B;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,+EAA+E;IAC/E,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kFAAkF;IAClF,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AA2hBD,sFAAsF;AACtF,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACxC,KAAK,GAAE,aAAa,CAAC,2BAA2B,CAAM,GACrD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAqDpB;AA+OD;;;;;GAKG;AACH;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,0CAA0C;IAC1C,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AA4FD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,eAAe,EACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,MAAM,EAAE,CA6DV;AAoZD;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,eAAe,CAejB;AA8BD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,EACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,MAAM,CA+GR;AAmDD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,YAAY,EACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,cAAc,CAgGhB;AAOD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,YAAY,EACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,cAAc,CAWhB"}
@@ -354,24 +354,25 @@ function joinDeclarations(entries, location, sink, mapProp = p => p) {
354
354
  }
355
355
 
356
356
  /**
357
- * Public status roles whose canonical default references an existing semantic
358
- * source token. StyleX owns the document defaults. A theme that authors a
359
- * source repeats its omitted role at the theme root so nested Theme regions
360
- * bind the alias locally without changing authored-token metadata.
357
+ * Public tokens whose canonical default references another public token: the
358
+ * status roles and `--duration-exit`. StyleX owns the document defaults. A
359
+ * theme that authors a source repeats its omitted token at the theme root so
360
+ * nested Theme regions bind the alias locally without changing authored-token
361
+ * metadata.
361
362
  *
362
363
  * Conditional scopes repeat an omitted alias only when the source changes on
363
364
  * that scope. Explicit adaptation role writes are replayed after generated
364
365
  * aliases (and on media descendants) so authored role precedence survives
365
366
  * overlapping conditions without disabling the alias in non-matching states.
366
367
  */
367
- const SCOPED_STATUS_ROLE_DEFAULTS = [['--color-text-info', '--color-text-blue'], ['--color-text-success', '--color-text-green'], ['--color-text-warning', '--color-text-yellow'], ['--color-text-error', '--color-text-red'], ['--color-on-info-muted', '--color-text-blue'], ['--color-on-success-muted', '--color-text-green'], ['--color-on-warning-muted', '--color-text-yellow'], ['--color-on-error-muted', '--color-text-red'],
368
+ const SCOPED_REFERENCE_DEFAULTS = [['--color-text-info', '--color-text-blue'], ['--color-text-success', '--color-text-green'], ['--color-text-warning', '--color-text-yellow'], ['--color-text-error', '--color-text-red'], ['--color-on-info-muted', '--color-text-blue'], ['--color-on-success-muted', '--color-text-green'], ['--color-on-warning-muted', '--color-text-yellow'], ['--color-on-error-muted', '--color-text-red'],
368
369
  // Icon and border roles follow the text role, set or derived (INV17).
369
- ['--color-icon-info', '--color-text-info'], ['--color-icon-success', '--color-text-success'], ['--color-icon-warning', '--color-text-warning'], ['--color-icon-error', '--color-text-error'], ['--color-border-info', '--color-text-info'], ['--color-border-success', '--color-text-success'], ['--color-border-warning', '--color-text-warning'], ['--color-border-error', '--color-text-error']];
370
- const SCOPED_STATUS_ROLE_SOURCES = new Map(SCOPED_STATUS_ROLE_DEFAULTS);
370
+ ['--color-icon-info', '--color-text-info'], ['--color-icon-success', '--color-text-success'], ['--color-icon-warning', '--color-text-warning'], ['--color-icon-error', '--color-text-error'], ['--color-border-info', '--color-text-info'], ['--color-border-success', '--color-text-success'], ['--color-border-warning', '--color-text-warning'], ['--color-border-error', '--color-text-error'], ['--duration-exit', '--duration-fast']];
371
+ const SCOPED_REFERENCE_SOURCES = new Map(SCOPED_REFERENCE_DEFAULTS);
371
372
 
372
373
  /** Colours INV17's derivation measures; a scope that sets one re-derives. */
373
374
  const STATUS_MEASURED = /^--color-(?:info|success|warning|error|on-|background-surface|background-card)/;
374
- const STATUS_ROLE_ORDER = new Map(SCOPED_STATUS_ROLE_DEFAULTS.map(([role], index) => [role, index]));
375
+ const STATUS_ROLE_ORDER = new Map(SCOPED_REFERENCE_DEFAULTS.map(([role], index) => [role, index]));
375
376
  function stringifyTokenValue(value) {
376
377
  if (typeof value === 'string') {
377
378
  return value;
@@ -508,7 +509,7 @@ export function generatedScopedStatusRoleDefaults(tokens, localTokens = {}, rule
508
509
  indexes,
509
510
  values: effectiveAdaptationTokenValues(tokens, localTokens, entries, rules, indexes)
510
511
  }));
511
- for (const [role, source] of SCOPED_STATUS_ROLE_DEFAULTS) {
512
+ for (const [role, source] of SCOPED_REFERENCE_DEFAULTS) {
512
513
  const alias = `var(${source})`;
513
514
  if (authoredRoot[role] !== undefined || authoredRoot[source] === undefined && !entries.some(([emitted]) => emitted === source)) {
514
515
  continue;
@@ -533,7 +534,7 @@ export function generatedScopedStatusRoleDefaults(tokens, localTokens = {}, rule
533
534
  }
534
535
  function authoredStatusRoleEntries(tokens) {
535
536
  const canonicalTokens = createTokenCascade(tokens).values;
536
- return SCOPED_STATUS_ROLE_DEFAULTS.flatMap(([role]) => {
537
+ return SCOPED_REFERENCE_DEFAULTS.flatMap(([role]) => {
537
538
  const value = canonicalTokens[role];
538
539
  return value === undefined ? [] : [[role, stringifyTokenValue(value)]];
539
540
  });
@@ -542,7 +543,7 @@ function tokenValueIsAliasOf(value, source) {
542
543
  return analyzeDeclarationValue(stringifyTokenValue(value)).singleVarReference === source;
543
544
  }
544
545
  function mediaRoleRestorationValue(role, value) {
545
- const source = SCOPED_STATUS_ROLE_SOURCES.get(role);
546
+ const source = SCOPED_REFERENCE_SOURCES.get(role);
546
547
  return source !== undefined && tokenValueIsAliasOf(value, source) ? value : 'inherit';
547
548
  }
548
549
  function generatedAdaptationStatusRoleDefaults(rootTokens, rootLocalTokens, rules, rootAliases) {
@@ -577,7 +578,7 @@ function generatedAdaptationStatusRoleDefaults(rootTokens, rootLocalTokens, rule
577
578
  ...authoredRule,
578
579
  ...Object.fromEntries(ruleRoles)
579
580
  };
580
- for (const [role, source] of SCOPED_STATUS_ROLE_DEFAULTS) {
581
+ for (const [role, source] of SCOPED_REFERENCE_DEFAULTS) {
581
582
  const alias = `var(${source})`;
582
583
  const rootRole = rootValues[role];
583
584
  if (ruleRoles.has(role) || authoredRule[role] !== undefined || ruleSources[source] === undefined && !aliases[index].some(([emitted]) => emitted === source) || rootRole !== undefined) {
@@ -632,7 +633,7 @@ function generatedMediaStatusRoleDefaults(tokens, rootTokens, rootLocalTokens, r
632
633
  }
633
634
  return stringifyTokenValue(candidate.values[role]);
634
635
  };
635
- for (const [role, source] of SCOPED_STATUS_ROLE_DEFAULTS) {
636
+ for (const [role, source] of SCOPED_REFERENCE_DEFAULTS) {
636
637
  const alias = `var(${source})`;
637
638
  const rootRole = rootValues[role];
638
639
  if (authoredMedia[role] !== undefined || authoredMedia[source] === undefined && !aliases.some(([emitted]) => emitted === source) || rootRole !== undefined && !tokenValueIsAliasOf(rootRole, source) && !rootDerived.has(role)) {
@@ -16,10 +16,11 @@
16
16
  /** How lively a theme's motion feels. */
17
17
  export type MotionCharacter = 'crisp' | 'standard' | 'expressive';
18
18
  /**
19
- * Whose Reduce Motion setting a theme follows: `'system'`, each person's own.
20
- * Internal: no theme sets it until `'always'` ships (`spec:AST-108` FR6).
19
+ * Whose Reduce Motion setting a theme follows: `'system'`, each person's own,
20
+ * or `'always'`, reduced for everyone. Internal: `resolveKnobs` resolves
21
+ * every theme to `'system'` until `'always'` ships (`spec:AST-108` FR6).
21
22
  */
22
- export type ThemeReducedMotion = 'system';
23
+ export type ThemeReducedMotion = 'system' | 'always';
23
24
  /** The motion knobs a theme sets (`spec:AST-108` FR1). */
24
25
  export interface ThemeMotionKnobs {
25
26
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"motionKnobs.d.ts","sourceRoot":"","sources":["../../src/theme/motionKnobs.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AAEH,yCAAyC;AACzC,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC;AAElE;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE1C,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED,mEAAmE;AACnE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED,uCAAuC;AACvC,eAAO,MAAM,WAAW;;;CAAiC,CAAC;AAQ1D,kEAAkE;AAClE,wBAAgB,YAAY,CAC1B,MAAM,EAAE,gBAAgB,GAAG,SAAS,GACnC,mBAAmB,CAcrB"}
1
+ {"version":3,"file":"motionKnobs.d.ts","sourceRoot":"","sources":["../../src/theme/motionKnobs.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AAEH,yCAAyC;AACzC,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC;AAElE;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErD,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED,mEAAmE;AACnE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED,uCAAuC;AACvC,eAAO,MAAM,WAAW;;;CAAiC,CAAC;AAQ1D,kEAAkE;AAClE,wBAAgB,YAAY,CAC1B,MAAM,EAAE,gBAAgB,GAAG,SAAS,GACnC,mBAAmB,CAcrB"}
@@ -19,8 +19,9 @@
19
19
  /** How lively a theme's motion feels. */
20
20
 
21
21
  /**
22
- * Whose Reduce Motion setting a theme follows: `'system'`, each person's own.
23
- * Internal: no theme sets it until `'always'` ships (`spec:AST-108` FR6).
22
+ * Whose Reduce Motion setting a theme follows: `'system'`, each person's own,
23
+ * or `'always'`, reduced for everyone. Internal: `resolveKnobs` resolves
24
+ * every theme to `'system'` until `'always'` ships (`spec:AST-108` FR6).
24
25
  */
25
26
 
26
27
  /** The motion knobs a theme sets (`spec:AST-108` FR1). */
@@ -49,6 +49,12 @@ export declare function resolveMotionKnobs(config: ThemeMotionConfig | undefined
49
49
  * multiplies its clock by it.
50
50
  */
51
51
  export declare const MOTION_TEMPO_PROPERTY = "--_astryx-motion-tempo";
52
+ /**
53
+ * The custom property a theme whose `reducedMotion` resolves to `'always'`
54
+ * sets to `1` on its root, and the root theme on `<html>`: styles that cannot
55
+ * key a selector on the mark read it in a value.
56
+ */
57
+ export declare const REDUCED_MOTION_PROPERTY = "--_astryx-reduced-motion";
52
58
  /** The duration tokens at `tempo`: today's values times it, to the ms. */
53
59
  export declare function durationTokensAt(tempo: number): Record<string, string>;
54
60
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"themeMotion.d.ts","sourceRoot":"","sources":["../../src/theme/themeMotion.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAoB,KAAK,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AAIvB,OAAO,EACL,WAAW,EACX,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,eAAe,CAAC;AAEvB;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAC3B,gBAAgB,GAAG,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;CAIgC,CAAC;AAE5D,kEAAkE;AAClE,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GACpC,mBAAmB,CAErB;AAaD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,2BAA2B,CAAC;AAE9D,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMtE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,iBAAiB,GACxB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmCxB;AAED,qDAAqD;AACrD,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACpD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAA;KAAC,CAAC;IACxD,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC1D,GAAG,WAAW,CAyCd"}
1
+ {"version":3,"file":"themeMotion.d.ts","sourceRoot":"","sources":["../../src/theme/themeMotion.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAoB,KAAK,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AAIvB,OAAO,EACL,WAAW,EACX,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,eAAe,CAAC;AAEvB;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAC3B,gBAAgB,GAAG,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;CAIgC,CAAC;AAE5D,kEAAkE;AAClE,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GACpC,mBAAmB,CAErB;AAaD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,2BAA2B,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,6BAA6B,CAAC;AAUlE,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMtE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,iBAAiB,GACxB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmCxB;AAED,qDAAqD;AACrD,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACpD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAA;KAAC,CAAC;IACxD,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC1D,GAAG,WAAW,CAyCd"}
@@ -68,10 +68,23 @@ function msOf(value) {
68
68
  */
69
69
  export const MOTION_TEMPO_PROPERTY = '--_astryx-motion-tempo';
70
70
 
71
+ /**
72
+ * The custom property a theme whose `reducedMotion` resolves to `'always'`
73
+ * sets to `1` on its root, and the root theme on `<html>`: styles that cannot
74
+ * key a selector on the mark read it in a value.
75
+ */
76
+ export const REDUCED_MOTION_PROPERTY = '--_astryx-reduced-motion';
77
+
78
+ /**
79
+ * A reference such as `--duration-exit` follows the token it names, so tempo
80
+ * writes no value for it.
81
+ */
82
+ const TIMED_DURATION_DEFAULTS = Object.entries(durationDefaults).filter(([, value]) => !value.startsWith('var('));
83
+
71
84
  /** The duration tokens at `tempo`: today's values times it, to the ms. */
72
85
  export function durationTokensAt(tempo) {
73
86
  const tokens = {};
74
- for (const [name, value] of Object.entries(durationDefaults)) {
87
+ for (const [name, value] of TIMED_DURATION_DEFAULTS) {
75
88
  tokens[name] = `${Math.round(msOf(value) * tempo)}ms`;
76
89
  }
77
90
  return tokens;
@@ -102,7 +115,7 @@ export function expandThemeMotion(config) {
102
115
  const tokens = {};
103
116
  if (knobs.tempoIsSet) {
104
117
  Object.assign(tokens, durationTokensAt(knobs.tempo));
105
- for (const [name, value] of Object.entries(durationDefaults)) {
118
+ for (const [name, value] of TIMED_DURATION_DEFAULTS) {
106
119
  tokens[preTempoName(name)] = value;
107
120
  }
108
121
  // The press release fade, a fixed clock in the stylesheet, scales by the