@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
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @file getInitialFocusDate.ts
5
- * @input PlainDate utilities, min/max bounds, today
5
+ * @input PlainDate and calendar-system utilities, min/max bounds, today
6
6
  * @output Exports getInitialFocusDate — the month Calendar opens on
7
7
  * @position Calendar-specific helper; used by Calendar.tsx
8
8
  *
@@ -15,11 +15,14 @@ import type {ISODateString, DateRange} from '../utils/dateTypes';
15
15
  import {
16
16
  type PlainDate,
17
17
  plainDateFromISO,
18
- plainDateSetFirstOfMonth,
19
- plainDateAddMonths,
20
18
  plainDateIsBefore,
21
19
  plainDateIsAfter,
22
20
  } from '../utils/plainDate';
21
+ import {
22
+ type CalendarSystem,
23
+ calendarAddMonths,
24
+ calendarMonthOf,
25
+ } from '../utils/calendarSystem';
23
26
 
24
27
  export interface InitialFocusDateOptions {
25
28
  /** Controlled visible month, if the consumer supplied one. */
@@ -34,6 +37,8 @@ export interface InitialFocusDateOptions {
34
37
  numberOfMonths: number;
35
38
  /** Today, injected so the caller keeps a single memoized source of "now". */
36
39
  today: PlainDate;
40
+ /** The calendar system whose months the panes show. Default: `gregory`. */
41
+ calendar?: CalendarSystem;
37
42
  }
38
43
 
39
44
  /**
@@ -57,7 +62,15 @@ export interface InitialFocusDateOptions {
57
62
  export function getInitialFocusDate(
58
63
  options: InitialFocusDateOptions,
59
64
  ): PlainDate {
60
- const {focusDate, value, min, max, numberOfMonths, today} = options;
65
+ const {
66
+ focusDate,
67
+ value,
68
+ min,
69
+ max,
70
+ numberOfMonths,
71
+ today,
72
+ calendar = 'gregory',
73
+ } = options;
61
74
 
62
75
  if (focusDate) {
63
76
  return plainDateFromISO(focusDate);
@@ -76,13 +89,14 @@ export function getInitialFocusDate(
76
89
 
77
90
  if (maxDate && plainDateIsAfter(today, maxDate)) {
78
91
  const lastPaneOffset = Math.max(0, numberOfMonths - 1);
79
- const shifted = plainDateAddMonths(
80
- plainDateSetFirstOfMonth(maxDate),
92
+ const shifted = calendarAddMonths(
93
+ calendar,
94
+ calendarMonthOf(calendar, maxDate),
81
95
  -lastPaneOffset,
82
- );
96
+ ).start;
83
97
  if (
84
98
  minDate &&
85
- plainDateIsBefore(shifted, plainDateSetFirstOfMonth(minDate))
99
+ plainDateIsBefore(shifted, calendarMonthOf(calendar, minDate).start)
86
100
  ) {
87
101
  return minDate;
88
102
  }
@@ -4,9 +4,11 @@
4
4
 
5
5
  /**
6
6
  * @file useCalendarDays.ts
7
- * @input Uses React useMemo, useLocale, PlainDate utilities, generated CLDR weekday data
8
- * @output Exports useCalendarDays hook for generating calendar day grids
9
- * @position Calendar-specific hook; used by Calendar
7
+ * @input Uses React useMemo, useLocale, PlainDate and calendar-system
8
+ * utilities, generated CLDR weekday data
9
+ * @output Exports useCalendarDays, the day grid of one month of any calendar
10
+ * system (Gregorian by default)
11
+ * @position Calendar-specific hook; used by Calendar and MonthScroller
10
12
  *
11
13
  * SYNC: When modified, update:
12
14
  * - /packages/core/src/Calendar/hooks/index.ts
@@ -17,12 +19,17 @@ import type {DayOfWeek, ISODateString} from '../../utils/dateTypes';
17
19
  import {
18
20
  type PlainDate,
19
21
  plainDateToISO,
20
- getDaysInMonth,
21
22
  plainDateDayOfWeek,
22
23
  plainDateAddDays,
23
24
  } from '../../utils/plainDate';
24
25
  import {useLocale} from '../../i18n';
25
26
  import {getWeekdayHeaderNames} from '../getWeekdayHeaderNames';
27
+ import {
28
+ type CalendarSystem,
29
+ calendarDayOfMonth,
30
+ calendarMonthFromYearMonth,
31
+ } from '../../utils/calendarSystem';
32
+ import {resolveShownCalendar} from '../../i18n/useCalendarSystem';
26
33
 
27
34
  /**
28
35
  * Represents a single day in the calendar grid.
@@ -42,14 +49,27 @@ export interface CalendarDay {
42
49
  * Configuration for calendar days generation
43
50
  */
44
51
  export interface UseCalendarDaysOptions {
45
- /** The year to generate days for */
52
+ /** The year to generate days for, in `calendar`'s numbering */
46
53
  year: number;
47
- /** The month (1-based: 1 = January, 12 = December) */
54
+ /**
55
+ * The month's position in its year (1-based). In the Gregorian calendar,
56
+ * 1 is January and 12 is December. In other calendars it is numbered as
57
+ * `Temporal.PlainDate` numbers it: 1 through 13 in a Hebrew leap year.
58
+ */
48
59
  month: number;
49
60
  /** First day of week (0=Sunday through 6=Saturday) */
50
61
  weekStartsOn?: DayOfWeek;
51
62
  /** Use variable rows per month vs. fixed 6-row grid */
52
63
  hasVariableRowCount?: boolean;
64
+ /**
65
+ * The calendar system that numbers `year`, `month`, and each `dayNumber`.
66
+ * Each day keeps its Gregorian `date` and `iso`. The hook never reads the
67
+ * InternationalizationProvider calendar. Calendars other than gregory,
68
+ * iso8601, buddhist, roc, and japanese need Temporal; without it, the hook
69
+ * reads Gregorian numbers and warns once in development.
70
+ * @default 'gregory'
71
+ */
72
+ calendar?: CalendarSystem;
53
73
  }
54
74
 
55
75
  /**
@@ -80,71 +100,82 @@ export interface UseCalendarDaysReturn {
80
100
  * weekStartsOn: 0, // Sunday
81
101
  * });
82
102
  * // days[i].date is a PlainDate { year, month (1-based), day }
103
+ *
104
+ * // Aban 1405 in the Persian calendar; dates stay Gregorian
105
+ * useCalendarDays({year: 1405, month: 8, calendar: 'persian'});
83
106
  * ```
84
107
  */
85
108
  export function useCalendarDays(
86
109
  options: UseCalendarDaysOptions,
87
110
  ): UseCalendarDaysReturn {
88
- const {year, month, weekStartsOn = 0, hasVariableRowCount = false} = options;
89
- const locale = useLocale();
90
-
91
- // Calculate grid structure
92
- const gridInfo = useMemo(() => {
93
- const totalDaysInMonth = getDaysInMonth(year, month);
111
+ const {
112
+ year,
113
+ month,
114
+ weekStartsOn = 0,
115
+ hasVariableRowCount = false,
116
+ calendar: calendarOption = 'gregory',
117
+ } = options;
118
+ const calendar = resolveShownCalendar(calendarOption, 'useCalendarDays');
119
+ const days = useMemo(() => {
120
+ const calendarMonth = calendarMonthFromYearMonth(calendar, {year, month});
121
+ return layOutMonthDays({
122
+ first: calendarMonth.start,
123
+ length: calendarMonth.length,
124
+ weekStartsOn,
125
+ hasVariableRowCount,
126
+ dayNumberOf: (pd, offset) =>
127
+ offset >= 0 && offset < calendarMonth.length
128
+ ? offset + 1
129
+ : calendarDayOfMonth(calendar, pd),
130
+ });
131
+ }, [year, month, calendar, weekStartsOn, hasVariableRowCount]);
132
+ return useMonthGrid(days, weekStartsOn);
133
+ }
94
134
 
95
- // Calculate starting offset based on weekStartsOn
96
- let startingDayOfWeek =
97
- plainDateDayOfWeek({year, month, day: 1}) - weekStartsOn;
98
- if (startingDayOfWeek < 0) {
99
- startingDayOfWeek += 7;
100
- }
135
+ interface MonthLayout {
136
+ first: PlainDate;
137
+ length: number;
138
+ weekStartsOn: DayOfWeek;
139
+ hasVariableRowCount: boolean;
140
+ /** The day number of a grid day, given its offset from the month's first day. */
141
+ dayNumberOf: (pd: PlainDate, offset: number) => number;
142
+ }
101
143
 
102
- // Calculate total cells
103
- const totalDays = totalDaysInMonth + startingDayOfWeek;
104
- const totalRows = hasVariableRowCount ? Math.ceil(totalDays / 7) : 6;
105
- const totalCells = totalRows * 7;
144
+ function layOutMonthDays(layout: MonthLayout): CalendarDay[] {
145
+ const {first, length, weekStartsOn, hasVariableRowCount, dayNumberOf} =
146
+ layout;
147
+ let startingDayOfWeek = plainDateDayOfWeek(first) - weekStartsOn;
148
+ if (startingDayOfWeek < 0) {
149
+ startingDayOfWeek += 7;
150
+ }
151
+ const totalRows = hasVariableRowCount
152
+ ? Math.ceil((length + startingDayOfWeek) / 7)
153
+ : 6;
154
+ const result: CalendarDay[] = [];
155
+ for (let i = 0; i < totalRows * 7; i++) {
156
+ const offset = i - startingDayOfWeek;
157
+ const pd = plainDateAddDays(first, offset);
158
+ result.push({
159
+ date: pd,
160
+ iso: plainDateToISO(pd),
161
+ isOutside: offset < 0 || offset >= length,
162
+ dayNumber: dayNumberOf(pd, offset),
163
+ });
164
+ }
165
+ return result;
166
+ }
106
167
 
107
- return {
108
- daysInMonth: totalDaysInMonth,
109
- startingDayOfWeek,
110
- totalCells,
111
- };
112
- }, [year, month, weekStartsOn, hasVariableRowCount]);
168
+ function useMonthGrid(
169
+ days: CalendarDay[],
170
+ weekStartsOn: DayOfWeek,
171
+ ): UseCalendarDaysReturn {
172
+ const locale = useLocale();
113
173
 
114
174
  const dayNames = useMemo(
115
175
  () => getWeekdayHeaderNames(locale, weekStartsOn),
116
176
  [locale, weekStartsOn],
117
177
  );
118
178
 
119
- // Generate days array
120
- const days = useMemo(() => {
121
- const {
122
- daysInMonth: totalDaysInMonth,
123
- startingDayOfWeek,
124
- totalCells,
125
- } = gridInfo;
126
- const firstOfMonth: PlainDate = {year, month, day: 1};
127
- const result: CalendarDay[] = [];
128
-
129
- for (let i = 0; i < totalCells; i++) {
130
- const dayOffset = i - startingDayOfWeek + 1;
131
- const isOutside = dayOffset < 1 || dayOffset > totalDaysInMonth;
132
- const pd: PlainDate = isOutside
133
- ? plainDateAddDays(firstOfMonth, dayOffset - 1)
134
- : {year, month, day: dayOffset};
135
-
136
- result.push({
137
- date: pd,
138
- iso: plainDateToISO(pd),
139
- isOutside,
140
- dayNumber: pd.day,
141
- });
142
- }
143
-
144
- return result;
145
- }, [year, month, gridInfo]);
146
-
147
- // Group days into weeks
148
179
  const weeks = useMemo(() => {
149
180
  const result: CalendarDay[][] = [];
150
181
  for (let i = 0; i < days.length; i += 7) {
@@ -153,10 +184,5 @@ export function useCalendarDays(
153
184
  return result;
154
185
  }, [days]);
155
186
 
156
- return {
157
- days,
158
- weeks,
159
- dayNames,
160
- totalCells: gridInfo.totalCells,
161
- };
187
+ return {days, weeks, dayNames, totalCells: days.length};
162
188
  }
@@ -4,9 +4,11 @@
4
4
 
5
5
  /**
6
6
  * @file useCalendarNavigation.ts
7
- * @input Uses React useState, useMemo, useCallback, useLocale, PlainDate utilities
8
- * @output Exports useCalendarNavigation hook for month navigation
9
- * @position Calendar-specific hook; used by Calendar
7
+ * @input Uses React useState, useMemo, useCallback, useLocale, PlainDate and
8
+ * calendar-system utilities
9
+ * @output Exports useCalendarNavigation hook for month navigation in any
10
+ * calendar system (Gregorian by default)
11
+ * @position Calendar-specific public hook
10
12
  *
11
13
  * SYNC: When modified, update:
12
14
  * - /packages/core/src/Calendar/hooks/index.ts
@@ -19,12 +21,17 @@ import {
19
21
  plainDateFromISO,
20
22
  plainDateToISO,
21
23
  plainDateToday,
22
- plainDateSetFirstOfMonth,
23
- plainDateAddMonths,
24
24
  plainDateAddDays,
25
25
  } from '../../utils/plainDate';
26
- import {plainDateFormatStandaloneMonthYear} from '../../utils/plainDate';
26
+ import {
27
+ type CalendarSystem,
28
+ calendarAddMonths,
29
+ calendarMonthOf,
30
+ calendarYearMonthOf,
31
+ formatCalendarMonthLabel,
32
+ } from '../../utils/calendarSystem';
27
33
  import {useLocale} from '../../i18n';
34
+ import {resolveShownCalendar} from '../../i18n/useCalendarSystem';
28
35
 
29
36
  /**
30
37
  * Configuration for calendar navigation
@@ -38,17 +45,31 @@ export interface UseCalendarNavigationOptions {
38
45
  onFocusDateChange?: (focusDate: ISODateString) => void;
39
46
  /** Number of months to display */
40
47
  numberOfMonths?: 1 | 2;
48
+ /**
49
+ * The calendar system whose months the hook steps and labels. Dates stay
50
+ * Gregorian ISO. The hook never reads the InternationalizationProvider
51
+ * calendar. Calendars other than gregory, iso8601, buddhist, roc, and
52
+ * japanese need Temporal; without it, the hook steps Gregorian months and
53
+ * warns once in development.
54
+ * @default 'gregory'
55
+ */
56
+ calendar?: CalendarSystem;
41
57
  }
42
58
 
43
59
  /**
44
60
  * Return type for useCalendarNavigation hook
45
61
  */
46
62
  export interface UseCalendarNavigationReturn {
47
- /** The base month (first day of the focus month) as a PlainDate */
63
+ /** The Gregorian first day of the focus month */
48
64
  baseMonth: PlainDate;
49
- /** Array of visible months to render as PlainDates */
65
+ /** The Gregorian first day of each visible month */
50
66
  visibleMonths: PlainDate[];
51
- /** Formatted label for the month header */
67
+ /**
68
+ * The year and month numbers of each visible month in `calendar`, as
69
+ * `useCalendarDays` reads them with the same `calendar`
70
+ */
71
+ visibleCalendarMonths: {year: number; month: number}[];
72
+ /** Formatted label for the month header, in `calendar` */
52
73
  monthYearLabel: string;
53
74
  /** Navigate to previous/next month */
54
75
  navigateMonth: (
@@ -87,6 +108,13 @@ export interface UseCalendarNavigationReturn {
87
108
  * // Navigate from arrow key (with focus tracking)
88
109
  * navigateMonth(1, focusedDate, 1); // horizontal offset
89
110
  * navigateMonth(1, focusedDate, 7); // vertical offset
111
+ *
112
+ * // Persian months, laid out by useCalendarDays
113
+ * const nav = useCalendarNavigation({initialValue, calendar: 'persian'});
114
+ * const {weeks} = useCalendarDays({
115
+ * ...nav.visibleCalendarMonths[0],
116
+ * calendar: 'persian',
117
+ * });
90
118
  * ```
91
119
  */
92
120
  export function useCalendarNavigation(
@@ -97,8 +125,13 @@ export function useCalendarNavigation(
97
125
  focusDate: focusDateProp,
98
126
  onFocusDateChange,
99
127
  numberOfMonths = 1,
128
+ calendar: calendarOption = 'gregory',
100
129
  } = options;
101
130
  const locale = useLocale();
131
+ const calendar = resolveShownCalendar(
132
+ calendarOption,
133
+ 'useCalendarNavigation',
134
+ );
102
135
 
103
136
  // Pending focus target after month navigation
104
137
  const [pendingFocus, setPendingFocus] = useState<ISODateString | null>(null);
@@ -121,32 +154,40 @@ export function useCalendarNavigation(
121
154
  ? plainDateFromISO(focusDateProp)
122
155
  : internalFocusDate;
123
156
 
124
- // Base month (first day of focus month)
125
- const baseMonth = useMemo(() => {
126
- return plainDateSetFirstOfMonth(focusDate);
127
- }, [focusDate]);
157
+ // A controlled focus date is a new object on each render. Key the memo on
158
+ // its ISO string.
159
+ const focusIso = plainDateToISO(focusDate);
160
+ const shownMonths = useMemo(() => {
161
+ const first = calendarMonthOf(calendar, plainDateFromISO(focusIso));
162
+ return Array.from({length: numberOfMonths}, (_, i) =>
163
+ calendarAddMonths(calendar, first, i),
164
+ );
165
+ }, [calendar, focusIso, numberOfMonths]);
166
+
167
+ const visibleMonths = useMemo(
168
+ () => shownMonths.map(month => month.start),
169
+ [shownMonths],
170
+ );
171
+ const baseMonth = visibleMonths[0];
128
172
 
129
- // Generate visible months
130
- const visibleMonths = useMemo(() => {
131
- return Array.from({length: numberOfMonths}, (_, i) => {
132
- return plainDateAddMonths(baseMonth, i);
133
- });
134
- }, [baseMonth, numberOfMonths]);
173
+ const visibleCalendarMonths = useMemo(
174
+ () => shownMonths.map(month => calendarYearMonthOf(calendar, month)),
175
+ [calendar, shownMonths],
176
+ );
135
177
 
136
- // Format month header
137
- // Each month is its own stand-alone label (Calendar FR1).
178
+ // Each month is its own stand-alone label.
138
179
  const monthYearLabel = useMemo(
139
180
  () =>
140
- visibleMonths
141
- .map(m => plainDateFormatStandaloneMonthYear(m, locale))
181
+ shownMonths
182
+ .map(month => formatCalendarMonthLabel(calendar, month, locale))
142
183
  .join(' – '),
143
- [visibleMonths, locale],
184
+ [calendar, shownMonths, locale],
144
185
  );
145
186
 
146
187
  // Navigate to previous/next month
147
188
  const navigateMonth = useCallback(
148
189
  (delta: number, focusedDate?: ISODateString, offset?: number) => {
149
- const newMonth = plainDateAddMonths(baseMonth, delta);
190
+ const newMonth = calendarAddMonths(calendar, shownMonths[0], delta).start;
150
191
  const newISO = plainDateToISO(newMonth);
151
192
 
152
193
  // Calculate target focus date if provided
@@ -164,7 +205,7 @@ export function useCalendarNavigation(
164
205
  setInternalFocusDate(newMonth);
165
206
  }
166
207
  },
167
- [baseMonth, onFocusDateChange],
208
+ [calendar, shownMonths, onFocusDateChange],
168
209
  );
169
210
 
170
211
  // Clear pending focus
@@ -175,6 +216,7 @@ export function useCalendarNavigation(
175
216
  return {
176
217
  baseMonth,
177
218
  visibleMonths,
219
+ visibleCalendarMonths,
178
220
  monthYearLabel,
179
221
  navigateMonth,
180
222
  pendingFocus,
@@ -109,7 +109,7 @@ export const docs = {
109
109
  name: 'size',
110
110
  type: "'sm' | 'md'",
111
111
  description:
112
- 'The size of the checkbox. sm for compact layouts, md for default.',
112
+ 'The size of the checkbox. sm for compact layouts, md for default. Under a coarse pointer a labelled checkbox’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; nothing changes size.',
113
113
  default: "'md'",
114
114
  },
115
115
  {
@@ -155,7 +155,7 @@ export const docs = {
155
155
  {
156
156
  name: '--_indicator-press-image',
157
157
  description:
158
- "The row's touch press image, handed down to a first-party indicator that paints its own press. Set from the press paint only while the row itself is pressed; only this row declares it.",
158
+ "The row's touch press image, handed down to a first-party indicator that paints its own press. Set from the press paint only while the row itself is pressed, or, under a CheckboxList row that owns the press, from that row's press paint. Only this row declares it.",
159
159
  default: 'none',
160
160
  private: true,
161
161
  },
@@ -361,7 +361,8 @@ export const docsZh = {
361
361
  {
362
362
  name: 'size',
363
363
  type: "'sm' | 'md'",
364
- description: '复选框尺寸。sm 用于紧凑布局,md 为默认。',
364
+ description:
365
+ '复选框尺寸。sm 用于紧凑布局,md 为默认。在粗指针(触摸)下,带可见标签的复选框的目标通过不可见的点击区域向 44 px 扩展。它不小于所在行,与相邻控件较近时止于间距的一半;尺寸不变。',
365
366
  default: "'md'",
366
367
  },
367
368
  {
@@ -403,7 +404,7 @@ export const docsZh = {
403
404
  {
404
405
  name: '--_indicator-press-image',
405
406
  description:
406
- '复选框行的触摸按下图像,传递给自行绘制按下效果的第一方指示器。仅在该行自身被按下时根据按下涂层设置,只有该行声明它。',
407
+ '复选框行的触摸按下图像,传递给自行绘制按下效果的第一方指示器。仅在该行自身被按下时根据按下涂层设置;在拥有按下效果的 CheckboxList 行中,取该行的按下涂层。只有该行声明它。',
407
408
  default: 'none',
408
409
  private: true,
409
410
  },