@astryxdesign/core 0.4.5 → 0.4.6-canary.6a53e69

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 (556) hide show
  1. package/CHANGELOG.md +134 -0
  2. package/dist/Avatar/Avatar.d.ts +10 -5
  3. package/dist/Avatar/Avatar.d.ts.map +1 -1
  4. package/dist/Avatar/Avatar.js +139 -30
  5. package/dist/Avatar/AvatarStatusDot.d.ts +2 -1
  6. package/dist/Avatar/AvatarStatusDot.d.ts.map +1 -1
  7. package/dist/Avatar/AvatarStatusDot.js +30 -4
  8. package/dist/Avatar/AvatarStatusLabelContext.d.ts +39 -0
  9. package/dist/Avatar/AvatarStatusLabelContext.d.ts.map +1 -0
  10. package/dist/Avatar/AvatarStatusLabelContext.js +41 -0
  11. package/dist/AvatarGroup/AvatarGroup.d.ts +3 -1
  12. package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
  13. package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
  14. package/dist/AvatarGroup/AvatarGroupOverflow.js +15 -9
  15. package/dist/Blockquote/Blockquote.d.ts +4 -3
  16. package/dist/Blockquote/Blockquote.d.ts.map +1 -1
  17. package/dist/Blockquote/Blockquote.js +9 -10
  18. package/dist/BottomSheet/BottomSheet.d.ts +1 -0
  19. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
  20. package/dist/BottomSheet/BottomSheet.js +37 -11
  21. package/dist/BottomSheet/BottomSheetEdgeTint.d.ts +6 -0
  22. package/dist/BottomSheet/BottomSheetEdgeTint.d.ts.map +1 -0
  23. package/dist/BottomSheet/BottomSheetEdgeTint.js +62 -0
  24. package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
  25. package/dist/BottomSheet/BottomSheetPanel.js +22 -5
  26. package/dist/BottomSheet/BottomSheetSwitcher.d.ts +1 -0
  27. package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
  28. package/dist/BottomSheet/BottomSheetSwitcher.js +10 -4
  29. package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
  30. package/dist/BottomSheet/useSheetGestures.js +23 -5
  31. package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  32. package/dist/Breadcrumbs/BreadcrumbItem.js +47 -34
  33. package/dist/Button/Button.d.ts.map +1 -1
  34. package/dist/Button/Button.js +7 -7
  35. package/dist/Calendar/Calendar.d.ts.map +1 -1
  36. package/dist/Calendar/Calendar.js +21 -12
  37. package/dist/Calendar/hooks/useCalendarNavigation.d.ts.map +1 -1
  38. package/dist/Calendar/hooks/useCalendarNavigation.js +8 -4
  39. package/dist/Calendar/styles.d.ts +2 -2
  40. package/dist/Calendar/styles.d.ts.map +1 -1
  41. package/dist/Calendar/styles.js +5 -5
  42. package/dist/Center/Center.d.ts +23 -1
  43. package/dist/Center/Center.d.ts.map +1 -1
  44. package/dist/Center/Center.js +12 -6
  45. package/dist/Chat/ChatComposer.d.ts.map +1 -1
  46. package/dist/Chat/ChatComposer.js +3 -3
  47. package/dist/Chat/ChatComposerDrawer.d.ts.map +1 -1
  48. package/dist/Chat/ChatComposerDrawer.js +2 -2
  49. package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
  50. package/dist/Chat/ChatToolCalls.js +2 -2
  51. package/dist/Chat/useChatDictation.d.ts +1 -1
  52. package/dist/Chat/useChatDictation.d.ts.map +1 -1
  53. package/dist/Chat/useSpeechRecognition.d.ts +1 -1
  54. package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
  55. package/dist/Chat/useSpeechRecognition.js +4 -3
  56. package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
  57. package/dist/Chat/useTriggerMenu.js +2 -2
  58. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  59. package/dist/CheckboxInput/CheckboxInput.js +2 -2
  60. package/dist/Citation/Citation.d.ts.map +1 -1
  61. package/dist/Citation/Citation.js +5 -5
  62. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  63. package/dist/ClickableCard/ClickableCard.js +4 -4
  64. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  65. package/dist/CodeBlock/CodeBlock.js +1 -1
  66. package/dist/Collapsible/Collapsible.d.ts.map +1 -1
  67. package/dist/Collapsible/Collapsible.js +2 -2
  68. package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
  69. package/dist/CommandPalette/CommandPaletteItem.js +3 -3
  70. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  71. package/dist/ComplexSelector/ComplexSelector.js +6 -6
  72. package/dist/DateInput/DateInput.d.ts +31 -2
  73. package/dist/DateInput/DateInput.d.ts.map +1 -1
  74. package/dist/DateInput/DateInput.js +90 -22
  75. package/dist/DateInput/MonthScroller.d.ts +35 -0
  76. package/dist/DateInput/MonthScroller.d.ts.map +1 -0
  77. package/dist/DateInput/MonthScroller.js +658 -0
  78. package/dist/DateInput/MonthYearWheels.d.ts +24 -0
  79. package/dist/DateInput/MonthYearWheels.d.ts.map +1 -0
  80. package/dist/DateInput/MonthYearWheels.js +114 -0
  81. package/dist/DateInput/TouchDateField.d.ts +10 -0
  82. package/dist/DateInput/TouchDateField.d.ts.map +1 -0
  83. package/dist/DateInput/TouchDateField.js +810 -0
  84. package/dist/DateInput/Wheel.d.ts +41 -0
  85. package/dist/DateInput/Wheel.d.ts.map +1 -0
  86. package/dist/DateInput/Wheel.js +315 -0
  87. package/dist/DateInput/monthGeometry.d.ts +65 -0
  88. package/dist/DateInput/monthGeometry.d.ts.map +1 -0
  89. package/dist/DateInput/monthGeometry.js +98 -0
  90. package/dist/DateInput/tokens.stylex.d.ts +63 -0
  91. package/dist/DateInput/tokens.stylex.d.ts.map +1 -0
  92. package/dist/DateInput/tokens.stylex.js +74 -0
  93. package/dist/DateInput/useOwnScrollGesture.d.ts +41 -0
  94. package/dist/DateInput/useOwnScrollGesture.d.ts.map +1 -0
  95. package/dist/DateInput/useOwnScrollGesture.js +202 -0
  96. package/dist/DateInput/usePointerDragScroll.d.ts +15 -0
  97. package/dist/DateInput/usePointerDragScroll.d.ts.map +1 -0
  98. package/dist/DateInput/usePointerDragScroll.js +216 -0
  99. package/dist/DateInput/useScrollSettle.d.ts +26 -0
  100. package/dist/DateInput/useScrollSettle.d.ts.map +1 -0
  101. package/dist/DateInput/useScrollSettle.js +149 -0
  102. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  103. package/dist/DateRangeInput/DateRangeInput.js +17 -14
  104. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  105. package/dist/DateTimeInput/DateTimeInput.js +17 -14
  106. package/dist/Dialog/Dialog.d.ts.map +1 -1
  107. package/dist/Dialog/Dialog.js +3 -3
  108. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
  109. package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +2 -2
  110. package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
  111. package/dist/DropdownMenu/DropdownMenuItem.js +2 -2
  112. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
  113. package/dist/DropdownMenu/DropdownMenuRadioItem.js +2 -2
  114. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
  115. package/dist/DropdownMenu/DropdownMenuSubMenu.js +2 -2
  116. package/dist/Field/FieldLabel.d.ts.map +1 -1
  117. package/dist/Field/FieldLabel.js +4 -4
  118. package/dist/Field/InputClearButton.d.ts.map +1 -1
  119. package/dist/Field/InputClearButton.js +6 -0
  120. package/dist/Field/inputStyles.stylex.d.ts +1 -1
  121. package/dist/Field/inputStyles.stylex.d.ts.map +1 -1
  122. package/dist/Field/inputStyles.stylex.js +5 -5
  123. package/dist/FileInput/FileInput.d.ts.map +1 -1
  124. package/dist/FileInput/FileInput.js +6 -6
  125. package/dist/HoverCard/HoverCard.d.ts +13 -3
  126. package/dist/HoverCard/HoverCard.d.ts.map +1 -1
  127. package/dist/HoverCard/HoverCard.js +2 -0
  128. package/dist/HoverCard/index.d.ts +1 -1
  129. package/dist/HoverCard/index.d.ts.map +1 -1
  130. package/dist/HoverCard/useHoverCard.d.ts +17 -2
  131. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  132. package/dist/HoverCard/useHoverCard.js +78 -9
  133. package/dist/InputGroup/InputGroup.js +1 -1
  134. package/dist/Item/Item.d.ts +9 -1
  135. package/dist/Item/Item.d.ts.map +1 -1
  136. package/dist/Item/Item.js +52 -14
  137. package/dist/Layer/index.d.ts +4 -2
  138. package/dist/Layer/index.d.ts.map +1 -1
  139. package/dist/Layer/index.js +2 -0
  140. package/dist/Layer/useLayer.d.ts.map +1 -1
  141. package/dist/Layer/useLayer.js +3 -2
  142. package/dist/Layer/useTouchTrigger.d.ts +113 -0
  143. package/dist/Layer/useTouchTrigger.d.ts.map +1 -0
  144. package/dist/Layer/useTouchTrigger.js +241 -0
  145. package/dist/Layout/container.stylex.d.ts +4 -2
  146. package/dist/Layout/container.stylex.d.ts.map +1 -1
  147. package/dist/Layout/container.stylex.js +19 -11
  148. package/dist/Layout/index.d.ts +1 -0
  149. package/dist/Layout/index.d.ts.map +1 -1
  150. package/dist/Layout/index.js +4 -0
  151. package/dist/Layout/padding.stylex.d.ts +315 -12
  152. package/dist/Layout/padding.stylex.d.ts.map +1 -1
  153. package/dist/Layout/padding.stylex.js +389 -12
  154. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  155. package/dist/Lightbox/Lightbox.js +5 -4
  156. package/dist/Link/Link.d.ts.map +1 -1
  157. package/dist/Link/Link.js +6 -6
  158. package/dist/MetadataList/MetadataList.d.ts.map +1 -1
  159. package/dist/MetadataList/MetadataList.js +1 -1
  160. package/dist/MobileNav/MobileNav.d.ts +1 -0
  161. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  162. package/dist/MobileNav/MobileNav.js +24 -6
  163. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  164. package/dist/MultiSelector/MultiSelector.js +8 -8
  165. package/dist/NavItem/navItemStyles.stylex.d.ts +4 -4
  166. package/dist/NavItem/navItemStyles.stylex.d.ts.map +1 -1
  167. package/dist/NavItem/navItemStyles.stylex.js +4 -4
  168. package/dist/NavMenu/NavHeadingMenuItem.d.ts.map +1 -1
  169. package/dist/NavMenu/NavHeadingMenuItem.js +3 -3
  170. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  171. package/dist/NumberInput/NumberInput.js +36 -8
  172. package/dist/Outline/Outline.d.ts.map +1 -1
  173. package/dist/Outline/Outline.js +3 -3
  174. package/dist/Pagination/Pagination.d.ts.map +1 -1
  175. package/dist/Pagination/Pagination.js +2 -2
  176. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  177. package/dist/PowerSearch/PowerSearch.js +11 -12
  178. package/dist/PowerSearch/PowerSearchToken.d.ts.map +1 -1
  179. package/dist/PowerSearch/PowerSearchToken.js +3 -1
  180. package/dist/PowerSearch/formatFilterValue.d.ts +11 -2
  181. package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
  182. package/dist/PowerSearch/formatFilterValue.js +23 -8
  183. package/dist/RadioList/RadioListItem.d.ts +2 -2
  184. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  185. package/dist/RadioList/RadioListItem.js +70 -40
  186. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  187. package/dist/Resizable/ResizeHandle.js +7 -7
  188. package/dist/Section/Section.d.ts +36 -1
  189. package/dist/Section/Section.d.ts.map +1 -1
  190. package/dist/Section/Section.js +12 -2
  191. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  192. package/dist/SegmentedControl/SegmentedControlItem.js +7 -2
  193. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  194. package/dist/SelectableCard/SelectableCard.js +3 -3
  195. package/dist/Selector/Selector.d.ts +26 -1
  196. package/dist/Selector/Selector.d.ts.map +1 -1
  197. package/dist/Selector/Selector.js +93 -20
  198. package/dist/Selector/SelectorOption.d.ts +14 -1
  199. package/dist/Selector/SelectorOption.d.ts.map +1 -1
  200. package/dist/Selector/SelectorOption.js +6 -0
  201. package/dist/Selector/SelectorRowLayoutContext.d.ts +8 -0
  202. package/dist/Selector/SelectorRowLayoutContext.d.ts.map +1 -0
  203. package/dist/Selector/SelectorRowLayoutContext.js +27 -0
  204. package/dist/Selector/types.d.ts +1 -0
  205. package/dist/Selector/types.d.ts.map +1 -1
  206. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  207. package/dist/SideNav/SideNavHeading.js +4 -4
  208. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  209. package/dist/SideNav/SideNavItem.js +3 -3
  210. package/dist/Slider/Slider.d.ts.map +1 -1
  211. package/dist/Slider/Slider.js +7 -7
  212. package/dist/Stack/Stack.d.ts +23 -1
  213. package/dist/Stack/Stack.d.ts.map +1 -1
  214. package/dist/Stack/Stack.js +12 -6
  215. package/dist/Switch/Switch.d.ts.map +1 -1
  216. package/dist/Switch/Switch.js +2 -2
  217. package/dist/TabList/Tab.d.ts.map +1 -1
  218. package/dist/TabList/Tab.js +6 -2
  219. package/dist/TabList/TabMenu.d.ts.map +1 -1
  220. package/dist/TabList/TabMenu.js +3 -3
  221. package/dist/Table/TableRow.js +4 -4
  222. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  223. package/dist/Table/plugins/columnResize/useTableColumnResize.js +1 -1
  224. package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
  225. package/dist/Table/plugins/filtering/useTableFiltering.js +2 -2
  226. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
  227. package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +2 -2
  228. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  229. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +2 -2
  230. package/dist/Table/plugins/sortable/useTableSortable.d.ts.map +1 -1
  231. package/dist/Table/plugins/sortable/useTableSortable.js +1 -1
  232. package/dist/Table/plugins/sortable/useTableSortableState.d.ts +5 -3
  233. package/dist/Table/plugins/sortable/useTableSortableState.d.ts.map +1 -1
  234. package/dist/Table/plugins/sortable/useTableSortableState.js +12 -9
  235. package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
  236. package/dist/Table/plugins/tree/useTableTreeData.js +3 -3
  237. package/dist/TextArea/TextArea.js +1 -1
  238. package/dist/TextInput/TextInput.js +1 -1
  239. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  240. package/dist/Thumbnail/Thumbnail.js +3 -3
  241. package/dist/TimeInput/TimeInput.js +2 -2
  242. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  243. package/dist/Timestamp/Timestamp.js +6 -4
  244. package/dist/Timestamp/formatInstant.d.ts +3 -2
  245. package/dist/Timestamp/formatInstant.d.ts.map +1 -1
  246. package/dist/Timestamp/formatInstant.js +8 -8
  247. package/dist/Timestamp/tooltipEntries.d.ts +2 -1
  248. package/dist/Timestamp/tooltipEntries.d.ts.map +1 -1
  249. package/dist/Timestamp/tooltipEntries.js +5 -3
  250. package/dist/Toast/Toast.d.ts +4 -3
  251. package/dist/Toast/Toast.d.ts.map +1 -1
  252. package/dist/Toast/Toast.js +10 -7
  253. package/dist/Token/Token.d.ts.map +1 -1
  254. package/dist/Token/Token.js +6 -6
  255. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  256. package/dist/Tokenizer/Tokenizer.js +1 -1
  257. package/dist/Tooltip/Tooltip.d.ts +16 -3
  258. package/dist/Tooltip/Tooltip.d.ts.map +1 -1
  259. package/dist/Tooltip/Tooltip.js +2 -0
  260. package/dist/Tooltip/index.d.ts +1 -1
  261. package/dist/Tooltip/index.d.ts.map +1 -1
  262. package/dist/Tooltip/useTooltip.d.ts +21 -2
  263. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  264. package/dist/Tooltip/useTooltip.js +71 -13
  265. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  266. package/dist/TopNav/TopNavHeading.js +4 -4
  267. package/dist/TopNav/TopNavItem.d.ts.map +1 -1
  268. package/dist/TopNav/TopNavItem.js +3 -3
  269. package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
  270. package/dist/TopNav/TopNavMegaMenu.js +2 -2
  271. package/dist/TopNav/TopNavMegaMenuItem.d.ts.map +1 -1
  272. package/dist/TopNav/TopNavMegaMenuItem.js +2 -2
  273. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  274. package/dist/TopNav/TopNavMenu.js +4 -4
  275. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  276. package/dist/TreeList/TreeListItem.js +7 -7
  277. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  278. package/dist/Typeahead/BaseTypeahead.js +2 -2
  279. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  280. package/dist/Typeahead/Typeahead.js +1 -1
  281. package/dist/astryx.css +128 -62
  282. package/dist/hooks/containerReveal.stylex.d.ts.map +1 -1
  283. package/dist/hooks/containerReveal.stylex.js +18 -18
  284. package/dist/hooks/scrollbarGutter.d.ts +28 -0
  285. package/dist/hooks/scrollbarGutter.d.ts.map +1 -0
  286. package/dist/hooks/scrollbarGutter.js +103 -0
  287. package/dist/hooks/useAutoMediaMode.d.ts +31 -0
  288. package/dist/hooks/useAutoMediaMode.d.ts.map +1 -0
  289. package/dist/hooks/useAutoMediaMode.js +201 -0
  290. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  291. package/dist/hooks/useInputStatusIcon.js +1 -1
  292. package/dist/hooks/useListFocus.d.ts +5 -2
  293. package/dist/hooks/useListFocus.d.ts.map +1 -1
  294. package/dist/hooks/useListFocus.js +12 -6
  295. package/dist/hooks/useScrollLock.d.ts +4 -0
  296. package/dist/hooks/useScrollLock.d.ts.map +1 -1
  297. package/dist/hooks/useScrollLock.js +13 -1
  298. package/dist/i18n/InternationalizationContext.d.ts.map +1 -1
  299. package/dist/i18n/InternationalizationContext.js +2 -0
  300. package/dist/i18n/index.d.ts +6 -0
  301. package/dist/i18n/index.d.ts.map +1 -1
  302. package/dist/i18n/index.js +6 -0
  303. package/dist/i18n/useCollator.d.ts +12 -0
  304. package/dist/i18n/useCollator.d.ts.map +1 -0
  305. package/dist/i18n/useCollator.js +40 -0
  306. package/dist/i18n/useLocale.d.ts +3 -0
  307. package/dist/i18n/useLocale.d.ts.map +1 -0
  308. package/dist/i18n/useLocale.js +31 -0
  309. package/dist/theme/MediaTheme.d.ts +25 -5
  310. package/dist/theme/MediaTheme.d.ts.map +1 -1
  311. package/dist/theme/MediaTheme.js +31 -6
  312. package/dist/theme/defineTheme.d.ts +5 -0
  313. package/dist/theme/defineTheme.d.ts.map +1 -1
  314. package/dist/theme/defineTheme.js +5 -0
  315. package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
  316. package/dist/theme/derivedVarRegistry.js +7 -0
  317. package/dist/theme/generateThemeRules.d.ts.map +1 -1
  318. package/dist/theme/generateThemeRules.js +66 -5
  319. package/dist/theme/index.d.ts +1 -1
  320. package/dist/theme/index.d.ts.map +1 -1
  321. package/dist/theme/syntax/index.d.ts +6 -0
  322. package/dist/theme/syntax/index.d.ts.map +1 -1
  323. package/dist/theme/syntax/index.js +7 -2
  324. package/dist/utils/dateParser.d.ts +4 -3
  325. package/dist/utils/dateParser.d.ts.map +1 -1
  326. package/dist/utils/dateParser.js +8 -8
  327. package/dist/utils/index.d.ts +1 -1
  328. package/dist/utils/index.d.ts.map +1 -1
  329. package/dist/utils/index.js +1 -1
  330. package/dist/utils/plainDate.d.ts +5 -2
  331. package/dist/utils/plainDate.d.ts.map +1 -1
  332. package/dist/utils/plainDate.js +20 -4
  333. package/locales/en.json +28 -0
  334. package/locales/pseudo.json +21 -0
  335. package/package.json +3 -3
  336. package/src/Avatar/Avatar.doc.mjs +10 -6
  337. package/src/Avatar/Avatar.test.tsx +219 -1
  338. package/src/Avatar/Avatar.tsx +179 -37
  339. package/src/Avatar/AvatarStatusDot.tsx +30 -4
  340. package/src/Avatar/AvatarStatusLabelContext.ts +47 -0
  341. package/src/AvatarGroup/AvatarGroup.doc.mjs +10 -6
  342. package/src/AvatarGroup/AvatarGroup.test.tsx +62 -0
  343. package/src/AvatarGroup/AvatarGroup.tsx +3 -1
  344. package/src/AvatarGroup/AvatarGroupOverflow.tsx +31 -8
  345. package/src/Banner/Banner.doc.mjs +2 -0
  346. package/src/Blockquote/Blockquote.doc.mjs +30 -7
  347. package/src/Blockquote/Blockquote.test.tsx +34 -3
  348. package/src/Blockquote/Blockquote.tsx +11 -9
  349. package/src/BottomSheet/BottomSheet.doc.mjs +3 -3
  350. package/src/BottomSheet/BottomSheet.test.tsx +24 -0
  351. package/src/BottomSheet/BottomSheet.tsx +19 -0
  352. package/src/BottomSheet/BottomSheetEdgeTint.test.tsx +225 -0
  353. package/src/BottomSheet/BottomSheetEdgeTint.tsx +82 -0
  354. package/src/BottomSheet/BottomSheetPanel.test.tsx +157 -0
  355. package/src/BottomSheet/BottomSheetPanel.tsx +77 -3
  356. package/src/BottomSheet/BottomSheetSwitcher.tsx +13 -0
  357. package/src/BottomSheet/useSheetGestures.test.ts +27 -0
  358. package/src/BottomSheet/useSheetGestures.ts +25 -5
  359. package/src/Breadcrumbs/BreadcrumbItem.tsx +36 -23
  360. package/src/Breadcrumbs/Breadcrumbs.doc.mjs +26 -2
  361. package/src/Breadcrumbs/Breadcrumbs.test.tsx +31 -0
  362. package/src/Button/Button.tsx +12 -9
  363. package/src/Calendar/Calendar.tsx +15 -9
  364. package/src/Calendar/hooks/useCalendarNavigation.ts +6 -4
  365. package/src/Calendar/styles.ts +8 -5
  366. package/src/Center/Center.doc.mjs +48 -0
  367. package/src/Center/Center.test.tsx +158 -0
  368. package/src/Center/Center.tsx +50 -9
  369. package/src/Chat/ChatComposer.tsx +11 -5
  370. package/src/Chat/ChatComposerDrawer.tsx +4 -1
  371. package/src/Chat/ChatToolCalls.tsx +13 -4
  372. package/src/Chat/{useChatDictation.test.ts → useChatDictation.test.tsx} +29 -14
  373. package/src/Chat/useChatDictation.ts +1 -1
  374. package/src/Chat/useSpeechRecognition.ts +5 -3
  375. package/src/Chat/useTriggerMenu.tsx +4 -1
  376. package/src/CheckboxInput/CheckboxInput.tsx +5 -2
  377. package/src/Citation/Citation.test.tsx +6 -1
  378. package/src/Citation/Citation.tsx +11 -5
  379. package/src/ClickableCard/ClickableCard.tsx +7 -4
  380. package/src/CodeBlock/CodeBlock.tsx +4 -1
  381. package/src/Collapsible/Collapsible.tsx +5 -2
  382. package/src/CommandPalette/CommandPaletteItem.tsx +6 -3
  383. package/src/ComplexSelector/ComplexSelector.doc.mjs +10 -0
  384. package/src/ComplexSelector/ComplexSelector.tsx +14 -7
  385. package/src/DateInput/DateInput.test.tsx +17 -1
  386. package/src/DateInput/DateInput.tsx +93 -21
  387. package/src/DateInput/DateInputTouch.test.tsx +2582 -0
  388. package/src/DateInput/MonthScroller.tsx +878 -0
  389. package/src/DateInput/MonthYearWheels.tsx +147 -0
  390. package/src/DateInput/TouchDateField.tsx +1223 -0
  391. package/src/DateInput/Wheel.tsx +473 -0
  392. package/src/DateInput/monthGeometry.ts +118 -0
  393. package/src/DateInput/tokens.stylex.ts +99 -0
  394. package/src/DateInput/useOwnScrollGesture.ts +227 -0
  395. package/src/DateInput/usePointerDragScroll.ts +220 -0
  396. package/src/DateInput/useScrollSettle.ts +164 -0
  397. package/src/DateRangeInput/DateRangeInput.doc.mjs +1 -1
  398. package/src/DateRangeInput/DateRangeInput.tsx +31 -13
  399. package/src/DateTimeInput/DateTimeInput.tsx +25 -9
  400. package/src/Dialog/Dialog.test.tsx +24 -0
  401. package/src/Dialog/Dialog.tsx +3 -0
  402. package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +5 -2
  403. package/src/DropdownMenu/DropdownMenuItem.tsx +5 -2
  404. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +5 -2
  405. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +5 -2
  406. package/src/Field/Field.doc.mjs +2 -0
  407. package/src/Field/FieldLabel.tsx +9 -3
  408. package/src/Field/InputClearButton.test.tsx +110 -3
  409. package/src/Field/InputClearButton.tsx +38 -0
  410. package/src/Field/inputStyles.stylex.ts +17 -13
  411. package/src/FileInput/FileInput.tsx +15 -8
  412. package/src/FormLayout/FormLayout.doc.mjs +1 -1
  413. package/src/HoverCard/HoverCard.doc.mjs +18 -0
  414. package/src/HoverCard/HoverCard.test.tsx +189 -0
  415. package/src/HoverCard/HoverCard.tsx +22 -2
  416. package/src/HoverCard/index.ts +1 -0
  417. package/src/HoverCard/useHoverCard.doc.mjs +2 -0
  418. package/src/HoverCard/useHoverCard.tsx +103 -7
  419. package/src/InputGroup/InputGroup.tsx +1 -1
  420. package/src/Item/Item.doc.mjs +1 -0
  421. package/src/Item/Item.test.tsx +50 -0
  422. package/src/Item/Item.tsx +54 -6
  423. package/src/Layer/index.ts +10 -0
  424. package/src/Layer/useLayer.tsx +13 -2
  425. package/src/Layer/useTouchTrigger.test.ts +70 -0
  426. package/src/Layer/useTouchTrigger.ts +366 -0
  427. package/src/Layout/Layout.doc.mjs +18 -0
  428. package/src/Layout/container.stylex.ts +11 -3
  429. package/src/Layout/index.ts +4 -0
  430. package/src/Layout/overlayPaddingReset.test.tsx +222 -0
  431. package/src/Layout/padding.stylex.ts +192 -12
  432. package/src/Lightbox/Lightbox.tsx +11 -3
  433. package/src/Link/Link.tsx +9 -6
  434. package/src/MetadataList/MetadataList.tsx +4 -1
  435. package/src/MobileNav/MobileNav.tsx +61 -5
  436. package/src/MobileNav/MobileNavEntryAnimation.test.tsx +212 -0
  437. package/src/MobileNav/MobileNavScrollbarGutter.test.tsx +109 -0
  438. package/src/MultiSelector/MultiSelector.test.tsx +1 -1
  439. package/src/MultiSelector/MultiSelector.tsx +26 -10
  440. package/src/NavItem/navItemStyles.stylex.ts +7 -4
  441. package/src/NavMenu/NavHeadingMenuItem.tsx +6 -3
  442. package/src/NumberInput/NumberInput.doc.mjs +24 -0
  443. package/src/NumberInput/NumberInput.test.tsx +138 -0
  444. package/src/NumberInput/NumberInput.tsx +47 -8
  445. package/src/Outline/Outline.tsx +5 -2
  446. package/src/Pagination/Pagination.tsx +5 -2
  447. package/src/Popover/Popover.test.tsx +27 -1
  448. package/src/PowerSearch/PowerSearch.tsx +17 -8
  449. package/src/PowerSearch/PowerSearchToken.tsx +3 -0
  450. package/src/PowerSearch/formatFilterValue.test.ts +22 -2
  451. package/src/PowerSearch/formatFilterValue.ts +31 -6
  452. package/src/RadioList/RadioList.doc.mjs +1 -1
  453. package/src/RadioList/RadioList.test.tsx +170 -2
  454. package/src/RadioList/RadioListItem.tsx +88 -53
  455. package/src/Resizable/ResizeHandle.test.tsx +22 -0
  456. package/src/Resizable/ResizeHandle.tsx +25 -7
  457. package/src/Section/Section.doc.mjs +55 -0
  458. package/src/Section/Section.test.tsx +201 -4
  459. package/src/Section/Section.tsx +69 -0
  460. package/src/SegmentedControl/SegmentedControl.test.tsx +31 -0
  461. package/src/SegmentedControl/SegmentedControlItem.tsx +15 -3
  462. package/src/SelectableCard/SelectableCard.tsx +6 -3
  463. package/src/Selector/Selector.doc.mjs +16 -2
  464. package/src/Selector/Selector.test.tsx +525 -1
  465. package/src/Selector/Selector.tsx +180 -25
  466. package/src/Selector/SelectorOption.doc.mjs +7 -0
  467. package/src/Selector/SelectorOption.tsx +21 -0
  468. package/src/Selector/SelectorRowLayoutContext.ts +32 -0
  469. package/src/Selector/types.ts +4 -4
  470. package/src/SideNav/SideNavHeading.tsx +14 -5
  471. package/src/SideNav/SideNavItem.tsx +9 -3
  472. package/src/Slider/Slider.tsx +25 -6
  473. package/src/Stack/Stack.doc.mjs +72 -0
  474. package/src/Stack/Stack.test.tsx +156 -0
  475. package/src/Stack/Stack.tsx +50 -8
  476. package/src/Switch/Switch.tsx +5 -2
  477. package/src/TabList/Tab.tsx +9 -2
  478. package/src/TabList/TabList.test.tsx +21 -4
  479. package/src/TabList/TabMenu.tsx +9 -3
  480. package/src/Table/TableRow.tsx +4 -4
  481. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +6 -2
  482. package/src/Table/plugins/filtering/useTableFiltering.tsx +4 -1
  483. package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +10 -3
  484. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +6 -3
  485. package/src/Table/plugins/sortable/useTableSortable.tsx +4 -1
  486. package/src/Table/plugins/sortable/useTableSortableState.test.tsx +34 -0
  487. package/src/Table/plugins/sortable/useTableSortableState.tsx +26 -23
  488. package/src/Table/plugins/tree/useTableTreeData.tsx +10 -4
  489. package/src/TextArea/TextArea.doc.mjs +1 -1
  490. package/src/TextArea/TextArea.tsx +1 -1
  491. package/src/TextInput/TextInput.tsx +1 -1
  492. package/src/Thumbnail/Thumbnail.tsx +9 -3
  493. package/src/TimeInput/TimeInput.tsx +1 -1
  494. package/src/Timestamp/Timestamp.test.tsx +27 -7
  495. package/src/Timestamp/Timestamp.tsx +8 -4
  496. package/src/Timestamp/formatInstant.ts +9 -7
  497. package/src/Timestamp/tooltipEntries.test.ts +11 -6
  498. package/src/Timestamp/tooltipEntries.ts +6 -2
  499. package/src/Toast/Toast.tsx +9 -7
  500. package/src/Token/Token.tsx +14 -5
  501. package/src/Tokenizer/Tokenizer.tsx +4 -1
  502. package/src/Tooltip/Tooltip.doc.mjs +18 -0
  503. package/src/Tooltip/Tooltip.test.tsx +254 -1
  504. package/src/Tooltip/Tooltip.tsx +22 -2
  505. package/src/Tooltip/index.ts +1 -0
  506. package/src/Tooltip/useTooltip.doc.mjs +2 -0
  507. package/src/Tooltip/useTooltip.tsx +99 -21
  508. package/src/TopNav/TopNavHeading.tsx +13 -4
  509. package/src/TopNav/TopNavItem.tsx +6 -3
  510. package/src/TopNav/TopNavMegaMenu.tsx +5 -2
  511. package/src/TopNav/TopNavMegaMenuItem.tsx +5 -2
  512. package/src/TopNav/TopNavMenu.tsx +10 -4
  513. package/src/TreeList/TreeListItem.tsx +22 -7
  514. package/src/Typeahead/BaseTypeahead.tsx +5 -2
  515. package/src/Typeahead/Typeahead.tsx +4 -1
  516. package/src/hooks/containerReveal.stylex.ts +54 -18
  517. package/src/hooks/scrollbarGutter.test.ts +167 -0
  518. package/src/hooks/scrollbarGutter.ts +121 -0
  519. package/src/hooks/useAutoMediaMode.test.ts +109 -0
  520. package/src/hooks/useAutoMediaMode.ts +233 -0
  521. package/src/hooks/useInputStatusIcon.tsx +4 -1
  522. package/src/hooks/useListFocus.doc.mjs +2 -2
  523. package/src/hooks/useListFocus.test.tsx +65 -3
  524. package/src/hooks/useListFocus.ts +15 -7
  525. package/src/hooks/useScrollLock.doc.mjs +4 -4
  526. package/src/hooks/useScrollLock.test.ts +73 -0
  527. package/src/hooks/useScrollLock.ts +14 -0
  528. package/src/i18n/InternationalizationContext.ts +2 -0
  529. package/src/i18n/__tests__/e2e-powersearch.test.tsx +37 -1
  530. package/src/i18n/__tests__/useCollator.test.tsx +115 -0
  531. package/src/i18n/__tests__/useLocale.test.tsx +52 -0
  532. package/src/i18n/index.ts +6 -0
  533. package/src/i18n/useCollator.doc.mjs +84 -0
  534. package/src/i18n/useCollator.ts +44 -0
  535. package/src/i18n/useLocale.doc.mjs +70 -0
  536. package/src/i18n/useLocale.ts +34 -0
  537. package/src/i18n/useTranslator.doc.mjs +1 -1
  538. package/src/reset.css +9 -2
  539. package/src/reset.test.ts +22 -0
  540. package/src/theme/MediaTheme.doc.mjs +23 -4
  541. package/src/theme/MediaTheme.dom.test.tsx +97 -0
  542. package/src/theme/MediaTheme.tsx +42 -7
  543. package/src/theme/defineTheme.test.ts +9 -3
  544. package/src/theme/defineTheme.ts +5 -0
  545. package/src/theme/derivedVarRegistry.test.ts +19 -5
  546. package/src/theme/derivedVarRegistry.ts +4 -0
  547. package/src/theme/generateThemeRules.test.ts +118 -0
  548. package/src/theme/generateThemeRules.ts +83 -5
  549. package/src/theme/index.ts +1 -1
  550. package/src/theme/syntax/index.ts +6 -2
  551. package/src/theme/syntax/serverSafeSyntax.test.ts +68 -0
  552. package/src/utils/dateParser.test.ts +20 -0
  553. package/src/utils/dateParser.ts +14 -7
  554. package/src/utils/index.ts +2 -0
  555. package/src/utils/plainDate.test.ts +6 -0
  556. package/src/utils/plainDate.ts +21 -4
@@ -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 { useId, useState, useCallback, useRef, useOptimistic, useTransition } from 'react';
18
+ import { use, useId, useState, useCallback, useRef, useOptimistic, useTransition } from 'react';
19
19
  import * as stylex from '@stylexjs/stylex';
20
20
  import "../theme/tokens.stylex.js";
21
21
  import { colorVars, sizeVars, radiusVars, typographyVars, typeScaleVars } from "../theme/tokens.stylex.js";
@@ -29,8 +29,10 @@ import { Spinner } from "../Spinner/index.js";
29
29
  import { Calendar } from "../Calendar/index.js";
30
30
  import { useCalendarConstraints } from "../Calendar/hooks/index.js";
31
31
  import { useInputStatusIcon } from "../hooks/useInputStatusIcon.js";
32
+ import { useMediaQuery } from "../hooks/useMediaQuery.js";
32
33
  import { useResolvedRequired } from "../hooks/useResolvedRequired.js";
33
34
  import { usePopover } from "../Popover/index.js";
35
+ import { TouchDateField } from "./TouchDateField.js";
34
36
  import { useTooltip } from "../Tooltip/index.js";
35
37
  import { getInputARIA, isImeKeyEvent, parseDateInput } from "../utils/index.js";
36
38
  import { plainDateFromISO, plainDateToISO, formatSharedDate } from "../utils/plainDate.js";
@@ -44,12 +46,12 @@ const styles = {
44
46
  kMzoRj: "xc342km",
45
47
  ksu8eU: "xng3xce",
46
48
  kWkggS: "xjbqb8w",
47
- kkrTdU: "x1ypdohk",
49
+ kkrTdU: "x1ypdohk x16khyan",
48
50
  kaIpWk: "xh6dtrn",
49
51
  $$css: true
50
52
  },
51
53
  iconButtonDisabled: {
52
- kkrTdU: "x1h6gzvc",
54
+ kkrTdU: "xt0e3qv",
53
55
  $$css: true
54
56
  }
55
57
  };
@@ -92,21 +94,33 @@ import { mergeProps, mergeRefs, isFocusDetached } from "../utils/index.js";
92
94
  import { themeProps } from "../utils/themeProps.js";
93
95
  import { focusOutlineStyles } from "../utils/focusOutline.stylex.js";
94
96
  import { stableClassName } from "../naming.js";
95
- import { useTranslator } from "../i18n/index.js";
97
+ import { useTranslator, InternationalizationContext } from "../i18n/index.js";
96
98
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
97
99
  /**
98
- * A date picker component combining a text input with a calendar popover.
100
+ * The pointer that decides which surface a `DateInput` renders.
99
101
  *
100
- * @example
101
- * ```
102
- * <DateInput
103
- * label="Event date"
104
- * value={date}
105
- * onChange={setDate}
106
- * />
107
- * ```
102
+ * `pointer: coarse` is the *primary* pointing device, which is what makes it
103
+ * the whole test. A touchscreen laptop reports `fine` (its trackpad) with
104
+ * `any-pointer: coarse` alongside, so it keeps the typable field — right,
105
+ * because its keyboard is there. A tablet reports `coarse` and gets the
106
+ * picker, at any width. There is deliberately no width bound: it would only
107
+ * re-exclude the tablets, since a narrowed desktop window is still a mouse.
108
+ *
109
+ * Deliberately NOT exported. It was, briefly, on the theory that an app might
110
+ * want to ask the same question and lay out to match — but nothing asked, and
111
+ * six other core components (CheckboxInput, ChatComposerInput, ...) just
112
+ * write `@media (pointer: coarse)` inline rather than sharing a constant. An
113
+ * export is additive later and awkward to withdraw, so it waits for a real
114
+ * caller.
108
115
  */
109
- export function DateInput({
116
+ const TOUCH_POINTER_QUERY = '(pointer: coarse)';
117
+
118
+ /**
119
+ * The pointer-driven field: a text input you can type into, with a calendar
120
+ * in a popover beside it. `DateInput` renders this whenever the primary
121
+ * pointer is not a finger — see {@link TOUCH_POINTER_QUERY}.
122
+ */
123
+ function PointerDateField({
110
124
  label,
111
125
  isLabelHidden = false,
112
126
  description,
@@ -142,6 +156,9 @@ export function DateInput({
142
156
  isRequired,
143
157
  isOptional
144
158
  });
159
+ const {
160
+ locale
161
+ } = use(InternationalizationContext);
145
162
  const placeholder = placeholderFromProps ?? t('@astryx.dateInput.placeholder');
146
163
  const size = useSize(sizeProp, 'md');
147
164
  const id = useId();
@@ -219,13 +236,13 @@ export function DateInput({
219
236
  // with the ISO value; every other named member reuses Timestamp's shared
220
237
  // date mapping. Applies ONLY to the committed value, never to in-progress
221
238
  // typed input.
222
- const formatCommittedValue = useCallback(iso => typeof format === 'function' ? format(iso) : formatSharedDate(plainDateFromISO(iso), format), [format]);
239
+ const formatCommittedValue = useCallback(iso => typeof format === 'function' ? format(iso) : formatSharedDate(plainDateFromISO(iso), format, locale), [format, locale]);
223
240
 
224
241
  // Display value: pending input if typing, otherwise formatted value
225
242
  const displayValue = pendingInput !== null ? pendingInput : optimisticValue && /^\d{4}-\d{2}-\d{2}$/.test(optimisticValue) ? formatCommittedValue(optimisticValue) : '';
226
243
 
227
244
  // Check if current input is valid (for styling purposes)
228
- const isInputValid = pendingInput === null || !pendingInput.trim() ? true : parseDateInput(pendingInput) !== null;
245
+ const isInputValid = pendingInput === null || !pendingInput.trim() ? true : parseDateInput(pendingInput, locale) !== null;
229
246
  const popover = usePopover({
230
247
  dialogLabel: t('@astryx.dateInput.dialogLabel'),
231
248
  closeButtonLabel: t('@astryx.dateInput.closeCalendar'),
@@ -301,7 +318,7 @@ export function DateInput({
301
318
  setPendingInput(newValue);
302
319
 
303
320
  // If the input is valid and passes constraints, update immediately
304
- const parsed = parseDateInput(newValue);
321
+ const parsed = parseDateInput(newValue, locale);
305
322
  if (parsed && plainDateToISO(parsed) !== value && !isDateDisabled(parsed)) {
306
323
  const parsedISO = plainDateToISO(parsed);
307
324
  lastFiredValueRef.current = parsedISO;
@@ -309,7 +326,7 @@ export function DateInput({
309
326
  // Navigate calendar to show the parsed date's month
310
327
  calendarRef.current?.navigateTo(parsedISO);
311
328
  }
312
- }, [value, fireChange, isDateDisabled, isEffectivelyDisabled]);
329
+ }, [value, fireChange, isDateDisabled, isEffectivelyDisabled, locale]);
313
330
 
314
331
  // Commit pending input (shared by blur and Enter key)
315
332
  const commitPendingInput = useCallback(() => {
@@ -323,7 +340,7 @@ export function DateInput({
323
340
  setPendingInput(null);
324
341
  return;
325
342
  }
326
- const parsed = parseDateInput(pendingInput);
343
+ const parsed = parseDateInput(pendingInput, locale);
327
344
  if (parsed && !isDateDisabled(parsed)) {
328
345
  const parsedISO = plainDateToISO(parsed);
329
346
  if (parsedISO !== value) {
@@ -331,7 +348,7 @@ export function DateInput({
331
348
  }
332
349
  }
333
350
  setPendingInput(null);
334
- }, [pendingInput, value, fireChange, isDateDisabled]);
351
+ }, [pendingInput, value, fireChange, isDateDisabled, locale]);
335
352
 
336
353
  // Handle blur - validate, check constraints, and clear pending input
337
354
  const handleBlur = useCallback(() => {
@@ -437,13 +454,13 @@ export function DateInput({
437
454
  className: "x1lliihq x98rzlu xeuugli xc342km xng3xce x1717udv x9ynric xjm74w1 x6pjikd xw6l6zx x1tgivj0 xjbqb8w x1a2a7pz xeyghm5"
438
455
  },
439
456
  2: {
440
- className: "x1lliihq x98rzlu xeuugli xc342km xng3xce x1717udv x9ynric xjm74w1 x6pjikd xw6l6zx x1tgivj0 xjbqb8w x1a2a7pz xeyghm5 x1h6gzvc"
457
+ className: "x1lliihq x98rzlu xeuugli xc342km xng3xce x1717udv x9ynric xjm74w1 x6pjikd xw6l6zx x1tgivj0 xjbqb8w x1a2a7pz xeyghm5 xt0e3qv"
441
458
  },
442
459
  1: {
443
460
  className: "x1lliihq x98rzlu xeuugli xc342km xng3xce x1717udv x9ynric xjm74w1 x6pjikd xw6l6zx xjbqb8w x1a2a7pz xeyghm5 xv1l7n4"
444
461
  },
445
462
  3: {
446
- className: "x1lliihq x98rzlu xeuugli xc342km xng3xce x1717udv x9ynric xjm74w1 x6pjikd xw6l6zx xjbqb8w x1a2a7pz xeyghm5 x1h6gzvc xv1l7n4"
463
+ className: "x1lliihq x98rzlu xeuugli xc342km xng3xce x1717udv x9ynric xjm74w1 x6pjikd xw6l6zx xjbqb8w x1a2a7pz xeyghm5 xt0e3qv xv1l7n4"
447
464
  }
448
465
  }[!!isEffectivelyDisabled << 1 | !!!isInputValid << 0]
449
466
  }), /*#__PURE__*/_jsx(VisuallyHidden, {
@@ -497,4 +514,55 @@ export function DateInput({
497
514
  children: inputWrapper
498
515
  });
499
516
  }
517
+ PointerDateField.displayName = 'PointerDateField';
518
+
519
+ /**
520
+ * A date picker that fits the pointer it is being used with.
521
+ *
522
+ * With a mouse or trackpad this is a text input you can type into, with a
523
+ * calendar in a popover — unchanged, and still the surface every existing
524
+ * consumer gets. With a finger it is a picker built for one: a bottom sheet
525
+ * holding one month per screen, swiped sideways, with month and year wheels
526
+ * behind the header title for the far jumps swiping is bad at.
527
+ *
528
+ * The props are identical either way — this is one component with two
529
+ * surfaces, not two components — so nothing at the call site changes, and a
530
+ * date typed on a laptop and a date thumbed on a phone are the same value.
531
+ *
532
+ * ## Why a runtime switch and not CSS
533
+ *
534
+ * The two surfaces are structurally different — a popover anchored to a text
535
+ * field versus a full-width sheet holding a scroller — so "render both, hide
536
+ * one" would double the DOM, double the tab stops, and mount two calendars.
537
+ * The condition is not layout either: it is *which interaction is faster*,
538
+ * and that depends on the pointer, which CSS cannot hand to JS.
539
+ *
540
+ * They are two components rather than one with a branch inside because the
541
+ * hook lists differ; keeping them separate is what lets each own its own.
542
+ *
543
+ * ## Hydration
544
+ *
545
+ * `useMediaQuery` reports false during SSR, so server HTML is always the
546
+ * pointer field and the swap happens after hydration. That is deliberately
547
+ * unobservable: both surfaces render the SAME closed field — a bordered input
548
+ * with a calendar icon and the formatted date — and differ only in what
549
+ * opens. Nothing moves; the field just starts opening a sheet.
550
+ *
551
+ * @example
552
+ * ```
553
+ * <DateInput
554
+ * label="Event date"
555
+ * value={date}
556
+ * onChange={setDate}
557
+ * />
558
+ * ```
559
+ */
560
+ export function DateInput(props) {
561
+ const isTouch = useMediaQuery(TOUCH_POINTER_QUERY);
562
+ return isTouch ? /*#__PURE__*/_jsx(TouchDateField, {
563
+ ...props
564
+ }) : /*#__PURE__*/_jsx(PointerDateField, {
565
+ ...props
566
+ });
567
+ }
500
568
  DateInput.displayName = 'DateInput';
@@ -0,0 +1,35 @@
1
+ import { type DayOfWeek, type ISODateString, type PlainDate } from '../utils';
2
+ export interface MonthScrollerHandle {
3
+ /** Bring a month to rest at the top of the scrollport. */
4
+ scrollToMonth: (monthIndex: number, behavior?: ScrollBehavior) => void;
5
+ }
6
+ export interface MonthScrollerProps {
7
+ /** Imperative handle for programmatic navigation (Today, the wheels). */
8
+ handleRef?: React.RefObject<MonthScrollerHandle | null>;
9
+ /** First reachable month, as a month index. */
10
+ minMonthIndex: number;
11
+ /** Last reachable month, as a month index. */
12
+ maxMonthIndex: number;
13
+ /** Month to rest on at mount. */
14
+ initialMonthIndex: number;
15
+ /** Fires as the scroller passes each month, settled or not. */
16
+ onVisibleMonthChange: (monthIndex: number) => void;
17
+ /** Currently selected date. */
18
+ selectedDate: PlainDate | null;
19
+ /** Today, for the `aria-current` marker. */
20
+ today: PlainDate;
21
+ /** Whether a date fails min/max or a custom constraint. */
22
+ isDateDisabled: (date: PlainDate) => boolean;
23
+ /** First column of the week. */
24
+ weekStartsOn: DayOfWeek;
25
+ /** Fired when a day is tapped. */
26
+ onSelect: (value: ISODateString) => void;
27
+ }
28
+ /**
29
+ * A vertically continuous, snap-paged run of month grids.
30
+ */
31
+ export declare function MonthScroller({ handleRef, minMonthIndex, maxMonthIndex, initialMonthIndex, onVisibleMonthChange, selectedDate, today, isDateDisabled, weekStartsOn, onSelect, }: MonthScrollerProps): import("react").JSX.Element;
32
+ export declare namespace MonthScroller {
33
+ var displayName: string;
34
+ }
35
+ //# sourceMappingURL=MonthScroller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonthScroller.d.ts","sourceRoot":"","sources":["../../src/DateInput/MonthScroller.tsx"],"names":[],"mappings":"AAmDA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,SAAS,EAQf,MAAM,UAAU,CAAC;AA6MlB,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,+BAkapB;yBA7ae,aAAa"}