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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. package/dist/AlertDialog/AlertDialog.d.ts +4 -1
  2. package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
  3. package/dist/AlertDialog/AlertDialog.js +36 -6
  4. package/dist/AppShell/useCloseMobileDrawerOnActivate.d.ts +13 -0
  5. package/dist/AppShell/useCloseMobileDrawerOnActivate.d.ts.map +1 -0
  6. package/dist/AppShell/useCloseMobileDrawerOnActivate.js +45 -0
  7. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
  8. package/dist/BottomSheet/BottomSheet.js +79 -9
  9. package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
  10. package/dist/BottomSheet/BottomSheetPanel.js +23 -4
  11. package/dist/BottomSheet/bottomSheetStack.d.ts.map +1 -1
  12. package/dist/BottomSheet/bottomSheetStack.js +5 -4
  13. package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
  14. package/dist/BottomSheet/useSheetGestures.js +3 -1
  15. package/dist/Breadcrumbs/BreadcrumbItem.d.ts +2 -1
  16. package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  17. package/dist/Breadcrumbs/BreadcrumbItem.js +7 -3
  18. package/dist/Button/Button.d.ts.map +1 -1
  19. package/dist/Button/Button.js +47 -3
  20. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  21. package/dist/CheckboxInput/CheckboxInput.js +13 -2
  22. package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
  23. package/dist/CheckboxList/CheckboxList.js +7 -1
  24. package/dist/CheckboxList/CheckboxListContext.d.ts +6 -0
  25. package/dist/CheckboxList/CheckboxListContext.d.ts.map +1 -1
  26. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  27. package/dist/CheckboxList/CheckboxListItem.js +10 -2
  28. package/dist/ComplexSelector/ComplexSelector.d.ts +4 -1
  29. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  30. package/dist/ComplexSelector/ComplexSelector.js +14 -4
  31. package/dist/ContextMenu/ContextMenu.js +2 -2
  32. package/dist/DateInput/DateInput.d.ts.map +1 -1
  33. package/dist/DateInput/DateInput.js +5 -2
  34. package/dist/DateInput/MonthScroller.d.ts.map +1 -1
  35. package/dist/DateInput/MonthScroller.js +13 -27
  36. package/dist/DateInput/Wheel.d.ts.map +1 -1
  37. package/dist/DateInput/Wheel.js +22 -41
  38. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  39. package/dist/DateTimeInput/DateTimeInput.js +5 -2
  40. package/dist/Dialog/Dialog.d.ts.map +1 -1
  41. package/dist/Dialog/Dialog.js +23 -45
  42. package/dist/Drawer/Drawer.d.ts.map +1 -1
  43. package/dist/Drawer/Drawer.js +15 -11
  44. package/dist/Drawer/useDrawerDialogPresence.d.ts.map +1 -1
  45. package/dist/Drawer/useDrawerDialogPresence.js +5 -1
  46. package/dist/Field/Field.js +2 -2
  47. package/dist/Field/PanelSearchInput.d.ts +9 -1
  48. package/dist/Field/PanelSearchInput.d.ts.map +1 -1
  49. package/dist/Field/PanelSearchInput.js +3 -1
  50. package/dist/HoverCard/HoverCard.d.ts +4 -3
  51. package/dist/HoverCard/HoverCard.d.ts.map +1 -1
  52. package/dist/HoverCard/HoverCard.js +27 -2
  53. package/dist/HoverCard/useHoverCard.d.ts +5 -4
  54. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  55. package/dist/HoverCard/useHoverCard.js +17 -31
  56. package/dist/Icon/Icon.d.ts +5 -1
  57. package/dist/Icon/Icon.d.ts.map +1 -1
  58. package/dist/Icon/Icon.js +5 -2
  59. package/dist/InfoTip/InfoTip.d.ts +63 -0
  60. package/dist/InfoTip/InfoTip.d.ts.map +1 -0
  61. package/dist/InfoTip/InfoTip.js +126 -0
  62. package/dist/InfoTip/index.d.ts +10 -0
  63. package/dist/InfoTip/index.d.ts.map +1 -0
  64. package/dist/InfoTip/index.js +12 -0
  65. package/dist/Layer/layerAnimations.stylex.d.ts +7 -8
  66. package/dist/Layer/layerAnimations.stylex.d.ts.map +1 -1
  67. package/dist/Layer/layerAnimations.stylex.js +25 -20
  68. package/dist/Layer/useBackdropPress.d.ts +27 -0
  69. package/dist/Layer/useBackdropPress.d.ts.map +1 -0
  70. package/dist/Layer/useBackdropPress.js +53 -0
  71. package/dist/Layer/usePressPin.d.ts +20 -10
  72. package/dist/Layer/usePressPin.d.ts.map +1 -1
  73. package/dist/Layer/usePressPin.js +66 -18
  74. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  75. package/dist/Lightbox/Lightbox.js +18 -0
  76. package/dist/MobileNav/MobileNav.js +0 -1
  77. package/dist/MultiSelector/hooks.d.ts.map +1 -1
  78. package/dist/MultiSelector/hooks.js +2 -4
  79. package/dist/Outline/Outline.d.ts +2 -4
  80. package/dist/Outline/Outline.d.ts.map +1 -1
  81. package/dist/Outline/Outline.js +4 -52
  82. package/dist/Outline/useOutlineFromMarkdown.d.ts.map +1 -1
  83. package/dist/Outline/useOutlineFromMarkdown.js +1 -0
  84. package/dist/Outline/useScrollSpy.js +3 -3
  85. package/dist/PowerSearch/PowerSearch.d.ts +36 -3
  86. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  87. package/dist/PowerSearch/PowerSearch.js +571 -302
  88. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts +100 -0
  89. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts.map +1 -0
  90. package/dist/PowerSearch/PowerSearchBottomSheet.js +1913 -0
  91. package/dist/PowerSearch/PowerSearchEditPopover.d.ts +32 -1
  92. package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
  93. package/dist/PowerSearch/PowerSearchEditPopover.js +17 -6
  94. package/dist/PowerSearch/PowerSearchValueEditor.d.ts +38 -3
  95. package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
  96. package/dist/PowerSearch/PowerSearchValueEditor.js +170 -61
  97. package/dist/PowerSearch/formatFilterValue.d.ts +7 -0
  98. package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
  99. package/dist/PowerSearch/formatFilterValue.js +11 -1
  100. package/dist/PowerSearch/formatTokenValue.d.ts +28 -0
  101. package/dist/PowerSearch/formatTokenValue.d.ts.map +1 -0
  102. package/dist/PowerSearch/formatTokenValue.js +160 -0
  103. package/dist/PowerSearch/powerSearchSheetUtils.d.ts +65 -0
  104. package/dist/PowerSearch/powerSearchSheetUtils.d.ts.map +1 -0
  105. package/dist/PowerSearch/powerSearchSheetUtils.js +168 -0
  106. package/dist/RadioList/RadioList.d.ts.map +1 -1
  107. package/dist/RadioList/RadioList.js +8 -2
  108. package/dist/RadioList/RadioListItem.d.ts +1 -1
  109. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  110. package/dist/RadioList/RadioListItem.js +5 -3
  111. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  112. package/dist/Resizable/ResizeHandle.js +118 -260
  113. package/dist/Resizable/resizeGesture.d.ts +91 -0
  114. package/dist/Resizable/resizeGesture.d.ts.map +1 -0
  115. package/dist/Resizable/resizeGesture.js +251 -0
  116. package/dist/SegmentedControl/SegmentedControl.d.ts +3 -1
  117. package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  118. package/dist/SegmentedControl/SegmentedControl.js +115 -8
  119. package/dist/SegmentedControl/SegmentedControlContext.d.ts +6 -0
  120. package/dist/SegmentedControl/SegmentedControlContext.d.ts.map +1 -1
  121. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -0
  122. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  123. package/dist/SegmentedControl/SegmentedControlItem.js +8 -1
  124. package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts +357 -0
  125. package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts.map +1 -0
  126. package/dist/SegmentedControl/useSegmentedSelectionMotion.js +1349 -0
  127. package/dist/SegmentedControl/useSegmentedTouchTracking.d.ts +70 -0
  128. package/dist/SegmentedControl/useSegmentedTouchTracking.d.ts.map +1 -0
  129. package/dist/SegmentedControl/useSegmentedTouchTracking.js +264 -0
  130. package/dist/Selector/Selector.d.ts.map +1 -1
  131. package/dist/Selector/Selector.js +96 -67
  132. package/dist/Selector/optionShape.d.ts +24 -0
  133. package/dist/Selector/optionShape.d.ts.map +1 -0
  134. package/dist/Selector/optionShape.js +48 -0
  135. package/dist/Selector/selectableOptionEntries.d.ts +20 -0
  136. package/dist/Selector/selectableOptionEntries.d.ts.map +1 -0
  137. package/dist/Selector/selectableOptionEntries.js +38 -0
  138. package/dist/Selector/utils.d.ts +2 -17
  139. package/dist/Selector/utils.d.ts.map +1 -1
  140. package/dist/Selector/utils.js +3 -51
  141. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  142. package/dist/SideNav/SideNavItem.js +3 -9
  143. package/dist/Slider/sliderTouchController.js +2 -2
  144. package/dist/Spinner/Spinner.d.ts +1 -1
  145. package/dist/Spinner/Spinner.d.ts.map +1 -1
  146. package/dist/Spinner/Spinner.js +60 -58
  147. package/dist/Switch/switchTouch.d.ts +0 -7
  148. package/dist/Switch/switchTouch.d.ts.map +1 -1
  149. package/dist/Switch/switchTouch.js +2 -10
  150. package/dist/Switch/useSwitchTouch.d.ts +2 -11
  151. package/dist/Switch/useSwitchTouch.d.ts.map +1 -1
  152. package/dist/Switch/useSwitchTouch.js +35 -93
  153. package/dist/Table/BaseTable.d.ts.map +1 -1
  154. package/dist/Table/BaseTable.js +29 -8
  155. package/dist/TextInput/TextInput.d.ts +2 -2
  156. package/dist/TextInput/TextInput.d.ts.map +1 -1
  157. package/dist/TextInput/TextInput.js +10 -7
  158. package/dist/Toast/Toast.d.ts +11 -1
  159. package/dist/Toast/Toast.d.ts.map +1 -1
  160. package/dist/Toast/Toast.js +30 -15
  161. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  162. package/dist/Toast/ToastViewport.js +94 -34
  163. package/dist/Toast/types.d.ts +9 -3
  164. package/dist/Toast/types.d.ts.map +1 -1
  165. package/dist/Token/Token.d.ts +2 -2
  166. package/dist/Token/Token.d.ts.map +1 -1
  167. package/dist/Token/Token.js +13 -4
  168. package/dist/Token/TokenNamingContext.d.ts +14 -0
  169. package/dist/Token/TokenNamingContext.d.ts.map +1 -0
  170. package/dist/Token/TokenNamingContext.js +23 -0
  171. package/dist/Tokenizer/Tokenizer.d.ts +46 -59
  172. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  173. package/dist/Tokenizer/Tokenizer.js +40 -57
  174. package/dist/Tokenizer/TokenizerBottomSheet.d.ts +25 -28
  175. package/dist/Tokenizer/TokenizerBottomSheet.d.ts.map +1 -1
  176. package/dist/Tokenizer/TokenizerBottomSheet.js +157 -54
  177. package/dist/Tokenizer/TokenizerItemRemovableContext.d.ts +3 -0
  178. package/dist/Tokenizer/TokenizerItemRemovableContext.d.ts.map +1 -0
  179. package/dist/Tokenizer/TokenizerItemRemovableContext.js +19 -0
  180. package/dist/Tooltip/Tooltip.d.ts +25 -30
  181. package/dist/Tooltip/Tooltip.d.ts.map +1 -1
  182. package/dist/Tooltip/Tooltip.js +24 -5
  183. package/dist/Tooltip/index.d.ts +1 -1
  184. package/dist/Tooltip/index.d.ts.map +1 -1
  185. package/dist/Tooltip/useTooltip.d.ts +45 -28
  186. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  187. package/dist/Tooltip/useTooltip.js +52 -59
  188. package/dist/TopNav/TopNavItem.d.ts.map +1 -1
  189. package/dist/TopNav/TopNavItem.js +4 -7
  190. package/dist/TopNav/TopNavMegaMenuItem.d.ts.map +1 -1
  191. package/dist/TopNav/TopNavMegaMenuItem.js +4 -7
  192. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  193. package/dist/TopNav/TopNavMenu.js +4 -7
  194. package/dist/Typeahead/TypeaheadItem.d.ts +2 -1
  195. package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
  196. package/dist/animator/createAnimator.d.ts +98 -0
  197. package/dist/animator/createAnimator.d.ts.map +1 -0
  198. package/dist/animator/createAnimator.js +259 -0
  199. package/dist/astryx.css +96 -7
  200. package/dist/gestures/GestureHost.d.ts +27 -1
  201. package/dist/gestures/GestureHost.d.ts.map +1 -1
  202. package/dist/gestures/GestureHost.js +157 -21
  203. package/dist/gestures/PressTracker.d.ts.map +1 -1
  204. package/dist/gestures/PressTracker.js +4 -3
  205. package/dist/hooks/actionGroupTracker.d.ts +7 -4
  206. package/dist/hooks/actionGroupTracker.d.ts.map +1 -1
  207. package/dist/hooks/actionGroupTracker.js +19 -56
  208. package/dist/hooks/index.d.ts +1 -0
  209. package/dist/hooks/index.d.ts.map +1 -1
  210. package/dist/hooks/index.js +1 -0
  211. package/dist/hooks/pressGroupContext.d.ts +6 -0
  212. package/dist/hooks/pressGroupContext.d.ts.map +1 -0
  213. package/dist/hooks/pressGroupContext.js +20 -0
  214. package/dist/hooks/useActionGroupTracking.d.ts +53 -0
  215. package/dist/hooks/useActionGroupTracking.d.ts.map +1 -0
  216. package/dist/hooks/useActionGroupTracking.js +174 -0
  217. package/dist/hooks/useAnimator.d.ts +41 -0
  218. package/dist/hooks/useAnimator.d.ts.map +1 -0
  219. package/dist/hooks/useAnimator.js +70 -0
  220. package/dist/hooks/useAttachment.d.ts +1 -1
  221. package/dist/hooks/useAttachment.js +1 -1
  222. package/dist/hooks/useHighlightedOptionScroll.d.ts +11 -1
  223. package/dist/hooks/useHighlightedOptionScroll.d.ts.map +1 -1
  224. package/dist/hooks/useHighlightedOptionScroll.js +112 -11
  225. package/dist/hooks/useInputStatusIcon.d.ts +1 -1
  226. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  227. package/dist/hooks/useInputStatusIcon.js +2 -2
  228. package/dist/hooks/useLongPress.d.ts +6 -2
  229. package/dist/hooks/useLongPress.d.ts.map +1 -1
  230. package/dist/hooks/useLongPress.js +95 -15
  231. package/dist/hooks/useMediaQuery.d.ts +2 -1
  232. package/dist/hooks/useMediaQuery.d.ts.map +1 -1
  233. package/dist/hooks/useMediaQuery.js +7 -4
  234. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  235. package/dist/hooks/useMenuPress.js +4 -2
  236. package/dist/i18n/generated-english/InfoTip/InfoTip.generated.d.ts +8 -0
  237. package/dist/i18n/generated-english/InfoTip/InfoTip.generated.d.ts.map +1 -0
  238. package/dist/i18n/generated-english/InfoTip/InfoTip.generated.js +12 -0
  239. package/dist/i18n/generated-english/PowerSearch/PowerSearch.generated.d.ts.map +1 -1
  240. package/dist/i18n/generated-english/PowerSearch/PowerSearch.generated.js +1 -0
  241. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts +8 -0
  242. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts.map +1 -0
  243. package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.js +42 -0
  244. package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.d.ts.map +1 -1
  245. package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.js +6 -0
  246. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts +8 -0
  247. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts.map +1 -0
  248. package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.js +14 -0
  249. package/dist/i18n/generated-english/Tokenizer/TokenizerBottomSheet.generated.d.ts.map +1 -1
  250. package/dist/i18n/generated-english/Tokenizer/TokenizerBottomSheet.generated.js +7 -1
  251. package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
  252. package/dist/i18n/generated-locales/en.generated.js +33 -1
  253. package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
  254. package/dist/i18n/generated-locales/pseudo.generated.js +33 -1
  255. package/dist/index.d.ts +2 -0
  256. package/dist/index.d.ts.map +1 -1
  257. package/dist/index.js +5 -0
  258. package/dist/internal/SheetConfirmation.d.ts +11 -0
  259. package/dist/internal/SheetConfirmation.d.ts.map +1 -0
  260. package/dist/internal/SheetConfirmation.js +92 -0
  261. package/dist/internal/indicatorPress.stylex.d.ts +20 -0
  262. package/dist/internal/indicatorPress.stylex.d.ts.map +1 -0
  263. package/dist/internal/indicatorPress.stylex.js +26 -0
  264. package/dist/internal/sheetDraft.d.ts +35 -0
  265. package/dist/internal/sheetDraft.d.ts.map +1 -0
  266. package/dist/internal/sheetDraft.js +65 -0
  267. package/dist/internal/touch-sheet.d.ts +21 -0
  268. package/dist/internal/touch-sheet.d.ts.map +1 -0
  269. package/dist/internal/touch-sheet.js +19 -0
  270. package/dist/internal/useDismissSearchOnTouchDrag.d.ts +24 -0
  271. package/dist/internal/useDismissSearchOnTouchDrag.d.ts.map +1 -0
  272. package/dist/internal/useDismissSearchOnTouchDrag.js +56 -0
  273. package/dist/motion/animator.d.ts +14 -14
  274. package/dist/motion/animator.d.ts.map +1 -1
  275. package/dist/motion/animator.js +41 -18
  276. package/dist/motion/reducedMotion.d.ts +24 -0
  277. package/dist/motion/reducedMotion.d.ts.map +1 -1
  278. package/dist/motion/reducedMotion.js +78 -1
  279. package/dist/motion/roles.d.ts +7 -1
  280. package/dist/motion/roles.d.ts.map +1 -1
  281. package/dist/motion/roles.js +20 -1
  282. package/dist/motion/uikit/alert.d.ts +41 -0
  283. package/dist/motion/uikit/alert.d.ts.map +1 -0
  284. package/dist/motion/uikit/alert.js +43 -0
  285. package/dist/motion/uikit/index.d.ts +6 -5
  286. package/dist/motion/uikit/index.d.ts.map +1 -1
  287. package/dist/motion/uikit/index.js +6 -5
  288. package/dist/motion/uikit/segmented.d.ts +55 -0
  289. package/dist/motion/uikit/segmented.d.ts.map +1 -0
  290. package/dist/motion/uikit/segmented.js +77 -0
  291. package/dist/motion/uikit/springs.d.ts +0 -18
  292. package/dist/motion/uikit/springs.d.ts.map +1 -1
  293. package/dist/motion/uikit/springs.js +5 -21
  294. package/dist/privateAttributes/pressGroupItem.stylex.d.ts +15 -0
  295. package/dist/privateAttributes/pressGroupItem.stylex.d.ts.map +1 -0
  296. package/dist/privateAttributes/pressGroupItem.stylex.js +23 -0
  297. package/dist/privateAttributes/segmentTitle.stylex.d.ts +5 -0
  298. package/dist/privateAttributes/segmentTitle.stylex.d.ts.map +1 -0
  299. package/dist/privateAttributes/segmentTitle.stylex.js +22 -0
  300. package/dist/utils/browserClickWait.d.ts +35 -0
  301. package/dist/utils/browserClickWait.d.ts.map +1 -0
  302. package/dist/utils/browserClickWait.js +123 -0
  303. package/dist/utils/clickGuard.d.ts +14 -1
  304. package/dist/utils/clickGuard.d.ts.map +1 -1
  305. package/dist/utils/clickGuard.js +46 -1
  306. package/dist/utils/dateParser.d.ts.map +1 -1
  307. package/dist/utils/dateParser.js +12 -0
  308. package/dist/utils/focusReturn.d.ts +15 -0
  309. package/dist/utils/focusReturn.d.ts.map +1 -1
  310. package/dist/utils/focusReturn.js +28 -0
  311. package/dist/utils/interactionOverlay.stylex.d.ts +3 -2
  312. package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
  313. package/dist/utils/interactionOverlay.stylex.js +3 -2
  314. package/dist/utils/pressFeedback.d.ts.map +1 -1
  315. package/dist/utils/pressFeedback.js +19 -6
  316. package/dist/utils/triggerFocus.d.ts +36 -0
  317. package/dist/utils/triggerFocus.d.ts.map +1 -0
  318. package/dist/utils/triggerFocus.js +65 -0
  319. package/locales/en.json +128 -0
  320. package/locales/pseudo.json +96 -0
  321. package/package.json +18 -8
  322. package/src/AlertDialog/AlertDialog.doc.mjs +2 -2
  323. package/src/AlertDialog/AlertDialog.tsx +37 -5
  324. package/src/AppShell/useCloseMobileDrawerOnActivate.ts +52 -0
  325. package/src/BottomSheet/BottomSheet.tsx +95 -10
  326. package/src/BottomSheet/BottomSheetPanel.tsx +40 -5
  327. package/src/BottomSheet/bottomSheetStack.ts +8 -4
  328. package/src/BottomSheet/useSheetGestures.ts +3 -1
  329. package/src/Breadcrumbs/BreadcrumbItem.tsx +13 -3
  330. package/src/Button/Button.tsx +63 -5
  331. package/src/CheckboxInput/CheckboxInput.doc.mjs +18 -0
  332. package/src/CheckboxInput/CheckboxInput.tsx +36 -9
  333. package/src/CheckboxList/CheckboxList.doc.mjs +4 -2
  334. package/src/CheckboxList/CheckboxList.tsx +6 -0
  335. package/src/CheckboxList/CheckboxListContext.tsx +6 -0
  336. package/src/CheckboxList/CheckboxListItem.tsx +11 -2
  337. package/src/ComplexSelector/ComplexSelector.tsx +20 -5
  338. package/src/ContextMenu/ContextMenu.tsx +2 -2
  339. package/src/DateInput/DateInput.tsx +8 -2
  340. package/src/DateInput/MonthScroller.tsx +18 -22
  341. package/src/DateInput/Wheel.tsx +30 -32
  342. package/src/DateTimeInput/DateTimeInput.tsx +8 -2
  343. package/src/Dialog/Dialog.tsx +54 -45
  344. package/src/Drawer/Drawer.tsx +28 -11
  345. package/src/Drawer/useDrawerDialogPresence.ts +5 -1
  346. package/src/Field/Field.tsx +2 -2
  347. package/src/Field/PanelSearchInput.tsx +11 -0
  348. package/src/HoverCard/HoverCard.doc.mjs +4 -2
  349. package/src/HoverCard/HoverCard.tsx +35 -4
  350. package/src/HoverCard/useHoverCard.doc.mjs +178 -36
  351. package/src/HoverCard/useHoverCard.tsx +46 -52
  352. package/src/Icon/Icon.doc.mjs +49 -8
  353. package/src/Icon/Icon.tsx +15 -7
  354. package/src/InfoTip/InfoTip.doc.mjs +192 -0
  355. package/src/InfoTip/InfoTip.tsx +186 -0
  356. package/src/InfoTip/index.ts +14 -0
  357. package/src/Layer/layerAnimations.stylex.ts +24 -16
  358. package/src/Layer/useBackdropPress.ts +81 -0
  359. package/src/Layer/usePressPin.ts +86 -26
  360. package/src/Lightbox/Lightbox.tsx +18 -0
  361. package/src/MobileNav/MobileNav.tsx +1 -1
  362. package/src/MultiSelector/hooks.ts +2 -4
  363. package/src/Outline/Outline.doc.mjs +177 -51
  364. package/src/Outline/Outline.tsx +5 -57
  365. package/src/Outline/useOutlineFromMarkdown.doc.mjs +157 -0
  366. package/src/Outline/useOutlineFromMarkdown.ts +1 -0
  367. package/src/Outline/useScrollSpy.ts +3 -3
  368. package/src/PowerSearch/PowerSearch.doc.mjs +55 -6
  369. package/src/PowerSearch/PowerSearch.tsx +798 -324
  370. package/src/PowerSearch/PowerSearchBottomSheet.tsx +2515 -0
  371. package/src/PowerSearch/PowerSearchEditPopover.tsx +28 -6
  372. package/src/PowerSearch/PowerSearchValueEditor.tsx +203 -38
  373. package/src/PowerSearch/formatFilterValue.ts +18 -1
  374. package/src/PowerSearch/formatTokenValue.ts +215 -0
  375. package/src/PowerSearch/powerSearchSheetUtils.ts +224 -0
  376. package/src/RadioList/RadioList.doc.mjs +4 -2
  377. package/src/RadioList/RadioList.tsx +7 -2
  378. package/src/RadioList/RadioListItem.tsx +5 -3
  379. package/src/Resizable/ResizeHandle.tsx +133 -328
  380. package/src/Resizable/resizeGesture.ts +368 -0
  381. package/src/SegmentedControl/SegmentedControl.doc.mjs +3 -3
  382. package/src/SegmentedControl/SegmentedControl.tsx +179 -5
  383. package/src/SegmentedControl/SegmentedControlContext.ts +6 -0
  384. package/src/SegmentedControl/SegmentedControlItem.tsx +12 -1
  385. package/src/SegmentedControl/useSegmentedSelectionMotion.ts +1640 -0
  386. package/src/SegmentedControl/useSegmentedTouchTracking.ts +308 -0
  387. package/src/Selector/Selector.tsx +136 -89
  388. package/src/Selector/optionShape.ts +64 -0
  389. package/src/Selector/selectableOptionEntries.ts +39 -0
  390. package/src/Selector/utils.ts +9 -68
  391. package/src/SideNav/SideNavItem.tsx +3 -7
  392. package/src/Slider/sliderTouchController.ts +2 -2
  393. package/src/Spinner/Spinner.tsx +77 -63
  394. package/src/Switch/switchTouch.ts +2 -10
  395. package/src/Switch/useSwitchTouch.ts +38 -104
  396. package/src/Table/BaseTable.tsx +46 -12
  397. package/src/TextInput/TextInput.tsx +11 -10
  398. package/src/Toast/Toast.doc.mjs +4 -3
  399. package/src/Toast/Toast.tsx +57 -32
  400. package/src/Toast/ToastViewport.tsx +121 -35
  401. package/src/Toast/types.ts +9 -3
  402. package/src/Token/Token.tsx +15 -4
  403. package/src/Token/TokenNamingContext.ts +28 -0
  404. package/src/Tokenizer/Tokenizer.doc.mjs +16 -0
  405. package/src/Tokenizer/Tokenizer.tsx +89 -85
  406. package/src/Tokenizer/TokenizerBottomSheet.tsx +219 -93
  407. package/src/Tokenizer/TokenizerItemRemovableContext.ts +24 -0
  408. package/src/Tooltip/Tooltip.doc.mjs +123 -54
  409. package/src/Tooltip/Tooltip.tsx +36 -39
  410. package/src/Tooltip/index.ts +0 -1
  411. package/src/Tooltip/useTooltip.doc.mjs +171 -33
  412. package/src/Tooltip/useTooltip.tsx +98 -86
  413. package/src/TopNav/TopNavItem.tsx +6 -5
  414. package/src/TopNav/TopNavMegaMenuItem.tsx +6 -5
  415. package/src/TopNav/TopNavMenu.tsx +6 -5
  416. package/src/Typeahead/TypeaheadItem.doc.mjs +6 -3
  417. package/src/Typeahead/TypeaheadItem.tsx +2 -1
  418. package/src/animator/createAnimator.doc.mjs +153 -0
  419. package/src/animator/createAnimator.ts +324 -0
  420. package/src/gestures/GestureHost.ts +198 -20
  421. package/src/gestures/PressTracker.ts +4 -3
  422. package/src/gestures/README.md +7 -1
  423. package/src/hooks/actionGroupTracker.ts +32 -61
  424. package/src/hooks/index.ts +2 -0
  425. package/src/hooks/pressGroupContext.ts +21 -0
  426. package/src/hooks/useActionGroupTracking.ts +224 -0
  427. package/src/hooks/useAnimator.doc.mjs +109 -0
  428. package/src/hooks/useAnimator.ts +67 -0
  429. package/src/hooks/useAttachment.ts +1 -1
  430. package/src/hooks/useHighlightedOptionScroll.ts +123 -15
  431. package/src/hooks/useInputStatusIcon.tsx +3 -2
  432. package/src/hooks/useLongPress.doc.mjs +2 -2
  433. package/src/hooks/useLongPress.ts +136 -15
  434. package/src/hooks/useMediaQuery.doc.mjs +2 -2
  435. package/src/hooks/useMediaQuery.ts +13 -4
  436. package/src/hooks/useMenuPress.ts +8 -2
  437. package/src/i18n/generated-english/InfoTip/InfoTip.generated.ts +13 -0
  438. package/src/i18n/generated-english/PowerSearch/PowerSearch.generated.ts +1 -0
  439. package/src/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.ts +43 -0
  440. package/src/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.ts +6 -0
  441. package/src/i18n/generated-english/PowerSearch/formatTokenValue.generated.ts +15 -0
  442. package/src/i18n/generated-english/Tokenizer/TokenizerBottomSheet.generated.ts +7 -1
  443. package/src/i18n/generated-locales/en.generated.ts +43 -0
  444. package/src/i18n/generated-locales/pseudo.generated.ts +44 -0
  445. package/src/index.ts +14 -0
  446. package/src/internal/SheetConfirmation.tsx +101 -0
  447. package/src/internal/indicatorPress.stylex.ts +24 -0
  448. package/src/internal/sheetDraft.ts +80 -0
  449. package/src/internal/touch-sheet.ts +21 -0
  450. package/src/internal/useDismissSearchOnTouchDrag.ts +69 -0
  451. package/src/motion/MEASUREMENTS.md +7 -0
  452. package/src/motion/README.md +9 -5
  453. package/src/motion/animator.ts +61 -29
  454. package/src/motion/reducedMotion.ts +79 -1
  455. package/src/motion/roles.ts +20 -1
  456. package/src/motion/uikit/alert.ts +43 -0
  457. package/src/motion/uikit/index.ts +5 -5
  458. package/src/motion/uikit/segmented.ts +74 -0
  459. package/src/motion/uikit/springs.ts +5 -21
  460. package/src/privateAttributes/pressGroupItem.stylex.ts +23 -0
  461. package/src/privateAttributes/segmentTitle.stylex.ts +22 -0
  462. package/src/utils/browserClickWait.ts +133 -0
  463. package/src/utils/clickGuard.ts +64 -1
  464. package/src/utils/dateParser.ts +16 -0
  465. package/src/utils/focusReturn.ts +30 -0
  466. package/src/utils/interactionOverlay.stylex.ts +3 -2
  467. package/src/utils/pressFeedback.ts +19 -6
  468. package/src/utils/triggerFocus.ts +80 -0
  469. package/dist/internal/tokenizer-presentation.d.ts +0 -21
  470. package/dist/internal/tokenizer-presentation.d.ts.map +0 -1
  471. package/dist/internal/tokenizer-presentation.js +0 -21
  472. package/src/internal/tokenizer-presentation.ts +0 -25
@@ -25,6 +25,11 @@
25
25
  // its tolerance as a distance, as UIKit does. This hook measures it on each
26
26
  // axis. The context menu's own movement allowance is a guess and is not
27
27
  // measured yet (AST-094).
28
+ //
29
+ // The hold is a deadline on the touch events' timestamps, on the clock of the
30
+ // touch's own window. A busy main thread can delay the timer past the
31
+ // deadline. A touch stamped after the deadline then reports the press before
32
+ // it acts.
28
33
 
29
34
  import {useCallback, useEffect, useRef} from 'react';
30
35
  import {
@@ -37,6 +42,41 @@ import {
37
42
  const DEFAULT_DELAY_MS = LONG_PRESS_DURATION_MS;
38
43
  const DEFAULT_MOVE_CANCEL_PX = LONG_PRESS_ALLOWABLE_MOVEMENT_PX;
39
44
 
45
+ /** The part of a window's performance timeline a press reads. */
46
+ type EventClock = Pick<Performance, 'now'>;
47
+
48
+ function clockOf(e: React.TouchEvent): EventClock | null {
49
+ const view = e.view as unknown as {performance?: EventClock} | null;
50
+ return (
51
+ view?.performance ??
52
+ (typeof performance === 'undefined' ? null : performance)
53
+ );
54
+ }
55
+
56
+ /**
57
+ * An event's time on its window's clock. jsdom stamps events with
58
+ * `Date.now()`. The hook reads the age of such a stamp on that clock, so a
59
+ * frozen system time keeps the hold's length. A stamp nearer `Date.now()` than
60
+ * the window's clock is that kind of stamp.
61
+ */
62
+ function timeOn(
63
+ clock: EventClock | null,
64
+ timeStamp: number | undefined,
65
+ ): number | undefined {
66
+ // A stamp of 0 means the event carries no time, so the hold falls back to
67
+ // the full delay on the page's timer.
68
+ if (timeStamp == null || !Number.isFinite(timeStamp) || timeStamp <= 0) {
69
+ return undefined;
70
+ }
71
+ if (
72
+ clock != null &&
73
+ Math.abs(Date.now() - timeStamp) < Math.abs(clock.now() - timeStamp)
74
+ ) {
75
+ return clock.now() - (Date.now() - timeStamp);
76
+ }
77
+ return timeStamp;
78
+ }
79
+
40
80
  export interface UseLongPressOptions {
41
81
  /** Fired with the touch start point once the press is held for `delayMs`. */
42
82
  onLongPress: (point: {x: number; y: number}) => void;
@@ -59,8 +99,12 @@ export interface LongPressTolerance {
59
99
  export interface UseLongPressHandlers {
60
100
  onTouchStart: (e: React.TouchEvent) => void;
61
101
  onTouchMove: (e: React.TouchEvent) => void;
62
- onTouchEnd: () => void;
63
- onTouchCancel: () => void;
102
+ /**
103
+ * The lift. Pass the event, so a press it is stamped past (its timer held
104
+ * back by a busy page) still reports first. Spreading the handlers does.
105
+ */
106
+ onTouchEnd: (e?: React.TouchEvent) => void;
107
+ onTouchCancel: (e?: React.TouchEvent) => void;
64
108
  /**
65
109
  * Begin detection at a point, for a caller driving this from its own
66
110
  * pointer events rather than the touch handlers above.
@@ -118,6 +162,9 @@ export function useLongPressDetector(
118
162
 
119
163
  const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
120
164
  const startRef = useRef<{x: number; y: number} | null>(null);
165
+ // The pending press's deadline and clock, when it started from a touch.
166
+ const deadlineRef = useRef<number | null>(null);
167
+ const clockRef = useRef<EventClock | null>(null);
121
168
  // The press in progress's tolerance, when its caller chose one at start.
122
169
  const pressToleranceRef = useRef<LongPressTolerance | null>(null);
123
170
  // Keep the latest callback without re-creating handlers on every render.
@@ -130,10 +177,39 @@ export function useLongPressDetector(
130
177
  timerRef.current = null;
131
178
  }
132
179
  startRef.current = null;
180
+ deadlineRef.current = null;
181
+ clockRef.current = null;
133
182
  }, []);
134
183
 
135
- const start = useCallback(
136
- (point: {x: number; y: number}, tolerance?: LongPressTolerance) => {
184
+ const fire = useCallback(() => {
185
+ const from = startRef.current;
186
+ if (from == null) {
187
+ return;
188
+ }
189
+ clear();
190
+ onLongPressRef.current({x: from.x, y: from.y});
191
+ }, [clear]);
192
+
193
+ // A touch stamped at or past the deadline: the finger was down for the
194
+ // whole delay, so the press reports before the touch acts.
195
+ const fireIfDue = useCallback(
196
+ (e: React.TouchEvent | undefined) => {
197
+ const deadline = deadlineRef.current;
198
+ const eventTime =
199
+ e == null ? undefined : timeOn(clockRef.current, e.timeStamp);
200
+ if (deadline != null && eventTime != null && eventTime >= deadline) {
201
+ fire();
202
+ }
203
+ },
204
+ [fire],
205
+ );
206
+
207
+ const begin = useCallback(
208
+ (
209
+ point: {x: number; y: number},
210
+ tolerance: LongPressTolerance | undefined,
211
+ started: {at: number; clock: EventClock} | undefined,
212
+ ) => {
137
213
  if (disabled) {
138
214
  return;
139
215
  }
@@ -142,15 +218,40 @@ export function useLongPressDetector(
142
218
  clear();
143
219
  startRef.current = {x: point.x, y: point.y};
144
220
  pressToleranceRef.current = tolerance ?? null;
145
- timerRef.current = setTimeout(() => {
146
- const from = startRef.current;
147
- if (from == null) {
221
+ const clock = started?.clock ?? null;
222
+ const deadline = started == null ? null : started.at + delayMs;
223
+ clockRef.current = clock;
224
+ deadlineRef.current = deadline;
225
+ // Wait only for the rest of the hold, so a touch handled late does not
226
+ // lengthen it, and never past the delay.
227
+ const remaining =
228
+ clock == null || deadline == null
229
+ ? delayMs
230
+ : Math.min(delayMs, Math.max(0, deadline - clock.now()));
231
+ // A late timer yields to queued input once, so a lift stamped before
232
+ // the deadline still cancels the press. The gesture arena does the same.
233
+ const run = (mayYield: boolean) => {
234
+ timerRef.current = null;
235
+ if (
236
+ mayYield &&
237
+ clock != null &&
238
+ deadline != null &&
239
+ clock.now() > deadline
240
+ ) {
241
+ timerRef.current = setTimeout(() => run(false), 0);
148
242
  return;
149
243
  }
150
- onLongPressRef.current({x: from.x, y: from.y});
151
- }, delayMs);
244
+ fire();
245
+ };
246
+ timerRef.current = setTimeout(() => run(true), remaining);
152
247
  },
153
- [disabled, delayMs, clear],
248
+ [disabled, delayMs, clear, fire],
249
+ );
250
+
251
+ const start = useCallback(
252
+ (point: {x: number; y: number}, tolerance?: LongPressTolerance) =>
253
+ begin(point, tolerance, undefined),
254
+ [begin],
154
255
  );
155
256
 
156
257
  const moveTo = useCallback(
@@ -179,17 +280,29 @@ export function useLongPressDetector(
179
280
  return;
180
281
  }
181
282
  if (e.touches.length !== 1) {
283
+ // A second finger ends the press, unless the press was already due.
284
+ fireIfDue(e);
182
285
  clear();
183
286
  return;
184
287
  }
185
288
  const touch = e.touches[0];
186
- start({x: touch.clientX, y: touch.clientY});
289
+ const clock = clockOf(e);
290
+ const at = timeOn(clock, e.timeStamp);
291
+ begin(
292
+ {x: touch.clientX, y: touch.clientY},
293
+ undefined,
294
+ clock == null || at == null ? undefined : {at, clock},
295
+ );
187
296
  },
188
- [disabled, clear, start],
297
+ [disabled, clear, begin, fireIfDue],
189
298
  );
190
299
 
191
300
  const onTouchMove = useCallback(
192
301
  (e: React.TouchEvent) => {
302
+ if (startRef.current == null) {
303
+ return;
304
+ }
305
+ fireIfDue(e);
193
306
  if (startRef.current == null) {
194
307
  return;
195
308
  }
@@ -200,7 +313,15 @@ export function useLongPressDetector(
200
313
  const touch = e.touches[0];
201
314
  moveTo({x: touch.clientX, y: touch.clientY});
202
315
  },
203
- [clear, moveTo],
316
+ [clear, moveTo, fireIfDue],
317
+ );
318
+
319
+ const onTouchEnd = useCallback(
320
+ (e?: React.TouchEvent) => {
321
+ fireIfDue(e);
322
+ clear();
323
+ },
324
+ [clear, fireIfDue],
204
325
  );
205
326
 
206
327
  useEffect(() => clear, [clear]);
@@ -208,8 +329,8 @@ export function useLongPressDetector(
208
329
  return {
209
330
  onTouchStart,
210
331
  onTouchMove,
211
- onTouchEnd: clear,
212
- onTouchCancel: clear,
332
+ onTouchEnd,
333
+ onTouchCancel: onTouchEnd,
213
334
  start,
214
335
  moveTo,
215
336
  cancel: clear,
@@ -21,7 +21,7 @@ export const docs = {
21
21
  },
22
22
  ],
23
23
  usage: {
24
- description: 'SSR-safe media query hook that subscribes to window.matchMedia changes. Returns whether the given media query matches. Always returns false on first render for SSR compatibility.',
24
+ description: 'SSR-safe media query hook that subscribes to window.matchMedia changes. Returns whether the given media query matches. Always returns false on first render for SSR compatibility. Where `window.matchMedia` is missing, it returns its server default and never throws.',
25
25
  bestPractices: [
26
26
  { guidance: true, description: 'Use for responsive layout switching based on viewport width, color scheme, or motion preferences.' },
27
27
  { guidance: true, description: 'Prefer Astryx responsive tokens and component props over manual breakpoint logic when possible.' },
@@ -44,7 +44,7 @@ export const docsDense = {
44
44
  matches: 'whether media query currently matches. Always false on first render (SSR-safe).',
45
45
  },
46
46
  usage: {
47
- description: 'SSR-safe media query hook subscribing to window.matchMedia changes. Returns whether given media query matches. Always returns false on first render for SSR compatibility.',
47
+ description: 'SSR-safe media query hook subscribing to window.matchMedia changes. Returns whether given media query matches. Always returns false on first render for SSR compatibility. Where `window.matchMedia` is missing, returns its server default and never throws.',
48
48
  bestPractices: [
49
49
  { guidance: true, description: 'Use for responsive layout switching based on viewport width, color scheme, or motion preferences.' },
50
50
  { guidance: true, description: 'Prefer Astryx responsive tokens + component props over manual breakpoint logic when possible.' },
@@ -20,7 +20,8 @@ import {useCallback, useSyncExternalStore} from 'react';
20
20
 
21
21
  /**
22
22
  * SSR-safe media query hook.
23
- * Returns whether the given media query matches.
23
+ * Returns whether the given media query matches. Where the window has no
24
+ * `matchMedia`, as in a test DOM, it returns `serverDefault`.
24
25
  *
25
26
  * @param query - CSS media query string
26
27
  * @param serverDefault - Value to return during SSR. Pass a server-side hint
@@ -35,6 +36,10 @@ import {useCallback, useSyncExternalStore} from 'react';
35
36
  export function useMediaQuery(query: string, serverDefault = false): boolean {
36
37
  const subscribe = useCallback(
37
38
  (onStoreChange: () => void) => {
39
+ // A DOM without `matchMedia`, such as a test DOM, has nothing to watch.
40
+ if (typeof window.matchMedia !== 'function') {
41
+ return () => {};
42
+ }
38
43
  const mql = window.matchMedia(query);
39
44
  mql.addEventListener('change', onStoreChange);
40
45
  return () => mql.removeEventListener('change', onStoreChange);
@@ -42,9 +47,13 @@ export function useMediaQuery(query: string, serverDefault = false): boolean {
42
47
  [query],
43
48
  );
44
49
 
45
- const getSnapshot = useCallback(() => {
46
- return window.matchMedia(query).matches;
47
- }, [query]);
50
+ const getSnapshot = useCallback(
51
+ () =>
52
+ typeof window.matchMedia === 'function'
53
+ ? window.matchMedia(query).matches
54
+ : serverDefault,
55
+ [query, serverDefault],
56
+ );
48
57
 
49
58
  const getServerSnapshot = useCallback(() => serverDefault, [serverDefault]);
50
59
 
@@ -483,7 +483,10 @@ export function useMenuPress(options: UseMenuPressOptions): UseMenuPressReturn {
483
483
  // Detach before acting: the activation usually closes the menu.
484
484
  endGesture();
485
485
  // Once armed, the one swallower stays installed.
486
- armClickGuard(doc, {staysInstalled: true});
486
+ armClickGuard(doc, {
487
+ staysInstalled: true,
488
+ cancelsTouchEnd: native?.pointerType === 'touch',
489
+ });
487
490
  if (native != null) {
488
491
  activate(effect.row, native);
489
492
  }
@@ -492,7 +495,10 @@ export function useMenuPress(options: UseMenuPressOptions): UseMenuPressReturn {
492
495
  case 'settle': {
493
496
  endGesture();
494
497
  if (effect.stray) {
495
- armClickGuard(doc, {staysInstalled: true});
498
+ armClickGuard(doc, {
499
+ staysInstalled: true,
500
+ cancelsTouchEnd: native?.pointerType === 'touch',
501
+ });
496
502
  }
497
503
  if (effect.dismiss) {
498
504
  optionsRef.current.onDismiss?.();
@@ -0,0 +1,13 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @generated by scripts/generate-i18n-runtime.mjs from packages/core/locales/en.json,
5
+ * holding the English for the catalog keys named in packages/core/src/InfoTip/InfoTip.tsx.
6
+ * Do not edit by hand. Run `pnpm generate:i18n-runtime` instead.
7
+ */
8
+
9
+ const english: Readonly<Record<string, string>> = {
10
+ "@astryx.infoTip.label": "More information"
11
+ };
12
+
13
+ export default english;
@@ -8,6 +8,7 @@
8
8
 
9
9
  const english: Readonly<Record<string, string>> = {
10
10
  "@astryx.powersearch.allFiltersRemoved": "All filters removed",
11
+ "@astryx.powersearch.editableFiltersRemoved": "Editable filters removed",
11
12
  "@astryx.powersearch.editor.apply": "Apply",
12
13
  "@astryx.powersearch.label": "Search",
13
14
  "@astryx.powersearch.placeholder": "Search…",
@@ -0,0 +1,43 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @generated by scripts/generate-i18n-runtime.mjs from packages/core/locales/en.json,
5
+ * holding the English for the catalog keys named in packages/core/src/PowerSearch/PowerSearchBottomSheet.tsx.
6
+ * Do not edit by hand. Run `pnpm generate:i18n-runtime` instead.
7
+ */
8
+
9
+ const english: Readonly<Record<string, string>> = {
10
+ "@astryx.powersearch.allFiltersRemoved": "All filters removed",
11
+ "@astryx.powersearch.editableFiltersRemoved": "Editable filters removed",
12
+ "@astryx.powersearch.editor.apply": "Apply",
13
+ "@astryx.powersearch.editor.cancel": "Cancel",
14
+ "@astryx.powersearch.editor.operator": "Operator",
15
+ "@astryx.powersearch.sheet.addFilter": "Add filter",
16
+ "@astryx.powersearch.sheet.clearAll": "Clear all",
17
+ "@astryx.powersearch.sheet.clearAllCancel": "Keep filters",
18
+ "@astryx.powersearch.sheet.clearAllConfirm": "Clear filters",
19
+ "@astryx.powersearch.sheet.clearAllDescription": "This removes all editable filters from this search.",
20
+ "@astryx.powersearch.sheet.clearAllTitle": "Clear all filters?",
21
+ "@astryx.powersearch.sheet.done": "Done",
22
+ "@astryx.powersearch.sheet.editableFiltersClearedWithCount": "Editable filters removed. {resultCount}",
23
+ "@astryx.powersearch.sheet.fieldOperator": "{field} {operator}",
24
+ "@astryx.powersearch.sheet.filterUnavailable": "This filter is no longer available",
25
+ "@astryx.powersearch.sheet.filtersClearedWithCount": "All filters removed. {resultCount}",
26
+ "@astryx.powersearch.sheet.filtersTitle": "Filters",
27
+ "@astryx.powersearch.sheet.labelValue": "{label} {value}",
28
+ "@astryx.powersearch.sheet.noFilters": "No filters applied",
29
+ "@astryx.powersearch.sheet.noFiltersDescription": "Add a filter to narrow your results and find what you need faster.",
30
+ "@astryx.powersearch.sheet.noMatchingFields": "No filters match your search",
31
+ "@astryx.powersearch.sheet.noResults": "No results found",
32
+ "@astryx.powersearch.sheet.removeFilter": "Remove {field} filter",
33
+ "@astryx.powersearch.sheet.search": "Search",
34
+ "@astryx.powersearch.sheet.searchFields": "Search filters",
35
+ "@astryx.powersearch.sheet.searchFieldsPlaceholder": "Search filters…",
36
+ "@astryx.powersearch.sheet.searchResults": "Search results",
37
+ "@astryx.powersearch.sheet.tryDifferentSearch": "Try a different search.",
38
+ "@astryx.powersearch.sheet.ungroupedFields": "General",
39
+ "@astryx.tokenizer.tokenAdded": "Added {label}",
40
+ "@astryx.tokenizer.tokenRemoved": "Removed {label}"
41
+ };
42
+
43
+ export default english;
@@ -7,6 +7,12 @@
7
7
  */
8
8
 
9
9
  const english: Readonly<Record<string, string>> = {
10
+ "@astryx.powersearch.sheet.relativeDaysAgo": "{count, number} {count, plural, one {day} other {days}} ago",
11
+ "@astryx.powersearch.sheet.relativeDaysFromNow": "{count, number} {count, plural, one {day} other {days}} from now",
12
+ "@astryx.powersearch.sheet.relativeMonthsAgo": "{count, number} {count, plural, one {month} other {months}} ago",
13
+ "@astryx.powersearch.sheet.relativeMonthsFromNow": "{count, number} {count, plural, one {month} other {months}} from now",
14
+ "@astryx.powersearch.sheet.relativeWeeksAgo": "{count, number} {count, plural, one {week} other {weeks}} ago",
15
+ "@astryx.powersearch.sheet.relativeWeeksFromNow": "{count, number} {count, plural, one {week} other {weeks}} from now",
10
16
  "@astryx.powersearch.valueEditor.addValuesPlaceholder": "Add values…",
11
17
  "@astryx.powersearch.valueEditor.date": "Date",
12
18
  "@astryx.powersearch.valueEditor.dateRange": "date range",
@@ -0,0 +1,15 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @generated by scripts/generate-i18n-runtime.mjs from packages/core/locales/en.json,
5
+ * holding the English for the catalog keys named in packages/core/src/PowerSearch/formatTokenValue.ts.
6
+ * Do not edit by hand. Run `pnpm generate:i18n-runtime` instead.
7
+ */
8
+
9
+ const english: Readonly<Record<string, string>> = {
10
+ "@astryx.powersearch.valueEditor.dateRange": "date range",
11
+ "@astryx.powersearch.valueEditor.filtersCount": "{count, number} {count, plural, one {filter} other {filters}}",
12
+ "@astryx.powersearch.valueEditor.itemsCount": "{count, number} {count, plural, one {item} other {items}}"
13
+ };
14
+
15
+ export default english;
@@ -7,6 +7,7 @@
7
7
  */
8
8
 
9
9
  const english: Readonly<Record<string, string>> = {
10
+ "@astryx.alertDialog.cancel": "Cancel",
10
11
  "@astryx.textInput.clearLabel": "Clear {label}",
11
12
  "@astryx.tokenizer.add": "Add",
12
13
  "@astryx.tokenizer.addValue": "Add {value}",
@@ -16,11 +17,16 @@ const english: Readonly<Record<string, string>> = {
16
17
  "@astryx.tokenizer.clearAllTitle": "Clear all selected items?",
17
18
  "@astryx.tokenizer.clearSelection": "Clear selection",
18
19
  "@astryx.tokenizer.create": "Create \"{value}\"",
19
- "@astryx.tokenizer.done": "Done",
20
+ "@astryx.tokenizer.discardChanges": "Discard changes",
21
+ "@astryx.tokenizer.discardChangesDescription": "Your changes to {label} haven't been saved.",
22
+ "@astryx.tokenizer.discardChangesTitle": "Discard changes?",
23
+ "@astryx.tokenizer.keepEditing": "Keep editing",
20
24
  "@astryx.tokenizer.noResultsDescription": "Try a different search.",
21
25
  "@astryx.tokenizer.nothingToClear": "Nothing selected",
26
+ "@astryx.tokenizer.save": "Save",
22
27
  "@astryx.tokenizer.search": "Search {label}",
23
28
  "@astryx.tokenizer.searchPlaceholder": "Search…",
29
+ "@astryx.tokenizer.selectionLimit": "Select up to {count, plural, one {# item} other {# items}}",
24
30
  "@astryx.tokenizer.tokenAdded": "Added {label}",
25
31
  "@astryx.tokenizer.tokenRemoved": "Removed {label}",
26
32
  "@astryx.typeahead.emptySearchResults": "No results found",
@@ -78,6 +78,47 @@ const runtimeCatalog: Readonly<Record<string, string>> = {
78
78
  '{count, number} {count, plural, one {filter} other {filters}}',
79
79
  '@astryx.powersearch.resultCount':
80
80
  '{count, number} {count, plural, one {result} other {results}}',
81
+ '@astryx.powersearch.sheet.filtersTitle': 'Filters',
82
+ '@astryx.powersearch.sheet.addFilter': 'Add filter',
83
+ '@astryx.powersearch.sheet.noFilters': 'No filters applied',
84
+ '@astryx.powersearch.sheet.noFiltersDescription':
85
+ 'Add a filter to narrow your results and find what you need faster.',
86
+ '@astryx.powersearch.sheet.clearAll': 'Clear all',
87
+ '@astryx.powersearch.sheet.clearAllTitle': 'Clear all filters?',
88
+ '@astryx.powersearch.sheet.clearAllDescription':
89
+ 'This removes all editable filters from this search.',
90
+ '@astryx.powersearch.sheet.clearAllConfirm': 'Clear filters',
91
+ '@astryx.powersearch.sheet.clearAllCancel': 'Keep filters',
92
+ '@astryx.powersearch.sheet.done': 'Done',
93
+ '@astryx.powersearch.sheet.search': 'Search',
94
+ '@astryx.powersearch.sheet.searchResults': 'Search results',
95
+ '@astryx.powersearch.sheet.searchFields': 'Search filters',
96
+ '@astryx.powersearch.sheet.searchFieldsPlaceholder': 'Search filters…',
97
+ '@astryx.powersearch.sheet.ungroupedFields': 'General',
98
+ '@astryx.powersearch.sheet.noMatchingFields': 'No filters match your search',
99
+ '@astryx.powersearch.sheet.tryDifferentSearch': 'Try a different search.',
100
+ '@astryx.powersearch.sheet.noResults': 'No results found',
101
+ '@astryx.powersearch.sheet.filterUnavailable':
102
+ 'This filter is no longer available',
103
+ '@astryx.powersearch.sheet.removeFilter': 'Remove {field} filter',
104
+ '@astryx.powersearch.sheet.relativeDaysAgo':
105
+ '{count, number} {count, plural, one {day} other {days}} ago',
106
+ '@astryx.powersearch.sheet.relativeDaysFromNow':
107
+ '{count, number} {count, plural, one {day} other {days}} from now',
108
+ '@astryx.powersearch.sheet.relativeWeeksAgo':
109
+ '{count, number} {count, plural, one {week} other {weeks}} ago',
110
+ '@astryx.powersearch.sheet.relativeWeeksFromNow':
111
+ '{count, number} {count, plural, one {week} other {weeks}} from now',
112
+ '@astryx.powersearch.sheet.relativeMonthsAgo':
113
+ '{count, number} {count, plural, one {month} other {months}} ago',
114
+ '@astryx.powersearch.sheet.relativeMonthsFromNow':
115
+ '{count, number} {count, plural, one {month} other {months}} from now',
116
+ '@astryx.powersearch.sheet.fieldOperator': '{field} {operator}',
117
+ '@astryx.powersearch.sheet.labelValue': '{label} {value}',
118
+ '@astryx.powersearch.sheet.filtersClearedWithCount':
119
+ 'All filters removed. {resultCount}',
120
+ '@astryx.powersearch.sheet.editableFiltersClearedWithCount':
121
+ 'Editable filters removed. {resultCount}',
81
122
  '@astryx.alertDialog.cancel': 'Cancel',
82
123
  '@astryx.appShell.mobileNavigation': 'Mobile navigation',
83
124
  '@astryx.appShell.skipToContent': 'Skip to content',
@@ -315,6 +356,7 @@ const runtimeCatalog: Readonly<Record<string, string>> = {
315
356
  '@astryx.powersearch.label': 'Search',
316
357
  '@astryx.powersearch.placeholder': 'Search…',
317
358
  '@astryx.powersearch.allFiltersRemoved': 'All filters removed',
359
+ '@astryx.powersearch.editableFiltersRemoved': 'Editable filters removed',
318
360
  '@astryx.resizable.collapsed': 'Collapsed',
319
361
  '@astryx.resizable.handle.label': 'Resize handle',
320
362
  '@astryx.selector.placeholder': 'Select…',
@@ -632,6 +674,7 @@ const runtimeCatalog: Readonly<Record<string, string>> = {
632
674
  '@astryx.comments.loading': 'Loading comments',
633
675
  '@astryx.comments.olderFailed': "Earlier comments couldn't load",
634
676
  '@astryx.comments.postFailed': "Your comment couldn't be posted.",
677
+ '@astryx.infoTip.label': 'More information',
635
678
  };
636
679
 
637
680
  export default runtimeCatalog;
@@ -80,6 +80,48 @@ const runtimeCatalog: Readonly<Record<string, string>> = {
80
80
  '⟦{count, number} {count, plural, one {filter} other {filters}}⟧',
81
81
  '@astryx.powersearch.resultCount':
82
82
  '⟦{count, number} {count, plural, one {result} other {results}}⟧',
83
+ '@astryx.powersearch.sheet.filtersTitle': '⟦Ƒíłţéřš⟧',
84
+ '@astryx.powersearch.sheet.addFilter': '⟦Àðð ƒíłţéř⟧',
85
+ '@astryx.powersearch.sheet.noFilters': '⟦Ñó ƒíłţéřš àþþłíéð⟧',
86
+ '@astryx.powersearch.sheet.noFiltersDescription':
87
+ '⟦Àðð à ƒíłţéř ţó ñàřřóŵ ýóúř řéšúłţš àñð ƒíñð ŵĥàţ ýóú ñééð ƒàšţéř.⟧',
88
+ '@astryx.powersearch.sheet.clearAll': '⟦Çłéàř àłł⟧',
89
+ '@astryx.powersearch.sheet.clearAllTitle': '⟦Çłéàř àłł ƒíłţéřš?⟧',
90
+ '@astryx.powersearch.sheet.clearAllDescription':
91
+ '⟦Ţĥíš řéɱóṽéš àłł éðíţàƀłé ƒíłţéřš ƒřóɱ ţĥíš šéàřçĥ.⟧',
92
+ '@astryx.powersearch.sheet.clearAllConfirm': '⟦Çłéàř ƒíłţéřš⟧',
93
+ '@astryx.powersearch.sheet.clearAllCancel': '⟦Ķééþ ƒíłţéřš⟧',
94
+ '@astryx.powersearch.sheet.done': '⟦Ðóñé⟧',
95
+ '@astryx.powersearch.sheet.search': '⟦Šéàřçĥ⟧',
96
+ '@astryx.powersearch.sheet.searchResults': '⟦Šéàřçĥ řéšúłţš⟧',
97
+ '@astryx.powersearch.sheet.searchFields': '⟦Šéàřçĥ ƒíłţéřš⟧',
98
+ '@astryx.powersearch.sheet.searchFieldsPlaceholder': '⟦Šéàřçĥ ƒíłţéřš…⟧',
99
+ '@astryx.powersearch.sheet.ungroupedFields': '⟦Ĝéñéřàł⟧',
100
+ '@astryx.powersearch.sheet.noMatchingFields':
101
+ '⟦Ñó ƒíłţéřš ɱàţçĥ ýóúř šéàřçĥ⟧',
102
+ '@astryx.powersearch.sheet.tryDifferentSearch': '⟦Ţřý à ð탃éřéñţ šéàřçĥ.⟧',
103
+ '@astryx.powersearch.sheet.noResults': '⟦Ñó řéšúłţš ƒóúñð⟧',
104
+ '@astryx.powersearch.sheet.filterUnavailable':
105
+ '⟦Ţĥíš ƒíłţéř íš ñó łóñĝéř àṽàíłàƀłé⟧',
106
+ '@astryx.powersearch.sheet.removeFilter': '⟦Řéɱóṽé {field} ƒíłţéř⟧',
107
+ '@astryx.powersearch.sheet.relativeDaysAgo':
108
+ '⟦{count, number} {count, plural, one {day} other {days}} àĝó⟧',
109
+ '@astryx.powersearch.sheet.relativeDaysFromNow':
110
+ '⟦{count, number} {count, plural, one {day} other {days}} ƒřóɱ ñóŵ⟧',
111
+ '@astryx.powersearch.sheet.relativeWeeksAgo':
112
+ '⟦{count, number} {count, plural, one {week} other {weeks}} àĝó⟧',
113
+ '@astryx.powersearch.sheet.relativeWeeksFromNow':
114
+ '⟦{count, number} {count, plural, one {week} other {weeks}} ƒřóɱ ñóŵ⟧',
115
+ '@astryx.powersearch.sheet.relativeMonthsAgo':
116
+ '⟦{count, number} {count, plural, one {month} other {months}} àĝó⟧',
117
+ '@astryx.powersearch.sheet.relativeMonthsFromNow':
118
+ '⟦{count, number} {count, plural, one {month} other {months}} ƒřóɱ ñóŵ⟧',
119
+ '@astryx.powersearch.sheet.fieldOperator': '⟦{field} {operator}⟧',
120
+ '@astryx.powersearch.sheet.labelValue': '⟦{label} {value}⟧',
121
+ '@astryx.powersearch.sheet.filtersClearedWithCount':
122
+ '⟦Àłł ƒíłţéřš řéɱóṽéð. {resultCount}⟧',
123
+ '@astryx.powersearch.sheet.editableFiltersClearedWithCount':
124
+ '⟦Éðíţàƀłé ƒíłţéřš řéɱóṽéð. {resultCount}⟧',
83
125
  '@astryx.alertDialog.cancel': '⟦Çàñçéł⟧',
84
126
  '@astryx.appShell.mobileNavigation': '⟦Ṁóƀíłé ñàṽíĝàţíóñ⟧',
85
127
  '@astryx.appShell.skipToContent': '⟦Šķíþ ţó çóñţéñţ⟧',
@@ -322,6 +364,7 @@ const runtimeCatalog: Readonly<Record<string, string>> = {
322
364
  '@astryx.powersearch.label': '⟦Šéàřçĥ⟧',
323
365
  '@astryx.powersearch.placeholder': '⟦Šéàřçĥ…⟧',
324
366
  '@astryx.powersearch.allFiltersRemoved': '⟦Àłł ƒíłţéřš řéɱóṽéð⟧',
367
+ '@astryx.powersearch.editableFiltersRemoved': '⟦Éðíţàƀłé ƒíłţéřš řéɱóṽéð⟧',
325
368
  '@astryx.resizable.collapsed': '⟦Çółłàþšéð⟧',
326
369
  '@astryx.resizable.handle.label': '⟦Řéšížé ĥàñðłé⟧',
327
370
  '@astryx.selector.placeholder': '⟦Šéłéçţ…⟧',
@@ -643,6 +686,7 @@ const runtimeCatalog: Readonly<Record<string, string>> = {
643
686
  '@astryx.comments.loading': '⟦Łóàðíñĝ çóɱɱéñţš⟧',
644
687
  '@astryx.comments.olderFailed': "⟦Éàřłíéř çóɱɱéñţš çóúłðñ'ţ łóàð⟧",
645
688
  '@astryx.comments.postFailed': "⟦Ýóúř çóɱɱéñţ çóúłðñ'ţ ƀé þóšţéð.⟧",
689
+ '@astryx.infoTip.label': '⟦Ṁóřé íñƒóřɱàţíóñ⟧',
646
690
  };
647
691
 
648
692
  export default runtimeCatalog;
package/src/index.ts CHANGED
@@ -71,6 +71,7 @@ export * from './SelectableCard';
71
71
  export * from './Selector';
72
72
  export * from './MultiSelector';
73
73
  export * from './Icon';
74
+ export * from './InfoTip';
74
75
  export * from './Indicator';
75
76
  export * from './InputGroup';
76
77
  export * from './Item';
@@ -172,6 +173,19 @@ export * from './Outline';
172
173
  // Overflow list
173
174
  export * from './OverflowList';
174
175
 
176
+ // Animating one element: from the package root only, since one API has one
177
+ // entry. Its hook ships from './hooks'.
178
+ export {
179
+ createAnimator,
180
+ type Animator,
181
+ type AnimatorAnimateOptions,
182
+ type AnimatorChannel,
183
+ type AnimatorDecayVelocity,
184
+ type AnimatorHandle,
185
+ type AnimatorSnapshot,
186
+ type AnimatorValues,
187
+ } from './animator/createAnimator';
188
+
175
189
  // Hooks
176
190
  export * from './hooks';
177
191