@astryxdesign/core 0.7.6-canary.e6bc6e3 → 0.7.6-canary.e7530db

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 (240) hide show
  1. package/dist/Chat/useTriggerMenu.d.ts +1 -1
  2. package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
  3. package/dist/Chat/useTriggerMenu.js +13 -28
  4. package/dist/Collapsible/Collapsible.d.ts.map +1 -1
  5. package/dist/Collapsible/Collapsible.js +23 -3
  6. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  7. package/dist/DropdownMenu/DropdownMenu.js +1 -58
  8. package/dist/Grid/GridSpan.d.ts +2 -0
  9. package/dist/Grid/GridSpan.d.ts.map +1 -1
  10. package/dist/Grid/GridSpan.js +2 -0
  11. package/dist/Heading/Heading.d.ts +5 -3
  12. package/dist/Heading/Heading.d.ts.map +1 -1
  13. package/dist/Heading/Heading.js +5 -3
  14. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  15. package/dist/HoverCard/useHoverCard.js +7 -0
  16. package/dist/Item/Item.d.ts.map +1 -1
  17. package/dist/Item/Item.js +6 -2
  18. package/dist/Layer/layerSurfacePress.d.ts +9 -0
  19. package/dist/Layer/layerSurfacePress.d.ts.map +1 -0
  20. package/dist/Layer/layerSurfacePress.js +39 -0
  21. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  22. package/dist/ProgressBar/ProgressBar.js +3 -1
  23. package/dist/SegmentedControl/SegmentedControl.d.ts +7 -5
  24. package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  25. package/dist/SegmentedControl/SegmentedControl.js +13 -20
  26. package/dist/SegmentedControl/SegmentedControlContext.d.ts +2 -9
  27. package/dist/SegmentedControl/SegmentedControlContext.d.ts.map +1 -1
  28. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  29. package/dist/SegmentedControl/SegmentedControlItem.js +4 -14
  30. package/dist/SideNav/SideNav.d.ts.map +1 -1
  31. package/dist/SideNav/SideNav.js +142 -14
  32. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  33. package/dist/SideNav/SideNavCollapseButton.js +11 -2
  34. package/dist/SideNav/SideNavFocusTargetsContext.d.ts +11 -0
  35. package/dist/SideNav/SideNavFocusTargetsContext.d.ts.map +1 -0
  36. package/dist/SideNav/SideNavFocusTargetsContext.js +16 -0
  37. package/dist/SideNav/SideNavHeading.js +6 -2
  38. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  39. package/dist/SideNav/SideNavItem.js +13 -1
  40. package/dist/Token/Token.d.ts.map +1 -1
  41. package/dist/Token/Token.js +6 -1
  42. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  43. package/dist/Tooltip/useTooltip.js +11 -1
  44. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  45. package/dist/TopNav/TopNavHeading.js +8 -2
  46. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
  47. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +9 -2
  48. package/dist/TreeList/TreeList.d.ts.map +1 -1
  49. package/dist/TreeList/TreeList.js +62 -4
  50. package/dist/hooks/ModalAnnounceProvider.d.ts +2 -2
  51. package/dist/hooks/ModalAnnounceProvider.d.ts.map +1 -1
  52. package/dist/hooks/ModalAnnounceProvider.js +9 -7
  53. package/dist/hooks/useClickableContainer.d.ts +3 -0
  54. package/dist/hooks/useClickableContainer.d.ts.map +1 -1
  55. package/dist/hooks/useClickableContainer.js +11 -1
  56. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  57. package/dist/hooks/useFocusTrap.js +2 -3
  58. package/dist/hooks/useKeyboardHint.d.ts.map +1 -1
  59. package/dist/hooks/useKeyboardHint.js +7 -1
  60. package/dist/hooks/useListFocus.d.ts +10 -7
  61. package/dist/hooks/useListFocus.d.ts.map +1 -1
  62. package/dist/hooks/useListFocus.js +29 -17
  63. package/dist/hooks/useTreeFocus.d.ts +11 -1
  64. package/dist/hooks/useTreeFocus.d.ts.map +1 -1
  65. package/dist/hooks/useTreeFocus.js +19 -3
  66. package/dist/i18n/generated-locales/af-ZA.generated.d.ts.map +1 -1
  67. package/dist/i18n/generated-locales/af-ZA.generated.js +2 -2
  68. package/dist/i18n/generated-locales/ar-SA.generated.d.ts.map +1 -1
  69. package/dist/i18n/generated-locales/ar-SA.generated.js +2 -2
  70. package/dist/i18n/generated-locales/ca-ES.generated.d.ts.map +1 -1
  71. package/dist/i18n/generated-locales/ca-ES.generated.js +2 -2
  72. package/dist/i18n/generated-locales/cs-CZ.generated.d.ts.map +1 -1
  73. package/dist/i18n/generated-locales/cs-CZ.generated.js +2 -2
  74. package/dist/i18n/generated-locales/da-DK.generated.d.ts.map +1 -1
  75. package/dist/i18n/generated-locales/da-DK.generated.js +2 -2
  76. package/dist/i18n/generated-locales/de-DE.generated.d.ts.map +1 -1
  77. package/dist/i18n/generated-locales/de-DE.generated.js +2 -2
  78. package/dist/i18n/generated-locales/el-GR.generated.d.ts.map +1 -1
  79. package/dist/i18n/generated-locales/el-GR.generated.js +2 -2
  80. package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
  81. package/dist/i18n/generated-locales/en.generated.js +2 -2
  82. package/dist/i18n/generated-locales/es-ES.generated.d.ts.map +1 -1
  83. package/dist/i18n/generated-locales/es-ES.generated.js +2 -2
  84. package/dist/i18n/generated-locales/fi-FI.generated.d.ts.map +1 -1
  85. package/dist/i18n/generated-locales/fi-FI.generated.js +2 -2
  86. package/dist/i18n/generated-locales/fr-FR.generated.d.ts.map +1 -1
  87. package/dist/i18n/generated-locales/fr-FR.generated.js +2 -2
  88. package/dist/i18n/generated-locales/he-IL.generated.d.ts.map +1 -1
  89. package/dist/i18n/generated-locales/he-IL.generated.js +2 -2
  90. package/dist/i18n/generated-locales/hu-HU.generated.d.ts.map +1 -1
  91. package/dist/i18n/generated-locales/hu-HU.generated.js +2 -2
  92. package/dist/i18n/generated-locales/it-IT.generated.d.ts.map +1 -1
  93. package/dist/i18n/generated-locales/it-IT.generated.js +2 -2
  94. package/dist/i18n/generated-locales/ja-JP.generated.d.ts.map +1 -1
  95. package/dist/i18n/generated-locales/ja-JP.generated.js +2 -2
  96. package/dist/i18n/generated-locales/ko-KR.generated.d.ts.map +1 -1
  97. package/dist/i18n/generated-locales/ko-KR.generated.js +2 -2
  98. package/dist/i18n/generated-locales/nl-NL.generated.d.ts.map +1 -1
  99. package/dist/i18n/generated-locales/nl-NL.generated.js +2 -2
  100. package/dist/i18n/generated-locales/no-NO.generated.d.ts.map +1 -1
  101. package/dist/i18n/generated-locales/no-NO.generated.js +2 -2
  102. package/dist/i18n/generated-locales/pl-PL.generated.d.ts.map +1 -1
  103. package/dist/i18n/generated-locales/pl-PL.generated.js +2 -2
  104. package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
  105. package/dist/i18n/generated-locales/pseudo.generated.js +2 -2
  106. package/dist/i18n/generated-locales/pt-BR.generated.d.ts.map +1 -1
  107. package/dist/i18n/generated-locales/pt-BR.generated.js +2 -2
  108. package/dist/i18n/generated-locales/pt-PT.generated.d.ts.map +1 -1
  109. package/dist/i18n/generated-locales/pt-PT.generated.js +2 -2
  110. package/dist/i18n/generated-locales/ro-RO.generated.d.ts.map +1 -1
  111. package/dist/i18n/generated-locales/ro-RO.generated.js +2 -2
  112. package/dist/i18n/generated-locales/ru-RU.generated.d.ts.map +1 -1
  113. package/dist/i18n/generated-locales/ru-RU.generated.js +2 -2
  114. package/dist/i18n/generated-locales/sr-SP.generated.d.ts.map +1 -1
  115. package/dist/i18n/generated-locales/sr-SP.generated.js +2 -2
  116. package/dist/i18n/generated-locales/sv-SE.generated.d.ts.map +1 -1
  117. package/dist/i18n/generated-locales/sv-SE.generated.js +2 -2
  118. package/dist/i18n/generated-locales/tr-TR.generated.d.ts.map +1 -1
  119. package/dist/i18n/generated-locales/tr-TR.generated.js +2 -2
  120. package/dist/i18n/generated-locales/uk-UA.generated.d.ts.map +1 -1
  121. package/dist/i18n/generated-locales/uk-UA.generated.js +2 -2
  122. package/dist/i18n/generated-locales/vi-VN.generated.d.ts.map +1 -1
  123. package/dist/i18n/generated-locales/vi-VN.generated.js +2 -2
  124. package/dist/i18n/generated-locales/zh-CN.generated.d.ts.map +1 -1
  125. package/dist/i18n/generated-locales/zh-CN.generated.js +2 -2
  126. package/dist/i18n/generated-locales/zh-TW.generated.d.ts.map +1 -1
  127. package/dist/i18n/generated-locales/zh-TW.generated.js +2 -2
  128. package/dist/motion/animator.d.ts.map +1 -1
  129. package/dist/motion/animator.js +69 -3
  130. package/dist/utils/accessibleName.d.ts +8 -0
  131. package/dist/utils/accessibleName.d.ts.map +1 -0
  132. package/dist/utils/accessibleName.js +72 -0
  133. package/dist/utils/focusReturn.d.ts +35 -2
  134. package/dist/utils/focusReturn.d.ts.map +1 -1
  135. package/dist/utils/focusReturn.js +53 -2
  136. package/dist/utils/sharedMutationObserver.d.ts +2 -2
  137. package/dist/utils/sharedMutationObserver.js +2 -2
  138. package/dist/utils/useFocusLeavingChange.d.ts +13 -0
  139. package/dist/utils/useFocusLeavingChange.d.ts.map +1 -0
  140. package/dist/utils/useFocusLeavingChange.js +48 -0
  141. package/locales/af-ZA.json +2 -2
  142. package/locales/ar-SA.json +2 -2
  143. package/locales/ca-ES.json +2 -2
  144. package/locales/cs-CZ.json +2 -2
  145. package/locales/da-DK.json +2 -2
  146. package/locales/de-DE.json +2 -2
  147. package/locales/el-GR.json +2 -2
  148. package/locales/en.json +4 -4
  149. package/locales/es-ES.json +2 -2
  150. package/locales/fi-FI.json +2 -2
  151. package/locales/fr-FR.json +2 -2
  152. package/locales/he-IL.json +2 -2
  153. package/locales/hu-HU.json +2 -2
  154. package/locales/it-IT.json +2 -2
  155. package/locales/ja-JP.json +2 -2
  156. package/locales/ko-KR.json +2 -2
  157. package/locales/nl-NL.json +2 -2
  158. package/locales/no-NO.json +2 -2
  159. package/locales/pl-PL.json +2 -2
  160. package/locales/pseudo.json +2 -2
  161. package/locales/pt-BR.json +2 -2
  162. package/locales/pt-PT.json +2 -2
  163. package/locales/ro-RO.json +2 -2
  164. package/locales/ru-RU.json +2 -2
  165. package/locales/sr-SP.json +2 -2
  166. package/locales/sv-SE.json +2 -2
  167. package/locales/tr-TR.json +2 -2
  168. package/locales/uk-UA.json +2 -2
  169. package/locales/vi-VN.json +2 -2
  170. package/locales/zh-CN.json +2 -2
  171. package/locales/zh-TW.json +2 -2
  172. package/package.json +4 -4
  173. package/src/Chat/useTriggerMenu.tsx +17 -27
  174. package/src/Collapsible/Collapsible.tsx +33 -4
  175. package/src/DropdownMenu/DropdownMenu.tsx +1 -71
  176. package/src/Grid/GridSpan.doc.mjs +51 -2
  177. package/src/Grid/GridSpan.tsx +2 -0
  178. package/src/Heading/Heading.tsx +5 -3
  179. package/src/HoverCard/useHoverCard.tsx +7 -0
  180. package/src/Item/Item.tsx +11 -2
  181. package/src/Layer/layerSurfacePress.ts +39 -0
  182. package/src/ProgressBar/ProgressBar.tsx +3 -1
  183. package/src/SegmentedControl/SegmentedControl.doc.mjs +5 -5
  184. package/src/SegmentedControl/SegmentedControl.tsx +23 -30
  185. package/src/SegmentedControl/SegmentedControlContext.ts +2 -9
  186. package/src/SegmentedControl/SegmentedControlItem.doc.mjs +1 -1
  187. package/src/SegmentedControl/SegmentedControlItem.tsx +4 -17
  188. package/src/SideNav/SideNav.tsx +213 -25
  189. package/src/SideNav/SideNavCollapseButton.tsx +18 -2
  190. package/src/SideNav/SideNavFocusTargetsContext.ts +29 -0
  191. package/src/SideNav/SideNavHeading.tsx +2 -2
  192. package/src/SideNav/SideNavItem.tsx +19 -3
  193. package/src/Text/Heading.doc.mjs +49 -0
  194. package/src/Token/Token.tsx +8 -1
  195. package/src/Tooltip/useTooltip.tsx +10 -1
  196. package/src/TopNav/TopNavHeading.tsx +8 -2
  197. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +9 -2
  198. package/src/TreeList/TreeList.tsx +85 -8
  199. package/src/hooks/ModalAnnounceProvider.tsx +12 -9
  200. package/src/hooks/useClickableContainer.ts +11 -1
  201. package/src/hooks/useFocusTrap.ts +2 -8
  202. package/src/hooks/useKeyboardHint.tsx +7 -1
  203. package/src/hooks/useListFocus.ts +51 -22
  204. package/src/hooks/useTreeFocus.ts +33 -3
  205. package/src/i18n/generated-locales/af-ZA.generated.ts +3 -2
  206. package/src/i18n/generated-locales/ar-SA.generated.ts +3 -2
  207. package/src/i18n/generated-locales/ca-ES.generated.ts +3 -2
  208. package/src/i18n/generated-locales/cs-CZ.generated.ts +3 -2
  209. package/src/i18n/generated-locales/da-DK.generated.ts +3 -2
  210. package/src/i18n/generated-locales/de-DE.generated.ts +3 -2
  211. package/src/i18n/generated-locales/el-GR.generated.ts +3 -2
  212. package/src/i18n/generated-locales/en.generated.ts +3 -2
  213. package/src/i18n/generated-locales/es-ES.generated.ts +3 -2
  214. package/src/i18n/generated-locales/fi-FI.generated.ts +3 -2
  215. package/src/i18n/generated-locales/fr-FR.generated.ts +3 -2
  216. package/src/i18n/generated-locales/he-IL.generated.ts +3 -2
  217. package/src/i18n/generated-locales/hu-HU.generated.ts +3 -2
  218. package/src/i18n/generated-locales/it-IT.generated.ts +3 -2
  219. package/src/i18n/generated-locales/ja-JP.generated.ts +3 -2
  220. package/src/i18n/generated-locales/ko-KR.generated.ts +3 -2
  221. package/src/i18n/generated-locales/nl-NL.generated.ts +3 -2
  222. package/src/i18n/generated-locales/no-NO.generated.ts +3 -2
  223. package/src/i18n/generated-locales/pl-PL.generated.ts +3 -2
  224. package/src/i18n/generated-locales/pseudo.generated.ts +3 -2
  225. package/src/i18n/generated-locales/pt-BR.generated.ts +3 -2
  226. package/src/i18n/generated-locales/pt-PT.generated.ts +3 -2
  227. package/src/i18n/generated-locales/ro-RO.generated.ts +3 -2
  228. package/src/i18n/generated-locales/ru-RU.generated.ts +3 -2
  229. package/src/i18n/generated-locales/sr-SP.generated.ts +3 -2
  230. package/src/i18n/generated-locales/sv-SE.generated.ts +3 -2
  231. package/src/i18n/generated-locales/tr-TR.generated.ts +3 -2
  232. package/src/i18n/generated-locales/uk-UA.generated.ts +3 -2
  233. package/src/i18n/generated-locales/vi-VN.generated.ts +3 -2
  234. package/src/i18n/generated-locales/zh-CN.generated.ts +3 -2
  235. package/src/i18n/generated-locales/zh-TW.generated.ts +3 -2
  236. package/src/motion/animator.ts +81 -11
  237. package/src/utils/accessibleName.ts +87 -0
  238. package/src/utils/focusReturn.ts +67 -2
  239. package/src/utils/sharedMutationObserver.ts +2 -2
  240. package/src/utils/useFocusLeavingChange.ts +53 -0
@@ -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"}
@@ -4,7 +4,7 @@
4
4
 
5
5
  /**
6
6
  * @file useTriggerMenu.tsx
7
- * @input Uses React, usePopover, SearchSource
7
+ * @input Uses React, usePopover, SearchSource, useBusyAnnouncement
8
8
  * @output Exports useTriggerMenu hook for trigger-based menus in contentEditable
9
9
  * @position Internal hook; consumed by ChatComposerInput
10
10
  *
@@ -24,7 +24,7 @@
24
24
  import { useState, useCallback, useRef, useEffect, useId } from 'react';
25
25
  import * as stylex from '@stylexjs/stylex';
26
26
  import { usePopover } from "../Popover/usePopover.js";
27
- import { useAnnounce } from "../hooks/useAnnounce.js";
27
+ import { useBusyAnnouncement } from "../hooks/useBusyAnnouncement.js";
28
28
  import { useHighlightedOptionScroll } from "../hooks/useHighlightedOptionScroll.js";
29
29
  import "../theme/tokens.stylex.js";
30
30
  import { colorVars, spacingVars, radiusVars, typeScaleVars, typographyVars } from "../theme/tokens.stylex.js";
@@ -194,34 +194,16 @@ export function useTriggerMenu(options) {
194
194
  });
195
195
 
196
196
  // The loading row carries no live role: it mounts already holding its text
197
- // and is removed when results arrive, so it would be skipped. The shared
198
- // channel announces each loading episode once instead (spec:AST-086 FR2,
199
- // FR6), once the row has been painted: the second animation frame runs
200
- // after the first paint, and a search that settles before then never shows
201
- // the row, so it announces nothing (FR7). The flag clears when the loading
202
- // row goes away, so the next search is a new occasion.
203
- const announce = useAnnounce();
204
- const hasAnnouncedLoadingRef = useRef(false);
197
+ // and is removed when results arrive, so it would be skipped. "Searching…"
198
+ // is the menu's busy state, so the shared busy path announces each loading
199
+ // episode once (spec:AST-086 FR6, FR8): rerenders and further keystrokes
200
+ // while loading do not repeat it, results arriving re-arm it, and a search
201
+ // that settles before the announcement goes out announces nothing.
205
202
  // Mirrors renderMenu: no row exists without an active trigger or while hidden.
206
203
  const isLoadingRowShown = state.isLoading && !state.isHidden && state.activeTrigger !== null;
207
204
  // One catalog string serves the row and the announcement (FR7).
208
205
  const loadingText = state.activeTrigger?.loadingText ?? t('@astryx.chatTriggerMenu.searching');
209
- useEffect(() => {
210
- if (!isLoadingRowShown) {
211
- hasAnnouncedLoadingRef.current = false;
212
- return;
213
- }
214
- if (hasAnnouncedLoadingRef.current) {
215
- return;
216
- }
217
- let frame = requestAnimationFrame(() => {
218
- frame = requestAnimationFrame(() => {
219
- hasAnnouncedLoadingRef.current = true;
220
- announce(loadingText, 'polite');
221
- });
222
- });
223
- return () => cancelAnimationFrame(frame);
224
- }, [announce, isLoadingRowShown, loadingText]);
206
+ const settleBusyAnnouncement = useBusyAnnouncement(isLoadingRowShown, loadingText, editableRef);
225
207
  const triggerStartRef = useRef(-1);
226
208
  const searchTimeoutRef = useRef(null);
227
209
  const searchRequestIdRef = useRef(0);
@@ -374,6 +356,9 @@ export function useTriggerMenu(options) {
374
356
  return true;
375
357
  };
376
358
  const applyResults = items => {
359
+ // Results that arrive before the busy start is heard withdraw it, so a
360
+ // search that settles on its first frame announces nothing (FR8).
361
+ settleBusyAnnouncement();
377
362
  const isHidden = isUnmatchedMultiWordQuery(trigger, items, false);
378
363
  setState(prev => ({
379
364
  ...prev,
@@ -399,7 +384,7 @@ export function useTriggerMenu(options) {
399
384
  trigger.searchSource.cancel?.();
400
385
  const result = trigger.searchSource.search(query);
401
386
  // A synchronous source already has its results, so it never shows
402
- // or announces the loading row (spec:AST-086 FR7).
387
+ // or announces the loading row.
403
388
  if (!Array.isArray(result)) {
404
389
  setState(prev => ({
405
390
  ...prev,
@@ -435,7 +420,7 @@ export function useTriggerMenu(options) {
435
420
  doSearch();
436
421
  }
437
422
  }
438
- }, [debounceMs, editableRef, triggers, reset, setAnchor, hidePopover, showPopover]);
423
+ }, [debounceMs, editableRef, triggers, reset, setAnchor, hidePopover, showPopover, settleBusyAnnouncement]);
439
424
  const selectItem = useCallback(item => {
440
425
  const trigger = state.activeTrigger;
441
426
  if (!trigger) {
@@ -1 +1 @@
1
- {"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../../src/Collapsible/Collapsible.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAef,OAAO,EAML,KAAK,cAAc,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAC,0BAA0B,EAAC,MAAM,2BAA2B,CAAC;AAG1E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA0J5C,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,OAAO,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,EAAE,0BAA0B,CAAC;IAE7C;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,QAAQ,EACR,aAAa,EACb,MAAM,EAAE,gBAAgB,EACxB,UAAkB,EAClB,YAAY,EACZ,eAAe,EACf,KAAK,EACL,cAAc,EACd,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAmOlB;yBAlPe,WAAW"}
1
+ {"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../../src/Collapsible/Collapsible.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAuBf,OAAO,EAML,KAAK,cAAc,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAC,0BAA0B,EAAC,MAAM,2BAA2B,CAAC;AAG1E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA0J5C,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,OAAO,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,EAAE,0BAA0B,CAAC;IAE7C;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,QAAQ,EACR,aAAa,EACb,MAAM,EAAE,gBAAgB,EACxB,UAAkB,EAClB,YAAY,EACZ,eAAe,EACf,KAAK,EACL,cAAc,EACd,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAwPlB;yBAvQe,WAAW"}
@@ -32,6 +32,10 @@ import "../theme/tokens.stylex.js";
32
32
  import { borderVars, colorVars, typographyVars, fontWeightVars, spacingVars, typeScaleVars, durationVars, easeVars } from "../theme/tokens.stylex.js";
33
33
  import { useCollapsible } from "./useCollapsible.js";
34
34
  import { LayoutChangeSnapshot } from "../motion/LayoutChangeSnapshot.js";
35
+ import { moveFocusLeftBehind, noteFocusWithin } from "../utils/focusReturn.js";
36
+ import { useInteractionModalityTracking } from "../utils/interactionModality.js";
37
+ import { useFocusLeavingChange } from "../utils/useFocusLeavingChange.js";
38
+ import { useMergedRefs } from "../hooks/useMergedRefs.js";
35
39
  import { applyLayoutChangeTransition, holdLayoutExit, playLayoutChange, releaseLayoutExit, reportLayoutChange } from "../motion/animatedLayout.js";
36
40
  import { CollapsibleGroupPresentationContext } from "./CollapsibleGroupContext.js";
37
41
  import { Icon } from "../Icon/index.js";
@@ -303,6 +307,22 @@ export function Collapsible({
303
307
  }
304
308
  }, [isOpen, isExiting]);
305
309
 
310
+ // Focus inside the content when it closes would be lost to the page once
311
+ // the content hides. It moves to the trigger that closes it (AR4); focus
312
+ // anywhere else is not moved. The shared sequence notes it in the commit
313
+ // before the DOM changes and moves it once the close has committed.
314
+ // The trigger's own document's last input decides the moved focus's ring.
315
+ const {
316
+ ref: modalityRef
317
+ } = useInteractionModalityTracking();
318
+ const mergedTriggerRef = useMergedRefs(triggerRef, modalityRef);
319
+ const noteClosingFocus = useFocusLeavingChange(isOpen, wasOpen => wasOpen ? noteFocusWithin(contentRef.current) : null, focus => moveFocusLeftBehind(focus, triggerRef.current, contentRef.current));
320
+ const beforeOpenChange = useCallback(wasOpen => {
321
+ noteClosingFocus(wasOpen);
322
+ if (animatedLayout != null) {
323
+ measureChange();
324
+ }
325
+ }, [animatedLayout, measureChange, noteClosingFocus]);
306
326
  // Activation is blocked by this guard rather than the native `disabled`
307
327
  // attribute, so the trigger keeps `aria-disabled` semantics and stays
308
328
  // discoverable. A native `disabled` button would silently swallow events
@@ -349,7 +369,7 @@ export function Collapsible({
349
369
  }), stylex.props(styles.root, isDivided && styles.divided, xstyle), className, style),
350
370
  ...props,
351
371
  children: [/*#__PURE__*/_jsxs("button", {
352
- ref: triggerRef,
372
+ ref: mergedTriggerRef,
353
373
  type: "button",
354
374
  onClick: handleToggle,
355
375
  "aria-disabled": isDisabled || undefined,
@@ -379,9 +399,9 @@ export function Collapsible({
379
399
  },
380
400
  children: trigger
381
401
  }), !isChevronAtStart && chevron]
382
- }), animatedLayout != null && /*#__PURE__*/_jsx(LayoutChangeSnapshot, {
402
+ }), /*#__PURE__*/_jsx(LayoutChangeSnapshot, {
383
403
  value: isOpen,
384
- onBeforeChange: measureChange
404
+ onBeforeChange: beforeOpenChange
385
405
  }), /*#__PURE__*/_jsx("div", {
386
406
  ref: contentRef,
387
407
  id: contentId,
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenu.tsx"],"names":[],"mappings":"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"}
@@ -35,6 +35,7 @@
35
35
  * - /packages/cli/assets/templates/blocks/components/DropdownMenu/ (showcase blocks)
36
36
  */
37
37
  import React, { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';
38
+ import { readAccessibleName } from "../utils/accessibleName.js";
38
39
  import * as stylex from '@stylexjs/stylex';
39
40
  import { usePopover } from "../Popover/usePopover.js";
40
41
  import { Button } from "../Button/index.js";
@@ -276,64 +277,6 @@ function holdInvokerThroughPress(control, popoverId) {
276
277
  doc.addEventListener('pointerup', onPressEnd, true);
277
278
  doc.addEventListener('pointercancel', onPressEnd, true);
278
279
  }
279
-
280
- /** Text an assistive technology reads from `element`, `aria-hidden` left out. */
281
- function visibleText(element) {
282
- const copy = element.cloneNode(true);
283
- for (const hidden of copy.querySelectorAll('[aria-hidden="true"]')) {
284
- hidden.remove();
285
- }
286
- // An icon-only control is named by its image's alt, an inner aria-label, or
287
- // an svg title rather than by text, so those count as its contents too.
288
- for (const named of copy.querySelectorAll('img[alt], [aria-label]')) {
289
- const name = named.getAttribute(named.tagName === 'IMG' ? 'alt' : 'aria-label') ?? '';
290
- named.replaceWith(copy.ownerDocument.createTextNode(` ${name} `));
291
- }
292
- for (const svg of copy.querySelectorAll('svg')) {
293
- const title = svg.querySelector('title')?.textContent ?? '';
294
- svg.replaceWith(copy.ownerDocument.createTextNode(` ${title} `));
295
- }
296
- return (copy.textContent ?? '').replace(/\s+/g, ' ').trim();
297
- }
298
-
299
- /**
300
- * The name a custom trigger gives the menu it labels (`aria-labelledby` on
301
- * the menu points at it): its own `aria-labelledby` targets, its
302
- * `aria-label`, its text, or its `title`, in that order.
303
- */
304
- function readAccessibleName(element) {
305
- if (element == null) {
306
- return undefined;
307
- }
308
- const labelledBy = element.getAttribute('aria-labelledby');
309
- if (labelledBy != null && labelledBy.trim() !== '') {
310
- const text = labelledBy.split(/\s+/).map(id => element.ownerDocument.getElementById(id)).filter(node => node != null).map(visibleText).join(' ').trim();
311
- if (text !== '') {
312
- return text;
313
- }
314
- }
315
- const label = element.getAttribute('aria-label')?.trim();
316
- if (label) {
317
- return label;
318
- }
319
- // A form control is named by its own <label>s; an input button by its value.
320
- const labels = 'labels' in element ? Array.from(element.labels ?? []) : [];
321
- const labelText = labels.map(visibleText).join(' ').trim();
322
- if (labelText !== '') {
323
- return labelText;
324
- }
325
- if (element instanceof HTMLInputElement && ['button', 'submit', 'reset'].includes(element.getAttribute('type') ?? '')) {
326
- const value = element.value.trim();
327
- if (value !== '') {
328
- return value;
329
- }
330
- }
331
- const text = visibleText(element);
332
- if (text !== '') {
333
- return text;
334
- }
335
- return element.getAttribute('title')?.trim() || undefined;
336
- }
337
280
  function DropdownMenuBottomSheet({
338
281
  button: buttonFromProps,
339
282
  renderTrigger,
@@ -5,8 +5,10 @@
5
5
  * @position Grid span component; controls grid item span
6
6
  *
7
7
  * SYNC: When modified, update these files to stay in sync:
8
+ * - /packages/core/src/Grid/GridSpan.doc.mjs
8
9
  * - /packages/core/src/Grid/Grid.doc.mjs
9
10
  * - /packages/core/src/Grid/Grid.test.tsx
11
+ * - /apps/storybook/stories/GridSpan.stories.tsx
10
12
  * - /apps/storybook/stories/Grid.stories.tsx
11
13
  * - /packages/cli/assets/templates/blocks/components/Grid/ (showcase blocks)
12
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"GridSpan.d.ts","sourceRoot":"","sources":["../../src/Grid/GridSpan.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAK5C,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC9D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE1B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAeD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACT,EAAE,aAAa,+BAwBf;yBAjCe,QAAQ"}
1
+ {"version":3,"file":"GridSpan.d.ts","sourceRoot":"","sources":["../../src/Grid/GridSpan.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAK5C,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC9D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE1B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAeD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACT,EAAE,aAAa,+BAwBf;yBAjCe,QAAQ"}
@@ -7,8 +7,10 @@
7
7
  * @position Grid span component; controls grid item span
8
8
  *
9
9
  * SYNC: When modified, update these files to stay in sync:
10
+ * - /packages/core/src/Grid/GridSpan.doc.mjs
10
11
  * - /packages/core/src/Grid/Grid.doc.mjs
11
12
  * - /packages/core/src/Grid/Grid.test.tsx
13
+ * - /apps/storybook/stories/GridSpan.stories.tsx
12
14
  * - /apps/storybook/stories/Grid.stories.tsx
13
15
  * - /packages/cli/assets/templates/blocks/components/Grid/ (showcase blocks)
14
16
  */
@@ -5,10 +5,12 @@
5
5
  * @position Core implementation; lives in own Heading/ dir, re-exported by Text/
6
6
  *
7
7
  * SYNC: When modified, update these files to stay in sync:
8
- * - /packages/core/src/Text/Text.doc.mjs (props table, features, implementation notes)
8
+ * - /packages/core/src/Text/Heading.doc.mjs (props table, theming target)
9
+ * - /packages/core/src/Text/Text.doc.mjs (shared truncation and tooltip guidance)
9
10
  * - /packages/core/src/Heading/Heading.test.tsx (tests for new/changed behavior)
10
- * - /packages/core/src/Text/index.ts (exports if types change)
11
- * - /apps/storybook/stories/Text.stories.tsx (storybook stories)
11
+ * - /packages/core/src/Heading/index.ts (exports if types change)
12
+ * - /packages/core/src/Text/index.ts (re-exports if types change)
13
+ * - /apps/storybook/stories/Heading.stories.tsx (storybook stories)
12
14
  * - /packages/cli/assets/templates/blocks/components/Heading/ (showcase blocks)
13
15
  * - /packages/cli/assets/templates/blocks/components/Text/ (showcase blocks)
14
16
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Heading.d.ts","sourceRoot":"","sources":["../../src/Heading/Heading.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAyB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE7D,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,WAAW,EACX,SAAS,EACT,QAAQ,EACR,UAAU,EACX,MAAM,gBAAgB,CAAC;AAkBxB,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,UAAU,CAAC;AAG7C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,SAAS,CAAC;AAM5C;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEjD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC;AAQ/C,MAAM,WAAW,YAAa,SAAQ,IAAI,CACxC,SAAS,CAAC,kBAAkB,CAAC,EAC7B,UAAU,CACX;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACpC;;;OAGG;IACH,KAAK,EAAE,YAAY,CAAC;IAEpB;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IAEpB;;;;;;;;;;;OAWG;IACH,kBAAkB,CAAC,EAAE,YAAY,CAAC;IAElC;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IAE9C;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAWD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,IAAI,EACJ,MAAM,EACN,kBAAkB,EAClB,KAAiB,EACjB,OAAiB,EACjB,QAAY,EACZ,kBAAyB,EACzB,SAAS,EACT,QAAQ,EACR,OAAiB,EACjB,UAAkB,EAClB,gBAAwB,EACxB,MAAM,EACN,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACT,EAAE,YAAY,+BAsGd;yBA1He,OAAO"}
1
+ {"version":3,"file":"Heading.d.ts","sourceRoot":"","sources":["../../src/Heading/Heading.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAyB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE7D,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,WAAW,EACX,SAAS,EACT,QAAQ,EACR,UAAU,EACX,MAAM,gBAAgB,CAAC;AAkBxB,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,UAAU,CAAC;AAG7C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,SAAS,CAAC;AAM5C;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEjD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC;AAQ/C,MAAM,WAAW,YAAa,SAAQ,IAAI,CACxC,SAAS,CAAC,kBAAkB,CAAC,EAC7B,UAAU,CACX;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACpC;;;OAGG;IACH,KAAK,EAAE,YAAY,CAAC;IAEpB;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IAEpB;;;;;;;;;;;OAWG;IACH,kBAAkB,CAAC,EAAE,YAAY,CAAC;IAElC;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IAE9C;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAWD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,IAAI,EACJ,MAAM,EACN,kBAAkB,EAClB,KAAiB,EACjB,OAAiB,EACjB,QAAY,EACZ,kBAAyB,EACzB,SAAS,EACT,QAAQ,EACR,OAAiB,EACjB,UAAkB,EAClB,gBAAwB,EACxB,MAAM,EACN,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACT,EAAE,YAAY,+BAsGd;yBA1He,OAAO"}
@@ -9,10 +9,12 @@
9
9
  * @position Core implementation; lives in own Heading/ dir, re-exported by Text/
10
10
  *
11
11
  * SYNC: When modified, update these files to stay in sync:
12
- * - /packages/core/src/Text/Text.doc.mjs (props table, features, implementation notes)
12
+ * - /packages/core/src/Text/Heading.doc.mjs (props table, theming target)
13
+ * - /packages/core/src/Text/Text.doc.mjs (shared truncation and tooltip guidance)
13
14
  * - /packages/core/src/Heading/Heading.test.tsx (tests for new/changed behavior)
14
- * - /packages/core/src/Text/index.ts (exports if types change)
15
- * - /apps/storybook/stories/Text.stories.tsx (storybook stories)
15
+ * - /packages/core/src/Heading/index.ts (exports if types change)
16
+ * - /packages/core/src/Text/index.ts (re-exports if types change)
17
+ * - /apps/storybook/stories/Heading.stories.tsx (storybook stories)
16
18
  * - /packages/cli/assets/templates/blocks/components/Heading/ (showcase blocks)
17
19
  * - /packages/cli/assets/templates/blocks/components/Text/ (showcase blocks)
18
20
  */
@@ -1 +1 @@
1
- {"version":3,"file":"useHoverCard.d.ts","sourceRoot":"","sources":["../../src/HoverCard/useHoverCard.tsx"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,OAAO,CAAC;AAEf,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AA6BlC;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AAEtD,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,qBAAqB,CAAC;IAErC;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,qBAAqB,CAAC;IAErC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAE9B;;;OAGG;IACH,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAEtC;;;;OAIG;IACH,cAAc,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAEzC;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;;;;OAMG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;;;OAOG;IACH,eAAe,EAAE,CACf,QAAQ,EAAE,SAAS,EACnB,KAAK,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,KAC5C,SAAS,CAAC;IAEf;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAyBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,gBAAqB,GAAG,eAAe,CAyc5E"}
1
+ {"version":3,"file":"useHoverCard.d.ts","sourceRoot":"","sources":["../../src/HoverCard/useHoverCard.tsx"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,OAAO,CAAC;AAEf,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AA8BlC;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AAEtD,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,qBAAqB,CAAC;IAErC;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,qBAAqB,CAAC;IAErC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAE9B;;;OAGG;IACH,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAEtC;;;;OAIG;IACH,cAAc,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAEzC;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;;;;OAMG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;;;OAOG;IACH,eAAe,EAAE,CACf,QAAQ,EAAE,SAAS,EACnB,KAAK,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,KAC5C,SAAS,CAAC;IAEf;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAyBD;;;;;;;;;;;;;;;;GAgBG;AAEH,wBAAgB,YAAY,CAAC,OAAO,GAAE,gBAAqB,GAAG,eAAe,CA8c5E"}
@@ -16,6 +16,7 @@ import * as stylex from '@stylexjs/stylex';
16
16
  import { useLayer } from "../Layer/useLayer.js";
17
17
  import { useTouchTrigger } from "../Layer/useTouchTrigger.js";
18
18
  import { layerAnimations } from "../Layer/layerAnimations.stylex.js";
19
+ import { registerLayerSurface } from "../Layer/layerSurfacePress.js";
19
20
  import { useLayerDismissal } from "../Layer/useLayerDismissal.js";
20
21
  import "../theme/tokens.stylex.js";
21
22
  import { colorVars, shadowVars, radiusVars, spacingVars } from "../theme/tokens.stylex.js";
@@ -78,6 +79,7 @@ function isFocusable(element) {
78
79
  * {hoverCard.renderHoverCard(<ProfileCard user={user} />)}
79
80
  * ```
80
81
  */
82
+
81
83
  export function useHoverCard(options = {}) {
82
84
  const {
83
85
  placement = 'above',
@@ -406,6 +408,11 @@ export function useHoverCard(options = {}) {
406
408
  as: 'div'
407
409
  };
408
410
  return renderLayer(/*#__PURE__*/_jsx("div", {
411
+ // FR11: a press inside the card acts only within the card. A
412
+ // registered surface counts as something else in the shared
413
+ // interactive-ancestor walk, so a clickable container around the
414
+ // trigger leaves it alone; document listeners still see it.
415
+ ref: registerLayerSurface,
409
416
  ...{
410
417
  className: "x1lliihq x1vlblms xvmdzux x126nfab x1t818jl"
411
418
  },
@@ -1 +1 @@
1
- {"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../src/Item/Item.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAUf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA4B5C,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,CAAC;AAC1D,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE9D;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,CAAC;AAE1E,yFAAyF;AACzF,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,UAAU,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wBAAwB;IACxB,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,oFAAoF;IACpF,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,qFAAqF;IACrF,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEpD,MAAM,WAAW,SAAU,SAAQ,SAAS,CAAC,WAAW,CAAC;IACvD,yCAAyC;IACzC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE7B;;;;;;;;;;;OAWG;IACH,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC;IAE/C;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB;;;OAGG;IACH,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAE9B;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAE5C;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAErD;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAE5B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAEhC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAElC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAiQD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,IAAI,CAAC,EACnB,EAAE,EAAE,SAAiB,EACrB,MAAM,EACN,YAAY,EACZ,KAAK,EACL,WAAW,EACX,UAAU,EACV,KAAgB,EAChB,OAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,MAAkB,EAClB,OAAO,EACP,cAAc,EACd,IAAI,EACJ,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,YAAY,EACjB,aAAqB,EACrB,UAAkB,EAClB,UAAkB,EAClB,YAAY,EACZ,aAAwB,EACxB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,IAAI,EACJ,GAAG,SAAS,EACb,EAAE,SAAS,+BA+VX;yBA3Xe,IAAI"}
1
+ {"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../src/Item/Item.tsx"],"names":[],"mappings":"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"}
package/dist/Item/Item.js CHANGED
@@ -32,6 +32,7 @@ import { lazy, Suspense, use, useCallback, useId, useRef } from 'react';
32
32
  import * as stylex from '@stylexjs/stylex';
33
33
  import "../theme/tokens.stylex.js";
34
34
  import { colorVars, radiusVars, spacingVars, durationVars, easeVars, typeScaleVars } from "../theme/tokens.stylex.js";
35
+ import { isLayerSurface } from "../Layer/layerSurfacePress.js";
35
36
  import { isRenderable } from "../utils/isRenderable.js";
36
37
  import { mergeProps } from "../utils/mergeProps.js";
37
38
  import { useFocusAcrossSwap } from "../utils/useFocusAcrossSwap.js";
@@ -40,7 +41,7 @@ import { ItemMarkerColumnsContext } from "./ItemMarkerColumnsContext.js";
40
41
  import { useMergedRefs } from "../hooks/useMergedRefs.js";
41
42
  import { computeTargetAndRel } from "../Link/computeTargetAndRel.js";
42
43
  import { useLinkComponent } from "../Link/useLinkComponent.js";
43
- import { useClickableContainer } from "../hooks/useClickableContainer.js";
44
+ import { innermostInteractive, useClickableContainer } from "../hooks/useClickableContainer.js";
44
45
  import { useDevWarning } from "../hooks/useDevWarning.js";
45
46
  import { themeProps } from "../utils/themeProps.js";
46
47
  import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
@@ -370,7 +371,10 @@ export function Item({
370
371
  return;
371
372
  }
372
373
  const target = e.target;
373
- if (target.closest('button, a, input, select, textarea')) {
374
+ if (target.closest('button, a, input, select, textarea') ||
375
+ // A press inside an open Tooltip or HoverCard belongs to it
376
+ // (component:Tooltip FR11, component:HoverCard FR11).
377
+ innermostInteractive(target, e.currentTarget, isLayerSurface) != null) {
374
378
  return;
375
379
  }
376
380
  onClick?.(e);
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Ref callback for a layer surface's content element. The layer root around
3
+ * it is registered too: a caller's `style`, `xstyle` or `className` (padding,
4
+ * for instance) lands there, so a press on that edge is still the surface's.
5
+ */
6
+ export declare function registerLayerSurface(element: Element | null): void;
7
+ /** Whether this element is a registered layer surface. */
8
+ export declare function isLayerSurface(element: Element): boolean;
9
+ //# sourceMappingURL=layerSurfacePress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layerSurfacePress.d.ts","sourceRoot":"","sources":["../../src/Layer/layerSurfacePress.ts"],"names":[],"mappings":"AAmBA;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CASlE;AAED,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAExD"}
@@ -0,0 +1,39 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file layerSurfacePress.ts
5
+ * @input The content element of an open Tooltip or HoverCard surface.
6
+ * @output A registry of those elements, so the shared "does this press belong
7
+ * to something else" walk (hasInteractiveAncestor) treats a press inside one
8
+ * as not the container's.
9
+ * @position component:Tooltip FR11 and component:HoverCard FR11. The surfaces
10
+ * register their content element; every clickable container that asks
11
+ * hasInteractiveAncestor (useClickableContainer, TreeListItem, Table row
12
+ * plugins), or walks with isLayerSurface (Item, Token), leaves the press
13
+ * alone. The event
14
+ * keeps propagating, so document and window listeners still see it. Not
15
+ * exported from the package.
16
+ */
17
+
18
+ const surfaces = new WeakSet();
19
+
20
+ /**
21
+ * Ref callback for a layer surface's content element. The layer root around
22
+ * it is registered too: a caller's `style`, `xstyle` or `className` (padding,
23
+ * for instance) lands there, so a press on that edge is still the surface's.
24
+ */
25
+ export function registerLayerSurface(element) {
26
+ if (element == null) {
27
+ return;
28
+ }
29
+ surfaces.add(element);
30
+ const root = element.parentElement;
31
+ if (root?.hasAttribute('popover')) {
32
+ surfaces.add(root);
33
+ }
34
+ }
35
+
36
+ /** Whether this element is a registered layer surface. */
37
+ export function isLayerSurface(element) {
38
+ return surfaces.has(element);
39
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../src/ProgressBar/ProgressBar.tsx"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAG5C,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,SAAS,CAAC;AAUnD;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,qBAAqB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACjE,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1D;;;OAGG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IACvC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAqSD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAS,EACT,GAAS,EACT,KAAK,EACL,aAAqB,EACrB,aAAqB,EACrB,gBAA0C,EAC1C,OAAkB,EAClB,eAAuB,EACvB,UAAkB,EAClB,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,UAAU,EACzB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,gBAAgB,+BA4JlB;yBA7Ke,WAAW"}
1
+ {"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../src/ProgressBar/ProgressBar.tsx"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAG5C,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,SAAS,CAAC;AAUnD;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,qBAAqB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACjE,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1D;;;OAGG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IACvC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAqSD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAS,EACT,GAAS,EACT,KAAK,EACL,aAAqB,EACrB,aAAqB,EACrB,gBAA0C,EAC1C,OAAkB,EAClB,eAAuB,EACvB,UAAkB,EAClB,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,UAAU,EACzB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,gBAAgB,+BA8JlB;yBA/Ke,WAAW"}
@@ -370,7 +370,7 @@ export function ProgressBar({
370
370
  }), resolvedMarks.map(mark => {
371
371
  // The tick element. It is both the Tooltip's anchor and the Suspense
372
372
  // fallback shown while the lazy Tooltip chunk loads, so the tick is
373
- // always visible and the label attaches once ready. The list `key`
373
+ // always visible and the tooltip attaches once ready. The list `key`
374
374
  // lives on the mapped <Suspense>, not here.
375
375
  //
376
376
  // `placement` is reflected as `data-placement` (and a class) so a
@@ -378,6 +378,8 @@ export function ProgressBar({
378
378
  // `progress-bar-mark` target; `variant` mirrors the fill's variant
379
379
  // for the same reason.
380
380
  const markEl = /*#__PURE__*/_jsx("span", {
381
+ role: "img",
382
+ "aria-label": mark.label,
381
383
  tabIndex: 0,
382
384
  ...mergeProps(themeProps('progress-bar-mark', {
383
385
  variant: fillVariant,
@@ -41,7 +41,9 @@ export interface SegmentedControlProps extends Omit<BaseProps<HTMLDivElement>, '
41
41
  */
42
42
  layout?: SegmentedControlLayout;
43
43
  /**
44
- * Whether the entire control is disabled.
44
+ * Whether the entire control is disabled. The selected segment keeps the
45
+ * control's Tab stop, announced as disabled (`aria-disabled`), and nothing
46
+ * can be selected.
45
47
  * @default false
46
48
  */
47
49
  isDisabled?: boolean;
@@ -49,11 +51,11 @@ export interface SegmentedControlProps extends Omit<BaseProps<HTMLDivElement>, '
49
51
  * Explains why the control is disabled. Applies to the whole-group disabled
50
52
  * state (`isDisabled`), not individual segments. When set together with
51
53
  * `isDisabled`, the control shows a tooltip with this text on hover and
52
- * keyboard focus, and stays focusable (via `aria-disabled`) so the reason is
53
- * discoverable by keyboard and assistive technology. Selection stays blocked.
54
+ * keyboard focus, and the reason describes each segment for assistive
55
+ * technology. Selection stays blocked.
54
56
  *
55
- * Use this instead of wrapping a disabled control in `Tooltip` — disabled
56
- * controls don't emit the pointer events an external tooltip needs.
57
+ * Use this instead of wrapping a disabled control in `Tooltip`, so the
58
+ * reason is attached to the control itself.
57
59
  */
58
60
  disabledMessage?: string;
59
61
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../src/SegmentedControl/SegmentedControl.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAAuB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAQlE,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAI5C,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CACjD,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,CACX;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AA8DD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,KAAK,EACL,QAAQ,EACR,KAAK,EACL,IAAI,EAAE,QAAQ,EACd,MAAc,EACd,UAAkB,EAClB,eAAe,EACf,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,EAClB,kBAAkB,EAAE,mBAAmB,EACvC,GAAG,IAAI,EACR,EAAE,qBAAqB,qBAyJvB;yBA3Ke,gBAAgB"}
1
+ {"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../src/SegmentedControl/SegmentedControl.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAAuB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAQlE,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAI5C,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CACjD,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,CACX;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AA0DD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,KAAK,EACL,QAAQ,EACR,KAAK,EACL,IAAI,EAAE,QAAQ,EACd,MAAc,EACd,UAAkB,EAClB,eAAe,EACf,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,EAClB,kBAAkB,EAAE,mBAAmB,EACvC,GAAG,IAAI,EACR,EAAE,qBAAqB,qBAoJvB;yBAtKe,gBAAgB"}
@@ -52,11 +52,6 @@ const styles = {
52
52
  $$css: true
53
53
  },
54
54
  disabled: {
55
- kSiTet: "xbyyjgo",
56
- kfzvcC: "x47corl",
57
- $$css: true
58
- },
59
- disabledWithMessage: {
60
55
  kSiTet: "xbyyjgo",
61
56
  $$css: true
62
57
  }
@@ -113,11 +108,10 @@ export function SegmentedControl({
113
108
  }) {
114
109
  const size = useSize(sizeProp, 'md');
115
110
 
116
- // Disabled-reason tooltip. Applies to the whole-group disabled state. Disabled
117
- // controls swallow pointer events, so the tooltip listeners attach to the
118
- // radiogroup container (and the container keeps pointer events on in this
119
- // mode) while the radios stay perceivable via aria-disabled. Selection is
120
- // blocked by the isDisabled guards in the click/focus handlers.
111
+ // Disabled-reason tooltip. Applies to the whole-group disabled state. The
112
+ // tooltip listeners attach to the radiogroup container, which keeps pointer
113
+ // events while disabled; the radios stay perceivable via aria-disabled.
114
+ // Selection is blocked by the isDisabled guards in the click/focus handlers.
121
115
  const showsDisabledMessage = isDisabled && !!disabledMessage;
122
116
  const disabledMessageTooltip = useTooltip({
123
117
  placement: 'above',
@@ -139,10 +133,10 @@ export function SegmentedControl({
139
133
  } = useInternalListFocus({
140
134
  itemSelector: '[role="radio"]:not([aria-disabled="true"])',
141
135
  hasRovingTabIndex: true,
142
- // Disabled with a reason, the control keeps one Tab stop so the reason is
143
- // reachable (FR2, FR7): the selected segment, else the first segment not
144
- // disabled by its own isDisabled, else the first.
145
- disabledTabStop: showsDisabledMessage ? orderDisabledTabStop : undefined,
136
+ // One Tab stop, placed by the control (FR2, FR7): the selected segment,
137
+ // enabled or not and in a disabled control too, else the first segment
138
+ // not disabled by its own isDisabled, else the first.
139
+ tabStopOrder: orderTabStop,
146
140
  wrap: true,
147
141
  orientation: 'horizontal'
148
142
  });
@@ -200,7 +194,6 @@ export function SegmentedControl({
200
194
  size,
201
195
  layout,
202
196
  isDisabled,
203
- hasDisabledMessage: showsDisabledMessage,
204
197
  disabledReasonID: showsDisabledMessage ? disabledMessageTooltip.describedBy : undefined
205
198
  }), [value, onChange, size, layout, isDisabled, showsDisabledMessage, disabledMessageTooltip.describedBy]);
206
199
  return /*#__PURE__*/_jsxs(SegmentedControlContext, {
@@ -219,7 +212,7 @@ export function SegmentedControl({
219
212
  onBlur: composeEventHandlers(onBlurProp, hint.onBlur),
220
213
  ...mergeProps(themeProps('segmented-control', {
221
214
  size
222
- }), stylex.props(styles.container, sizeStyles[size], layout === 'fill' && styles.fill, isDisabled && (showsDisabledMessage ? styles.disabledWithMessage : styles.disabled), xstyle), className, style),
215
+ }), stylex.props(styles.container, sizeStyles[size], layout === 'fill' && styles.fill, isDisabled && styles.disabled, xstyle), className, style),
223
216
  children: [children, hint.hintElement]
224
217
  }), showsDisabledMessage && disabledMessageTooltip.renderTooltip(disabledMessage)]
225
218
  });
@@ -227,11 +220,11 @@ export function SegmentedControl({
227
220
  SegmentedControl.displayName = 'SegmentedControl';
228
221
 
229
222
  /**
230
- * The segments of a control disabled with a reason, its Tab stop first: the
231
- * selected segment, else the first segment not disabled by its own
232
- * isDisabled, else the first (FR2, FR7).
223
+ * The control's segments, its Tab stop first: the selected segment, enabled
224
+ * or not, else the first segment not disabled by its own isDisabled, else the
225
+ * first (FR2, FR7).
233
226
  */
234
- function orderDisabledTabStop(list) {
227
+ function orderTabStop(list) {
235
228
  const segments = Array.from(list.querySelectorAll('[role="radio"]'));
236
229
  const stop = segments.find(segment => segment.getAttribute('aria-checked') === 'true') ?? segments.find(segment => !isSegmentDisabledOnItsOwn(segment)) ?? segments[0];
237
230
  return stop == null ? [] : [stop, ...segments.filter(segment => segment !== stop)];