@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
@@ -1,6 +1,7 @@
1
1
  import * as stylex from '@stylexjs/stylex';
2
2
  import { type InputStatus } from '../Field/index.js';
3
3
  import { type ISODateString, type DayOfWeek, type DayOfWeekName } from '../Calendar/index.js';
4
+ import type { CalendarSystem } from '../utils/calendarSystem.js';
4
5
  import type { TimestampFormat } from '../Timestamp/index.js';
5
6
  import { type PickerPresentation } from '../utils/inputPresentation.js';
6
7
  declare const sizeStyles: Readonly<{
@@ -136,7 +137,8 @@ export interface DateInputProps extends Omit<FieldInputBaseProps<HTMLInputElemen
136
137
  */
137
138
  dateConstraints?: ReadonlyArray<(date: Date) => boolean>;
138
139
  /**
139
- * Placeholder text shown when no date is selected.
140
+ * Placeholder text shown when no date is selected. A caller placeholder
141
+ * replaces the calendar format hint.
140
142
  * @default "Select a date"
141
143
  */
142
144
  placeholder?: string;
@@ -202,9 +204,10 @@ export interface DateInputProps extends Omit<FieldInputBaseProps<HTMLInputElemen
202
204
  * - `(value: ISODateString) => string`: fully custom display string
203
205
  *
204
206
  * Formatting applies only to the committed value — never to text the user is
205
- * actively typing. A custom function's output that `parseDateInput` cannot
206
- * read back can't be re-committed after an edit; external `value` changes
207
- * always recompute the display from the ISO value.
207
+ * actively typing. Named formats write the date in the field's `calendar`;
208
+ * `'system_date'` stays the Gregorian ISO date. A custom function's output
209
+ * that the field cannot read back can't be re-committed after an edit;
210
+ * external `value` changes always recompute the display from the ISO value.
208
211
  *
209
212
  * @default 'date_long'
210
213
  * @example
@@ -219,6 +222,28 @@ export interface DateInputProps extends Omit<FieldInputBaseProps<HTMLInputElemen
219
222
  * ```
220
223
  */
221
224
  format?: DateInputFormat | ((value: ISODateString) => string);
225
+ /**
226
+ * The calendar the field shows dates in, such as `'persian'`, `'hebrew'`, or
227
+ * `'buddhist'`: the text field, its calendar popover, and the bottom sheet's
228
+ * months and wheels. `value`, `onChange`, `min`, and `max` stay Gregorian
229
+ * ISO dates in every calendar. People type a date the way the locale writes
230
+ * it in this calendar, and the committed text uses it.
231
+ * Years are years of this calendar, so a Buddhist field reads `2026` as
232
+ * Buddhist year 2026; set `min` and `max` to catch a year typed in the
233
+ * wrong calendar. Calendars other than `gregory`, `iso8601`, `buddhist`,
234
+ * `roc`, and `japanese` need `Temporal`, native or a polyfill the
235
+ * application loads; without it the field uses the Gregorian calendar.
236
+ * The native date control is Gregorian, so with a calendar other than
237
+ * `gregory` or `iso8601` every presentation that would show it uses the
238
+ * popover on a fine pointer and the bottom sheet on a coarse pointer.
239
+ *
240
+ * @default the InternationalizationProvider's calendar, else `'gregory'`
241
+ * @example
242
+ * ```
243
+ * <DateInput label="Start date" calendar="persian" value={date} onChange={setDate} />
244
+ * ```
245
+ */
246
+ calendar?: CalendarSystem;
222
247
  /**
223
248
  * When date picking is handed to the browser/OS instead of Astryx's own
224
249
  * surfaces: the field becomes an `<input type="date">` and the platform
@@ -244,6 +269,9 @@ export interface DateInputProps extends Omit<FieldInputBaseProps<HTMLInputElemen
244
269
  * picker. `dateConstraints` is enforced the same way, on commit, and is
245
270
  * reason enough to prefer `'never'` on a field that uses it.
246
271
  *
272
+ * In a calendar other than `gregory` or `iso8601`, `'touch'` and `'always'`
273
+ * use the calendar popover on a mouse and the touch picker on a finger.
274
+ *
247
275
  * @default 'touch'
248
276
  * @deprecated Use `presentation` (`spec:AST-043` FR3):
249
277
  * `'touch'` → `'adaptive-native'`, `'always'` → `'native'`,
@@ -258,12 +286,15 @@ export interface DateInputProps extends Omit<FieldInputBaseProps<HTMLInputElemen
258
286
  * - `'popover'`: Astryx's typed field + calendar popover on every pointer
259
287
  * - `'bottom-sheet'`: Astryx's bottom-sheet calendar on every pointer
260
288
  * - `'native'`: the browser/OS picker on every pointer, with no Astryx
261
- * fallback (FR2)
289
+ * fallback (FR2), except in a calendar other than `gregory` or
290
+ * `iso8601`, where it is `'adaptive-bottom-sheet'` and warns in
291
+ * development
262
292
  * - `'adaptive-bottom-sheet'`: popover on a fine pointer, bottom sheet on
263
293
  * a coarse pointer
264
294
  * - `'adaptive-native'` (default): popover on a fine pointer, browser/OS
265
295
  * picker on a coarse pointer, keeping the released Astryx fallbacks
266
- * where a native control cannot express the value (FR2)
296
+ * where a native control cannot express the value (FR2), and the bottom
297
+ * sheet in a calendar other than `gregory` or `iso8601`
267
298
  *
268
299
  * @default 'adaptive-native'
269
300
  */
@@ -1 +1 @@
1
- {"version":3,"file":"DateInput.d.ts","sourceRoot":"","sources":["../../src/DateInput/DateInput.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DateInput.d.ts","sourceRoot":"","sources":["../../src/DateInput/DateInput.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAS3C,OAAO,EAGL,KAAK,WAAW,EAKjB,MAAM,UAAU,CAAC;AAQlB,OAAO,EAEL,KAAK,aAAa,EAElB,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAkBrB,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,yBAAyB,CAAC;AAG5D,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAClD,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,4BAA4B,CAAC;AAwDpC,QAAA,MAAM,UAAU;;;;;;;;;;;;;EAad,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,UAAU,CAAC;AAEpD;;;;;;;;;;;;;GAaG;AACH;;;;;;;;GAQG;AACH,iFAAiF;AACjF,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEjE,8FAA8F;AAC9F,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AAEvD,MAAM,MAAM,eAAe,GAAG,OAAO,CACnC,eAAe,EACf,MAAM,GAAG,WAAW,GAAG,cAAc,GAAG,aAAa,CACtD,CAAC;AAIF,YAAY,EACV,WAAW,IAAI,eAAe,EAC9B,eAAe,IAAI,mBAAmB,GACvC,MAAM,UAAU,CAAC;AAGlB,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAK9C,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,+BAA+B,CAAC;AAQxE,MAAM,WAAW,cAAe,SAAQ,IAAI,CAC1C,mBAAmB,CAAC,gBAAgB,CAAC,EACrC,UAAU,GAAG,cAAc,CAC5B;IACC,qEAAqE;IACrE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,KAAK,IAAI,CAAC;IAEtD;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1E;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB;;OAEG;IACH,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB;;OAEG;IACH,eAAe,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAEzD;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IAErB;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,oBAAoB,CAAC;IAErC;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEvB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;IAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,MAAM,CAAC,EAAE,eAAe,GAAG,CAAC,CAAC,KAAK,EAAE,aAAa,KAAK,MAAM,CAAC,CAAC;IAE9D;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,YAAY,CAAC,EAAE,qBAAqB,CAAC;IAErC;;;;;;;;;;;;;;;;;;OAkBG;IACH,YAAY,CAAC,EAAE,qBAAqB,CAAC;CACtC;AAojBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+BA4C9C;yBA5Ce,SAAS"}
@@ -4,7 +4,7 @@
4
4
 
5
5
  /**
6
6
  * @file DateInput.tsx
7
- * @input Uses React, useId, useState, useCallback, useRef, Field, Icon, Calendar, usePopover, InputGroupContext
7
+ * @input Uses React, useId, useCallback, useRef, useTypedDateField, Field, Icon, Calendar, usePopover, InputGroupContext
8
8
  * @output Exports DateInput component, DateInputProps
9
9
  * @position Core implementation; consumed by index.ts, tested by DateInput.test.tsx
10
10
  *
@@ -15,7 +15,7 @@
15
15
  * - /apps/storybook/stories/DateInput.stories.tsx (storybook stories)
16
16
  * - /packages/cli/assets/templates/blocks/components/DateInput/ (showcase blocks)
17
17
  */
18
- import { use, useId, useState, useCallback, useRef, useOptimistic, useTransition } from 'react';
18
+ import { use, useId, useCallback, useRef, useOptimistic, useTransition } from 'react';
19
19
  import * as stylex from '@stylexjs/stylex';
20
20
  import { inputDisabledFocusStyles } from "../Field/inputDisabledFocus.js";
21
21
  import "../theme/tokens.stylex.js";
@@ -35,14 +35,16 @@ import { useBusyAnnouncement } from "../hooks/useBusyAnnouncement.js";
35
35
  import { useMediaQuery } from "../hooks/useMediaQuery.js";
36
36
  import { useResolvedRequired } from "../hooks/useResolvedRequired.js";
37
37
  import { usePopover } from "../Popover/index.js";
38
- import { isFocusInsideOwnedLayer, isPressInsideOwnedLayer, useOutsidePress } from "../Layer/outsidePress.js";
38
+ import { isFocusInsideOwnedLayer, isPressInsideOwnedLayer, noteOutsideDismissal, useOutsidePress } from "../Layer/outsidePress.js";
39
39
  import { NativeDateField } from "./NativeDateField.js";
40
40
  import { TouchDateField } from "./TouchDateField.js";
41
41
  import { useTooltip } from "../Tooltip/index.js";
42
- import { getInputARIA, isImeKeyEvent, parseDateInput } from "../utils/index.js";
42
+ import { getInputARIA, isImeKeyEvent } from "../utils/index.js";
43
43
  import { chainEventHandlers } from "../utils/chainEventHandlers.js";
44
- import { plainDateFromISO, plainDateToISO, formatSharedDate } from "../utils/plainDate.js";
45
- import { effectivePickerPresentation, resolvePickerPresentation } from "../utils/inputPresentation.js";
44
+ import { isRenderable } from "../utils/isRenderable.js";
45
+ import { useTypedDateField } from "./useTypedDate.js";
46
+ import { resolvePickerPresentation } from "../utils/inputPresentation.js";
47
+ import { useCalendarPresentation } from "./useCalendarPresentation.js";
46
48
  import { useDevWarning } from "../hooks/useDevWarning.js";
47
49
  const styles = {
48
50
  iconButton: {
@@ -115,7 +117,6 @@ import { joinAriaIDs } from "../utils/inputAria.js";
115
117
  import { useFieldInputStyling } from "../Field/fieldParts.js";
116
118
  import { themeProps } from "../utils/themeProps.js";
117
119
  import { focusOutlineStyles } from "../utils/focusOutline.stylex.js";
118
- import { useLocale } from "../i18n/index.js";
119
120
  import { useMergedRefs } from "../hooks/useMergedRefs.js";
120
121
  import { registerEnglishFallback, useComponentTranslator } from "../i18n/useComponentTranslator.js";
121
122
  import english from "../i18n/generated-english/DateInput/DateInput.generated.js";
@@ -178,6 +179,7 @@ function PointerDateField({
178
179
  numberOfMonths = 1,
179
180
  weekStartsOn,
180
181
  format = 'date_long',
182
+ calendar,
181
183
  width,
182
184
  containerXstyle,
183
185
  containerClassName,
@@ -202,11 +204,11 @@ function PointerDateField({
202
204
  'aria-labelledby': ariaLabelledByProp,
203
205
  onBlur: onBlurProp,
204
206
  onClick: onClickProp,
207
+ onFocus: onFocusProp,
205
208
  onKeyDown: onKeyDownProp,
206
209
  ...controlProps
207
210
  } = rest;
208
211
  const t = useComponentTranslator();
209
- const locale = useLocale();
210
212
  const isEffectivelyRequired = useResolvedRequired({
211
213
  isRequired,
212
214
  isOptional
@@ -219,9 +221,9 @@ function PointerDateField({
219
221
  const inputLabelID = useId();
220
222
  const descriptionID = useId();
221
223
  const statusMessageID = useId();
224
+ const calendarDescriptionID = useId();
222
225
  const inputRef = useRef(null);
223
226
  const calendarRef = useRef(null);
224
- const lastFiredValueRef = useRef(undefined);
225
227
  const inputGroup = useInputGroup();
226
228
  const [, startTransition] = useTransition();
227
229
  const [optimisticValue, setOptimisticValue] = useOptimistic(value);
@@ -255,51 +257,71 @@ function PointerDateField({
255
257
  max,
256
258
  dateConstraints
257
259
  });
260
+ const fireChange = useCallback(newValue => {
261
+ if (isEffectivelyDisabled) {
262
+ return;
263
+ }
264
+ onChange?.(newValue);
265
+ if (changeAction) {
266
+ startTransition(async () => {
267
+ setOptimisticValue(newValue);
268
+ await changeAction(newValue);
269
+ });
270
+ }
271
+ }, [isEffectivelyDisabled, onChange, changeAction, startTransition, setOptimisticValue]);
272
+ const clearTypedDate = useCallback(() => {
273
+ if (value !== undefined) {
274
+ fireChange(undefined);
275
+ }
276
+ }, [value, fireChange]);
277
+ const navigateToTypedDate = useCallback(date => {
278
+ calendarRef.current?.navigateTo(date);
279
+ }, []);
280
+ const {
281
+ typedDate,
282
+ displayValue,
283
+ formatHint,
284
+ isPending,
285
+ isInvalid,
286
+ fieldStatus,
287
+ alertMessage,
288
+ handleChange: handleTypedChange,
289
+ commit: commitPendingInput,
290
+ handleFocus,
291
+ handleBlur,
292
+ reset: resetTypedInput
293
+ } = useTypedDateField({
294
+ source: 'DateInput',
295
+ calendar,
296
+ format,
297
+ min,
298
+ max,
299
+ isDateDisabled,
300
+ value,
301
+ shownValue: optimisticValue,
302
+ onChange: fireChange,
303
+ onClear: clearTypedDate,
304
+ onTypedDate: navigateToTypedDate,
305
+ isDisabled: isEffectivelyDisabled,
306
+ status,
307
+ isStatusAnnounced: !inputGroup,
308
+ hasPlaceholder: placeholderFromProps != null
309
+ });
258
310
  const {
259
311
  statusIcon,
260
312
  describedBy: statusTooltipDescribedBy
261
313
  } = useInputStatusIcon({
262
- status,
314
+ status: fieldStatus,
263
315
  statusVariant,
264
316
  isInGroup: !!inputGroup
265
317
  });
266
318
  const {
267
319
  ariaLabelledBy,
268
320
  ariaDescribedBy
269
- } = getInputARIA(inputLabelID, [description ? descriptionID : null, statusVariant !== 'tooltip' && status?.message ? statusMessageID : null,
321
+ } = getInputARIA(inputLabelID, [description ? descriptionID : null, typedDate.calendarDescription != null ? calendarDescriptionID : null, statusVariant !== 'tooltip' && fieldStatus?.message ? statusMessageID : null,
270
322
  // The tooltip variant renders no message box; describe the input by the
271
323
  // tooltip's content instead so the status is still announced.
272
324
  statusTooltipDescribedBy, showsDisabledMessage ? disabledMessageTooltip.describedBy : null, ariaDescribedByProp], inputGroup);
273
-
274
- // Pending input while user is typing (null = show formatted value)
275
- const [pendingInput, setPendingInput] = useState(null);
276
-
277
- // Clear pending input when value changes externally (computed during render
278
- // via prev-value ref instead of useEffect to avoid an extra render cycle)
279
- const prevValueRef = useRef(value);
280
- if (value !== prevValueRef.current) {
281
- prevValueRef.current = value;
282
- if (value !== lastFiredValueRef.current) {
283
- lastFiredValueRef.current = undefined;
284
- if (pendingInput !== null) {
285
- setPendingInput(null);
286
- }
287
- }
288
- }
289
-
290
- // Format a committed ISO value for display. The default `date_long` renders
291
- // the long-month shape (byte-identical to the historical hardcoded
292
- // DATE_FORMAT_LONG rendering, so still non-breaking); a function is called
293
- // with the ISO value; every other named member reuses Timestamp's shared
294
- // date mapping. Applies ONLY to the committed value, never to in-progress
295
- // typed input.
296
- const formatCommittedValue = useCallback(iso => typeof format === 'function' ? format(iso) : formatSharedDate(plainDateFromISO(iso), format, locale), [format, locale]);
297
-
298
- // Display value: pending input if typing, otherwise formatted value
299
- const displayValue = pendingInput !== null ? pendingInput : optimisticValue && /^\d{4}-\d{2}-\d{2}$/.test(optimisticValue) ? formatCommittedValue(optimisticValue) : '';
300
-
301
- // Check if current input is valid (for styling purposes)
302
- const isInputValid = pendingInput === null || !pendingInput.trim() ? true : parseDateInput(pendingInput, locale) !== null;
303
325
  const fieldElementRef = useRef(null);
304
326
  // Set just before a close that focus already left the field for, so onHide
305
327
  // does not pull focus back to the input.
@@ -359,20 +381,6 @@ function PointerDateField({
359
381
  }
360
382
  }, [isEffectivelyDisabled, popover]);
361
383
 
362
- // Unified change handler that fires both onChange and changeAction
363
- const fireChange = useCallback(newValue => {
364
- if (isEffectivelyDisabled) {
365
- return;
366
- }
367
- onChange?.(newValue);
368
- if (changeAction) {
369
- startTransition(async () => {
370
- setOptimisticValue(newValue);
371
- await changeAction(newValue);
372
- });
373
- }
374
- }, [isEffectivelyDisabled, onChange, changeAction, startTransition, setOptimisticValue]);
375
-
376
384
  // Handle clear button click
377
385
  const handleClear = useCallback(e => {
378
386
  fireChange(undefined);
@@ -397,62 +405,12 @@ function PointerDateField({
397
405
  return;
398
406
  }
399
407
  fireChange(selectedDate);
400
- setPendingInput(null);
408
+ resetTypedInput();
401
409
  popover.hide();
402
- }, [isDisabled, fireChange, popover]);
403
-
404
- // Handle input text change - update immediately if valid and allowed
410
+ }, [isDisabled, fireChange, resetTypedInput, popover]);
405
411
  const handleInputChange = useCallback(e => {
406
- // The input is never natively disabled (spec:AST-085 FR1), so guard
407
- // value mutation explicitly (readOnly also blocks typing).
408
- if (isEffectivelyDisabled) {
409
- return;
410
- }
411
- const newValue = e.target.value;
412
- setPendingInput(newValue);
413
-
414
- // If the input is valid and passes constraints, update immediately
415
- const parsed = parseDateInput(newValue, locale);
416
- if (parsed && plainDateToISO(parsed) !== value && !isDateDisabled(parsed)) {
417
- const parsedISO = plainDateToISO(parsed);
418
- lastFiredValueRef.current = parsedISO;
419
- fireChange(parsedISO);
420
- // Navigate calendar to show the parsed date's month
421
- calendarRef.current?.navigateTo(parsedISO);
422
- }
423
- }, [value, fireChange, isDateDisabled, isEffectivelyDisabled, locale]);
424
-
425
- // Commit pending input (shared by blur and Enter key)
426
- const commitPendingInput = useCallback(() => {
427
- if (pendingInput === null) {
428
- return;
429
- }
430
- // Disabled or busy: keep the value, drop the draft (spec:AST-085 FR2).
431
- if (isEffectivelyDisabled) {
432
- setPendingInput(null);
433
- return;
434
- }
435
- if (!pendingInput.trim()) {
436
- if (value !== undefined) {
437
- fireChange(undefined);
438
- }
439
- setPendingInput(null);
440
- return;
441
- }
442
- const parsed = parseDateInput(pendingInput, locale);
443
- if (parsed && !isDateDisabled(parsed)) {
444
- const parsedISO = plainDateToISO(parsed);
445
- if (parsedISO !== value) {
446
- fireChange(parsedISO);
447
- }
448
- }
449
- setPendingInput(null);
450
- }, [pendingInput, isEffectivelyDisabled, value, fireChange, isDateDisabled, locale]);
451
-
452
- // Handle blur - validate, check constraints, and clear pending input.
453
- const handleBlur = useCallback(() => {
454
- commitPendingInput();
455
- }, [commitPendingInput]);
412
+ handleTypedChange(e.target.value);
413
+ }, [handleTypedChange]);
456
414
 
457
415
  // A manual popover has no auto-popover exclusivity, so without this close
458
416
  // the next field's calendar would open beside this one. Focus going nowhere
@@ -463,6 +421,7 @@ function PointerDateField({
463
421
  return;
464
422
  }
465
423
  isFocusMovingAwayRef.current = true;
424
+ noteOutsideDismissal(e.currentTarget.ownerDocument);
466
425
  popover.hide();
467
426
  }, [popover]);
468
427
 
@@ -488,14 +447,14 @@ function PointerDateField({
488
447
  skipAutoFocus: true
489
448
  });
490
449
  }
491
- } else if (e.key === 'Enter' && (pendingInput !== null || isEffectivelyDisabled)) {
450
+ } else if (e.key === 'Enter' && (isPending || isEffectivelyDisabled)) {
492
451
  // Typed text holds Enter back, or a form would submit the value from
493
452
  // before the commit. A disabled or busy field must not submit its
494
453
  // form either. Otherwise Enter keeps its default, as in any text field.
495
454
  e.preventDefault();
496
455
  commitPendingInput();
497
456
  }
498
- }, [popover, commitPendingInput, isEffectivelyDisabled, pendingInput]);
457
+ }, [popover, commitPendingInput, isEffectivelyDisabled, isPending]);
499
458
  const inputWrapper = /*#__PURE__*/_jsxs("div", {
500
459
  ref: el => {
501
460
  fieldElementRef.current = el;
@@ -509,13 +468,13 @@ function PointerDateField({
509
468
  ...(inputGroup ? inputGroupItemProps : undefined),
510
469
  ...mergeProps(themeProps('date-input', {
511
470
  size,
512
- status: status?.type ?? null,
471
+ status: fieldStatus?.type ?? null,
513
472
  disabled: isDisabled ? 'disabled' : null
514
473
  }), stylex.props(inputWrapperStyles.base, sizeStyles[size],
515
474
  // Disabled paint belongs to the disabled state only; a busy field
516
475
  // keeps its ordinary paint and shows the Spinner (spec:AST-085
517
476
  // FR6, family:buttons FR4).
518
- isDisabled && inputWrapperStyles.disabled, isEffectivelyDisabled && inputDisabledFocusStyles.inputFocusRing, status && inputStatusBorderStyles[status.type], status && !isEffectivelyDisabled && inputStatusHoverShadowStyles[status.type], status && inputStatusFocusWithinStyles[status.type], inputGroup && groupStyles.inGroup, controlXstyle), controlClassName, controlStyle),
477
+ isDisabled && inputWrapperStyles.disabled, isEffectivelyDisabled && inputDisabledFocusStyles.inputFocusRing, fieldStatus && inputStatusBorderStyles[fieldStatus.type], fieldStatus && !isEffectivelyDisabled && inputStatusHoverShadowStyles[fieldStatus.type], fieldStatus && inputStatusFocusWithinStyles[fieldStatus.type], inputGroup && groupStyles.inGroup, controlXstyle), controlClassName, controlStyle),
519
478
  children: [inputGroup && /*#__PURE__*/_jsx(VisuallyHidden, {
520
479
  id: inputLabelID,
521
480
  children: label
@@ -552,15 +511,16 @@ function PointerDateField({
552
511
  value: displayValue,
553
512
  onChange: handleInputChange,
554
513
  onBlur: chainEventHandlers(handleBlur, onBlurProp),
514
+ onFocus: chainEventHandlers(handleFocus, onFocusProp),
555
515
  onClick: isEffectivelyDisabled ? undefined : chainEventHandlers(handleInputClick, onClickProp),
556
516
  onKeyDown: chainEventHandlers(handleInputKeyDown, onKeyDownProp),
557
- placeholder: placeholder,
517
+ placeholder: formatHint ?? placeholder,
558
518
  "aria-disabled": isEffectivelyDisabled ? 'true' : undefined,
559
519
  readOnly: isEffectivelyDisabled || undefined,
560
520
  "aria-labelledby": ariaLabelledByProp != null ? joinAriaIDs(ariaLabelledBy ?? fieldLabelID, ariaLabelledByProp) : ariaLabelledBy,
561
521
  "aria-describedby": ariaDescribedBy,
562
522
  "aria-required": isEffectivelyRequired ? 'true' : undefined,
563
- "aria-invalid": status?.type === 'error' || !isInputValid ? 'true' : undefined,
523
+ "aria-invalid": fieldStatus?.type === 'error' || isInvalid ? 'true' : undefined,
564
524
  "aria-busy": isBusy || undefined,
565
525
  "aria-expanded": popover.isOpen,
566
526
  "aria-haspopup": "dialog",
@@ -580,12 +540,15 @@ function PointerDateField({
580
540
  3: {
581
541
  className: "x1lliihq x98rzlu xeuugli xc342km xng3xce x1717udv x9ynric xjm74w1 xf9zqsd xw6l6zx xjbqb8w x1a2a7pz xeyghm5 xt0e3qv xv1l7n4"
582
542
  }
583
- }[!!isEffectivelyDisabled << 1 | !!!isInputValid << 0]
543
+ }[!!isEffectivelyDisabled << 1 | !!isInvalid << 0]
584
544
  }), /*#__PURE__*/_jsx(VisuallyHidden, {
585
545
  as: "div",
586
546
  role: "alert",
587
547
  "aria-live": "assertive",
588
- children: !isInputValid ? t('@astryx.dateInput.invalidDate') : ''
548
+ children: alertMessage
549
+ }), isRenderable(typedDate.calendarDescription) && /*#__PURE__*/_jsx(VisuallyHidden, {
550
+ id: calendarDescriptionID,
551
+ children: typedDate.calendarDescription
589
552
  }), hasClear && value !== undefined && !isEffectivelyDisabled && /*#__PURE__*/_jsx(InputClearButton, {
590
553
  label: t('@astryx.dateInput.clear', {
591
554
  label
@@ -599,6 +562,7 @@ function PointerDateField({
599
562
  // calendar only while it is open; it opens on the current value.
600
563
  !popover.isOpen ? null : /*#__PURE__*/_jsx(Calendar, {
601
564
  handleRef: calendarRef,
565
+ calendar: typedDate.calendar,
602
566
  mode: "single",
603
567
  value: optimisticValue ?? null,
604
568
  onChange: handleDateSelect,
@@ -626,10 +590,10 @@ function PointerDateField({
626
590
  isOptional: isOptional,
627
591
  isRequired: isRequired,
628
592
  isDisabled: isDisabled,
629
- status: status ? {
630
- type: status.type,
631
- message: status.message,
632
- messageID: status.message ? statusMessageID : undefined
593
+ status: fieldStatus ? {
594
+ type: fieldStatus.type,
595
+ message: fieldStatus.message,
596
+ messageID: fieldStatus.message ? statusMessageID : undefined
633
597
  } : undefined,
634
598
  statusVariant: statusVariant,
635
599
  labelTooltip: labelTooltip,
@@ -690,10 +654,15 @@ export function DateInput(props) {
690
654
  const isDisabled = props.isDisabled || inputGroupState.isDisabled;
691
655
  const isTouch = useMediaQuery(TOUCH_POINTER_QUERY);
692
656
  useDevWarning('DateInput', '`nativePicker` is deprecated; use `presentation` instead (`touch` → `adaptive-native`, `always` → `native`, `never` → `adaptive-bottom-sheet`). `presentation` wins when both are set.', props.nativePicker !== undefined);
693
- const surface = resolvePickerPresentation(effectivePickerPresentation(props.presentation, props.nativePicker), isTouch);
657
+ const {
658
+ calendar,
659
+ presentation
660
+ } = useCalendarPresentation('DateInput', props.calendar, props.presentation, props.nativePicker);
661
+ const surface = resolvePickerPresentation(presentation, isTouch);
694
662
  const {
695
663
  presentation: _presentation,
696
664
  nativePicker: _nativePicker,
665
+ calendar: _calendar,
697
666
  ...rest
698
667
  } = props;
699
668
  switch (surface) {
@@ -703,13 +672,17 @@ export function DateInput(props) {
703
672
  isDisabled: isDisabled
704
673
  });
705
674
  case 'sheet':
706
- return /*#__PURE__*/_jsx(TouchDateField, {
675
+ return /*#__PURE__*/_jsx(TouchDateField
676
+ // Month indexes depend on the calendar. A new calendar remounts the sheet.
677
+ , {
707
678
  ...rest,
679
+ calendar: calendar,
708
680
  isDisabled: isDisabled
709
- });
681
+ }, calendar);
710
682
  case 'desktop':
711
683
  return /*#__PURE__*/_jsx(PointerDateField, {
712
684
  ...rest,
685
+ calendar: calendar,
713
686
  isDisabled: isDisabled
714
687
  });
715
688
  }
@@ -1,4 +1,5 @@
1
- import { type DayOfWeek, type ISODateString, type PlainDate } from '../utils/index.js';
1
+ import type { DayOfWeek, ISODateString, PlainDate } from '../utils/dateTypes.js';
2
+ import { type MonthModel } from './monthGeometry.js';
2
3
  export interface MonthScrollerHandle {
3
4
  /** Bring a month to rest at the top of the scrollport. */
4
5
  scrollToMonth: (monthIndex: number, behavior?: ScrollBehavior) => void;
@@ -6,6 +7,8 @@ export interface MonthScrollerHandle {
6
7
  export interface MonthScrollerProps {
7
8
  /** Imperative handle for programmatic navigation (Today, the wheels). */
8
9
  handleRef?: React.RefObject<MonthScrollerHandle | null>;
10
+ /** The calendar's months, by index. */
11
+ monthModel: MonthModel;
9
12
  /** First reachable month, as a month index. */
10
13
  minMonthIndex: number;
11
14
  /** Last reachable month, as a month index. */
@@ -28,7 +31,7 @@ export interface MonthScrollerProps {
28
31
  /**
29
32
  * A vertically continuous, snap-paged run of month grids.
30
33
  */
31
- export declare function MonthScroller({ handleRef, minMonthIndex, maxMonthIndex, initialMonthIndex, onVisibleMonthChange, selectedDate, today, isDateDisabled, weekStartsOn, onSelect, }: MonthScrollerProps): import("react").JSX.Element;
34
+ export declare function MonthScroller({ handleRef, monthModel, minMonthIndex, maxMonthIndex, initialMonthIndex, onVisibleMonthChange, selectedDate, today, isDateDisabled, weekStartsOn, onSelect, }: MonthScrollerProps): import("react").JSX.Element;
32
35
  export declare namespace MonthScroller {
33
36
  var displayName: string;
34
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MonthScroller.d.ts","sourceRoot":"","sources":["../../src/DateInput/MonthScroller.tsx"],"names":[],"mappings":"AAyDA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,SAAS,EAOf,MAAM,UAAU,CAAC;AAqNlB,MAAM,WAAW,mBAAmB;IAClC,0DAA0D;IAC1D,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;CACxE;AAED,MAAM,WAAW,kBAAkB;IACjC,yEAAyE;IACzE,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IACxD,+CAA+C;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,aAAa,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,oBAAoB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,+BAA+B;IAC/B,YAAY,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/B,4CAA4C;IAC5C,KAAK,EAAE,SAAS,CAAC;IACjB,2DAA2D;IAC3D,cAAc,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC;IAC7C,gCAAgC;IAChC,YAAY,EAAE,SAAS,CAAC;IACxB,kCAAkC;IAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC1C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,KAAK,EACL,cAAc,EACd,YAAY,EACZ,QAAQ,GACT,EAAE,kBAAkB,+BA6iBpB;yBAxjBe,aAAa"}
1
+ {"version":3,"file":"MonthScroller.d.ts","sourceRoot":"","sources":["../../src/DateInput/MonthScroller.tsx"],"names":[],"mappings":"AAwDA,OAAO,KAAK,EAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAuB5E,OAAO,EACL,KAAK,UAAU,EAKhB,MAAM,iBAAiB,CAAC;AAqMzB,MAAM,WAAW,mBAAmB;IAClC,0DAA0D;IAC1D,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;CACxE;AAED,MAAM,WAAW,kBAAkB;IACjC,yEAAyE;IACzE,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IACxD,uCAAuC;IACvC,UAAU,EAAE,UAAU,CAAC;IACvB,+CAA+C;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,aAAa,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,oBAAoB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,+BAA+B;IAC/B,YAAY,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/B,4CAA4C;IAC5C,KAAK,EAAE,SAAS,CAAC;IACjB,2DAA2D;IAC3D,cAAc,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC;IAC7C,gCAAgC;IAChC,YAAY,EAAE,SAAS,CAAC;IACxB,kCAAkC;IAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC1C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,UAAU,EACV,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,KAAK,EACL,cAAc,EACd,YAAY,EACZ,QAAQ,GACT,EAAE,kBAAkB,+BA8iBpB;yBA1jBe,aAAa"}