@astryxdesign/core 0.1.3 → 0.1.4-canary.01e5b29

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 (642) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/dist/AlertDialog/AlertDialog.d.ts +1 -1
  3. package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
  4. package/dist/AlertDialog/AlertDialog.js +20 -18
  5. package/dist/AlertDialog/useImperativeAlertDialog.js +3 -3
  6. package/dist/AppShell/AppShell.d.ts +1 -1
  7. package/dist/AppShell/AppShell.d.ts.map +1 -1
  8. package/dist/AppShell/AppShell.js +55 -53
  9. package/dist/AspectRatio/AspectRatio.js +5 -5
  10. package/dist/Avatar/Avatar.d.ts.map +1 -1
  11. package/dist/Avatar/Avatar.js +27 -25
  12. package/dist/Avatar/AvatarStatusDot.js +5 -5
  13. package/dist/AvatarGroup/AvatarGroup.js +5 -5
  14. package/dist/AvatarGroup/AvatarGroupOverflow.js +5 -5
  15. package/dist/Badge/Badge.js +3 -3
  16. package/dist/Banner/Banner.d.ts.map +1 -1
  17. package/dist/Banner/Banner.js +32 -25
  18. package/dist/Blockquote/Blockquote.js +7 -7
  19. package/dist/Breadcrumbs/BreadcrumbItem.js +17 -17
  20. package/dist/Breadcrumbs/Breadcrumbs.js +7 -7
  21. package/dist/Button/Button.d.ts.map +1 -1
  22. package/dist/Button/Button.js +47 -26
  23. package/dist/ButtonGroup/ButtonGroup.js +7 -7
  24. package/dist/Calendar/Calendar.d.ts.map +1 -1
  25. package/dist/Calendar/Calendar.js +108 -64
  26. package/dist/Calendar/dayCellUtils.d.ts +67 -5
  27. package/dist/Calendar/dayCellUtils.d.ts.map +1 -1
  28. package/dist/Calendar/dayCellUtils.js +139 -18
  29. package/dist/Calendar/styles.d.ts +2 -2
  30. package/dist/Calendar/styles.d.ts.map +1 -1
  31. package/dist/Calendar/styles.js +2 -2
  32. package/dist/Card/Card.d.ts +4 -2
  33. package/dist/Card/Card.d.ts.map +1 -1
  34. package/dist/Card/Card.js +18 -10
  35. package/dist/Carousel/Carousel.d.ts.map +1 -1
  36. package/dist/Carousel/Carousel.js +20 -19
  37. package/dist/Center/Center.js +3 -3
  38. package/dist/Chat/ChatComposer.js +23 -23
  39. package/dist/Chat/ChatComposerDrawer.js +14 -14
  40. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  41. package/dist/Chat/ChatComposerInput.js +27 -15
  42. package/dist/Chat/ChatDictationButton.d.ts +1 -1
  43. package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
  44. package/dist/Chat/ChatDictationButton.js +13 -11
  45. package/dist/Chat/ChatLayout.js +17 -17
  46. package/dist/Chat/ChatLayoutScrollButton.d.ts +1 -1
  47. package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
  48. package/dist/Chat/ChatLayoutScrollButton.js +12 -10
  49. package/dist/Chat/ChatMessage.js +12 -12
  50. package/dist/Chat/ChatMessageBubble.js +7 -7
  51. package/dist/Chat/ChatMessageList.js +14 -14
  52. package/dist/Chat/ChatMessageMetadata.d.ts +1 -1
  53. package/dist/Chat/ChatMessageMetadata.d.ts.map +1 -1
  54. package/dist/Chat/ChatMessageMetadata.js +14 -12
  55. package/dist/Chat/ChatPastedTextToken.js +13 -13
  56. package/dist/Chat/ChatSendButton.js +3 -3
  57. package/dist/Chat/ChatSystemMessage.d.ts +1 -1
  58. package/dist/Chat/ChatSystemMessage.d.ts.map +1 -1
  59. package/dist/Chat/ChatSystemMessage.js +17 -17
  60. package/dist/Chat/ChatTokenizedText.d.ts +1 -1
  61. package/dist/Chat/ChatTokenizedText.d.ts.map +1 -1
  62. package/dist/Chat/ChatTokenizedText.js +24 -15
  63. package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
  64. package/dist/Chat/ChatToolCalls.js +81 -74
  65. package/dist/Chat/index.d.ts +1 -1
  66. package/dist/Chat/index.d.ts.map +1 -1
  67. package/dist/Chat/useTriggerMenu.js +15 -15
  68. package/dist/CheckboxInput/CheckboxInput.d.ts +6 -1
  69. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  70. package/dist/CheckboxInput/CheckboxInput.js +32 -24
  71. package/dist/CheckboxList/CheckboxList.js +9 -9
  72. package/dist/CheckboxList/CheckboxListItem.d.ts +1 -1
  73. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  74. package/dist/CheckboxList/CheckboxListItem.js +8 -6
  75. package/dist/Citation/Citation.js +10 -10
  76. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  77. package/dist/ClickableCard/ClickableCard.js +32 -9
  78. package/dist/Code/Code.d.ts +15 -1
  79. package/dist/Code/Code.d.ts.map +1 -1
  80. package/dist/Code/Code.js +35 -5
  81. package/dist/Code/index.d.ts +1 -1
  82. package/dist/Code/index.d.ts.map +1 -1
  83. package/dist/CodeBlock/CodeBlock.d.ts +10 -1
  84. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  85. package/dist/CodeBlock/CodeBlock.js +88 -52
  86. package/dist/CodeBlock/index.d.ts +1 -1
  87. package/dist/CodeBlock/index.d.ts.map +1 -1
  88. package/dist/Collapsible/Collapsible.d.ts +9 -3
  89. package/dist/Collapsible/Collapsible.d.ts.map +1 -1
  90. package/dist/Collapsible/Collapsible.js +110 -22
  91. package/dist/Collapsible/CollapsibleGroup.d.ts +39 -7
  92. package/dist/Collapsible/CollapsibleGroup.d.ts.map +1 -1
  93. package/dist/Collapsible/CollapsibleGroup.js +73 -12
  94. package/dist/Collapsible/CollapsibleGroupContext.d.ts +31 -0
  95. package/dist/Collapsible/CollapsibleGroupContext.d.ts.map +1 -1
  96. package/dist/Collapsible/CollapsibleGroupContext.js +33 -3
  97. package/dist/Collapsible/index.d.ts +1 -0
  98. package/dist/Collapsible/index.d.ts.map +1 -1
  99. package/dist/Collapsible/useCollapsible.d.ts +4 -1
  100. package/dist/Collapsible/useCollapsible.d.ts.map +1 -1
  101. package/dist/Collapsible/useCollapsible.js +20 -6
  102. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  103. package/dist/CommandPalette/CommandPalette.js +36 -34
  104. package/dist/CommandPalette/CommandPaletteEmpty.d.ts +1 -1
  105. package/dist/CommandPalette/CommandPaletteEmpty.d.ts.map +1 -1
  106. package/dist/CommandPalette/CommandPaletteEmpty.js +27 -7
  107. package/dist/CommandPalette/CommandPaletteFooter.js +16 -16
  108. package/dist/CommandPalette/CommandPaletteGroup.js +5 -5
  109. package/dist/CommandPalette/CommandPaletteInput.js +13 -13
  110. package/dist/CommandPalette/CommandPaletteItem.js +3 -3
  111. package/dist/CommandPalette/CommandPaletteList.js +3 -3
  112. package/dist/ContextMenu/ContextMenu.d.ts +9 -1
  113. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  114. package/dist/ContextMenu/ContextMenu.js +16 -11
  115. package/dist/DateInput/DateInput.js +18 -18
  116. package/dist/DateRangeInput/DateRangeInput.js +23 -23
  117. package/dist/DateTimeInput/DateTimeInput.d.ts +5 -7
  118. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  119. package/dist/DateTimeInput/DateTimeInput.js +30 -26
  120. package/dist/DateTimeInput/index.d.ts +1 -1
  121. package/dist/DateTimeInput/index.d.ts.map +1 -1
  122. package/dist/Dialog/Dialog.js +9 -9
  123. package/dist/Dialog/DialogHeader.js +16 -16
  124. package/dist/Dialog/useImperativeDialog.js +3 -3
  125. package/dist/Divider/Divider.d.ts +0 -22
  126. package/dist/Divider/Divider.d.ts.map +1 -1
  127. package/dist/Divider/Divider.js +7 -7
  128. package/dist/DropdownMenu/DropdownMenu.js +10 -10
  129. package/dist/DropdownMenu/DropdownMenuItem.d.ts +2 -17
  130. package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
  131. package/dist/DropdownMenu/DropdownMenuItem.js +3 -3
  132. package/dist/DropdownMenu/renderDropdownItems.js +10 -10
  133. package/dist/EmptyState/EmptyState.js +9 -9
  134. package/dist/Field/Field.js +17 -17
  135. package/dist/Field/FieldLabel.js +15 -15
  136. package/dist/Field/InputClearButton.js +5 -5
  137. package/dist/FieldStatus/FieldStatus.js +3 -3
  138. package/dist/FileInput/FileInput.js +29 -29
  139. package/dist/FormLayout/FormLayout.js +5 -5
  140. package/dist/Grid/Grid.d.ts +4 -3
  141. package/dist/Grid/Grid.d.ts.map +1 -1
  142. package/dist/Grid/Grid.js +29 -12
  143. package/dist/Grid/GridSpan.js +3 -3
  144. package/dist/HStack/HStack.js +3 -3
  145. package/dist/Heading/Heading.js +10 -10
  146. package/dist/HoverCard/HoverCard.js +9 -9
  147. package/dist/HoverCard/useHoverCard.js +3 -3
  148. package/dist/Icon/Icon.d.ts.map +1 -1
  149. package/dist/Icon/Icon.js +16 -12
  150. package/dist/Icon/defaultIcons.js +116 -116
  151. package/dist/IconButton/IconButton.js +3 -3
  152. package/dist/InputGroup/InputGroup.js +11 -11
  153. package/dist/InputGroup/InputGroupText.js +3 -3
  154. package/dist/Item/Item.js +18 -18
  155. package/dist/Kbd/Kbd.js +5 -5
  156. package/dist/Layer/LayerProvider.js +7 -7
  157. package/dist/Layer/useLayer.js +5 -5
  158. package/dist/Layout/Layout.js +21 -21
  159. package/dist/Layout/LayoutContent.js +3 -3
  160. package/dist/Layout/LayoutFooter.js +5 -5
  161. package/dist/Layout/LayoutHeader.js +5 -5
  162. package/dist/Layout/LayoutPanel.js +3 -3
  163. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  164. package/dist/Lightbox/Lightbox.js +55 -31
  165. package/dist/Lightbox/useLightbox.js +3 -3
  166. package/dist/Link/Link.js +15 -15
  167. package/dist/Link/LinkProvider.js +3 -3
  168. package/dist/Link/useLinkify.js +3 -3
  169. package/dist/List/List.js +11 -11
  170. package/dist/List/ListItem.js +11 -11
  171. package/dist/Markdown/Markdown.d.ts.map +1 -1
  172. package/dist/Markdown/Markdown.js +102 -102
  173. package/dist/Markdown/parser.d.ts +7 -0
  174. package/dist/Markdown/parser.d.ts.map +1 -1
  175. package/dist/Markdown/parser.js +300 -6
  176. package/dist/MetadataList/MetadataList.js +10 -10
  177. package/dist/MetadataList/MetadataListItem.js +15 -15
  178. package/dist/MobileNav/MobileNav.js +15 -15
  179. package/dist/MobileNav/MobileNavToggle.js +5 -5
  180. package/dist/MoreMenu/MoreMenu.js +3 -3
  181. package/dist/MultiSelector/MultiSelector.d.ts +7 -1
  182. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  183. package/dist/MultiSelector/MultiSelector.js +64 -55
  184. package/dist/NavIcon/NavIcon.js +3 -3
  185. package/dist/NavMenu/NavHeadingMenu.js +5 -5
  186. package/dist/NavMenu/NavHeadingMenuItem.js +8 -8
  187. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  188. package/dist/NumberInput/NumberInput.js +48 -32
  189. package/dist/Outline/Outline.js +15 -15
  190. package/dist/OverflowList/OverflowList.js +8 -8
  191. package/dist/Overlay/Overlay.js +3 -3
  192. package/dist/Overlay/OverlayScrim.js +5 -5
  193. package/dist/Overlay/useOverlay.js +3 -3
  194. package/dist/Pagination/Pagination.d.ts +1 -1
  195. package/dist/Pagination/Pagination.d.ts.map +1 -1
  196. package/dist/Pagination/Pagination.js +125 -72
  197. package/dist/Popover/Popover.js +16 -16
  198. package/dist/Popover/usePopover.js +7 -7
  199. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  200. package/dist/PowerSearch/PowerSearch.js +110 -92
  201. package/dist/PowerSearch/PowerSearchEditPopover.js +84 -84
  202. package/dist/PowerSearch/PowerSearchFilterEditor.js +3 -3
  203. package/dist/PowerSearch/PowerSearchToken.js +5 -5
  204. package/dist/PowerSearch/PowerSearchValueEditor.js +54 -54
  205. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  206. package/dist/ProgressBar/ProgressBar.js +25 -18
  207. package/dist/RadioList/RadioList.d.ts +7 -1
  208. package/dist/RadioList/RadioList.d.ts.map +1 -1
  209. package/dist/RadioList/RadioList.js +10 -8
  210. package/dist/RadioList/RadioListItem.d.ts +1 -1
  211. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  212. package/dist/RadioList/RadioListItem.js +30 -22
  213. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  214. package/dist/Resizable/ResizeHandle.js +28 -10
  215. package/dist/Section/Section.js +5 -5
  216. package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
  217. package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  218. package/dist/SegmentedControl/SegmentedControl.js +32 -10
  219. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  220. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  221. package/dist/SegmentedControl/SegmentedControlItem.js +18 -12
  222. package/dist/SelectableCard/SelectableCard.js +5 -5
  223. package/dist/Selector/Selector.d.ts +6 -0
  224. package/dist/Selector/Selector.d.ts.map +1 -1
  225. package/dist/Selector/Selector.js +54 -45
  226. package/dist/Selector/SelectorOption.js +3 -3
  227. package/dist/SideNav/SideNav.d.ts.map +1 -1
  228. package/dist/SideNav/SideNav.js +38 -34
  229. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  230. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  231. package/dist/SideNav/SideNavCollapseButton.js +8 -6
  232. package/dist/SideNav/SideNavHeading.js +87 -87
  233. package/dist/SideNav/SideNavItem.js +42 -42
  234. package/dist/SideNav/SideNavSection.d.ts +1 -1
  235. package/dist/SideNav/SideNavSection.d.ts.map +1 -1
  236. package/dist/SideNav/SideNavSection.js +18 -16
  237. package/dist/Skeleton/Skeleton.js +3 -3
  238. package/dist/Slider/Slider.d.ts +6 -0
  239. package/dist/Slider/Slider.d.ts.map +1 -1
  240. package/dist/Slider/Slider.js +31 -22
  241. package/dist/Spinner/Spinner.d.ts.map +1 -1
  242. package/dist/Spinner/Spinner.js +10 -10
  243. package/dist/StatusDot/StatusDot.js +5 -5
  244. package/dist/Switch/Switch.d.ts +13 -4
  245. package/dist/Switch/Switch.d.ts.map +1 -1
  246. package/dist/Switch/Switch.js +41 -30
  247. package/dist/TabList/Tab.js +18 -18
  248. package/dist/TabList/TabList.js +5 -5
  249. package/dist/TabList/TabMenu.d.ts.map +1 -1
  250. package/dist/TabList/TabMenu.js +57 -30
  251. package/dist/TabList/tab.markers.stylex.d.ts +1 -1
  252. package/dist/Table/BaseTable.d.ts.map +1 -1
  253. package/dist/Table/BaseTable.js +51 -39
  254. package/dist/Table/Table.js +7 -7
  255. package/dist/Table/TableBody.d.ts +1 -1
  256. package/dist/Table/TableBody.d.ts.map +1 -1
  257. package/dist/Table/TableBody.js +9 -5
  258. package/dist/Table/TableCell.d.ts.map +1 -1
  259. package/dist/Table/TableCell.js +76 -7
  260. package/dist/Table/TableFooter.d.ts +1 -1
  261. package/dist/Table/TableFooter.d.ts.map +1 -1
  262. package/dist/Table/TableFooter.js +9 -5
  263. package/dist/Table/TableHeader.d.ts +1 -1
  264. package/dist/Table/TableHeader.d.ts.map +1 -1
  265. package/dist/Table/TableHeader.js +9 -5
  266. package/dist/Table/TableHeaderCell.js +3 -3
  267. package/dist/Table/TableRow.js +5 -5
  268. package/dist/Table/index.d.ts +2 -0
  269. package/dist/Table/index.d.ts.map +1 -1
  270. package/dist/Table/index.js +1 -0
  271. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  272. package/dist/Table/plugins/columnResize/useTableColumnResize.js +14 -11
  273. package/dist/Table/plugins/filtering/useTableFiltering.js +71 -71
  274. package/dist/Table/plugins/pagination/paginateData.d.ts.map +1 -1
  275. package/dist/Table/plugins/pagination/paginateData.js +5 -1
  276. package/dist/Table/plugins/pagination/useTablePagination.js +7 -7
  277. package/dist/Table/plugins/rowExpansion/index.d.ts +3 -0
  278. package/dist/Table/plugins/rowExpansion/index.d.ts.map +1 -0
  279. package/dist/Table/plugins/rowExpansion/index.js +3 -0
  280. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +90 -0
  281. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -0
  282. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +398 -0
  283. package/dist/Table/plugins/selection/useTableSelection.js +18 -18
  284. package/dist/Table/plugins/selection/useTableSelectionState.d.ts.map +1 -1
  285. package/dist/Table/plugins/selection/useTableSelectionState.js +11 -1
  286. package/dist/Table/plugins/sortable/useTableSortable.js +17 -17
  287. package/dist/Table/plugins/sortable/useTableSortableState.d.ts.map +1 -1
  288. package/dist/Table/plugins/sortable/useTableSortableState.js +8 -4
  289. package/dist/Table/tableContextMenu.d.ts +5 -1
  290. package/dist/Table/tableContextMenu.d.ts.map +1 -1
  291. package/dist/Table/tableContextMenu.js +19 -12
  292. package/dist/Text/Text.d.ts +1 -1
  293. package/dist/Text/Text.d.ts.map +1 -1
  294. package/dist/Text/Text.js +14 -13
  295. package/dist/Text/text.stylex.d.ts +35 -0
  296. package/dist/Text/text.stylex.d.ts.map +1 -1
  297. package/dist/Text/text.stylex.js +52 -1
  298. package/dist/TextArea/TextArea.js +14 -14
  299. package/dist/TextInput/TextInput.js +15 -15
  300. package/dist/Thumbnail/Thumbnail.d.ts +3 -2
  301. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  302. package/dist/Thumbnail/Thumbnail.js +30 -29
  303. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  304. package/dist/TimeInput/TimeInput.js +26 -21
  305. package/dist/Timestamp/Timestamp.d.ts +1 -1
  306. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  307. package/dist/Timestamp/Timestamp.js +37 -26
  308. package/dist/Toast/Toast.d.ts.map +1 -1
  309. package/dist/Toast/Toast.js +25 -17
  310. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  311. package/dist/Toast/ToastViewport.js +23 -11
  312. package/dist/Toast/useToast.js +4 -4
  313. package/dist/ToggleButton/ToggleButton.js +12 -12
  314. package/dist/ToggleButton/ToggleButtonGroup.js +5 -5
  315. package/dist/Token/Token.js +21 -21
  316. package/dist/Tokenizer/Tokenizer.d.ts +6 -1
  317. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  318. package/dist/Tokenizer/Tokenizer.js +38 -29
  319. package/dist/Toolbar/Toolbar.js +18 -18
  320. package/dist/Tooltip/Tooltip.js +11 -11
  321. package/dist/Tooltip/useTooltip.js +3 -3
  322. package/dist/TopNav/TopNav.js +32 -32
  323. package/dist/TopNav/TopNavHeading.js +67 -67
  324. package/dist/TopNav/TopNavItem.js +5 -5
  325. package/dist/TopNav/TopNavMegaMenu.js +30 -30
  326. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
  327. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
  328. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +25 -14
  329. package/dist/TopNav/TopNavMegaMenuItem.js +16 -16
  330. package/dist/TopNav/TopNavMenu.js +32 -32
  331. package/dist/TreeList/TreeList.js +8 -8
  332. package/dist/TreeList/TreeListBranches.js +11 -11
  333. package/dist/TreeList/TreeListItem.js +30 -30
  334. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  335. package/dist/Typeahead/BaseTypeahead.js +23 -20
  336. package/dist/Typeahead/Typeahead.js +12 -12
  337. package/dist/Typeahead/TypeaheadItem.js +10 -10
  338. package/dist/VStack/VStack.js +3 -3
  339. package/dist/astryx.css +23 -0
  340. package/dist/astryx.umd.js +60 -58
  341. package/dist/astryx.umd.js.map +4 -4
  342. package/dist/docs-types.d.ts +13 -1
  343. package/dist/docs-types.d.ts.map +1 -1
  344. package/dist/hooks/focusableSelector.d.ts +1 -1
  345. package/dist/hooks/focusableSelector.d.ts.map +1 -1
  346. package/dist/hooks/focusableSelector.js +1 -1
  347. package/dist/hooks/index.d.ts +2 -0
  348. package/dist/hooks/index.d.ts.map +1 -1
  349. package/dist/hooks/index.js +1 -0
  350. package/dist/hooks/useFocusTrap.d.ts +3 -0
  351. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  352. package/dist/hooks/useFocusTrap.js +38 -1
  353. package/dist/hooks/useHotkeys.d.ts +51 -0
  354. package/dist/hooks/useHotkeys.d.ts.map +1 -0
  355. package/dist/hooks/useHotkeys.js +160 -0
  356. package/dist/hooks/useInteractiveRole.d.ts +6 -2
  357. package/dist/hooks/useInteractiveRole.d.ts.map +1 -1
  358. package/dist/hooks/useInteractiveRole.js +6 -2
  359. package/dist/hooks/useKeyboardHint.js +9 -9
  360. package/dist/hooks/useStreamingText.d.ts +3 -1
  361. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  362. package/dist/hooks/useStreamingText.js +14 -5
  363. package/dist/theme/MediaTheme.js +3 -3
  364. package/dist/theme/Theme.js +7 -7
  365. package/dist/theme/defineTheme.d.ts +1 -1
  366. package/dist/theme/defineTheme.d.ts.map +1 -1
  367. package/dist/theme/expandColorScale.d.ts.map +1 -1
  368. package/dist/theme/expandColorScale.js +10 -3
  369. package/dist/theme/hct.d.ts +0 -15
  370. package/dist/theme/hct.d.ts.map +1 -1
  371. package/dist/theme/hct.js +9 -9
  372. package/dist/theme/syntax/SyntaxTheme.js +5 -5
  373. package/dist/theme/tokens.d.ts +10 -2
  374. package/dist/theme/tokens.d.ts.map +1 -1
  375. package/dist/theme/tokens.js +220 -4
  376. package/dist/utils/color.d.ts +42 -0
  377. package/dist/utils/color.d.ts.map +1 -0
  378. package/dist/utils/color.js +150 -0
  379. package/dist/utils/composeEventHandlers.d.ts +30 -0
  380. package/dist/utils/composeEventHandlers.d.ts.map +1 -0
  381. package/dist/utils/composeEventHandlers.js +40 -0
  382. package/dist/utils/index.d.ts +3 -0
  383. package/dist/utils/index.d.ts.map +1 -1
  384. package/dist/utils/index.js +3 -1
  385. package/dist/utils/timeParser.d.ts.map +1 -1
  386. package/dist/utils/timeParser.js +8 -5
  387. package/package.json +3 -3
  388. package/src/AlertDialog/AlertDialog.tsx +2 -0
  389. package/src/AppShell/AppShell.tsx +2 -0
  390. package/src/AspectRatio/AspectRatio.doc.mjs +1 -1
  391. package/src/Avatar/Avatar.doc.mjs +13 -2
  392. package/src/Avatar/Avatar.test.tsx +32 -1
  393. package/src/Avatar/Avatar.tsx +12 -20
  394. package/src/Banner/Banner.doc.mjs +8 -0
  395. package/src/Banner/Banner.test.tsx +38 -0
  396. package/src/Banner/Banner.tsx +8 -1
  397. package/src/Button/Button.tsx +39 -6
  398. package/src/ButtonGroup/ButtonGroup.doc.mjs +1 -1
  399. package/src/Calendar/Calendar.doc.mjs +1 -1
  400. package/src/Calendar/Calendar.test.tsx +201 -17
  401. package/src/Calendar/Calendar.tsx +79 -26
  402. package/src/Calendar/dayCellUtils.test.ts +306 -1
  403. package/src/Calendar/dayCellUtils.ts +206 -13
  404. package/src/Calendar/styles.ts +12 -2
  405. package/src/Card/Card.doc.mjs +1 -1
  406. package/src/Card/Card.tsx +16 -6
  407. package/src/Carousel/Carousel.doc.mjs +12 -12
  408. package/src/Carousel/Carousel.test.tsx +13 -0
  409. package/src/Carousel/Carousel.tsx +1 -0
  410. package/src/Chat/Chat.doc.mjs +1 -1
  411. package/src/Chat/ChatComposerInput.test.tsx +24 -0
  412. package/src/Chat/ChatComposerInput.tsx +17 -1
  413. package/src/Chat/ChatDictationButton.test.tsx +43 -0
  414. package/src/Chat/ChatDictationButton.tsx +4 -4
  415. package/src/Chat/ChatLayoutScrollButton.test.tsx +33 -0
  416. package/src/Chat/ChatLayoutScrollButton.tsx +3 -1
  417. package/src/Chat/ChatMessageMetadata.test.tsx +32 -0
  418. package/src/Chat/ChatMessageMetadata.tsx +4 -6
  419. package/src/Chat/ChatSystemMessage.test.tsx +26 -11
  420. package/src/Chat/ChatSystemMessage.tsx +7 -7
  421. package/src/Chat/ChatTokenizedText.test.tsx +29 -16
  422. package/src/Chat/ChatTokenizedText.tsx +15 -8
  423. package/src/Chat/ChatToolCalls.test.tsx +55 -0
  424. package/src/Chat/ChatToolCalls.tsx +10 -12
  425. package/src/Chat/index.ts +1 -4
  426. package/src/Chat/useChatNewMessages.test.tsx +4 -4
  427. package/src/CheckboxInput/CheckboxInput.doc.mjs +12 -4
  428. package/src/CheckboxInput/CheckboxInput.test.tsx +103 -0
  429. package/src/CheckboxInput/CheckboxInput.tsx +13 -0
  430. package/src/CheckboxList/CheckboxList.doc.mjs +1 -1
  431. package/src/CheckboxList/CheckboxList.test.tsx +19 -0
  432. package/src/CheckboxList/CheckboxListItem.tsx +11 -2
  433. package/src/Citation/Citation.doc.mjs +5 -0
  434. package/src/ClickableCard/ClickableCard.tsx +45 -2
  435. package/src/Code/Code.test.tsx +54 -0
  436. package/src/Code/Code.tsx +48 -4
  437. package/src/Code/index.ts +1 -1
  438. package/src/CodeBlock/CodeBlock.doc.mjs +7 -2
  439. package/src/CodeBlock/CodeBlock.test.tsx +122 -3
  440. package/src/CodeBlock/CodeBlock.tsx +62 -4
  441. package/src/CodeBlock/index.ts +1 -1
  442. package/src/Collapsible/Collapsible.doc.mjs +8 -4
  443. package/src/Collapsible/Collapsible.test.tsx +405 -0
  444. package/src/Collapsible/Collapsible.tsx +86 -10
  445. package/src/Collapsible/CollapsibleGroup.doc.mjs +27 -3
  446. package/src/Collapsible/CollapsibleGroup.test.tsx +318 -0
  447. package/src/Collapsible/CollapsibleGroup.tsx +107 -9
  448. package/src/Collapsible/CollapsibleGroupContext.tsx +42 -2
  449. package/src/Collapsible/index.ts +4 -0
  450. package/src/Collapsible/useCollapsible.ts +20 -6
  451. package/src/CommandPalette/CommandPalette.tsx +5 -3
  452. package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +5 -0
  453. package/src/CommandPalette/CommandPaletteEmpty.tsx +15 -1
  454. package/src/CommandPalette/CommandPaletteGroup.doc.mjs +10 -0
  455. package/src/CommandPalette/CommandPaletteInput.doc.mjs +6 -0
  456. package/src/CommandPalette/CommandPaletteItem.doc.mjs +6 -0
  457. package/src/CommandPalette/CommandPaletteList.doc.mjs +9 -0
  458. package/src/ContextMenu/ContextMenu.doc.mjs +15 -0
  459. package/src/ContextMenu/ContextMenu.test.tsx +15 -0
  460. package/src/ContextMenu/ContextMenu.tsx +19 -1
  461. package/src/ContextMenu/ContextMenuItem.doc.mjs +6 -0
  462. package/src/DateInput/DateInput.doc.mjs +6 -1
  463. package/src/DateInput/DateInput.test.tsx +11 -20
  464. package/src/DateRangeInput/DateRangeInput.doc.mjs +1 -1
  465. package/src/DateRangeInput/DateRangeInput.test.tsx +31 -44
  466. package/src/DateRangeInput/DateRangeInput.tsx +2 -2
  467. package/src/DateTimeInput/DateTimeInput.doc.mjs +4 -3
  468. package/src/DateTimeInput/DateTimeInput.test.tsx +118 -16
  469. package/src/DateTimeInput/DateTimeInput.tsx +9 -8
  470. package/src/DateTimeInput/index.ts +1 -0
  471. package/src/Dialog/DialogHeader.doc.mjs +45 -0
  472. package/src/Divider/Divider.tsx +1 -23
  473. package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -1
  474. package/src/DropdownMenu/DropdownMenu.test.tsx +5 -3
  475. package/src/DropdownMenu/DropdownMenuItem.tsx +5 -17
  476. package/src/EmptyState/EmptyState.doc.mjs +1 -1
  477. package/src/Field/Field.doc.mjs +1 -1
  478. package/src/Field/FieldLabel.test.tsx +2 -2
  479. package/src/FieldStatus/FieldStatus.test.tsx +282 -0
  480. package/src/FileInput/FileInput.doc.mjs +1 -1
  481. package/src/FormLayout/__snapshots__/FormLayout.test.tsx.snap +0 -3
  482. package/src/Grid/Grid.doc.mjs +3 -3
  483. package/src/Grid/Grid.test.tsx +43 -18
  484. package/src/Grid/Grid.tsx +26 -9
  485. package/src/Icon/Icon.test.tsx +41 -29
  486. package/src/Icon/Icon.tsx +6 -2
  487. package/src/InputGroup/InputGroup.tsx +2 -2
  488. package/src/InteractiveRoleContext/InteractiveRoleContext.test.tsx +185 -0
  489. package/src/Item/Item.tsx +1 -1
  490. package/src/Layout/Layout.test.tsx +285 -0
  491. package/src/Layout/LayoutContent.doc.mjs +12 -0
  492. package/src/Layout/LayoutPanel.doc.mjs +40 -0
  493. package/src/Layout/LayoutSlots.test.tsx +364 -0
  494. package/src/Layout/__tests__/edgeCompensation.test.tsx +72 -0
  495. package/src/Lightbox/Lightbox.doc.mjs +5 -0
  496. package/src/Lightbox/Lightbox.test.tsx +123 -2
  497. package/src/Lightbox/Lightbox.tsx +29 -1
  498. package/src/Markdown/Markdown.test.tsx +23 -0
  499. package/src/Markdown/Markdown.tsx +9 -7
  500. package/src/Markdown/incremental.test.ts +36 -0
  501. package/src/Markdown/parser.perf.test.ts +34 -12
  502. package/src/Markdown/parser.test.ts +210 -0
  503. package/src/Markdown/parser.ts +301 -6
  504. package/src/MobileNav/MobileNav.doc.mjs +20 -0
  505. package/src/MultiSelector/MultiSelector.doc.mjs +14 -1
  506. package/src/MultiSelector/MultiSelector.test.tsx +33 -0
  507. package/src/MultiSelector/MultiSelector.tsx +20 -0
  508. package/src/NavMenu/NavMenu.doc.mjs +15 -0
  509. package/src/NumberInput/NumberInput.test.tsx +48 -3
  510. package/src/NumberInput/NumberInput.tsx +32 -15
  511. package/src/Outline/parseOutlineFromMarkdown.test.ts +80 -0
  512. package/src/OverflowList/OverflowList.test.tsx +416 -0
  513. package/src/Overlay/Overlay.doc.mjs +6 -0
  514. package/src/Overlay/Overlay.test.tsx +356 -0
  515. package/src/Pagination/Pagination.test.tsx +162 -0
  516. package/src/Pagination/Pagination.tsx +80 -26
  517. package/src/Popover/Popover.test.tsx +65 -0
  518. package/src/PowerSearch/PowerSearch.doc.mjs +4 -4
  519. package/src/PowerSearch/PowerSearch.test.tsx +109 -1
  520. package/src/PowerSearch/PowerSearch.tsx +37 -16
  521. package/src/ProgressBar/ProgressBar.test.tsx +30 -0
  522. package/src/ProgressBar/ProgressBar.tsx +12 -5
  523. package/src/RadioList/RadioList.doc.mjs +7 -1
  524. package/src/RadioList/RadioList.test.tsx +65 -0
  525. package/src/RadioList/RadioList.tsx +10 -1
  526. package/src/RadioList/RadioListItem.tsx +13 -4
  527. package/src/Resizable/ResizeHandle.test.tsx +218 -0
  528. package/src/Resizable/ResizeHandle.tsx +22 -4
  529. package/src/Section/Section.test.tsx +4 -10
  530. package/src/SegmentedControl/SegmentedControl.doc.mjs +2 -2
  531. package/src/SegmentedControl/SegmentedControl.test.tsx +192 -0
  532. package/src/SegmentedControl/SegmentedControl.tsx +27 -5
  533. package/src/SegmentedControl/SegmentedControlItem.tsx +9 -4
  534. package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
  535. package/src/Selector/Selector.doc.mjs +12 -1
  536. package/src/Selector/Selector.test.tsx +30 -0
  537. package/src/Selector/Selector.tsx +18 -0
  538. package/src/SideNav/SideNav.doc.mjs +7 -1
  539. package/src/SideNav/SideNav.test.tsx +66 -0
  540. package/src/SideNav/SideNav.tsx +6 -2
  541. package/src/SideNav/SideNavCollapseButton.tsx +4 -3
  542. package/src/SideNav/SideNavSection.tsx +6 -4
  543. package/src/SizeContext/SizeContext.test.tsx +226 -0
  544. package/src/Slider/Slider.doc.mjs +14 -2
  545. package/src/Slider/Slider.test.tsx +30 -0
  546. package/src/Slider/Slider.tsx +20 -0
  547. package/src/Spinner/Spinner.tsx +1 -0
  548. package/src/Switch/Switch.doc.mjs +21 -9
  549. package/src/Switch/Switch.test.tsx +137 -0
  550. package/src/Switch/Switch.tsx +32 -7
  551. package/src/TabList/TabList.doc.mjs +3 -3
  552. package/src/TabList/TabList.test.tsx +185 -1
  553. package/src/TabList/TabMenu.tsx +45 -9
  554. package/src/Table/BaseTable.tsx +16 -3
  555. package/src/Table/Table.test.tsx +87 -0
  556. package/src/Table/TableBody.tsx +15 -2
  557. package/src/Table/TableCell.tsx +87 -8
  558. package/src/Table/TableFooter.tsx +15 -2
  559. package/src/Table/TableHeader.tsx +15 -2
  560. package/src/Table/index.ts +5 -0
  561. package/src/Table/plugins/columnResize/useTableColumnResize.test.tsx +13 -0
  562. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +3 -1
  563. package/src/Table/plugins/pagination/paginateData.ts +5 -1
  564. package/src/Table/plugins/pagination/useTablePagination.test.tsx +13 -0
  565. package/src/Table/plugins/rowExpansion/index.ts +7 -0
  566. package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +155 -0
  567. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +590 -0
  568. package/src/Table/plugins/selection/useTableSelectionState.test.tsx +23 -0
  569. package/src/Table/plugins/selection/useTableSelectionState.tsx +11 -6
  570. package/src/Table/plugins/sortable/useTableSortableState.test.tsx +35 -1
  571. package/src/Table/plugins/sortable/useTableSortableState.tsx +8 -4
  572. package/src/Table/tableContextMenu.test.tsx +27 -3
  573. package/src/Table/tableContextMenu.tsx +20 -2
  574. package/src/Table/useTablePagination.doc.mjs +4 -1
  575. package/src/Table/useTableRowExpansion.doc.mjs +80 -0
  576. package/src/Table/useTableSortable.doc.mjs +4 -1
  577. package/src/Text/Text.doc.mjs +2 -2
  578. package/src/Text/Text.test.tsx +11 -0
  579. package/src/Text/Text.tsx +4 -2
  580. package/src/Text/text.stylex.ts +41 -0
  581. package/src/TextArea/TextArea.doc.mjs +1 -1
  582. package/src/TextArea/TextArea.test.tsx +3 -3
  583. package/src/TextInput/TextInput.doc.mjs +1 -1
  584. package/src/TextInput/TextInput.test.tsx +3 -3
  585. package/src/Thumbnail/Thumbnail.test.tsx +36 -2
  586. package/src/Thumbnail/Thumbnail.tsx +4 -2
  587. package/src/TimeInput/TimeInput.doc.mjs +11 -6
  588. package/src/TimeInput/TimeInput.test.tsx +37 -0
  589. package/src/TimeInput/TimeInput.tsx +11 -1
  590. package/src/Timestamp/Timestamp.doc.mjs +1 -1
  591. package/src/Timestamp/Timestamp.test.tsx +52 -0
  592. package/src/Timestamp/Timestamp.tsx +30 -16
  593. package/src/Toast/Toast.tsx +11 -3
  594. package/src/Toast/ToastViewport.test.tsx +64 -0
  595. package/src/Toast/ToastViewport.tsx +12 -0
  596. package/src/ToggleButton/ToggleButton.doc.mjs +1 -0
  597. package/src/Tokenizer/Tokenizer.doc.mjs +16 -4
  598. package/src/Tokenizer/Tokenizer.test.tsx +33 -0
  599. package/src/Tokenizer/Tokenizer.tsx +19 -0
  600. package/src/Toolbar/Toolbar.test.tsx +1 -1
  601. package/src/TopNav/TopNav.doc.mjs +1 -1
  602. package/src/TopNav/TopNav.test.tsx +18 -0
  603. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +9 -2
  604. package/src/TreeList/TreeList.doc.mjs +2 -2
  605. package/src/Typeahead/BaseTypeahead.doc.mjs +19 -0
  606. package/src/Typeahead/BaseTypeahead.tsx +5 -2
  607. package/src/Typeahead/Typeahead.doc.mjs +7 -2
  608. package/src/Typeahead/Typeahead.test.tsx +45 -1
  609. package/src/__tests__/TestIcon.tsx +26 -0
  610. package/src/__tests__/fastRoleQueries.ts +66 -0
  611. package/src/docPropReferences.test.ts +178 -0
  612. package/src/docs-types.ts +14 -0
  613. package/src/hooks/focusableSelector.ts +1 -1
  614. package/src/hooks/index.ts +3 -0
  615. package/src/hooks/useFocusTrap.doc.mjs +4 -2
  616. package/src/hooks/useFocusTrap.test.tsx +149 -1
  617. package/src/hooks/useFocusTrap.ts +50 -1
  618. package/src/hooks/useHotkeys.doc.mjs +52 -0
  619. package/src/hooks/useHotkeys.test.ts +245 -0
  620. package/src/hooks/useHotkeys.ts +203 -0
  621. package/src/hooks/useInteractiveRole.ts +12 -4
  622. package/src/hooks/useKeyboardHint.doc.mjs +6 -6
  623. package/src/hooks/useStreamingText.test.ts +54 -19
  624. package/src/hooks/useStreamingText.ts +16 -5
  625. package/src/theme/SyntaxTheme.doc.mjs +4 -4
  626. package/src/theme/defineTheme.ts +4 -13
  627. package/src/theme/derivedVarRegistry.test.ts +2 -2
  628. package/src/theme/expandColorScale.test.ts +29 -0
  629. package/src/theme/expandColorScale.ts +11 -6
  630. package/src/theme/hct.ts +9 -17
  631. package/src/theme/tokens.test.ts +182 -9
  632. package/src/theme/tokens.ts +239 -4
  633. package/src/theme/useTheme.test.tsx +20 -0
  634. package/src/utils/color.test.ts +133 -0
  635. package/src/utils/color.ts +148 -0
  636. package/src/utils/composeEventHandlers.test.ts +71 -0
  637. package/src/utils/composeEventHandlers.ts +44 -0
  638. package/src/utils/index.ts +4 -0
  639. package/src/utils/mergeProps.test.ts +166 -0
  640. package/src/utils/sharedResizeObserver.test.ts +2 -2
  641. package/src/utils/timeParser.test.ts +13 -0
  642. package/src/utils/timeParser.ts +8 -5
@@ -0,0 +1,398 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file useTableRowExpansion.tsx
7
+ * @input React, StyleX, Icon, Table types
8
+ * @output Exports useTableRowExpansion hook + config/state types
9
+ * @position Row-expansion plugin; consumed by Table via plugins prop
10
+ *
11
+ * SYNC: When modified, update these files to stay in sync:
12
+ * - /packages/core/src/Table/index.ts (exports)
13
+ */
14
+ import { useCallback, useMemo, useRef } from 'react';
15
+ import * as stylex from '@stylexjs/stylex';
16
+ import "../../../theme/tokens.stylex.js";
17
+ import { spacingVars, colorVars, radiusVars } from "../../../theme/tokens.stylex.js";
18
+ import { Icon } from "../../../Icon/index.js";
19
+ import { resolveContextActions } from "../../tableContextMenu.js";
20
+
21
+ // =============================================================================
22
+ // Config
23
+ // =============================================================================
24
+
25
+ /**
26
+ * Configuration for useTableRowExpansion (inherited-columns mode).
27
+ *
28
+ * Child rows use the same columns as their parents, with indentation on the
29
+ * first content column. The consumer provides a **flat** data array (use
30
+ * {@link useTableRowExpansionState} to flatten a tree) and a `getDepth`
31
+ * function so the plugin knows each row's nesting level.
32
+ */
33
+
34
+ /**
35
+ * Configuration for {@link useTableRowExpansionState}.
36
+ *
37
+ * Mirrors the shape of {@link useTableSelectionState}: you own the
38
+ * `expandedKeys` set (via `useState`), and the hook derives everything the
39
+ * plugin needs — the flattened `data`, per-row depth, expand/collapse
40
+ * handlers, and the expand-all toggle state.
41
+ */
42
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
43
+ /**
44
+ * Manages row-expansion state and derives the config for
45
+ * {@link useTableRowExpansion}. This is the recommended entry point — it
46
+ * removes the boilerplate of flattening the tree, tracking depth, and
47
+ * computing the expand-all state.
48
+ *
49
+ * @example
50
+ * ```tsx
51
+ * const [expandedKeys, setExpandedKeys] = useState<Set<string>>(new Set());
52
+ * const {data, expansionConfig} = useTableRowExpansionState({
53
+ * baseData: tree,
54
+ * getChildren: item => item.children ?? [],
55
+ * getRowKey: item => item.id,
56
+ * expandedKeys,
57
+ * setExpandedKeys,
58
+ * });
59
+ * const expansion = useTableRowExpansion(expansionConfig);
60
+ * <Table data={data} columns={columns} idKey="id" plugins={{expansion}} />;
61
+ * ```
62
+ */
63
+ export function useTableRowExpansionState({
64
+ baseData,
65
+ getChildren,
66
+ getRowKey,
67
+ getIsItemExpandable,
68
+ expandedKeys,
69
+ setExpandedKeys
70
+ }) {
71
+ const isExpandable = useCallback(item => getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0, [getIsItemExpandable, getChildren]);
72
+ const depthMap = useMemo(() => {
73
+ const map = new Map();
74
+ function walk(items, depth) {
75
+ for (const item of items) {
76
+ const key = getRowKey(item);
77
+ map.set(key, depth);
78
+ if (expandedKeys.has(key)) {
79
+ walk(getChildren(item), depth + 1);
80
+ }
81
+ }
82
+ }
83
+ walk(baseData, 0);
84
+ return map;
85
+ }, [baseData, getChildren, getRowKey, expandedKeys]);
86
+ const data = useMemo(() => {
87
+ const result = [];
88
+ function walk(items) {
89
+ for (const item of items) {
90
+ result.push(item);
91
+ const key = getRowKey(item);
92
+ if (expandedKeys.has(key)) {
93
+ walk(getChildren(item));
94
+ }
95
+ }
96
+ }
97
+ walk(baseData);
98
+ return result;
99
+ }, [baseData, getChildren, getRowKey, expandedKeys]);
100
+
101
+ // Every expandable key across the whole tree (drives expand-all).
102
+ const allExpandableKeys = useMemo(() => {
103
+ const keys = [];
104
+ function walk(items) {
105
+ for (const item of items) {
106
+ if (isExpandable(item)) {
107
+ keys.push(getRowKey(item));
108
+ walk(getChildren(item));
109
+ }
110
+ }
111
+ }
112
+ walk(baseData);
113
+ return keys;
114
+ }, [baseData, getChildren, getRowKey, isExpandable]);
115
+ const getDepth = useCallback(item => depthMap.get(getRowKey(item)) ?? 0, [depthMap, getRowKey]);
116
+ const onToggle = useCallback(key => {
117
+ setExpandedKeys(prev => {
118
+ const next = new Set(prev);
119
+ if (next.has(key)) {
120
+ next.delete(key);
121
+ } else {
122
+ next.add(key);
123
+ }
124
+ return next;
125
+ });
126
+ }, [setExpandedKeys]);
127
+ const isAllExpanded = useMemo(() => {
128
+ if (allExpandableKeys.length === 0) {
129
+ return false;
130
+ }
131
+ const expandedCount = allExpandableKeys.filter(k => expandedKeys.has(k)).length;
132
+ if (expandedCount === 0) {
133
+ return false;
134
+ }
135
+ if (expandedCount === allExpandableKeys.length) {
136
+ return true;
137
+ }
138
+ return 'indeterminate';
139
+ }, [allExpandableKeys, expandedKeys]);
140
+ const onToggleExpandAll = useCallback(expand => {
141
+ setExpandedKeys(expand ? new Set(allExpandableKeys) : new Set());
142
+ }, [setExpandedKeys, allExpandableKeys]);
143
+ const expansionConfig = useMemo(() => ({
144
+ expandedKeys,
145
+ onToggle,
146
+ getRowKey,
147
+ getChildren,
148
+ getDepth,
149
+ getIsItemExpandable,
150
+ isAllExpanded,
151
+ onToggleExpandAll
152
+ }), [expandedKeys, onToggle, getRowKey, getChildren, getDepth, getIsItemExpandable, isAllExpanded, onToggleExpandAll]);
153
+ return {
154
+ data,
155
+ expansionConfig
156
+ };
157
+ }
158
+
159
+ // =============================================================================
160
+ // Styles
161
+ // =============================================================================
162
+
163
+ const EXPANSION_COLUMN_WIDTH = {
164
+ type: 'pixel',
165
+ value: 40
166
+ };
167
+
168
+ /** Indentation applied per depth level, in pixels. */
169
+ const INDENT_PER_DEPTH = 24;
170
+ const _temp = {
171
+ kZCmMZ: "xnvo3vl",
172
+ "$$css": true
173
+ };
174
+ const expansionStyles = {
175
+ indentedCell: {
176
+ k1xSpc: "x78zum5",
177
+ kGNEyG: "x6s0dn4",
178
+ kOIVth: "xzye2dw",
179
+ $$css: true
180
+ },
181
+ indent: px => [_temp, {
182
+ "--x-paddingInlineStart": (val => typeof val === "number" ? val + "px" : val != null ? val : undefined)(`${px}px`)
183
+ }],
184
+ clickableRow: {
185
+ kkrTdU: "x1ypdohk",
186
+ $$css: true
187
+ }
188
+ };
189
+
190
+ // =============================================================================
191
+ // Chevron
192
+ // =============================================================================
193
+
194
+ function ExpansionChevron({
195
+ isExpanded,
196
+ onToggle,
197
+ ariaLabel
198
+ }) {
199
+ return /*#__PURE__*/_jsxDEV("button", {
200
+ type: "button",
201
+ ...{
202
+ className: "x3nfvp2 x6s0dn4 xl56j7k xvy4d1p xxk0z11 xx3sua9 x1ypdohk xv9yike xefglzl xx6bhzk x1717udv x2lah0s x1ilzqfv x1cqbx0l"
203
+ },
204
+ onClick: e => {
205
+ e.stopPropagation();
206
+ onToggle();
207
+ },
208
+ "aria-label": ariaLabel,
209
+ "aria-expanded": isExpanded,
210
+ children: /*#__PURE__*/_jsxDEV("span", {
211
+ ...{
212
+ 0: {
213
+ className: "x3nfvp2 x11xpdln xx6bhzk"
214
+ },
215
+ 1: {
216
+ className: "x3nfvp2 x11xpdln xx6bhzk x1iffjtl"
217
+ }
218
+ }[!!isExpanded << 0],
219
+ children: /*#__PURE__*/_jsxDEV(Icon, {
220
+ icon: "chevronRight",
221
+ size: "xsm"
222
+ }, void 0, false)
223
+ }, void 0, false)
224
+ }, void 0, false);
225
+ }
226
+
227
+ // =============================================================================
228
+ // Hook
229
+ // =============================================================================
230
+
231
+ export function useTableRowExpansion(config) {
232
+ const {
233
+ expandedKeys,
234
+ onToggle,
235
+ getRowKey,
236
+ getChildren,
237
+ getDepth,
238
+ getIsItemExpandable,
239
+ hasRowClickExpansion = false,
240
+ isAllExpanded,
241
+ onToggleExpandAll
242
+ } = config;
243
+
244
+ // Track the first non-plugin column key for indentation.
245
+ const firstUserColumnKeyRef = useRef(null);
246
+ const expansionColumn = useMemo(() => ({
247
+ key: '__expansion',
248
+ header: '',
249
+ width: EXPANSION_COLUMN_WIDTH,
250
+ resizable: false,
251
+ renderCell: item => {
252
+ // Child rows (depth > 0) show their chevron inline in the first user
253
+ // column instead — don't double up here.
254
+ const depth = getDepth ? getDepth(item) : 0;
255
+ if (depth > 0) {
256
+ return null;
257
+ }
258
+ const key = getRowKey(item);
259
+ const expandable = getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0;
260
+ if (!expandable) {
261
+ return null;
262
+ }
263
+ const isExpanded = expandedKeys.has(key);
264
+ return /*#__PURE__*/_jsxDEV(ExpansionChevron, {
265
+ isExpanded: isExpanded,
266
+ onToggle: () => onToggle(key),
267
+ ariaLabel: isExpanded ? 'Collapse row' : 'Expand row'
268
+ }, void 0, false);
269
+ }
270
+ }), [expandedKeys, onToggle, getRowKey, getChildren, getIsItemExpandable, getDepth]);
271
+ return useMemo(() => ({
272
+ transformColumns(columns) {
273
+ // Track the first user column for indentation.
274
+ const firstUserCol = columns.find(c => !c.key.startsWith('__'));
275
+ firstUserColumnKeyRef.current = firstUserCol?.key ?? null;
276
+
277
+ // Wrap the first user column's renderCell to add depth indentation +
278
+ // an inline chevron for child rows. This is the inherited-columns
279
+ // pattern: child rows use the same columns but indent their first
280
+ // content cell.
281
+ const wrappedColumns = columns.map(col => {
282
+ if (col.key !== firstUserColumnKeyRef.current) {
283
+ return col;
284
+ }
285
+ const originalRenderCell = col.renderCell;
286
+ return {
287
+ ...col,
288
+ renderCell: item => {
289
+ const depth = getDepth ? getDepth(item) : 0;
290
+ const originalContent = originalRenderCell ? originalRenderCell(item) : String(item[col.key] ?? '');
291
+ if (depth === 0) {
292
+ return originalContent;
293
+ }
294
+ const indent = (depth - 1) * INDENT_PER_DEPTH;
295
+ const key = getRowKey(item);
296
+ const isExpanded = expandedKeys.has(key);
297
+ const expandable = getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0;
298
+ const chevron = expandable ? /*#__PURE__*/_jsxDEV(ExpansionChevron, {
299
+ isExpanded: isExpanded,
300
+ onToggle: () => onToggle(key),
301
+ ariaLabel: isExpanded ? 'Collapse row' : 'Expand row'
302
+ }, void 0, false) : /*#__PURE__*/_jsxDEV("span", {
303
+ ...{
304
+ className: "x1rg5ohu xvy4d1p xxk0z11 x2lah0s"
305
+ }
306
+ }, void 0, false);
307
+ return /*#__PURE__*/_jsxDEV("div", {
308
+ ...stylex.props(expansionStyles.indentedCell, indent > 0 && expansionStyles.indent(indent)),
309
+ children: [chevron, originalContent]
310
+ }, void 0, true);
311
+ }
312
+ };
313
+ });
314
+ return [expansionColumn, ...wrappedColumns];
315
+ },
316
+ transformHeaderCell(props, column) {
317
+ if (column.key !== '__expansion') {
318
+ return props;
319
+ }
320
+
321
+ // Show expand-all toggle when the consumer provides the state + callback.
322
+ if (isAllExpanded !== undefined && onToggleExpandAll) {
323
+ const allExpanded = isAllExpanded === true;
324
+ return {
325
+ ...props,
326
+ content: /*#__PURE__*/_jsxDEV("button", {
327
+ type: "button",
328
+ ...{
329
+ className: "x3nfvp2 x6s0dn4 xl56j7k xvy4d1p xxk0z11 xx3sua9 x1ypdohk xv9yike xefglzl xx6bhzk x1717udv x2lah0s x1ilzqfv x1cqbx0l"
330
+ },
331
+ onClick: () => onToggleExpandAll(!allExpanded),
332
+ "aria-label": allExpanded ? 'Collapse all rows' : 'Expand all rows',
333
+ children: /*#__PURE__*/_jsxDEV("span", {
334
+ ...{
335
+ 0: {
336
+ className: "x3nfvp2 x11xpdln xx6bhzk"
337
+ },
338
+ 1: {
339
+ className: "x3nfvp2 x11xpdln xx6bhzk x1iffjtl"
340
+ }
341
+ }[!!allExpanded << 0],
342
+ children: /*#__PURE__*/_jsxDEV(Icon, {
343
+ icon: "chevronRight",
344
+ size: "xsm"
345
+ }, void 0, false)
346
+ }, void 0, false)
347
+ }, void 0, false)
348
+ };
349
+ }
350
+ return {
351
+ ...props,
352
+ content: null
353
+ };
354
+ },
355
+ transformBodyCell(props, column, item) {
356
+ // Contribute "Expand/Collapse row" context-menu action on every cell
357
+ // so right-clicking anywhere in the row shows the option.
358
+ const expandable = getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0;
359
+ if (!expandable) {
360
+ return props;
361
+ }
362
+ const key = getRowKey(item);
363
+ const isExpanded = expandedKeys.has(key);
364
+ return {
365
+ ...props,
366
+ contextMenuActions: () => [...resolveContextActions(props.contextMenuActions), {
367
+ id: 'row-expansion-toggle',
368
+ group: 'row-expansion',
369
+ label: isExpanded ? 'Collapse row' : 'Expand row',
370
+ icon: /*#__PURE__*/_jsxDEV(Icon, {
371
+ icon: isExpanded ? 'chevronDown' : 'chevronRight',
372
+ size: "xsm",
373
+ "aria-hidden": true
374
+ }, void 0, false),
375
+ onSelect: () => onToggle(key)
376
+ }]
377
+ };
378
+ },
379
+ transformBodyRow(props, item) {
380
+ if (!hasRowClickExpansion) {
381
+ return props;
382
+ }
383
+ const expandable = getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0;
384
+ if (!expandable) {
385
+ return props;
386
+ }
387
+ const key = getRowKey(item);
388
+ return {
389
+ ...props,
390
+ htmlProps: {
391
+ ...props.htmlProps,
392
+ onClick: () => onToggle(key)
393
+ },
394
+ styles: [...props.styles, expansionStyles.clickableRow]
395
+ };
396
+ }
397
+ }), [expandedKeys, getRowKey, onToggle, getChildren, getDepth, getIsItemExpandable, hasRowClickExpansion, isAllExpanded, onToggleExpandAll, expansionColumn]);
398
+ }
@@ -50,7 +50,7 @@ import { pixel } from "../../columnUtils.js";
50
50
  * changes independently. Row styling is handled by per-row ref callbacks
51
51
  * that subscribe to this store — the store itself holds no DOM references.
52
52
  */
53
- import { jsx as _jsx } from "react/jsx-runtime";
53
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
54
54
  function createSelectionStore(configRef) {
55
55
  const listeners = new Set();
56
56
  return {
@@ -108,9 +108,9 @@ function SelectAllCheckbox() {
108
108
  if (!store) {
109
109
  return null;
110
110
  }
111
- return /*#__PURE__*/_jsx(SelectAllCheckboxInner, {
111
+ return /*#__PURE__*/_jsxDEV(SelectAllCheckboxInner, {
112
112
  store: store
113
- });
113
+ }, void 0, false);
114
114
  }
115
115
 
116
116
  /**
@@ -142,7 +142,7 @@ function SelectAllCheckboxInner({
142
142
  const state = useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);
143
143
  const allSelected = state === SELECT_ALL;
144
144
  const indeterminate = state === SELECT_INDETERMINATE;
145
- return /*#__PURE__*/_jsx(CheckboxInput, {
145
+ return /*#__PURE__*/_jsxDEV(CheckboxInput, {
146
146
  label: "Select all rows",
147
147
  isLabelHidden: true,
148
148
  value: allSelected ? true : indeterminate ? 'indeterminate' : false,
@@ -150,7 +150,7 @@ function SelectAllCheckboxInner({
150
150
  isAllSelected: !allSelected
151
151
  }),
152
152
  size: "sm"
153
- });
153
+ }, void 0, false);
154
154
  }
155
155
 
156
156
  /**
@@ -164,10 +164,10 @@ function SelectionCellContent({
164
164
  if (!store) {
165
165
  return null;
166
166
  }
167
- return /*#__PURE__*/_jsx(SelectionCellContentInner, {
167
+ return /*#__PURE__*/_jsxDEV(SelectionCellContentInner, {
168
168
  store: store,
169
169
  item: item
170
- });
170
+ }, void 0, false);
171
171
  }
172
172
  function SelectionCellContentInner({
173
173
  store,
@@ -180,7 +180,7 @@ function SelectionCellContentInner({
180
180
  if (!selectable) {
181
181
  return null;
182
182
  }
183
- return /*#__PURE__*/_jsx(CheckboxInput, {
183
+ return /*#__PURE__*/_jsxDEV(CheckboxInput, {
184
184
  label: "Select row",
185
185
  isLabelHidden: true,
186
186
  value: isSelected,
@@ -190,7 +190,7 @@ function SelectionCellContentInner({
190
190
  }),
191
191
  isDisabled: !enabled,
192
192
  size: "sm"
193
- });
193
+ }, void 0, false);
194
194
  }
195
195
 
196
196
  // =============================================================================
@@ -228,29 +228,29 @@ export function useTableSelection(config) {
228
228
  // component so each row's checkbox re-renders independently.
229
229
  const selectionColumn = useMemo(() => ({
230
230
  key: SELECTION_COLUMN_KEY,
231
- header: /*#__PURE__*/_jsx("div", {
231
+ header: /*#__PURE__*/_jsxDEV("div", {
232
232
  ...{
233
233
  className: "x78zum5 x6s0dn4 xl56j7k"
234
234
  },
235
- children: /*#__PURE__*/_jsx(SelectAllCheckbox, {})
236
- }),
235
+ children: /*#__PURE__*/_jsxDEV(SelectAllCheckbox, {}, void 0, false)
236
+ }, void 0, false),
237
237
  width: SELECTION_COLUMN_WIDTH,
238
238
  resizable: false,
239
- renderCell: item => /*#__PURE__*/_jsx("div", {
239
+ renderCell: item => /*#__PURE__*/_jsxDEV("div", {
240
240
  ...{
241
241
  className: "x78zum5 x6s0dn4 xl56j7k"
242
242
  },
243
- children: /*#__PURE__*/_jsx(SelectionCellContent, {
243
+ children: /*#__PURE__*/_jsxDEV(SelectionCellContent, {
244
244
  item: item
245
- })
246
- })
245
+ }, void 0, false)
246
+ }, void 0, false)
247
247
  }), []);
248
248
  return useMemo(() => ({
249
249
  transformTableContext(children) {
250
- return /*#__PURE__*/_jsx(SelectionStoreContext, {
250
+ return /*#__PURE__*/_jsxDEV(SelectionStoreContext, {
251
251
  value: store,
252
252
  children: children
253
- });
253
+ }, void 0, false);
254
254
  },
255
255
  transformColumns(columns) {
256
256
  return [selectionColumn, ...columns];
@@ -1 +1 @@
1
- {"version":3,"file":"useTableSelectionState.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/selection/useTableSelectionState.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAMjE,MAAM,WAAW,4BAA4B,CAC3C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEjC;;;;OAIG;IACH,IAAI,EAAE,CAAC,EAAE,CAAC;IACV;;;OAGG;IACH,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC;IAClD;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IAC3C;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IACxC;;;OAGG;IACH,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B;;OAEG;IACH,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,4BAA4B,CAC3C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEjC,iDAAiD;IACjD,eAAe,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;CAC7C;AAQD,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtE,MAAM,EAAE,4BAA4B,CAAC,CAAC,CAAC,GACtC,4BAA4B,CAAC,CAAC,CAAC,CA4HjC"}
1
+ {"version":3,"file":"useTableSelectionState.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/selection/useTableSelectionState.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAMjE,MAAM,WAAW,4BAA4B,CAC3C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEjC;;;;OAIG;IACH,IAAI,EAAE,CAAC,EAAE,CAAC;IACV;;;OAGG;IACH,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC;IAClD;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IAC3C;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IACxC;;;OAGG;IACH,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B;;OAEG;IACH,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,4BAA4B,CAC3C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEjC,iDAAiD;IACjD,eAAe,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;CAC7C;AAQD,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtE,MAAM,EAAE,4BAA4B,CAAC,CAAC,CAAC,GACtC,4BAA4B,CAAC,CAAC,CAAC,CAiIjC"}
@@ -60,7 +60,17 @@ export function useTableSelectionState(config) {
60
60
  // All IDs that *would* be selected if select-all is checked
61
61
  // (all actionable items + any frozen selected items)
62
62
  const allSelectableIDs = useMemo(() => new Set([...selectedKeys, ...selectableIDs]), [selectedKeys, selectableIDs]);
63
- const getAllSelected = useCallback(() => allSelectableIDs.size === selectedKeys.size && allSelectableIDs.size !== 0, [allSelectableIDs, selectedKeys]);
63
+ const getAllSelected = useCallback(() => {
64
+ // Require at least one actionable row: with zero visible selectable
65
+ // rows (e.g. a filter with no matches while a selection exists), the
66
+ // union-based size comparison would read any non-empty selection as
67
+ // "all selected" — a checked header checkbox over an empty table that
68
+ // deselect-all can't clear, since the invisible keys count as frozen.
69
+ if (selectableIDs.size === 0) {
70
+ return false;
71
+ }
72
+ return allSelectableIDs.size === selectedKeys.size;
73
+ }, [allSelectableIDs, selectableIDs, selectedKeys]);
64
74
 
65
75
  // Use refs to keep onSelectAll stable
66
76
  const frozenSelectedIDsRef = useRef(frozenSelectedIDs);
@@ -66,7 +66,7 @@ import { resolveContextActions } from "../../tableContextMenu.js";
66
66
  * <Table plugins={{ sort: sortPlugin }} columns={columns} data={data} />
67
67
  * ```
68
68
  */
69
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; // =============================================================================
69
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime"; // =============================================================================
70
70
  // Styles
71
71
  // =============================================================================
72
72
  // =============================================================================
@@ -177,16 +177,16 @@ function SortHeaderButton({
177
177
  }
178
178
  }
179
179
  };
180
- return /*#__PURE__*/_jsxs("button", {
180
+ return /*#__PURE__*/_jsxDEV("button", {
181
181
  type: "button",
182
182
  ...{
183
183
  className: "x78zum5 x6s0dn4 xzye2dw x1717udv x1ghz6dp x1ypdohk xln7xf2 x1heor9g xh8yej3 x5yr21d x16tdsg8 x1a2a7pz x17nn4n9 x1hl8ikr xx3sua9"
184
184
  },
185
185
  "aria-label": ariaLabel,
186
186
  onClick: handleClick,
187
- children: [/*#__PURE__*/_jsx("span", {
187
+ children: [/*#__PURE__*/_jsxDEV("span", {
188
188
  children: children
189
- }), /*#__PURE__*/_jsx("span", {
189
+ }, void 0, false), /*#__PURE__*/_jsxDEV("span", {
190
190
  ...{
191
191
  0: {
192
192
  className: "x3nfvp2 x3onkmb xof6bs x25t5g8"
@@ -195,19 +195,19 @@ function SortHeaderButton({
195
195
  className: "x3nfvp2"
196
196
  }
197
197
  }[!!(direction != null) << 0],
198
- children: /*#__PURE__*/_jsx(Icon, {
198
+ children: /*#__PURE__*/_jsxDEV(Icon, {
199
199
  icon: iconName,
200
200
  size: "xsm",
201
201
  color: direction != null ? 'accent' : 'secondary'
202
- })
203
- }), rank != null && /*#__PURE__*/_jsx("span", {
202
+ }, void 0, false)
203
+ }, void 0, false), rank != null && /*#__PURE__*/_jsxDEV("span", {
204
204
  ...{
205
205
  className: "x1k6wstc xo5v014 xqwr325"
206
206
  },
207
207
  "aria-hidden": "true",
208
208
  children: rank
209
- })]
210
- });
209
+ }, void 0, false)]
210
+ }, void 0, true);
211
211
  }
212
212
 
213
213
  // =============================================================================
@@ -258,11 +258,11 @@ export function useTableSortable(config) {
258
258
  id: 'sort-asc',
259
259
  group: 'sort',
260
260
  label: 'Sort ascending',
261
- icon: /*#__PURE__*/_jsx(Icon, {
261
+ icon: /*#__PURE__*/_jsxDEV(Icon, {
262
262
  icon: "arrowUp",
263
263
  size: "xsm",
264
264
  "aria-hidden": true
265
- }),
265
+ }, void 0, false),
266
266
  checked: dir === 'ascending',
267
267
  onSelect: () => c.onSortChange([{
268
268
  sortKey: sortKey,
@@ -272,11 +272,11 @@ export function useTableSortable(config) {
272
272
  id: 'sort-desc',
273
273
  group: 'sort',
274
274
  label: 'Sort descending',
275
- icon: /*#__PURE__*/_jsx(Icon, {
275
+ icon: /*#__PURE__*/_jsxDEV(Icon, {
276
276
  icon: "arrowDown",
277
277
  size: "xsm",
278
278
  "aria-hidden": true
279
- }),
279
+ }, void 0, false),
280
280
  checked: dir === 'descending',
281
281
  onSelect: () => c.onSortChange([{
282
282
  sortKey: sortKey,
@@ -288,11 +288,11 @@ export function useTableSortable(config) {
288
288
  id: 'sort-clear',
289
289
  group: 'sort-clear',
290
290
  label: 'Clear sort',
291
- icon: /*#__PURE__*/_jsx(Icon, {
291
+ icon: /*#__PURE__*/_jsxDEV(Icon, {
292
292
  icon: "close",
293
293
  size: "xsm",
294
294
  "aria-hidden": true
295
- }),
295
+ }, void 0, false),
296
296
  onSelect: () => c.onSortChange(c.sort.filter(e => e.sortKey !== sortKey))
297
297
  });
298
298
  }
@@ -310,11 +310,11 @@ export function useTableSortable(config) {
310
310
  'aria-sort': entry.direction
311
311
  } : {})
312
312
  },
313
- content: /*#__PURE__*/_jsx(SortHeaderButton, {
313
+ content: /*#__PURE__*/_jsxDEV(SortHeaderButton, {
314
314
  column: column,
315
315
  configRef: configRef,
316
316
  children: props.content
317
- }),
317
+ }, void 0, false),
318
318
  contextMenuActions: () => [...resolveContextActions(priorActions), ...getSortActions()]
319
319
  };
320
320
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useTableSortableState.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/sortable/useTableSortableState.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAM5B;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC;AAqB5D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,2BAA2B,CAC1C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,QAAQ,SAAS,MAAM,GAAG,MAAM;IAEhC;;;OAGG;IACH,IAAI,EAAE,CAAC,EAAE,CAAC;IAEV;;;;OAIG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEvC;;;OAGG;IACH,IAAI,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEhC;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;IAExD;;;;;;;;;;;;;;;;OAgBG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhE;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAMD,MAAM,WAAW,2BAA2B,CAC1C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,QAAQ,SAAS,MAAM,GAAG,MAAM;IAEhC,8FAA8F;IAC9F,UAAU,EAAE,CAAC,EAAE,CAAC;IAEhB,0BAA0B;IAC1B,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE/B,gDAAgD;IAChD,UAAU,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAE7C;;;OAGG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;CAC/B;AA0ED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CACnC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,QAAQ,SAAS,MAAM,GAAG,MAAM,EAEhC,MAAM,EAAE,2BAA2B,CAAC,CAAC,EAAE,QAAQ,CAAC,GAC/C,2BAA2B,CAAC,CAAC,EAAE,QAAQ,CAAC,CAsD1C"}
1
+ {"version":3,"file":"useTableSortableState.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/sortable/useTableSortableState.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAM5B;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC;AAqB5D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,2BAA2B,CAC1C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,QAAQ,SAAS,MAAM,GAAG,MAAM;IAEhC;;;OAGG;IACH,IAAI,EAAE,CAAC,EAAE,CAAC;IAEV;;;;OAIG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEvC;;;OAGG;IACH,IAAI,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEhC;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;IAExD;;;;;;;;;;;;;;;;OAgBG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhE;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAMD,MAAM,WAAW,2BAA2B,CAC1C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,QAAQ,SAAS,MAAM,GAAG,MAAM;IAEhC,8FAA8F;IAC9F,UAAU,EAAE,CAAC,EAAE,CAAC;IAEhB,0BAA0B;IAC1B,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE/B,gDAAgD;IAChD,UAAU,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAE7C;;;OAGG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;CAC/B;AA8ED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CACnC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,QAAQ,SAAS,MAAM,GAAG,MAAM,EAEhC,MAAM,EAAE,2BAA2B,CAAC,CAAC,EAAE,QAAQ,CAAC,GAC/C,2BAA2B,CAAC,CAAC,EAAE,QAAQ,CAAC,CAsD1C"}
@@ -72,14 +72,18 @@ function defaultCompare(a, b, sortKey) {
72
72
  const aVal = a[sortKey];
73
73
  const bVal = b[sortKey];
74
74
 
75
- // null/undefined sort to the end
76
- if (aVal == null && bVal == null) {
75
+ // null/undefined/NaN sort to the end. NaN must not reach the numeric fast
76
+ // path: a NaN comparator result reads as "equal" to Array.sort, which makes
77
+ // the comparator inconsistent and corrupts the order of the other rows.
78
+ const aMissing = aVal == null || typeof aVal === 'number' && Number.isNaN(aVal);
79
+ const bMissing = bVal == null || typeof bVal === 'number' && Number.isNaN(bVal);
80
+ if (aMissing && bMissing) {
77
81
  return 0;
78
82
  }
79
- if (aVal == null) {
83
+ if (aMissing) {
80
84
  return 1;
81
85
  }
82
- if (bVal == null) {
86
+ if (bMissing) {
83
87
  return -1;
84
88
  }
85
89