@astryxdesign/core 0.7.7 → 0.7.8-canary.0588a13

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 (798) 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 +1 -1
  9. package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
  10. package/dist/BottomSheet/BottomSheetPanel.js +55 -18
  11. package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
  12. package/dist/BottomSheet/BottomSheetSwitcher.js +5 -0
  13. package/dist/BottomSheet/bottomSheetStack.js +1 -1
  14. package/dist/BottomSheet/useSheetGestures.d.ts +3 -1
  15. package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
  16. package/dist/BottomSheet/useSheetGestures.js +16 -1
  17. package/dist/Button/Button.d.ts.map +1 -1
  18. package/dist/Button/Button.js +17 -1
  19. package/dist/Calendar/Calendar.d.ts.map +1 -1
  20. package/dist/Calendar/Calendar.js +18 -22
  21. package/dist/Calendar/getWeekdayHeaderNames.d.ts +16 -0
  22. package/dist/Calendar/getWeekdayHeaderNames.d.ts.map +1 -0
  23. package/dist/Calendar/getWeekdayHeaderNames.js +70 -0
  24. package/dist/Calendar/hooks/useCalendarDays.d.ts.map +1 -1
  25. package/dist/Calendar/hooks/useCalendarDays.js +2 -10
  26. package/dist/Calendar/{standaloneShortWeekdayNames.generated.d.ts → weekdayHeaderNames.generated.d.ts} +14 -14
  27. package/dist/Calendar/weekdayHeaderNames.generated.d.ts.map +1 -0
  28. package/dist/Calendar/{standaloneShortWeekdayNames.generated.js → weekdayHeaderNames.generated.js} +12 -12
  29. package/dist/Carousel/Carousel.d.ts.map +1 -1
  30. package/dist/Carousel/Carousel.js +2 -0
  31. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  32. package/dist/Chat/ChatComposerInput.js +6 -1
  33. package/dist/Chat/ChatMessageList.d.ts.map +1 -1
  34. package/dist/Chat/ChatMessageList.js +2 -1
  35. package/dist/Chat/useChatDictation.d.ts.map +1 -1
  36. package/dist/Chat/useChatDictation.js +2 -0
  37. package/dist/Chat/useChatNewMessages.js +1 -1
  38. package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
  39. package/dist/Chat/useChatStreamScroll.js +2 -0
  40. package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
  41. package/dist/Chat/useSpeechRecognition.js +3 -0
  42. package/dist/Chat/useTriggerMenu.js +1 -1
  43. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  44. package/dist/CheckboxInput/CheckboxInput.js +17 -12
  45. package/dist/CheckboxList/CheckboxList.d.ts +20 -2
  46. package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
  47. package/dist/CheckboxList/CheckboxList.js +12 -4
  48. package/dist/CheckboxList/CheckboxListContext.d.ts +7 -0
  49. package/dist/CheckboxList/CheckboxListContext.d.ts.map +1 -1
  50. package/dist/CheckboxList/CheckboxListContext.js +2 -1
  51. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  52. package/dist/CheckboxList/CheckboxListItem.js +14 -2
  53. package/dist/CheckboxList/requiredGroup.d.ts +22 -0
  54. package/dist/CheckboxList/requiredGroup.d.ts.map +1 -0
  55. package/dist/CheckboxList/requiredGroup.js +52 -0
  56. package/dist/CodeBlock/CodeBlock.d.ts +10 -1
  57. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  58. package/dist/CodeBlock/CodeBlock.js +28 -11
  59. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  60. package/dist/CommandPalette/CommandPalette.js +2 -0
  61. package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
  62. package/dist/CommandPalette/CommandPaletteItem.js +2 -0
  63. package/dist/ComplexSelector/ComplexSelector.d.ts +4 -1
  64. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  65. package/dist/ComplexSelector/ComplexSelector.js +14 -4
  66. package/dist/ContextMenu/ContextMenu.js +2 -2
  67. package/dist/DateInput/MonthScroller.d.ts.map +1 -1
  68. package/dist/DateInput/MonthScroller.js +5 -2
  69. package/dist/DateInput/PickerWheel.d.ts +19 -0
  70. package/dist/DateInput/PickerWheel.d.ts.map +1 -0
  71. package/dist/DateInput/PickerWheel.js +646 -0
  72. package/dist/DateInput/TouchDateField.d.ts.map +1 -1
  73. package/dist/DateInput/TouchDateField.js +9 -30
  74. package/dist/DateInput/Wheel.d.ts +18 -37
  75. package/dist/DateInput/Wheel.d.ts.map +1 -1
  76. package/dist/DateInput/Wheel.js +133 -120
  77. package/dist/DateInput/datePickerTouch.d.ts +13 -0
  78. package/dist/DateInput/datePickerTouch.d.ts.map +1 -0
  79. package/dist/DateInput/datePickerTouch.js +14 -0
  80. package/dist/DateInput/useOwnScrollGesture.d.ts +10 -0
  81. package/dist/DateInput/useOwnScrollGesture.d.ts.map +1 -1
  82. package/dist/DateInput/useOwnScrollGesture.js +16 -3
  83. package/dist/DateInput/usePointerDragScroll.d.ts.map +1 -1
  84. package/dist/DateInput/usePointerDragScroll.js +2 -0
  85. package/dist/DateInput/useScrollSettle.d.ts.map +1 -1
  86. package/dist/DateInput/useScrollSettle.js +3 -0
  87. package/dist/DateInput/useWheelListbox.d.ts +59 -0
  88. package/dist/DateInput/useWheelListbox.d.ts.map +1 -0
  89. package/dist/DateInput/useWheelListbox.js +88 -0
  90. package/dist/DateInput/wheelOptions.d.ts +94 -0
  91. package/dist/DateInput/wheelOptions.d.ts.map +1 -0
  92. package/dist/DateInput/wheelOptions.js +110 -0
  93. package/dist/DateInput/wheelPhysics.d.ts +127 -0
  94. package/dist/DateInput/wheelPhysics.d.ts.map +1 -0
  95. package/dist/DateInput/wheelPhysics.js +341 -0
  96. package/dist/DateInput/wheelStrip.d.ts +92 -0
  97. package/dist/DateInput/wheelStrip.d.ts.map +1 -0
  98. package/dist/DateInput/wheelStrip.js +258 -0
  99. package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -1
  100. package/dist/DateTimeInput/TouchDateTimeField.js +70 -127
  101. package/dist/Dialog/Dialog.d.ts.map +1 -1
  102. package/dist/Dialog/Dialog.js +9 -32
  103. package/dist/Drawer/useDrawerDialogPresence.d.ts.map +1 -1
  104. package/dist/Drawer/useDrawerDialogPresence.js +3 -0
  105. package/dist/DropdownMenu/useMenuOverflow.d.ts.map +1 -1
  106. package/dist/DropdownMenu/useMenuOverflow.js +5 -0
  107. package/dist/Field/Field.js +2 -2
  108. package/dist/FieldStatus/useFieldStatusAnnouncement.d.ts.map +1 -1
  109. package/dist/FieldStatus/useFieldStatusAnnouncement.js +1 -0
  110. package/dist/FormLayout/FormLayout.d.ts +5 -1
  111. package/dist/FormLayout/FormLayout.d.ts.map +1 -1
  112. package/dist/HoverCard/HoverCard.d.ts +6 -4
  113. package/dist/HoverCard/HoverCard.d.ts.map +1 -1
  114. package/dist/HoverCard/HoverCard.js +48 -3
  115. package/dist/HoverCard/useHoverCard.d.ts +5 -4
  116. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  117. package/dist/HoverCard/useHoverCard.js +26 -34
  118. package/dist/Icon/Icon.d.ts +5 -1
  119. package/dist/Icon/Icon.d.ts.map +1 -1
  120. package/dist/Icon/Icon.js +20 -3
  121. package/dist/InfoTip/InfoTip.d.ts +5 -5
  122. package/dist/InfoTip/InfoTip.d.ts.map +1 -1
  123. package/dist/InfoTip/InfoTip.js +58 -19
  124. package/dist/Item/useSwipeAction.d.ts.map +1 -1
  125. package/dist/Item/useSwipeAction.js +3 -0
  126. package/dist/Layer/modalOutlet.d.ts.map +1 -1
  127. package/dist/Layer/modalOutlet.js +2 -0
  128. package/dist/Layer/outsidePress.d.ts.map +1 -1
  129. package/dist/Layer/outsidePress.js +1 -0
  130. package/dist/Layer/useLayer.d.ts.map +1 -1
  131. package/dist/Layer/useLayer.js +4 -1
  132. package/dist/Layer/useLayerDismissal.d.ts.map +1 -1
  133. package/dist/Layer/useLayerDismissal.js +3 -0
  134. package/dist/Layer/useTouchTrigger.d.ts +13 -7
  135. package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
  136. package/dist/Layer/useTouchTrigger.js +20 -6
  137. package/dist/Layout/index.d.ts +1 -1
  138. package/dist/Layout/index.d.ts.map +1 -1
  139. package/dist/Layout/index.js +1 -1
  140. package/dist/Layout/layoutReset.js +1 -1
  141. package/dist/Layout/overlayPaddingReset.stylex.d.ts +68 -0
  142. package/dist/Layout/overlayPaddingReset.stylex.d.ts.map +1 -0
  143. package/dist/Layout/overlayPaddingReset.stylex.js +72 -0
  144. package/dist/Layout/padding.stylex.d.ts +5 -129
  145. package/dist/Layout/padding.stylex.d.ts.map +1 -1
  146. package/dist/Layout/padding.stylex.js +9 -143
  147. package/dist/Layout/paddingStyles.stylex.d.ts +83 -0
  148. package/dist/Layout/paddingStyles.stylex.d.ts.map +1 -0
  149. package/dist/Layout/paddingStyles.stylex.js +99 -0
  150. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  151. package/dist/Lightbox/Lightbox.js +20 -1
  152. package/dist/MobileNav/MobileNav.d.ts +3 -2
  153. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  154. package/dist/MobileNav/MobileNav.js +10 -26
  155. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  156. package/dist/MultiSelector/MultiSelector.js +2 -1
  157. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  158. package/dist/NumberInput/NumberInput.js +2 -1
  159. package/dist/Outline/useOutlineFromDOM.d.ts.map +1 -1
  160. package/dist/Outline/useOutlineFromDOM.js +3 -0
  161. package/dist/Outline/useScrollSpy.d.ts.map +1 -1
  162. package/dist/Outline/useScrollSpy.js +3 -0
  163. package/dist/OverflowList/OverflowList.d.ts.map +1 -1
  164. package/dist/OverflowList/OverflowList.js +3 -0
  165. package/dist/Overlay/Overlay.d.ts.map +1 -1
  166. package/dist/Overlay/Overlay.js +7 -2
  167. package/dist/Popover/Popover.d.ts.map +1 -1
  168. package/dist/Popover/Popover.js +6 -0
  169. package/dist/Popover/usePopover.js +2 -2
  170. package/dist/PowerSearch/PowerSearch.d.ts +41 -4
  171. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  172. package/dist/PowerSearch/PowerSearch.js +441 -134
  173. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts +125 -0
  174. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts.map +1 -0
  175. package/dist/PowerSearch/PowerSearchBottomSheet.js +2041 -0
  176. package/dist/PowerSearch/PowerSearchEditPopover.d.ts +35 -2
  177. package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
  178. package/dist/PowerSearch/PowerSearchEditPopover.js +43 -10
  179. package/dist/PowerSearch/PowerSearchFilterEditor.d.ts +1 -1
  180. package/dist/PowerSearch/PowerSearchFilterEditor.d.ts.map +1 -1
  181. package/dist/PowerSearch/PowerSearchFilterEditor.js +4 -2
  182. package/dist/PowerSearch/PowerSearchToken.d.ts +1 -1
  183. package/dist/PowerSearch/PowerSearchToken.d.ts.map +1 -1
  184. package/dist/PowerSearch/PowerSearchToken.js +3 -2
  185. package/dist/PowerSearch/PowerSearchValueEditor.d.ts +38 -3
  186. package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
  187. package/dist/PowerSearch/PowerSearchValueEditor.js +273 -86
  188. package/dist/PowerSearch/formatFilterValue.d.ts +14 -7
  189. package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
  190. package/dist/PowerSearch/formatFilterValue.js +31 -23
  191. package/dist/PowerSearch/formatTokenValue.d.ts +28 -0
  192. package/dist/PowerSearch/formatTokenValue.d.ts.map +1 -0
  193. package/dist/PowerSearch/formatTokenValue.js +161 -0
  194. package/dist/PowerSearch/index.d.ts +1 -1
  195. package/dist/PowerSearch/index.d.ts.map +1 -1
  196. package/dist/PowerSearch/powerSearchDateZone.d.ts +25 -0
  197. package/dist/PowerSearch/powerSearchDateZone.d.ts.map +1 -0
  198. package/dist/PowerSearch/powerSearchDateZone.js +57 -0
  199. package/dist/PowerSearch/powerSearchSheetUtils.d.ts +65 -0
  200. package/dist/PowerSearch/powerSearchSheetUtils.d.ts.map +1 -0
  201. package/dist/PowerSearch/powerSearchSheetUtils.js +168 -0
  202. package/dist/PowerSearch/types.d.ts +8 -1
  203. package/dist/PowerSearch/types.d.ts.map +1 -1
  204. package/dist/ProgressBar/ProgressBarTouch.d.ts.map +1 -1
  205. package/dist/ProgressBar/ProgressBarTouch.js +2 -0
  206. package/dist/RadioList/RadioList.d.ts.map +1 -1
  207. package/dist/RadioList/RadioList.js +3 -2
  208. package/dist/RadioList/RadioListItem.d.ts +1 -1
  209. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  210. package/dist/RadioList/RadioListItem.js +5 -3
  211. package/dist/Resizable/ResizeHandle.d.ts +2 -1
  212. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  213. package/dist/Resizable/ResizeHandle.js +116 -92
  214. package/dist/Resizable/createResizable.d.ts +199 -0
  215. package/dist/Resizable/createResizable.d.ts.map +1 -0
  216. package/dist/Resizable/createResizable.js +733 -0
  217. package/dist/Resizable/separatorAttributes.d.ts +45 -0
  218. package/dist/Resizable/separatorAttributes.d.ts.map +1 -0
  219. package/dist/Resizable/separatorAttributes.js +35 -0
  220. package/dist/Resizable/useResizable.d.ts +3 -3
  221. package/dist/Resizable/useResizable.d.ts.map +1 -1
  222. package/dist/Resizable/useResizable.js +252 -459
  223. package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts.map +1 -1
  224. package/dist/SegmentedControl/useSegmentedSelectionMotion.js +3 -3
  225. package/dist/SelectableCard/SelectableCard.d.ts +2 -0
  226. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  227. package/dist/SelectableCard/SelectableCard.js +36 -11
  228. package/dist/SelectableCard/selectableCardInput.d.ts +12 -0
  229. package/dist/SelectableCard/selectableCardInput.d.ts.map +1 -0
  230. package/dist/SelectableCard/selectableCardInput.js +20 -0
  231. package/dist/Selector/Selector.d.ts.map +1 -1
  232. package/dist/Selector/Selector.js +7 -9
  233. package/dist/SideNav/SideNav.d.ts.map +1 -1
  234. package/dist/SideNav/SideNav.js +36 -5
  235. package/dist/Slider/Slider.d.ts.map +1 -1
  236. package/dist/Slider/Slider.js +16 -11
  237. package/dist/Slider/sliderTouchController.js +2 -2
  238. package/dist/Spinner/Spinner.d.ts +1 -1
  239. package/dist/Spinner/Spinner.d.ts.map +1 -1
  240. package/dist/Spinner/Spinner.js +60 -58
  241. package/dist/Stepper/Stepper.d.ts.map +1 -1
  242. package/dist/Stepper/Stepper.js +10 -15
  243. package/dist/Switch/Switch.d.ts.map +1 -1
  244. package/dist/Switch/Switch.js +4 -10
  245. package/dist/Switch/useSwitchTouch.js +4 -4
  246. package/dist/Table/BaseTable.d.ts.map +1 -1
  247. package/dist/Table/BaseTable.js +29 -8
  248. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  249. package/dist/Table/plugins/columnResize/useTableColumnResize.js +3 -1
  250. package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
  251. package/dist/Table/plugins/filtering/useTableFiltering.js +2 -1
  252. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +12 -0
  253. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  254. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +17 -3
  255. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
  256. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +2 -0
  257. package/dist/Table/plugins/tree/useTableTreeData.d.ts +11 -0
  258. package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
  259. package/dist/Table/plugins/tree/useTableTreeData.js +27 -14
  260. package/dist/TextArea/TextArea.d.ts.map +1 -1
  261. package/dist/TextArea/TextArea.js +2 -1
  262. package/dist/TextInput/TextInput.d.ts +2 -2
  263. package/dist/TextInput/TextInput.d.ts.map +1 -1
  264. package/dist/TextInput/TextInput.js +12 -8
  265. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  266. package/dist/TimeInput/TimeInput.js +2 -0
  267. package/dist/TimeInput/TimeWheels.d.ts +32 -0
  268. package/dist/TimeInput/TimeWheels.d.ts.map +1 -0
  269. package/dist/TimeInput/TimeWheels.js +144 -0
  270. package/dist/TimeInput/TouchTimeField.d.ts.map +1 -1
  271. package/dist/TimeInput/TouchTimeField.js +63 -116
  272. package/dist/TimeInput/timeWheelRules.d.ts +124 -0
  273. package/dist/TimeInput/timeWheelRules.d.ts.map +1 -0
  274. package/dist/TimeInput/timeWheelRules.js +277 -0
  275. package/dist/Timer/Timer.d.ts.map +1 -1
  276. package/dist/Timer/Timer.js +2 -0
  277. package/dist/Timestamp/Timestamp.js +1 -1
  278. package/dist/Timestamp/formatInstant.d.ts.map +1 -1
  279. package/dist/Timestamp/formatInstant.js +1 -23
  280. package/dist/Toast/Toast.d.ts +11 -1
  281. package/dist/Toast/Toast.d.ts.map +1 -1
  282. package/dist/Toast/Toast.js +25 -15
  283. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  284. package/dist/Toast/ToastViewport.js +97 -34
  285. package/dist/Toast/types.d.ts +9 -3
  286. package/dist/Toast/types.d.ts.map +1 -1
  287. package/dist/Toast/useToast.d.ts.map +1 -1
  288. package/dist/Toast/useToast.js +1 -0
  289. package/dist/Tokenizer/Tokenizer.d.ts +44 -46
  290. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  291. package/dist/Tokenizer/Tokenizer.js +20 -21
  292. package/dist/Tokenizer/TokenizerBottomSheet.d.ts +1 -1
  293. package/dist/Tokenizer/TokenizerBottomSheet.js +12 -18
  294. package/dist/Tokenizer/index.d.ts +1 -1
  295. package/dist/Tokenizer/index.d.ts.map +1 -1
  296. package/dist/Tooltip/Tooltip.d.ts +2 -23
  297. package/dist/Tooltip/Tooltip.d.ts.map +1 -1
  298. package/dist/Tooltip/Tooltip.js +5 -29
  299. package/dist/Tooltip/useTooltip.d.ts +23 -30
  300. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  301. package/dist/Tooltip/useTooltip.js +200 -108
  302. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  303. package/dist/Typeahead/BaseTypeahead.js +27 -18
  304. package/dist/Typeahead/TypeaheadItem.d.ts +2 -1
  305. package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
  306. package/dist/animator/createAnimator.d.ts +98 -0
  307. package/dist/animator/createAnimator.d.ts.map +1 -0
  308. package/dist/animator/createAnimator.js +259 -0
  309. package/dist/astryx.css +53 -8
  310. package/dist/gestures/GestureHost.d.ts +16 -1
  311. package/dist/gestures/GestureHost.d.ts.map +1 -1
  312. package/dist/gestures/GestureHost.js +4 -1
  313. package/dist/gestures/PressTracker.d.ts.map +1 -1
  314. package/dist/gestures/PressTracker.js +4 -3
  315. package/dist/hooks/ModalAnnounceProvider.d.ts.map +1 -1
  316. package/dist/hooks/ModalAnnounceProvider.js +1 -0
  317. package/dist/hooks/actionGroupTracker.d.ts +4 -1
  318. package/dist/hooks/actionGroupTracker.d.ts.map +1 -1
  319. package/dist/hooks/actionGroupTracker.js +18 -7
  320. package/dist/hooks/index.d.ts +1 -0
  321. package/dist/hooks/index.d.ts.map +1 -1
  322. package/dist/hooks/index.js +1 -0
  323. package/dist/hooks/longPressDetector.d.ts +66 -0
  324. package/dist/hooks/longPressDetector.d.ts.map +1 -0
  325. package/dist/hooks/longPressDetector.js +200 -0
  326. package/dist/hooks/pressGroupContext.d.ts +6 -0
  327. package/dist/hooks/pressGroupContext.d.ts.map +1 -0
  328. package/dist/hooks/pressGroupContext.js +20 -0
  329. package/dist/hooks/rootScrollStyles.d.ts +48 -0
  330. package/dist/hooks/rootScrollStyles.d.ts.map +1 -0
  331. package/dist/hooks/rootScrollStyles.js +207 -0
  332. package/dist/hooks/scrollLockTouchGuard.d.ts +13 -0
  333. package/dist/hooks/scrollLockTouchGuard.d.ts.map +1 -0
  334. package/dist/hooks/scrollLockTouchGuard.js +117 -0
  335. package/dist/hooks/scrollbarGutter.d.ts +4 -4
  336. package/dist/hooks/scrollbarGutter.d.ts.map +1 -1
  337. package/dist/hooks/scrollbarGutter.js +36 -23
  338. package/dist/hooks/useActionGroupTracking.d.ts +53 -0
  339. package/dist/hooks/useActionGroupTracking.d.ts.map +1 -0
  340. package/dist/hooks/useActionGroupTracking.js +174 -0
  341. package/dist/hooks/useAnimator.d.ts +41 -0
  342. package/dist/hooks/useAnimator.d.ts.map +1 -0
  343. package/dist/hooks/useAnimator.js +70 -0
  344. package/dist/hooks/useAnnounceRenderedText.d.ts.map +1 -1
  345. package/dist/hooks/useAnnounceRenderedText.js +1 -0
  346. package/dist/hooks/useAttachment.d.ts +1 -1
  347. package/dist/hooks/useAttachment.js +1 -1
  348. package/dist/hooks/useAutoMediaMode.d.ts.map +1 -1
  349. package/dist/hooks/useAutoMediaMode.js +1 -0
  350. package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
  351. package/dist/hooks/useBusyAnnouncement.js +2 -0
  352. package/dist/hooks/useDevWarning.d.ts.map +1 -1
  353. package/dist/hooks/useDevWarning.js +2 -0
  354. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  355. package/dist/hooks/useFocusTrap.js +2 -0
  356. package/dist/hooks/useGridFocus.d.ts +8 -5
  357. package/dist/hooks/useGridFocus.d.ts.map +1 -1
  358. package/dist/hooks/useGridFocus.js +4 -3
  359. package/dist/hooks/useHotkeys.d.ts.map +1 -1
  360. package/dist/hooks/useHotkeys.js +3 -0
  361. package/dist/hooks/useImageMode.d.ts.map +1 -1
  362. package/dist/hooks/useImageMode.js +3 -0
  363. package/dist/hooks/useInputStatusIcon.d.ts +1 -1
  364. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  365. package/dist/hooks/useInputStatusIcon.js +2 -2
  366. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
  367. package/dist/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -1
  368. package/dist/hooks/useKeyboardHint.js +1 -1
  369. package/dist/hooks/useLongPress.d.ts +8 -9
  370. package/dist/hooks/useLongPress.d.ts.map +1 -1
  371. package/dist/hooks/useLongPress.js +23 -106
  372. package/dist/hooks/useMenuHover.d.ts.map +1 -1
  373. package/dist/hooks/useMenuHover.js +2 -0
  374. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  375. package/dist/hooks/useMenuPress.js +3 -0
  376. package/dist/hooks/useOverflow.d.ts.map +1 -1
  377. package/dist/hooks/useOverflow.js +2 -1
  378. package/dist/hooks/usePressFeedback.d.ts.map +1 -1
  379. package/dist/hooks/usePressFeedback.js +1 -0
  380. package/dist/hooks/useResolvedRequired.d.ts +3 -0
  381. package/dist/hooks/useResolvedRequired.d.ts.map +1 -1
  382. package/dist/hooks/useResolvedRequired.js +3 -0
  383. package/dist/hooks/useScrollLock.d.ts +8 -9
  384. package/dist/hooks/useScrollLock.d.ts.map +1 -1
  385. package/dist/hooks/useScrollLock.js +50 -48
  386. package/dist/hooks/useScrollableArea.d.ts.map +1 -1
  387. package/dist/hooks/useScrollableArea.js +5 -0
  388. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  389. package/dist/hooks/useStreamingText.js +3 -0
  390. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts +8 -0
  391. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts.map +1 -0
  392. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.js +45 -0
  393. package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.d.ts.map +1 -1
  394. package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.js +6 -0
  395. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts +8 -0
  396. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts.map +1 -0
  397. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.js +14 -0
  398. package/dist/i18n/generated-english/Resizable/createResizable.generated.d.ts +8 -0
  399. package/dist/i18n/generated-english/Resizable/createResizable.generated.d.ts.map +1 -0
  400. package/dist/i18n/generated-english/Resizable/createResizable.generated.js +13 -0
  401. package/dist/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.d.ts.map +1 -1
  402. package/dist/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.js +3 -1
  403. package/dist/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.d.ts.map +1 -1
  404. package/dist/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.js +3 -1
  405. package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.d.ts +8 -0
  406. package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.d.ts.map +1 -0
  407. package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.js +17 -0
  408. package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
  409. package/dist/i18n/generated-locales/en.generated.js +37 -0
  410. package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
  411. package/dist/i18n/generated-locales/pseudo.generated.js +37 -0
  412. package/dist/index.d.ts +1 -0
  413. package/dist/index.d.ts.map +1 -1
  414. package/dist/index.js +4 -0
  415. package/dist/internal/indicatorPress.stylex.d.ts +20 -0
  416. package/dist/internal/indicatorPress.stylex.d.ts.map +1 -0
  417. package/dist/internal/indicatorPress.stylex.js +26 -0
  418. package/dist/internal/selectable-card.d.ts +21 -0
  419. package/dist/internal/selectable-card.d.ts.map +1 -0
  420. package/dist/internal/selectable-card.js +20 -0
  421. package/dist/internal/sheetDraft.d.ts +2 -2
  422. package/dist/internal/sheetDraft.js +2 -2
  423. package/dist/keyboard/index.d.ts +17 -0
  424. package/dist/keyboard/index.d.ts.map +1 -0
  425. package/dist/keyboard/index.js +19 -0
  426. package/dist/keyboard/keyboardHeight.d.ts +149 -0
  427. package/dist/keyboard/keyboardHeight.d.ts.map +1 -0
  428. package/dist/keyboard/keyboardHeight.js +432 -0
  429. package/dist/keyboard/keyboardLayoutGuide.d.ts +59 -0
  430. package/dist/keyboard/keyboardLayoutGuide.d.ts.map +1 -0
  431. package/dist/keyboard/keyboardLayoutGuide.js +207 -0
  432. package/dist/keyboard/keyboardModel.d.ts +93 -0
  433. package/dist/keyboard/keyboardModel.d.ts.map +1 -0
  434. package/dist/keyboard/keyboardModel.js +220 -0
  435. package/dist/keyboard/rideKeyboard.d.ts +42 -0
  436. package/dist/keyboard/rideKeyboard.d.ts.map +1 -0
  437. package/dist/keyboard/rideKeyboard.js +77 -0
  438. package/dist/keyboard/useMobileKeyboard.d.ts +61 -0
  439. package/dist/keyboard/useMobileKeyboard.d.ts.map +1 -0
  440. package/dist/keyboard/useMobileKeyboard.js +699 -0
  441. package/dist/motion/android/index.d.ts +16 -0
  442. package/dist/motion/android/index.d.ts.map +1 -0
  443. package/dist/motion/android/index.js +18 -0
  444. package/dist/motion/android/keyboard.d.ts +83 -0
  445. package/dist/motion/android/keyboard.d.ts.map +1 -0
  446. package/dist/motion/android/keyboard.js +96 -0
  447. package/dist/motion/animatedLayout.d.ts +8 -0
  448. package/dist/motion/animatedLayout.d.ts.map +1 -1
  449. package/dist/motion/animatedLayout.js +246 -53
  450. package/dist/motion/animator.d.ts +14 -14
  451. package/dist/motion/animator.d.ts.map +1 -1
  452. package/dist/motion/animator.js +45 -26
  453. package/dist/motion/frameBlock.d.ts +14 -0
  454. package/dist/motion/frameBlock.d.ts.map +1 -0
  455. package/dist/motion/frameBlock.js +16 -0
  456. package/dist/motion/progress.d.ts +88 -0
  457. package/dist/motion/progress.d.ts.map +1 -0
  458. package/dist/motion/progress.js +128 -0
  459. package/dist/motion/reducedMotion.d.ts.map +1 -1
  460. package/dist/motion/reducedMotion.js +3 -1
  461. package/dist/motion/uikit/alert.d.ts +41 -0
  462. package/dist/motion/uikit/alert.d.ts.map +1 -0
  463. package/dist/motion/uikit/alert.js +43 -0
  464. package/dist/motion/uikit/datePicker.d.ts +58 -0
  465. package/dist/motion/uikit/datePicker.d.ts.map +1 -0
  466. package/dist/motion/uikit/datePicker.js +60 -0
  467. package/dist/motion/uikit/index.d.ts +6 -4
  468. package/dist/motion/uikit/index.d.ts.map +1 -1
  469. package/dist/motion/uikit/index.js +6 -4
  470. package/dist/motion/uikit/picker.d.ts +96 -0
  471. package/dist/motion/uikit/picker.d.ts.map +1 -0
  472. package/dist/motion/uikit/picker.js +117 -0
  473. package/dist/privateAttributes/pressGroupItem.stylex.d.ts +22 -0
  474. package/dist/privateAttributes/pressGroupItem.stylex.d.ts.map +1 -0
  475. package/dist/privateAttributes/pressGroupItem.stylex.js +36 -0
  476. package/dist/privateAttributes/reducedMotion.stylex.d.ts +23 -0
  477. package/dist/privateAttributes/reducedMotion.stylex.d.ts.map +1 -0
  478. package/dist/privateAttributes/reducedMotion.stylex.js +40 -0
  479. package/dist/theme/Theme.d.ts.map +1 -1
  480. package/dist/theme/Theme.js +29 -4
  481. package/dist/theme/generateThemeRules.d.ts.map +1 -1
  482. package/dist/theme/generateThemeRules.js +14 -13
  483. package/dist/theme/motionKnobs.d.ts +4 -3
  484. package/dist/theme/motionKnobs.d.ts.map +1 -1
  485. package/dist/theme/motionKnobs.js +3 -2
  486. package/dist/theme/themeMotion.d.ts +6 -0
  487. package/dist/theme/themeMotion.d.ts.map +1 -1
  488. package/dist/theme/themeMotion.js +15 -2
  489. package/dist/theme/tokens.stylex.d.ts +3 -0
  490. package/dist/theme/tokens.stylex.d.ts.map +1 -1
  491. package/dist/theme/tokens.stylex.js +4 -1
  492. package/dist/utils/dateParser.d.ts.map +1 -1
  493. package/dist/utils/dateParser.js +12 -0
  494. package/dist/utils/disabledInteraction.d.ts +10 -2
  495. package/dist/utils/disabledInteraction.d.ts.map +1 -1
  496. package/dist/utils/disabledInteraction.js +16 -2
  497. package/dist/utils/focusReturn.d.ts +22 -25
  498. package/dist/utils/focusReturn.d.ts.map +1 -1
  499. package/dist/utils/focusReturn.js +36 -29
  500. package/dist/utils/index.d.ts +1 -1
  501. package/dist/utils/index.d.ts.map +1 -1
  502. package/dist/utils/index.js +1 -1
  503. package/dist/utils/interactionModality.d.ts.map +1 -1
  504. package/dist/utils/interactionModality.js +4 -0
  505. package/dist/utils/interactionOverlay.stylex.d.ts +6 -4
  506. package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
  507. package/dist/utils/interactionOverlay.stylex.js +6 -4
  508. package/dist/utils/isFocusDetached.d.ts +27 -0
  509. package/dist/utils/isFocusDetached.d.ts.map +1 -0
  510. package/dist/utils/isFocusDetached.js +32 -0
  511. package/dist/utils/layoutViewport.d.ts +25 -0
  512. package/dist/utils/layoutViewport.d.ts.map +1 -0
  513. package/dist/utils/layoutViewport.js +102 -0
  514. package/dist/utils/plainDate.d.ts +31 -0
  515. package/dist/utils/plainDate.d.ts.map +1 -1
  516. package/dist/utils/plainDate.js +68 -4
  517. package/dist/utils/pressFeedback.d.ts +6 -0
  518. package/dist/utils/pressFeedback.d.ts.map +1 -1
  519. package/dist/utils/pressFeedback.js +97 -18
  520. package/dist/utils/pressGesture.d.ts +4 -2
  521. package/dist/utils/pressGesture.d.ts.map +1 -1
  522. package/dist/utils/pressGesture.js +3 -1
  523. package/dist/utils/selectionLock.d.ts +10 -1
  524. package/dist/utils/selectionLock.d.ts.map +1 -1
  525. package/dist/utils/selectionLock.js +31 -5
  526. package/dist/utils/sharedMutationObserver.d.ts +2 -1
  527. package/dist/utils/sharedMutationObserver.d.ts.map +1 -1
  528. package/dist/utils/sharedMutationObserver.js +2 -1
  529. package/dist/utils/timeParser.d.ts +2 -1
  530. package/dist/utils/timeParser.d.ts.map +1 -1
  531. package/dist/utils/timeParser.js +29 -3
  532. package/dist/utils/triggerFocus.d.ts +36 -0
  533. package/dist/utils/triggerFocus.d.ts.map +1 -0
  534. package/dist/utils/triggerFocus.js +65 -0
  535. package/locales/en.json +148 -0
  536. package/locales/pseudo.json +111 -0
  537. package/package.json +14 -9
  538. package/src/AlertDialog/AlertDialog.doc.mjs +2 -2
  539. package/src/AlertDialog/AlertDialog.tsx +46 -5
  540. package/src/AppShell/AppShell.tsx +13 -4
  541. package/src/BottomSheet/BottomSheet.doc.mjs +1 -1
  542. package/src/BottomSheet/BottomSheet.tsx +1 -0
  543. package/src/BottomSheet/BottomSheetPanel.tsx +80 -16
  544. package/src/BottomSheet/BottomSheetSwitcher.doc.mjs +5 -0
  545. package/src/BottomSheet/BottomSheetSwitcher.tsx +5 -0
  546. package/src/BottomSheet/bottomSheetStack.ts +1 -1
  547. package/src/BottomSheet/useSheetGestures.ts +16 -1
  548. package/src/Button/Button.tsx +26 -4
  549. package/src/Calendar/Calendar.tsx +40 -32
  550. package/src/Calendar/getWeekdayHeaderNames.ts +88 -0
  551. package/src/Calendar/hooks/useCalendarDays.ts +5 -10
  552. package/src/Calendar/{standaloneShortWeekdayNames.generated.ts → weekdayHeaderNames.generated.ts} +14 -14
  553. package/src/Carousel/Carousel.tsx +1 -0
  554. package/src/Chat/ChatComposerInput.tsx +4 -7
  555. package/src/Chat/ChatMessageList.tsx +2 -1
  556. package/src/Chat/useChatDictation.ts +1 -0
  557. package/src/Chat/useChatNewMessages.ts +1 -1
  558. package/src/Chat/useChatStreamScroll.ts +2 -0
  559. package/src/Chat/useSpeechRecognition.ts +2 -0
  560. package/src/Chat/useTriggerMenu.tsx +1 -1
  561. package/src/CheckboxInput/CheckboxInput.doc.mjs +18 -0
  562. package/src/CheckboxInput/CheckboxInput.tsx +38 -15
  563. package/src/CheckboxList/CheckboxList.doc.mjs +14 -0
  564. package/src/CheckboxList/CheckboxList.tsx +43 -2
  565. package/src/CheckboxList/CheckboxListContext.tsx +9 -1
  566. package/src/CheckboxList/CheckboxListItem.tsx +23 -2
  567. package/src/CheckboxList/requiredGroup.ts +77 -0
  568. package/src/CodeBlock/CodeBlock.doc.mjs +9 -1
  569. package/src/CodeBlock/CodeBlock.tsx +41 -4
  570. package/src/CommandPalette/CommandPalette.tsx +1 -0
  571. package/src/CommandPalette/CommandPaletteItem.tsx +1 -0
  572. package/src/ComplexSelector/ComplexSelector.tsx +20 -5
  573. package/src/ContextMenu/ContextMenu.tsx +2 -2
  574. package/src/DateInput/MonthScroller.tsx +8 -2
  575. package/src/DateInput/PickerWheel.tsx +796 -0
  576. package/src/DateInput/TouchDateField.tsx +6 -32
  577. package/src/DateInput/Wheel.tsx +188 -171
  578. package/src/DateInput/datePickerTouch.ts +15 -0
  579. package/src/DateInput/useOwnScrollGesture.ts +25 -3
  580. package/src/DateInput/usePointerDragScroll.ts +1 -0
  581. package/src/DateInput/useScrollSettle.ts +2 -0
  582. package/src/DateInput/useWheelListbox.ts +112 -0
  583. package/src/DateInput/wheelOptions.ts +184 -0
  584. package/src/DateInput/wheelPhysics.ts +406 -0
  585. package/src/DateInput/wheelStrip.ts +341 -0
  586. package/src/DateTimeInput/TouchDateTimeField.tsx +100 -189
  587. package/src/Dialog/Dialog.tsx +12 -32
  588. package/src/Drawer/useDrawerDialogPresence.ts +2 -0
  589. package/src/DropdownMenu/useMenuOverflow.ts +3 -0
  590. package/src/Field/Field.tsx +2 -2
  591. package/src/FieldStatus/useFieldStatusAnnouncement.ts +1 -0
  592. package/src/FormLayout/FormLayout.doc.mjs +181 -46
  593. package/src/FormLayout/FormLayout.tsx +5 -1
  594. package/src/HoverCard/HoverCard.doc.mjs +10 -8
  595. package/src/HoverCard/HoverCard.tsx +58 -6
  596. package/src/HoverCard/useHoverCard.doc.mjs +178 -36
  597. package/src/HoverCard/useHoverCard.tsx +55 -55
  598. package/src/Icon/Icon.doc.mjs +51 -10
  599. package/src/Icon/Icon.tsx +31 -8
  600. package/src/IconButton/IconButton.doc.mjs +141 -21
  601. package/src/InfoTip/InfoTip.tsx +72 -16
  602. package/src/Item/useSwipeAction.ts +2 -0
  603. package/src/Layer/modalOutlet.ts +2 -0
  604. package/src/Layer/outsidePress.ts +1 -0
  605. package/src/Layer/useLayer.tsx +3 -1
  606. package/src/Layer/useLayerDismissal.ts +2 -0
  607. package/src/Layer/useTouchTrigger.ts +19 -6
  608. package/src/Layout/index.ts +1 -1
  609. package/src/Layout/layoutReset.ts +1 -1
  610. package/src/Layout/overlayPaddingReset.stylex.ts +73 -0
  611. package/src/Layout/padding.stylex.ts +9 -133
  612. package/src/Layout/paddingStyles.stylex.ts +87 -0
  613. package/src/Lightbox/Lightbox.tsx +20 -1
  614. package/src/Lightbox/useLightbox.doc.mjs +167 -0
  615. package/src/MobileNav/MobileNav.tsx +10 -31
  616. package/src/MultiSelector/MultiSelector.tsx +2 -7
  617. package/src/NumberInput/NumberInput.tsx +2 -7
  618. package/src/Outline/useOutlineFromDOM.ts +2 -0
  619. package/src/Outline/useScrollSpy.ts +2 -0
  620. package/src/OverflowList/OverflowList.tsx +2 -0
  621. package/src/Overlay/Overlay.tsx +7 -2
  622. package/src/Popover/Popover.tsx +4 -0
  623. package/src/Popover/usePopover.tsx +2 -2
  624. package/src/PowerSearch/PowerSearch.doc.mjs +60 -8
  625. package/src/PowerSearch/PowerSearch.tsx +622 -157
  626. package/src/PowerSearch/PowerSearchBottomSheet.tsx +2700 -0
  627. package/src/PowerSearch/PowerSearchEditPopover.tsx +65 -9
  628. package/src/PowerSearch/PowerSearchFilterEditor.tsx +2 -0
  629. package/src/PowerSearch/PowerSearchToken.tsx +2 -0
  630. package/src/PowerSearch/PowerSearchValueEditor.tsx +340 -59
  631. package/src/PowerSearch/formatFilterValue.ts +49 -27
  632. package/src/PowerSearch/formatTokenValue.ts +220 -0
  633. package/src/PowerSearch/index.ts +5 -1
  634. package/src/PowerSearch/powerSearchDateZone.ts +95 -0
  635. package/src/PowerSearch/powerSearchSheetUtils.ts +224 -0
  636. package/src/PowerSearch/types.ts +8 -1
  637. package/src/ProgressBar/ProgressBarTouch.ts +2 -0
  638. package/src/RadioList/RadioList.tsx +3 -2
  639. package/src/RadioList/RadioListItem.tsx +5 -3
  640. package/src/Resizable/Resizable.doc.mjs +5 -4
  641. package/src/Resizable/ResizeHandle.tsx +187 -135
  642. package/src/Resizable/createResizable.ts +1046 -0
  643. package/src/Resizable/separatorAttributes.ts +73 -0
  644. package/src/Resizable/useResizable.ts +292 -623
  645. package/src/SegmentedControl/useSegmentedSelectionMotion.ts +6 -3
  646. package/src/SelectableCard/SelectableCard.tsx +39 -10
  647. package/src/SelectableCard/selectableCardInput.ts +30 -0
  648. package/src/Selector/Selector.tsx +7 -19
  649. package/src/SideNav/SideNav.tsx +41 -5
  650. package/src/Slider/Slider.tsx +20 -11
  651. package/src/Slider/sliderTouchController.ts +2 -2
  652. package/src/Spinner/Spinner.tsx +77 -63
  653. package/src/Stepper/Stepper.tsx +10 -27
  654. package/src/Switch/Switch.tsx +2 -6
  655. package/src/Switch/useSwitchTouch.ts +4 -4
  656. package/src/Table/BaseTable.tsx +46 -12
  657. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +2 -1
  658. package/src/Table/plugins/filtering/useTableFiltering.tsx +1 -0
  659. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +31 -7
  660. package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +2 -0
  661. package/src/Table/plugins/tree/useTableTreeData.tsx +43 -20
  662. package/src/Table/useTableRowExpansion.doc.mjs +9 -0
  663. package/src/Table/useTableTreeData.doc.mjs +15 -3
  664. package/src/TextArea/TextArea.tsx +2 -7
  665. package/src/TextInput/TextInput.tsx +13 -17
  666. package/src/TimeInput/TimeInput.tsx +2 -0
  667. package/src/TimeInput/TimeWheels.tsx +218 -0
  668. package/src/TimeInput/TouchTimeField.tsx +93 -155
  669. package/src/TimeInput/timeWheelRules.ts +352 -0
  670. package/src/Timer/Timer.tsx +1 -0
  671. package/src/Timestamp/Timestamp.tsx +1 -1
  672. package/src/Timestamp/formatInstant.ts +1 -33
  673. package/src/Toast/Toast.doc.mjs +4 -3
  674. package/src/Toast/Toast.tsx +52 -32
  675. package/src/Toast/ToastViewport.tsx +123 -35
  676. package/src/Toast/types.ts +9 -3
  677. package/src/Toast/useToast.tsx +1 -0
  678. package/src/Tokenizer/Tokenizer.doc.mjs +10 -10
  679. package/src/Tokenizer/Tokenizer.tsx +61 -62
  680. package/src/Tokenizer/TokenizerBottomSheet.tsx +17 -23
  681. package/src/Tokenizer/index.ts +1 -0
  682. package/src/Tooltip/Tooltip.tsx +6 -42
  683. package/src/Tooltip/useTooltip.doc.mjs +24 -0
  684. package/src/Tooltip/useTooltip.tsx +243 -134
  685. package/src/Typeahead/BaseTypeahead.tsx +27 -17
  686. package/src/Typeahead/TypeaheadItem.doc.mjs +6 -3
  687. package/src/Typeahead/TypeaheadItem.tsx +2 -1
  688. package/src/animator/createAnimator.doc.mjs +153 -0
  689. package/src/animator/createAnimator.ts +324 -0
  690. package/src/gestures/GestureHost.ts +6 -5
  691. package/src/gestures/PressTracker.ts +4 -3
  692. package/src/gestures/README.md +10 -4
  693. package/src/hooks/ModalAnnounceProvider.tsx +1 -0
  694. package/src/hooks/actionGroupTracker.ts +25 -9
  695. package/src/hooks/index.ts +2 -0
  696. package/src/hooks/longPressDetector.ts +273 -0
  697. package/src/hooks/pressGroupContext.ts +21 -0
  698. package/src/hooks/rootScrollStyles.ts +247 -0
  699. package/src/hooks/scrollLockTouchGuard.ts +149 -0
  700. package/src/hooks/scrollbarGutter.ts +41 -26
  701. package/src/hooks/useActionGroupTracking.ts +224 -0
  702. package/src/hooks/useAnimator.doc.mjs +109 -0
  703. package/src/hooks/useAnimator.ts +67 -0
  704. package/src/hooks/useAnnounceRenderedText.ts +1 -0
  705. package/src/hooks/useAttachment.ts +1 -1
  706. package/src/hooks/useAutoMediaMode.ts +1 -0
  707. package/src/hooks/useBusyAnnouncement.ts +2 -0
  708. package/src/hooks/useDevWarning.ts +2 -0
  709. package/src/hooks/useFocusTrap.ts +2 -0
  710. package/src/hooks/useGridFocus.doc.mjs +6 -6
  711. package/src/hooks/useGridFocus.ts +10 -7
  712. package/src/hooks/useHotkeys.ts +2 -0
  713. package/src/hooks/useImageMode.ts +2 -0
  714. package/src/hooks/useInputStatusIcon.tsx +3 -2
  715. package/src/hooks/useKeyboardHint.tsx +1 -1
  716. package/src/hooks/useLongPress.doc.mjs +2 -2
  717. package/src/hooks/useLongPress.ts +32 -122
  718. package/src/hooks/useMenuHover.ts +1 -0
  719. package/src/hooks/useMenuPress.ts +2 -0
  720. package/src/hooks/useOverflow.ts +2 -1
  721. package/src/hooks/usePressFeedback.ts +1 -0
  722. package/src/hooks/useResolvedRequired.ts +3 -0
  723. package/src/hooks/useScrollLock.doc.mjs +51 -12
  724. package/src/hooks/useScrollLock.ts +53 -60
  725. package/src/hooks/useScrollableArea.ts +4 -0
  726. package/src/hooks/useStreamingText.ts +2 -0
  727. package/src/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.ts +46 -0
  728. package/src/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.ts +6 -0
  729. package/src/i18n/generated-english/PowerSearch/formatTokenValue.generated.ts +15 -0
  730. package/src/i18n/generated-english/Resizable/createResizable.generated.ts +14 -0
  731. package/src/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.ts +3 -1
  732. package/src/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.ts +3 -1
  733. package/src/i18n/generated-english/TimeInput/TimeWheels.generated.ts +18 -0
  734. package/src/i18n/generated-locales/en.generated.ts +47 -0
  735. package/src/i18n/generated-locales/pseudo.generated.ts +48 -0
  736. package/src/index.ts +13 -0
  737. package/src/internal/indicatorPress.stylex.ts +24 -0
  738. package/src/internal/selectable-card.ts +21 -0
  739. package/src/internal/sheetDraft.ts +2 -2
  740. package/src/keyboard/README.md +197 -0
  741. package/src/keyboard/index.ts +48 -0
  742. package/src/keyboard/keyboardHeight.ts +543 -0
  743. package/src/keyboard/keyboardLayoutGuide.ts +266 -0
  744. package/src/keyboard/keyboardModel.ts +301 -0
  745. package/src/keyboard/rideKeyboard.ts +100 -0
  746. package/src/keyboard/useMobileKeyboard.ts +866 -0
  747. package/src/motion/MEASUREMENTS.md +28 -0
  748. package/src/motion/README.md +12 -5
  749. package/src/motion/android/index.ts +18 -0
  750. package/src/motion/android/keyboard.ts +96 -0
  751. package/src/motion/animatedLayout.ts +323 -60
  752. package/src/motion/animator.ts +66 -37
  753. package/src/motion/frameBlock.ts +16 -0
  754. package/src/motion/progress.ts +155 -0
  755. package/src/motion/reducedMotion.ts +3 -1
  756. package/src/motion/uikit/alert.ts +43 -0
  757. package/src/motion/uikit/datePicker.ts +60 -0
  758. package/src/motion/uikit/index.ts +6 -4
  759. package/src/motion/uikit/picker.ts +116 -0
  760. package/src/privateAttributes/pressGroupItem.stylex.ts +44 -0
  761. package/src/privateAttributes/reducedMotion.stylex.ts +45 -0
  762. package/src/theme/Theme.tsx +37 -3
  763. package/src/theme/generateThemeRules.ts +14 -12
  764. package/src/theme/motionKnobs.ts +4 -3
  765. package/src/theme/themeMotion.ts +17 -2
  766. package/src/theme/tokens.stylex.ts +2 -0
  767. package/src/utils/dateParser.ts +16 -0
  768. package/src/utils/disabledInteraction.ts +23 -2
  769. package/src/utils/focusReturn.ts +38 -31
  770. package/src/utils/index.ts +1 -1
  771. package/src/utils/interactionModality.ts +4 -0
  772. package/src/utils/interactionOverlay.stylex.ts +6 -4
  773. package/src/utils/isFocusDetached.ts +34 -0
  774. package/src/utils/layoutViewport.ts +104 -0
  775. package/src/utils/plainDate.ts +80 -4
  776. package/src/utils/pressFeedback.ts +126 -30
  777. package/src/utils/pressGesture.ts +4 -2
  778. package/src/utils/selectionLock.ts +40 -6
  779. package/src/utils/sharedMutationObserver.ts +2 -1
  780. package/src/utils/timeParser.ts +40 -3
  781. package/src/utils/triggerFocus.ts +80 -0
  782. package/dist/BottomSheet/useMobileKeyboard.d.ts +0 -21
  783. package/dist/BottomSheet/useMobileKeyboard.d.ts.map +0 -1
  784. package/dist/BottomSheet/useMobileKeyboard.js +0 -407
  785. package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts +0 -14
  786. package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts.map +0 -1
  787. package/dist/Calendar/getStandaloneShortWeekdayNames.js +0 -26
  788. package/dist/Calendar/standaloneShortWeekdayNames.generated.d.ts.map +0 -1
  789. package/dist/Layer/usePressPin.d.ts +0 -93
  790. package/dist/Layer/usePressPin.d.ts.map +0 -1
  791. package/dist/Layer/usePressPin.js +0 -363
  792. package/dist/internal/touch-sheet.d.ts +0 -21
  793. package/dist/internal/touch-sheet.d.ts.map +0 -1
  794. package/dist/internal/touch-sheet.js +0 -19
  795. package/src/BottomSheet/useMobileKeyboard.ts +0 -538
  796. package/src/Calendar/getStandaloneShortWeekdayNames.ts +0 -38
  797. package/src/Layer/usePressPin.ts +0 -510
  798. package/src/internal/touch-sheet.ts +0 -21
@@ -23,14 +23,7 @@
23
23
  * - /packages/cli/assets/templates/blocks/components/Stepper/ (showcase blocks)
24
24
  */
25
25
 
26
- import {
27
- useCallback,
28
- useEffect,
29
- useMemo,
30
- useRef,
31
- useState,
32
- type ReactNode,
33
- } from 'react';
26
+ import {useCallback, useMemo, useRef, useState, type ReactNode} from 'react';
34
27
  import * as stylex from '@stylexjs/stylex';
35
28
 
36
29
  import {spacingVars} from '../theme/tokens.stylex';
@@ -360,32 +353,22 @@ export function Stepper({
360
353
  // still owns the ref and DOM pass-throughs and fills that frame, so its width
361
354
  // is the effective component width to observe.
362
355
  const [rootWidth, setRootWidth] = useState(0);
363
- const stopObservingRootRef = useRef<(() => void) | null>(null);
364
356
  const attachRoot = useCallback(
365
357
  (el: HTMLOListElement | null) => {
366
- stopObservingRootRef.current?.();
367
- stopObservingRootRef.current = null;
368
- if (el && isHorizontal) {
369
- // observeResize calls back once, synchronously, as it subscribes. That
370
- // is what keeps the collapse off the screen: a ref callback runs during
371
- // commit, so the width lands and the re-render happens before the
372
- // browser has painted the uncollapsed stepper it would otherwise show
373
- // first.
374
- stopObservingRootRef.current = observeResize(el, entry =>
375
- setRootWidth(entry.target.clientWidth),
376
- );
358
+ if (el == null || !isHorizontal) {
359
+ return;
377
360
  }
361
+ // observeResize calls back once, synchronously, as it subscribes. That
362
+ // is what keeps the collapse off the screen: a ref callback runs during
363
+ // commit, so the width lands and the re-render happens before the
364
+ // browser has painted the uncollapsed stepper it would otherwise show
365
+ // first. React calls the returned unsubscribe when the list detaches or
366
+ // when the orientation changes.
367
+ return observeResize(el, entry => setRootWidth(entry.target.clientWidth));
378
368
  },
379
369
  [isHorizontal],
380
370
  );
381
371
  const rootRef = useMergedRefs(ref, attachRoot);
382
- useEffect(
383
- () => () => {
384
- stopObservingRootRef.current?.();
385
- stopObservingRootRef.current = null;
386
- },
387
- [],
388
- );
389
372
 
390
373
  // Width is measured rather than asked of a container query because the
391
374
  // answer changes what is *rendered*, not just how it looks: the labels and
@@ -52,7 +52,6 @@ import type {BaseProps} from '../BaseProps';
52
52
  import type {SizeValue} from '../utils/types';
53
53
  import {themeProps} from '../utils/themeProps';
54
54
  import {useAnnounce} from '../hooks/useAnnounce';
55
- import {useResolvedRequired} from '../hooks/useResolvedRequired';
56
55
 
57
56
  import {useMergedRefs} from '../hooks/useMergedRefs';
58
57
  import {usePressFeedback} from '../hooks/usePressFeedback';
@@ -867,10 +866,6 @@ export function Switch({
867
866
  const pressable = usePressFeedback();
868
867
  const descriptionID = useId();
869
868
  const statusMessageID = useId();
870
- // Announce the effective required state (form default included) while the
871
- // native `required` stays bound to the explicit `isRequired` so a layout
872
- // default never switches on browser validation.
873
- const isEffectivelyRequired = useResolvedRequired({isRequired, isOptional});
874
869
 
875
870
  const [, startTransition] = useTransition();
876
871
  const [optimisticValue, setOptimisticValue] = useOptimistic(value);
@@ -1003,7 +998,8 @@ export function Switch({
1003
998
  aria-disabled={isDisabled ? 'true' : undefined}
1004
999
  form={isDisabled ? '' : undefined}
1005
1000
  required={isRequired}
1006
- aria-required={isEffectivelyRequired ? 'true' : undefined}
1001
+ // A form's required default sets nothing here: an off switch is an answer.
1002
+ aria-required={isRequired ? 'true' : undefined}
1007
1003
  onChange={e => {
1008
1004
  if (isDisabled || isBusy) {
1009
1005
  return;
@@ -23,7 +23,7 @@ import type {GestureTouch} from '../gestures/types';
23
23
  import {isRtlElement} from '../hooks/isRtlElement';
24
24
  import {useIsomorphicLayoutEffect} from '../hooks/useIsomorphicLayoutEffect';
25
25
  import {
26
- createAnimator,
26
+ createMotionAnimator,
27
27
  type Animator,
28
28
  type MotionCurve,
29
29
  } from '../motion/animator';
@@ -282,15 +282,15 @@ export class SwitchTouchController {
282
282
  return;
283
283
  }
284
284
  registerSwitchTable();
285
- this.thumb = createAnimator(elements.thumb);
285
+ this.thumb = createMotionAnimator(elements.thumb);
286
286
  // The layer rests clear (its class's opacity 0) while the visuals show
287
287
  // the value; from here its opacity is the animator's.
288
- this.fade = createAnimator(elements.track, {
288
+ this.fade = createMotionAnimator(elements.track, {
289
289
  pseudoElement: '::after',
290
290
  initial: {opacity: 0},
291
291
  });
292
292
  this.fade.set({opacity: 0});
293
- this.shadow = createAnimator(elements.thumb, {
293
+ this.shadow = createMotionAnimator(elements.thumb, {
294
294
  pseudoElement: '::after',
295
295
  initial: {opacity: 0},
296
296
  });
@@ -14,7 +14,14 @@
14
14
  * - /packages/cli/assets/templates/blocks/components/Table/ (showcase blocks)
15
15
  */
16
16
 
17
- import {memo, useRef, type ReactElement, type ReactNode, type Ref} from 'react';
17
+ import {
18
+ memo,
19
+ useId,
20
+ useRef,
21
+ type ReactElement,
22
+ type ReactNode,
23
+ type Ref,
24
+ } from 'react';
18
25
  import {isRenderable} from '../utils/isRenderable';
19
26
  import * as stylex from '@stylexjs/stylex';
20
27
  import {spacingVars} from '../theme/tokens.stylex';
@@ -423,6 +430,7 @@ function BaseTableInner<T extends Record<string, unknown>>({
423
430
  } satisfies TableRenderProps);
424
431
 
425
432
  // --- Plugin pipeline: header cells ---
433
+ const headerLabelIdBase = useId();
426
434
  const headerCells = resolvedColumns.map((col, columnIndex) => {
427
435
  const headerContent = col.header ?? col.key;
428
436
 
@@ -477,28 +485,54 @@ function BaseTableInner<T extends Record<string, unknown>>({
477
485
  const hasSlots =
478
486
  before != null || after != null || overlay != null || below != null;
479
487
 
480
- const headerInner = hasSlots ? (
488
+ const labelRow = isRenderable(after) ? (
489
+ <div {...stylex.props(styles.headerLabelRow)}>
490
+ {resolvedContent}
491
+ {after}
492
+ </div>
493
+ ) : (
494
+ resolvedContent
495
+ );
496
+
497
+ // The overlay is a control of its own. Keep its name and value out of the
498
+ // header's name.
499
+ const namesOwnHeader =
500
+ isRenderable(overlay) &&
501
+ mergedHtmlProps['aria-label'] == null &&
502
+ mergedHtmlProps['aria-labelledby'] == null;
503
+ const labelId = `${headerLabelIdBase}-label-${columnIndex}`;
504
+ const belowId = `${headerLabelIdBase}-below-${columnIndex}`;
505
+ const hasBelow = isRenderable(below);
506
+
507
+ const headerInner = !hasSlots ? (
508
+ resolvedContent
509
+ ) : namesOwnHeader ? (
510
+ <>
511
+ {/* Inline, so the cell's text-overflow still reaches the label. */}
512
+ <span id={labelId}>
513
+ {before}
514
+ {labelRow}
515
+ </span>
516
+ {overlay}
517
+ {hasBelow && <div id={belowId}>{below}</div>}
518
+ </>
519
+ ) : (
481
520
  <>
482
521
  {before}
483
- {isRenderable(after) ? (
484
- <div {...stylex.props(styles.headerLabelRow)}>
485
- {resolvedContent}
486
- {after}
487
- </div>
488
- ) : (
489
- resolvedContent
490
- )}
522
+ {labelRow}
491
523
  {overlay}
492
524
  {below}
493
525
  </>
494
- ) : (
495
- resolvedContent
496
526
  );
527
+ const headerNameProps = namesOwnHeader
528
+ ? {'aria-labelledby': hasBelow ? `${labelId} ${belowId}` : labelId}
529
+ : {};
497
530
 
498
531
  return (
499
532
  <HeaderCellComponent
500
533
  key={col.key}
501
534
  {...mergedHtmlProps}
535
+ {...headerNameProps}
502
536
  {...headerTitleProp}
503
537
  contextMenuActions={cellRenderProps.contextMenuActions}
504
538
  xstyle={cellRenderProps.xstyle}>
@@ -865,7 +865,7 @@ export function useTableColumnResize<T extends Record<string, unknown>>(
865
865
  }
866
866
  }, []);
867
867
 
868
- // Clean up observer on unmount
868
+ // Releases the table resize observer on unmount.
869
869
  useEffect(() => {
870
870
  return () => {
871
871
  unobserveTableRef.current?.();
@@ -934,6 +934,7 @@ export function useTableColumnResize<T extends Record<string, unknown>>(
934
934
  };
935
935
  }, []);
936
936
 
937
+ // Releases the resize gate on unmount.
937
938
  useEffect(() => {
938
939
  return () => {
939
940
  gateCleanupRef.current?.();
@@ -820,6 +820,7 @@ function StringListFilterControl({
820
820
  }}
821
821
  size={size}
822
822
  hasClear={hasClear}
823
+ presentation="popover"
823
824
  />
824
825
  );
825
826
  }
@@ -102,6 +102,17 @@ export interface UseTableRowExpansionConfig<T extends Record<string, unknown>> {
102
102
  * it is expanded. Receives the row's item.
103
103
  */
104
104
  renderExpanded: (item: T) => ReactNode;
105
+ /**
106
+ * Derive a human-readable row identity for the expansion control's accessible
107
+ * name. The plugin combines it with localized expand/collapse wording. Blank
108
+ * labels fall back to the generic row label.
109
+ *
110
+ * @example
111
+ * ```
112
+ * getRowLabel: item => item.name
113
+ * ```
114
+ */
115
+ getRowLabel?: (item: T) => string;
105
116
  /**
106
117
  * Control which rows are expandable. Non-expandable rows show no chevron, no
107
118
  * context-menu action, and never render a panel. @default all rows expandable
@@ -345,13 +356,22 @@ const chevronOffsetStyles = stylex.create({
345
356
  // =============================================================================
346
357
 
347
358
  function ExpansionChevron({
359
+ rowLabel,
348
360
  isExpanded,
349
361
  onToggle,
350
362
  }: {
363
+ rowLabel?: string;
351
364
  isExpanded: boolean;
352
365
  onToggle: () => void;
353
366
  }) {
354
367
  const t = useComponentTranslator();
368
+ const ariaLabel = rowLabel
369
+ ? isExpanded
370
+ ? t('@astryx.tableRowExpansion.collapseRowNamed', {label: rowLabel})
371
+ : t('@astryx.tableRowExpansion.expandRowNamed', {label: rowLabel})
372
+ : isExpanded
373
+ ? t('@astryx.tableRowExpansion.collapseRow')
374
+ : t('@astryx.tableRowExpansion.expandRow');
355
375
  const ctx = useTableContext();
356
376
  return (
357
377
  <button
@@ -365,11 +385,7 @@ function ExpansionChevron({
365
385
  e.stopPropagation();
366
386
  onToggle();
367
387
  }}
368
- aria-label={
369
- isExpanded
370
- ? t('@astryx.tableRowExpansion.collapseRow')
371
- : t('@astryx.tableRowExpansion.expandRow')
372
- }
388
+ aria-label={ariaLabel}
373
389
  aria-expanded={isExpanded}>
374
390
  <Icon
375
391
  icon="chevronRight"
@@ -439,6 +455,8 @@ function PanelDividerModeWatch({
439
455
  const {mode} = useTheme();
440
456
  const themeName = useThemeName();
441
457
  const lastRef = useRef({mode, themeName});
458
+ // Syncs the panel dividers with the computed theme CSS after a color mode or
459
+ // theme change.
442
460
  useLayoutEffect(() => {
443
461
  const last = lastRef.current;
444
462
  if (last.mode === mode && last.themeName === themeName) {
@@ -582,6 +600,7 @@ function ExpansionSnapshot({
582
600
  * return next;
583
601
  * }),
584
602
  * getRowKey: item => item.id,
603
+ * getRowLabel: item => item.name,
585
604
  * renderExpanded: item => <OrderDetails order={item} />,
586
605
  * });
587
606
  * <Table data={data} columns={columns} idKey="id" plugins={{expansion}} />;
@@ -595,6 +614,7 @@ export function useTableRowExpansion<T extends Record<string, unknown>>(
595
614
  onToggle,
596
615
  getRowKey,
597
616
  renderExpanded,
617
+ getRowLabel,
598
618
  getIsItemExpandable,
599
619
  hasRowClickExpansion,
600
620
  panelVariant = 'transparent',
@@ -703,6 +723,8 @@ export function useTableRowExpansion<T extends Record<string, unknown>>(
703
723
  }
704
724
  }
705
725
  }, []);
726
+ // Syncs the chevron transitions with the `animatedLayout` handle. Without a
727
+ // handle, the chevrons use the theme's turn.
706
728
  useLayoutEffect(() => {
707
729
  if (animatedLayout == null) {
708
730
  resetChevrons();
@@ -837,15 +859,17 @@ export function useTableRowExpansion<T extends Record<string, unknown>>(
837
859
  return null;
838
860
  }
839
861
  const key = getRowKey(item);
862
+ const isExpanded = expandedKeys.has(key);
840
863
  return (
841
864
  <ExpansionChevron
842
- isExpanded={expandedKeys.has(key)}
865
+ rowLabel={getRowLabel?.(item)?.trim() || undefined}
866
+ isExpanded={isExpanded}
843
867
  onToggle={() => onToggle(key)}
844
868
  />
845
869
  );
846
870
  },
847
871
  }),
848
- [expandedKeys, onToggle, getRowKey, getIsItemExpandable, t],
872
+ [expandedKeys, onToggle, getRowKey, getIsItemExpandable, getRowLabel, t],
849
873
  );
850
874
 
851
875
  return useMemo(
@@ -432,6 +432,8 @@ function PinnedDividerModeWatch({
432
432
  const {mode} = useTheme();
433
433
  const themeName = useThemeName();
434
434
  const lastRef = useRef({mode, themeName});
435
+ // Syncs the pinned divider with the computed theme CSS after a color mode or
436
+ // theme change.
435
437
  useLayoutEffect(() => {
436
438
  const last = lastRef.current;
437
439
  if (last.mode !== mode || last.themeName !== themeName) {
@@ -87,6 +87,17 @@ export interface UseTableTreeDataConfig<T extends Record<string, unknown>> {
87
87
  getRowMeta: (item: T) => TableTreeRowMeta | undefined;
88
88
  /** Toggle a row's expansion. */
89
89
  onToggleItem: (item: T) => void;
90
+ /**
91
+ * Derive a human-readable row identity for the expander's accessible name.
92
+ * The plugin combines it with localized expand/collapse wording. Blank labels
93
+ * fall back to the generic row label.
94
+ *
95
+ * @example
96
+ * ```
97
+ * getRowLabel: item => item.name
98
+ * ```
99
+ */
100
+ getRowLabel?: (item: T) => string;
90
101
  /**
91
102
  * Whether any row in the dataset is expandable. When false the plugin is
92
103
  * a no-op: no expanders, no indent, no tree ARIA — flat data renders
@@ -164,38 +175,42 @@ function createTreeStore<T extends Record<string, unknown>>(
164
175
  const TreeStoreContext = createContext<TreeStore<any> | null>(null);
165
176
  TreeStoreContext.displayName = 'TreeStoreContext';
166
177
 
167
- /** Indent token -> index, for the numeric row snapshot. */
178
+ /** Indent token -> index, for the primitive row snapshot. */
168
179
  const INDENT_INDEX = {sm: 0, md: 1, lg: 2} as const;
169
180
 
170
181
  /**
171
- * Encode a row's tree meta as a primitive for useSyncExternalStore —
172
- * object snapshots would tear. The indent token participates so a
173
- * runtime `indent` change re-renders the affected cells.
182
+ * Encode a row's tree meta and optional accessible label as a primitive for
183
+ * useSyncExternalStore — object snapshots would tear. The numeric fast path is
184
+ * retained when getRowLabel is absent. When it is present, the derived label
185
+ * participates so config-only label changes re-render the affected cells.
174
186
  * Encoding: level * 16 + indentIndex * 4 + hasChildren * 2 + isExpanded;
175
187
  * -1 = no meta.
176
188
  */
177
- function encodeRowMeta<T extends Record<string, unknown>>(
189
+ function getRowSnapshot<T extends Record<string, unknown>>(
178
190
  config: UseTableTreeDataConfig<T>,
179
191
  item: T,
180
- ): number {
192
+ ): number | string {
181
193
  const meta = config.getRowMeta(item);
182
194
  if (!meta) {
183
195
  return -1;
184
196
  }
185
- return (
197
+ const metaSnapshot =
186
198
  meta.level * 16 +
187
199
  INDENT_INDEX[config.indent ?? 'md'] * 4 +
188
200
  (meta.hasChildren ? 2 : 0) +
189
- (meta.isExpanded ? 1 : 0)
190
- );
201
+ (meta.isExpanded ? 1 : 0);
202
+ if (!config.getRowLabel) {
203
+ return metaSnapshot;
204
+ }
205
+ return `${metaSnapshot}\u0000${config.getRowLabel(item)?.trim() ?? ''}`;
191
206
  }
192
207
 
193
- function useRowMetaSnapshot<T extends Record<string, unknown>>(
208
+ function useRowSnapshot<T extends Record<string, unknown>>(
194
209
  store: TreeStore<T>,
195
210
  item: T,
196
- ): number {
211
+ ): number | string {
197
212
  const getSnapshot = useCallback(
198
- () => encodeRowMeta(store.getConfig(), item),
213
+ () => getRowSnapshot(store.getConfig(), item),
199
214
  [store, item],
200
215
  );
201
216
 
@@ -324,11 +339,22 @@ const treeStyles = stylex.create({
324
339
  function TreeExpander({
325
340
  isExpanded,
326
341
  onToggle,
342
+ rowLabel,
327
343
  }: {
328
344
  isExpanded: boolean;
329
345
  onToggle: () => void;
346
+ rowLabel?: string;
330
347
  }) {
331
348
  const t = useComponentTranslator();
349
+ const normalizedRowLabel = rowLabel?.trim();
350
+ const ariaLabel = normalizedRowLabel
351
+ ? isExpanded
352
+ ? t('@astryx.tableTree.collapseRowNamed', {label: normalizedRowLabel})
353
+ : t('@astryx.tableTree.expandRowNamed', {label: normalizedRowLabel})
354
+ : isExpanded
355
+ ? t('@astryx.tableTree.collapseRow')
356
+ : t('@astryx.tableTree.expandRow');
357
+
332
358
  return (
333
359
  <button
334
360
  type="button"
@@ -337,11 +363,7 @@ function TreeExpander({
337
363
  e.stopPropagation();
338
364
  onToggle();
339
365
  }}
340
- aria-label={
341
- isExpanded
342
- ? t('@astryx.tableTree.collapseRow')
343
- : t('@astryx.tableTree.expandRow')
344
- }
366
+ aria-label={ariaLabel}
345
367
  aria-expanded={isExpanded}>
346
368
  <Icon
347
369
  icon="chevronRight"
@@ -440,9 +462,9 @@ function TreeCellContentInner<T extends Record<string, unknown>>({
440
462
  item: T;
441
463
  children: ReactNode;
442
464
  }) {
443
- // Subscribe to this row's structural meta so a toggle re-renders only
444
- // the affected cells.
445
- useRowMetaSnapshot(store, item);
465
+ // Subscribe to this row's structural meta and derived label so only affected
466
+ // cells re-render when either changes.
467
+ useRowSnapshot(store, item);
446
468
 
447
469
  const config = store.getConfig();
448
470
  const meta = config.getRowMeta(item);
@@ -463,6 +485,7 @@ function TreeCellContentInner<T extends Record<string, unknown>>({
463
485
  <TreeExpander
464
486
  isExpanded={meta.isExpanded}
465
487
  onToggle={() => store.getConfig().onToggleItem(item)}
488
+ rowLabel={config.getRowLabel?.(item)}
466
489
  />
467
490
  ) : (
468
491
  <span {...stylex.props(treeStyles.leafSpacer)} />
@@ -28,6 +28,12 @@ export const docs = {
28
28
  description: 'Derive a stable unique key from a row item.',
29
29
  required: true,
30
30
  },
31
+ {
32
+ name: 'getRowLabel',
33
+ type: '(item: T) => string',
34
+ description:
35
+ 'Derive a human-readable row identity for the chevron accessible name. Astryx combines it with localized expand/collapse wording. Omit it, or return blank text, to keep the generic "Expand row" and "Collapse row" labels.',
36
+ },
31
37
  {
32
38
  name: 'renderExpanded',
33
39
  type: '(item: T) => ReactNode',
@@ -75,6 +81,7 @@ const expansion = useTableRowExpansion({
75
81
  return next;
76
82
  }),
77
83
  getRowKey: item => item.id,
84
+ getRowLabel: item => item.name,
78
85
  renderExpanded: item => <OrderDetails order={item} />,
79
86
  });
80
87
 
@@ -122,6 +129,8 @@ export const docsDense = {
122
129
  expandedKeys: 'Set of currently-expanded row keys. Consumer-owned.',
123
130
  onToggle: 'Called with a row key when its expansion is toggled.',
124
131
  getRowKey: 'Derive a stable unique key from a row item.',
132
+ getRowLabel:
133
+ 'Derive a row identity for the localized expand/collapse control label. Blank or omitted values keep the generic row label.',
125
134
  renderExpanded:
126
135
  'Render the full-width detail panel below an expanded row. Receives the row item.',
127
136
  getIsItemExpandable:
@@ -19,9 +19,15 @@ export const docs = {
19
19
  {
20
20
  name: 'onToggleItem',
21
21
  type: '(item: T) => void',
22
- description: 'Toggle a row\'s expansion.',
22
+ description: "Toggle a row's expansion.",
23
23
  required: true,
24
24
  },
25
+ {
26
+ name: 'getRowLabel',
27
+ type: '(item: T) => string',
28
+ description:
29
+ 'Derive a human-readable row identity for the expander. Astryx combines it with localized expand/collapse wording. Omit it, or return blank text, to keep the generic "Expand row" and "Collapse row" labels.',
30
+ },
25
31
  {
26
32
  name: 'hasExpandableRows',
27
33
  type: 'boolean',
@@ -81,7 +87,10 @@ export const docs = {
81
87
  idKey: 'id',
82
88
  defaultExpandedIds: ['src'],
83
89
  });
84
- const tree = useTableTreeData(treeConfig);
90
+ const tree = useTableTreeData({
91
+ ...treeConfig,
92
+ getRowLabel: item => item.name,
93
+ });
85
94
 
86
95
  <Table data={visibleData} columns={columns} idKey="id" plugins={{tree}} />;`,
87
96
  },
@@ -97,10 +106,13 @@ export const docsDense = {
97
106
  getRowMeta:
98
107
  'structural meta per visible row: {id, level (0-based), hasChildren, isExpanded}',
99
108
  onToggleItem: 'toggle row expansion',
109
+ getRowLabel:
110
+ 'derive a row identity for the localized expand/collapse accessible name. Blank or omitted values keep the generic row label.',
100
111
  hasExpandableRows: 'false => plugin is a no-op (no expanders/indent/ARIA)',
101
112
  indent:
102
113
  "indent step per level: 'sm' | 'md' | 'lg' (spacing-3/4/6). Defaults to 'md'.",
103
- treeColumnKey: 'column carrying indent + expander. Defaults to first column.',
114
+ treeColumnKey:
115
+ 'column carrying indent + expander. Defaults to first column.',
104
116
  hasExpandAllControl:
105
117
  'show expand-all/collapse-all toggle in tree column header. Needs isAllExpanded + onExpandAll/onCollapseAll (from useTableTreeState). Defaults to false.',
106
118
  isAllExpanded:
@@ -45,6 +45,7 @@ import {
45
45
  } from '../Field';
46
46
  import {Icon, renderIconSlot, type IconType} from '../Icon';
47
47
  import {isRenderable} from '../utils/isRenderable';
48
+ import {withholdCallerHandlers} from '../utils/disabledInteraction';
48
49
  import {Spinner} from '../Spinner';
49
50
  import {useTooltip} from '../Tooltip';
50
51
  import {mergeProps} from '../utils';
@@ -476,13 +477,7 @@ export function TextArea({
476
477
  const showsDisabledMessage = isDisabled && !!disabledMessage;
477
478
  // A disabled field keeps its tab stop but, like a natively disabled one,
478
479
  // runs no caller event handler other than focus and blur (`spec:AST-085` FR2).
479
- const fieldProps = isDisabled
480
- ? Object.fromEntries(
481
- Object.entries(rest).filter(
482
- ([key]) => !/^on[A-Z]/.test(key) || /^on(Focus|Blur)/.test(key),
483
- ),
484
- )
485
- : rest;
480
+ const fieldProps = withholdCallerHandlers(rest, isDisabled);
486
481
  const disabledMessageTooltip = useTooltip({
487
482
  placement: 'above',
488
483
  // The container div is not naturally focusable; focusin bubbles up from
@@ -35,21 +35,23 @@ import {
35
35
  typographyVars,
36
36
  typeScaleVars,
37
37
  } from '../theme/tokens.stylex';
38
+ import {Field} from '../Field/Field';
39
+ import {InputClearButton} from '../Field/InputClearButton';
38
40
  import {
39
- Field,
40
- InputClearButton,
41
- type InputStatus,
42
41
  inputWrapperStyles,
43
42
  inputStatusBorderStyles,
44
43
  inputStatusHoverShadowStyles,
45
44
  inputStatusFocusWithinStyles,
46
- } from '../Field';
47
- import {renderIconSlot, type IconType} from '../Icon';
45
+ } from '../Field/inputStyles.stylex';
46
+ import type {InputStatus} from '../Field/types';
47
+ import {renderIconSlot, type IconType} from '../Icon/Icon';
48
48
  import {isRenderable} from '../utils/isRenderable';
49
- import {Spinner} from '../Spinner';
50
- import {useTooltip} from '../Tooltip';
51
- import {VisuallyHidden} from '../VisuallyHidden';
52
- import {getInputARIA, isImeKeyEvent} from '../utils';
49
+ import {withholdCallerHandlers} from '../utils/disabledInteraction';
50
+ import {Spinner} from '../Spinner/Spinner';
51
+ import {useTooltip} from '../Tooltip/useTooltip';
52
+ import {VisuallyHidden} from '../VisuallyHidden/VisuallyHidden';
53
+ import {getInputARIA} from '../utils/inputAria';
54
+ import {isImeKeyEvent} from '../utils/ime';
53
55
  import {
54
56
  textEntryTraitAttributes,
55
57
  type TextEntryTraitProps,
@@ -109,7 +111,7 @@ export type {
109
111
  InputStatus as TextInputStatus,
110
112
  InputStatusType as TextInputStatusType,
111
113
  } from '../Field';
112
- import {mergeProps} from '../utils';
114
+ import {mergeProps} from '../utils/mergeProps';
113
115
  import {useSize} from '../SizeContext/SizeContext';
114
116
  import {useInputContainer} from '../hooks/useInputContainer';
115
117
  import {useInputStatusIcon} from '../hooks/useInputStatusIcon';
@@ -373,13 +375,7 @@ export function TextInput({
373
375
  const isEffectivelyRequired = useResolvedRequired({isRequired, isOptional});
374
376
  // A disabled field keeps its tab stop but, like a natively disabled one,
375
377
  // runs no caller event handler other than focus and blur (`spec:AST-085` FR2).
376
- const fieldProps = isDisabled
377
- ? Object.fromEntries(
378
- Object.entries(rest).filter(
379
- ([key]) => !/^on[A-Z]/.test(key) || /^on(Focus|Blur)/.test(key),
380
- ),
381
- )
382
- : rest;
378
+ const fieldProps = withholdCallerHandlers(rest, isDisabled);
383
379
  const size = useSize(sizeProp, 'md');
384
380
 
385
381
  const generatedID = useId();
@@ -491,6 +491,8 @@ function TimeField({
491
491
  // region mounted together with its content is not reliably announced.
492
492
  // Ungrouped mode delegates to Field -> FieldStatus, which announces itself.
493
493
  const announce = useAnnounce();
494
+ // Syncs the live region with `status.message` when the field is in an
495
+ // InputGroup.
494
496
  useEffect(() => {
495
497
  if (inputGroup && status?.message) {
496
498
  announce(