@astryxdesign/core 0.1.4 → 0.1.5-canary.76e6697

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 (635) hide show
  1. package/CHANGELOG.md +141 -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.d.ts +0 -2
  6. package/dist/AlertDialog/useImperativeAlertDialog.d.ts.map +1 -1
  7. package/dist/AlertDialog/useImperativeAlertDialog.js +3 -5
  8. package/dist/AppShell/AppShell.d.ts +1 -1
  9. package/dist/AppShell/AppShell.d.ts.map +1 -1
  10. package/dist/AppShell/AppShell.js +55 -53
  11. package/dist/AspectRatio/AspectRatio.d.ts +48 -10
  12. package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
  13. package/dist/AspectRatio/AspectRatio.js +33 -12
  14. package/dist/AspectRatio/index.d.ts +1 -1
  15. package/dist/AspectRatio/index.d.ts.map +1 -1
  16. package/dist/Avatar/Avatar.d.ts.map +1 -1
  17. package/dist/Avatar/Avatar.js +28 -26
  18. package/dist/Avatar/AvatarStatusDot.js +6 -6
  19. package/dist/AvatarGroup/AvatarGroup.js +6 -6
  20. package/dist/AvatarGroup/AvatarGroupOverflow.js +7 -7
  21. package/dist/Badge/Badge.js +3 -3
  22. package/dist/Banner/Banner.d.ts.map +1 -1
  23. package/dist/Banner/Banner.js +32 -25
  24. package/dist/Blockquote/Blockquote.js +7 -7
  25. package/dist/Breadcrumbs/BreadcrumbItem.js +17 -17
  26. package/dist/Breadcrumbs/Breadcrumbs.js +7 -7
  27. package/dist/Button/Button.js +19 -19
  28. package/dist/ButtonGroup/ButtonGroup.js +7 -7
  29. package/dist/Calendar/Calendar.d.ts.map +1 -1
  30. package/dist/Calendar/Calendar.js +68 -48
  31. package/dist/Calendar/dayCellUtils.d.ts.map +1 -1
  32. package/dist/Calendar/styles.d.ts +2 -2
  33. package/dist/Calendar/styles.d.ts.map +1 -1
  34. package/dist/Calendar/styles.js +2 -2
  35. package/dist/Card/Card.d.ts +4 -2
  36. package/dist/Card/Card.d.ts.map +1 -1
  37. package/dist/Card/Card.js +18 -10
  38. package/dist/Carousel/Carousel.d.ts.map +1 -1
  39. package/dist/Carousel/Carousel.js +24 -21
  40. package/dist/Center/Center.js +3 -3
  41. package/dist/Chat/ChatComposer.js +23 -23
  42. package/dist/Chat/ChatComposerDrawer.js +14 -14
  43. package/dist/Chat/ChatComposerInput.d.ts +1 -1
  44. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  45. package/dist/Chat/ChatComposerInput.js +27 -15
  46. package/dist/Chat/ChatDictationButton.d.ts +1 -1
  47. package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
  48. package/dist/Chat/ChatDictationButton.js +13 -11
  49. package/dist/Chat/ChatLayout.js +17 -17
  50. package/dist/Chat/ChatLayoutScrollButton.d.ts +1 -1
  51. package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
  52. package/dist/Chat/ChatLayoutScrollButton.js +12 -10
  53. package/dist/Chat/ChatMessage.js +12 -12
  54. package/dist/Chat/ChatMessageBubble.js +7 -7
  55. package/dist/Chat/ChatMessageList.js +14 -14
  56. package/dist/Chat/ChatMessageMetadata.d.ts +1 -1
  57. package/dist/Chat/ChatMessageMetadata.d.ts.map +1 -1
  58. package/dist/Chat/ChatMessageMetadata.js +14 -12
  59. package/dist/Chat/ChatPastedTextToken.js +13 -13
  60. package/dist/Chat/ChatSendButton.js +3 -3
  61. package/dist/Chat/ChatSystemMessage.d.ts +1 -1
  62. package/dist/Chat/ChatSystemMessage.d.ts.map +1 -1
  63. package/dist/Chat/ChatSystemMessage.js +17 -17
  64. package/dist/Chat/ChatTokenizedText.d.ts +1 -1
  65. package/dist/Chat/ChatTokenizedText.d.ts.map +1 -1
  66. package/dist/Chat/ChatTokenizedText.js +24 -15
  67. package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
  68. package/dist/Chat/ChatToolCalls.js +81 -74
  69. package/dist/Chat/index.d.ts +1 -1
  70. package/dist/Chat/index.d.ts.map +1 -1
  71. package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
  72. package/dist/Chat/useTriggerMenu.js +15 -15
  73. package/dist/CheckboxInput/CheckboxInput.d.ts +1 -1
  74. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  75. package/dist/CheckboxInput/CheckboxInput.js +25 -23
  76. package/dist/CheckboxList/CheckboxList.js +9 -9
  77. package/dist/CheckboxList/CheckboxListItem.d.ts +1 -1
  78. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  79. package/dist/CheckboxList/CheckboxListItem.js +8 -6
  80. package/dist/Citation/Citation.js +10 -10
  81. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  82. package/dist/ClickableCard/ClickableCard.js +32 -9
  83. package/dist/Code/Code.js +3 -3
  84. package/dist/CodeBlock/CodeBlock.d.ts +10 -1
  85. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  86. package/dist/CodeBlock/CodeBlock.js +88 -52
  87. package/dist/Collapsible/Collapsible.d.ts +9 -3
  88. package/dist/Collapsible/Collapsible.d.ts.map +1 -1
  89. package/dist/Collapsible/Collapsible.js +109 -22
  90. package/dist/Collapsible/CollapsibleGroup.d.ts +37 -7
  91. package/dist/Collapsible/CollapsibleGroup.d.ts.map +1 -1
  92. package/dist/Collapsible/CollapsibleGroup.js +64 -12
  93. package/dist/Collapsible/CollapsibleGroupContext.d.ts +24 -0
  94. package/dist/Collapsible/CollapsibleGroupContext.d.ts.map +1 -1
  95. package/dist/Collapsible/CollapsibleGroupContext.js +26 -3
  96. package/dist/Collapsible/index.d.ts +1 -0
  97. package/dist/Collapsible/index.d.ts.map +1 -1
  98. package/dist/Collapsible/useCollapsible.d.ts +4 -1
  99. package/dist/Collapsible/useCollapsible.d.ts.map +1 -1
  100. package/dist/Collapsible/useCollapsible.js +20 -6
  101. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  102. package/dist/CommandPalette/CommandPalette.js +36 -34
  103. package/dist/CommandPalette/CommandPaletteEmpty.js +3 -3
  104. package/dist/CommandPalette/CommandPaletteFooter.js +16 -16
  105. package/dist/CommandPalette/CommandPaletteGroup.js +5 -5
  106. package/dist/CommandPalette/CommandPaletteInput.js +13 -13
  107. package/dist/CommandPalette/CommandPaletteItem.js +3 -3
  108. package/dist/CommandPalette/CommandPaletteList.js +3 -3
  109. package/dist/ContextMenu/ContextMenu.d.ts +7 -2
  110. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  111. package/dist/ContextMenu/ContextMenu.js +76 -43
  112. package/dist/DateInput/DateInput.js +18 -18
  113. package/dist/DateRangeInput/DateRangeInput.js +21 -21
  114. package/dist/DateTimeInput/DateTimeInput.d.ts +5 -2
  115. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  116. package/dist/DateTimeInput/DateTimeInput.js +30 -26
  117. package/dist/DateTimeInput/index.d.ts +1 -1
  118. package/dist/DateTimeInput/index.d.ts.map +1 -1
  119. package/dist/Dialog/Dialog.js +9 -9
  120. package/dist/Dialog/DialogHeader.js +16 -16
  121. package/dist/Dialog/useImperativeDialog.js +3 -3
  122. package/dist/Divider/Divider.js +7 -7
  123. package/dist/DropdownMenu/DropdownMenu.js +10 -10
  124. package/dist/DropdownMenu/DropdownMenuItem.d.ts +2 -17
  125. package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
  126. package/dist/DropdownMenu/DropdownMenuItem.js +3 -3
  127. package/dist/DropdownMenu/renderDropdownItems.js +10 -10
  128. package/dist/EmptyState/EmptyState.js +9 -9
  129. package/dist/Field/Field.js +17 -17
  130. package/dist/Field/FieldLabel.js +15 -15
  131. package/dist/Field/InputClearButton.js +5 -5
  132. package/dist/FieldStatus/FieldStatus.js +3 -3
  133. package/dist/FileInput/FileInput.js +29 -29
  134. package/dist/FormLayout/FormLayout.js +5 -5
  135. package/dist/Grid/Grid.d.ts +4 -3
  136. package/dist/Grid/Grid.d.ts.map +1 -1
  137. package/dist/Grid/Grid.js +29 -12
  138. package/dist/Grid/GridSpan.js +3 -3
  139. package/dist/HStack/HStack.js +3 -3
  140. package/dist/Heading/Heading.js +10 -10
  141. package/dist/HoverCard/HoverCard.js +9 -9
  142. package/dist/HoverCard/useHoverCard.d.ts +5 -1
  143. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  144. package/dist/HoverCard/useHoverCard.js +3 -3
  145. package/dist/Icon/Icon.d.ts.map +1 -1
  146. package/dist/Icon/Icon.js +16 -12
  147. package/dist/Icon/defaultIcons.js +116 -116
  148. package/dist/IconButton/IconButton.js +3 -3
  149. package/dist/InputGroup/InputGroup.js +11 -11
  150. package/dist/InputGroup/InputGroupText.js +3 -3
  151. package/dist/Item/Item.js +18 -18
  152. package/dist/Kbd/Kbd.js +5 -5
  153. package/dist/Layer/LayerProvider.js +7 -7
  154. package/dist/Layer/useLayer.d.ts +29 -2
  155. package/dist/Layer/useLayer.d.ts.map +1 -1
  156. package/dist/Layer/useLayer.js +44 -31
  157. package/dist/Layout/Layout.js +21 -21
  158. package/dist/Layout/LayoutContent.js +3 -3
  159. package/dist/Layout/LayoutFooter.js +5 -5
  160. package/dist/Layout/LayoutHeader.js +5 -5
  161. package/dist/Layout/LayoutPanel.js +3 -3
  162. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  163. package/dist/Lightbox/Lightbox.js +55 -31
  164. package/dist/Lightbox/useLightbox.d.ts +0 -1
  165. package/dist/Lightbox/useLightbox.d.ts.map +1 -1
  166. package/dist/Lightbox/useLightbox.js +3 -4
  167. package/dist/Link/Link.d.ts +0 -2
  168. package/dist/Link/Link.d.ts.map +1 -1
  169. package/dist/Link/Link.js +15 -17
  170. package/dist/Link/LinkProvider.js +3 -3
  171. package/dist/Link/useLinkify.js +3 -3
  172. package/dist/List/List.js +11 -11
  173. package/dist/List/ListItem.js +11 -11
  174. package/dist/Markdown/Markdown.d.ts.map +1 -1
  175. package/dist/Markdown/Markdown.js +102 -102
  176. package/dist/MetadataList/MetadataList.js +10 -10
  177. package/dist/MetadataList/MetadataListItem.js +15 -15
  178. package/dist/MobileNav/MobileNav.d.ts +1 -1
  179. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  180. package/dist/MobileNav/MobileNav.js +26 -23
  181. package/dist/MobileNav/MobileNavToggle.js +5 -5
  182. package/dist/MoreMenu/MoreMenu.js +3 -3
  183. package/dist/MultiSelector/MultiSelector.js +56 -56
  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.d.ts +0 -3
  194. package/dist/Overlay/useOverlay.d.ts.map +1 -1
  195. package/dist/Overlay/useOverlay.js +3 -6
  196. package/dist/Pagination/Pagination.d.ts +1 -1
  197. package/dist/Pagination/Pagination.d.ts.map +1 -1
  198. package/dist/Pagination/Pagination.js +125 -72
  199. package/dist/Popover/Popover.js +16 -16
  200. package/dist/Popover/usePopover.js +7 -7
  201. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  202. package/dist/PowerSearch/PowerSearch.js +110 -92
  203. package/dist/PowerSearch/PowerSearchEditPopover.js +84 -84
  204. package/dist/PowerSearch/PowerSearchFilterEditor.js +3 -3
  205. package/dist/PowerSearch/PowerSearchToken.js +5 -5
  206. package/dist/PowerSearch/PowerSearchValueEditor.js +54 -54
  207. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  208. package/dist/ProgressBar/ProgressBar.js +25 -18
  209. package/dist/RadioList/RadioList.js +7 -7
  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 +24 -21
  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.js +46 -46
  224. package/dist/Selector/SelectorOption.js +3 -3
  225. package/dist/SideNav/SideNav.d.ts.map +1 -1
  226. package/dist/SideNav/SideNav.js +38 -34
  227. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  228. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  229. package/dist/SideNav/SideNavCollapseButton.js +8 -6
  230. package/dist/SideNav/SideNavHeading.js +87 -87
  231. package/dist/SideNav/SideNavItem.js +42 -42
  232. package/dist/SideNav/SideNavSection.d.ts +1 -1
  233. package/dist/SideNav/SideNavSection.d.ts.map +1 -1
  234. package/dist/SideNav/SideNavSection.js +18 -16
  235. package/dist/Skeleton/Skeleton.js +3 -3
  236. package/dist/Slider/Slider.js +23 -23
  237. package/dist/Spinner/Spinner.js +9 -9
  238. package/dist/StatusDot/StatusDot.js +5 -5
  239. package/dist/Switch/Switch.d.ts +8 -4
  240. package/dist/Switch/Switch.d.ts.map +1 -1
  241. package/dist/Switch/Switch.js +34 -29
  242. package/dist/TabList/Tab.js +18 -18
  243. package/dist/TabList/TabList.js +5 -5
  244. package/dist/TabList/TabMenu.d.ts.map +1 -1
  245. package/dist/TabList/TabMenu.js +57 -30
  246. package/dist/TabList/tab.markers.stylex.d.ts +1 -1
  247. package/dist/Table/BaseTable.d.ts.map +1 -1
  248. package/dist/Table/BaseTable.js +50 -39
  249. package/dist/Table/Table.js +7 -7
  250. package/dist/Table/TableBody.d.ts +1 -1
  251. package/dist/Table/TableBody.d.ts.map +1 -1
  252. package/dist/Table/TableBody.js +9 -5
  253. package/dist/Table/TableCell.js +3 -3
  254. package/dist/Table/TableFooter.d.ts +1 -1
  255. package/dist/Table/TableFooter.d.ts.map +1 -1
  256. package/dist/Table/TableFooter.js +9 -5
  257. package/dist/Table/TableHeader.d.ts +1 -1
  258. package/dist/Table/TableHeader.d.ts.map +1 -1
  259. package/dist/Table/TableHeader.js +9 -5
  260. package/dist/Table/TableHeaderCell.js +3 -3
  261. package/dist/Table/TableRow.js +5 -5
  262. package/dist/Table/index.d.ts +2 -0
  263. package/dist/Table/index.d.ts.map +1 -1
  264. package/dist/Table/index.js +1 -0
  265. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  266. package/dist/Table/plugins/columnResize/useTableColumnResize.js +14 -11
  267. package/dist/Table/plugins/filtering/useTableFiltering.js +71 -71
  268. package/dist/Table/plugins/groupedRows/index.d.ts +3 -0
  269. package/dist/Table/plugins/groupedRows/index.d.ts.map +1 -0
  270. package/dist/Table/plugins/groupedRows/index.js +3 -0
  271. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +78 -0
  272. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -0
  273. package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +250 -0
  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/useTableRowExpansion.d.ts +1 -1
  278. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +23 -23
  279. package/dist/Table/plugins/selection/useTableSelection.js +18 -18
  280. package/dist/Table/plugins/selection/useTableSelectionState.d.ts.map +1 -1
  281. package/dist/Table/plugins/selection/useTableSelectionState.js +11 -1
  282. package/dist/Table/plugins/sortable/useTableSortable.js +17 -17
  283. package/dist/Table/plugins/sortable/useTableSortableState.d.ts.map +1 -1
  284. package/dist/Table/plugins/sortable/useTableSortableState.js +8 -4
  285. package/dist/Table/tableContextMenu.js +9 -9
  286. package/dist/Text/Text.js +10 -10
  287. package/dist/TextArea/TextArea.js +14 -14
  288. package/dist/TextInput/TextInput.js +15 -15
  289. package/dist/Thumbnail/Thumbnail.d.ts +3 -2
  290. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  291. package/dist/Thumbnail/Thumbnail.js +30 -29
  292. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  293. package/dist/TimeInput/TimeInput.js +26 -21
  294. package/dist/Timestamp/Timestamp.d.ts +1 -1
  295. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  296. package/dist/Timestamp/Timestamp.js +37 -26
  297. package/dist/Toast/Toast.d.ts.map +1 -1
  298. package/dist/Toast/Toast.js +25 -17
  299. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  300. package/dist/Toast/ToastViewport.js +23 -11
  301. package/dist/Toast/useToast.d.ts.map +1 -1
  302. package/dist/Toast/useToast.js +44 -4
  303. package/dist/ToggleButton/ToggleButton.js +12 -12
  304. package/dist/ToggleButton/ToggleButtonGroup.js +5 -5
  305. package/dist/Token/Token.js +21 -21
  306. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  307. package/dist/Tokenizer/Tokenizer.js +36 -34
  308. package/dist/Toolbar/Toolbar.js +18 -18
  309. package/dist/Tooltip/Tooltip.js +11 -11
  310. package/dist/Tooltip/useTooltip.d.ts +5 -1
  311. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  312. package/dist/Tooltip/useTooltip.js +3 -3
  313. package/dist/TopNav/TopNav.js +32 -32
  314. package/dist/TopNav/TopNavHeading.js +67 -67
  315. package/dist/TopNav/TopNavItem.js +5 -5
  316. package/dist/TopNav/TopNavMegaMenu.js +30 -30
  317. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
  318. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
  319. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +25 -14
  320. package/dist/TopNav/TopNavMegaMenuItem.js +16 -16
  321. package/dist/TopNav/TopNavMenu.js +32 -32
  322. package/dist/TreeList/TreeList.js +8 -8
  323. package/dist/TreeList/TreeListBranches.js +11 -11
  324. package/dist/TreeList/TreeListItem.js +30 -30
  325. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  326. package/dist/Typeahead/BaseTypeahead.js +23 -20
  327. package/dist/Typeahead/Typeahead.js +12 -12
  328. package/dist/Typeahead/TypeaheadItem.js +10 -10
  329. package/dist/VStack/VStack.js +3 -3
  330. package/dist/VisuallyHidden/VisuallyHidden.d.ts +0 -3
  331. package/dist/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
  332. package/dist/VisuallyHidden/VisuallyHidden.js +0 -3
  333. package/dist/astryx.css +7 -0
  334. package/dist/astryx.umd.js +63 -63
  335. package/dist/astryx.umd.js.map +4 -4
  336. package/dist/docs-types.d.ts +8 -2
  337. package/dist/docs-types.d.ts.map +1 -1
  338. package/dist/hooks/focusableSelector.d.ts +1 -1
  339. package/dist/hooks/focusableSelector.d.ts.map +1 -1
  340. package/dist/hooks/focusableSelector.js +1 -1
  341. package/dist/hooks/index.d.ts +2 -0
  342. package/dist/hooks/index.d.ts.map +1 -1
  343. package/dist/hooks/index.js +1 -0
  344. package/dist/hooks/useFocusTrap.d.ts +3 -0
  345. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  346. package/dist/hooks/useFocusTrap.js +38 -1
  347. package/dist/hooks/useHotkeys.d.ts +51 -0
  348. package/dist/hooks/useHotkeys.d.ts.map +1 -0
  349. package/dist/hooks/useHotkeys.js +160 -0
  350. package/dist/hooks/useInteractiveRole.d.ts +6 -2
  351. package/dist/hooks/useInteractiveRole.d.ts.map +1 -1
  352. package/dist/hooks/useInteractiveRole.js +6 -2
  353. package/dist/hooks/useKeyboardHint.js +9 -9
  354. package/dist/hooks/useStreamingText.d.ts +3 -1
  355. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  356. package/dist/hooks/useStreamingText.js +14 -5
  357. package/dist/theme/MediaTheme.js +3 -3
  358. package/dist/theme/Theme.js +7 -7
  359. package/dist/theme/defineTheme.d.ts +1 -1
  360. package/dist/theme/defineTheme.d.ts.map +1 -1
  361. package/dist/theme/expandColorScale.d.ts.map +1 -1
  362. package/dist/theme/expandColorScale.js +10 -3
  363. package/dist/theme/hct.d.ts +0 -15
  364. package/dist/theme/hct.d.ts.map +1 -1
  365. package/dist/theme/hct.js +9 -9
  366. package/dist/theme/syntax/SyntaxTheme.js +5 -5
  367. package/dist/theme/tokens.d.ts +10 -2
  368. package/dist/theme/tokens.d.ts.map +1 -1
  369. package/dist/theme/tokens.js +220 -4
  370. package/dist/theme/useTheme.d.ts +3 -2
  371. package/dist/theme/useTheme.d.ts.map +1 -1
  372. package/dist/theme/useTheme.js +73 -6
  373. package/dist/utils/color.d.ts +42 -0
  374. package/dist/utils/color.d.ts.map +1 -0
  375. package/dist/utils/color.js +150 -0
  376. package/dist/utils/composeEventHandlers.d.ts +30 -0
  377. package/dist/utils/composeEventHandlers.d.ts.map +1 -0
  378. package/dist/utils/composeEventHandlers.js +40 -0
  379. package/dist/utils/index.d.ts +3 -0
  380. package/dist/utils/index.d.ts.map +1 -1
  381. package/dist/utils/index.js +3 -1
  382. package/dist/utils/timeParser.d.ts.map +1 -1
  383. package/dist/utils/timeParser.js +8 -5
  384. package/package.json +4 -4
  385. package/src/AlertDialog/AlertDialog.doc.mjs +4 -0
  386. package/src/AlertDialog/AlertDialog.tsx +2 -0
  387. package/src/AlertDialog/useImperativeAlertDialog.tsx +0 -2
  388. package/src/AppShell/AppShell.tsx +2 -0
  389. package/src/AspectRatio/AspectRatio.doc.mjs +28 -1
  390. package/src/AspectRatio/AspectRatio.test.tsx +142 -1
  391. package/src/AspectRatio/AspectRatio.tsx +70 -10
  392. package/src/AspectRatio/index.ts +5 -1
  393. package/src/Avatar/Avatar.doc.mjs +11 -0
  394. package/src/Avatar/Avatar.test.tsx +32 -1
  395. package/src/Avatar/Avatar.tsx +14 -22
  396. package/src/Avatar/AvatarStatusDot.tsx +2 -2
  397. package/src/AvatarGroup/AvatarGroup.doc.mjs +1 -0
  398. package/src/AvatarGroup/AvatarGroup.tsx +2 -2
  399. package/src/AvatarGroup/AvatarGroupOverflow.tsx +2 -2
  400. package/src/Banner/Banner.doc.mjs +8 -0
  401. package/src/Banner/Banner.test.tsx +38 -0
  402. package/src/Banner/Banner.tsx +8 -1
  403. package/src/Calendar/Calendar.doc.mjs +1 -1
  404. package/src/Calendar/Calendar.test.tsx +122 -17
  405. package/src/Calendar/Calendar.tsx +26 -5
  406. package/src/Calendar/dayCellUtils.ts +3 -1
  407. package/src/Calendar/styles.ts +12 -2
  408. package/src/Card/Card.doc.mjs +1 -1
  409. package/src/Card/Card.tsx +16 -6
  410. package/src/Carousel/Carousel.doc.mjs +12 -12
  411. package/src/Carousel/Carousel.test.tsx +13 -0
  412. package/src/Carousel/Carousel.tsx +4 -2
  413. package/src/Chat/Chat.doc.mjs +1 -1
  414. package/src/Chat/ChatComposerInput.test.tsx +27 -1
  415. package/src/Chat/ChatComposerInput.tsx +20 -15
  416. package/src/Chat/ChatDictationButton.test.tsx +43 -0
  417. package/src/Chat/ChatDictationButton.tsx +4 -4
  418. package/src/Chat/ChatLayoutScrollButton.test.tsx +33 -0
  419. package/src/Chat/ChatLayoutScrollButton.tsx +3 -1
  420. package/src/Chat/ChatMessageMetadata.test.tsx +32 -0
  421. package/src/Chat/ChatMessageMetadata.tsx +4 -6
  422. package/src/Chat/ChatSystemMessage.test.tsx +26 -11
  423. package/src/Chat/ChatSystemMessage.tsx +7 -7
  424. package/src/Chat/ChatTokenizedText.test.tsx +29 -16
  425. package/src/Chat/ChatTokenizedText.tsx +15 -8
  426. package/src/Chat/ChatToolCalls.test.tsx +55 -0
  427. package/src/Chat/ChatToolCalls.tsx +10 -12
  428. package/src/Chat/index.ts +1 -4
  429. package/src/Chat/useTriggerMenu.tsx +1 -4
  430. package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
  431. package/src/CheckboxInput/CheckboxInput.test.tsx +71 -4
  432. package/src/CheckboxInput/CheckboxInput.tsx +2 -0
  433. package/src/CheckboxList/CheckboxList.test.tsx +19 -0
  434. package/src/CheckboxList/CheckboxListItem.tsx +11 -2
  435. package/src/Citation/Citation.doc.mjs +5 -0
  436. package/src/ClickableCard/ClickableCard.tsx +45 -2
  437. package/src/CodeBlock/CodeBlock.doc.mjs +7 -2
  438. package/src/CodeBlock/CodeBlock.test.tsx +122 -3
  439. package/src/CodeBlock/CodeBlock.tsx +62 -4
  440. package/src/Collapsible/Collapsible.doc.mjs +8 -4
  441. package/src/Collapsible/Collapsible.test.tsx +403 -0
  442. package/src/Collapsible/Collapsible.tsx +85 -10
  443. package/src/Collapsible/CollapsibleGroup.doc.mjs +27 -3
  444. package/src/Collapsible/CollapsibleGroup.test.tsx +314 -0
  445. package/src/Collapsible/CollapsibleGroup.tsx +97 -9
  446. package/src/Collapsible/CollapsibleGroupContext.tsx +34 -2
  447. package/src/Collapsible/index.ts +1 -0
  448. package/src/Collapsible/useCollapsible.ts +20 -6
  449. package/src/CommandPalette/CommandPalette.doc.mjs +5 -0
  450. package/src/CommandPalette/CommandPalette.tsx +5 -3
  451. package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +5 -0
  452. package/src/CommandPalette/CommandPaletteGroup.doc.mjs +10 -0
  453. package/src/CommandPalette/CommandPaletteInput.doc.mjs +6 -0
  454. package/src/CommandPalette/CommandPaletteItem.doc.mjs +6 -0
  455. package/src/CommandPalette/CommandPaletteList.doc.mjs +9 -0
  456. package/src/ContextMenu/ContextMenu.doc.mjs +15 -0
  457. package/src/ContextMenu/ContextMenu.test.tsx +87 -0
  458. package/src/ContextMenu/ContextMenu.tsx +87 -28
  459. package/src/ContextMenu/ContextMenuItem.doc.mjs +6 -0
  460. package/src/DateInput/DateInput.test.tsx +11 -20
  461. package/src/DateRangeInput/DateRangeInput.doc.mjs +9 -6
  462. package/src/DateRangeInput/DateRangeInput.test.tsx +31 -44
  463. package/src/DateTimeInput/DateTimeInput.doc.mjs +3 -2
  464. package/src/DateTimeInput/DateTimeInput.test.tsx +118 -16
  465. package/src/DateTimeInput/DateTimeInput.tsx +8 -2
  466. package/src/DateTimeInput/index.ts +1 -0
  467. package/src/Dialog/Dialog.doc.mjs +4 -0
  468. package/src/Dialog/DialogHeader.doc.mjs +45 -0
  469. package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -1
  470. package/src/DropdownMenu/DropdownMenu.test.tsx +22 -2
  471. package/src/DropdownMenu/DropdownMenuItem.tsx +5 -17
  472. package/src/EmptyState/EmptyState.doc.mjs +1 -1
  473. package/src/Field/Field.test.tsx +1 -4
  474. package/src/Field/FieldLabel.test.tsx +2 -2
  475. package/src/FieldStatus/FieldStatus.test.tsx +282 -0
  476. package/src/FormLayout/__snapshots__/FormLayout.test.tsx.snap +0 -3
  477. package/src/Grid/Grid.test.tsx +43 -18
  478. package/src/Grid/Grid.tsx +26 -9
  479. package/src/HoverCard/HoverCard.doc.mjs +6 -6
  480. package/src/HoverCard/useHoverCard.doc.mjs +5 -5
  481. package/src/HoverCard/useHoverCard.tsx +9 -2
  482. package/src/Icon/Icon.test.tsx +41 -29
  483. package/src/Icon/Icon.tsx +6 -2
  484. package/src/InputGroup/InputGroup.doc.mjs +1 -0
  485. package/src/InputGroup/InputGroup.tsx +2 -2
  486. package/src/InteractiveRoleContext/InteractiveRoleContext.test.tsx +185 -0
  487. package/src/Item/Item.tsx +1 -1
  488. package/src/Layer/useLayer.doc.mjs +2 -2
  489. package/src/Layer/useLayer.test.tsx +221 -2
  490. package/src/Layer/useLayer.tsx +69 -30
  491. package/src/Layout/Layout.test.tsx +285 -0
  492. package/src/Layout/LayoutContent.doc.mjs +12 -0
  493. package/src/Layout/LayoutPanel.doc.mjs +40 -0
  494. package/src/Layout/LayoutSlots.test.tsx +364 -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/Lightbox/useLightbox.tsx +0 -1
  499. package/src/Link/Link.tsx +0 -2
  500. package/src/Markdown/Markdown.tsx +9 -7
  501. package/src/Markdown/parser.perf.test.ts +34 -12
  502. package/src/MobileNav/MobileNav.test.tsx +56 -0
  503. package/src/MobileNav/MobileNav.tsx +13 -8
  504. package/src/NavMenu/NavMenu.doc.mjs +15 -0
  505. package/src/NumberInput/NumberInput.test.tsx +48 -3
  506. package/src/NumberInput/NumberInput.tsx +32 -15
  507. package/src/Outline/Outline.doc.mjs +2 -0
  508. package/src/Outline/parseOutlineFromMarkdown.test.ts +80 -0
  509. package/src/OverflowList/OverflowList.test.tsx +416 -0
  510. package/src/Overlay/Overlay.doc.mjs +6 -0
  511. package/src/Overlay/Overlay.test.tsx +356 -0
  512. package/src/Overlay/useOverlay.tsx +0 -3
  513. package/src/Pagination/Pagination.test.tsx +162 -0
  514. package/src/Pagination/Pagination.tsx +80 -26
  515. package/src/Popover/Popover.doc.mjs +6 -6
  516. package/src/Popover/Popover.test.tsx +65 -0
  517. package/src/Popover/usePopover.doc.mjs +1 -1
  518. package/src/PowerSearch/PowerSearch.doc.mjs +2 -2
  519. package/src/PowerSearch/PowerSearch.test.tsx +109 -1
  520. package/src/PowerSearch/PowerSearch.tsx +37 -16
  521. package/src/ProgressBar/ProgressBar.doc.mjs +2 -0
  522. package/src/ProgressBar/ProgressBar.test.tsx +30 -0
  523. package/src/ProgressBar/ProgressBar.tsx +12 -5
  524. package/src/RadioList/RadioList.test.tsx +19 -0
  525. package/src/RadioList/RadioListItem.tsx +9 -4
  526. package/src/Resizable/ResizeHandle.test.tsx +218 -0
  527. package/src/Resizable/ResizeHandle.tsx +22 -4
  528. package/src/SegmentedControl/SegmentedControl.doc.mjs +1 -1
  529. package/src/SegmentedControl/SegmentedControl.test.tsx +192 -0
  530. package/src/SegmentedControl/SegmentedControl.tsx +27 -5
  531. package/src/SegmentedControl/SegmentedControlItem.tsx +9 -4
  532. package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
  533. package/src/Selector/Selector.test.tsx +27 -1
  534. package/src/SideNav/SideNav.doc.mjs +7 -1
  535. package/src/SideNav/SideNav.test.tsx +66 -0
  536. package/src/SideNav/SideNav.tsx +6 -2
  537. package/src/SideNav/SideNavCollapseButton.tsx +4 -3
  538. package/src/SideNav/SideNavSection.tsx +6 -4
  539. package/src/SizeContext/SizeContext.test.tsx +226 -0
  540. package/src/Switch/Switch.doc.mjs +7 -7
  541. package/src/Switch/Switch.test.tsx +102 -3
  542. package/src/Switch/Switch.tsx +20 -7
  543. package/src/TabList/TabList.test.tsx +185 -1
  544. package/src/TabList/TabMenu.tsx +45 -9
  545. package/src/Table/BaseTable.tsx +13 -2
  546. package/src/Table/Table.doc.mjs +6 -1
  547. package/src/Table/Table.test.tsx +87 -0
  548. package/src/Table/TableBody.tsx +15 -2
  549. package/src/Table/TableFooter.tsx +15 -2
  550. package/src/Table/TableHeader.tsx +15 -2
  551. package/src/Table/index.ts +5 -0
  552. package/src/Table/plugins/columnResize/useTableColumnResize.test.tsx +13 -0
  553. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +3 -1
  554. package/src/Table/plugins/groupedRows/index.ts +7 -0
  555. package/src/Table/plugins/groupedRows/useTableGroupedRows.test.tsx +231 -0
  556. package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +349 -0
  557. package/src/Table/plugins/pagination/paginateData.ts +5 -1
  558. package/src/Table/plugins/pagination/useTablePagination.test.tsx +13 -0
  559. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +1 -1
  560. package/src/Table/plugins/selection/useTableSelectionState.test.tsx +23 -0
  561. package/src/Table/plugins/selection/useTableSelectionState.tsx +11 -6
  562. package/src/Table/plugins/sortable/useTableSortableState.test.tsx +35 -1
  563. package/src/Table/plugins/sortable/useTableSortableState.tsx +8 -4
  564. package/src/Table/useTableGroupedRows.doc.mjs +71 -0
  565. package/src/TextArea/TextArea.test.tsx +3 -3
  566. package/src/TextInput/TextInput.test.tsx +3 -3
  567. package/src/Thumbnail/Thumbnail.test.tsx +36 -2
  568. package/src/Thumbnail/Thumbnail.tsx +4 -2
  569. package/src/TimeInput/TimeInput.test.tsx +37 -0
  570. package/src/TimeInput/TimeInput.tsx +11 -1
  571. package/src/Timestamp/Timestamp.doc.mjs +1 -1
  572. package/src/Timestamp/Timestamp.test.tsx +52 -0
  573. package/src/Timestamp/Timestamp.tsx +30 -16
  574. package/src/Toast/Toast.tsx +11 -3
  575. package/src/Toast/ToastViewport.test.tsx +64 -0
  576. package/src/Toast/ToastViewport.tsx +12 -0
  577. package/src/Toast/useToast.test.tsx +258 -0
  578. package/src/Toast/useToast.tsx +41 -0
  579. package/src/ToggleButton/ToggleButton.doc.mjs +1 -0
  580. package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
  581. package/src/Tokenizer/Tokenizer.test.tsx +54 -0
  582. package/src/Tokenizer/Tokenizer.tsx +5 -4
  583. package/src/Tooltip/Tooltip.doc.mjs +6 -6
  584. package/src/Tooltip/useTooltip.doc.mjs +5 -5
  585. package/src/Tooltip/useTooltip.tsx +12 -2
  586. package/src/TopNav/TopNav.doc.mjs +1 -1
  587. package/src/TopNav/TopNav.test.tsx +23 -7
  588. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +9 -2
  589. package/src/TreeList/TreeList.doc.mjs +2 -2
  590. package/src/Typeahead/BaseTypeahead.doc.mjs +19 -0
  591. package/src/Typeahead/BaseTypeahead.tsx +5 -2
  592. package/src/Typeahead/Typeahead.doc.mjs +1 -1
  593. package/src/Typeahead/Typeahead.test.tsx +45 -1
  594. package/src/VisuallyHidden/VisuallyHidden.tsx +0 -3
  595. package/src/__tests__/TestIcon.tsx +26 -0
  596. package/src/__tests__/fastRoleQueries.ts +66 -0
  597. package/src/docPropReferences.test.ts +178 -0
  598. package/src/docs-types.ts +9 -1
  599. package/src/hooks/focusableSelector.ts +1 -1
  600. package/src/hooks/index.ts +3 -0
  601. package/src/hooks/useFocusTrap.doc.mjs +4 -2
  602. package/src/hooks/useFocusTrap.test.tsx +149 -1
  603. package/src/hooks/useFocusTrap.ts +50 -1
  604. package/src/hooks/useHotkeys.doc.mjs +52 -0
  605. package/src/hooks/useHotkeys.test.ts +245 -0
  606. package/src/hooks/useHotkeys.ts +203 -0
  607. package/src/hooks/useInteractiveRole.ts +12 -4
  608. package/src/hooks/useStreamingText.test.ts +54 -19
  609. package/src/hooks/useStreamingText.ts +16 -5
  610. package/src/hooks/useTreeFocus.test.tsx +1 -3
  611. package/src/reset.css +29 -0
  612. package/src/theme/SyntaxTheme.doc.mjs +4 -4
  613. package/src/theme/defineTheme.ts +4 -13
  614. package/src/theme/derivedVarRegistry.test.ts +2 -2
  615. package/src/theme/expandColorScale.test.ts +29 -0
  616. package/src/theme/expandColorScale.ts +11 -6
  617. package/src/theme/hct.ts +9 -17
  618. package/src/theme/themingTargets.test.ts +353 -0
  619. package/src/theme/tokens.test.ts +182 -9
  620. package/src/theme/tokens.ts +239 -4
  621. package/src/theme/useTheme.test.tsx +126 -2
  622. package/src/theme/useTheme.ts +87 -6
  623. package/src/utils/color.test.ts +133 -0
  624. package/src/utils/color.ts +148 -0
  625. package/src/utils/composeEventHandlers.test.ts +71 -0
  626. package/src/utils/composeEventHandlers.ts +44 -0
  627. package/src/utils/index.ts +4 -0
  628. package/src/utils/mergeProps.test.ts +166 -0
  629. package/src/utils/sharedResizeObserver.test.ts +2 -2
  630. package/src/utils/timeParser.test.ts +13 -0
  631. package/src/utils/timeParser.ts +8 -5
  632. package/dist/Carousel/carousel.markers.stylex.d.ts +0 -7
  633. package/dist/Carousel/carousel.markers.stylex.d.ts.map +0 -1
  634. package/dist/Carousel/carousel.markers.stylex.js +0 -12
  635. package/src/Carousel/carousel.markers.stylex.ts +0 -10
@@ -0,0 +1,250 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file useTableGroupedRows.tsx
7
+ * @input React, StyleX, Icon, Table types + the flat data array
8
+ * @output Exports useTableGroupedRows hook + config/result types
9
+ * @position Grouped-rows 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 } from 'react';
15
+ import * as stylex from '@stylexjs/stylex';
16
+ import "../../../theme/tokens.stylex.js";
17
+ import { spacingVars, colorVars, fontWeightVars } from "../../../theme/tokens.stylex.js";
18
+ import { Icon } from "../../../Icon/index.js";
19
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
20
+ // A synthetic group-header row injected into the flattened data. Real rows
21
+ // never carry this marker.
22
+ const GROUP_HEADER = Symbol('tableGroupHeader');
23
+ function isGroupHeader(item) {
24
+ return typeof item === 'object' && item !== null && item[GROUP_HEADER] === true;
25
+ }
26
+
27
+ // Proxy handler: any field access beyond the marker fields resolves to `''`
28
+ // so user cell renderers (`item.name.toUpperCase()`) never throw on a header.
29
+ const HEADER_PROXY_HANDLER = {
30
+ // eslint-disable-next-line @typescript-eslint/promise-function-async -- Proxy get trap, not a promise-returning fn
31
+ get(t, prop) {
32
+ if (prop === GROUP_HEADER || prop === 'groupKey' || prop === 'count') {
33
+ return t[prop];
34
+ }
35
+ return prop in t ? t[prop] : '';
36
+ }
37
+ };
38
+
39
+ /**
40
+ * Build a synthetic header row wrapped in a Proxy so arbitrary field access
41
+ * from user cell renderers (e.g. `item.name.toUpperCase()`) resolves to `''`
42
+ * instead of throwing — BaseTable evaluates `col.renderCell(item)` on every
43
+ * row (including synthetic headers) before `transformBodyRow` can replace the
44
+ * row's cells. `transformBodyRow` then discards those cells and renders a
45
+ * single full-width header cell.
46
+ */
47
+ function makeHeader(groupKey, count) {
48
+ const target = {
49
+ [GROUP_HEADER]: true,
50
+ groupKey,
51
+ count
52
+ };
53
+ return new Proxy(target, HEADER_PROXY_HANDLER);
54
+ }
55
+
56
+ /** Configuration for {@link useTableGroupedRows}. */
57
+
58
+ const styles = {
59
+ headerRow: {
60
+ kkrTdU: "x1ypdohk",
61
+ kfSwDN: "x87ps6o",
62
+ kWkggS: "xwmxj5m",
63
+ kt9PQ7: "xso031l",
64
+ kfdmCh: "x1q0q8m5",
65
+ kL6WhQ: "xw8gpjh",
66
+ $$css: true
67
+ }
68
+ };
69
+
70
+ /**
71
+ * Groups a flat data array into collapsible section rows. Each distinct
72
+ * `groupBy` value becomes a full-width section-header row with a chevron
73
+ * toggle, the group label, and a member count; collapsing hides that group's
74
+ * data rows while keeping the header visible.
75
+ *
76
+ * Mirrors {@link useTableRowExpansionState}: the consumer owns the
77
+ * `collapsedGroups` set and this hook returns `{data, plugin, idKey}` —
78
+ * pass all three to `<Table>`.
79
+ *
80
+ * @example
81
+ * ```tsx
82
+ * const [collapsed, setCollapsed] = useState<Set<string>>(new Set());
83
+ * const grouped = useTableGroupedRows({
84
+ * data: rows,
85
+ * groupBy: r => r.team,
86
+ * collapsedGroups: collapsed,
87
+ * onToggleGroup: key =>
88
+ * setCollapsed(prev => {
89
+ * const next = new Set(prev);
90
+ * next.has(key) ? next.delete(key) : next.add(key);
91
+ * return next;
92
+ * }),
93
+ * getRowKey: r => r.id,
94
+ * });
95
+ * <Table
96
+ * data={grouped.data}
97
+ * columns={columns}
98
+ * idKey={grouped.idKey}
99
+ * plugins={{grouped: grouped.plugin}}
100
+ * />;
101
+ * ```
102
+ */
103
+ export function useTableGroupedRows(config) {
104
+ const {
105
+ data,
106
+ groupBy,
107
+ collapsedGroups,
108
+ onToggleGroup,
109
+ renderGroupHeader,
110
+ getRowKey: getRowKeyProp,
111
+ groupOrder
112
+ } = config;
113
+ const flattened = useMemo(() => {
114
+ if (data.length === 0) {
115
+ return [];
116
+ }
117
+
118
+ // Group preserving first-seen order.
119
+ const groups = new Map();
120
+ for (const item of data) {
121
+ const key = groupBy(item);
122
+ const bucket = groups.get(key);
123
+ if (bucket) {
124
+ bucket.push(item);
125
+ } else {
126
+ groups.set(key, [item]);
127
+ }
128
+ }
129
+
130
+ // Determine iteration order.
131
+ let keys = [...groups.keys()];
132
+ if (groupOrder && groupOrder.length > 0) {
133
+ const ordered = groupOrder.filter(k => groups.has(k));
134
+ const rest = keys.filter(k => !groupOrder.includes(k));
135
+ keys = [...ordered, ...rest];
136
+ }
137
+ const out = [];
138
+ for (const key of keys) {
139
+ const rows = groups.get(key) ?? [];
140
+ out.push(makeHeader(key, rows.length));
141
+ if (!collapsedGroups.has(key)) {
142
+ out.push(...rows);
143
+ }
144
+ }
145
+ return out;
146
+ }, [data, groupBy, collapsedGroups, groupOrder]);
147
+
148
+ // Positional fallback index, built once per flattened array so key lookup
149
+ // stays O(1) instead of O(n) per row (which would make table keying O(n²)).
150
+ const positionByItem = useMemo(() => {
151
+ if (getRowKeyProp) {
152
+ return null;
153
+ }
154
+ const map = new Map();
155
+ for (let i = 0; i < flattened.length; i++) {
156
+ map.set(flattened[i], i);
157
+ }
158
+ return map;
159
+ }, [flattened, getRowKeyProp]);
160
+ const idKey = useCallback(item => {
161
+ if (isGroupHeader(item)) {
162
+ return `__group_${item.groupKey}`;
163
+ }
164
+ if (getRowKeyProp) {
165
+ return getRowKeyProp(item);
166
+ }
167
+ return String(positionByItem?.get(item) ?? -1);
168
+ }, [getRowKeyProp, positionByItem]);
169
+ const plugin = useMemo(() => ({
170
+ // Replace a header row's pre-rendered cells with one full-width cell.
171
+ transformBodyRow(props, item) {
172
+ if (!isGroupHeader(item)) {
173
+ return props;
174
+ }
175
+ const header = item;
176
+ const collapsed = collapsedGroups.has(header.groupKey);
177
+ const toggle = () => onToggleGroup(header.groupKey);
178
+ const content = renderGroupHeader ? renderGroupHeader(header.groupKey, header.count, collapsed) : /*#__PURE__*/_jsxDEV("span", {
179
+ ...{
180
+ className: "x2mo6ok x1tgivj0"
181
+ },
182
+ children: [header.groupKey, ' ', /*#__PURE__*/_jsxDEV("span", {
183
+ ...{
184
+ className: "x1sodnla xv1l7n4"
185
+ },
186
+ children: ["(", header.count, ")"]
187
+ }, void 0, true)]
188
+ }, void 0, true);
189
+ return {
190
+ ...props,
191
+ htmlProps: {
192
+ ...props.htmlProps,
193
+ // Convenience: clicking anywhere on the row toggles it. The chevron
194
+ // button below is the accessible, keyboard-operable control, so the
195
+ // row keeps its implicit `row` role (no role override here).
196
+ onClick: toggle,
197
+ 'aria-expanded': !collapsed
198
+ },
199
+ styles: [...props.styles, styles.headerRow],
200
+ children:
201
+ /*#__PURE__*/
202
+ // colSpan larger than the column count is clamped by the browser
203
+ // to the actual number of columns, so the header always spans the
204
+ // full width without the plugin knowing the column count.
205
+ _jsxDEV("td", {
206
+ colSpan: 999,
207
+ ...{
208
+ className: "xce4md1 x1vsv5vr x1t818jl"
209
+ },
210
+ children: /*#__PURE__*/_jsxDEV("span", {
211
+ ...{
212
+ className: "x78zum5 x6s0dn4 xzye2dw"
213
+ },
214
+ children: [/*#__PURE__*/_jsxDEV("button", {
215
+ type: "button",
216
+ ...{
217
+ className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x1717udv x1ghz6dp x1ypdohk xv9yike x1cqbx0l"
218
+ },
219
+ onClick: e => {
220
+ e.stopPropagation();
221
+ toggle();
222
+ },
223
+ "aria-label": collapsed ? `Expand group ${header.groupKey}` : `Collapse group ${header.groupKey}`,
224
+ "aria-expanded": !collapsed,
225
+ children: /*#__PURE__*/_jsxDEV("span", {
226
+ ...{
227
+ 0: {
228
+ className: "x3nfvp2 x11xpdln xx6bhzk"
229
+ },
230
+ 1: {
231
+ className: "x3nfvp2 x11xpdln xx6bhzk x1iffjtl"
232
+ }
233
+ }[!!!collapsed << 0],
234
+ children: /*#__PURE__*/_jsxDEV(Icon, {
235
+ icon: "chevronRight",
236
+ size: "xsm"
237
+ }, void 0, false)
238
+ }, void 0, false)
239
+ }, void 0, false), content]
240
+ }, void 0, true)
241
+ }, void 0, false)
242
+ };
243
+ }
244
+ }), [collapsedGroups, onToggleGroup, renderGroupHeader]);
245
+ return {
246
+ plugin,
247
+ data: flattened,
248
+ idKey
249
+ };
250
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"paginateData.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/pagination/paginateData.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,CAAC,EAAE,EACT,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,CAAC,EAAE,CASL"}
1
+ {"version":3,"file":"paginateData.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/pagination/paginateData.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,CAAC,EAAE,EACT,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,CAAC,EAAE,CAaL"}
@@ -32,6 +32,10 @@ export function paginateData(data, page, pageSize) {
32
32
  // pageSize would slice every page empty while the pagination chrome still
33
33
  // renders page buttons.
34
34
  const size = Number.isFinite(pageSize) ? Math.max(1, Math.floor(pageSize)) : 10;
35
- const start = (page - 1) * size;
35
+ // page needs the same coercion: a negative start index makes Array.slice
36
+ // count from the END of the data (page -1 returns the tail dressed up as a
37
+ // page), and a fractional page returns a slice straddling two pages.
38
+ const p = Number.isFinite(page) ? Math.max(1, Math.floor(page)) : 1;
39
+ const start = (p - 1) * size;
36
40
  return data.slice(start, start + size);
37
41
  }
@@ -20,7 +20,7 @@ import * as stylex from '@stylexjs/stylex';
20
20
  import "../../../theme/tokens.stylex.js";
21
21
  import { spacingVars } from "../../../theme/tokens.stylex.js";
22
22
  import { Pagination } from "../../../Pagination/index.js";
23
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
23
+ import { jsxDEV as _jsxDEV, Fragment as _Fragment } from "react/jsx-dev-runtime";
24
24
  // =============================================================================
25
25
  // Styles
26
26
  // =============================================================================
@@ -166,15 +166,15 @@ export function useTablePagination(config) {
166
166
  if (isSinglePage) {
167
167
  return children;
168
168
  }
169
- const makeWrapper = side => /*#__PURE__*/_jsx("div", {
169
+ const makeWrapper = side => /*#__PURE__*/_jsxDEV("div", {
170
170
  ...stylex.props(styles.wrapper, side === 'below' && styles.marginTop, side === 'above' && styles.marginBottom, a === 'center' && styles.alignCenter, a === 'end' && styles.alignEnd, a === 'start' && styles.alignStart),
171
- children: /*#__PURE__*/_jsx(Pagination, {
171
+ children: /*#__PURE__*/_jsxDEV(Pagination, {
172
172
  ...props
173
- })
174
- });
175
- return /*#__PURE__*/_jsxs(_Fragment, {
173
+ }, void 0, false)
174
+ }, void 0, false);
175
+ return /*#__PURE__*/_jsxDEV(_Fragment, {
176
176
  children: [(pos === 'above' || pos === 'both') && makeWrapper('above'), children, (pos === 'below' || pos === 'both') && makeWrapper('below')]
177
- });
177
+ }, void 0, true);
178
178
  }
179
179
  }), []);
180
180
  }
@@ -72,7 +72,7 @@ export interface UseTableRowExpansionStateResult<T extends Record<string, unknow
72
72
  * computing the expand-all state.
73
73
  *
74
74
  * @example
75
- * ```tsx
75
+ * ```
76
76
  * const [expandedKeys, setExpandedKeys] = useState<Set<string>>(new Set());
77
77
  * const {data, expansionConfig} = useTableRowExpansionState({
78
78
  * baseData: tree,
@@ -39,7 +39,7 @@ import { resolveContextActions } from "../../tableContextMenu.js";
39
39
  * plugin needs — the flattened `data`, per-row depth, expand/collapse
40
40
  * handlers, and the expand-all toggle state.
41
41
  */
42
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
42
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
43
43
  /**
44
44
  * Manages row-expansion state and derives the config for
45
45
  * {@link useTableRowExpansion}. This is the recommended entry point — it
@@ -47,7 +47,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
47
47
  * computing the expand-all state.
48
48
  *
49
49
  * @example
50
- * ```tsx
50
+ * ```
51
51
  * const [expandedKeys, setExpandedKeys] = useState<Set<string>>(new Set());
52
52
  * const {data, expansionConfig} = useTableRowExpansionState({
53
53
  * baseData: tree,
@@ -196,7 +196,7 @@ function ExpansionChevron({
196
196
  onToggle,
197
197
  ariaLabel
198
198
  }) {
199
- return /*#__PURE__*/_jsx("button", {
199
+ return /*#__PURE__*/_jsxDEV("button", {
200
200
  type: "button",
201
201
  ...{
202
202
  className: "x3nfvp2 x6s0dn4 xl56j7k xvy4d1p xxk0z11 xx3sua9 x1ypdohk xv9yike xefglzl xx6bhzk x1717udv x2lah0s x1ilzqfv x1cqbx0l"
@@ -207,7 +207,7 @@ function ExpansionChevron({
207
207
  },
208
208
  "aria-label": ariaLabel,
209
209
  "aria-expanded": isExpanded,
210
- children: /*#__PURE__*/_jsx("span", {
210
+ children: /*#__PURE__*/_jsxDEV("span", {
211
211
  ...{
212
212
  0: {
213
213
  className: "x3nfvp2 x11xpdln xx6bhzk"
@@ -216,12 +216,12 @@ function ExpansionChevron({
216
216
  className: "x3nfvp2 x11xpdln xx6bhzk x1iffjtl"
217
217
  }
218
218
  }[!!isExpanded << 0],
219
- children: /*#__PURE__*/_jsx(Icon, {
219
+ children: /*#__PURE__*/_jsxDEV(Icon, {
220
220
  icon: "chevronRight",
221
221
  size: "xsm"
222
- })
223
- })
224
- });
222
+ }, void 0, false)
223
+ }, void 0, false)
224
+ }, void 0, false);
225
225
  }
226
226
 
227
227
  // =============================================================================
@@ -261,11 +261,11 @@ export function useTableRowExpansion(config) {
261
261
  return null;
262
262
  }
263
263
  const isExpanded = expandedKeys.has(key);
264
- return /*#__PURE__*/_jsx(ExpansionChevron, {
264
+ return /*#__PURE__*/_jsxDEV(ExpansionChevron, {
265
265
  isExpanded: isExpanded,
266
266
  onToggle: () => onToggle(key),
267
267
  ariaLabel: isExpanded ? 'Collapse row' : 'Expand row'
268
- });
268
+ }, void 0, false);
269
269
  }
270
270
  }), [expandedKeys, onToggle, getRowKey, getChildren, getIsItemExpandable, getDepth]);
271
271
  return useMemo(() => ({
@@ -295,19 +295,19 @@ export function useTableRowExpansion(config) {
295
295
  const key = getRowKey(item);
296
296
  const isExpanded = expandedKeys.has(key);
297
297
  const expandable = getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0;
298
- const chevron = expandable ? /*#__PURE__*/_jsx(ExpansionChevron, {
298
+ const chevron = expandable ? /*#__PURE__*/_jsxDEV(ExpansionChevron, {
299
299
  isExpanded: isExpanded,
300
300
  onToggle: () => onToggle(key),
301
301
  ariaLabel: isExpanded ? 'Collapse row' : 'Expand row'
302
- }) : /*#__PURE__*/_jsx("span", {
302
+ }, void 0, false) : /*#__PURE__*/_jsxDEV("span", {
303
303
  ...{
304
304
  className: "x1rg5ohu xvy4d1p xxk0z11 x2lah0s"
305
305
  }
306
- });
307
- return /*#__PURE__*/_jsxs("div", {
306
+ }, void 0, false);
307
+ return /*#__PURE__*/_jsxDEV("div", {
308
308
  ...stylex.props(expansionStyles.indentedCell, indent > 0 && expansionStyles.indent(indent)),
309
309
  children: [chevron, originalContent]
310
- });
310
+ }, void 0, true);
311
311
  }
312
312
  };
313
313
  });
@@ -323,14 +323,14 @@ export function useTableRowExpansion(config) {
323
323
  const allExpanded = isAllExpanded === true;
324
324
  return {
325
325
  ...props,
326
- content: /*#__PURE__*/_jsx("button", {
326
+ content: /*#__PURE__*/_jsxDEV("button", {
327
327
  type: "button",
328
328
  ...{
329
329
  className: "x3nfvp2 x6s0dn4 xl56j7k xvy4d1p xxk0z11 xx3sua9 x1ypdohk xv9yike xefglzl xx6bhzk x1717udv x2lah0s x1ilzqfv x1cqbx0l"
330
330
  },
331
331
  onClick: () => onToggleExpandAll(!allExpanded),
332
332
  "aria-label": allExpanded ? 'Collapse all rows' : 'Expand all rows',
333
- children: /*#__PURE__*/_jsx("span", {
333
+ children: /*#__PURE__*/_jsxDEV("span", {
334
334
  ...{
335
335
  0: {
336
336
  className: "x3nfvp2 x11xpdln xx6bhzk"
@@ -339,12 +339,12 @@ export function useTableRowExpansion(config) {
339
339
  className: "x3nfvp2 x11xpdln xx6bhzk x1iffjtl"
340
340
  }
341
341
  }[!!allExpanded << 0],
342
- children: /*#__PURE__*/_jsx(Icon, {
342
+ children: /*#__PURE__*/_jsxDEV(Icon, {
343
343
  icon: "chevronRight",
344
344
  size: "xsm"
345
- })
346
- })
347
- })
345
+ }, void 0, false)
346
+ }, void 0, false)
347
+ }, void 0, false)
348
348
  };
349
349
  }
350
350
  return {
@@ -367,11 +367,11 @@ export function useTableRowExpansion(config) {
367
367
  id: 'row-expansion-toggle',
368
368
  group: 'row-expansion',
369
369
  label: isExpanded ? 'Collapse row' : 'Expand row',
370
- icon: /*#__PURE__*/_jsx(Icon, {
370
+ icon: /*#__PURE__*/_jsxDEV(Icon, {
371
371
  icon: isExpanded ? 'chevronDown' : 'chevronRight',
372
372
  size: "xsm",
373
373
  "aria-hidden": true
374
- }),
374
+ }, void 0, false),
375
375
  onSelect: () => onToggle(key)
376
376
  }]
377
377
  };
@@ -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);