@astryxdesign/core 0.4.7 → 0.5.0-canary.54bb922

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 (467) hide show
  1. package/CHANGELOG.md +161 -1
  2. package/dist/AppShell/AppShell.d.ts.map +1 -1
  3. package/dist/AppShell/AppShell.js +3 -2
  4. package/dist/AspectRatio/AspectRatio.d.ts +24 -0
  5. package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
  6. package/dist/AspectRatio/AspectRatio.js +23 -4
  7. package/dist/Avatar/Avatar.d.ts.map +1 -1
  8. package/dist/Avatar/Avatar.js +15 -10
  9. package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
  10. package/dist/AvatarGroup/AvatarGroup.js +3 -2
  11. package/dist/Banner/Banner.d.ts +40 -15
  12. package/dist/Banner/Banner.d.ts.map +1 -1
  13. package/dist/Banner/Banner.js +51 -18
  14. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
  15. package/dist/BottomSheet/BottomSheet.js +17 -4
  16. package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
  17. package/dist/BottomSheet/BottomSheetSwitcher.js +3 -2
  18. package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  19. package/dist/Breadcrumbs/BreadcrumbItem.js +11 -10
  20. package/dist/Button/Button.d.ts.map +1 -1
  21. package/dist/Button/Button.js +5 -4
  22. package/dist/ButtonGroup/ButtonGroup.d.ts +5 -1
  23. package/dist/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  24. package/dist/ButtonGroup/ButtonGroup.js +26 -7
  25. package/dist/Calendar/Calendar.d.ts +3 -1
  26. package/dist/Calendar/Calendar.d.ts.map +1 -1
  27. package/dist/Calendar/Calendar.js +13 -14
  28. package/dist/Calendar/getInitialFocusDate.d.ts +46 -0
  29. package/dist/Calendar/getInitialFocusDate.d.ts.map +1 -0
  30. package/dist/Calendar/getInitialFocusDate.js +62 -0
  31. package/dist/Carousel/Carousel.d.ts.map +1 -1
  32. package/dist/Carousel/Carousel.js +3 -3
  33. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  34. package/dist/Chat/ChatComposerInput.js +2 -3
  35. package/dist/Chat/ChatLayout.d.ts.map +1 -1
  36. package/dist/Chat/ChatLayout.js +3 -3
  37. package/dist/Chat/ChatMessageList.d.ts +22 -3
  38. package/dist/Chat/ChatMessageList.d.ts.map +1 -1
  39. package/dist/Chat/ChatMessageList.js +6 -3
  40. package/dist/Chat/ChatTokenizedText.d.ts +2 -0
  41. package/dist/Chat/ChatTokenizedText.d.ts.map +1 -1
  42. package/dist/Chat/ChatTokenizedText.js +11 -6
  43. package/dist/Chat/useChatComposerTokens.js +1 -1
  44. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  45. package/dist/CheckboxInput/CheckboxInput.js +3 -2
  46. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  47. package/dist/ClickableCard/ClickableCard.js +3 -3
  48. package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
  49. package/dist/CommandPalette/CommandPaletteInput.js +3 -2
  50. package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
  51. package/dist/CommandPalette/CommandPaletteItem.js +3 -2
  52. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  53. package/dist/ContextMenu/ContextMenu.js +4 -3
  54. package/dist/DateInput/DateInput.d.ts.map +1 -1
  55. package/dist/DateInput/DateInput.js +3 -2
  56. package/dist/DateInput/TouchDateField.d.ts.map +1 -1
  57. package/dist/DateInput/TouchDateField.js +38 -4
  58. package/dist/DateTimeInput/DateTimeInput.d.ts +21 -1
  59. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  60. package/dist/DateTimeInput/DateTimeInput.js +406 -12
  61. package/dist/DateTimeInput/index.d.ts +1 -1
  62. package/dist/DateTimeInput/index.d.ts.map +1 -1
  63. package/dist/Dialog/Dialog.d.ts +7 -1
  64. package/dist/Dialog/Dialog.d.ts.map +1 -1
  65. package/dist/Dialog/Dialog.js +89 -58
  66. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
  67. package/dist/DropdownMenu/DropdownMenuSubMenu.js +6 -5
  68. package/dist/FileInput/FileInput.d.ts.map +1 -1
  69. package/dist/FileInput/FileInput.js +3 -2
  70. package/dist/Heading/Heading.d.ts.map +1 -1
  71. package/dist/Heading/Heading.js +6 -2
  72. package/dist/HoverCard/HoverCard.d.ts +6 -0
  73. package/dist/HoverCard/HoverCard.d.ts.map +1 -1
  74. package/dist/HoverCard/useHoverCard.d.ts +5 -0
  75. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  76. package/dist/HoverCard/useHoverCard.js +67 -25
  77. package/dist/Item/Item.d.ts.map +1 -1
  78. package/dist/Item/Item.js +4 -2
  79. package/dist/Kbd/Kbd.d.ts.map +1 -1
  80. package/dist/Kbd/Kbd.js +2 -19
  81. package/dist/Layer/LayerDepthContext.d.ts +52 -0
  82. package/dist/Layer/LayerDepthContext.d.ts.map +1 -0
  83. package/dist/Layer/LayerDepthContext.js +66 -0
  84. package/dist/Layer/index.d.ts +3 -0
  85. package/dist/Layer/index.d.ts.map +1 -1
  86. package/dist/Layer/index.js +4 -0
  87. package/dist/Layer/layerStack.d.ts +98 -0
  88. package/dist/Layer/layerStack.d.ts.map +1 -0
  89. package/dist/Layer/layerStack.js +306 -0
  90. package/dist/Layer/useLayerDismissal.d.ts +93 -0
  91. package/dist/Layer/useLayerDismissal.d.ts.map +1 -0
  92. package/dist/Layer/useLayerDismissal.js +91 -0
  93. package/dist/Lightbox/Lightbox.d.ts +1 -0
  94. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  95. package/dist/Lightbox/Lightbox.js +103 -81
  96. package/dist/Markdown/index.d.ts +1 -1
  97. package/dist/Markdown/index.d.ts.map +1 -1
  98. package/dist/Markdown/parser.d.ts +38 -1
  99. package/dist/Markdown/parser.d.ts.map +1 -1
  100. package/dist/Markdown/parser.js +177 -29
  101. package/dist/MobileNav/MobileNav.d.ts +6 -1
  102. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  103. package/dist/MobileNav/MobileNav.js +61 -36
  104. package/dist/MultiSelector/MultiSelector.d.ts +15 -1
  105. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  106. package/dist/MultiSelector/MultiSelector.js +17 -6
  107. package/dist/MultiSelector/index.d.ts +1 -1
  108. package/dist/MultiSelector/index.d.ts.map +1 -1
  109. package/dist/NavMenu/NavHeadingMenu.d.ts.map +1 -1
  110. package/dist/NavMenu/NavHeadingMenu.js +3 -2
  111. package/dist/Outline/Outline.d.ts.map +1 -1
  112. package/dist/Outline/Outline.js +3 -2
  113. package/dist/OverflowList/OverflowList.d.ts.map +1 -1
  114. package/dist/OverflowList/OverflowList.js +3 -2
  115. package/dist/Overlay/Overlay.d.ts.map +1 -1
  116. package/dist/Overlay/Overlay.js +3 -2
  117. package/dist/Popover/usePopover.d.ts.map +1 -1
  118. package/dist/Popover/usePopover.js +20 -17
  119. package/dist/PowerSearch/PowerSearch.d.ts +8 -2
  120. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  121. package/dist/PowerSearch/PowerSearch.js +19 -6
  122. package/dist/PowerSearch/PowerSearchEditPopover.d.ts +3 -1
  123. package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
  124. package/dist/PowerSearch/PowerSearchEditPopover.js +28 -6
  125. package/dist/PowerSearch/PowerSearchValueEditor.d.ts +3 -1
  126. package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
  127. package/dist/PowerSearch/PowerSearchValueEditor.js +19 -9
  128. package/dist/PowerSearch/types.d.ts +2 -0
  129. package/dist/PowerSearch/types.d.ts.map +1 -1
  130. package/dist/PowerSearch/usePowerSearchSource.d.ts +6 -1
  131. package/dist/PowerSearch/usePowerSearchSource.d.ts.map +1 -1
  132. package/dist/PowerSearch/usePowerSearchSource.js +14 -5
  133. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  134. package/dist/Resizable/ResizeHandle.js +3 -2
  135. package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  136. package/dist/SegmentedControl/SegmentedControl.js +3 -2
  137. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  138. package/dist/SelectableCard/SelectableCard.js +3 -3
  139. package/dist/Selector/Selector.d.ts.map +1 -1
  140. package/dist/Selector/Selector.js +5 -0
  141. package/dist/SideNav/SideNav.d.ts.map +1 -1
  142. package/dist/SideNav/SideNav.js +4 -3
  143. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  144. package/dist/SideNav/SideNavHeading.js +6 -5
  145. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  146. package/dist/SideNav/SideNavItem.js +4 -3
  147. package/dist/Slider/Slider.d.ts.map +1 -1
  148. package/dist/Slider/Slider.js +3 -3
  149. package/dist/Spinner/Spinner.d.ts +3 -3
  150. package/dist/Spinner/Spinner.d.ts.map +1 -1
  151. package/dist/Spinner/Spinner.js +130 -78
  152. package/dist/Stepper/Step.d.ts +140 -0
  153. package/dist/Stepper/Step.d.ts.map +1 -0
  154. package/dist/Stepper/Step.js +1045 -0
  155. package/dist/Stepper/StepStatus.d.ts +24 -0
  156. package/dist/Stepper/StepStatus.d.ts.map +1 -0
  157. package/dist/Stepper/StepStatus.js +1 -0
  158. package/dist/Stepper/Stepper.d.ts +93 -0
  159. package/dist/Stepper/Stepper.d.ts.map +1 -0
  160. package/dist/Stepper/Stepper.js +184 -0
  161. package/dist/Stepper/StepperContext.d.ts +41 -0
  162. package/dist/Stepper/StepperContext.d.ts.map +1 -0
  163. package/dist/Stepper/StepperContext.js +34 -0
  164. package/dist/Stepper/index.d.ts +8 -0
  165. package/dist/Stepper/index.d.ts.map +1 -0
  166. package/dist/Stepper/index.js +7 -0
  167. package/dist/Stepper/stepper.stylex.d.ts +15 -0
  168. package/dist/Stepper/stepper.stylex.d.ts.map +1 -0
  169. package/dist/Stepper/stepper.stylex.js +20 -0
  170. package/dist/Switch/Switch.d.ts.map +1 -1
  171. package/dist/Switch/Switch.js +3 -2
  172. package/dist/TabList/Tab.d.ts +15 -2
  173. package/dist/TabList/Tab.d.ts.map +1 -1
  174. package/dist/TabList/Tab.js +32 -7
  175. package/dist/TabList/TabList.d.ts +46 -7
  176. package/dist/TabList/TabList.d.ts.map +1 -1
  177. package/dist/TabList/TabList.js +353 -23
  178. package/dist/TabList/TabListContext.d.ts +11 -1
  179. package/dist/TabList/TabListContext.d.ts.map +1 -1
  180. package/dist/TabList/TabListContext.js +11 -2
  181. package/dist/TabList/TabMenu.d.ts.map +1 -1
  182. package/dist/TabList/TabMenu.js +3 -2
  183. package/dist/TabList/index.d.ts +2 -2
  184. package/dist/TabList/index.d.ts.map +1 -1
  185. package/dist/Table/BaseTable.d.ts.map +1 -1
  186. package/dist/Table/BaseTable.js +4 -1
  187. package/dist/Table/TableRow.d.ts +16 -5
  188. package/dist/Table/TableRow.d.ts.map +1 -1
  189. package/dist/Table/TableRow.js +16 -5
  190. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
  191. package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +20 -8
  192. package/dist/Table/plugins/pagination/useTablePagination.d.ts +3 -0
  193. package/dist/Table/plugins/pagination/useTablePagination.d.ts.map +1 -1
  194. package/dist/Table/plugins/pagination/useTablePagination.js +21 -4
  195. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  196. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +7 -2
  197. package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts.map +1 -1
  198. package/dist/Table/plugins/rowStatus/useTableRowStatus.js +10 -3
  199. package/dist/Table/plugins/selection/useTableSelection.d.ts +16 -0
  200. package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
  201. package/dist/Table/plugins/selection/useTableSelection.js +19 -5
  202. package/dist/Table/types.d.ts +22 -4
  203. package/dist/Table/types.d.ts.map +1 -1
  204. package/dist/Table/useBaseTablePlugins.d.ts.map +1 -1
  205. package/dist/Table/useBaseTablePlugins.js +5 -0
  206. package/dist/Text/Text.d.ts.map +1 -1
  207. package/dist/Text/Text.js +6 -2
  208. package/dist/TextArea/TextArea.d.ts.map +1 -1
  209. package/dist/TextArea/TextArea.js +3 -2
  210. package/dist/TextInput/TextInput.d.ts.map +1 -1
  211. package/dist/TextInput/TextInput.js +3 -2
  212. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  213. package/dist/TimeInput/TimeInput.js +3 -2
  214. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  215. package/dist/Timestamp/Timestamp.js +5 -3
  216. package/dist/Token/TokenLink.d.ts.map +1 -1
  217. package/dist/Token/TokenLink.js +2 -2
  218. package/dist/Tokenizer/Tokenizer.d.ts +3 -1
  219. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  220. package/dist/Tokenizer/Tokenizer.js +2 -0
  221. package/dist/Tooltip/Tooltip.d.ts +5 -0
  222. package/dist/Tooltip/Tooltip.d.ts.map +1 -1
  223. package/dist/Tooltip/useTooltip.d.ts +5 -0
  224. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  225. package/dist/Tooltip/useTooltip.js +39 -24
  226. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  227. package/dist/TopNav/TopNavHeading.js +3 -2
  228. package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
  229. package/dist/TopNav/TopNavMegaMenu.js +3 -3
  230. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  231. package/dist/TopNav/TopNavMenu.js +4 -3
  232. package/dist/Typeahead/BaseTypeahead.d.ts +2 -0
  233. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  234. package/dist/Typeahead/BaseTypeahead.js +68 -29
  235. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  236. package/dist/Typeahead/Typeahead.js +3 -2
  237. package/dist/astryx.css +68 -2
  238. package/dist/hooks/index.d.ts +1 -0
  239. package/dist/hooks/index.d.ts.map +1 -1
  240. package/dist/hooks/index.js +1 -0
  241. package/dist/hooks/useFocusTrap.d.ts +7 -4
  242. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  243. package/dist/hooks/useFocusTrap.js +60 -95
  244. package/dist/hooks/useHotkeys.d.ts.map +1 -1
  245. package/dist/hooks/useHotkeys.js +3 -18
  246. package/dist/hooks/useMergedRefs.d.ts +18 -0
  247. package/dist/hooks/useMergedRefs.d.ts.map +1 -0
  248. package/dist/hooks/useMergedRefs.js +25 -0
  249. package/dist/index.d.ts +1 -0
  250. package/dist/index.d.ts.map +1 -1
  251. package/dist/index.js +1 -0
  252. package/dist/utils/groupItems.d.ts +5 -1
  253. package/dist/utils/groupItems.d.ts.map +1 -1
  254. package/dist/utils/groupItems.js +9 -9
  255. package/dist/utils/index.d.ts +1 -1
  256. package/dist/utils/index.d.ts.map +1 -1
  257. package/dist/utils/isApplePlatform.d.ts +18 -0
  258. package/dist/utils/isApplePlatform.d.ts.map +1 -0
  259. package/dist/utils/isApplePlatform.js +37 -0
  260. package/dist/utils/sharedResizeObserver.d.ts.map +1 -1
  261. package/dist/utils/sharedResizeObserver.js +10 -1
  262. package/dist/utils/timeParser.d.ts +1 -1
  263. package/dist/utils/timeParser.d.ts.map +1 -1
  264. package/dist/utils/timeParser.js +26 -12
  265. package/locales/en.json +31 -7
  266. package/locales/pseudo.json +18 -0
  267. package/package.json +8 -3
  268. package/src/AppShell/AppShell.tsx +3 -2
  269. package/src/AspectRatio/AspectRatio.doc.mjs +6 -3
  270. package/src/AspectRatio/AspectRatio.test.tsx +57 -10
  271. package/src/AspectRatio/AspectRatio.tsx +40 -1
  272. package/src/Avatar/Avatar.doc.mjs +2 -1
  273. package/src/Avatar/Avatar.test.tsx +17 -0
  274. package/src/Avatar/Avatar.tsx +61 -38
  275. package/src/AvatarGroup/AvatarGroup.tsx +3 -2
  276. package/src/Banner/Banner.doc.mjs +13 -11
  277. package/src/Banner/Banner.test.tsx +102 -15
  278. package/src/Banner/Banner.tsx +72 -25
  279. package/src/BottomSheet/BottomSheet.test.tsx +123 -0
  280. package/src/BottomSheet/BottomSheet.tsx +17 -4
  281. package/src/BottomSheet/BottomSheetSwitcher.tsx +3 -2
  282. package/src/Breadcrumbs/BreadcrumbItem.tsx +9 -5
  283. package/src/Button/Button.doc.mjs +22 -0
  284. package/src/Button/Button.test.tsx +13 -0
  285. package/src/Button/Button.tsx +5 -4
  286. package/src/ButtonGroup/ButtonGroup.doc.mjs +10 -1
  287. package/src/ButtonGroup/ButtonGroup.test.tsx +391 -1
  288. package/src/ButtonGroup/ButtonGroup.tsx +23 -5
  289. package/src/Calendar/Calendar.doc.mjs +4 -3
  290. package/src/Calendar/Calendar.test.tsx +52 -0
  291. package/src/Calendar/Calendar.tsx +18 -15
  292. package/src/Calendar/getInitialFocusDate.test.ts +94 -0
  293. package/src/Calendar/getInitialFocusDate.ts +93 -0
  294. package/src/Carousel/Carousel.tsx +3 -2
  295. package/src/Chat/ChatComposerInput.tsx +5 -1
  296. package/src/Chat/ChatLayout.tsx +3 -2
  297. package/src/Chat/ChatMessageList.doc.mjs +9 -1
  298. package/src/Chat/ChatMessageList.test.tsx +46 -0
  299. package/src/Chat/ChatMessageList.tsx +28 -4
  300. package/src/Chat/ChatTokenizedText.tsx +17 -10
  301. package/src/Chat/useChatComposerTokens.ts +1 -1
  302. package/src/CheckboxInput/CheckboxInput.tsx +3 -2
  303. package/src/ClickableCard/ClickableCard.tsx +3 -2
  304. package/src/CodeBlock/CodeBlock.doc.mjs +6 -0
  305. package/src/CommandPalette/CommandPaletteInput.tsx +3 -2
  306. package/src/CommandPalette/CommandPaletteItem.tsx +3 -2
  307. package/src/ContextMenu/ContextMenu.doc.mjs +5 -0
  308. package/src/ContextMenu/ContextMenu.tsx +4 -3
  309. package/src/DateInput/DateInput.tsx +3 -2
  310. package/src/DateInput/DateInputTouch.test.tsx +36 -0
  311. package/src/DateInput/TouchDateField.tsx +38 -4
  312. package/src/DateTimeInput/DateTimeInput.doc.mjs +18 -0
  313. package/src/DateTimeInput/DateTimeInput.test.tsx +1088 -0
  314. package/src/DateTimeInput/DateTimeInput.tsx +556 -24
  315. package/src/DateTimeInput/index.ts +1 -0
  316. package/src/Dialog/Dialog.doc.mjs +8 -3
  317. package/src/Dialog/Dialog.test.tsx +261 -1
  318. package/src/Dialog/Dialog.tsx +109 -58
  319. package/src/DropdownMenu/DropdownMenu.doc.mjs +6 -0
  320. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +8 -5
  321. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +8 -11
  322. package/src/Field/Field.doc.mjs +13 -2
  323. package/src/FileInput/FileInput.tsx +3 -2
  324. package/src/Heading/Heading.test.tsx +23 -1
  325. package/src/Heading/Heading.tsx +6 -2
  326. package/src/HoverCard/HoverCard.doc.mjs +5 -0
  327. package/src/HoverCard/HoverCard.tsx +6 -0
  328. package/src/HoverCard/useHoverCard.tsx +81 -30
  329. package/src/Item/Item.tsx +5 -4
  330. package/src/Kbd/Kbd.tsx +2 -19
  331. package/src/Layer/LayerDepthContext.tsx +62 -0
  332. package/src/Layer/index.ts +9 -0
  333. package/src/Layer/layerDismissalFamilies.test.tsx +359 -0
  334. package/src/Layer/layerDismissalInvariants.test.tsx +417 -0
  335. package/src/Layer/layerStack.ts +362 -0
  336. package/src/Layer/useLayerDismissal.test.tsx +469 -0
  337. package/src/Layer/useLayerDismissal.ts +173 -0
  338. package/src/Layout/Layout.doc.mjs +2 -2
  339. package/src/Lightbox/Lightbox.doc.mjs +12 -0
  340. package/src/Lightbox/Lightbox.tsx +124 -102
  341. package/src/Link/Link.doc.mjs +39 -0
  342. package/src/Markdown/Markdown.doc.mjs +5 -0
  343. package/src/Markdown/incremental.test.ts +16 -2
  344. package/src/Markdown/index.ts +1 -0
  345. package/src/Markdown/parser.perf.test.ts +96 -1
  346. package/src/Markdown/parser.test.ts +145 -2
  347. package/src/Markdown/parser.ts +244 -29
  348. package/src/MobileNav/MobileNav.tsx +62 -36
  349. package/src/MoreMenu/MoreMenu.doc.mjs +7 -1
  350. package/src/MultiSelector/MultiSelector.doc.mjs +27 -0
  351. package/src/MultiSelector/MultiSelector.test.tsx +106 -0
  352. package/src/MultiSelector/MultiSelector.tsx +50 -6
  353. package/src/MultiSelector/index.ts +1 -0
  354. package/src/NavMenu/NavHeadingMenu.tsx +3 -2
  355. package/src/NumberInput/NumberInput.doc.mjs +5 -0
  356. package/src/Outline/Outline.tsx +3 -2
  357. package/src/OverflowList/OverflowList.tsx +3 -2
  358. package/src/Overlay/Overlay.tsx +3 -2
  359. package/src/Popover/usePopover.tsx +31 -28
  360. package/src/PowerSearch/PowerSearch.doc.mjs +160 -28
  361. package/src/PowerSearch/PowerSearch.test.tsx +240 -1
  362. package/src/PowerSearch/PowerSearch.tsx +34 -5
  363. package/src/PowerSearch/PowerSearchEditPopover.test.tsx +201 -0
  364. package/src/PowerSearch/PowerSearchEditPopover.tsx +29 -2
  365. package/src/PowerSearch/PowerSearchValueEditor.test.tsx +47 -1
  366. package/src/PowerSearch/PowerSearchValueEditor.tsx +15 -0
  367. package/src/PowerSearch/types.ts +2 -0
  368. package/src/PowerSearch/usePowerSearchSource.test.ts +82 -2
  369. package/src/PowerSearch/usePowerSearchSource.ts +13 -3
  370. package/src/Resizable/ResizeHandle.tsx +3 -2
  371. package/src/SegmentedControl/SegmentedControl.tsx +3 -2
  372. package/src/SelectableCard/SelectableCard.tsx +3 -2
  373. package/src/Selector/Selector.doc.mjs +12 -1
  374. package/src/Selector/Selector.test.tsx +45 -1
  375. package/src/Selector/Selector.tsx +11 -1
  376. package/src/SideNav/SideNav.doc.mjs +6 -6
  377. package/src/SideNav/SideNav.tsx +4 -2
  378. package/src/SideNav/SideNavHeading.tsx +10 -10
  379. package/src/SideNav/SideNavItem.tsx +4 -2
  380. package/src/Slider/Slider.tsx +3 -2
  381. package/src/Spinner/Spinner.test.tsx +147 -1
  382. package/src/Spinner/Spinner.tsx +120 -101
  383. package/src/Stepper/Step.doc.mjs +98 -0
  384. package/src/Stepper/Step.tsx +1638 -0
  385. package/src/Stepper/StepStatus.ts +26 -0
  386. package/src/Stepper/Stepper.doc.mjs +370 -0
  387. package/src/Stepper/Stepper.test.tsx +1024 -0
  388. package/src/Stepper/Stepper.tsx +258 -0
  389. package/src/Stepper/StepperContext.ts +71 -0
  390. package/src/Stepper/index.ts +18 -0
  391. package/src/Stepper/stepper.stylex.ts +19 -0
  392. package/src/Switch/Switch.tsx +3 -2
  393. package/src/TabList/Tab.doc.mjs +13 -1
  394. package/src/TabList/Tab.tsx +67 -7
  395. package/src/TabList/TabList.doc.mjs +22 -6
  396. package/src/TabList/TabList.test.tsx +559 -0
  397. package/src/TabList/TabList.tsx +490 -22
  398. package/src/TabList/TabListContext.ts +13 -2
  399. package/src/TabList/TabMenu.tsx +3 -2
  400. package/src/TabList/index.ts +6 -2
  401. package/src/Table/BaseTable.tsx +6 -3
  402. package/src/Table/Table.doc.mjs +6 -1
  403. package/src/Table/Table.test.tsx +132 -14
  404. package/src/Table/TableBody.doc.mjs +40 -0
  405. package/src/Table/TableFooter.doc.mjs +40 -0
  406. package/src/Table/TableHeader.doc.mjs +40 -0
  407. package/src/Table/TableRow.tsx +16 -5
  408. package/src/Table/plugins/groupedRows/useTableGroupedRows-perf.test.tsx +112 -0
  409. package/src/Table/plugins/groupedRows/useTableGroupedRows.test.tsx +100 -0
  410. package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +17 -8
  411. package/src/Table/plugins/pagination/useTablePagination.test.tsx +34 -4
  412. package/src/Table/plugins/pagination/useTablePagination.tsx +35 -3
  413. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +9 -2
  414. package/src/Table/plugins/rowStatus/useTableRowStatus.test.tsx +13 -7
  415. package/src/Table/plugins/rowStatus/useTableRowStatus.tsx +12 -3
  416. package/src/Table/plugins/selection/useTableSelection.test.tsx +76 -0
  417. package/src/Table/plugins/selection/useTableSelection.tsx +40 -7
  418. package/src/Table/types.ts +22 -4
  419. package/src/Table/useBaseTablePlugins.ts +5 -0
  420. package/src/Table/useTableGroupedRows.doc.mjs +5 -4
  421. package/src/Table/useTablePagination.doc.mjs +7 -0
  422. package/src/Table/useTableRowStatus.doc.mjs +1 -1
  423. package/src/Table/useTableSelection.doc.mjs +31 -0
  424. package/src/Text/Text.test.tsx +23 -1
  425. package/src/Text/Text.tsx +6 -2
  426. package/src/TextArea/TextArea.tsx +3 -2
  427. package/src/TextInput/TextInput.doc.mjs +10 -0
  428. package/src/TextInput/TextInput.tsx +3 -2
  429. package/src/Thumbnail/Thumbnail.doc.mjs +1 -1
  430. package/src/TimeInput/TimeInput.tsx +2 -2
  431. package/src/Timestamp/Timestamp.tsx +4 -2
  432. package/src/Toast/Toast.doc.mjs +6 -0
  433. package/src/Token/TokenLink.tsx +2 -2
  434. package/src/Tokenizer/Tokenizer.doc.mjs +27 -0
  435. package/src/Tokenizer/Tokenizer.tsx +4 -0
  436. package/src/Toolbar/Toolbar.doc.mjs +5 -0
  437. package/src/Tooltip/Tooltip.doc.mjs +5 -0
  438. package/src/Tooltip/Tooltip.test.tsx +32 -0
  439. package/src/Tooltip/Tooltip.tsx +5 -0
  440. package/src/Tooltip/useTooltip.tsx +47 -24
  441. package/src/TopNav/TopNavHeading.tsx +3 -2
  442. package/src/TopNav/TopNavMegaMenu.tsx +3 -2
  443. package/src/TopNav/TopNavMenu.tsx +4 -3
  444. package/src/Typeahead/BaseTypeahead.doc.mjs +11 -0
  445. package/src/Typeahead/BaseTypeahead.tsx +85 -33
  446. package/src/Typeahead/Typeahead.doc.mjs +5 -0
  447. package/src/Typeahead/Typeahead.test.tsx +49 -0
  448. package/src/Typeahead/Typeahead.tsx +3 -2
  449. package/src/hooks/index.ts +2 -0
  450. package/src/hooks/useContainerReveal.doc.mjs +2 -2
  451. package/src/hooks/useFocusTrap.test.tsx +14 -0
  452. package/src/hooks/useFocusTrap.ts +62 -111
  453. package/src/hooks/useFocusTrapEscapeShim.test.tsx +165 -0
  454. package/src/hooks/useHotkeys.ts +3 -18
  455. package/src/hooks/useMergedRefs.doc.mjs +79 -0
  456. package/src/hooks/useMergedRefs.test.tsx +62 -0
  457. package/src/hooks/useMergedRefs.ts +36 -0
  458. package/src/index.ts +1 -0
  459. package/src/theme/MediaTheme.doc.mjs +5 -5
  460. package/src/utils/groupItems.ts +12 -6
  461. package/src/utils/index.ts +1 -1
  462. package/src/utils/isApplePlatform.test.ts +61 -0
  463. package/src/utils/isApplePlatform.ts +37 -0
  464. package/src/utils/sharedResizeObserver.ts +10 -2
  465. package/src/utils/timeParser.test.ts +6 -1
  466. package/src/utils/timeParser.ts +35 -13
  467. package/src/__tests__/inputWidthContract.test.tsx +0 -69
@@ -13,6 +13,16 @@
13
13
  // Types
14
14
  // ---------------------------------------------------------------------------
15
15
 
16
+ /**
17
+ * Where a block sits in the source string handed to `parseMarkdown`:
18
+ * `source.slice(start, end)` is the block, and `end` excludes the block's
19
+ * trailing blank lines.
20
+ *
21
+ * An object rather than a `[start, end]` tuple so a second way of addressing
22
+ * the same block — line numbers, once a consumer needs them — can be added as
23
+ * optional fields without breaking anyone.
24
+ */
25
+
16
26
  // ---------------------------------------------------------------------------
17
27
  // Parse options
18
28
  // ---------------------------------------------------------------------------
@@ -47,7 +57,8 @@ function resolveOptions(arg) {
47
57
  const opts = arg;
48
58
  return {
49
59
  sourceIds: opts.sourceIds,
50
- autolink: opts.autolink
60
+ autolink: opts.autolink,
61
+ sourceRanges: opts.sourceRanges
51
62
  };
52
63
  }
53
64
 
@@ -168,10 +179,17 @@ function extractLinkDefinitions(input) {
168
179
  cleaned: input
169
180
  };
170
181
  }
171
- const cleaned = lines.filter((_, index) => keep[index]).join('\n');
182
+ const lineMap = [];
183
+ for (let index = 0; index < lines.length; index++) {
184
+ if (keep[index]) {
185
+ lineMap.push(index);
186
+ }
187
+ }
188
+ const cleaned = lineMap.map(index => lines[index]).join('\n');
172
189
  return {
173
190
  defs,
174
- cleaned
191
+ cleaned,
192
+ lineMap
175
193
  };
176
194
  }
177
195
 
@@ -965,6 +983,19 @@ function isTableSeparator(line) {
965
983
  return nonEmpty.length > 0 && nonEmpty.every(cell => /^:?-+:?$/.test(cell));
966
984
  }
967
985
 
986
+ /**
987
+ * The same options for content parsed out of an enclosing block. Ranges are a
988
+ * top-level contract: a list item's or a blockquote's children are parsed from
989
+ * text the caller reassembled (markers and `>` prefixes stripped), so an
990
+ * offset into it would not address the document.
991
+ */
992
+ function nested(opts) {
993
+ return opts.sourceRanges ? {
994
+ ...opts,
995
+ sourceRanges: false
996
+ } : opts;
997
+ }
998
+
968
999
  /**
969
1000
  * Returns true when a line could start a new block — used to stop paragraph
970
1001
  * continuation. Every regex here uses bounded or single-class quantifiers
@@ -1095,7 +1126,7 @@ function parseList(lines, startIndex, ordered, opts) {
1095
1126
  }
1096
1127
  items.push({
1097
1128
  checked,
1098
- children: parseMarkdownImpl(itemText, opts)
1129
+ children: parseMarkdownImpl(itemText, nested(opts))
1099
1130
  });
1100
1131
 
1101
1132
  // CommonMark loose list: blank line(s) between items of the same style
@@ -1140,7 +1171,8 @@ function parseMarkdownImpl(input, baseOpts) {
1140
1171
  // parse.
1141
1172
  const {
1142
1173
  defs,
1143
- cleaned
1174
+ cleaned,
1175
+ lineMap
1144
1176
  } = extractLinkDefinitions(input);
1145
1177
  const inherited = baseOpts.linkDefs;
1146
1178
  let linkDefs;
@@ -1157,8 +1189,22 @@ function parseMarkdownImpl(input, baseOpts) {
1157
1189
  } : baseOpts;
1158
1190
  const lines = cleaned.split('\n');
1159
1191
  const blocks = [];
1192
+ // The line each block started on, parallel to `blocks`. Only collected when
1193
+ // ranges were asked for; a block's end is resolved after the loop, since the
1194
+ // branch that produced it has already moved `index` past whatever it read.
1195
+ const blockStartLines = opts.sourceRanges ? [] : null;
1196
+ // Set only by a block that consumes blank lines as content, where the
1197
+ // positional end derivation would trim them away.
1198
+ const blockEndLines = opts.sourceRanges ? [] : null;
1199
+ let blockStartLine = 0;
1200
+ const pushBlock = (node, endLine) => {
1201
+ blocks.push(node);
1202
+ blockStartLines?.push(blockStartLine);
1203
+ blockEndLines?.push(endLine);
1204
+ };
1160
1205
  let index = 0;
1161
1206
  while (index < lines.length) {
1207
+ blockStartLine = index;
1162
1208
  const line = lines[index];
1163
1209
  if (line.trim() === '') {
1164
1210
  index++;
@@ -1177,18 +1223,21 @@ function parseMarkdownImpl(input, baseOpts) {
1177
1223
  index++;
1178
1224
  }
1179
1225
  index++; // skip closing fence
1180
- blocks.push({
1226
+ // A fence owns its blank lines, and an unterminated one (mid-stream)
1227
+ // can end on them, so it states its own end rather than letting the
1228
+ // positional derivation trim them off.
1229
+ pushBlock({
1181
1230
  type: 'codeblock',
1182
1231
  language,
1183
1232
  content: codeLines.join('\n')
1184
- });
1233
+ }, Math.min(index, lines.length) - 1);
1185
1234
  continue;
1186
1235
  }
1187
1236
 
1188
1237
  // --- Heading ---
1189
1238
  const headingMatch = line.match(/^(#{1,6}) +(.*)/);
1190
1239
  if (headingMatch) {
1191
- blocks.push({
1240
+ pushBlock({
1192
1241
  type: 'heading',
1193
1242
  level: headingMatch[1].length,
1194
1243
  children: parseInlineEntry(headingMatch[2], opts)
@@ -1199,7 +1248,7 @@ function parseMarkdownImpl(input, baseOpts) {
1199
1248
 
1200
1249
  // --- HR (must precede list check to handle `- - -`, `* * *`, `_ _ _`) ---
1201
1250
  if (isHorizontalRule(line)) {
1202
- blocks.push({
1251
+ pushBlock({
1203
1252
  type: 'hr'
1204
1253
  });
1205
1254
  index++;
@@ -1209,7 +1258,7 @@ function parseMarkdownImpl(input, baseOpts) {
1209
1258
  // --- Standalone image ---
1210
1259
  const imageMatch = line.match(/^!\[([^\]]*)\]\(([^)]+)\)/);
1211
1260
  if (imageMatch && line.trim() === imageMatch[0]) {
1212
- blocks.push({
1261
+ pushBlock({
1213
1262
  type: 'image',
1214
1263
  alt: imageMatch[1],
1215
1264
  src: imageMatch[2]
@@ -1221,7 +1270,7 @@ function parseMarkdownImpl(input, baseOpts) {
1221
1270
  // --- Table (with or without leading pipe) ---
1222
1271
  if (index + 1 < lines.length && line.includes('|') && isTableSeparator(lines[index + 1])) {
1223
1272
  const tableResult = parseTable(lines, index, opts);
1224
- blocks.push(tableResult.node);
1273
+ pushBlock(tableResult.node);
1225
1274
  index = tableResult.nextIndex;
1226
1275
  continue;
1227
1276
  }
@@ -1233,9 +1282,9 @@ function parseMarkdownImpl(input, baseOpts) {
1233
1282
  quoteLines.push(lines[index].replace(/^> ?/, ''));
1234
1283
  index++;
1235
1284
  }
1236
- blocks.push({
1285
+ pushBlock({
1237
1286
  type: 'blockquote',
1238
- children: parseMarkdownImpl(quoteLines.join('\n'), opts)
1287
+ children: parseMarkdownImpl(quoteLines.join('\n'), nested(opts))
1239
1288
  });
1240
1289
  continue;
1241
1290
  }
@@ -1243,7 +1292,7 @@ function parseMarkdownImpl(input, baseOpts) {
1243
1292
  // --- Unordered list ---
1244
1293
  if (/^ {0,9}[-*+] /.test(line)) {
1245
1294
  const listResult = parseList(lines, index, false, opts);
1246
- blocks.push(listResult.node);
1295
+ pushBlock(listResult.node);
1247
1296
  index = listResult.nextIndex;
1248
1297
  continue;
1249
1298
  }
@@ -1251,7 +1300,7 @@ function parseMarkdownImpl(input, baseOpts) {
1251
1300
  // --- Ordered list ---
1252
1301
  if (/^ {0,9}\d+[.)] /.test(line)) {
1253
1302
  const listResult = parseList(lines, index, true, opts);
1254
- blocks.push(listResult.node);
1303
+ pushBlock(listResult.node);
1255
1304
  index = listResult.nextIndex;
1256
1305
  continue;
1257
1306
  }
@@ -1263,14 +1312,63 @@ function parseMarkdownImpl(input, baseOpts) {
1263
1312
  paraLines.push(lines[index]);
1264
1313
  index++;
1265
1314
  }
1266
- blocks.push({
1315
+ pushBlock({
1267
1316
  type: 'paragraph',
1268
1317
  children: parseInlineEntry(paraLines.join('\n'), opts)
1269
1318
  });
1270
1319
  }
1320
+ if (blockStartLines != null) {
1321
+ stampSourceRanges(blocks, blockStartLines, blockEndLines ?? [], lines, lineMap, input, opts);
1322
+ }
1271
1323
  return blocks;
1272
1324
  }
1273
1325
 
1326
+ /**
1327
+ * Give each block the offsets it occupies in the original input.
1328
+ *
1329
+ * Blocks are contiguous and in source order, so a block runs from its own
1330
+ * first line to the line before the next block starts, minus the blank lines
1331
+ * between them. Offsets are computed against the *input*, not the text the
1332
+ * block loop saw: link reference definitions are stripped before parsing, and
1333
+ * `lineMap` says which input line each surviving line came from.
1334
+ */
1335
+ function stampSourceRanges(blocks, blockStartLines, blockEndLines, lines, lineMap, input, opts) {
1336
+ const base = opts.baseOffset ?? 0;
1337
+ // Offset of the first character of every line of the input.
1338
+ const inputLineStarts = [0];
1339
+ for (let i = 0; i < input.length; i++) {
1340
+ if (input[i] === '\n') {
1341
+ inputLineStarts.push(i + 1);
1342
+ }
1343
+ }
1344
+ // Stripping removes whole lines and never edits one, so a parsed line's
1345
+ // length is its input line's length.
1346
+ const lineStart = line => base + inputLineStarts[lineMap != null ? lineMap[line] : line];
1347
+ for (let i = 0; i < blocks.length; i++) {
1348
+ const startLine = blockStartLines[i];
1349
+ let endLine = blockEndLines[i];
1350
+ if (endLine == null) {
1351
+ const nextStart = i + 1 < blocks.length ? blockStartLines[i + 1] : lines.length;
1352
+ endLine = nextStart - 1;
1353
+ while (endLine > startLine && lines[endLine].trim() === '') {
1354
+ endLine--;
1355
+ }
1356
+ }
1357
+ // Exactly the block's own lines, verbatim — a CRLF document's trailing
1358
+ // `\r` included, since the parser reads it as part of the line too and a
1359
+ // range that dropped it would slice to something that re-parses
1360
+ // differently.
1361
+ const end = lineStart(endLine) + lines[endLine].length;
1362
+ blocks[i] = {
1363
+ ...blocks[i],
1364
+ range: {
1365
+ start: lineStart(startLine),
1366
+ end
1367
+ }
1368
+ };
1369
+ }
1370
+ }
1371
+
1274
1372
  // ---------------------------------------------------------------------------
1275
1373
  // Incremental parsing
1276
1374
  // ---------------------------------------------------------------------------
@@ -1286,12 +1384,23 @@ export function createIncrementalState() {
1286
1384
 
1287
1385
  /**
1288
1386
  * Find the line-index of the last blank line that is NOT inside a fenced code
1289
- * block. Returns -1 when nothing is settled (unclosed fence or no blank line).
1387
+ * block, and report whether a fence is still open at the end of the input.
1388
+ * Returns -1 when nothing is settled.
1389
+ *
1390
+ * This index must never move backwards as more of the document arrives. The
1391
+ * caller's cache is keyed on the settled text staying a prefix of what it was,
1392
+ * so a boundary that retracts by one line costs a re-parse of every block in
1393
+ * the document. Two things used to retract it: a blank last line, which is
1394
+ * just the newline the stream has written so far and stops being blank as soon
1395
+ * as the next chunk appends to it; and an open fence, which used to collapse
1396
+ * the boundary to -1 even though the content before the fence opened cannot be
1397
+ * changed by anything typed inside it.
1290
1398
  */
1291
1399
  function findSettledBoundary(lines) {
1292
1400
  let inFence = false;
1293
1401
  let fenceMarker = '';
1294
1402
  let lastBoundary = -1;
1403
+ let boundaryBeforeFence = -1;
1295
1404
  for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
1296
1405
  const line = lines[lineIndex];
1297
1406
 
@@ -1301,16 +1410,20 @@ function findSettledBoundary(lines) {
1301
1410
  if (!inFence) {
1302
1411
  inFence = true;
1303
1412
  fenceMarker = fenceMatch[1];
1413
+ boundaryBeforeFence = lastBoundary;
1304
1414
  } else if (fenceMatch[1].startsWith(fenceMarker[0]) && fenceMatch[1].length >= fenceMarker.length) {
1305
1415
  inFence = false;
1306
1416
  fenceMarker = '';
1307
1417
  }
1308
1418
  }
1309
- if (!inFence && line.trim() === '' && lineIndex > 0) {
1419
+ if (!inFence && line.trim() === '' && lineIndex > 0 && lineIndex < lines.length - 1) {
1310
1420
  lastBoundary = lineIndex;
1311
1421
  }
1312
1422
  }
1313
- return inFence ? -1 : lastBoundary;
1423
+ return {
1424
+ boundary: inFence ? boundaryBeforeFence : lastBoundary,
1425
+ openFence: inFence
1426
+ };
1314
1427
  }
1315
1428
 
1316
1429
  /**
@@ -1532,6 +1645,18 @@ function trimUnsettledStructural(text) {
1532
1645
  return lines.join('\n');
1533
1646
  }
1534
1647
 
1648
+ /**
1649
+ * The same options, for parsing a slice that starts at `offset` of the
1650
+ * document — so the slice's blocks report ranges into the whole document
1651
+ * rather than into the slice.
1652
+ */
1653
+ function atOffset(opts, offset) {
1654
+ return opts.sourceRanges ? {
1655
+ ...opts,
1656
+ baseOffset: offset
1657
+ } : opts;
1658
+ }
1659
+
1535
1660
  /**
1536
1661
  * Concatenate freshly-parsed delta blocks with previously-settled blocks,
1537
1662
  * merging adjacent same-style lists into a single loose list. The boundary
@@ -1552,7 +1677,15 @@ function mergeSettledBlocks(prev, delta) {
1552
1677
  start: prevLast.start,
1553
1678
  delimiter: prevLast.delimiter,
1554
1679
  loose: true,
1555
- items: [...prevLast.items, ...deltaFirst.items]
1680
+ items: [...prevLast.items, ...deltaFirst.items],
1681
+ // One list now, so one range: from where the first half started to
1682
+ // where the second half ended.
1683
+ ...(prevLast.range != null && deltaFirst.range != null ? {
1684
+ range: {
1685
+ start: prevLast.range.start,
1686
+ end: deltaFirst.range.end
1687
+ }
1688
+ } : null)
1556
1689
  };
1557
1690
  return [...prev.slice(0, -1), merged, ...delta.slice(1)];
1558
1691
  }
@@ -1560,15 +1693,16 @@ function mergeSettledBlocks(prev, delta) {
1560
1693
  }
1561
1694
  export function parseMarkdownIncremental(input, state, arg) {
1562
1695
  const opts = resolveOptions(arg);
1563
- // Invalidate cache when the autolink option flips — cached settled blocks
1564
- // were parsed with the previous setting and would otherwise be reused
1565
- // unchanged.
1566
- if (state.autolink !== opts.autolink) {
1696
+ // Invalidate cache when the autolink or sourceRanges option flips — cached
1697
+ // settled blocks were parsed with the previous setting and would otherwise
1698
+ // be reused unchanged.
1699
+ if (state.autolink !== opts.autolink || Boolean(state.sourceRanges) !== Boolean(opts.sourceRanges)) {
1567
1700
  state.prevInput = '';
1568
1701
  state.settledText = '';
1569
1702
  state.settledBlocks = [];
1570
1703
  state.settledUpTo = 0;
1571
1704
  state.autolink = opts.autolink;
1705
+ state.sourceRanges = opts.sourceRanges;
1572
1706
  }
1573
1707
  if (input === '') {
1574
1708
  state.prevInput = '';
@@ -1599,15 +1733,22 @@ export function parseMarkdownIncremental(input, state, arg) {
1599
1733
  linkDefs
1600
1734
  } : opts;
1601
1735
  const lines = input.split('\n');
1602
- const boundary = findSettledBoundary(lines);
1736
+ const {
1737
+ boundary,
1738
+ openFence
1739
+ } = findSettledBoundary(lines);
1603
1740
  if (boundary < 0) {
1604
- // Inside an unclosed fence or no blank-line boundary — full re-parse
1741
+ // Nothing settled yet — no blank line, or a fence opened before the first
1742
+ // one — so there is no prefix to keep and the whole input is re-parsed.
1605
1743
  state.prevInput = input;
1606
1744
  return parseMarkdownImpl(input, parseOpts);
1607
1745
  }
1608
1746
  const settledText = lines.slice(0, boundary).join('\n');
1609
1747
  const unsettledRaw = lines.slice(boundary).join('\n').trim();
1610
- const unsettledText = trimUnsettledStructural(unsettledRaw);
1748
+ // Structural trimming holds back lines that look like an incomplete list or
1749
+ // table, which inside a fence is ordinary code: a TypeScript union or a `- `
1750
+ // would disappear from the code block as it streams.
1751
+ const unsettledText = openFence ? unsettledRaw : trimUnsettledStructural(unsettledRaw);
1611
1752
  let settledBlocks;
1612
1753
  if (settledText === state.settledText) {
1613
1754
  // Settled portion unchanged — reuse cached blocks
@@ -1615,13 +1756,20 @@ export function parseMarkdownIncremental(input, state, arg) {
1615
1756
  } else if (state.settledText.length > 0 && settledText.startsWith(state.settledText)) {
1616
1757
  // Settled portion grew — parse only the new delta
1617
1758
  const delta = settledText.slice(state.settledText.length);
1618
- const deltaBlocks = parseMarkdownImpl(delta, parseOpts);
1759
+ const deltaBlocks = parseMarkdownImpl(delta, atOffset(parseOpts, state.settledText.length));
1619
1760
  settledBlocks = mergeSettledBlocks(state.settledBlocks, deltaBlocks);
1620
1761
  } else {
1621
1762
  // Content before the boundary changed — full re-parse of settled portion
1622
1763
  settledBlocks = parseMarkdownImpl(settledText, parseOpts);
1623
1764
  }
1624
- const unsettledBlocks = unsettledText ? parseMarkdownImpl(unsettledText, parseOpts) : [];
1765
+
1766
+ // The unsettled tail is trimmed before parsing, so its offset in the
1767
+ // document is where that trimmed text actually starts — not the boundary,
1768
+ // which is a line index. If it somehow can't be located, parse it without
1769
+ // ranges rather than report wrong ones. Only worth searching for when
1770
+ // ranges were asked for: this runs on every streamed chunk.
1771
+ const unsettledStart = unsettledText && opts.sourceRanges ? input.indexOf(unsettledText, settledText.length) : -1;
1772
+ const unsettledBlocks = unsettledText ? parseMarkdownImpl(unsettledText, unsettledStart >= 0 ? atOffset(parseOpts, unsettledStart) : nested(parseOpts)) : [];
1625
1773
  state.settledText = settledText;
1626
1774
  state.settledBlocks = settledBlocks;
1627
1775
  state.settledUpTo = boundary;
@@ -15,10 +15,15 @@
15
15
  * - `::backdrop` pseudo-element
16
16
  * - Body scroll lock
17
17
  * - Focus trapping
18
- * - Escape key handling via `cancel` event
18
+ *
19
+ * Escape is owned by the shared dismissal stack (`useLayerDismissal`), so a
20
+ * drawer opened over another layer takes the press and nothing behind it
21
+ * closes. The native `cancel` event still handles the dismissals the browser
22
+ * starts itself, such as the Android back gesture.
19
23
  *
20
24
  * SYNC: When modified, update these files to stay in sync:
21
25
  * - /packages/core/src/MobileNav/index.ts (exports if types change)
26
+ * - /packages/core/src/Layer/useLayerDismissal.ts (dismissal stack)
22
27
  * - /packages/core/src/hooks/scrollbarGutter.ts (shared scroll-lock gutter)
23
28
  * - /packages/cli/assets/templates/blocks/components/MobileNav/ (showcase blocks)
24
29
  */
@@ -1 +1 @@
1
- {"version":3,"file":"MobileNav.d.ts","sourceRoot":"","sources":["../../src/MobileNav/MobileNav.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAmBf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA6L5C;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkBpE;AAmCD,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;IAC9D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;IAEhC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,SAAS,CAAC,EACxB,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,gBAAgB,EAC9B,QAAQ,EACR,MAAM,EACN,KAAW,EACX,IAAa,EACb,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EAAE,WAAW,EACpB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,cAAc,+BAiNhB;yBAhOe,SAAS"}
1
+ {"version":3,"file":"MobileNav.d.ts","sourceRoot":"","sources":["../../src/MobileNav/MobileNav.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAqBf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA8L5C;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkBpE;AAmCD,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;IAC9D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;IAEhC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,SAAS,CAAC,EACxB,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,gBAAgB,EAC9B,QAAQ,EACR,MAAM,EACN,KAAW,EACX,IAAa,EACb,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EAAE,WAAW,EACpB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,cAAc,+BAmOhB;yBAlPe,SAAS"}
@@ -19,10 +19,15 @@
19
19
  * - `::backdrop` pseudo-element
20
20
  * - Body scroll lock
21
21
  * - Focus trapping
22
- * - Escape key handling via `cancel` event
22
+ *
23
+ * Escape is owned by the shared dismissal stack (`useLayerDismissal`), so a
24
+ * drawer opened over another layer takes the press and nothing behind it
25
+ * closes. The native `cancel` event still handles the dismissals the browser
26
+ * starts itself, such as the Android back gesture.
23
27
  *
24
28
  * SYNC: When modified, update these files to stay in sync:
25
29
  * - /packages/core/src/MobileNav/index.ts (exports if types change)
30
+ * - /packages/core/src/Layer/useLayerDismissal.ts (dismissal stack)
26
31
  * - /packages/core/src/hooks/scrollbarGutter.ts (shared scroll-lock gutter)
27
32
  * - /packages/cli/assets/templates/blocks/components/MobileNav/ (showcase blocks)
28
33
  */
@@ -35,11 +40,13 @@ import { Icon } from "../Icon/index.js";
35
40
  import { Heading } from "../Heading/Heading.js";
36
41
  import { useAppShellMobile } from "../AppShell/AppShellMobileContext.js";
37
42
  import { holdScrollbarGutter } from "../hooks/scrollbarGutter.js";
38
- import { mergeProps, mergeRefs, composeEventHandlers } from "../utils/index.js";
43
+ import { mergeProps, composeEventHandlers } from "../utils/index.js";
39
44
  import { overlayPaddingReset } from "../Layout/padding.stylex.js";
45
+ import { LayerDepthProvider } from "../Layer/LayerDepthContext.js";
46
+ import { useLayerDismissal } from "../Layer/useLayerDismissal.js";
40
47
  import { themeProps } from "../utils/themeProps.js";
41
48
  import { useTranslator } from "../i18n/index.js";
42
-
49
+ import { useMergedRefs } from "../hooks/useMergedRefs.js";
43
50
  // =============================================================================
44
51
  // Styles
45
52
  // =============================================================================
@@ -352,12 +359,28 @@ export function MobileNav({
352
359
  }
353
360
  };
354
361
  }, []);
362
+ const {
363
+ shouldDismissOnCloseRequest
364
+ } = useLayerDismissal({
365
+ isActive: isOpen,
366
+ onDismiss: () => onOpenChange(false)
367
+ });
355
368
 
356
- // Handle native cancel event (Escape key) — prevent default and route through onOpenChange
369
+ // The native `cancel` event is the browser's own close-watcher firing: an
370
+ // Android back gesture, or a close request the stack never saw a press for.
371
+ // Escape presses the stack owns never arrive here — it preventDefault()s
372
+ // those, which suppresses the close watcher.
373
+ //
374
+ // Always preventDefault so the browser cannot close a controlled <dialog>
375
+ // behind React's back, then answer with the stack's own rules: top-most
376
+ // only, and never while an IME composition is in progress.
357
377
  const handleCancel = useCallback(event => {
358
378
  event.preventDefault();
379
+ if (!shouldDismissOnCloseRequest()) {
380
+ return;
381
+ }
359
382
  onOpenChange(false);
360
- }, [onOpenChange]);
383
+ }, [onOpenChange, shouldDismissOnCloseRequest]);
361
384
 
362
385
  // Handle clicks on the dialog backdrop area (outside the drawer)
363
386
  const handleDialogClick = useCallback(event => {
@@ -369,7 +392,7 @@ export function MobileNav({
369
392
  }, [onOpenChange]);
370
393
  const isStart = resolvedSide === 'start';
371
394
  return /*#__PURE__*/_jsx("dialog", {
372
- ref: mergeRefs(ref, dialogRef),
395
+ ref: useMergedRefs(ref, dialogRef),
373
396
  id: dialogId,
374
397
  ...mergeProps(themeProps('mobile-nav', {
375
398
  side: resolvedSide
@@ -379,38 +402,40 @@ export function MobileNav({
379
402
  "aria-label": label ?? (typeof header === 'string' ? header : t('@astryx.mobileNav.navigation')),
380
403
  onClick: composeEventHandlers(onClickProp, handleDialogClick),
381
404
  onCancel: handleCancel,
382
- children: /*#__PURE__*/_jsxs("div", {
383
- tabIndex: -1,
384
- ...stylex.props(styles.drawer, dynamicStyles.width(width), isStart && styles.drawerStart, isStart && isOpen && styles.drawerStartOpen, !isStart && styles.drawerEnd, !isStart && isOpen && styles.drawerEndOpen),
385
- children: [/*#__PURE__*/_jsxs("div", {
386
- ...{
387
- 0: {
388
- className: "x78zum5 x6s0dn4 x1qughib x1k15mir xf314gf x2lah0s x92x3c3 x1q0q8m5 xw8gpjh"
405
+ children: /*#__PURE__*/_jsx(LayerDepthProvider, {
406
+ children: /*#__PURE__*/_jsxs("div", {
407
+ tabIndex: -1,
408
+ ...stylex.props(styles.drawer, dynamicStyles.width(width), isStart && styles.drawerStart, isStart && isOpen && styles.drawerStartOpen, !isStart && styles.drawerEnd, !isStart && isOpen && styles.drawerEndOpen),
409
+ children: [/*#__PURE__*/_jsxs("div", {
410
+ ...{
411
+ 0: {
412
+ className: "x78zum5 x6s0dn4 x1qughib x1k15mir xf314gf x2lah0s x92x3c3 x1q0q8m5 xw8gpjh"
413
+ },
414
+ 1: {
415
+ className: "x78zum5 x6s0dn4 x1k15mir xf314gf x2lah0s x92x3c3 x1q0q8m5 xw8gpjh x13a6bvl"
416
+ }
417
+ }[!!!header << 0],
418
+ children: [typeof header === 'string' ? /*#__PURE__*/_jsx(Heading, {
419
+ level: 2,
420
+ xstyle: styles.headerText,
421
+ children: header
422
+ }) : header ?? null, /*#__PURE__*/_jsx(Button, {
423
+ variant: "ghost",
424
+ label: t('@astryx.mobileNav.closeNavigation'),
425
+ icon: /*#__PURE__*/_jsx(Icon, {
426
+ icon: "close",
427
+ color: "inherit"
428
+ }),
429
+ onClick: () => onOpenChange(false),
430
+ isIconOnly: true
431
+ })]
432
+ }), /*#__PURE__*/_jsx("div", {
433
+ ...{
434
+ className: "x98rzlu x1odjw0f x6ikm8r xish69e xx69xxh xf314gf xce4md1"
389
435
  },
390
- 1: {
391
- className: "x78zum5 x6s0dn4 x1k15mir xf314gf x2lah0s x92x3c3 x1q0q8m5 xw8gpjh x13a6bvl"
392
- }
393
- }[!!!header << 0],
394
- children: [typeof header === 'string' ? /*#__PURE__*/_jsx(Heading, {
395
- level: 2,
396
- xstyle: styles.headerText,
397
- children: header
398
- }) : header ?? null, /*#__PURE__*/_jsx(Button, {
399
- variant: "ghost",
400
- label: t('@astryx.mobileNav.closeNavigation'),
401
- icon: /*#__PURE__*/_jsx(Icon, {
402
- icon: "close",
403
- color: "inherit"
404
- }),
405
- onClick: () => onOpenChange(false),
406
- isIconOnly: true
436
+ children: children
407
437
  })]
408
- }), /*#__PURE__*/_jsx("div", {
409
- ...{
410
- className: "x98rzlu x1odjw0f x6ikm8r xish69e xx69xxh xf314gf xce4md1"
411
- },
412
- children: children
413
- })]
438
+ })
414
439
  })
415
440
  });
416
441
  }
@@ -22,6 +22,10 @@ export type MultiSelectorSize = 'sm' | 'md' | 'lg';
22
22
  export type MultiSelectorVariant = 'input' | 'ghost';
23
23
  export type MultiSelectorStatusType = 'warning' | 'error' | 'success';
24
24
  export type { MultiSelectorStatus };
25
+ export interface MultiSelectorSelectedItem {
26
+ value: string;
27
+ label: string;
28
+ }
25
29
  export interface MultiSelectorProps<T extends MultiSelectorOptionType = MultiSelectorOptionType> extends Omit<BaseProps, 'onChange' | 'defaultValue'> {
26
30
  /**
27
31
  * Label text for the multi-selector (always rendered for accessibility).
@@ -179,6 +183,16 @@ export interface MultiSelectorProps<T extends MultiSelectorOptionType = MultiSel
179
183
  * @default 'count'
180
184
  */
181
185
  triggerDisplay?: 'count' | 'labels' | 'badges';
186
+ /**
187
+ * Formats the trigger text when triggerDisplay is 'count' or 'labels'.
188
+ * Receives the selected items (value plus resolved label, in selection
189
+ * order) and returns the full trigger text; the count is `items.length`.
190
+ * Not called when nothing is selected — the placeholder shows instead — and
191
+ * not called for triggerDisplay 'badges', which renders Badge elements
192
+ * rather than text.
193
+ * @default items => `${items.length} selected` for 'count', "A, B, C, +N" for 'labels'
194
+ */
195
+ formatValue?: (items: MultiSelectorSelectedItem[]) => string;
182
196
  /**
183
197
  * Maximum number of badges to show before showing "+N".
184
198
  * Only used when triggerDisplay is 'badges'.
@@ -222,7 +236,7 @@ export interface MultiSelectorProps<T extends MultiSelectorOptionType = MultiSel
222
236
  * />
223
237
  * ```
224
238
  */
225
- export declare function MultiSelector<T extends MultiSelectorOptionType>({ label, isLabelHidden, description, isOptional, isRequired, isDisabled, disabledMessage, options, value, onChange, changeAction, isLoading, placeholder: placeholderFromProps, size: sizeProp, variant, status, statusVariant, labelTooltip, startIcon, hasClear, hasSelectAll, selectAllLabel: selectAllLabelFromProps, hasSearch, searchPlaceholder: searchPlaceholderFromProps, triggerDisplay, maxBadges, renderOption, indicatorPosition, isDefaultOpen, 'data-testid': testId, htmlName, width, xstyle, className, style, }: MultiSelectorProps<T>): React.JSX.Element;
239
+ export declare function MultiSelector<T extends MultiSelectorOptionType>({ label, isLabelHidden, description, isOptional, isRequired, isDisabled, disabledMessage, options, value, onChange, changeAction, isLoading, placeholder: placeholderFromProps, size: sizeProp, variant, status, statusVariant, labelTooltip, startIcon, hasClear, hasSelectAll, selectAllLabel: selectAllLabelFromProps, hasSearch, searchPlaceholder: searchPlaceholderFromProps, triggerDisplay, formatValue, maxBadges, renderOption, indicatorPosition, isDefaultOpen, 'data-testid': testId, htmlName, width, xstyle, className, style, }: MultiSelectorProps<T>): React.JSX.Element;
226
240
  export declare namespace MultiSelector {
227
241
  var displayName: string;
228
242
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelector.d.ts","sourceRoot":"","sources":["../../src/MultiSelector/MultiSelector.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MultiSelector.d.ts","sourceRoot":"","sources":["../../src/MultiSelector/MultiSelector.tsx"],"names":[],"mappings":"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"}