@astryxdesign/core 0.7.8 → 0.7.9-canary.0200dfe

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 (585) hide show
  1. package/dist/AppShell/observeMainOverflow.d.ts.map +1 -1
  2. package/dist/AppShell/observeMainOverflow.js +9 -6
  3. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
  4. package/dist/BottomSheet/BottomSheet.js +37 -3
  5. package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
  6. package/dist/BottomSheet/BottomSheetPanel.js +40 -8
  7. package/dist/BottomSheet/bottomSheetStack.d.ts.map +1 -1
  8. package/dist/BottomSheet/bottomSheetStack.js +4 -3
  9. package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
  10. package/dist/BottomSheet/useSheetGestures.js +61 -21
  11. package/dist/Calendar/Calendar.d.ts +14 -2
  12. package/dist/Calendar/Calendar.d.ts.map +1 -1
  13. package/dist/Calendar/Calendar.js +63 -74
  14. package/dist/Calendar/getInitialFocusDate.d.ts +4 -1
  15. package/dist/Calendar/getInitialFocusDate.d.ts.map +1 -1
  16. package/dist/Calendar/getInitialFocusDate.js +7 -5
  17. package/dist/Calendar/hooks/useCalendarDays.d.ts +19 -2
  18. package/dist/Calendar/hooks/useCalendarDays.d.ts.map +1 -1
  19. package/dist/Calendar/hooks/useCalendarDays.js +57 -64
  20. package/dist/Calendar/hooks/useCalendarNavigation.d.ts +28 -3
  21. package/dist/Calendar/hooks/useCalendarNavigation.d.ts.map +1 -1
  22. package/dist/Calendar/hooks/useCalendarNavigation.js +33 -22
  23. package/dist/Calendar/styles.d.ts +1 -1
  24. package/dist/CheckboxInput/CheckboxInput.d.ts +2 -1
  25. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  26. package/dist/CheckboxInput/CheckboxInput.js +74 -18
  27. package/dist/CheckboxInput/CheckboxRowPressContext.d.ts +2 -0
  28. package/dist/CheckboxInput/CheckboxRowPressContext.d.ts.map +1 -0
  29. package/dist/CheckboxInput/CheckboxRowPressContext.js +20 -0
  30. package/dist/CheckboxList/CheckboxListItem.d.ts +2 -1
  31. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  32. package/dist/CheckboxList/CheckboxListItem.js +40 -14
  33. package/dist/ClickableCard/ClickableCard.d.ts +1 -1
  34. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  35. package/dist/ClickableCard/ClickableCard.js +5 -1
  36. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  37. package/dist/ContextMenu/ContextMenu.js +2 -0
  38. package/dist/DateInput/DateInput.d.ts +37 -6
  39. package/dist/DateInput/DateInput.d.ts.map +1 -1
  40. package/dist/DateInput/DateInput.js +97 -124
  41. package/dist/DateInput/MonthScroller.d.ts +5 -2
  42. package/dist/DateInput/MonthScroller.d.ts.map +1 -1
  43. package/dist/DateInput/MonthScroller.js +26 -29
  44. package/dist/DateInput/MonthYearWheels.d.ts +10 -1
  45. package/dist/DateInput/MonthYearWheels.d.ts.map +1 -1
  46. package/dist/DateInput/MonthYearWheels.js +54 -42
  47. package/dist/DateInput/PickerWheel.d.ts.map +1 -1
  48. package/dist/DateInput/PickerWheel.js +7 -1
  49. package/dist/DateInput/TouchDateField.d.ts +1 -1
  50. package/dist/DateInput/TouchDateField.d.ts.map +1 -1
  51. package/dist/DateInput/TouchDateField.js +26 -21
  52. package/dist/DateInput/monthGeometry.d.ts +42 -8
  53. package/dist/DateInput/monthGeometry.d.ts.map +1 -1
  54. package/dist/DateInput/monthGeometry.js +81 -7
  55. package/dist/DateInput/useCalendarPresentation.d.ts +10 -0
  56. package/dist/DateInput/useCalendarPresentation.d.ts.map +1 -0
  57. package/dist/DateInput/useCalendarPresentation.js +32 -0
  58. package/dist/DateInput/useTypedDate.d.ts +92 -0
  59. package/dist/DateInput/useTypedDate.d.ts.map +1 -0
  60. package/dist/DateInput/useTypedDate.js +269 -0
  61. package/dist/DateInput/wheelStrip.js +2 -2
  62. package/dist/DateRangeInput/DateRangeInput.d.ts +17 -1
  63. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  64. package/dist/DateRangeInput/DateRangeInput.js +15 -8
  65. package/dist/DateTimeInput/DateTimeInput.d.ts +26 -3
  66. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  67. package/dist/DateTimeInput/DateTimeInput.js +92 -88
  68. package/dist/DateTimeInput/TouchDateTimeField.d.ts +1 -1
  69. package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -1
  70. package/dist/DateTimeInput/TouchDateTimeField.js +26 -20
  71. package/dist/Dialog/Dialog.d.ts +2 -1
  72. package/dist/Dialog/Dialog.d.ts.map +1 -1
  73. package/dist/Dialog/Dialog.js +14 -3
  74. package/dist/Drawer/useDrawerDialogPresence.d.ts +2 -1
  75. package/dist/Drawer/useDrawerDialogPresence.d.ts.map +1 -1
  76. package/dist/Drawer/useDrawerDialogPresence.js +11 -2
  77. package/dist/DropdownMenu/DropdownMenu.d.ts +9 -1
  78. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  79. package/dist/DropdownMenu/DropdownMenu.js +11 -8
  80. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
  81. package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +3 -2
  82. package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
  83. package/dist/DropdownMenu/DropdownMenuItem.js +3 -2
  84. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
  85. package/dist/DropdownMenu/DropdownMenuRadioItem.js +3 -2
  86. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
  87. package/dist/DropdownMenu/DropdownMenuSubMenu.js +3 -2
  88. package/dist/Field/inputDisabledFocus.d.ts +4 -4
  89. package/dist/Field/inputStyles.stylex.d.ts +1 -1
  90. package/dist/FileInput/FileInput.d.ts.map +1 -1
  91. package/dist/FileInput/FileInput.js +16 -2
  92. package/dist/HoverCard/useHoverCard.d.ts +3 -1
  93. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  94. package/dist/Icon/Icon.d.ts +1 -1
  95. package/dist/InfoTip/InfoTip.d.ts +1 -0
  96. package/dist/InfoTip/InfoTip.d.ts.map +1 -1
  97. package/dist/InfoTip/InfoTip.js +6 -18
  98. package/dist/InputGroup/InputGroup.d.ts +4 -3
  99. package/dist/InputGroup/InputGroup.d.ts.map +1 -1
  100. package/dist/InputGroup/InputGroup.js +2 -2
  101. package/dist/InputGroup/InputGroupText.d.ts +2 -1
  102. package/dist/InputGroup/InputGroupText.d.ts.map +1 -1
  103. package/dist/InputGroup/InputGroupText.js +2 -1
  104. package/dist/InputGroup/groupStyles.d.ts +1 -1
  105. package/dist/InputGroup/groupStyles.d.ts.map +1 -1
  106. package/dist/InputGroup/groupStyles.js +1 -1
  107. package/dist/Item/Item.d.ts +20 -1
  108. package/dist/Item/Item.d.ts.map +1 -1
  109. package/dist/Item/Item.js +97 -29
  110. package/dist/Item/ItemListRowContext.d.ts +2 -0
  111. package/dist/Item/ItemListRowContext.d.ts.map +1 -0
  112. package/dist/Item/ItemListRowContext.js +16 -0
  113. package/dist/Layer/holdEntranceInput.d.ts +24 -0
  114. package/dist/Layer/holdEntranceInput.d.ts.map +1 -0
  115. package/dist/Layer/holdEntranceInput.js +65 -0
  116. package/dist/Layer/inputHold.d.ts +49 -0
  117. package/dist/Layer/inputHold.d.ts.map +1 -0
  118. package/dist/Layer/inputHold.js +636 -0
  119. package/dist/Layer/outsidePress.d.ts +4 -0
  120. package/dist/Layer/outsidePress.d.ts.map +1 -1
  121. package/dist/Layer/outsidePress.js +18 -1
  122. package/dist/Layer/preserveAnimations.d.ts +1 -5
  123. package/dist/Layer/preserveAnimations.d.ts.map +1 -1
  124. package/dist/Layer/preserveAnimations.js +12 -214
  125. package/dist/Layer/useBackdropPress.d.ts +8 -0
  126. package/dist/Layer/useBackdropPress.d.ts.map +1 -1
  127. package/dist/Layer/useBackdropPress.js +31 -2
  128. package/dist/Layer/useLayer.d.ts +3 -1
  129. package/dist/Layer/useLayer.d.ts.map +1 -1
  130. package/dist/Layer/useLayer.js +64 -4
  131. package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
  132. package/dist/Layer/useTouchTrigger.js +4 -0
  133. package/dist/Layout/LayoutContent.d.ts +3 -1
  134. package/dist/Layout/LayoutContent.d.ts.map +1 -1
  135. package/dist/Layout/LayoutContent.js +12 -4
  136. package/dist/Layout/LayoutPanel.d.ts +13 -10
  137. package/dist/Layout/LayoutPanel.d.ts.map +1 -1
  138. package/dist/Layout/LayoutPanel.js +81 -11
  139. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  140. package/dist/Lightbox/Lightbox.js +4 -0
  141. package/dist/List/List.d.ts.map +1 -1
  142. package/dist/List/List.js +1 -0
  143. package/dist/List/ListItem.d.ts +5 -4
  144. package/dist/List/ListItem.d.ts.map +1 -1
  145. package/dist/List/ListItem.js +45 -9
  146. package/dist/Markdown/parser.d.ts.map +1 -1
  147. package/dist/Markdown/parser.js +56 -39
  148. package/dist/MetadataList/MetadataList.js +1 -1
  149. package/dist/MobileNav/MobileNav.d.ts +11 -1
  150. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  151. package/dist/MobileNav/MobileNav.js +39 -1
  152. package/dist/MoreMenu/MoreMenu.d.ts +5 -3
  153. package/dist/MoreMenu/MoreMenu.d.ts.map +1 -1
  154. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  155. package/dist/MultiSelector/MultiSelector.js +6 -9
  156. package/dist/NumberInput/NumberInput.d.ts +4 -2
  157. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  158. package/dist/NumberInput/NumberInput.js +244 -11
  159. package/dist/OverflowList/OverflowList.d.ts.map +1 -1
  160. package/dist/OverflowList/OverflowList.js +7 -2
  161. package/dist/Popover/usePopover.d.ts +1 -0
  162. package/dist/Popover/usePopover.d.ts.map +1 -1
  163. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  164. package/dist/PowerSearch/PowerSearch.js +12 -5
  165. package/dist/PowerSearch/PowerSearchBottomSheet.d.ts.map +1 -1
  166. package/dist/PowerSearch/PowerSearchBottomSheet.js +4 -2
  167. package/dist/PowerSearch/PowerSearchToken.d.ts.map +1 -1
  168. package/dist/PowerSearch/PowerSearchToken.js +3 -1
  169. package/dist/PowerSearch/formatFilterValue.d.ts +9 -3
  170. package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
  171. package/dist/PowerSearch/formatFilterValue.js +14 -11
  172. package/dist/PowerSearch/formatTokenValue.d.ts +6 -2
  173. package/dist/PowerSearch/formatTokenValue.d.ts.map +1 -1
  174. package/dist/PowerSearch/formatTokenValue.js +6 -3
  175. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  176. package/dist/RadioList/RadioListItem.js +16 -3
  177. package/dist/Resizable/ResizeHandle.d.ts +5 -5
  178. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  179. package/dist/Resizable/ResizeHandle.js +44 -5
  180. package/dist/Resizable/resizablePane.d.ts +58 -0
  181. package/dist/Resizable/resizablePane.d.ts.map +1 -0
  182. package/dist/Resizable/resizablePane.js +137 -0
  183. package/dist/Resizable/useResizable.d.ts +7 -0
  184. package/dist/Resizable/useResizable.d.ts.map +1 -1
  185. package/dist/Resizable/useResizable.js +13 -0
  186. package/dist/SegmentedControl/useSegmentedSelectionMotion.js +3 -3
  187. package/dist/SelectableCard/SelectableCard.d.ts +1 -1
  188. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  189. package/dist/SelectableCard/SelectableCard.js +5 -1
  190. package/dist/Selector/Selector.d.ts.map +1 -1
  191. package/dist/Selector/Selector.js +51 -10
  192. package/dist/SideNav/SideNav.d.ts +9 -3
  193. package/dist/SideNav/SideNav.d.ts.map +1 -1
  194. package/dist/SideNav/SideNav.js +45 -10
  195. package/dist/Slider/sliderTouchController.js +2 -2
  196. package/dist/Spinner/Spinner.d.ts.map +1 -1
  197. package/dist/Spinner/Spinner.js +14 -71
  198. package/dist/Spinner/index.d.ts +1 -1
  199. package/dist/Spinner/index.d.ts.map +1 -1
  200. package/dist/Spinner/spinnerRotor.d.ts +28 -0
  201. package/dist/Spinner/spinnerRotor.d.ts.map +1 -0
  202. package/dist/Spinner/spinnerRotor.js +98 -0
  203. package/dist/Stack/StackItem.d.ts +8 -4
  204. package/dist/Stack/StackItem.d.ts.map +1 -1
  205. package/dist/Stack/StackItem.js +17 -4
  206. package/dist/Switch/Switch.d.ts.map +1 -1
  207. package/dist/Switch/Switch.js +13 -10
  208. package/dist/Switch/useSwitchTouch.js +4 -4
  209. package/dist/TabList/Tab.d.ts.map +1 -1
  210. package/dist/TabList/Tab.js +5 -1
  211. package/dist/Table/plugins/sortable/useTableSortable.js +1 -1
  212. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  213. package/dist/Timestamp/Timestamp.js +14 -8
  214. package/dist/Timestamp/formatInstant.d.ts +10 -1
  215. package/dist/Timestamp/formatInstant.d.ts.map +1 -1
  216. package/dist/Timestamp/formatInstant.js +13 -27
  217. package/dist/Timestamp/tooltipEntries.d.ts +5 -3
  218. package/dist/Timestamp/tooltipEntries.d.ts.map +1 -1
  219. package/dist/Timestamp/tooltipEntries.js +6 -4
  220. package/dist/Token/Token.d.ts.map +1 -1
  221. package/dist/Token/Token.js +9 -0
  222. package/dist/Token/TokenLink.d.ts +1 -1
  223. package/dist/Token/TokenLink.d.ts.map +1 -1
  224. package/dist/Token/TokenLink.js +4 -1
  225. package/dist/Tokenizer/Tokenizer.d.ts +14 -10
  226. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  227. package/dist/Tokenizer/Tokenizer.js +189 -89
  228. package/dist/Tooltip/useTooltip.d.ts +3 -1
  229. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  230. package/dist/Tooltip/useTooltip.js +164 -59
  231. package/dist/TreeList/TreeListItem.d.ts +2 -1
  232. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  233. package/dist/TreeList/TreeListItem.js +27 -3
  234. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  235. package/dist/Typeahead/BaseTypeahead.js +2 -1
  236. package/dist/animator/createAnimator.js +2 -2
  237. package/dist/astryx.css +362 -325
  238. package/dist/gestures/GestureHost.d.ts +2 -2
  239. package/dist/gestures/GestureHost.d.ts.map +1 -1
  240. package/dist/gestures/GestureHost.js +21 -6
  241. package/dist/gestures/PanGestureRecognizer.d.ts +11 -1
  242. package/dist/gestures/PanGestureRecognizer.d.ts.map +1 -1
  243. package/dist/gestures/PanGestureRecognizer.js +15 -1
  244. package/dist/gestures/ScreenEdgePanGestureRecognizer.d.ts +6 -1
  245. package/dist/gestures/ScreenEdgePanGestureRecognizer.d.ts.map +1 -1
  246. package/dist/gestures/nativeScroll.d.ts +3 -6
  247. package/dist/gestures/nativeScroll.d.ts.map +1 -1
  248. package/dist/gestures/nativeScroll.js +7 -52
  249. package/dist/gestures/wheelSegmenter.d.ts +68 -1
  250. package/dist/gestures/wheelSegmenter.d.ts.map +1 -1
  251. package/dist/gestures/wheelSegmenter.js +199 -10
  252. package/dist/hooks/StackItemScrollRegion.d.ts +31 -0
  253. package/dist/hooks/StackItemScrollRegion.d.ts.map +1 -0
  254. package/dist/hooks/StackItemScrollRegion.js +40 -0
  255. package/dist/hooks/computeOverflow.d.ts +2 -0
  256. package/dist/hooks/computeOverflow.d.ts.map +1 -1
  257. package/dist/hooks/computeOverflow.js +1 -1
  258. package/dist/hooks/menuPressGesture.d.ts +133 -21
  259. package/dist/hooks/menuPressGesture.d.ts.map +1 -1
  260. package/dist/hooks/menuPressGesture.js +155 -30
  261. package/dist/hooks/menuPressValues.d.ts +16 -0
  262. package/dist/hooks/menuPressValues.d.ts.map +1 -0
  263. package/dist/hooks/menuPressValues.js +18 -0
  264. package/dist/hooks/useClickableContainer.d.ts +36 -7
  265. package/dist/hooks/useClickableContainer.d.ts.map +1 -1
  266. package/dist/hooks/useClickableContainer.js +63 -14
  267. package/dist/hooks/useFocusTrap.d.ts +10 -0
  268. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  269. package/dist/hooks/useFocusTrap.js +225 -132
  270. package/dist/hooks/useKeyboardHighlight.d.ts +17 -0
  271. package/dist/hooks/useKeyboardHighlight.d.ts.map +1 -0
  272. package/dist/hooks/useKeyboardHighlight.js +38 -0
  273. package/dist/hooks/useMediaQuery.d.ts +2 -1
  274. package/dist/hooks/useMediaQuery.d.ts.map +1 -1
  275. package/dist/hooks/useMediaQuery.js +37 -12
  276. package/dist/hooks/useMenuPress.d.ts +34 -1
  277. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  278. package/dist/hooks/useMenuPress.js +93 -5
  279. package/dist/hooks/useOverflow.d.ts +10 -0
  280. package/dist/hooks/useOverflow.d.ts.map +1 -1
  281. package/dist/hooks/useOverflow.js +214 -23
  282. package/dist/hooks/usePressFeedback.d.ts +6 -6
  283. package/dist/hooks/usePressFeedback.js +6 -6
  284. package/dist/hooks/useScrollRegionProps.d.ts +35 -0
  285. package/dist/hooks/useScrollRegionProps.d.ts.map +1 -0
  286. package/dist/hooks/useScrollRegionProps.js +51 -0
  287. package/dist/i18n/InternationalizationContext.d.ts +6 -0
  288. package/dist/i18n/InternationalizationContext.d.ts.map +1 -1
  289. package/dist/i18n/InternationalizationProvider.d.ts +23 -3
  290. package/dist/i18n/InternationalizationProvider.d.ts.map +1 -1
  291. package/dist/i18n/InternationalizationProvider.js +8 -3
  292. package/dist/i18n/generated-english/DateInput/DateInput.generated.d.ts.map +1 -1
  293. package/dist/i18n/generated-english/DateInput/DateInput.generated.js +0 -1
  294. package/dist/i18n/generated-english/DateInput/useTypedDate.generated.d.ts +8 -0
  295. package/dist/i18n/generated-english/DateInput/useTypedDate.generated.d.ts.map +1 -0
  296. package/dist/i18n/generated-english/DateInput/useTypedDate.generated.js +16 -0
  297. package/dist/i18n/generated-english/DateTimeInput/DateTimeInput.generated.d.ts.map +1 -1
  298. package/dist/i18n/generated-english/DateTimeInput/DateTimeInput.generated.js +0 -1
  299. package/dist/i18n/generated-english/hooks/useScrollRegionProps.generated.d.ts +8 -0
  300. package/dist/i18n/generated-english/hooks/useScrollRegionProps.generated.d.ts.map +1 -0
  301. package/dist/i18n/generated-english/hooks/useScrollRegionProps.generated.js +12 -0
  302. package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
  303. package/dist/i18n/generated-locales/en.generated.js +5 -0
  304. package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
  305. package/dist/i18n/generated-locales/pseudo.generated.js +5 -0
  306. package/dist/i18n/index.d.ts +2 -0
  307. package/dist/i18n/index.d.ts.map +1 -1
  308. package/dist/i18n/index.js +1 -0
  309. package/dist/i18n/useCalendarSystem.d.ts +19 -0
  310. package/dist/i18n/useCalendarSystem.d.ts.map +1 -0
  311. package/dist/i18n/useCalendarSystem.js +61 -0
  312. package/dist/internal/calendar-system.d.ts +18 -0
  313. package/dist/internal/calendar-system.d.ts.map +1 -0
  314. package/dist/internal/calendar-system.js +19 -0
  315. package/dist/internal/spinner-rotor.d.ts +16 -0
  316. package/dist/internal/spinner-rotor.d.ts.map +1 -0
  317. package/dist/internal/spinner-rotor.js +16 -0
  318. package/dist/internal/touch.d.ts +20 -2
  319. package/dist/internal/touch.d.ts.map +1 -1
  320. package/dist/internal/touch.js +29 -3
  321. package/dist/motion/animator.d.ts +5 -5
  322. package/dist/motion/animator.d.ts.map +1 -1
  323. package/dist/motion/animator.js +7 -6
  324. package/dist/motion/carryAnimations.d.ts +58 -0
  325. package/dist/motion/carryAnimations.d.ts.map +1 -0
  326. package/dist/motion/carryAnimations.js +305 -0
  327. package/dist/motion/transientCopy.d.ts +4 -2
  328. package/dist/motion/transientCopy.d.ts.map +1 -1
  329. package/dist/motion/transientCopy.js +34 -5
  330. package/dist/motion/uikit/gestures.d.ts +41 -0
  331. package/dist/motion/uikit/gestures.d.ts.map +1 -1
  332. package/dist/motion/uikit/gestures.js +25 -0
  333. package/dist/motion/uikit/index.d.ts +1 -1
  334. package/dist/motion/uikit/index.d.ts.map +1 -1
  335. package/dist/motion/uikit/index.js +1 -1
  336. package/dist/motion/uikit/timing.d.ts +14 -10
  337. package/dist/motion/uikit/timing.d.ts.map +1 -1
  338. package/dist/motion/uikit/timing.js +7 -5
  339. package/dist/privateAttributes/menuPressLit.stylex.d.ts +52 -0
  340. package/dist/privateAttributes/menuPressLit.stylex.d.ts.map +1 -0
  341. package/dist/privateAttributes/menuPressLit.stylex.js +99 -0
  342. package/dist/privateAttributes/press.stylex.d.ts +142 -0
  343. package/dist/privateAttributes/press.stylex.d.ts.map +1 -0
  344. package/dist/privateAttributes/press.stylex.js +101 -0
  345. package/dist/theme/themeMotion.d.ts +3 -2
  346. package/dist/theme/themeMotion.d.ts.map +1 -1
  347. package/dist/theme/themeMotion.js +3 -2
  348. package/dist/theme/tokens.stylex.d.ts +2 -2
  349. package/dist/theme/tokens.stylex.js +1 -1
  350. package/dist/utils/calendarDateParser.d.ts +110 -0
  351. package/dist/utils/calendarDateParser.d.ts.map +1 -0
  352. package/dist/utils/calendarDateParser.js +1225 -0
  353. package/dist/utils/calendarSystem.d.ts +176 -0
  354. package/dist/utils/calendarSystem.d.ts.map +1 -0
  355. package/dist/utils/calendarSystem.js +569 -0
  356. package/dist/utils/coarsePointer.d.ts +5 -0
  357. package/dist/utils/coarsePointer.d.ts.map +1 -1
  358. package/dist/utils/coarsePointer.js +22 -13
  359. package/dist/utils/flatTree.d.ts +6 -3
  360. package/dist/utils/flatTree.d.ts.map +1 -1
  361. package/dist/utils/flatTree.js +13 -3
  362. package/dist/utils/focusReturn.d.ts +34 -13
  363. package/dist/utils/focusReturn.d.ts.map +1 -1
  364. package/dist/utils/focusReturn.js +64 -17
  365. package/dist/utils/hitArea.d.ts +8 -1
  366. package/dist/utils/hitArea.d.ts.map +1 -1
  367. package/dist/utils/hitArea.js +99 -9
  368. package/dist/utils/inputPresentation.d.ts +9 -1
  369. package/dist/utils/inputPresentation.d.ts.map +1 -1
  370. package/dist/utils/inputPresentation.js +15 -1
  371. package/dist/utils/inputStream.d.ts +14 -1
  372. package/dist/utils/inputStream.d.ts.map +1 -1
  373. package/dist/utils/inputStream.js +40 -9
  374. package/dist/utils/interactionOverlay.stylex.d.ts +5 -9
  375. package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
  376. package/dist/utils/interactionOverlay.stylex.js +29 -31
  377. package/dist/utils/plainDate.d.ts +38 -7
  378. package/dist/utils/plainDate.d.ts.map +1 -1
  379. package/dist/utils/plainDate.js +92 -18
  380. package/dist/utils/pressFeedback.d.ts +10 -2
  381. package/dist/utils/pressFeedback.d.ts.map +1 -1
  382. package/dist/utils/pressFeedback.js +40 -15
  383. package/dist/utils/pressGesture.d.ts +12 -6
  384. package/dist/utils/pressGesture.d.ts.map +1 -1
  385. package/dist/utils/pressGesture.js +26 -8
  386. package/dist/utils/scrollView.d.ts +25 -0
  387. package/dist/utils/scrollView.d.ts.map +1 -0
  388. package/dist/utils/scrollView.js +108 -0
  389. package/dist/utils/selectionLock.d.ts.map +1 -1
  390. package/dist/utils/selectionLock.js +1 -10
  391. package/dist/utils/touchHitArea.d.ts +30 -0
  392. package/dist/utils/touchHitArea.d.ts.map +1 -0
  393. package/dist/utils/touchHitArea.js +167 -0
  394. package/dist/utils/touchHitArea.stylex.d.ts +38 -0
  395. package/dist/utils/touchHitArea.stylex.d.ts.map +1 -0
  396. package/dist/utils/touchHitArea.stylex.js +48 -0
  397. package/dist/utils/triggerFocus.d.ts +5 -0
  398. package/dist/utils/triggerFocus.d.ts.map +1 -1
  399. package/dist/utils/triggerFocus.js +9 -2
  400. package/locales/en.json +21 -1
  401. package/locales/pseudo.json +15 -0
  402. package/package.json +15 -4
  403. package/src/AppShell/observeMainOverflow.ts +9 -6
  404. package/src/BottomSheet/BottomSheet.tsx +45 -3
  405. package/src/BottomSheet/BottomSheetPanel.tsx +64 -7
  406. package/src/BottomSheet/bottomSheetStack.ts +4 -3
  407. package/src/BottomSheet/useSheetGestures.ts +83 -20
  408. package/src/Calendar/Calendar.doc.mjs +76 -6
  409. package/src/Calendar/Calendar.tsx +123 -104
  410. package/src/Calendar/getInitialFocusDate.ts +22 -8
  411. package/src/Calendar/hooks/useCalendarDays.ts +89 -63
  412. package/src/Calendar/hooks/useCalendarNavigation.ts +68 -26
  413. package/src/CheckboxInput/CheckboxInput.doc.mjs +5 -4
  414. package/src/CheckboxInput/CheckboxInput.tsx +105 -20
  415. package/src/CheckboxInput/CheckboxRowPressContext.ts +22 -0
  416. package/src/CheckboxList/CheckboxList.doc.mjs +9 -0
  417. package/src/CheckboxList/CheckboxListItem.doc.mjs +3 -3
  418. package/src/CheckboxList/CheckboxListItem.tsx +35 -14
  419. package/src/ClickableCard/ClickableCard.tsx +8 -1
  420. package/src/ContextMenu/ContextMenu.tsx +2 -0
  421. package/src/DateInput/DateInput.doc.mjs +45 -12
  422. package/src/DateInput/DateInput.tsx +165 -179
  423. package/src/DateInput/MonthScroller.tsx +39 -37
  424. package/src/DateInput/MonthYearWheels.tsx +68 -47
  425. package/src/DateInput/PickerWheel.tsx +7 -2
  426. package/src/DateInput/TouchDateField.tsx +45 -17
  427. package/src/DateInput/monthGeometry.ts +110 -8
  428. package/src/DateInput/useCalendarPresentation.ts +64 -0
  429. package/src/DateInput/useTypedDate.ts +469 -0
  430. package/src/DateInput/wheelStrip.ts +2 -2
  431. package/src/DateRangeInput/DateRangeInput.doc.mjs +9 -0
  432. package/src/DateRangeInput/DateRangeInput.tsx +43 -9
  433. package/src/DateTimeInput/DateTimeInput.doc.mjs +42 -9
  434. package/src/DateTimeInput/DateTimeInput.tsx +138 -148
  435. package/src/DateTimeInput/TouchDateTimeField.tsx +31 -16
  436. package/src/Dialog/Dialog.doc.mjs +1 -1
  437. package/src/Dialog/Dialog.tsx +14 -2
  438. package/src/Drawer/Drawer.doc.mjs +1 -1
  439. package/src/Drawer/useDrawerDialogPresence.ts +9 -2
  440. package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -2
  441. package/src/DropdownMenu/DropdownMenu.tsx +31 -7
  442. package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +5 -1
  443. package/src/DropdownMenu/DropdownMenuItem.tsx +8 -4
  444. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +5 -1
  445. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +5 -1
  446. package/src/FileInput/FileInput.tsx +16 -2
  447. package/src/HoverCard/useHoverCard.tsx +3 -1
  448. package/src/Icon/useIcon.doc.mjs +94 -0
  449. package/src/InfoTip/InfoTip.doc.mjs +26 -2
  450. package/src/InfoTip/InfoTip.tsx +6 -27
  451. package/src/InputGroup/InputGroup.doc.mjs +4 -3
  452. package/src/InputGroup/InputGroup.tsx +4 -3
  453. package/src/InputGroup/InputGroupText.doc.mjs +45 -3
  454. package/src/InputGroup/InputGroupText.tsx +2 -1
  455. package/src/InputGroup/groupStyles.ts +3 -1
  456. package/src/Item/Item.tsx +139 -35
  457. package/src/Item/ItemListRowContext.tsx +18 -0
  458. package/src/Layer/holdEntranceInput.ts +84 -0
  459. package/src/Layer/inputHold.ts +734 -0
  460. package/src/Layer/outsidePress.ts +18 -1
  461. package/src/Layer/preserveAnimations.ts +12 -275
  462. package/src/Layer/useBackdropPress.ts +41 -1
  463. package/src/Layer/useLayer.tsx +77 -4
  464. package/src/Layer/useTouchTrigger.ts +4 -0
  465. package/src/Layout/LayoutContent.doc.mjs +6 -3
  466. package/src/Layout/LayoutContent.tsx +10 -4
  467. package/src/Layout/LayoutPanel.doc.mjs +14 -11
  468. package/src/Layout/LayoutPanel.tsx +113 -16
  469. package/src/Lightbox/Lightbox.tsx +4 -0
  470. package/src/List/List.doc.mjs +10 -1
  471. package/src/List/List.tsx +5 -0
  472. package/src/List/ListItem.tsx +63 -8
  473. package/src/Markdown/parser.ts +65 -42
  474. package/src/MetadataList/MetadataList.tsx +1 -1
  475. package/src/MobileNav/MobileNav.doc.mjs +3 -3
  476. package/src/MobileNav/MobileNav.tsx +39 -1
  477. package/src/MoreMenu/MoreMenu.doc.mjs +2 -4
  478. package/src/MoreMenu/MoreMenu.tsx +5 -3
  479. package/src/MultiSelector/MultiSelector.tsx +7 -17
  480. package/src/NumberInput/NumberInput.doc.mjs +1 -1
  481. package/src/NumberInput/NumberInput.tsx +259 -11
  482. package/src/OverflowList/OverflowList.tsx +15 -9
  483. package/src/Popover/usePopover.tsx +1 -0
  484. package/src/PowerSearch/PowerSearch.doc.mjs +3 -3
  485. package/src/PowerSearch/PowerSearch.tsx +20 -3
  486. package/src/PowerSearch/PowerSearchBottomSheet.tsx +4 -1
  487. package/src/PowerSearch/PowerSearchToken.tsx +3 -0
  488. package/src/PowerSearch/formatFilterValue.ts +21 -11
  489. package/src/PowerSearch/formatTokenValue.ts +7 -1
  490. package/src/RadioList/RadioListItem.doc.mjs +3 -2
  491. package/src/RadioList/RadioListItem.tsx +16 -6
  492. package/src/Resizable/Resizable.doc.mjs +40 -12
  493. package/src/Resizable/ResizeHandle.tsx +68 -6
  494. package/src/Resizable/resizablePane.ts +179 -0
  495. package/src/Resizable/useResizable.ts +15 -0
  496. package/src/SegmentedControl/useSegmentedSelectionMotion.ts +3 -3
  497. package/src/SelectableCard/SelectableCard.tsx +8 -1
  498. package/src/Selector/Selector.tsx +83 -8
  499. package/src/SideNav/SideNav.doc.mjs +2 -2
  500. package/src/SideNav/SideNav.tsx +87 -12
  501. package/src/Slider/sliderTouchController.ts +2 -2
  502. package/src/Spinner/Spinner.tsx +7 -89
  503. package/src/Spinner/index.ts +1 -5
  504. package/src/Spinner/spinnerRotor.ts +113 -0
  505. package/src/Stack/Stack.doc.mjs +1 -1
  506. package/src/Stack/StackItem.tsx +27 -13
  507. package/src/Switch/Switch.tsx +7 -6
  508. package/src/Switch/useSwitchTouch.ts +4 -4
  509. package/src/TabList/Tab.tsx +5 -1
  510. package/src/Table/plugins/sortable/useTableSortable.tsx +1 -1
  511. package/src/Timestamp/Timestamp.doc.mjs +3 -3
  512. package/src/Timestamp/Timestamp.tsx +13 -8
  513. package/src/Timestamp/formatInstant.ts +49 -28
  514. package/src/Timestamp/tooltipEntries.ts +7 -3
  515. package/src/Token/Token.tsx +18 -1
  516. package/src/Token/TokenLink.tsx +7 -1
  517. package/src/Tokenizer/Tokenizer.doc.mjs +3 -3
  518. package/src/Tokenizer/Tokenizer.tsx +252 -115
  519. package/src/Tooltip/useTooltip.tsx +180 -80
  520. package/src/TreeList/TreeListItem.tsx +36 -2
  521. package/src/Typeahead/BaseTypeahead.tsx +2 -0
  522. package/src/animator/createAnimator.ts +3 -3
  523. package/src/gestures/GestureHost.ts +21 -5
  524. package/src/gestures/PanGestureRecognizer.ts +19 -2
  525. package/src/gestures/README.md +14 -5
  526. package/src/gestures/ScreenEdgePanGestureRecognizer.ts +6 -1
  527. package/src/gestures/nativeScroll.ts +12 -68
  528. package/src/gestures/wheelSegmenter.ts +243 -10
  529. package/src/hooks/StackItemScrollRegion.tsx +57 -0
  530. package/src/hooks/computeOverflow.ts +1 -1
  531. package/src/hooks/menuPressGesture.ts +244 -38
  532. package/src/hooks/menuPressValues.ts +18 -0
  533. package/src/hooks/useClickableContainer.doc.mjs +8 -2
  534. package/src/hooks/useClickableContainer.ts +93 -15
  535. package/src/hooks/useFocusTrap.ts +268 -151
  536. package/src/hooks/useKeyboardHighlight.ts +71 -0
  537. package/src/hooks/useMediaQuery.ts +41 -12
  538. package/src/hooks/useMenuPress.ts +118 -11
  539. package/src/hooks/useOverflow.ts +321 -75
  540. package/src/hooks/usePressFeedback.doc.mjs +3 -3
  541. package/src/hooks/usePressFeedback.ts +6 -6
  542. package/src/hooks/useScrollRegionProps.ts +76 -0
  543. package/src/i18n/InternationalizationContext.ts +6 -0
  544. package/src/i18n/InternationalizationProvider.doc.mjs +29 -1
  545. package/src/i18n/InternationalizationProvider.tsx +35 -3
  546. package/src/i18n/generated-english/DateInput/DateInput.generated.ts +0 -1
  547. package/src/i18n/generated-english/DateInput/useTypedDate.generated.ts +17 -0
  548. package/src/i18n/generated-english/DateTimeInput/DateTimeInput.generated.ts +0 -1
  549. package/src/i18n/generated-english/hooks/useScrollRegionProps.generated.ts +13 -0
  550. package/src/i18n/generated-locales/en.generated.ts +7 -0
  551. package/src/i18n/generated-locales/pseudo.generated.ts +7 -0
  552. package/src/i18n/index.ts +2 -0
  553. package/src/i18n/useCalendarSystem.ts +95 -0
  554. package/src/internal/calendar-system.ts +26 -0
  555. package/src/internal/spinner-rotor.ts +20 -0
  556. package/src/internal/touch.ts +43 -2
  557. package/src/motion/MEASUREMENTS.md +11 -0
  558. package/src/motion/README.md +3 -3
  559. package/src/motion/animator.ts +7 -7
  560. package/src/motion/carryAnimations.ts +389 -0
  561. package/src/motion/transientCopy.ts +45 -5
  562. package/src/motion/uikit/gestures.ts +22 -0
  563. package/src/motion/uikit/index.ts +1 -0
  564. package/src/motion/uikit/timing.ts +7 -5
  565. package/src/privateAttributes/menuPressLit.stylex.ts +104 -0
  566. package/src/privateAttributes/press.stylex.ts +261 -0
  567. package/src/theme/themeMotion.ts +3 -2
  568. package/src/theme/tokens.stylex.ts +1 -1
  569. package/src/utils/calendarDateParser.ts +1385 -0
  570. package/src/utils/calendarSystem.ts +832 -0
  571. package/src/utils/coarsePointer.ts +27 -14
  572. package/src/utils/flatTree.ts +15 -3
  573. package/src/utils/focusReturn.ts +78 -18
  574. package/src/utils/hitArea.ts +138 -9
  575. package/src/utils/inputPresentation.ts +21 -1
  576. package/src/utils/inputStream.ts +47 -10
  577. package/src/utils/interactionOverlay.stylex.ts +19 -22
  578. package/src/utils/plainDate.ts +130 -19
  579. package/src/utils/pressFeedback.ts +46 -14
  580. package/src/utils/pressGesture.ts +35 -9
  581. package/src/utils/scrollView.ts +135 -0
  582. package/src/utils/selectionLock.ts +5 -10
  583. package/src/utils/touchHitArea.stylex.ts +56 -0
  584. package/src/utils/touchHitArea.ts +177 -0
  585. package/src/utils/triggerFocus.ts +17 -4
@@ -86,6 +86,7 @@ import {
86
86
  import {resolveOperatorLabel} from './resolveOperatorLabel';
87
87
  import {themeProps} from '../utils/themeProps';
88
88
  import {useLocale} from '../i18n/useLocale';
89
+ import {useCalendarSystem} from '../i18n/useCalendarSystem';
89
90
  import type {Locale} from '../i18n/types';
90
91
  import type {SearchableItem} from '../Typeahead/types';
91
92
  import type {
@@ -242,6 +243,15 @@ const sheetTriggerStyles = stylex.create({
242
243
  },
243
244
  outline: 'none',
244
245
  },
246
+ // A placeholder longer than the trigger ends in an ellipsis inside it, as
247
+ // Selector's value does. It never runs under the result count or past the
248
+ // field's border.
249
+ placeholder: {
250
+ minWidth: 0,
251
+ overflow: 'hidden',
252
+ textOverflow: 'ellipsis',
253
+ whiteSpace: 'nowrap',
254
+ },
245
255
  // Once a token is present the empty trigger covers the token lane instead
246
256
  // of reserving 40px or wrapping onto an otherwise blank row.
247
257
  triggerWithTokens: {
@@ -590,6 +600,7 @@ export function PowerSearch({
590
600
  const searchSource = usePowerSearchSource(config, maxSearchResults);
591
601
  const t = useComponentTranslator();
592
602
  const locale = useLocale();
603
+ const calendar = useCalendarSystem(undefined, 'PowerSearch');
593
604
  const label = labelFromProps ?? t('@astryx.powersearch.label');
594
605
  const placeholder =
595
606
  placeholderFromProps ?? t('@astryx.powersearch.placeholder');
@@ -714,6 +725,7 @@ export function PowerSearch({
714
725
  10,
715
726
  ),
716
727
  locale,
728
+ calendar,
717
729
  undefined,
718
730
  undefined,
719
731
  timezoneID,
@@ -721,7 +733,7 @@ export function PowerSearch({
721
733
  : null;
722
734
  return {label, value, full: value != null ? `${label} ${value}` : label};
723
735
  },
724
- [config, maxTokenLength, t, locale, timezoneID],
736
+ [config, maxTokenLength, t, locale, timezoneID, calendar],
725
737
  );
726
738
  // The built-in token being edited. A token from a `components` override
727
739
  // names itself, so its editor keeps the plain popover.
@@ -872,6 +884,7 @@ export function PowerSearch({
872
884
  t,
873
885
  locale,
874
886
  timezoneID,
887
+ calendar,
875
888
  )
876
889
  : '';
877
890
 
@@ -890,7 +903,7 @@ export function PowerSearch({
890
903
  },
891
904
  };
892
905
  });
893
- }, [filters, config, maxTokenLength, timezoneID, t, locale]);
906
+ }, [filters, config, maxTokenLength, timezoneID, t, locale, calendar]);
894
907
 
895
908
  // Handle tokenizer onChange (field selected from typeahead)
896
909
  const handleTokenizerChange = useCallback(
@@ -1544,7 +1557,11 @@ export function PowerSearch({
1544
1557
  sheetTriggerStyles.trigger,
1545
1558
  filters.length > 0 && sheetTriggerStyles.triggerWithTokens,
1546
1559
  )}>
1547
- {filters.length === 0 ? placeholder : null}
1560
+ {filters.length === 0 ? (
1561
+ <span {...stylex.props(sheetTriggerStyles.placeholder)}>
1562
+ {placeholder}
1563
+ </span>
1564
+ ) : null}
1548
1565
  </button>
1549
1566
  </div>
1550
1567
  {(endContent || isRenderable(resultCountText)) && (
@@ -76,6 +76,7 @@ import {useAnnounce, type AnnounceFn} from '../hooks/useAnnounce';
76
76
  import type {TranslatorFn} from '../i18n';
77
77
  import {useListFormatter} from '../i18n/useListFormatter';
78
78
  import {useLocale} from '../i18n/useLocale';
79
+ import {useCalendarSystem} from '../i18n/useCalendarSystem';
79
80
  import {SheetConfirmation} from '../internal/SheetConfirmation';
80
81
  import {useDismissSearchOnTouchDrag} from '../internal/useDismissSearchOnTouchDrag';
81
82
  import {
@@ -968,6 +969,7 @@ export function PowerSearchBottomSheet({
968
969
  const {NestedEditor} = editors;
969
970
  const t = useComponentTranslator();
970
971
  const locale = useLocale();
972
+ const calendar = useCalendarSystem(undefined, 'PowerSearch');
971
973
  const formatList = useListFormatter();
972
974
  const isInteractive = !isDisabled && !isReadOnly;
973
975
 
@@ -1524,13 +1526,14 @@ export function PowerSearchBottomSheet({
1524
1526
  filter.value,
1525
1527
  Number.MAX_SAFE_INTEGER,
1526
1528
  locale,
1529
+ calendar,
1527
1530
  t,
1528
1531
  formatList,
1529
1532
  timezoneID,
1530
1533
  );
1531
1534
  return {label, value};
1532
1535
  },
1533
- [config, editors, formatList, locale, t, timezoneID],
1536
+ [calendar, config, editors, formatList, locale, t, timezoneID],
1534
1537
  );
1535
1538
  const describeFilter = useCallback(
1536
1539
  (filter: PowerSearchFilter): string => {
@@ -13,6 +13,7 @@ import React from 'react';
13
13
  import * as stylex from '@stylexjs/stylex';
14
14
  import {Token} from '../Token';
15
15
  import {useLocale} from '../i18n/useLocale';
16
+ import {useCalendarSystem} from '../i18n/useCalendarSystem';
16
17
  import {fontWeightVars} from '../theme/tokens.stylex';
17
18
  import {formatFilterValue} from './formatFilterValue';
18
19
  import {resolveOperatorLabel} from './resolveOperatorLabel';
@@ -47,6 +48,7 @@ export function PowerSearchToken({
47
48
  const config = useInternalConfig(configProp);
48
49
  const t = useComponentTranslator();
49
50
  const locale = useLocale();
51
+ const calendar = useCalendarSystem(undefined, 'PowerSearchToken');
50
52
 
51
53
  const fieldLabel = field.label;
52
54
  const resolvedOperatorLabel = resolveOperatorLabel(operator, t);
@@ -68,6 +70,7 @@ export function PowerSearchToken({
68
70
  t,
69
71
  locale,
70
72
  timezoneID,
73
+ calendar,
71
74
  );
72
75
 
73
76
  const valueContent = valueStr ? (
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @file formatFilterValue.ts
5
- * @input OperatorValue, FilterValue, config
5
+ * @input OperatorValue, FilterValue, config, locale, time zone, calendar
6
6
  * @output Formatted display string for a filter value
7
7
  * @position Pure utility; consumed by PowerSearch token rendering
8
8
  *
@@ -13,6 +13,10 @@
13
13
  import type {OperatorValue, FilterValue, EnumItem} from './types';
14
14
  import type {InternalConfig} from './useInternalConfig';
15
15
  import type {Locale, TranslatorFn} from '../i18n';
16
+ import {
17
+ formatCalendarInstant,
18
+ type CalendarSystem,
19
+ } from '../utils/calendarSystem';
16
20
  import {truncateCharacters} from '../utils/characters';
17
21
  import {registerEnglishFallback} from '../i18n/englishFallback';
18
22
  import english from '../i18n/generated-english/PowerSearch/formatFilterValue.generated';
@@ -67,25 +71,24 @@ export function formatDateAbsolute(
67
71
  locale: Locale,
68
72
  timezoneID: string | undefined,
69
73
  isDateOnly = true,
74
+ calendar: CalendarSystem = 'gregory',
70
75
  ): string {
71
76
  const options: Intl.DateTimeFormatOptions = isDateOnly
72
- ? {
73
- year: 'numeric',
74
- month: 'short',
75
- day: 'numeric',
76
- timeZone: resolveDateZone(timezoneID, true),
77
- calendar: 'gregory',
78
- }
77
+ ? {year: 'numeric', month: 'short', day: 'numeric'}
79
78
  : {
80
79
  year: 'numeric',
81
80
  month: 'short',
82
81
  day: 'numeric',
83
82
  hour: 'numeric',
84
83
  minute: '2-digit',
85
- timeZone: resolveDateZone(timezoneID, false),
86
- calendar: 'gregory',
87
84
  };
88
- return new Intl.DateTimeFormat(locale, options).format(unixSeconds * 1000);
85
+ return formatCalendarInstant(
86
+ calendar,
87
+ new Date(unixSeconds * 1000),
88
+ options,
89
+ locale,
90
+ resolveDateZone(timezoneID, isDateOnly),
91
+ );
89
92
  }
90
93
 
91
94
  function formatRelativeDate(value: string): string {
@@ -100,6 +103,11 @@ function formatDateRange(
100
103
  return t('@astryx.powersearch.valueEditor.dateRange');
101
104
  }
102
105
 
106
+ /**
107
+ * The display text of a filter value. A `date_absolute` value is written in
108
+ * `calendar`, which defaults to Gregorian; PowerSearch passes the calendar that
109
+ * its provider resolves.
110
+ */
103
111
  export function formatFilterValue(
104
112
  _config: InternalConfig,
105
113
  operatorValue: OperatorValue,
@@ -108,6 +116,7 @@ export function formatFilterValue(
108
116
  t: TranslatorFn,
109
117
  locale: Locale,
110
118
  timezoneID?: string,
119
+ calendar: CalendarSystem = 'gregory',
111
120
  ): string {
112
121
  switch (filterValue.type) {
113
122
  case 'empty':
@@ -210,6 +219,7 @@ export function formatFilterValue(
210
219
  timezoneID,
211
220
  operatorValue.type !== 'date_absolute' ||
212
221
  operatorValue.isDateOnly !== false,
222
+ calendar,
213
223
  ),
214
224
  maxLength,
215
225
  );
@@ -3,7 +3,8 @@
3
3
  /**
4
4
  * @fileoverview The text a PowerSearch filter token shows for a value.
5
5
  *
6
- * @input `OperatorValue`, `FilterValue`, a width budget, and the locale.
6
+ * @input `OperatorValue`, `FilterValue`, a width budget, the locale, and the
7
+ * calendar.
7
8
  * @output `formatTokenValueText` — one string, or null for an empty value.
8
9
  * @position Shared by the token itself (`PowerSearch.tsx`) and the sheet
9
10
  * presentation's Filters rows and removal announcement
@@ -13,6 +14,7 @@
13
14
 
14
15
  import type {OperatorValue, FilterValue, EnumItem} from './types';
15
16
  import type {Locale, TranslatorFn} from '../i18n';
17
+ import type {CalendarSystem} from '../utils/calendarSystem';
16
18
  import {truncateCharacters} from '../utils/characters';
17
19
  import {formatDateAbsolute, formatSharedNumber} from './formatFilterValue';
18
20
  import {registerEnglishFallback} from '../i18n/englishFallback';
@@ -103,6 +105,8 @@ function formatListText(
103
105
  * the sheet presentation's Filters rows and its removal announcement — can
104
106
  * use the same words and the same zone handling. `maxLength` is the token's
105
107
  * width budget; pass `Number.MAX_SAFE_INTEGER` for the untruncated text.
108
+ * A `date_absolute` value is written in `calendar`, the calendar that the
109
+ * provider resolves.
106
110
  * With `t`, the list, date-range and nested summaries resolve through the
107
111
  * catalog (`@astryx.powersearch.valueEditor.*`); without it they are the
108
112
  * token's own literals. With `formatList` (the provider's list formatter),
@@ -114,6 +118,7 @@ export function formatTokenValueText(
114
118
  filterValue: FilterValue,
115
119
  maxLength: number,
116
120
  locale: Locale,
121
+ calendar: CalendarSystem,
117
122
  t?: TranslatorFn,
118
123
  formatList?: ListFormatFn,
119
124
  timezoneID?: string,
@@ -182,6 +187,7 @@ export function formatTokenValueText(
182
187
  timezoneID,
183
188
  operatorValue.type !== 'date_absolute' ||
184
189
  operatorValue.isDateOnly !== false,
190
+ calendar,
185
191
  ),
186
192
  maxLength,
187
193
  );
@@ -8,7 +8,7 @@ export const docs = {
8
8
  displayName: 'Radio List Item',
9
9
  isHiddenFromOverview: true,
10
10
  description:
11
- 'Individual radio item with label, description, and content slots.',
11
+ 'Individual radio item with label, description, and content slots. Under a coarse pointer an enabled option’s target grows toward 44 px through an invisible hit area. It never shrinks below the row and stops at half the gap to a closer neighbour; the row keeps its size. That hit area is the row’s `::after`, so decorate a row with a child.',
12
12
  // RadioListItem requires RadioList context; wrap it so the preview doesn't throw.
13
13
  playground: {
14
14
  defaults: {value: 'option-1', label: 'Option'},
@@ -97,7 +97,8 @@ export const docsZh = {
97
97
  name: 'RadioListItem',
98
98
  isHiddenFromOverview: true,
99
99
  displayName: 'Radio List Item',
100
- description: '单个单选选项,包含标签、描述和内容插槽。',
100
+ description:
101
+ '单个单选选项,包含标签、描述和内容插槽。在粗指针(触摸)下,已启用选项的目标通过不可见的点击区域向 44 px 扩展。它不小于所在行,与相邻控件较近时止于间距的一半;行尺寸不变。该点击区域是行的 `::after`,因此请用子元素装饰行。',
101
102
  props: [
102
103
  {
103
104
  name: 'label',
@@ -32,9 +32,13 @@ import {rtlStyles} from '../utils/rtlStyles';
32
32
  import {indicatorScope} from '../Indicator/indicator.markers.stylex';
33
33
  import {useIndicatorFocusRing} from '../hooks/useIndicatorFocusRing';
34
34
  import {usePressFeedback} from '../hooks/usePressFeedback';
35
+ import {useMergedRefs} from '../hooks/useMergedRefs';
36
+ import {useTouchHitArea} from '../utils/touchHitArea';
37
+ import {touchHitAreaStyles} from '../utils/touchHitArea.stylex';
35
38
  import {useIndicator} from '../Indicator/useIndicator';
36
39
  import {Item, type ItemAlign} from '../Item/Item';
37
40
  import {themeProps} from '../utils/themeProps';
41
+ import {rowPressLayerStyles} from '../privateAttributes/press.stylex';
38
42
 
39
43
  // The touch press's paint, declared by the shared overlay styles on the
40
44
  // element the controller writes to (`pressedAlpha`) at the press's strength,
@@ -147,11 +151,6 @@ const rowStyles = stylex.create({
147
151
  // Suppress Item's interactive hover/press background so the resting and
148
152
  // hovered row look identical by default (a theme can restyle either).
149
153
  backgroundColor: 'transparent',
150
- // ...and the touch press's overlay image, for the same reason: under a
151
- // finger only the radio circle paints, as under a mouse. The press's
152
- // strength still lands on the row, which is where the layer over the
153
- // circle reads it.
154
- backgroundImage: 'none',
155
154
  },
156
155
  // The mouse press (a finger's lives on `data-astryx-press`): the row is
157
156
  // pressed, but not through a nested link or button, which keep their own
@@ -309,6 +308,13 @@ export function RadioListItem({
309
308
  // `<label htmlFor>` would double-fire under delegation.
310
309
  const radioRef = useRef<HTMLInputElement>(null);
311
310
 
311
+ // Under a coarse pointer an option's row grows toward 44 px through an
312
+ // invisible band, and the row keeps its size. A tap on the band lands on
313
+ // the row, which hands it to the radio. The band's insets stay live while
314
+ // the row takes taps, and clear when it stops.
315
+ const watchRowHitArea = useTouchHitArea(!isDisabled);
316
+ const mergedRowRef = useMergedRefs(ref, watchRowHitArea);
317
+
312
318
  const radioCircle = (
313
319
  <div
314
320
  {...stylex.props(
@@ -391,7 +397,7 @@ export function RadioListItem({
391
397
 
392
398
  return (
393
399
  <Item
394
- ref={ref}
400
+ ref={mergedRowRef}
395
401
  {...(isDisabled ? undefined : pressable)}
396
402
  startContent={mediaContent}
397
403
  // Delegate row-surface clicks (label text, description, and the empty
@@ -414,12 +420,16 @@ export function RadioListItem({
414
420
  // the painting row element (Item), the same element that carries the
415
421
  // theme target, so a theme's hover styling stays in step with the tint.
416
422
  !isDisabled && indicatorScope,
423
+ // The row keeps no press paint of its own: the circle paints, and
424
+ // reads the strength whose release the row keeps.
425
+ rowPressLayerStyles.cellWithoutLayer,
417
426
  // Restore the bare default look: zero Item's padding/radius and its
418
427
  // interactive hover/press background. Applied after Item's own base
419
428
  // styles so it wins within the base layer; a `radio-list-item` theme
420
429
  // still overrides it from the higher `astryx-theme` layer.
421
430
  rowStyles.root,
422
431
  !isDisabled && rowStyles.press,
432
+ !isDisabled && touchHitAreaStyles.layer,
423
433
  xstyle,
424
434
  ] as StyleXStyles
425
435
  }
@@ -45,7 +45,7 @@ export const docs = {
45
45
  description:
46
46
  'Hook-based resizable panel system. useResizable() manages size state ' +
47
47
  'and ResizeHandle provides the interactive pill-grip separator. ' +
48
- 'Pass resize props to existing layout components via their resizable prop.',
48
+ "Pass the hook's output to existing layout components via their resizable prop.",
49
49
  bestPractices: [
50
50
  {
51
51
  guidance: true,
@@ -56,7 +56,7 @@ export const docs = {
56
56
  guidance: true,
57
57
  description:
58
58
  'Use useResizable() with existing Astryx layout components. ' +
59
- 'Pass the returned props to the resizable prop on LayoutPanel or SideNav.',
59
+ 'Pass its output to the resizable prop on LayoutPanel, ResizeHandle or SideNav; any other element can use its size.',
60
60
  },
61
61
  {
62
62
  guidance: true,
@@ -88,7 +88,7 @@ export const docs = {
88
88
  examples: [
89
89
  {
90
90
  label: 'Structured fixed pixels',
91
- code: `const region = useResizable({
91
+ code: `const resizable = useResizable({
92
92
  defaultSize: pixel(333),
93
93
  containerRef,
94
94
  });`,
@@ -101,16 +101,44 @@ import {percent, pixel} from '@astryxdesign/core/Resizable/utils';
101
101
 
102
102
  const containerRef = useRef<HTMLDivElement>(null);
103
103
 
104
- const region = useResizable({
104
+ const resizable = useResizable({
105
105
  defaultSize: percent(40, {min: pixel(333)}),
106
106
  containerRef,
107
107
  });
108
108
 
109
- <ResizeHandle direction="horizontal" resizable={region.props} />;`,
109
+ <ResizeHandle direction="horizontal" resizable={resizable} />;`,
110
+ },
111
+ {
112
+ label: 'Any element, sized by the hook',
113
+ code: `'use client';
114
+
115
+ import * as stylex from '@stylexjs/stylex';
116
+ import {Card} from '@astryxdesign/core/Card';
117
+ import {ResizeHandle, useResizable} from '@astryxdesign/core/Resizable';
118
+ import {Stack} from '@astryxdesign/core/Stack';
119
+ import {Text} from '@astryxdesign/core/Text';
120
+
121
+ const styles = stylex.create({
122
+ // The hook's size as a dynamic style; the card keeps it in the row.
123
+ preview: (width: number) => ({width, flexShrink: 0}),
124
+ });
125
+
126
+ export default function InvoicePreviewSplit() {
127
+ const resizable = useResizable({defaultSize: 320, minSize: 240, maxSize: 480});
128
+ return (
129
+ <Stack direction="horizontal">
130
+ <Card xstyle={styles.preview(resizable.size)}>
131
+ <Text>Invoice INV-2041, $1,280.00, due Nov 18</Text>
132
+ </Card>
133
+ <ResizeHandle resizable={resizable} label="Resize invoice preview" />
134
+ <Text>Line items, payments and notes for the selected invoice.</Text>
135
+ </Stack>
136
+ );
137
+ }`,
110
138
  },
111
139
  {
112
140
  label: 'Live percentage floor',
113
- code: `const region = useResizable({
141
+ code: `const resizable = useResizable({
114
142
  defaultSize: 0,
115
143
  minSize: percent(40, {min: pixel(333)}),
116
144
  containerRef,
@@ -118,7 +146,7 @@ const region = useResizable({
118
146
  },
119
147
  {
120
148
  label: 'Live percentage ceiling',
121
- code: `const region = useResizable({
149
+ code: `const resizable = useResizable({
122
150
  defaultSize: 500,
123
151
  maxSize: percent(10, {max: pixel(400)}),
124
152
  containerRef,
@@ -236,9 +264,9 @@ const region = useResizable({
236
264
  },
237
265
  {
238
266
  name: 'resizable',
239
- type: 'ResizableProps',
267
+ type: 'ResizableRegion | ResizableProps',
240
268
  description:
241
- "Resize props from useResizable: connects handle to panel. Carries the region's axis ('horizontal' | 'vertical'), which must match this handle's direction.",
269
+ "The output of useResizable, or its props: connects handle to panel. Carries the region's axis ('horizontal' | 'vertical'), which must match this handle's direction.",
242
270
  required: true,
243
271
  },
244
272
  {
@@ -265,12 +293,12 @@ export const docsDense = {
265
293
  usage: {
266
294
  anatomy,
267
295
  description:
268
- 'Hook-based resizable panel system. useResizable() manages size state; ResizeHandle provides interactive pill-grip separator. Pass resize props to existing layout components via their resizable prop.',
296
+ 'Hook-based resizable panel system. useResizable() manages size state; ResizeHandle provides interactive pill-grip separator. Pass the hook output to existing layout components via their resizable prop.',
269
297
  bestPractices: [
270
298
  {
271
299
  guidance: true,
272
300
  description:
273
- 'Use useResizable() w/ existing Astryx layout components. Pass returned props to resizable prop on LayoutPanel or SideNav.',
301
+ 'Use useResizable() w/ existing Astryx layout components. Pass its output to resizable prop on LayoutPanel, ResizeHandle or SideNav.',
274
302
  },
275
303
  {
276
304
  guidance: true,
@@ -320,7 +348,7 @@ export const docsDense = {
320
348
  pillPlacement:
321
349
  'which side of divider pill sits on. auto = content side (derived from isReversed), flips when collapsed; start = left/top, end = right/bottom, center = centered on divider. Moves only the pill (still draggable); grab zone stays on the divider',
322
350
  label: 'accessible label for separator',
323
- resizable: 'resize props from useResizable: connects handle to panel',
351
+ resizable: 'useResizable output or its props: connects handle to panel',
324
352
  },
325
353
  },
326
354
  ],
@@ -12,7 +12,7 @@
12
12
  * embedded frame still arrive.
13
13
  */
14
14
 
15
- import {useEffect, useRef, useState} from 'react';
15
+ import {useCallback, useEffect, useReducer, useRef, useState} from 'react';
16
16
  import type {HTMLAttributes, ReactNode} from 'react';
17
17
  import * as stylex from '@stylexjs/stylex';
18
18
  import type {BaseProps} from '../BaseProps';
@@ -28,18 +28,29 @@ import {mergeProps, rtlStyles} from '../utils';
28
28
  import {
29
29
  getCollapseControls,
30
30
  getEffectiveMaxPx,
31
+ resizablePropsOf,
31
32
  type ResizableProps,
33
+ type ResizableRegion,
32
34
  } from './useResizable';
33
35
  import {
34
36
  createResizeGesture,
35
37
  type ResizeGesture,
36
38
  type ResizeGestureModel,
37
39
  } from './resizeGesture';
40
+ import {
41
+ handOverPane,
42
+ registerResizeHandle,
43
+ resizablePaneFor,
44
+ watchResizablePanes,
45
+ type ResizablePane,
46
+ } from './resizablePane';
38
47
  import {separatorAttributes} from './separatorAttributes';
39
48
  import {themeProps} from '../utils/themeProps';
40
49
 
41
50
  import {useDevWarning} from '../hooks/useDevWarning';
51
+ import {useIsomorphicLayoutEffect} from '../hooks/useIsomorphicLayoutEffect';
42
52
  import {useMergedRefs} from '../hooks/useMergedRefs';
53
+ import {useInteractionModalityTracking} from '../utils/interactionModality';
43
54
  import {
44
55
  registerEnglishFallback,
45
56
  useComponentTranslator,
@@ -369,8 +380,8 @@ export interface ResizeHandleProps extends Omit<
369
380
  */
370
381
  label?: string;
371
382
 
372
- /** Resize props from useResizable region. */
373
- resizable?: ResizableProps;
383
+ /** The output of `useResizable()`, or its `props`. */
384
+ resizable?: ResizableRegion | ResizableProps;
374
385
 
375
386
  /** Custom handle content. Overrides the default pill. */
376
387
  children?: ReactNode;
@@ -386,7 +397,7 @@ export interface ResizeHandleProps extends Omit<
386
397
  * @example
387
398
  * ```
388
399
  * <ResizeHandle
389
- * resizable={sidebar.props}
400
+ * resizable={resizable}
390
401
  * direction="horizontal"
391
402
  * hasDivider />
392
403
  * ```
@@ -401,13 +412,15 @@ export function ResizeHandle({
401
412
  isAlwaysVisible = true,
402
413
  pillPlacement = 'auto',
403
414
  label: labelFromProps,
404
- resizable,
415
+ resizable: resizableValue,
405
416
  children,
406
417
  xstyle,
407
418
  className,
408
419
  ref,
409
420
  ...props
410
421
  }: ResizeHandleProps) {
422
+ const resizable =
423
+ resizableValue == null ? undefined : resizablePropsOf(resizableValue);
411
424
  const t = useComponentTranslator();
412
425
  const label = labelFromProps ?? t('@astryx.resizable.handle.label');
413
426
  const handleRef = useRef<HTMLDivElement>(null);
@@ -529,6 +542,55 @@ export function ResizeHandle({
529
542
  };
530
543
  }, [hasRegion, regionGesture]);
531
544
 
545
+ // --- The LayoutPanel beside a handle given `resizable` props ---
546
+
547
+ // A collapsing panel moves focus here, and the ring follows the last input.
548
+ const {ref: modalityRef} = useInteractionModalityTracking();
549
+ // A LayoutPanel at the region's size, with no `resizable` prop, has no
550
+ // controller to find it. This handle holds it collapsed with the region, so
551
+ // focus inside it moves here and it goes inert. A panel lent later is found
552
+ // at once.
553
+ const [, rerender] = useReducer((count: number) => count + 1, 0);
554
+ const heldPaneRef = useRef<ResizablePane | null>(null);
555
+ // The element goes in the handle registry, for a collapsing panel beside it
556
+ // to hand focus to. When the element goes, a held panel opens.
557
+ const registryRef = useCallback((element: HTMLDivElement | null) => {
558
+ if (element == null) {
559
+ return;
560
+ }
561
+ const unregister = registerResizeHandle(element);
562
+ return () => {
563
+ unregister();
564
+ heldPaneRef.current = handOverPane(
565
+ heldPaneRef.current,
566
+ null,
567
+ false,
568
+ null,
569
+ );
570
+ };
571
+ }, []);
572
+ const isRegionCollapsed = resizable?._isCollapsed ?? false;
573
+ // Syncs with the lent-panel registry. A panel lent or taken back re-renders
574
+ // this handle, so it looks for its pane again.
575
+ useEffect(
576
+ () => (hasRegion ? watchResizablePanes(rerender) : undefined),
577
+ [hasRegion],
578
+ );
579
+ // Syncs the held panel with the region's collapse state after each commit.
580
+ useIsomorphicLayoutEffect(() => {
581
+ const element = handleRef.current;
582
+ const pane =
583
+ hasRegion && element != null
584
+ ? resizablePaneFor(element, isReversed)
585
+ : null;
586
+ heldPaneRef.current = handOverPane(
587
+ heldPaneRef.current,
588
+ pane,
589
+ isRegionCollapsed,
590
+ element,
591
+ );
592
+ });
593
+
532
594
  // --- ARIA ---
533
595
  const sizeNow = resizable?._size;
534
596
  const minNow = resizable?._minSizePx;
@@ -587,7 +649,7 @@ export function ResizeHandle({
587
649
 
588
650
  return (
589
651
  <div
590
- ref={useMergedRefs(ref, handleRef)}
652
+ ref={useMergedRefs(ref, handleRef, registryRef, modalityRef)}
591
653
  role="separator"
592
654
  {...aria}
593
655
  aria-label={label}