@astryxdesign/core 0.7.6-canary.e30ffbf → 0.7.6-canary.e3bd3d5

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 (447) hide show
  1. package/dist/Banner/Banner.d.ts.map +1 -1
  2. package/dist/Banner/Banner.js +4 -4
  3. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
  4. package/dist/BottomSheet/BottomSheet.js +31 -4
  5. package/dist/BottomSheet/BottomSheetPanel.d.ts +11 -1
  6. package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
  7. package/dist/BottomSheet/BottomSheetPanel.js +14 -1
  8. package/dist/BottomSheet/BottomSheetSwitcher.d.ts +10 -7
  9. package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
  10. package/dist/BottomSheet/BottomSheetSwitcher.js +26 -9
  11. package/dist/BottomSheet/BottomSheetSwitcherContext.d.ts +8 -0
  12. package/dist/BottomSheet/BottomSheetSwitcherContext.d.ts.map +1 -1
  13. package/dist/Button/Button.d.ts.map +1 -1
  14. package/dist/Button/Button.js +13 -7
  15. package/dist/Calendar/Calendar.d.ts.map +1 -1
  16. package/dist/Calendar/Calendar.js +6 -8
  17. package/dist/Calendar/hooks/useCalendarNavigation.d.ts.map +1 -1
  18. package/dist/Calendar/hooks/useCalendarNavigation.js +4 -7
  19. package/dist/Chat/ChatComposer.d.ts.map +1 -1
  20. package/dist/Chat/ChatComposer.js +5 -1
  21. package/dist/Chat/useTriggerMenu.d.ts +1 -1
  22. package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
  23. package/dist/Chat/useTriggerMenu.js +13 -28
  24. package/dist/CommandPalette/CommandPaletteEmpty.d.ts.map +1 -1
  25. package/dist/CommandPalette/CommandPaletteEmpty.js +1 -0
  26. package/dist/DateInput/MonthScroller.d.ts.map +1 -1
  27. package/dist/DateInput/MonthScroller.js +4 -3
  28. package/dist/DateInput/TouchDateField.d.ts.map +1 -1
  29. package/dist/DateInput/TouchDateField.js +4 -3
  30. package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -1
  31. package/dist/DateTimeInput/TouchDateTimeField.js +4 -3
  32. package/dist/Dialog/Dialog.d.ts +1 -1
  33. package/dist/Dialog/Dialog.d.ts.map +1 -1
  34. package/dist/Dialog/Dialog.js +20 -3
  35. package/dist/Drawer/Drawer.d.ts +1 -1
  36. package/dist/Drawer/Drawer.d.ts.map +1 -1
  37. package/dist/Drawer/Drawer.js +21 -3
  38. package/dist/Field/index.d.ts +1 -0
  39. package/dist/Field/index.d.ts.map +1 -1
  40. package/dist/Field/inputStyles.stylex.d.ts +12 -9
  41. package/dist/Field/inputStyles.stylex.d.ts.map +1 -1
  42. package/dist/Field/inputStyles.stylex.js +12 -9
  43. package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
  44. package/dist/FieldStatus/FieldStatus.js +1 -0
  45. package/dist/Grid/Grid.d.ts +6 -4
  46. package/dist/Grid/Grid.d.ts.map +1 -1
  47. package/dist/Heading/Heading.d.ts +5 -3
  48. package/dist/Heading/Heading.d.ts.map +1 -1
  49. package/dist/Heading/Heading.js +5 -3
  50. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  51. package/dist/HoverCard/useHoverCard.js +7 -0
  52. package/dist/InputGroup/groupStyles.d.ts.map +1 -1
  53. package/dist/InputGroup/groupStyles.js +12 -6
  54. package/dist/Item/Item.d.ts.map +1 -1
  55. package/dist/Item/Item.js +6 -2
  56. package/dist/Layer/layerStructureReset.stylex.d.ts +1 -0
  57. package/dist/Layer/layerStructureReset.stylex.d.ts.map +1 -1
  58. package/dist/Layer/layerStructureReset.stylex.js +1 -0
  59. package/dist/Layer/layerSurfacePress.d.ts +9 -0
  60. package/dist/Layer/layerSurfacePress.d.ts.map +1 -0
  61. package/dist/Layer/layerSurfacePress.js +39 -0
  62. package/dist/Layer/outsidePress.d.ts +25 -0
  63. package/dist/Layer/outsidePress.d.ts.map +1 -0
  64. package/dist/Layer/outsidePress.js +81 -0
  65. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  66. package/dist/ProgressBar/ProgressBar.js +3 -1
  67. package/dist/SideNav/SideNav.d.ts.map +1 -1
  68. package/dist/SideNav/SideNav.js +22 -15
  69. package/dist/SideNav/SideNavHeading.js +6 -2
  70. package/dist/Text/text.stylex.d.ts +2 -0
  71. package/dist/Text/text.stylex.d.ts.map +1 -1
  72. package/dist/Text/text.stylex.js +11 -0
  73. package/dist/Toast/Toast.d.ts.map +1 -1
  74. package/dist/Toast/Toast.js +1 -1
  75. package/dist/Token/Token.d.ts.map +1 -1
  76. package/dist/Token/Token.js +6 -1
  77. package/dist/Tooltip/Tooltip.d.ts +4 -3
  78. package/dist/Tooltip/Tooltip.d.ts.map +1 -1
  79. package/dist/Tooltip/useTooltip.d.ts +4 -3
  80. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  81. package/dist/Tooltip/useTooltip.js +40 -8
  82. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  83. package/dist/TopNav/TopNavHeading.js +8 -2
  84. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
  85. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +9 -2
  86. package/dist/TreeList/TreeList.d.ts.map +1 -1
  87. package/dist/TreeList/TreeList.js +62 -4
  88. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  89. package/dist/Typeahead/BaseTypeahead.js +40 -15
  90. package/dist/astryx.css +12 -5
  91. package/dist/gestures/GestureArena.d.ts +17 -3
  92. package/dist/gestures/GestureArena.d.ts.map +1 -1
  93. package/dist/gestures/GestureArena.js +70 -38
  94. package/dist/gestures/GestureHost.d.ts +330 -95
  95. package/dist/gestures/GestureHost.d.ts.map +1 -1
  96. package/dist/gestures/GestureHost.js +1304 -475
  97. package/dist/gestures/GestureRecognizer.d.ts +56 -17
  98. package/dist/gestures/GestureRecognizer.d.ts.map +1 -1
  99. package/dist/gestures/GestureRecognizer.js +28 -2
  100. package/dist/gestures/LongPressGestureRecognizer.d.ts +2 -0
  101. package/dist/gestures/LongPressGestureRecognizer.d.ts.map +1 -1
  102. package/dist/gestures/LongPressGestureRecognizer.js +14 -1
  103. package/dist/gestures/PanGestureRecognizer.d.ts +11 -0
  104. package/dist/gestures/PanGestureRecognizer.d.ts.map +1 -1
  105. package/dist/gestures/PanGestureRecognizer.js +25 -0
  106. package/dist/gestures/PinchGestureRecognizer.d.ts +3 -2
  107. package/dist/gestures/PinchGestureRecognizer.d.ts.map +1 -1
  108. package/dist/gestures/PinchGestureRecognizer.js +10 -8
  109. package/dist/gestures/PressTracker.d.ts +31 -3
  110. package/dist/gestures/PressTracker.d.ts.map +1 -1
  111. package/dist/gestures/PressTracker.js +25 -6
  112. package/dist/gestures/TapGestureRecognizer.d.ts +2 -0
  113. package/dist/gestures/TapGestureRecognizer.d.ts.map +1 -1
  114. package/dist/gestures/TapGestureRecognizer.js +5 -0
  115. package/dist/gestures/VelocityTracker.d.ts +12 -0
  116. package/dist/gestures/VelocityTracker.d.ts.map +1 -1
  117. package/dist/gestures/VelocityTracker.js +38 -0
  118. package/dist/gestures/fingerScroll.d.ts +14 -0
  119. package/dist/gestures/fingerScroll.d.ts.map +1 -0
  120. package/dist/gestures/fingerScroll.js +181 -0
  121. package/dist/gestures/gestureSync.d.ts +12 -0
  122. package/dist/gestures/gestureSync.d.ts.map +1 -0
  123. package/dist/gestures/gestureSync.js +59 -0
  124. package/dist/gestures/haptics.d.ts +6 -3
  125. package/dist/gestures/haptics.d.ts.map +1 -1
  126. package/dist/gestures/haptics.js +8 -5
  127. package/dist/gestures/hostRegistry.d.ts +15 -0
  128. package/dist/gestures/hostRegistry.d.ts.map +1 -0
  129. package/dist/gestures/hostRegistry.js +16 -0
  130. package/dist/gestures/index.d.ts +6 -2
  131. package/dist/gestures/index.d.ts.map +1 -1
  132. package/dist/gestures/index.js +3 -1
  133. package/dist/gestures/nativeScroll.d.ts +2 -32
  134. package/dist/gestures/nativeScroll.d.ts.map +1 -1
  135. package/dist/gestures/nativeScroll.js +5 -17
  136. package/dist/gestures/pageHold.d.ts +21 -0
  137. package/dist/gestures/pageHold.d.ts.map +1 -0
  138. package/dist/gestures/pageHold.js +216 -0
  139. package/dist/gestures/recognizerInternals.d.ts +52 -0
  140. package/dist/gestures/recognizerInternals.d.ts.map +1 -0
  141. package/dist/gestures/recognizerInternals.js +33 -0
  142. package/dist/gestures/selectionLock.d.ts +10 -0
  143. package/dist/gestures/selectionLock.d.ts.map +1 -0
  144. package/dist/gestures/selectionLock.js +12 -0
  145. package/dist/gestures/touchAction.d.ts +10 -12
  146. package/dist/gestures/touchAction.d.ts.map +1 -1
  147. package/dist/gestures/touchAction.js +13 -21
  148. package/dist/gestures/types.d.ts +17 -0
  149. package/dist/gestures/types.d.ts.map +1 -1
  150. package/dist/gestures/useFingerScroll.d.ts +35 -0
  151. package/dist/gestures/useFingerScroll.d.ts.map +1 -0
  152. package/dist/gestures/useFingerScroll.js +70 -0
  153. package/dist/gestures/useGestureRecognizer.d.ts +23 -15
  154. package/dist/gestures/useGestureRecognizer.d.ts.map +1 -1
  155. package/dist/gestures/useGestureRecognizer.js +51 -160
  156. package/dist/gestures/usePressTracker.d.ts +34 -0
  157. package/dist/gestures/usePressTracker.d.ts.map +1 -0
  158. package/dist/gestures/usePressTracker.js +168 -0
  159. package/dist/hooks/ModalAnnounceProvider.d.ts +2 -2
  160. package/dist/hooks/ModalAnnounceProvider.d.ts.map +1 -1
  161. package/dist/hooks/ModalAnnounceProvider.js +9 -7
  162. package/dist/hooks/useAttachment.d.ts +22 -0
  163. package/dist/hooks/useAttachment.d.ts.map +1 -0
  164. package/dist/hooks/useAttachment.js +50 -0
  165. package/dist/hooks/useClickableContainer.d.ts +3 -0
  166. package/dist/hooks/useClickableContainer.d.ts.map +1 -1
  167. package/dist/hooks/useClickableContainer.js +11 -1
  168. package/dist/hooks/useKeyboardHint.d.ts.map +1 -1
  169. package/dist/hooks/useKeyboardHint.js +7 -1
  170. package/dist/hooks/useLongPress.d.ts +21 -0
  171. package/dist/hooks/useLongPress.d.ts.map +1 -1
  172. package/dist/hooks/useLongPress.js +48 -7
  173. package/dist/hooks/useMenuPress.d.ts +12 -2
  174. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  175. package/dist/hooks/useMenuPress.js +71 -91
  176. package/dist/hooks/useSettledOpen.d.ts +16 -0
  177. package/dist/hooks/useSettledOpen.d.ts.map +1 -0
  178. package/dist/hooks/useSettledOpen.js +44 -0
  179. package/dist/hooks/useTreeFocus.d.ts +11 -1
  180. package/dist/hooks/useTreeFocus.d.ts.map +1 -1
  181. package/dist/hooks/useTreeFocus.js +19 -3
  182. package/dist/i18n/generated-locales/af-ZA.generated.d.ts.map +1 -1
  183. package/dist/i18n/generated-locales/af-ZA.generated.js +2 -2
  184. package/dist/i18n/generated-locales/ar-SA.generated.d.ts.map +1 -1
  185. package/dist/i18n/generated-locales/ar-SA.generated.js +2 -2
  186. package/dist/i18n/generated-locales/ca-ES.generated.d.ts.map +1 -1
  187. package/dist/i18n/generated-locales/ca-ES.generated.js +2 -2
  188. package/dist/i18n/generated-locales/cs-CZ.generated.d.ts.map +1 -1
  189. package/dist/i18n/generated-locales/cs-CZ.generated.js +2 -2
  190. package/dist/i18n/generated-locales/da-DK.generated.d.ts.map +1 -1
  191. package/dist/i18n/generated-locales/da-DK.generated.js +2 -2
  192. package/dist/i18n/generated-locales/de-DE.generated.d.ts.map +1 -1
  193. package/dist/i18n/generated-locales/de-DE.generated.js +2 -2
  194. package/dist/i18n/generated-locales/el-GR.generated.d.ts.map +1 -1
  195. package/dist/i18n/generated-locales/el-GR.generated.js +2 -2
  196. package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
  197. package/dist/i18n/generated-locales/en.generated.js +2 -2
  198. package/dist/i18n/generated-locales/es-ES.generated.d.ts.map +1 -1
  199. package/dist/i18n/generated-locales/es-ES.generated.js +2 -2
  200. package/dist/i18n/generated-locales/fi-FI.generated.d.ts.map +1 -1
  201. package/dist/i18n/generated-locales/fi-FI.generated.js +2 -2
  202. package/dist/i18n/generated-locales/fr-FR.generated.d.ts.map +1 -1
  203. package/dist/i18n/generated-locales/fr-FR.generated.js +2 -2
  204. package/dist/i18n/generated-locales/he-IL.generated.d.ts.map +1 -1
  205. package/dist/i18n/generated-locales/he-IL.generated.js +2 -2
  206. package/dist/i18n/generated-locales/hu-HU.generated.d.ts.map +1 -1
  207. package/dist/i18n/generated-locales/hu-HU.generated.js +2 -2
  208. package/dist/i18n/generated-locales/it-IT.generated.d.ts.map +1 -1
  209. package/dist/i18n/generated-locales/it-IT.generated.js +2 -2
  210. package/dist/i18n/generated-locales/ja-JP.generated.d.ts.map +1 -1
  211. package/dist/i18n/generated-locales/ja-JP.generated.js +2 -2
  212. package/dist/i18n/generated-locales/ko-KR.generated.d.ts.map +1 -1
  213. package/dist/i18n/generated-locales/ko-KR.generated.js +2 -2
  214. package/dist/i18n/generated-locales/nl-NL.generated.d.ts.map +1 -1
  215. package/dist/i18n/generated-locales/nl-NL.generated.js +2 -2
  216. package/dist/i18n/generated-locales/no-NO.generated.d.ts.map +1 -1
  217. package/dist/i18n/generated-locales/no-NO.generated.js +2 -2
  218. package/dist/i18n/generated-locales/pl-PL.generated.d.ts.map +1 -1
  219. package/dist/i18n/generated-locales/pl-PL.generated.js +2 -2
  220. package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
  221. package/dist/i18n/generated-locales/pseudo.generated.js +2 -2
  222. package/dist/i18n/generated-locales/pt-BR.generated.d.ts.map +1 -1
  223. package/dist/i18n/generated-locales/pt-BR.generated.js +2 -2
  224. package/dist/i18n/generated-locales/pt-PT.generated.d.ts.map +1 -1
  225. package/dist/i18n/generated-locales/pt-PT.generated.js +2 -2
  226. package/dist/i18n/generated-locales/ro-RO.generated.d.ts.map +1 -1
  227. package/dist/i18n/generated-locales/ro-RO.generated.js +2 -2
  228. package/dist/i18n/generated-locales/ru-RU.generated.d.ts.map +1 -1
  229. package/dist/i18n/generated-locales/ru-RU.generated.js +2 -2
  230. package/dist/i18n/generated-locales/sr-SP.generated.d.ts.map +1 -1
  231. package/dist/i18n/generated-locales/sr-SP.generated.js +2 -2
  232. package/dist/i18n/generated-locales/sv-SE.generated.d.ts.map +1 -1
  233. package/dist/i18n/generated-locales/sv-SE.generated.js +2 -2
  234. package/dist/i18n/generated-locales/tr-TR.generated.d.ts.map +1 -1
  235. package/dist/i18n/generated-locales/tr-TR.generated.js +2 -2
  236. package/dist/i18n/generated-locales/uk-UA.generated.d.ts.map +1 -1
  237. package/dist/i18n/generated-locales/uk-UA.generated.js +2 -2
  238. package/dist/i18n/generated-locales/vi-VN.generated.d.ts.map +1 -1
  239. package/dist/i18n/generated-locales/vi-VN.generated.js +2 -2
  240. package/dist/i18n/generated-locales/zh-CN.generated.d.ts.map +1 -1
  241. package/dist/i18n/generated-locales/zh-CN.generated.js +2 -2
  242. package/dist/i18n/generated-locales/zh-TW.generated.d.ts.map +1 -1
  243. package/dist/i18n/generated-locales/zh-TW.generated.js +2 -2
  244. package/dist/motion/animatedLayout.d.ts.map +1 -1
  245. package/dist/motion/animatedLayout.js +96 -3
  246. package/dist/motion/animator.d.ts.map +1 -1
  247. package/dist/motion/animator.js +94 -4
  248. package/dist/motion/presentation.d.ts +44 -0
  249. package/dist/motion/presentation.d.ts.map +1 -0
  250. package/dist/motion/presentation.js +127 -0
  251. package/dist/motion/uikit/gestures.d.ts +9 -18
  252. package/dist/motion/uikit/gestures.d.ts.map +1 -1
  253. package/dist/motion/uikit/gestures.js +14 -9
  254. package/dist/motion/uikit/longPress.d.ts +26 -0
  255. package/dist/motion/uikit/longPress.d.ts.map +1 -0
  256. package/dist/motion/uikit/longPress.js +29 -0
  257. package/dist/privateAttributes/hapticSwitch.stylex.d.ts +5 -0
  258. package/dist/privateAttributes/hapticSwitch.stylex.d.ts.map +1 -0
  259. package/dist/privateAttributes/hapticSwitch.stylex.js +27 -0
  260. package/dist/utils/clickGuard.d.ts +34 -0
  261. package/dist/utils/clickGuard.d.ts.map +1 -0
  262. package/dist/utils/clickGuard.js +150 -0
  263. package/dist/utils/coarsePointer.d.ts +8 -0
  264. package/dist/utils/coarsePointer.d.ts.map +1 -0
  265. package/dist/utils/coarsePointer.js +47 -0
  266. package/dist/utils/flatTree.d.ts +17 -0
  267. package/dist/utils/flatTree.d.ts.map +1 -0
  268. package/dist/utils/flatTree.js +38 -0
  269. package/dist/utils/inputStream.d.ts +17 -0
  270. package/dist/utils/inputStream.d.ts.map +1 -0
  271. package/dist/utils/inputStream.js +149 -0
  272. package/dist/utils/plainDate.d.ts +9 -0
  273. package/dist/utils/plainDate.d.ts.map +1 -1
  274. package/dist/utils/plainDate.js +25 -0
  275. package/dist/utils/pressFeedback.d.ts.map +1 -1
  276. package/dist/utils/pressFeedback.js +72 -27
  277. package/dist/utils/selectionLock.d.ts +14 -0
  278. package/dist/utils/selectionLock.d.ts.map +1 -0
  279. package/dist/utils/selectionLock.js +164 -0
  280. package/dist/utils/sharedMutationObserver.d.ts +2 -2
  281. package/dist/utils/sharedMutationObserver.js +2 -2
  282. package/dist/utils/standaloneMonthCapitals.generated.d.ts +7 -0
  283. package/dist/utils/standaloneMonthCapitals.generated.d.ts.map +1 -0
  284. package/dist/utils/standaloneMonthCapitals.generated.js +9 -0
  285. package/dist/utils/touchPresentation.d.ts +2 -7
  286. package/dist/utils/touchPresentation.d.ts.map +1 -1
  287. package/dist/utils/touchPresentation.js +4 -7
  288. package/dist/utils/touchQueries.d.ts +17 -1
  289. package/dist/utils/touchQueries.d.ts.map +1 -1
  290. package/dist/utils/touchQueries.js +20 -2
  291. package/locales/af-ZA.json +2 -2
  292. package/locales/ar-SA.json +2 -2
  293. package/locales/ca-ES.json +2 -2
  294. package/locales/cs-CZ.json +2 -2
  295. package/locales/da-DK.json +2 -2
  296. package/locales/de-DE.json +2 -2
  297. package/locales/el-GR.json +2 -2
  298. package/locales/en.json +4 -4
  299. package/locales/es-ES.json +2 -2
  300. package/locales/fi-FI.json +2 -2
  301. package/locales/fr-FR.json +2 -2
  302. package/locales/he-IL.json +2 -2
  303. package/locales/hu-HU.json +2 -2
  304. package/locales/it-IT.json +2 -2
  305. package/locales/ja-JP.json +2 -2
  306. package/locales/ko-KR.json +2 -2
  307. package/locales/nl-NL.json +2 -2
  308. package/locales/no-NO.json +2 -2
  309. package/locales/pl-PL.json +2 -2
  310. package/locales/pseudo.json +2 -2
  311. package/locales/pt-BR.json +2 -2
  312. package/locales/pt-PT.json +2 -2
  313. package/locales/ro-RO.json +2 -2
  314. package/locales/ru-RU.json +2 -2
  315. package/locales/sr-SP.json +2 -2
  316. package/locales/sv-SE.json +2 -2
  317. package/locales/tr-TR.json +2 -2
  318. package/locales/uk-UA.json +2 -2
  319. package/locales/vi-VN.json +2 -2
  320. package/locales/zh-CN.json +2 -2
  321. package/locales/zh-TW.json +2 -2
  322. package/package.json +4 -4
  323. package/src/Banner/Banner.tsx +4 -0
  324. package/src/BottomSheet/BottomSheet.tsx +38 -1
  325. package/src/BottomSheet/BottomSheetPanel.tsx +25 -0
  326. package/src/BottomSheet/BottomSheetSwitcher.tsx +31 -8
  327. package/src/BottomSheet/BottomSheetSwitcherContext.ts +8 -0
  328. package/src/Button/Button.tsx +10 -3
  329. package/src/Calendar/Calendar.tsx +11 -10
  330. package/src/Calendar/hooks/useCalendarNavigation.ts +9 -10
  331. package/src/Chat/ChatComposer.tsx +6 -1
  332. package/src/Chat/useTriggerMenu.tsx +17 -27
  333. package/src/CommandPalette/CommandPaletteEmpty.tsx +2 -0
  334. package/src/DateInput/MonthScroller.tsx +2 -3
  335. package/src/DateInput/TouchDateField.tsx +2 -3
  336. package/src/DateTimeInput/TouchDateTimeField.tsx +2 -3
  337. package/src/Dialog/Dialog.tsx +20 -2
  338. package/src/Drawer/Drawer.tsx +24 -2
  339. package/src/Field/index.ts +1 -0
  340. package/src/Field/inputStyles.stylex.ts +46 -9
  341. package/src/FieldStatus/FieldStatus.tsx +2 -0
  342. package/src/Grid/Grid.doc.mjs +4 -4
  343. package/src/Grid/Grid.tsx +6 -4
  344. package/src/Heading/Heading.tsx +5 -3
  345. package/src/HoverCard/useHoverCard.tsx +7 -0
  346. package/src/InputGroup/groupStyles.ts +9 -2
  347. package/src/Item/Item.tsx +11 -2
  348. package/src/Layer/layerStructureReset.stylex.ts +5 -0
  349. package/src/Layer/layerSurfacePress.ts +39 -0
  350. package/src/Layer/outsidePress.ts +99 -0
  351. package/src/ProgressBar/ProgressBar.tsx +3 -1
  352. package/src/SideNav/SideNav.tsx +37 -25
  353. package/src/SideNav/SideNavHeading.tsx +2 -2
  354. package/src/Text/Heading.doc.mjs +52 -3
  355. package/src/Text/Text.doc.mjs +1 -1
  356. package/src/Text/text.stylex.ts +12 -0
  357. package/src/Toast/Toast.tsx +2 -0
  358. package/src/Token/Token.tsx +8 -1
  359. package/src/Tooltip/Tooltip.tsx +4 -3
  360. package/src/Tooltip/useTooltip.doc.mjs +2 -2
  361. package/src/Tooltip/useTooltip.tsx +58 -15
  362. package/src/TopNav/TopNavHeading.tsx +8 -2
  363. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +9 -2
  364. package/src/TreeList/TreeList.tsx +85 -8
  365. package/src/Typeahead/BaseTypeahead.tsx +47 -15
  366. package/src/gestures/GestureArena.ts +91 -38
  367. package/src/gestures/GestureHost.ts +1561 -561
  368. package/src/gestures/GestureRecognizer.ts +69 -18
  369. package/src/gestures/LongPressGestureRecognizer.ts +20 -1
  370. package/src/gestures/PanGestureRecognizer.ts +35 -0
  371. package/src/gestures/PinchGestureRecognizer.ts +13 -8
  372. package/src/gestures/PressTracker.ts +55 -8
  373. package/src/gestures/README.md +313 -51
  374. package/src/gestures/TapGestureRecognizer.ts +5 -0
  375. package/src/gestures/VelocityTracker.ts +35 -0
  376. package/src/gestures/fingerScroll.ts +208 -0
  377. package/src/gestures/gestureSync.ts +60 -0
  378. package/src/gestures/haptics.ts +8 -5
  379. package/src/gestures/hostRegistry.ts +18 -0
  380. package/src/gestures/index.ts +6 -5
  381. package/src/gestures/nativeScroll.ts +6 -20
  382. package/src/gestures/pageHold.ts +265 -0
  383. package/src/gestures/recognizerInternals.ts +77 -0
  384. package/src/gestures/selectionLock.ts +12 -0
  385. package/src/gestures/touchAction.ts +12 -24
  386. package/src/gestures/types.ts +18 -0
  387. package/src/gestures/useFingerScroll.ts +78 -0
  388. package/src/gestures/useGestureRecognizer.ts +70 -209
  389. package/src/gestures/usePressTracker.ts +212 -0
  390. package/src/hooks/ModalAnnounceProvider.tsx +12 -9
  391. package/src/hooks/useAttachment.ts +59 -0
  392. package/src/hooks/useClickableContainer.ts +11 -1
  393. package/src/hooks/useKeyboardHint.tsx +7 -1
  394. package/src/hooks/useLongPress.ts +62 -8
  395. package/src/hooks/useMenuPress.ts +80 -102
  396. package/src/hooks/useSettledOpen.ts +51 -0
  397. package/src/hooks/useTreeFocus.ts +33 -3
  398. package/src/i18n/generated-locales/af-ZA.generated.ts +3 -2
  399. package/src/i18n/generated-locales/ar-SA.generated.ts +3 -2
  400. package/src/i18n/generated-locales/ca-ES.generated.ts +3 -2
  401. package/src/i18n/generated-locales/cs-CZ.generated.ts +3 -2
  402. package/src/i18n/generated-locales/da-DK.generated.ts +3 -2
  403. package/src/i18n/generated-locales/de-DE.generated.ts +3 -2
  404. package/src/i18n/generated-locales/el-GR.generated.ts +3 -2
  405. package/src/i18n/generated-locales/en.generated.ts +3 -2
  406. package/src/i18n/generated-locales/es-ES.generated.ts +3 -2
  407. package/src/i18n/generated-locales/fi-FI.generated.ts +3 -2
  408. package/src/i18n/generated-locales/fr-FR.generated.ts +3 -2
  409. package/src/i18n/generated-locales/he-IL.generated.ts +3 -2
  410. package/src/i18n/generated-locales/hu-HU.generated.ts +3 -2
  411. package/src/i18n/generated-locales/it-IT.generated.ts +3 -2
  412. package/src/i18n/generated-locales/ja-JP.generated.ts +3 -2
  413. package/src/i18n/generated-locales/ko-KR.generated.ts +3 -2
  414. package/src/i18n/generated-locales/nl-NL.generated.ts +3 -2
  415. package/src/i18n/generated-locales/no-NO.generated.ts +3 -2
  416. package/src/i18n/generated-locales/pl-PL.generated.ts +3 -2
  417. package/src/i18n/generated-locales/pseudo.generated.ts +3 -2
  418. package/src/i18n/generated-locales/pt-BR.generated.ts +3 -2
  419. package/src/i18n/generated-locales/pt-PT.generated.ts +3 -2
  420. package/src/i18n/generated-locales/ro-RO.generated.ts +3 -2
  421. package/src/i18n/generated-locales/ru-RU.generated.ts +3 -2
  422. package/src/i18n/generated-locales/sr-SP.generated.ts +3 -2
  423. package/src/i18n/generated-locales/sv-SE.generated.ts +3 -2
  424. package/src/i18n/generated-locales/tr-TR.generated.ts +3 -2
  425. package/src/i18n/generated-locales/uk-UA.generated.ts +3 -2
  426. package/src/i18n/generated-locales/vi-VN.generated.ts +3 -2
  427. package/src/i18n/generated-locales/zh-CN.generated.ts +3 -2
  428. package/src/i18n/generated-locales/zh-TW.generated.ts +3 -2
  429. package/src/motion/MEASUREMENTS.md +1 -1
  430. package/src/motion/README.md +11 -0
  431. package/src/motion/animatedLayout.ts +102 -3
  432. package/src/motion/animator.ts +94 -5
  433. package/src/motion/presentation.ts +149 -0
  434. package/src/motion/uikit/gestures.ts +15 -8
  435. package/src/motion/uikit/longPress.ts +29 -0
  436. package/src/privateAttributes/hapticSwitch.stylex.ts +27 -0
  437. package/src/utils/clickGuard.ts +167 -0
  438. package/src/utils/coarsePointer.ts +53 -0
  439. package/src/utils/flatTree.ts +40 -0
  440. package/src/utils/inputStream.ts +168 -0
  441. package/src/utils/plainDate.ts +28 -0
  442. package/src/utils/pressFeedback.ts +73 -22
  443. package/src/utils/selectionLock.ts +193 -0
  444. package/src/utils/sharedMutationObserver.ts +2 -2
  445. package/src/utils/standaloneMonthCapitals.generated.ts +17 -0
  446. package/src/utils/touchPresentation.ts +4 -7
  447. package/src/utils/touchQueries.ts +24 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Banner.d.ts","sourceRoot":"","sources":["../../src/Banner/Banner.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,EAA0B,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE9D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAgB5C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,+BAA+B,CAAC;AAErE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAI9C,OAAO,KAAK,EAAC,eAAe,EAAE,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAMjE;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC;AAEvD,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC5D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,MAAM,EAAE,YAAY,CAAC;IACrB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;;;;;;;;;;;;;;OAkBG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AA4QD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,wBAAgB,MAAM,CAAC,EACrB,MAAM,EACN,KAAK,EACL,WAAW,EACX,IAAI,EACJ,aAAqB,EACrB,SAAS,EACT,YAAY,EACZ,UAAU,EACV,SAAkB,EAClB,SAAkB,EAClB,WAAkB,EAClB,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,cAAc,EACd,oBAAoB,EACpB,GAAG,IAAI,EACR,EAAE,WAAW,sCAqQb;yBAzRe,MAAM"}
1
+ {"version":3,"file":"Banner.d.ts","sourceRoot":"","sources":["../../src/Banner/Banner.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,EAA0B,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE9D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAgB5C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,+BAA+B,CAAC;AAErE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAI9C,OAAO,KAAK,EAAC,eAAe,EAAE,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAMjE;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC;AAEvD,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC5D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,MAAM,EAAE,YAAY,CAAC;IACrB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;;;;;;;;;;;;;;OAkBG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAgRD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,wBAAgB,MAAM,CAAC,EACrB,MAAM,EACN,KAAK,EACL,WAAW,EACX,IAAI,EACJ,aAAqB,EACrB,SAAS,EACT,YAAY,EACZ,UAAU,EACV,SAAkB,EAClB,SAAkB,EAClB,WAAkB,EAClB,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,cAAc,EACd,oBAAoB,EACpB,GAAG,IAAI,EACR,EAAE,WAAW,sCAqQb;yBAzRe,MAAM"}
@@ -471,20 +471,20 @@ export function Banner({
471
471
  children: [/*#__PURE__*/_jsx("div", {
472
472
  ...{
473
473
  0: {
474
- className: "x1ghz6dp xjb2p0i xcr08ib x2mo6ok x1kq96og x1tgivj0 xj0a0fe"
474
+ className: "x1ghz6dp xjb2p0i xcr08ib x2mo6ok x1kq96og x1tgivj0 xj0a0fe x5ujdhh"
475
475
  },
476
476
  1: {
477
- className: "x1ghz6dp xjb2p0i xcr08ib x2mo6ok x1kq96og xj0a0fe x1heor9g"
477
+ className: "x1ghz6dp xjb2p0i xcr08ib x2mo6ok x1kq96og xj0a0fe x5ujdhh x1heor9g"
478
478
  }
479
479
  }[!!hasStatusStyle(status) << 0],
480
480
  children: title
481
481
  }), isRenderable(description) && /*#__PURE__*/_jsx("div", {
482
482
  ...mergeProps(themeProps('banner-description'), {
483
483
  0: {
484
- className: "x1ghz6dp xjb2p0i x141an7d x1sodnla x1ltkj2j xv1l7n4 xj0a0fe"
484
+ className: "x1ghz6dp xjb2p0i x141an7d x1sodnla x1ltkj2j xv1l7n4 xj0a0fe x5ujdhh"
485
485
  },
486
486
  1: {
487
- className: "x1ghz6dp xjb2p0i x141an7d x1sodnla x1ltkj2j xj0a0fe x1heor9g"
487
+ className: "x1ghz6dp xjb2p0i x141an7d x1sodnla x1ltkj2j xj0a0fe x5ujdhh x1heor9g"
488
488
  }
489
489
  }[!!hasStatusStyle(status) << 0]),
490
490
  children: description
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheet.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyEG;AAEH,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAuDhD,YAAY,EAAC,iBAAiB,EAAE,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AAChF,OAAO,KAAK,EAAC,iBAAiB,EAAE,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AAsJhF,UAAU,sBAAuB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAChE,qDAAqD;IACrD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IAEd,0EAA0E;IAC1E,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB,wGAAwG;IACxG,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;IAE7C;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAEjD;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,UAAU,0BAA2B,SAAQ,sBAAsB;IACjE,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,UAAU,wBAAyB,SAAQ,sBAAsB;IAC/D;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,MAAM,gBAAgB,GAC1B,0BAA0B,GAAG,wBAAwB,CAAC;AAo0BxD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BA6BlD;yBA7Be,WAAW"}
1
+ {"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheet.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyEG;AAEH,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAuDhD,YAAY,EAAC,iBAAiB,EAAE,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AAChF,OAAO,KAAK,EAAC,iBAAiB,EAAE,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AA6JhF,UAAU,sBAAuB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAChE,qDAAqD;IACrD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IAEd,0EAA0E;IAC1E,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB,wGAAwG;IACxG,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;IAE7C;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAEjD;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,UAAU,0BAA2B,SAAQ,sBAAsB;IACjE,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,UAAU,wBAAyB,SAAQ,sBAAsB;IAC/D;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,MAAM,gBAAgB,GAC1B,0BAA0B,GAAG,wBAAwB,CAAC;AAg2BxD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BA6BlD;yBA7Be,WAAW"}
@@ -77,6 +77,8 @@
77
77
  * - /packages/cli/assets/templates/blocks/components/BottomSheet/BottomSheetShowcase.tsx
78
78
  */
79
79
  import { use, useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
80
+ import { useIsHydrating } from "../hooks/useIsHydrating.js";
81
+ import { useSettledOpen } from "../hooks/useSettledOpen.js";
80
82
  import * as stylex from '@stylexjs/stylex';
81
83
  import "../theme/tokens.stylex.js";
82
84
  import { colorVars, durationVars, easeVars, spacingVars } from "../theme/tokens.stylex.js";
@@ -151,6 +153,10 @@ const styles = {
151
153
  k4oj2o: "x15l12jy",
152
154
  $$css: true
153
155
  },
156
+ scrimSettled: {
157
+ k9an0g: "x108qnu8",
158
+ $$css: true
159
+ },
154
160
  scrimClosing: {
155
161
  kb4ib: "x1cz9k3x",
156
162
  $$css: true
@@ -272,7 +278,20 @@ function StandaloneBottomSheet({
272
278
  // state stays the consumer's; nothing here writes it.
273
279
  const host = use(BottomSheetHostContext);
274
280
  const isHostOpen = host?.isOpen ?? true;
275
- const isOpen = isOpenProp && isHostOpen;
281
+ // A sheet open on the server renders closed until hydration, and opens in
282
+ // the render after it, the first one that can enter its native host: a
283
+ // <dialog> painted open with aria-modal before it is modal claims a state it
284
+ // does not have (FR17).
285
+ const isHydrating = useIsHydrating();
286
+ const isOpen = isOpenProp && isHostOpen && !isHydrating;
287
+ // A sheet open on the server was present on page load, so it opens settled,
288
+ // with no rise or fade-in; its later opens and closes animate as usual
289
+ // (spec:AST-013 FR13). It latches on its own request, not its host's state:
290
+ // a host sheet hydrating reads as closed to the sheets inside it.
291
+ // The latch is released when the settled entry's transition ends, so a
292
+ // drag's settle later in the same open glides as usual.
293
+ const [settledOpen, releaseSettledOpen] = useSettledOpen(isOpenProp, isOpen, false);
294
+ const isEntrySettled = settledOpen && isOpen;
276
295
  // Presentation outlives the controlled prop: a closing sheet stays mounted
277
296
  // and in its native host through its exit, and only its motion completion
278
297
  // (or a replace finishing) clears it. The open flip is derived during
@@ -589,7 +608,7 @@ function StandaloneBottomSheet({
589
608
  // The dialog is the panel's positioner, so the stack's recede
590
609
  // transforms the dialog: panel, grabber and all shrink and lift as
591
610
  // one. The backdrop is not a descendant and stays put.
592
- ...stackPositionerStyles(stackView), hasScrim && styles.scrim, hasScrim && isExiting && styles.scrimClosing, !hasScrim && styles.dialogNonModal),
611
+ ...stackPositionerStyles(stackView), hasScrim && styles.scrim, hasScrim && isEntrySettled && styles.scrimSettled, hasScrim && isExiting && styles.scrimClosing, !hasScrim && styles.dialogNonModal),
593
612
  ref: dialogComposedRef
594
613
  // A non-modal sheet is hosted in the top layer as a manual popover
595
614
  // (no light dismiss, no backdrop), so sheets order by presentation
@@ -611,6 +630,8 @@ function StandaloneBottomSheet({
611
630
  ...props,
612
631
  ref: ref,
613
632
  state: panelState,
633
+ isEntrySettled: isEntrySettled,
634
+ onEntrySettled: releaseSettledOpen,
614
635
  isOpenRequested: isOpen,
615
636
  height: height,
616
637
  label: label,
@@ -672,7 +693,9 @@ function SwitcherBottomSheetItem({
672
693
  dialogProps,
673
694
  onDialogCancel,
674
695
  onDialogClick,
675
- onDialogKeyDown
696
+ onDialogKeyDown,
697
+ settledSheet,
698
+ releaseSettledSheet
676
699
  } = switcher;
677
700
  const hasValidSheetId = typeof sheetId === 'string' && sheetId.length > 0;
678
701
  const phase = hasValidSheetId ? getSheetPhase(sheetId) : 'hidden';
@@ -681,6 +704,8 @@ function SwitcherBottomSheetItem({
681
704
  const isInteractive = phase === 'active' || phase === 'entering';
682
705
  const isInactive = phase === 'covered' || phase === 'aligning' || phase === 'fading' || phase === 'exiting';
683
706
  const isPresented = phase !== 'hidden';
707
+ // The step open on the server opens settled (spec:AST-013 FR13).
708
+ const isEntrySettled = hasValidSheetId && isPresented && settledSheet === sheetId;
684
709
  const isTopSheet = phase === 'active' || phase === 'entering';
685
710
  const ownsScrim = hasValidSheetId && isScrimOwner(sheetId);
686
711
  // The flow is one level of the bottom-sheet stack; a sheet outside the flow
@@ -833,7 +858,7 @@ function SwitcherBottomSheetItem({
833
858
  'data-testid': switcherTestId,
834
859
  ...switcherDialogProps
835
860
  } = dialogProps;
836
- const dialogPresentationProps = mergeProps(stylex.props(styles.dialog, isPresented && styles.dialogOpen, hasScrim && styles.scrim, hasScrim && ownsScrim && isFlowClosing && styles.scrimClosing, !hasScrim && styles.dialogNonModalItem, !hasScrim && isTopSheet && styles.dialogNonModalItemTop, switcherXstyle), switcherClassName, switcherStyle);
861
+ const dialogPresentationProps = mergeProps(stylex.props(styles.dialog, isPresented && styles.dialogOpen, hasScrim && styles.scrim, hasScrim && isEntrySettled && styles.scrimSettled, hasScrim && ownsScrim && isFlowClosing && styles.scrimClosing, !hasScrim && styles.dialogNonModalItem, !hasScrim && isTopSheet && styles.dialogNonModalItemTop, switcherXstyle), switcherClassName, switcherStyle);
837
862
  return /*#__PURE__*/_jsxs("dialog", {
838
863
  ...switcherDialogProps,
839
864
  ...dialogPresentationProps,
@@ -860,6 +885,8 @@ function SwitcherBottomSheetItem({
860
885
  ...props,
861
886
  ref: ref,
862
887
  state: panelState,
888
+ isEntrySettled: isEntrySettled,
889
+ onEntrySettled: releaseSettledSheet,
863
890
  isOpenRequested: hasValidSheetId && activeSheet === sheetId,
864
891
  height: height,
865
892
  label: label,
@@ -47,6 +47,16 @@ interface BottomSheetPanelProps extends BaseProps<HTMLDivElement> {
47
47
  /** Ref forwarded to the visual sheet panel. */
48
48
  ref?: React.Ref<HTMLDivElement>;
49
49
  state: BottomSheetPanelState;
50
+ /**
51
+ * Whether the sheet was open on page load: it then opens where it rests,
52
+ * with no entry motion (spec:AST-013 FR13).
53
+ */
54
+ isEntrySettled?: boolean;
55
+ /**
56
+ * Called when the settled entry's transition ends, so the host can release
57
+ * it and later motion in the same open (a drag's settle) animates as usual.
58
+ */
59
+ onEntrySettled?: () => void;
50
60
  /**
51
61
  * The host's controlled open state — false as soon as the host has taken
52
62
  * a close, true while it is open or has refused one — distinct from
@@ -74,7 +84,7 @@ interface BottomSheetPanelProps extends BaseProps<HTMLDivElement> {
74
84
  onMotionComplete?: (motion: BottomSheetPanelMotion) => void;
75
85
  }
76
86
  /** Internal visual and gesture surface shared by every BottomSheet host. */
77
- export declare function BottomSheetPanel({ ref, state, isOpenRequested, height, label, children, padding, snapPoints, className, style, tabIndex, xstyle, isSwipeDismissAllowed, isPageScrollLocked, onDismiss, onScrimOpacity, onElementChange, onMotionStart, onMotionComplete, ...props }: BottomSheetPanelProps): import("react").JSX.Element;
87
+ export declare function BottomSheetPanel({ ref, state, isOpenRequested, height, label, children, padding, snapPoints, className, style, tabIndex, xstyle, isEntrySettled, onEntrySettled, onTransitionEnd, isSwipeDismissAllowed, isPageScrollLocked, onDismiss, onScrimOpacity, onElementChange, onMotionStart, onMotionComplete, ...props }: BottomSheetPanelProps): import("react").JSX.Element;
78
88
  export declare namespace BottomSheetPanel {
79
89
  var displayName: string;
80
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheetPanel.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheetPanel.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA+B5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,eAAe,CAAC;AAQvB,QAAA,MAAM,cAAc;;;;CAIV,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,cAAc,CAAC;AAC5D,YAAY,EAAC,oBAAoB,EAAC,CAAC;AA+CnC,eAAO,MAAM,2BAA2B,2DACkB,CAAC;AAiN3D,MAAM,MAAM,sBAAsB,GAChC,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD,MAAM,MAAM,qBAAqB,GAC7B;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAC,GAChB;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAC,GACjC;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC1C,eAAe,EAAE,MAAM,CAAC;CACzB,GACD;IAAC,IAAI,EAAE,SAAS,CAAA;CAAC,CAAC;AAEtB,UAAU,qBAAsB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC/D,+CAA+C;IAC/C,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,KAAK,EAAE,qBAAqB,CAAC;IAC7B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;IAC5C,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IACjD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gFAAgF;IAChF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3D,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACzD,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;CAC7D;AA4HD,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,KAAK,EACL,eAAe,EACf,MAAM,EACN,KAAK,EACL,QAAQ,EACR,OAAO,EACP,UAAU,EACV,SAAS,EACT,KAAK,EACL,QAAQ,EACR,MAAM,EACN,qBAA4B,EAC5B,kBAA0B,EAC1B,SAAS,EACT,cAAc,EACd,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,GAAG,KAAK,EACT,EAAE,qBAAqB,+BAoZvB;yBAzae,gBAAgB"}
1
+ {"version":3,"file":"BottomSheetPanel.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheetPanel.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA+B5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,eAAe,CAAC;AAQvB,QAAA,MAAM,cAAc;;;;CAIV,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,cAAc,CAAC;AAC5D,YAAY,EAAC,oBAAoB,EAAC,CAAC;AA+CnC,eAAO,MAAM,2BAA2B,2DACkB,CAAC;AAsN3D,MAAM,MAAM,sBAAsB,GAChC,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD,MAAM,MAAM,qBAAqB,GAC7B;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAC,GAChB;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAC,GACjC;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC1C,eAAe,EAAE,MAAM,CAAC;CACzB,GACD;IAAC,IAAI,EAAE,SAAS,CAAA;CAAC,CAAC;AAEtB,UAAU,qBAAsB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC/D,+CAA+C;IAC/C,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,KAAK,EAAE,qBAAqB,CAAC;IAC7B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;IAC5C,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IACjD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gFAAgF;IAChF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3D,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACzD,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;CAC7D;AA4HD,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,KAAK,EACL,eAAe,EACf,MAAM,EACN,KAAK,EACL,QAAQ,EACR,OAAO,EACP,UAAU,EACV,SAAS,EACT,KAAK,EACL,QAAQ,EACR,MAAM,EACN,cAAsB,EACtB,cAAc,EACd,eAAe,EACf,qBAA4B,EAC5B,kBAA0B,EAC1B,SAAS,EACT,cAAc,EACd,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,GAAG,KAAK,EACT,EAAE,qBAAqB,+BA2ZvB;yBAnbe,gBAAgB"}
@@ -125,6 +125,10 @@ const styles = {
125
125
  k6sLGO: "x1q1rmc8",
126
126
  $$css: true
127
127
  },
128
+ sheetSettled: {
129
+ kIyJzY: "xpvlhck",
130
+ $$css: true
131
+ },
128
132
  sheetClosing: {
129
133
  k3aq6I: "x1weeur4 x1oe9tb1",
130
134
  kSiTet: "x1m67veq",
@@ -293,6 +297,9 @@ export function BottomSheetPanel({
293
297
  style,
294
298
  tabIndex,
295
299
  xstyle,
300
+ isEntrySettled = false,
301
+ onEntrySettled,
302
+ onTransitionEnd,
296
303
  isSwipeDismissAllowed = true,
297
304
  isPageScrollLocked = false,
298
305
  onDismiss,
@@ -582,7 +589,13 @@ export function BottomSheetPanel({
582
589
  ...props,
583
590
  ref: setElement,
584
591
  tabIndex: tabIndex ?? -1,
585
- ...mergeProps(themeProps('bottom-sheet'), stylex.props(layerTextReset.reset, layerStructureReset.reset, styles.sheet, overlayPaddingReset.reset, height === 'hug' ? styles.hugHeight : styles.budget, isClosing && styles.sheetClosing, isClosing && isCrossFade && styles.sheetClosingCrossFade, isFading && styles.sheetFading, isInactive && styles.sheetInactive, xstyle), className, {
592
+ onTransitionEnd: event => {
593
+ onTransitionEnd?.(event);
594
+ if (isEntrySettled && event.target === event.currentTarget) {
595
+ onEntrySettled?.();
596
+ }
597
+ },
598
+ ...mergeProps(themeProps('bottom-sheet'), stylex.props(layerTextReset.reset, layerStructureReset.reset, styles.sheet, overlayPaddingReset.reset, height === 'hug' ? styles.hugHeight : styles.budget, isClosing && styles.sheetClosing, isClosing && isCrossFade && styles.sheetClosingCrossFade, isFading && styles.sheetFading, isInactive && styles.sheetInactive, isEntrySettled && styles.sheetSettled, xstyle), className, {
586
599
  ['--_sheet-budget']: budget,
587
600
  ...(isInteractive ? gestureStyle : isRetained || isClosing ? {
588
601
  height: hostHeight
@@ -76,9 +76,11 @@ import type { BaseProps } from '../BaseProps.js';
76
76
  * by one state value that names the open step; closing the top sheet and
77
77
  * opening the next in the same update, from inside the open step, runs the
78
78
  * same replace handoff (see BottomSheet, "Replacing a sheet"). Keeps working until a future minor
79
- * release removes it: on its own as released (plus two fixes: a toast raised
80
- * from a step now renders above the flow and can be pressed, and reduced motion
81
- * follows design:reduced-motion), as one stack level when stacked.
79
+ * release removes it: on its own as released (plus three fixes: a toast raised
80
+ * from a step now renders above the flow and can be pressed, reduced motion
81
+ * follows design:reduced-motion, and a flow whose active sheet is set on the
82
+ * server renders closed until hydration, then opens that sheet settled), as
83
+ * one stack level when stacked.
82
84
  */
83
85
  export interface BottomSheetSwitcherProps extends BaseProps<HTMLDialogElement> {
84
86
  /**
@@ -129,10 +131,11 @@ export interface BottomSheetSwitcherProps extends BaseProps<HTMLDialogElement> {
129
131
  * `sheetId` and no switcher, for modal and `hasScrim={false}` flows alike; a
130
132
  * step changed from outside the flow's sheets closes and opens with the
131
133
  * sheets' own motion. The switcher keeps working until a future
132
- * minor release removes it: on its own as released (plus two fixes: a toast
133
- * raised from a step now renders above the flow and can be pressed, and reduced
134
- * motion follows design:reduced-motion), and as one level of the stack when
135
- * stacked with other sheets.
134
+ * minor release removes it: on its own as released (plus three fixes: a toast
135
+ * raised from a step now renders above the flow and can be pressed, reduced
136
+ * motion follows design:reduced-motion, and a flow whose active sheet is set
137
+ * on the server renders closed until hydration, then opens that sheet
138
+ * settled), and as one level of the stack when stacked with other sheets.
136
139
  */
137
140
  export declare function BottomSheetSwitcher({ activeSheet: activeSheetProp, onActiveSheetChange, hasScrim, children, ref, onCancel, onClick, onKeyDown, className, style, xstyle, ...restDialogProps }: BottomSheetSwitcherProps): import("react").JSX.Element;
138
141
  export declare namespace BottomSheetSwitcher {
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheetSwitcher.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheetSwitcher.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AAEH,OAAO,EAUL,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA6J5C;;;;;;;;GAQG;AACH,MAAM,WAAW,wBAAyB,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC5E;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAEnC,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAE9D;;;;;OAKG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,iEAAiE;IACjE,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAEtD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,0DAA0D;IAC1D,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,WAAW,EAAE,eAAe,EAC5B,mBAAmB,EACnB,QAAe,EACf,QAAQ,EACR,GAAG,EACH,QAAQ,EACR,OAAO,EACP,SAAS,EACT,SAAS,EACT,KAAK,EACL,MAAM,EACN,GAAG,eAAe,EACnB,EAAE,wBAAwB,+BA4vB1B;yBAzwBe,mBAAmB"}
1
+ {"version":3,"file":"BottomSheetSwitcher.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheetSwitcher.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AAEH,OAAO,EAUL,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA6J5C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,wBAAyB,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC5E;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAEnC,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAE9D;;;;;OAKG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,iEAAiE;IACjE,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAEtD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,0DAA0D;IAC1D,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,WAAW,EAAE,eAAe,EAC5B,mBAAmB,EACnB,QAAe,EACf,QAAQ,EACR,GAAG,EACH,QAAQ,EACR,OAAO,EACP,SAAS,EACT,SAAS,EACT,KAAK,EACL,MAAM,EACN,GAAG,eAAe,EACnB,EAAE,wBAAwB,+BA8wB1B;yBA3xBe,mBAAmB"}
@@ -74,6 +74,8 @@
74
74
  * - /packages/cli/assets/templates/blocks/components/BottomSheet/BottomSheetSwitcherShowcase.tsx
75
75
  */
76
76
  import { use, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
77
+ import { useIsHydrating } from "../hooks/useIsHydrating.js";
78
+ import { useSettledOpen } from "../hooks/useSettledOpen.js";
77
79
  import * as stylex from '@stylexjs/stylex';
78
80
  import { useScrollLock } from "../hooks/useScrollLock.js";
79
81
  import { useFocusTrapEscapeCompatibilitySignal } from "../hooks/useFocusTrap.js";
@@ -164,9 +166,11 @@ function takeOverScrim(dialog, opacity) {
164
166
  * by one state value that names the open step; closing the top sheet and
165
167
  * opening the next in the same update, from inside the open step, runs the
166
168
  * same replace handoff (see BottomSheet, "Replacing a sheet"). Keeps working until a future minor
167
- * release removes it: on its own as released (plus two fixes: a toast raised
168
- * from a step now renders above the flow and can be pressed, and reduced motion
169
- * follows design:reduced-motion), as one stack level when stacked.
169
+ * release removes it: on its own as released (plus three fixes: a toast raised
170
+ * from a step now renders above the flow and can be pressed, reduced motion
171
+ * follows design:reduced-motion, and a flow whose active sheet is set on the
172
+ * server renders closed until hydration, then opens that sheet settled), as
173
+ * one stack level when stacked.
170
174
  */
171
175
 
172
176
  /**
@@ -189,10 +193,11 @@ function takeOverScrim(dialog, opacity) {
189
193
  * `sheetId` and no switcher, for modal and `hasScrim={false}` flows alike; a
190
194
  * step changed from outside the flow's sheets closes and opens with the
191
195
  * sheets' own motion. The switcher keeps working until a future
192
- * minor release removes it: on its own as released (plus two fixes: a toast
193
- * raised from a step now renders above the flow and can be pressed, and reduced
194
- * motion follows design:reduced-motion), and as one level of the stack when
195
- * stacked with other sheets.
196
+ * minor release removes it: on its own as released (plus three fixes: a toast
197
+ * raised from a step now renders above the flow and can be pressed, reduced
198
+ * motion follows design:reduced-motion, and a flow whose active sheet is set
199
+ * on the server renders closed until hydration, then opens that sheet
200
+ * settled), and as one level of the stack when stacked with other sheets.
196
201
  */
197
202
  export function BottomSheetSwitcher({
198
203
  activeSheet: activeSheetProp,
@@ -215,7 +220,17 @@ export function BottomSheetSwitcher({
215
220
  // for it; with the host closed the flow simply reads as closed.
216
221
  const host = use(BottomSheetHostContext);
217
222
  const isHostOpen = host?.isOpen ?? true;
218
- const activeSheet = isHostOpen ? activeSheetProp : null;
223
+ // A flow with an active sheet on the server reads as closed until
224
+ // hydration, and opens in the render after it, the first one that can enter
225
+ // its native host: a <dialog> painted open with aria-modal before it is
226
+ // modal claims a state it does not have (`component:BottomSheet` FR17).
227
+ const isHydrating = useIsHydrating();
228
+ const activeSheet = isHostOpen && !isHydrating ? activeSheetProp : null;
229
+ // The step active on the server was present on page load, so it opens
230
+ // settled, with no entry motion; the first change of step animates as
231
+ // usual (spec:AST-013 FR13). It latches on the flow's own request: a host
232
+ // sheet hydrating reads as closed to a flow inside it.
233
+ const [settledSheet, releaseSettledSheet] = useSettledOpen(activeSheetProp, activeSheet, null);
219
234
  // Every sheet host applies the switcher's dialog surface to its own dialog.
220
235
  const dialogProps = useShallowStable({
221
236
  ...restDialogProps,
@@ -746,6 +761,8 @@ export function BottomSheetSwitcher({
746
761
  const onDialogKeyDown = useMemo(() => composeEventHandlers(onKeyDown, handleKeyDown), [handleKeyDown, onKeyDown]);
747
762
  const contextValue = useMemo(() => ({
748
763
  activeSheet,
764
+ settledSheet,
765
+ releaseSettledSheet,
749
766
  hasScrim,
750
767
  onActiveSheetChange,
751
768
  getSheetPhase,
@@ -766,7 +783,7 @@ export function BottomSheetSwitcher({
766
783
  onDialogCancel,
767
784
  onDialogClick,
768
785
  onDialogKeyDown
769
- }), [activeSheet, dialogProps, getSheetAlignmentOffset, getSheetPhase, hasScrim, hostSheet, isCoveredInTopLayer, isFlowClosing, isScrimOwner, onActiveSheetChange, onBeforeSheetPresent, onDialogCancel, onDialogClick, onDialogKeyDown, onSheetEnterStart, onSheetScrimOpacityChange, onSheetTransitionComplete, registerSheetDialog, registerSheetElement, registerSheetPurpose, stackView]);
786
+ }), [activeSheet, dialogProps, getSheetAlignmentOffset, getSheetPhase, hasScrim, hostSheet, isCoveredInTopLayer, isFlowClosing, isScrimOwner, onActiveSheetChange, onBeforeSheetPresent, onDialogCancel, onDialogClick, onDialogKeyDown, onSheetEnterStart, onSheetScrimOpacityChange, onSheetTransitionComplete, registerSheetDialog, registerSheetElement, registerSheetPurpose, releaseSettledSheet, settledSheet, stackView]);
770
787
  return /*#__PURE__*/_jsx(BottomSheetSwitcherContext, {
771
788
  value: contextValue,
772
789
  children: /*#__PURE__*/_jsx("div", {
@@ -26,6 +26,14 @@ export interface BottomSheetSwitcherTransitionEvent {
26
26
  export type BottomSheetSwitcherDialogProps = Omit<BaseProps<HTMLDialogElement>, 'onClick' | 'onKeyDown'>;
27
27
  export interface BottomSheetSwitcherContextValue {
28
28
  activeSheet: string | null;
29
+ /**
30
+ * The sheet that was active on page load, until the active sheet first
31
+ * changes: it opens where it rests, with no entry motion
32
+ * (spec:AST-013 FR13).
33
+ */
34
+ settledSheet: string | null;
35
+ /** Releases `settledSheet` once its settled entry's transition ends. */
36
+ releaseSettledSheet: () => void;
29
37
  hasScrim: boolean;
30
38
  onActiveSheetChange: (sheetId: string | null) => void;
31
39
  getSheetPhase: (sheetId: string) => BottomSheetSwitcherPhase;
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheetSwitcherContext.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheetSwitcherContext.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,aAAa,IAAI,kBAAkB,EACnC,UAAU,IAAI,eAAe,EAC7B,cAAc,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AAE7D,MAAM,MAAM,wBAAwB,GAChC,UAAU,GACV,QAAQ,GACR,SAAS,GACT,UAAU,GACV,QAAQ,GACR,SAAS,GACT,QAAQ,CAAC;AAEb,MAAM,WAAW,kCAAkC;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;CACvD;AAED;;;;GAIG;AACH,MAAM,MAAM,8BAA8B,GAAG,IAAI,CAC/C,SAAS,CAAC,iBAAiB,CAAC,EAC5B,SAAS,GAAG,WAAW,CACxB,CAAC;AAEF,MAAM,WAAW,+BAA+B;IAC9C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACtD,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,wBAAwB,CAAC;IAC7D,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACrD;;;;;OAKG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;OAIG;IACH,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3C,4EAA4E;IAC5E,aAAa,EAAE,OAAO,CAAC;IACvB,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7E,mBAAmB,EAAE,CACnB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,iBAAiB,GAAG,IAAI,KAC7B,IAAI,CAAC;IACV,oBAAoB,EAAE,CACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,GAAG,IAAI,KAC1B,IAAI,CAAC;IACV;;;OAGG;IACH,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD;;;;OAIG;IACH,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAClD,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,yBAAyB,EAAE,CACzB,KAAK,EAAE,kCAAkC,KACtC,IAAI,CAAC;IACV,yBAAyB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACtE;;;OAGG;IACH,SAAS,EAAE,oBAAoB,CAAC;IAChC,yEAAyE;IACzE,WAAW,EAAE,8BAA8B,CAAC;IAC5C,cAAc,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACnE,aAAa,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACnE,eAAe,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;CACzE;AAED,eAAO,MAAM,0BAA0B,iEACsB,CAAC"}
1
+ {"version":3,"file":"BottomSheetSwitcherContext.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheetSwitcherContext.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,aAAa,IAAI,kBAAkB,EACnC,UAAU,IAAI,eAAe,EAC7B,cAAc,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AAE7D,MAAM,MAAM,wBAAwB,GAChC,UAAU,GACV,QAAQ,GACR,SAAS,GACT,UAAU,GACV,QAAQ,GACR,SAAS,GACT,QAAQ,CAAC;AAEb,MAAM,WAAW,kCAAkC;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;CACvD;AAED;;;;GAIG;AACH,MAAM,MAAM,8BAA8B,GAAG,IAAI,CAC/C,SAAS,CAAC,iBAAiB,CAAC,EAC5B,SAAS,GAAG,WAAW,CACxB,CAAC;AAEF,MAAM,WAAW,+BAA+B;IAC9C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;OAIG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,wEAAwE;IACxE,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACtD,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,wBAAwB,CAAC;IAC7D,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACrD;;;;;OAKG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;OAIG;IACH,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3C,4EAA4E;IAC5E,aAAa,EAAE,OAAO,CAAC;IACvB,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7E,mBAAmB,EAAE,CACnB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,iBAAiB,GAAG,IAAI,KAC7B,IAAI,CAAC;IACV,oBAAoB,EAAE,CACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,GAAG,IAAI,KAC1B,IAAI,CAAC;IACV;;;OAGG;IACH,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD;;;;OAIG;IACH,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAClD,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,yBAAyB,EAAE,CACzB,KAAK,EAAE,kCAAkC,KACtC,IAAI,CAAC;IACV,yBAAyB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACtE;;;OAGG;IACH,SAAS,EAAE,oBAAoB,CAAC;IAChC,yEAAyE;IACzE,WAAW,EAAE,8BAA8B,CAAC;IAC5C,cAAc,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACnE,aAAa,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACnE,eAAe,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;CACzE;AAED,eAAO,MAAM,0BAA0B,iEACsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAE,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAgC3C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAMrD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,SAAS,CAAC;AAgI9C,QAAA,MAAM,UAAU;;;;;;;;;;EAUd,CAAC;AAuDH;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,UAAU,CAAC;AAQjD,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC/D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC,oDAAoD;IACpD,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACrD;;OAEG;IACH,WAAW,CAAC,EAAE,CACZ,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KACnC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAuJD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,OAAqB,EACrB,IAAI,EAAE,QAAQ,EACd,IAAe,EACf,UAAkB,EAClB,SAAiB,EACjB,eAAuB,EACvB,WAAW,EACX,IAAI,EACJ,UAAkB,EAClB,KAAK,EACL,SAAkB,EAClB,QAAQ,EACR,UAAU,EACV,OAAO,EACP,IAAI,EACJ,EAAE,EACF,MAAM,EACN,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,WAAW,GAAG,SAAS,CAqTzB;yBA9Ue,MAAM"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"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"}
@@ -248,8 +248,14 @@ const loadingStyles = {
248
248
  * popover is never an in-flow member — it is `display: none` until shown, then
249
249
  * promoted to the top layer. Context layers also retain an inert `<template>`
250
250
  * marker so they can re-resolve their JSX position. Neither element is a group
251
- * member, so "last member" is: no following element sibling besides those two
252
- * pieces of layer infrastructure.
251
+ * member, so "last member" is: no following element sibling besides those
252
+ * pieces of layer infrastructure — the last sibling that is not one of them.
253
+ *
254
+ * Written as `:nth-last-child(1 of …)`, not `:not(:has(~ …))`: the stylesheet
255
+ * is global, and WebKit re-evaluates a sibling-relative `:has()` against every
256
+ * earlier sibling on each insertion, so filling any container on the page
257
+ * became quadratic (ButtonGroup FR3). A member is never layer infrastructure,
258
+ * so being the last such sibling is the same as having none after it.
253
259
  *
254
260
  * Reading it the other way round — marking the *buttons* and testing for a
255
261
  * marked sibling — is the trap: it silently reclassifies anything it doesn't
@@ -265,13 +271,13 @@ const loadingStyles = {
265
271
  * The leading edge still uses `:first-child` — a member's button always precedes
266
272
  * its own layer, so the first button is genuinely `:first-child`.
267
273
  */
268
- const IS_LAST_ITEM = ':not(:has(~ *:not([popover]):not(template):not(dialog)))';
274
+ const IS_LAST_ITEM = ':nth-last-child(1 of :not([popover]):not(template):not(dialog))';
269
275
  const groupStyles = {
270
276
  horizontal: {
271
277
  krdFHd: "x15mokao x8eehn2",
272
278
  kVL7Gh: "xbiv7yw x1xrp5p4",
273
- kfmiAY: "x1ga7v0g x149bkfe",
274
- kT0f0o: "x16uus16 x1ursds5",
279
+ kfmiAY: "x1ga7v0g x1ursdma",
280
+ kT0f0o: "x16uus16 x1qa286i",
275
281
  k2ei4v: "xgbv0en x1pjv70x",
276
282
  kVhnKS: "x1t7ytsu xyf0ibl",
277
283
  kGJrpR: "x1j92z86",
@@ -280,8 +286,8 @@ const groupStyles = {
280
286
  vertical: {
281
287
  krdFHd: "x15mokao x8eehn2",
282
288
  kfmiAY: "x1ga7v0g x2qxyot",
283
- kVL7Gh: "xbiv7yw xy2bsav",
284
- kT0f0o: "x16uus16 x1ursds5",
289
+ kVL7Gh: "xbiv7yw x1muvjzw",
290
+ kT0f0o: "x16uus16 x1qa286i",
285
291
  kEafiO: "x11xkdxz x1g31smg",
286
292
  kPef9Z: "x13fuv20 x1d9v4yf",
287
293
  kLZC3w: "x1pc3f07",
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/Calendar/Calendar.tsx"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAsD5C,YAAY,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EACV,MAAM,oBAAoB,CAAC;AAS5B,+CAA+C;AAC/C,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,UAAU,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3C;AAID,UAAU,iBAAkB,SAAQ,IAAI,CACtC,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,GAAG,cAAc,CAC5B;IACC,kDAAkD;IAClD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,qDAAqD;IACrD,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACtC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEvB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAEzD;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAEvD;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;CAC1C;AAID,UAAU,mBAAoB,SAAQ,iBAAiB;IACrD,qBAAqB;IACrB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB,mFAAmF;IACnF,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAE7B,0CAA0C;IAC1C,YAAY,CAAC,EAAE,aAAa,CAAC;IAE7B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,KAAK,IAAI,CAAC;CAC9D;AAED,UAAU,kBAAmB,SAAQ,iBAAiB;IACpD,qBAAqB;IACrB,IAAI,EAAE,OAAO,CAAC;IAEd,8DAA8D;IAC9D,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAEzB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAqBrE;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAC,GAAG,EAAE,GAAG,KAAK,EAAC,EAAE,aAAa,+BAghBtD;yBAhhBe,QAAQ"}
1
+ {"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/Calendar/Calendar.tsx"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAsD5C,YAAY,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EACV,MAAM,oBAAoB,CAAC;AAS5B,+CAA+C;AAC/C,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,UAAU,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3C;AAID,UAAU,iBAAkB,SAAQ,IAAI,CACtC,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,GAAG,cAAc,CAC5B;IACC,kDAAkD;IAClD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,qDAAqD;IACrD,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACtC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEvB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAEzD;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAEvD;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;CAC1C;AAID,UAAU,mBAAoB,SAAQ,iBAAiB;IACrD,qBAAqB;IACrB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB,mFAAmF;IACnF,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAE7B,0CAA0C;IAC1C,YAAY,CAAC,EAAE,aAAa,CAAC;IAE7B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,KAAK,IAAI,CAAC;CAC9D;AAED,UAAU,kBAAmB,SAAQ,iBAAiB;IACpD,qBAAqB;IACrB,IAAI,EAAE,OAAO,CAAC;IAEd,8DAA8D;IAC9D,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAEzB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAqBrE;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAC,GAAG,EAAE,GAAG,KAAK,EAAC,EAAE,aAAa,+BAihBtD;yBAjhBe,QAAQ"}
@@ -24,7 +24,8 @@ import { Icon } from "../Icon/index.js";
24
24
  import { useAnnounce, useGridFocus } from "../hooks/index.js";
25
25
  import { useCalendarDays, useCalendarConstraints } from "./hooks/index.js";
26
26
  import { calendarStyles, monthGridStyles, dayCellStyles, dayCellTheme } from "./styles.js";
27
- import { plainDateFromISO, plainDateToISO, plainDateToDate, plainDateToday, plainDateSetFirstOfMonth, plainDateAddMonths, plainDateAddDays, plainDateDiffDays, getDaysInMonth, plainDateIsAfter, plainDateIsBefore, plainDateIsEqual, plainDateGetWeekNumber, plainDateFormat, plainDateWeekFieldName, DATE_FORMAT_WITH_WEEKDAY, DATE_FORMAT_MONTH_YEAR } from "../utils/plainDate.js";
27
+ import { plainDateFromISO, plainDateToISO, plainDateToDate, plainDateToday, plainDateSetFirstOfMonth, plainDateAddMonths, plainDateAddDays, plainDateDiffDays, getDaysInMonth, plainDateIsAfter, plainDateIsBefore, plainDateIsEqual, plainDateGetWeekNumber, plainDateFormat, plainDateWeekFieldName, DATE_FORMAT_WITH_WEEKDAY } from "../utils/plainDate.js";
28
+ import { plainDateFormatStandaloneMonthYear } from "../utils/plainDate.js";
28
29
  import { mergeProps, composeEventHandlers, rtlStyles } from "../utils/index.js";
29
30
  import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
30
31
  import { interactionOverlayStyles } from "../utils/interactionOverlay.stylex.js";
@@ -201,12 +202,9 @@ export function Calendar({
201
202
  }, [pendingFocus]);
202
203
 
203
204
  // Format month header
204
- const monthYearLabel = useMemo(() => {
205
- if (numberOfMonths === 1) {
206
- return plainDateFormat(visibleMonths[0], DATE_FORMAT_MONTH_YEAR, locale);
207
- }
208
- return visibleMonths.map(m => plainDateFormat(m, DATE_FORMAT_MONTH_YEAR, locale)).join(' – ');
209
- }, [visibleMonths, numberOfMonths, locale]);
205
+ // Each month is its own stand-alone label, so each starts with a capital
206
+ // where the locale capitalizes one (FR1).
207
+ const monthYearLabel = useMemo(() => visibleMonths.map(m => plainDateFormatStandaloneMonthYear(m, locale)).join(' – '), [visibleMonths, locale]);
210
208
 
211
209
  // Announce the newly visible month to screen readers whenever it changes.
212
210
  // The visible month label (`<span>`) carries no live semantics, so paging the
@@ -743,7 +741,7 @@ function MonthGrid({
743
741
 
744
742
  // Month label for announcements
745
743
  const monthLabel = useMemo(() => {
746
- return plainDateFormat(month, DATE_FORMAT_MONTH_YEAR, locale);
744
+ return plainDateFormatStandaloneMonthYear(month, locale);
747
745
  }, [month, locale]);
748
746
  return /*#__PURE__*/_jsx("div", {
749
747
  ...stylex.props(monthGridStyles.monthGrid),
@@ -1 +1 @@
1
- {"version":3,"file":"useCalendarNavigation.d.ts","sourceRoot":"","sources":["../../../src/Calendar/hooks/useCalendarNavigation.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,KAAK,SAAS,EASf,MAAM,uBAAuB,CAAC;AAG/B;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,gDAAgD;IAChD,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,qDAAqD;IACrD,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IACvD,kCAAkC;IAClC,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,mEAAmE;IACnE,SAAS,EAAE,SAAS,CAAC;IACrB,sDAAsD;IACtD,aAAa,EAAE,SAAS,EAAE,CAAC;IAC3B,2CAA2C;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,aAAa,EAAE,CACb,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,aAAa,EAC3B,MAAM,CAAC,EAAE,MAAM,KACZ,IAAI,CAAC;IACV,4CAA4C;IAC5C,YAAY,EAAE,aAAa,GAAG,IAAI,CAAC;IACnC,8BAA8B;IAC9B,iBAAiB,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,4BAA4B,GACpC,2BAA2B,CAyF7B"}
1
+ {"version":3,"file":"useCalendarNavigation.d.ts","sourceRoot":"","sources":["../../../src/Calendar/hooks/useCalendarNavigation.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,KAAK,SAAS,EAOf,MAAM,uBAAuB,CAAC;AAI/B;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,gDAAgD;IAChD,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,qDAAqD;IACrD,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IACvD,kCAAkC;IAClC,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,mEAAmE;IACnE,SAAS,EAAE,SAAS,CAAC;IACrB,sDAAsD;IACtD,aAAa,EAAE,SAAS,EAAE,CAAC;IAC3B,2CAA2C;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,aAAa,EAAE,CACb,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,aAAa,EAC3B,MAAM,CAAC,EAAE,MAAM,KACZ,IAAI,CAAC;IACV,4CAA4C;IAC5C,YAAY,EAAE,aAAa,GAAG,IAAI,CAAC;IACnC,8BAA8B;IAC9B,iBAAiB,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,4BAA4B,GACpC,2BAA2B,CAyF7B"}
@@ -12,7 +12,8 @@
12
12
  * - /packages/core/src/Calendar/hooks/index.ts
13
13
  */
14
14
  import { useState, useMemo, useCallback } from 'react';
15
- import { plainDateFromISO, plainDateToISO, plainDateToday, plainDateSetFirstOfMonth, plainDateAddMonths, plainDateAddDays, plainDateFormat, DATE_FORMAT_MONTH_YEAR } from "../../utils/plainDate.js";
15
+ import { plainDateFromISO, plainDateToISO, plainDateToday, plainDateSetFirstOfMonth, plainDateAddMonths, plainDateAddDays } from "../../utils/plainDate.js";
16
+ import { plainDateFormatStandaloneMonthYear } from "../../utils/plainDate.js";
16
17
  import { useLocale } from "../../i18n/index.js";
17
18
 
18
19
  /**
@@ -92,12 +93,8 @@ export function useCalendarNavigation(options) {
92
93
  }, [baseMonth, numberOfMonths]);
93
94
 
94
95
  // Format month header
95
- const monthYearLabel = useMemo(() => {
96
- if (numberOfMonths === 1) {
97
- return plainDateFormat(visibleMonths[0], DATE_FORMAT_MONTH_YEAR, locale);
98
- }
99
- return visibleMonths.map(m => plainDateFormat(m, DATE_FORMAT_MONTH_YEAR, locale)).join(' – ');
100
- }, [visibleMonths, numberOfMonths, locale]);
96
+ // Each month is its own stand-alone label (Calendar FR1).
97
+ const monthYearLabel = useMemo(() => visibleMonths.map(m => plainDateFormatStandaloneMonthYear(m, locale)).join(' – '), [visibleMonths, locale]);
101
98
 
102
99
  // Navigate to previous/next month
103
100
  const navigateMonth = useCallback((delta, focusedDate, offset) => {
@@ -1 +1 @@
1
- {"version":3,"file":"ChatComposer.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatComposer.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,EAKZ,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA8B5C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAEtE,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAC7C,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,GAAG,UAAU,CACxB;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,+CAA+C;IAC/C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB;IACtB,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAI3B,6GAA6G;IAC7G,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,yHAAyH;IACzH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,yGAAyG;IACzG,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gHAAgH;IAChH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,gHAAgH;IAChH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,gDAAgD;IAChD,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,iEAAiE;IACjE,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,oDAAoD;IACpD,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;CACnC;AAoOD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,qBAoOpD;yBApOe,YAAY"}
1
+ {"version":3,"file":"ChatComposer.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatComposer.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,EAKZ,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAgC5C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAEtE,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAC7C,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,GAAG,UAAU,CACxB;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,+CAA+C;IAC/C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB;IACtB,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAI3B,6GAA6G;IAC7G,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,yHAAyH;IACzH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,yGAAyG;IACzG,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gHAAgH;IAChH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,gHAAgH;IAChH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,gDAAgD;IAChD,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,iEAAiE;IACjE,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,oDAAoD;IACpD,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;CACnC;AAoOD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,qBAuOpD;yBAvOe,YAAY"}
@@ -35,6 +35,8 @@ import { themeProps } from "../utils/themeProps.js";
35
35
  import { useTranslator } from "../i18n/index.js";
36
36
  import { useAnnounceRenderedText } from "../hooks/useAnnounceRenderedText.js";
37
37
  import { useMergedRefs } from "../hooks/useMergedRefs.js";
38
+ import { innermostInteractive } from "../hooks/useClickableContainer.js";
39
+ import { isLayerSurface } from "../Layer/layerSurfacePress.js";
38
40
  import { focusOutlineStyles } from "../utils/focusOutline.stylex.js";
39
41
  import { useInteractionModalityTracking } from "../utils/interactionModality.js";
40
42
 
@@ -174,8 +176,10 @@ export function ChatComposer(props) {
174
176
  const handleBodyClick = useCallback(e => {
175
177
  // Focus the input when clicking empty space in the body.
176
178
  // Skip if the click target is a button, link, or interactive element.
179
+ // A press inside an open Tooltip or HoverCard stays in that surface
180
+ // (component:Tooltip FR11, component:HoverCard FR11).
177
181
  const target = e.target;
178
- if (target.closest('button, a, [role="button"], [contenteditable="true"], [data-astryx-token]')) {
182
+ if (target.closest('button, a, [role="button"], [contenteditable="true"], [data-astryx-token]') || innermostInteractive(target, e.currentTarget, isLayerSurface) != null) {
179
183
  return;
180
184
  }
181
185
  // Prefer the input's registered control (works for any input shape,
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @file useTriggerMenu.tsx
3
- * @input Uses React, usePopover, SearchSource
3
+ * @input Uses React, usePopover, SearchSource, useBusyAnnouncement
4
4
  * @output Exports useTriggerMenu hook for trigger-based menus in contentEditable
5
5
  * @position Internal hook; consumed by ChatComposerInput
6
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"useTriggerMenu.d.ts","sourceRoot":"","sources":["../../src/Chat/useTriggerMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAaf,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAGvD,OAAO,KAAK,EAAC,mBAAmB,EAAE,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAMhF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACjC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACpD,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAClD,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,gBAAgB,CAAC;IACxB,gEAAgE;IAChE,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,+DAA+D;IAC/D,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,KAAK,OAAO,CAAC;IACnD,sCAAsC;IACtC,UAAU,EAAE,MAAM,SAAS,CAAC;IAC5B,mCAAmC;IACnC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB;;;;;OAKG;IACH,SAAS,EAAE;QACT,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;QAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,eAAe,CAAC,EAAE,SAAS,CAAC;KAC7B,CAAC;CACH;AAoOD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CAsqBtB"}
1
+ {"version":3,"file":"useTriggerMenu.d.ts","sourceRoot":"","sources":["../../src/Chat/useTriggerMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAaf,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAGvD,OAAO,KAAK,EAAC,mBAAmB,EAAE,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAMhF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACjC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACpD,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAClD,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,gBAAgB,CAAC;IACxB,gEAAgE;IAChE,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,+DAA+D;IAC/D,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,KAAK,OAAO,CAAC;IACnD,sCAAsC;IACtC,UAAU,EAAE,MAAM,SAAS,CAAC;IAC5B,mCAAmC;IACnC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB;;;;;OAKG;IACH,SAAS,EAAE;QACT,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;QAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,eAAe,CAAC,EAAE,SAAS,CAAC;KAC7B,CAAC;CACH;AAoOD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CA4pBtB"}