@astryxdesign/core 0.7.5-canary.a73f030 → 0.7.5-canary.a8374b5

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 (364) hide show
  1. package/dist/AlertDialog/AlertDialog.js +1 -1
  2. package/dist/AppShell/AppShell.d.ts +0 -22
  3. package/dist/AppShell/AppShell.d.ts.map +1 -1
  4. package/dist/AppShell/AppShell.js +155 -1
  5. package/dist/Banner/Banner.d.ts +1 -0
  6. package/dist/Banner/Banner.d.ts.map +1 -1
  7. package/dist/Banner/Banner.js +2 -0
  8. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
  9. package/dist/BottomSheet/BottomSheet.js +2 -1
  10. package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
  11. package/dist/BottomSheet/BottomSheetPanel.js +2 -1
  12. package/dist/BottomSheet/BottomSheetSwitcher.js +1 -1
  13. package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  14. package/dist/Breadcrumbs/BreadcrumbItem.js +31 -3
  15. package/dist/Chat/ChatPastedTextToken.d.ts.map +1 -1
  16. package/dist/Chat/ChatPastedTextToken.js +7 -6
  17. package/dist/Collapsible/Collapsible.d.ts +8 -1
  18. package/dist/Collapsible/Collapsible.d.ts.map +1 -1
  19. package/dist/Collapsible/Collapsible.js +84 -2
  20. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  21. package/dist/DropdownMenu/DropdownMenu.js +2 -10
  22. package/dist/DropdownMenu/menuTouchAction.stylex.d.ts +25 -0
  23. package/dist/DropdownMenu/menuTouchAction.stylex.d.ts.map +1 -0
  24. package/dist/DropdownMenu/menuTouchAction.stylex.js +29 -0
  25. package/dist/Field/Field.js +1 -1
  26. package/dist/Field/FieldLabel.js +1 -1
  27. package/dist/Field/PanelSearchInput.d.ts +9 -1
  28. package/dist/Field/PanelSearchInput.d.ts.map +1 -1
  29. package/dist/Field/PanelSearchInput.js +20 -8
  30. package/dist/FileInput/FileInput.d.ts.map +1 -1
  31. package/dist/FileInput/FileInput.js +19 -9
  32. package/dist/Icon/Icon.d.ts +31 -2
  33. package/dist/Icon/Icon.d.ts.map +1 -1
  34. package/dist/Icon/Icon.js +58 -8
  35. package/dist/Icon/IconSize.stylex.d.ts +16 -11
  36. package/dist/Icon/IconSize.stylex.d.ts.map +1 -1
  37. package/dist/Icon/IconSize.stylex.js +27 -11
  38. package/dist/Icon/globalIconRegistry.d.ts +71 -4
  39. package/dist/Icon/globalIconRegistry.d.ts.map +1 -1
  40. package/dist/Icon/globalIconRegistry.js +163 -23
  41. package/dist/Icon/index.d.ts +26 -2
  42. package/dist/Icon/index.d.ts.map +1 -1
  43. package/dist/Icon/index.js +24 -1
  44. package/dist/Icon/useIcon.d.ts +5 -1
  45. package/dist/Icon/useIcon.d.ts.map +1 -1
  46. package/dist/Icon/useIcon.js +5 -1
  47. package/dist/Kbd/Kbd.d.ts +2 -2
  48. package/dist/Kbd/Kbd.d.ts.map +1 -1
  49. package/dist/Kbd/Kbd.js +18 -11
  50. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  51. package/dist/Lightbox/Lightbox.js +6 -4
  52. package/dist/Lightbox/LightboxViewport.a11y.browser.spec.d.ts +2 -0
  53. package/dist/Lightbox/LightboxViewport.a11y.browser.spec.d.ts.map +1 -0
  54. package/dist/Lightbox/LightboxViewport.a11y.browser.spec.js +65 -0
  55. package/dist/MultiSelector/MultiSelector.d.ts +1 -1
  56. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  57. package/dist/MultiSelector/MultiSelector.js +13 -1
  58. package/dist/NavMenu/NavHeadingMenu.d.ts +1 -1
  59. package/dist/NavMenu/NavHeadingMenu.d.ts.map +1 -1
  60. package/dist/NavMenu/NavHeadingMenu.js +29 -5
  61. package/dist/NavMenu/NavHeadingMenuItem.d.ts.map +1 -1
  62. package/dist/NavMenu/NavHeadingMenuItem.js +51 -7
  63. package/dist/NavMenu/NavMenuContext.d.ts +9 -0
  64. package/dist/NavMenu/NavMenuContext.d.ts.map +1 -1
  65. package/dist/NavMenu/NavMenuContext.js +9 -0
  66. package/dist/NumberInput/NumberInput.d.ts +1 -1
  67. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  68. package/dist/NumberInput/NumberInput.js +8 -1
  69. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  70. package/dist/PowerSearch/PowerSearch.js +7 -5
  71. package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
  72. package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  73. package/dist/SegmentedControl/SegmentedControl.js +6 -2
  74. package/dist/Selector/Selector.d.ts.map +1 -1
  75. package/dist/Selector/Selector.js +8 -1
  76. package/dist/SideNav/SideNav.d.ts.map +1 -1
  77. package/dist/SideNav/SideNav.js +58 -2
  78. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  79. package/dist/SideNav/SideNavHeading.js +45 -3
  80. package/dist/SideNav/railMotion.d.ts +54 -0
  81. package/dist/SideNav/railMotion.d.ts.map +1 -0
  82. package/dist/SideNav/railMotion.js +253 -0
  83. package/dist/Slider/Slider.d.ts.map +1 -1
  84. package/dist/Slider/Slider.js +7 -3
  85. package/dist/TabList/Tab.d.ts.map +1 -1
  86. package/dist/TabList/Tab.js +5 -1
  87. package/dist/TabList/TabMenu.d.ts.map +1 -1
  88. package/dist/TabList/TabMenu.js +25 -3
  89. package/dist/Table/TableCell.d.ts.map +1 -1
  90. package/dist/Table/TableCell.js +5 -1
  91. package/dist/Table/TableHeaderCell.d.ts.map +1 -1
  92. package/dist/Table/TableHeaderCell.js +1 -0
  93. package/dist/Table/TableRow.d.ts.map +1 -1
  94. package/dist/Table/TableRow.js +3 -0
  95. package/dist/Table/glidingDivider.d.ts +96 -0
  96. package/dist/Table/glidingDivider.d.ts.map +1 -0
  97. package/dist/Table/glidingDivider.js +275 -0
  98. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  99. package/dist/Table/plugins/columnResize/useTableColumnResize.js +11 -2
  100. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +8 -0
  101. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  102. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +374 -13
  103. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
  104. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +244 -6
  105. package/dist/Table/rowDivider.d.ts +34 -0
  106. package/dist/Table/rowDivider.d.ts.map +1 -0
  107. package/dist/Table/rowDivider.js +118 -0
  108. package/dist/TextInput/TextInput.d.ts +1 -1
  109. package/dist/TextInput/TextInput.d.ts.map +1 -1
  110. package/dist/TextInput/TextInput.js +8 -1
  111. package/dist/Tokenizer/Tokenizer.d.ts +71 -4
  112. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  113. package/dist/Tokenizer/Tokenizer.js +418 -32
  114. package/dist/Tokenizer/TokenizerBottomSheet.d.ts +98 -0
  115. package/dist/Tokenizer/TokenizerBottomSheet.d.ts.map +1 -0
  116. package/dist/Tokenizer/TokenizerBottomSheet.js +721 -0
  117. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  118. package/dist/TopNav/TopNavHeading.js +26 -0
  119. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  120. package/dist/TopNav/TopNavMenu.js +32 -4
  121. package/dist/TreeList/TreeList.d.ts +8 -23
  122. package/dist/TreeList/TreeList.d.ts.map +1 -1
  123. package/dist/TreeList/TreeList.js +175 -3
  124. package/dist/TreeList/TreeListItem.d.ts +7 -1
  125. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  126. package/dist/TreeList/TreeListItem.js +3 -1
  127. package/dist/astryx.css +57 -8
  128. package/dist/hooks/index.d.ts +2 -0
  129. package/dist/hooks/index.d.ts.map +1 -1
  130. package/dist/hooks/index.js +1 -0
  131. package/dist/hooks/menuPressOnItems.d.ts +19 -0
  132. package/dist/hooks/menuPressOnItems.d.ts.map +1 -0
  133. package/dist/hooks/menuPressOnItems.js +32 -0
  134. package/dist/hooks/useAdaptivePresentation.d.ts +8 -0
  135. package/dist/hooks/useAdaptivePresentation.d.ts.map +1 -1
  136. package/dist/hooks/useAdaptivePresentation.js +27 -5
  137. package/dist/hooks/useAnimatedLayout.d.ts +42 -0
  138. package/dist/hooks/useAnimatedLayout.d.ts.map +1 -0
  139. package/dist/hooks/useAnimatedLayout.js +46 -0
  140. package/dist/hooks/useMenuHover.d.ts.map +1 -1
  141. package/dist/hooks/useMenuHover.js +6 -2
  142. package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
  143. package/dist/i18n/generated-locales/en.generated.js +33 -0
  144. package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
  145. package/dist/i18n/generated-locales/pseudo.generated.js +33 -0
  146. package/dist/internal/tokenizer-presentation.d.ts +21 -0
  147. package/dist/internal/tokenizer-presentation.d.ts.map +1 -0
  148. package/dist/internal/tokenizer-presentation.js +21 -0
  149. package/dist/motion/LayoutChangeSnapshot.d.ts +33 -0
  150. package/dist/motion/LayoutChangeSnapshot.d.ts.map +1 -0
  151. package/dist/motion/LayoutChangeSnapshot.js +37 -0
  152. package/dist/motion/animatedLayout.d.ts +107 -3
  153. package/dist/motion/animatedLayout.d.ts.map +1 -1
  154. package/dist/motion/animatedLayout.js +732 -58
  155. package/dist/motion/transientCopy.d.ts +33 -0
  156. package/dist/motion/transientCopy.d.ts.map +1 -0
  157. package/dist/motion/transientCopy.js +314 -0
  158. package/dist/theme/defineTheme.d.ts +111 -11
  159. package/dist/theme/defineTheme.d.ts.map +1 -1
  160. package/dist/theme/defineTheme.js +97 -7
  161. package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
  162. package/dist/theme/derivedVarRegistry.js +9 -0
  163. package/locales/af-ZA.json +1 -1
  164. package/locales/ar-SA.json +1 -1
  165. package/locales/ca-ES.json +1 -1
  166. package/locales/cs-CZ.json +1 -1
  167. package/locales/da-DK.json +1 -1
  168. package/locales/de-DE.json +1 -1
  169. package/locales/el-GR.json +1 -1
  170. package/locales/en.json +132 -0
  171. package/locales/es-ES.json +1 -1
  172. package/locales/fi-FI.json +1 -1
  173. package/locales/fr-FR.json +1 -1
  174. package/locales/he-IL.json +1 -1
  175. package/locales/hu-HU.json +1 -1
  176. package/locales/it-IT.json +1 -1
  177. package/locales/ja-JP.json +1 -1
  178. package/locales/ko-KR.json +1 -1
  179. package/locales/nl-NL.json +1 -1
  180. package/locales/no-NO.json +1 -1
  181. package/locales/pl-PL.json +1 -1
  182. package/locales/pseudo.json +99 -0
  183. package/locales/pt-BR.json +1 -1
  184. package/locales/pt-PT.json +1 -1
  185. package/locales/ro-RO.json +1 -1
  186. package/locales/ru-RU.json +1 -1
  187. package/locales/sr-SP.json +1 -1
  188. package/locales/sv-SE.json +1 -1
  189. package/locales/tr-TR.json +1 -1
  190. package/locales/uk-UA.json +1 -1
  191. package/locales/vi-VN.json +1 -1
  192. package/locales/zh-CN.json +1 -1
  193. package/locales/zh-TW.json +1 -1
  194. package/package.json +8 -3
  195. package/src/AlertDialog/AlertDialog.spec.md +83 -29
  196. package/src/AlertDialog/AlertDialog.tsx +1 -1
  197. package/src/AppShell/AppShell.spec.md +49 -44
  198. package/src/AppShell/AppShell.tsx +170 -2
  199. package/src/Banner/Banner.spec.md +4 -2
  200. package/src/Banner/Banner.test.tsx +36 -17
  201. package/src/Banner/Banner.tsx +5 -0
  202. package/src/BottomSheet/BottomSheet.tsx +2 -1
  203. package/src/BottomSheet/BottomSheetPanel.tsx +2 -1
  204. package/src/BottomSheet/BottomSheetSwitcher.spec.md +3 -7
  205. package/src/BottomSheet/BottomSheetSwitcher.tsx +1 -1
  206. package/src/BottomSheet/__tests__/BottomSheetKeyboard.a11y.browser.spec.ts +3 -1
  207. package/src/Breadcrumbs/BreadcrumbItem.spec.md +19 -12
  208. package/src/Breadcrumbs/BreadcrumbItem.tsx +25 -1
  209. package/src/Breadcrumbs/Breadcrumbs.test.tsx +58 -0
  210. package/src/Button/Button.spec.md +30 -28
  211. package/src/ButtonGroup/ButtonGroup.spec.md +4 -2
  212. package/src/Card/Card.spec.md +205 -0
  213. package/src/Center/Center.spec.md +104 -124
  214. package/src/Chat/ChatPastedTextToken.test.tsx +71 -0
  215. package/src/Chat/ChatPastedTextToken.tsx +8 -7
  216. package/src/CheckboxInput/CheckboxInput.spec.md +97 -66
  217. package/src/CheckboxList/CheckboxList.spec.md +92 -78
  218. package/src/CheckboxList/CheckboxListItem.spec.md +86 -60
  219. package/src/ClickableCard/ClickableCard.spec.md +124 -128
  220. package/src/Collapsible/Collapsible.doc.mjs +6 -0
  221. package/src/Collapsible/Collapsible.spec.md +26 -23
  222. package/src/Collapsible/Collapsible.tsx +121 -2
  223. package/src/CommandPalette/CommandPalette.perf.test.ts +8 -4
  224. package/src/ContextMenu/ContextMenu.spec.md +30 -26
  225. package/src/Divider/Divider.spec.md +79 -70
  226. package/src/DropdownMenu/DropdownMenu.ssr.test.tsx +33 -7
  227. package/src/DropdownMenu/DropdownMenu.tsx +4 -13
  228. package/src/DropdownMenu/menuTouchAction.stylex.ts +28 -0
  229. package/src/DropdownMenu/modules/useMenuPress.spec.md +35 -36
  230. package/src/Field/Field.tsx +1 -1
  231. package/src/Field/FieldLabel.tsx +1 -1
  232. package/src/Field/PanelSearchInput.tsx +11 -0
  233. package/src/FileInput/FileInput.doc.mjs +1 -1
  234. package/src/FileInput/FileInput.test.tsx +102 -0
  235. package/src/FileInput/FileInput.tsx +15 -9
  236. package/src/FormLayout/FormLayout.spec.md +69 -51
  237. package/src/Grid/Grid.spec.md +72 -69
  238. package/src/Grid/GridSpan.spec.md +158 -0
  239. package/src/HoverCard/HoverCard.spec.md +244 -0
  240. package/src/Icon/Icon.doc.mjs +65 -3
  241. package/src/Icon/Icon.test.tsx +545 -9
  242. package/src/Icon/Icon.tsx +73 -12
  243. package/src/Icon/IconSize.stylex.ts +27 -11
  244. package/src/Icon/globalIconRegistry.test.tsx +395 -3
  245. package/src/Icon/globalIconRegistry.tsx +184 -36
  246. package/src/Icon/index.ts +29 -1
  247. package/src/Icon/useIcon.ts +5 -1
  248. package/src/IconButton/IconButton.test.tsx +5 -2
  249. package/src/InputGroup/InputGroup.spec.md +199 -0
  250. package/src/InputGroup/InputGroupText.spec.md +139 -0
  251. package/src/Kbd/Kbd.test.tsx +95 -0
  252. package/src/Kbd/Kbd.tsx +30 -23
  253. package/src/Lightbox/Lightbox.test.tsx +15 -0
  254. package/src/Lightbox/Lightbox.tsx +9 -4
  255. package/src/Lightbox/LightboxViewport.a11y.browser.spec.ts +70 -0
  256. package/src/List/List.spec.md +73 -28
  257. package/src/MultiSelector/MultiSelector.test.tsx +97 -0
  258. package/src/MultiSelector/MultiSelector.tsx +16 -1
  259. package/src/NavMenu/NavHeadingMenu.spec.md +19 -17
  260. package/src/NavMenu/NavHeadingMenu.test.tsx +276 -2
  261. package/src/NavMenu/NavHeadingMenu.tsx +42 -4
  262. package/src/NavMenu/NavHeadingMenuItem.tsx +60 -6
  263. package/src/NavMenu/NavMenuContext.tsx +11 -0
  264. package/src/NavMenu/__tests__/NavMenusSlideSelection.a11y.chromium.spec.ts +137 -0
  265. package/src/NumberInput/NumberInput.test.tsx +43 -0
  266. package/src/NumberInput/NumberInput.tsx +11 -1
  267. package/src/PowerSearch/PowerSearch.test.tsx +32 -1
  268. package/src/PowerSearch/PowerSearch.tsx +7 -5
  269. package/src/RadioList/RadioList.spec.md +227 -0
  270. package/src/RadioList/RadioListItem.spec.md +223 -0
  271. package/src/SegmentedControl/SegmentedControl.spec.md +162 -53
  272. package/src/SegmentedControl/SegmentedControl.test.tsx +46 -0
  273. package/src/SegmentedControl/SegmentedControl.tsx +7 -3
  274. package/src/SegmentedControl/SegmentedControlItem.spec.md +206 -0
  275. package/src/SelectableCard/SelectableCard.spec.md +230 -0
  276. package/src/Selector/Selector.test.tsx +47 -0
  277. package/src/Selector/Selector.tsx +11 -1
  278. package/src/SideNav/SideNav.spec.md +45 -27
  279. package/src/SideNav/SideNav.test.tsx +135 -0
  280. package/src/SideNav/SideNav.tsx +85 -1
  281. package/src/SideNav/SideNavHeading.spec.md +26 -19
  282. package/src/SideNav/SideNavHeading.tsx +61 -6
  283. package/src/SideNav/SideNavRailMotion.test.tsx +620 -0
  284. package/src/SideNav/__tests__/SideNavRailMotion.interaction.browser.spec.ts +417 -0
  285. package/src/SideNav/railMotion.ts +315 -0
  286. package/src/Skeleton/Skeleton.spec.md +7 -7
  287. package/src/Slider/Slider.fr10.test.tsx +34 -0
  288. package/src/Slider/Slider.tsx +10 -2
  289. package/src/Spinner/Spinner.spec.md +10 -10
  290. package/src/Stack/Stack.spec.md +104 -56
  291. package/src/Stepper/Step.spec.md +206 -0
  292. package/src/Switch/Switch.spec.md +150 -66
  293. package/src/TabList/Tab.tsx +7 -1
  294. package/src/TabList/TabList.test.tsx +27 -0
  295. package/src/TabList/TabMenu.spec.md +3 -1
  296. package/src/TabList/TabMenu.tsx +24 -1
  297. package/src/TabList/__tests__/TabListOverflow.interaction.browser.spec.ts +99 -0
  298. package/src/Table/TableCell.tsx +9 -0
  299. package/src/Table/TableHeaderCell.tsx +2 -0
  300. package/src/Table/TableRow.tsx +3 -0
  301. package/src/Table/__tests__/TableRowGlide.a11y.browser.spec.ts +382 -0
  302. package/src/Table/__tests__/TableStickyDividers.a11y.browser.spec.ts +560 -0
  303. package/src/Table/glidingDivider.ts +336 -0
  304. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +23 -8
  305. package/src/Table/plugins/rowExpansion/useTableRowExpansion.glide.test.tsx +280 -0
  306. package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +91 -9
  307. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +471 -10
  308. package/src/Table/plugins/stickyColumns/useTableStickyColumns.test.tsx +51 -1
  309. package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +312 -12
  310. package/src/Table/rowDivider.ts +154 -0
  311. package/src/Table/useTableRowExpansion.doc.mjs +8 -0
  312. package/src/TextArea/TextArea.spec.md +164 -64
  313. package/src/TextInput/TextInput.spec.md +6 -4
  314. package/src/TextInput/TextInput.test.tsx +43 -0
  315. package/src/TextInput/TextInput.tsx +11 -1
  316. package/src/Timestamp/Timestamp.spec.md +252 -0
  317. package/src/Toast/Toast.spec.md +302 -0
  318. package/src/ToggleButton/ToggleButtonGroup.spec.md +14 -13
  319. package/src/Tokenizer/Tokenizer.props-type.test.tsx +126 -0
  320. package/src/Tokenizer/Tokenizer.spec.md +66 -54
  321. package/src/Tokenizer/Tokenizer.ssr.test.tsx +196 -0
  322. package/src/Tokenizer/Tokenizer.tsx +573 -25
  323. package/src/Tokenizer/TokenizerBottomSheet.test.tsx +2719 -0
  324. package/src/Tokenizer/TokenizerBottomSheet.tsx +957 -0
  325. package/src/Toolbar/Toolbar.spec.md +103 -49
  326. package/src/Tooltip/Tooltip.spec.md +161 -36
  327. package/src/TopNav/TopNav.test.tsx +89 -0
  328. package/src/TopNav/TopNavHeading.spec.md +24 -17
  329. package/src/TopNav/TopNavHeading.tsx +35 -2
  330. package/src/TopNav/TopNavMenu.spec.md +27 -20
  331. package/src/TopNav/TopNavMenu.test.tsx +65 -1
  332. package/src/TopNav/TopNavMenu.tsx +30 -1
  333. package/src/TreeList/TreeList.doc.mjs +13 -0
  334. package/src/TreeList/TreeList.spec.md +51 -35
  335. package/src/TreeList/TreeList.tsx +234 -2
  336. package/src/TreeList/TreeListItem.tsx +12 -2
  337. package/src/VisuallyHidden/VisuallyHidden.spec.md +170 -0
  338. package/src/__tests__/unthemedLength.ts +34 -0
  339. package/src/hooks/__tests__/menuLinkClicks.ts +71 -0
  340. package/src/hooks/index.ts +6 -0
  341. package/src/hooks/menuPressOnItems.ts +40 -0
  342. package/src/hooks/useAdaptivePresentation.ts +36 -6
  343. package/src/hooks/useAnimatedLayout.doc.mjs +101 -0
  344. package/src/hooks/useAnimatedLayout.ts +61 -0
  345. package/src/hooks/useAnnounceRenderedText.adopters.test.tsx +22 -0
  346. package/src/hooks/useMenuHover.ts +6 -2
  347. package/src/i18n/generated-locales/en.generated.ts +35 -0
  348. package/src/i18n/generated-locales/pseudo.generated.ts +37 -0
  349. package/src/internal/tokenizer-presentation.test.ts +29 -0
  350. package/src/internal/tokenizer-presentation.ts +25 -0
  351. package/src/motion/LayoutChangeSnapshot.tsx +50 -0
  352. package/src/motion/__tests__/animatedLayout.interaction.browser.spec.ts +572 -0
  353. package/src/motion/__tests__/animatedLayoutAdopters.interaction.browser.spec.ts +217 -0
  354. package/src/motion/animatedLayout.boundary.test.ts +37 -13
  355. package/src/motion/animatedLayout.swap.test.ts +827 -0
  356. package/src/motion/animatedLayout.test.ts +479 -2
  357. package/src/motion/animatedLayout.ts +896 -60
  358. package/src/motion/animatedLayoutAdopters.test.tsx +500 -0
  359. package/src/motion/transientCopy.ts +374 -0
  360. package/src/theme/defineTheme.test.ts +235 -2
  361. package/src/theme/defineTheme.ts +231 -19
  362. package/src/theme/derivedVarRegistry.test.ts +25 -0
  363. package/src/theme/derivedVarRegistry.ts +4 -0
  364. package/src/theme/extensibleAxes.test.ts +74 -29
@@ -28,7 +28,7 @@ import { Button } from "../Button/index.js";
28
28
  import { mergeProps } from "../utils/index.js";
29
29
  import { themeProps } from "../utils/themeProps.js";
30
30
  import { useTranslator } from "../i18n/index.js";
31
- import { useMediaQuery } from "../hooks/index.js";
31
+ import { useMediaQuery } from "../hooks/useMediaQuery.js";
32
32
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
33
33
  const SMALL_SCREEN_QUERY = '(max-width: 640px)';
34
34
  const styles = {
@@ -176,28 +176,6 @@ export interface AppShellProps extends BaseProps<HTMLDivElement> {
176
176
  */
177
177
  topNav?: ReactNode;
178
178
  }
179
- /**
180
- * Page shell for an application. Provides the structural frame for an app:
181
- * top navigation, side navigation, and main content area.
182
- *
183
- * Slot-based API with `topNav`, `sideNav`, `banner`, and `children`.
184
- * Supports two height modes (`fill` and `auto`), responsive side nav
185
- * collapse, and mobile overlay with backdrop.
186
- *
187
- * @example
188
- * ```
189
- * <AppShell
190
- * topNav={<TopNav label="Navigation" heading={<TopNavHeading heading="My App" />} />}
191
- * sideNav={<SideNav>{navSections}</SideNav>}
192
- * mobileNav={
193
- * <MobileNav isOpen={mobileOpen} onOpenChange={(open) => setMobileOpen(open)} header="My App">
194
- * {navSections}
195
- * </MobileNav>
196
- * }>
197
- * <Content />
198
- * </AppShell>
199
- * ```
200
- */
201
179
  export declare function AppShell({ variant, banner, children, contentPadding, 'data-testid': dataTestId, height, mobileNav, sideNav, topNav, xstyle, className, style, ref, ...rest }: AppShellProps): React.JSX.Element;
202
180
  export declare namespace AppShell {
203
181
  var displayName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../src/AppShell/AppShell.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAoBf,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAQ5C,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAsChD;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,GAAG,MAAM,CAAC;AAE9D;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IAEpB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAEhC;;;;;;;;;;OAUG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC9D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;IAE1B;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,WAAW,CAAC;IAE7B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEzB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,SAAS,CAAC,EAAE,KAAK,GAAG,eAAe,GAAG,SAAS,CAAC;IAEhD;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAkLD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,QAAQ,CAAC,EACvB,OAAoB,EACpB,MAAM,EACN,QAAQ,EACR,cAAc,EACd,aAAa,EAAE,UAAU,EACzB,MAAe,EACf,SAAS,EACT,OAAO,EACP,MAAM,EACN,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,IAAI,EACR,EAAE,aAAa,qBA0bf;yBAzce,QAAQ"}
1
+ {"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../src/AppShell/AppShell.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAgCf,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAQ5C,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAsChD;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,GAAG,MAAM,CAAC;AAE9D;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IAEpB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAEhC;;;;;;;;;;OAUG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC9D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;IAE1B;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,WAAW,CAAC;IAE7B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEzB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,SAAS,CAAC,EAAE,KAAK,GAAG,eAAe,GAAG,SAAS,CAAC;IAEhD;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAqND,wBAAgB,QAAQ,CAAC,EACvB,OAAoB,EACpB,MAAM,EACN,QAAQ,EACR,cAAc,EACd,aAAa,EAAE,UAAU,EACzB,MAAe,EACf,SAAS,EACT,OAAO,EACP,MAAM,EACN,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,IAAI,EACR,EAAE,aAAa,qBAykBf;yBAxlBe,QAAQ"}
@@ -31,6 +31,9 @@ import { LayoutContent } from "../Layout/LayoutContent.js";
31
31
  import { MobileNavToggle } from "../MobileNav/MobileNavToggle.js";
32
32
  import { MAX_CLOSE_DELAY_MS as MOBILE_NAV_MAX_CLOSE_DELAY_MS } from "../MobileNav/MobileNav.js";
33
33
  import { SideNavRenderContext } from "../SideNav/SideNavRenderContext.js";
34
+ import { SideNavShellContext } from "../SideNav/railMotion.js";
35
+ import { useAnimatedLayout } from "../hooks/useAnimatedLayout.js";
36
+ import { holdLayoutSwap, landLayoutGlide, layoutMotionFor, playLayoutFrames, playLayoutSwap, reportLayoutChange } from "../motion/animatedLayout.js";
34
37
  import { TopNavRenderContext } from "../TopNav/TopNavRenderContext.js";
35
38
  import { TopNavMobileContentContext } from "../TopNav/TopNavMobileContentContext.js";
36
39
  import { AppShellMobileContext } from "./AppShellMobileContext.js";
@@ -229,6 +232,18 @@ const styles = {
229
232
  * </AppShell>
230
233
  * ```
231
234
  */
235
+
236
+ /**
237
+ * The column beside the rail that holds `main`: its ancestor whose parent
238
+ * also holds the rail. The glide moves it; the rail's edge rides it.
239
+ */
240
+ function columnOf(main, rail) {
241
+ let column = main;
242
+ while (column.parentElement != null && !column.parentElement.contains(rail)) {
243
+ column = column.parentElement;
244
+ }
245
+ return column;
246
+ }
232
247
  export function AppShell({
233
248
  variant = 'elevated',
234
249
  banner,
@@ -437,6 +452,139 @@ export function AppShell({
437
452
  }) : undefined;
438
453
 
439
454
  // =========================================================================
455
+ // While the inline side nav collapses or expands, the content area holds
456
+ // its own animated layout handle (`component:AppShell` FR17): the column
457
+ // beside the rail glides from its old place, and the content swaps its old
458
+ // wrap for its new one in place (`spec:AST-105` FR8), on the rail's clock
459
+ // (`component:SideNav` FR6).
460
+ const railRef = useRef(null);
461
+ const mainRef = useRef(null);
462
+ const backdropRef = useRef(null);
463
+ const contentLayout = useAnimatedLayout({
464
+ containerRef: shellRef
465
+ });
466
+ const pendingContentRef = useRef(null);
467
+ // The running swap: when it started and its wraps' starting opacities, so a
468
+ // change made during it starts its cross-fade from what the content shows.
469
+ const lastSwapRef = useRef(null);
470
+ const sideNavShell = useMemo(() => ({
471
+ animatedLayout: contentLayout,
472
+ rail: () => railRef.current,
473
+ column: () => mainRef.current == null ? null : columnOf(mainRef.current, railRef.current),
474
+ landContent() {
475
+ if (mainRef.current != null) {
476
+ landLayoutGlide(columnOf(mainRef.current, railRef.current));
477
+ }
478
+ },
479
+ beforeRailChange() {
480
+ const main = mainRef.current;
481
+ if (main == null) {
482
+ return;
483
+ }
484
+ const motion = layoutMotionFor(main);
485
+ // Only a spring glides the column; under Reduce Motion the two wraps
486
+ // cross-fade over a steady surface (`design:reduced-motion` DR2).
487
+ let change = null;
488
+ if (motion.kind === 'spring') {
489
+ change = reportLayoutChange(contentLayout, railRef);
490
+ change.measureBefore();
491
+ }
492
+ // At rest the copy (the wrap shown now) starts opaque and the entering
493
+ // wrap unseen; mid-swap the wrap in the DOM is the entering one and
494
+ // the copy's wrap is the one entering next, each at what it shows.
495
+ let held = 1;
496
+ let entering = 0;
497
+ const last = lastSwapRef.current;
498
+ if (last != null && motion.kind === 'spring') {
499
+ const elapsed = Number(main.ownerDocument.timeline?.currentTime ?? 0) - last.startedAt;
500
+ if (elapsed < motion.progress.durationMs) {
501
+ const p = 1 - motion.progress.remaining(elapsed);
502
+ held = last.entering + (1 - last.entering) * p;
503
+ entering = last.held * (1 - p);
504
+ }
505
+ }
506
+ lastSwapRef.current = null;
507
+ pendingContentRef.current = {
508
+ change,
509
+ swap: holdLayoutSwap(contentLayout, main, {
510
+ isVisiblePart: true
511
+ }),
512
+ before: main.getBoundingClientRect(),
513
+ held,
514
+ entering
515
+ };
516
+ },
517
+ afterRailChange() {
518
+ const pending = pendingContentRef.current;
519
+ pendingContentRef.current = null;
520
+ const main = mainRef.current;
521
+ if (pending == null || main == null) {
522
+ return () => {};
523
+ }
524
+ pending.change?.animate();
525
+ // The column beside the rail, which the glide moves: the copy sits
526
+ // beside it, in its parent, and rides its glide.
527
+ const column = columnOf(main, railRef.current);
528
+ const after = main.getBoundingClientRect();
529
+ const isRtl = getComputedStyle(main).direction === 'rtl';
530
+ const travel = isRtl ? pending.before.right - after.right : pending.before.left - after.left;
531
+ // An expand slides the narrower column in from its old start, which
532
+ // opens a gap at its trailing edge: the content surface (the elevated
533
+ // backdrop, or the main element) reaches over it as it closes,
534
+ // whether or not the old wrap is held.
535
+ const cover = [];
536
+ const surface = backdropRef.current ?? main;
537
+ const color = getComputedStyle(surface).backgroundColor;
538
+ const isPainted = !/^rgba\(.*,\s*0\)$|^transparent$/.test(color);
539
+ const glides = layoutMotionFor(main).kind === 'spring';
540
+ if ((isRtl ? travel > 0 : travel < 0) && glides && isPainted) {
541
+ cover.push({
542
+ element: surface,
543
+ frames: p => ({
544
+ boxShadow: `${-travel * (1 - p)}px 0px 0px 0px ${color}`
545
+ })
546
+ });
547
+ }
548
+ if (pending.swap == null || column.parentElement == null) {
549
+ return playLayoutFrames(contentLayout, cover);
550
+ }
551
+ // Under Reduce Motion nothing glides: the old wrap's copy paints the
552
+ // surface it sat on, so that surface fades out with it where it was
553
+ // (`design:reduced-motion` DR2) instead of leaving a bare strip.
554
+ if (!glides && isPainted) {
555
+ pending.swap.copy.style.backgroundColor = color;
556
+ }
557
+ const {
558
+ held,
559
+ entering
560
+ } = pending;
561
+ lastSwapRef.current = {
562
+ startedAt: Number(main.ownerDocument.timeline?.currentTime ?? 0),
563
+ held,
564
+ entering
565
+ };
566
+ return playLayoutSwap(pending.swap, {
567
+ host: column.parentElement,
568
+ copy: p => ({
569
+ opacity: held * (1 - p)
570
+ }),
571
+ rideWith: {
572
+ element: column,
573
+ travel: {
574
+ x: travel,
575
+ y: 0
576
+ }
577
+ },
578
+ incoming: [...Array.from(main.children, element => ({
579
+ element,
580
+ frames: p => ({
581
+ opacity: entering + (1 - entering) * p
582
+ })
583
+ })), ...cover]
584
+ });
585
+ }
586
+ }), [contentLayout]);
587
+
440
588
  // Build sideNav content
441
589
  //
442
590
  // In auto mode, the sideNav panel is not internally scrollable (the page
@@ -445,6 +593,7 @@ export function AppShell({
445
593
  // the sticky behavior since LayoutPanel doesn't accept style/className.
446
594
  // =========================================================================
447
595
  const sideNavPanel = showSideNavInline ? /*#__PURE__*/_jsx(LayoutPanel, {
596
+ ref: railRef,
448
597
  padding: 0,
449
598
  hasDivider: navHasDividers,
450
599
  isScrollable: isFill,
@@ -452,7 +601,10 @@ export function AppShell({
452
601
  variant
453
602
  }),
454
603
  xstyle: [navAreaStyle, isAuto && stickyBgStyle, isAuto && styles.panelAutoFill],
455
- children: sideNav
604
+ children: /*#__PURE__*/_jsx(SideNavShellContext, {
605
+ value: sideNavShell,
606
+ children: sideNav
607
+ })
456
608
  }) : undefined;
457
609
  const sideNavContent = sideNavPanel != null && isAuto ? /*#__PURE__*/_jsx("div", {
458
610
  ...{
@@ -466,6 +618,7 @@ export function AppShell({
466
618
  // =========================================================================
467
619
  const shouldElevateWithCorner = isElevated && hasTopNav && showSideNavInline;
468
620
  const mainInner = /*#__PURE__*/_jsx(LayoutContent, {
621
+ ref: mainRef,
469
622
  padding: contentPadding ?? 0,
470
623
  role: "main",
471
624
  id: MAIN_CONTENT_ID
@@ -490,6 +643,7 @@ export function AppShell({
490
643
  }
491
644
  }[!!shouldElevateWithCorner << 0],
492
645
  children: [shouldElevateWithCorner && /*#__PURE__*/_jsx("div", {
646
+ ref: backdropRef,
493
647
  ...{
494
648
  className: "x10l6tqk x10a8y8t x10xzikg x183tx6i x47corl"
495
649
  }
@@ -8,6 +8,7 @@
8
8
  * - Banner frame (themeProps 'banner-frame'): owns the resting elevation and,
9
9
  * for elevated card banners, the outer radius that shapes that shadow
10
10
  * - Header area (themeProps 'banner'): colored status background with icon, title, description, actions, dismiss
11
+ * - End area restores the ordinary text context for consumer `endContent`; built-in controls opt back into the status foreground
11
12
  * - Content area (themeProps 'banner-content'): card background for additional content (children)
12
13
  * - Status icon (themeProps 'banner-icon'): the target rides on the default
13
14
  * <Icon> itself — the element that paints — so 'status:X' overrides reach
@@ -1 +1 @@
1
- {"version":3,"file":"Banner.d.ts","sourceRoot":"","sources":["../../src/Banner/Banner.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;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;AAwQD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;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"}
@@ -12,6 +12,7 @@
12
12
  * - Banner frame (themeProps 'banner-frame'): owns the resting elevation and,
13
13
  * for elevated card banners, the outer radius that shapes that shadow
14
14
  * - Header area (themeProps 'banner'): colored status background with icon, title, description, actions, dismiss
15
+ * - End area restores the ordinary text context for consumer `endContent`; built-in controls opt back into the status foreground
15
16
  * - Content area (themeProps 'banner-content'): card background for additional content (children)
16
17
  * - Status icon (themeProps 'banner-icon'): the target rides on the default
17
18
  * <Icon> itself — the element that paints — so 'status:X' overrides reach
@@ -148,6 +149,7 @@ const styles = {
148
149
  kjj79g: "x13a6bvl",
149
150
  kOIVth: "x1txdalj",
150
151
  kmuXW: "x2lah0s",
152
+ kMwMTN: "x1tgivj0",
151
153
  ks0D6T: "x193iq5w",
152
154
  keTefX: "xvc5jky",
153
155
  kqGvvJ: "x81ka23",
@@ -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;AAqDhD,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;AAm0BxD;;;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;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;AAsDhD,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;AAm0BxD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BA6BlD;yBA7Be,WAAW"}
@@ -80,7 +80,8 @@ import { use, useCallback, useEffect, useLayoutEffect, useRef, useState } from '
80
80
  import * as stylex from '@stylexjs/stylex';
81
81
  import "../theme/tokens.stylex.js";
82
82
  import { colorVars, durationVars, easeVars, spacingVars } from "../theme/tokens.stylex.js";
83
- import { useDevWarning, useScrollLock } from "../hooks/index.js";
83
+ import { useDevWarning } from "../hooks/useDevWarning.js";
84
+ import { useScrollLock } from "../hooks/useScrollLock.js";
84
85
  import { mergeProps } from "../utils/index.js";
85
86
  import { LayerDepthProvider } from "../Layer/LayerDepthContext.js";
86
87
  import { ModalAnnounceProvider } from "../hooks/ModalAnnounceProvider.js";
@@ -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;AA6B5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,eAAe,CAAC;AAIvB,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;AA2M3D,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,+BAyXvB;yBA9Ye,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;AA8B5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,eAAe,CAAC;AAIvB,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;AA2M3D,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,+BAyXvB;yBA9Ye,gBAAgB"}
@@ -24,7 +24,8 @@
24
24
  */
25
25
  import { useCallback, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef } from 'react';
26
26
  import * as stylex from '@stylexjs/stylex';
27
- import { useDevWarning, useMediaQuery } from "../hooks/index.js";
27
+ import { useDevWarning } from "../hooks/useDevWarning.js";
28
+ import { useMediaQuery } from "../hooks/useMediaQuery.js";
28
29
  import { useScrollableArea } from "../hooks/useScrollableArea.js";
29
30
  import "../theme/tokens.stylex.js";
30
31
  import { borderVars, colorVars, durationVars, easeVars, focusVars, radiusVars, shadowVars, sizeVars, spacingVars } from "../theme/tokens.stylex.js";
@@ -75,7 +75,7 @@
75
75
  */
76
76
  import { use, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
77
77
  import * as stylex from '@stylexjs/stylex';
78
- import { useScrollLock } from "../hooks/index.js";
78
+ import { useScrollLock } from "../hooks/useScrollLock.js";
79
79
  import { useFocusTrapEscapeCompatibilitySignal } from "../hooks/useFocusTrap.js";
80
80
  import { dispatchLayerEscapeKeyDown } from "../Layer/layerStack.js";
81
81
  import { useLayerDismissal } from "../Layer/useLayerDismissal.js";
@@ -1 +1 @@
1
- {"version":3,"file":"BreadcrumbItem.d.ts","sourceRoot":"","sources":["../../src/Breadcrumbs/BreadcrumbItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,OAAO,CAAC;AAWf,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAS5C,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,qCAAqC,CAAC;AAM7C,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,8BAA8B,CAAC;AAQrE,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAC/C,SAAS,CAAC,aAAa,CAAC,EACxB,SAAS,CACV;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC/C;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAsID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,EAAE,EACF,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,SAAS,EAAE,aAAa,EACxB,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,IAAI,EACR,EAAE,mBAAmB,qBAgMrB;yBA/Me,cAAc"}
1
+ {"version":3,"file":"BreadcrumbItem.d.ts","sourceRoot":"","sources":["../../src/Breadcrumbs/BreadcrumbItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,OAAO,CAAC;AAWf,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAa5C,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,qCAAqC,CAAC;AAM7C,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,8BAA8B,CAAC;AAQrE,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAC/C,SAAS,CAAC,aAAa,CAAC,EACxB,SAAS,CACV;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC/C;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAsID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,EAAE,EACF,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,SAAS,EAAE,aAAa,EACxB,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,IAAI,EACR,EAAE,mBAAmB,qBAgMrB;yBA/Me,cAAc"}
@@ -34,6 +34,10 @@ import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
34
34
  import { Icon } from "../Icon/index.js";
35
35
  import { usePopover } from "../Popover/usePopover.js";
36
36
  import { useListFocus } from "../hooks/useListFocus.js";
37
+ import { useMenuPress } from "../hooks/useMenuPress.js";
38
+ import { pressOnItemsOnly } from "../hooks/menuPressOnItems.js";
39
+ import { menuTouchActionStyles } from "../DropdownMenu/menuTouchAction.stylex.js";
40
+ import { useMenuOverflow } from "../DropdownMenu/useMenuOverflow.js";
37
41
  import { useTypeahead } from "../hooks/useTypeahead.js";
38
42
  import { layerAnimations } from "../Layer/layerAnimations.stylex.js";
39
43
  import { renderDropdownItems } from "../DropdownMenu/renderDropdownItems.js";
@@ -119,6 +123,20 @@ function BreadcrumbSeparator({
119
123
  });
120
124
  }
121
125
  const menuStyles = {
126
+ menu: {
127
+ kB7OPa: "x9f619",
128
+ k1xSpc: "x78zum5",
129
+ kXwgrk: "xdt5ytf",
130
+ kOIVth: "x1lsbc85",
131
+ kskxy: "xuyqlj2",
132
+ kORKVm: "x1odjw0f",
133
+ "--_dropdown-menu-radius": "x1fcsqxe",
134
+ "--_dropdown-menu-padding": "xgory14",
135
+ kmVPX3: "x9epnlk",
136
+ kaIpWk: "x1n97fys",
137
+ kfSwDN: "x87ps6o",
138
+ $$css: true
139
+ },
122
140
  popover: {
123
141
  k7Eaqz: "x5w4yej",
124
142
  kqGvvJ: "xsq74q5",
@@ -363,6 +381,15 @@ function BreadcrumbMenuTrigger({
363
381
  wrap: false,
364
382
  onEscape: closeMenu
365
383
  });
384
+
385
+ // A press that slides across the menu's items acts on the item it lifts on,
386
+ // the highlight following the pointer, as DropdownMenu's does
387
+ // (`family:action-groups` FR1-FR3, FR5); a mouse released outside closes it.
388
+ const menuPress = useMenuPress({
389
+ menuRef: listRef,
390
+ itemSelector: MENU_ITEM_SELECTOR,
391
+ onDismiss: closeMenu
392
+ });
366
393
  const typeahead = useTypeahead({
367
394
  getItemLabels: () => getMenuItems().map(el => el.textContent),
368
395
  onMatch: focusItem,
@@ -417,6 +444,7 @@ function BreadcrumbMenuTrigger({
417
444
  menuSize
418
445
  }), [closeMenu, menuSize]);
419
446
  const menuContent = Array.isArray(menu) ? renderDropdownItems(menu) : menu;
447
+ const hasOverflow = useMenuOverflow(listRef, menuContent, popover.isOpen);
420
448
  return /*#__PURE__*/_jsxs(_Fragment, {
421
449
  children: [/*#__PURE__*/_jsxs("button", {
422
450
  ref: useMergedRefs(ref, buttonRef, popover.triggerRef),
@@ -453,10 +481,10 @@ function BreadcrumbMenuTrigger({
453
481
  id: menuId,
454
482
  role: "menu",
455
483
  "aria-labelledby": triggerId,
484
+ ...menuPress.menuProps,
485
+ onPointerDown: pressOnItemsOnly(menuPress.menuProps.onPointerDown, MENU_ITEM_SELECTOR),
456
486
  onKeyDown: listKeyDown,
457
- ...mergeProps(themeProps('breadcrumb-menu'), {
458
- className: "x9f619 x78zum5 xdt5ytf x1lsbc85 xuyqlj2 x1odjw0f x1fcsqxe xgory14 x9epnlk x1n97fys x87ps6o"
459
- }),
487
+ ...mergeProps(themeProps('breadcrumb-menu'), stylex.props(menuStyles.menu, hasOverflow ? menuTouchActionStyles.scrolls : menuTouchActionStyles.fits)),
460
488
  children: /*#__PURE__*/_jsx(DropdownMenuContext, {
461
489
  value: contextValue,
462
490
  children: /*#__PURE__*/_jsx(DropdownMenuRootOpenContext, {
@@ -1 +1 @@
1
- {"version":3,"file":"ChatPastedTextToken.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatPastedTextToken.tsx"],"names":[],"mappings":"AAiCA,MAAM,WAAW,wBAAwB;IACvC,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAiDD,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,QAAQ,GACT,EAAE,wBAAwB,+BA8B1B;yBAjCe,mBAAmB"}
1
+ {"version":3,"file":"ChatPastedTextToken.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatPastedTextToken.tsx"],"names":[],"mappings":"AAiCA,MAAM,WAAW,wBAAwB;IACvC,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAkDD,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,QAAQ,GACT,EAAE,wBAAwB,+BA8B1B;yBAjCe,mBAAmB"}
@@ -4,7 +4,7 @@
4
4
 
5
5
  /**
6
6
  * @file ChatPastedTextToken.tsx
7
- * @input Uses React, StyleX, Badge, HoverCard, Button, CodeBlock
7
+ * @input Uses React, StyleX, Badge, HoverCard, Button, provider-bound translator
8
8
  * @output Exports ChatPastedTextToken component
9
9
  * @position Inline token for pasted text with hover card preview + expand
10
10
  *
@@ -32,10 +32,11 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; // =============
32
32
  // Helpers
33
33
  // =============================================================================
34
34
 
35
- function formatLabel(text) {
36
- const lines = text.split('\n').length;
37
- const chars = text.length;
38
- return lines > 1 ? `${lines} lines, ${chars} chars` : `${chars} chars`;
35
+ function formatLabel(text, t) {
36
+ return t('@astryx.chat.pastedText.label', {
37
+ lines: text.split('\n').length,
38
+ chars: text.length
39
+ });
39
40
  }
40
41
 
41
42
  // =============================================================================
@@ -47,7 +48,7 @@ export function ChatPastedTextToken({
47
48
  onExpand
48
49
  }) {
49
50
  const t = useTranslator();
50
- const label = formatLabel(text);
51
+ const label = formatLabel(text, t);
51
52
  const cardContent = /*#__PURE__*/_jsxs("div", {
52
53
  ...{
53
54
  className: "x78zum5 xdt5ytf x1txdalj x17fpy1y"
@@ -23,6 +23,7 @@
23
23
  * - /packages/cli/assets/templates/blocks/components/Collapsible/ (showcase blocks)
24
24
  */
25
25
  import { type ReactNode } from 'react';
26
+ import { type AnimatedLayout } from '../motion/animatedLayout.js';
26
27
  import type { CollapsibleChevronPosition } from './CollapsibleGroupContext.js';
27
28
  import type { BaseProps } from '../BaseProps.js';
28
29
  export interface CollapsibleProps extends BaseProps {
@@ -63,6 +64,12 @@ export interface CollapsibleProps extends BaseProps {
63
64
  * CollapsibleGroup owns grouped state and calls its `onChange` instead.
64
65
  */
65
66
  onOpenChange?: (isOpen: boolean) => void;
67
+ /**
68
+ * The handle from `useAnimatedLayout({containerRef})`. With it, opening and
69
+ * closing glides the content after this Collapsible, up to that container,
70
+ * instead of jumping, and the chevron turns on the same timing.
71
+ */
72
+ animatedLayout?: AnimatedLayout;
66
73
  /**
67
74
  * Logical position of the disclosure chevron.
68
75
  *
@@ -125,7 +132,7 @@ export interface CollapsibleProps extends BaseProps {
125
132
  * </CollapsibleGroup>
126
133
  * ```
127
134
  */
128
- export declare function Collapsible({ trigger, children, defaultIsOpen, isOpen: controlledIsOpen, isDisabled, onOpenChange, chevronPosition, value, ref, xstyle, className, style, ...props }: CollapsibleProps): import("react").JSX.Element;
135
+ export declare function Collapsible({ trigger, children, defaultIsOpen, isOpen: controlledIsOpen, isDisabled, onOpenChange, chevronPosition, value, animatedLayout, ref, xstyle, className, style, ...props }: CollapsibleProps): import("react").JSX.Element;
129
136
  export declare namespace Collapsible {
130
137
  var displayName: string;
131
138
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../../src/Collapsible/Collapsible.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAa,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAejD,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;IAEzC;;;;;;;;;;;;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,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAqIlB;yBAnJe,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;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"}
@@ -26,11 +26,13 @@
26
26
  * - /apps/storybook/stories/Collapsible.stories.tsx
27
27
  * - /packages/cli/assets/templates/blocks/components/Collapsible/ (showcase blocks)
28
28
  */
29
- import { use, useId } from 'react';
29
+ import { use, useCallback, useId, useLayoutEffect, useMemo, useRef, useState } from 'react';
30
30
  import * as stylex from '@stylexjs/stylex';
31
31
  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
+ import { LayoutChangeSnapshot } from "../motion/LayoutChangeSnapshot.js";
35
+ import { applyLayoutChangeTransition, holdLayoutExit, playLayoutChange, releaseLayoutExit, reportLayoutChange } from "../motion/animatedLayout.js";
34
36
  import { CollapsibleGroupPresentationContext } from "./CollapsibleGroupContext.js";
35
37
  import { Icon } from "../Icon/index.js";
36
38
  import { mergeProps } from "../utils/index.js";
@@ -203,6 +205,7 @@ export function Collapsible({
203
205
  onOpenChange,
204
206
  chevronPosition,
205
207
  value,
208
+ animatedLayout,
206
209
  ref,
207
210
  xstyle,
208
211
  className,
@@ -226,6 +229,80 @@ export function Collapsible({
226
229
  value
227
230
  });
228
231
 
232
+ // With an `animatedLayout` handle, the content's size change animates: the
233
+ // content after this Collapsible, up to the handle's container, glides, and
234
+ // the revealed content plays its own entrance on the same timing
235
+ // (`architecture:react-component-runtime` INV12). Without one, nothing
236
+ // changes.
237
+ const contentRef = useRef(null);
238
+ const triggerRef = useRef(null);
239
+ const layoutChange = useMemo(() => reportLayoutChange(animatedLayout, contentRef), [animatedLayout]);
240
+ // Every open-state change, whatever caused it (a click, an owner-set
241
+ // `isOpen`, a group's value), is measured before it lands (`spec:AST-105`
242
+ // FR1): LayoutChangeSnapshot calls this in the commit, before the DOM
243
+ // changes. The chevron (the trigger's Icon, its `icon` theming target)
244
+ // turns on the glide's motion too.
245
+ const measureChange = useCallback(() => {
246
+ applyLayoutChangeTransition(animatedLayout, triggerRef.current?.querySelector(':scope > .astryx-icon') ?? null);
247
+ layoutChange.measureBefore();
248
+ }, [animatedLayout, layoutChange]);
249
+ // Without a handle the chevron keeps the theme's own turn: a spring a handle
250
+ // set stays only while it is passed (`spec:AST-105` FR2).
251
+ useLayoutEffect(() => {
252
+ if (animatedLayout == null) {
253
+ applyLayoutChangeTransition(null, triggerRef.current?.querySelector(':scope > .astryx-icon') ?? null);
254
+ }
255
+ }, [animatedLayout]);
256
+ // A close with a handle keeps the content rendered while it plays its exit
257
+ // (the exit makes it inert and gives up its space), then hides it
258
+ // (`spec:AST-105` FR4). Derived from the open state as it changes, during
259
+ // render, so the closing commit already keeps it.
260
+ const [renderedIsOpen, setRenderedIsOpen] = useState(isOpen);
261
+ const [isExiting, setIsExiting] = useState(false);
262
+ if (renderedIsOpen !== isOpen) {
263
+ setRenderedIsOpen(isOpen);
264
+ setIsExiting(!isOpen && animatedLayout != null);
265
+ }
266
+ const endExit = useCallback(() => {
267
+ // eslint-disable-next-line @eslint-react/set-state-in-effect -- holdLayoutExit decides from layout read in the closing commit (the content's place in the area's visible part, Reduce Motion and the pointer, and whether an end margin frees its space); an exit it does not hold hides the content before the frame paints
268
+ setIsExiting(false);
269
+ }, []);
270
+ const wasOpenRef = useRef(isOpen);
271
+ useLayoutEffect(() => {
272
+ if (wasOpenRef.current === isOpen) {
273
+ return;
274
+ }
275
+ wasOpenRef.current = isOpen;
276
+ const content = contentRef.current;
277
+ if (content == null) {
278
+ return;
279
+ }
280
+ // A change that was not measured (no handle) lands at once, entrance and
281
+ // exit included, so the content and what follows stay in step.
282
+ const isMeasured = layoutChange.animate();
283
+ if (isOpen) {
284
+ // Opened again mid-exit: the content takes its place in flow.
285
+ releaseLayoutExit(content);
286
+ if (isMeasured) {
287
+ playLayoutChange(animatedLayout, content);
288
+ }
289
+ return;
290
+ }
291
+ const isHeld = isExiting && isMeasured && holdLayoutExit(animatedLayout, content, endExit);
292
+ if (isExiting && !isHeld) {
293
+ // An exit holdLayoutExit did not hold (unmeasured, out of view, Reduce
294
+ // Motion with a fine pointer, or no margin frees its space): hide the
295
+ // content before this frame paints.
296
+ endExit();
297
+ }
298
+ }, [isOpen, isExiting, layoutChange, animatedLayout, endExit]);
299
+ useLayoutEffect(() => {
300
+ if (!isOpen && !isExiting && contentRef.current != null) {
301
+ // Hidden again after its exit: drop the exit's inline values.
302
+ releaseLayoutExit(contentRef.current);
303
+ }
304
+ }, [isOpen, isExiting]);
305
+
229
306
  // Activation is blocked by this guard rather than the native `disabled`
230
307
  // attribute, so the trigger keeps `aria-disabled` semantics and stays
231
308
  // discoverable. A native `disabled` button would silently swallow events
@@ -272,6 +349,7 @@ export function Collapsible({
272
349
  }), stylex.props(styles.root, isDivided && styles.divided, xstyle), className, style),
273
350
  ...props,
274
351
  children: [/*#__PURE__*/_jsxs("button", {
352
+ ref: triggerRef,
275
353
  type: "button",
276
354
  onClick: handleToggle,
277
355
  "aria-disabled": isDisabled || undefined,
@@ -301,12 +379,16 @@ export function Collapsible({
301
379
  },
302
380
  children: trigger
303
381
  }), !isChevronAtStart && chevron]
382
+ }), animatedLayout != null && /*#__PURE__*/_jsx(LayoutChangeSnapshot, {
383
+ value: isOpen,
384
+ onBeforeChange: measureChange
304
385
  }), /*#__PURE__*/_jsx("div", {
386
+ ref: contentRef,
305
387
  id: contentId,
306
388
  ...mergeProps(themeProps('collapsible-content', {
307
389
  density: density ?? undefined,
308
390
  open: isOpen ? 'open' : null
309
- }), stylex.props(styles.content, density != null && contentDensity[density], !isOpen && styles.contentHidden)),
391
+ }), stylex.props(styles.content, density != null && contentDensity[density], !isOpen && !isExiting && styles.contentHidden)),
310
392
  children: presentation != null ? /*#__PURE__*/_jsx(CollapsibleGroupPresentationContext, {
311
393
  value: null,
312
394
  children: children