@astryxdesign/core 0.1.5 → 0.1.6-canary.02f2602

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 (564) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +2 -0
  3. package/dist/AlertDialog/AlertDialog.d.ts +1 -1
  4. package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
  5. package/dist/AlertDialog/AlertDialog.js +21 -18
  6. package/dist/AlertDialog/useImperativeAlertDialog.d.ts +0 -2
  7. package/dist/AlertDialog/useImperativeAlertDialog.d.ts.map +1 -1
  8. package/dist/AlertDialog/useImperativeAlertDialog.js +3 -5
  9. package/dist/AppShell/AppShell.d.ts.map +1 -1
  10. package/dist/AppShell/AppShell.js +55 -53
  11. package/dist/AspectRatio/AspectRatio.js +5 -5
  12. package/dist/Avatar/Avatar.js +19 -19
  13. package/dist/Avatar/AvatarStatusDot.js +5 -5
  14. package/dist/AvatarGroup/AvatarGroup.d.ts +1 -1
  15. package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
  16. package/dist/AvatarGroup/AvatarGroup.js +9 -6
  17. package/dist/AvatarGroup/AvatarGroupOverflow.js +5 -5
  18. package/dist/Badge/Badge.js +3 -3
  19. package/dist/Banner/Banner.d.ts.map +1 -1
  20. package/dist/Banner/Banner.js +32 -30
  21. package/dist/Blockquote/Blockquote.js +7 -7
  22. package/dist/Breadcrumbs/BreadcrumbItem.js +17 -17
  23. package/dist/Breadcrumbs/Breadcrumbs.d.ts +1 -1
  24. package/dist/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  25. package/dist/Breadcrumbs/Breadcrumbs.js +11 -8
  26. package/dist/Button/Button.d.ts.map +1 -1
  27. package/dist/Button/Button.js +53 -23
  28. package/dist/ButtonGroup/ButtonGroup.d.ts +20 -5
  29. package/dist/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  30. package/dist/ButtonGroup/ButtonGroup.js +34 -18
  31. package/dist/Calendar/Calendar.d.ts.map +1 -1
  32. package/dist/Calendar/Calendar.js +51 -48
  33. package/dist/Card/Card.js +3 -3
  34. package/dist/Carousel/Carousel.d.ts +1 -1
  35. package/dist/Carousel/Carousel.d.ts.map +1 -1
  36. package/dist/Carousel/Carousel.js +27 -24
  37. package/dist/Center/Center.js +3 -3
  38. package/dist/Chat/ChatComposer.d.ts.map +1 -1
  39. package/dist/Chat/ChatComposer.js +27 -24
  40. package/dist/Chat/ChatComposerDrawer.d.ts +1 -1
  41. package/dist/Chat/ChatComposerDrawer.d.ts.map +1 -1
  42. package/dist/Chat/ChatComposerDrawer.js +23 -16
  43. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  44. package/dist/Chat/ChatComposerInput.js +20 -16
  45. package/dist/Chat/ChatDictationButton.js +10 -10
  46. package/dist/Chat/ChatLayout.d.ts +1 -11
  47. package/dist/Chat/ChatLayout.d.ts.map +1 -1
  48. package/dist/Chat/ChatLayout.js +23 -21
  49. package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
  50. package/dist/Chat/ChatLayoutScrollButton.js +13 -11
  51. package/dist/Chat/ChatMessage.d.ts +1 -1
  52. package/dist/Chat/ChatMessage.d.ts.map +1 -1
  53. package/dist/Chat/ChatMessage.js +20 -14
  54. package/dist/Chat/ChatMessageBubble.d.ts +1 -1
  55. package/dist/Chat/ChatMessageBubble.d.ts.map +1 -1
  56. package/dist/Chat/ChatMessageBubble.js +10 -8
  57. package/dist/Chat/ChatMessageList.d.ts +1 -1
  58. package/dist/Chat/ChatMessageList.d.ts.map +1 -1
  59. package/dist/Chat/ChatMessageList.js +17 -15
  60. package/dist/Chat/ChatMessageMetadata.d.ts.map +1 -1
  61. package/dist/Chat/ChatMessageMetadata.js +24 -19
  62. package/dist/Chat/ChatPastedTextToken.d.ts.map +1 -1
  63. package/dist/Chat/ChatPastedTextToken.js +16 -14
  64. package/dist/Chat/ChatSendButton.d.ts.map +1 -1
  65. package/dist/Chat/ChatSendButton.js +6 -4
  66. package/dist/Chat/ChatSystemMessage.js +11 -11
  67. package/dist/Chat/ChatTokenizedText.js +8 -8
  68. package/dist/Chat/ChatToolCalls.js +73 -73
  69. package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
  70. package/dist/Chat/useSpeechRecognition.js +4 -2
  71. package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
  72. package/dist/Chat/useTriggerMenu.js +19 -17
  73. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  74. package/dist/CheckboxInput/CheckboxInput.js +26 -24
  75. package/dist/CheckboxList/CheckboxList.d.ts +1 -1
  76. package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
  77. package/dist/CheckboxList/CheckboxList.js +12 -10
  78. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  79. package/dist/CheckboxList/CheckboxListItem.js +8 -6
  80. package/dist/Citation/Citation.d.ts.map +1 -1
  81. package/dist/Citation/Citation.js +20 -12
  82. package/dist/ClickableCard/ClickableCard.js +6 -6
  83. package/dist/Code/Code.js +3 -3
  84. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  85. package/dist/CodeBlock/CodeBlock.js +114 -96
  86. package/dist/Collapsible/Collapsible.js +11 -11
  87. package/dist/Collapsible/CollapsibleGroup.js +7 -7
  88. package/dist/CommandPalette/CommandPalette.d.ts +1 -1
  89. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  90. package/dist/CommandPalette/CommandPalette.js +39 -34
  91. package/dist/CommandPalette/CommandPaletteEmpty.js +3 -3
  92. package/dist/CommandPalette/CommandPaletteFooter.js +16 -16
  93. package/dist/CommandPalette/CommandPaletteGroup.js +5 -5
  94. package/dist/CommandPalette/CommandPaletteInput.d.ts +1 -1
  95. package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
  96. package/dist/CommandPalette/CommandPaletteInput.js +17 -14
  97. package/dist/CommandPalette/CommandPaletteItem.js +3 -3
  98. package/dist/CommandPalette/CommandPaletteList.d.ts +1 -1
  99. package/dist/CommandPalette/CommandPaletteList.d.ts.map +1 -1
  100. package/dist/CommandPalette/CommandPaletteList.js +7 -4
  101. package/dist/ContextMenu/ContextMenu.d.ts +1 -1
  102. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  103. package/dist/ContextMenu/ContextMenu.js +14 -11
  104. package/dist/DateInput/DateInput.d.ts +1 -1
  105. package/dist/DateInput/DateInput.d.ts.map +1 -1
  106. package/dist/DateInput/DateInput.js +28 -23
  107. package/dist/DateRangeInput/DateRangeInput.d.ts +1 -1
  108. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  109. package/dist/DateRangeInput/DateRangeInput.js +32 -27
  110. package/dist/DateTimeInput/DateTimeInput.d.ts +1 -1
  111. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  112. package/dist/DateTimeInput/DateTimeInput.js +41 -33
  113. package/dist/Dialog/Dialog.js +9 -9
  114. package/dist/Dialog/DialogHeader.d.ts.map +1 -1
  115. package/dist/Dialog/DialogHeader.js +20 -18
  116. package/dist/Dialog/useImperativeDialog.js +3 -3
  117. package/dist/Divider/Divider.js +7 -7
  118. package/dist/DropdownMenu/DropdownMenu.d.ts +1 -1
  119. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  120. package/dist/DropdownMenu/DropdownMenu.js +21 -15
  121. package/dist/DropdownMenu/DropdownMenuItem.js +3 -3
  122. package/dist/DropdownMenu/renderDropdownItems.js +10 -10
  123. package/dist/EmptyState/EmptyState.d.ts +4 -1
  124. package/dist/EmptyState/EmptyState.d.ts.map +1 -1
  125. package/dist/EmptyState/EmptyState.js +9 -9
  126. package/dist/Field/Field.js +17 -17
  127. package/dist/Field/FieldLabel.js +15 -15
  128. package/dist/Field/InputClearButton.js +5 -5
  129. package/dist/FieldStatus/FieldStatus.js +3 -3
  130. package/dist/FileInput/FileInput.d.ts.map +1 -1
  131. package/dist/FileInput/FileInput.js +34 -30
  132. package/dist/FormLayout/FormLayout.js +5 -5
  133. package/dist/Grid/Grid.js +3 -3
  134. package/dist/Grid/GridSpan.js +3 -3
  135. package/dist/HStack/HStack.js +3 -3
  136. package/dist/Heading/Heading.js +10 -10
  137. package/dist/HoverCard/HoverCard.js +9 -9
  138. package/dist/HoverCard/useHoverCard.js +3 -3
  139. package/dist/Icon/Icon.js +11 -11
  140. package/dist/Icon/defaultIcons.js +116 -116
  141. package/dist/IconButton/IconButton.js +3 -3
  142. package/dist/InputGroup/InputGroup.js +9 -9
  143. package/dist/InputGroup/InputGroupText.js +3 -3
  144. package/dist/Item/Item.js +17 -17
  145. package/dist/Kbd/Kbd.js +5 -5
  146. package/dist/Layer/LayerProvider.js +7 -7
  147. package/dist/Layer/useLayer.js +5 -5
  148. package/dist/Layout/Layout.js +21 -21
  149. package/dist/Layout/LayoutContent.js +3 -3
  150. package/dist/Layout/LayoutFooter.js +5 -5
  151. package/dist/Layout/LayoutHeader.js +5 -5
  152. package/dist/Layout/LayoutPanel.js +3 -3
  153. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  154. package/dist/Lightbox/Lightbox.js +35 -33
  155. package/dist/Lightbox/useLightbox.d.ts +0 -1
  156. package/dist/Lightbox/useLightbox.d.ts.map +1 -1
  157. package/dist/Lightbox/useLightbox.js +3 -4
  158. package/dist/Link/Link.d.ts +5 -3
  159. package/dist/Link/Link.d.ts.map +1 -1
  160. package/dist/Link/Link.js +47 -18
  161. package/dist/Link/LinkProvider.js +3 -3
  162. package/dist/Link/useLinkify.js +3 -3
  163. package/dist/List/List.js +11 -11
  164. package/dist/List/ListItem.js +11 -11
  165. package/dist/Markdown/Markdown.d.ts.map +1 -1
  166. package/dist/Markdown/Markdown.js +111 -109
  167. package/dist/MetadataList/MetadataList.js +10 -10
  168. package/dist/MetadataList/MetadataListItem.js +15 -15
  169. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  170. package/dist/MobileNav/MobileNav.js +19 -17
  171. package/dist/MobileNav/MobileNavToggle.d.ts +1 -1
  172. package/dist/MobileNav/MobileNavToggle.d.ts.map +1 -1
  173. package/dist/MobileNav/MobileNavToggle.js +9 -6
  174. package/dist/MoreMenu/MoreMenu.d.ts +1 -1
  175. package/dist/MoreMenu/MoreMenu.d.ts.map +1 -1
  176. package/dist/MoreMenu/MoreMenu.js +7 -4
  177. package/dist/MultiSelector/MultiSelector.d.ts +1 -1
  178. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  179. package/dist/MultiSelector/MultiSelector.js +69 -62
  180. package/dist/NavIcon/NavIcon.js +3 -3
  181. package/dist/NavMenu/NavHeadingMenu.js +5 -5
  182. package/dist/NavMenu/NavHeadingMenuItem.js +8 -8
  183. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  184. package/dist/NumberInput/NumberInput.js +21 -17
  185. package/dist/Outline/Outline.d.ts +1 -1
  186. package/dist/Outline/Outline.d.ts.map +1 -1
  187. package/dist/Outline/Outline.js +19 -16
  188. package/dist/OverflowList/OverflowList.js +8 -8
  189. package/dist/Overlay/Overlay.js +3 -3
  190. package/dist/Overlay/OverlayScrim.js +5 -5
  191. package/dist/Overlay/useOverlay.d.ts +0 -3
  192. package/dist/Overlay/useOverlay.d.ts.map +1 -1
  193. package/dist/Overlay/useOverlay.js +3 -6
  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 +73 -46
  197. package/dist/Popover/Popover.js +16 -16
  198. package/dist/Popover/usePopover.d.ts.map +1 -1
  199. package/dist/Popover/usePopover.js +11 -8
  200. package/dist/PowerSearch/PowerSearch.d.ts +1 -1
  201. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  202. package/dist/PowerSearch/PowerSearch.js +95 -85
  203. package/dist/PowerSearch/PowerSearchEditPopover.d.ts +1 -1
  204. package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
  205. package/dist/PowerSearch/PowerSearchEditPopover.js +109 -103
  206. package/dist/PowerSearch/PowerSearchFilterEditor.js +3 -3
  207. package/dist/PowerSearch/PowerSearchToken.d.ts.map +1 -1
  208. package/dist/PowerSearch/PowerSearchToken.js +12 -8
  209. package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
  210. package/dist/PowerSearch/PowerSearchValueEditor.js +88 -75
  211. package/dist/PowerSearch/formatFilterValue.d.ts +2 -1
  212. package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
  213. package/dist/PowerSearch/formatFilterValue.js +19 -9
  214. package/dist/PowerSearch/index.d.ts +2 -1
  215. package/dist/PowerSearch/index.d.ts.map +1 -1
  216. package/dist/PowerSearch/index.js +1 -0
  217. package/dist/PowerSearch/resolveOperatorLabel.d.ts +23 -0
  218. package/dist/PowerSearch/resolveOperatorLabel.d.ts.map +1 -0
  219. package/dist/PowerSearch/resolveOperatorLabel.js +28 -0
  220. package/dist/PowerSearch/types.d.ts +28 -2
  221. package/dist/PowerSearch/types.d.ts.map +1 -1
  222. package/dist/PowerSearch/usePowerSearchConfig.d.ts.map +1 -1
  223. package/dist/PowerSearch/usePowerSearchConfig.js +27 -27
  224. package/dist/PowerSearch/usePowerSearchSource.d.ts.map +1 -1
  225. package/dist/PowerSearch/usePowerSearchSource.js +15 -8
  226. package/dist/ProgressBar/ProgressBar.js +13 -13
  227. package/dist/RadioList/RadioList.js +7 -7
  228. package/dist/RadioList/RadioListItem.js +18 -18
  229. package/dist/Resizable/ResizeHandle.d.ts +1 -1
  230. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  231. package/dist/Resizable/ResizeHandle.js +10 -7
  232. package/dist/Section/Section.js +5 -5
  233. package/dist/SegmentedControl/SegmentedControl.js +5 -5
  234. package/dist/SegmentedControl/SegmentedControlItem.js +7 -7
  235. package/dist/SelectableCard/SelectableCard.js +5 -5
  236. package/dist/Selector/Selector.d.ts.map +1 -1
  237. package/dist/Selector/Selector.js +57 -51
  238. package/dist/Selector/SelectorOption.js +3 -3
  239. package/dist/SideNav/SideNav.d.ts.map +1 -1
  240. package/dist/SideNav/SideNav.js +38 -36
  241. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  242. package/dist/SideNav/SideNavCollapseButton.js +8 -6
  243. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  244. package/dist/SideNav/SideNavHeading.js +92 -90
  245. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  246. package/dist/SideNav/SideNavItem.js +49 -43
  247. package/dist/SideNav/SideNavSection.js +14 -14
  248. package/dist/Skeleton/Skeleton.js +3 -3
  249. package/dist/Slider/Slider.js +23 -23
  250. package/dist/Spinner/Spinner.js +9 -9
  251. package/dist/StatusDot/StatusDot.js +5 -5
  252. package/dist/Switch/Switch.d.ts.map +1 -1
  253. package/dist/Switch/Switch.js +29 -27
  254. package/dist/TabList/Tab.js +18 -18
  255. package/dist/TabList/TabList.d.ts +1 -1
  256. package/dist/TabList/TabList.d.ts.map +1 -1
  257. package/dist/TabList/TabList.js +9 -6
  258. package/dist/TabList/TabMenu.js +23 -23
  259. package/dist/Table/BaseTable.d.ts.map +1 -1
  260. package/dist/Table/BaseTable.js +39 -37
  261. package/dist/Table/Table.d.ts.map +1 -1
  262. package/dist/Table/Table.js +10 -8
  263. package/dist/Table/TableBody.js +3 -3
  264. package/dist/Table/TableCell.js +3 -3
  265. package/dist/Table/TableFooter.js +3 -3
  266. package/dist/Table/TableHeader.js +3 -3
  267. package/dist/Table/TableHeaderCell.js +3 -3
  268. package/dist/Table/TableRow.js +5 -5
  269. package/dist/Table/index.d.ts +4 -0
  270. package/dist/Table/index.d.ts.map +1 -1
  271. package/dist/Table/index.js +2 -0
  272. package/dist/Table/plugins/columnResize/useTableColumnResize.js +9 -9
  273. package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
  274. package/dist/Table/plugins/filtering/useTableFiltering.js +127 -90
  275. package/dist/Table/plugins/groupedRows/index.d.ts +3 -0
  276. package/dist/Table/plugins/groupedRows/index.d.ts.map +1 -0
  277. package/dist/Table/plugins/groupedRows/index.js +3 -0
  278. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +78 -0
  279. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -0
  280. package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +257 -0
  281. package/dist/Table/plugins/pagination/useTablePagination.d.ts.map +1 -1
  282. package/dist/Table/plugins/pagination/useTablePagination.js +12 -9
  283. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +1 -1
  284. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  285. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +30 -28
  286. package/dist/Table/plugins/rowIndex/index.d.ts +3 -0
  287. package/dist/Table/plugins/rowIndex/index.d.ts.map +1 -0
  288. package/dist/Table/plugins/rowIndex/index.js +3 -0
  289. package/dist/Table/plugins/rowIndex/useTableRowIndex.d.ts +50 -0
  290. package/dist/Table/plugins/rowIndex/useTableRowIndex.d.ts.map +1 -0
  291. package/dist/Table/plugins/rowIndex/useTableRowIndex.js +91 -0
  292. package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
  293. package/dist/Table/plugins/selection/useTableSelection.js +23 -20
  294. package/dist/Table/plugins/sortable/useTableSortable.d.ts.map +1 -1
  295. package/dist/Table/plugins/sortable/useTableSortable.js +23 -21
  296. package/dist/Table/tableContextMenu.js +9 -9
  297. package/dist/Text/Text.js +10 -10
  298. package/dist/TextArea/TextArea.js +14 -14
  299. package/dist/TextInput/TextInput.d.ts.map +1 -1
  300. package/dist/TextInput/TextInput.js +20 -16
  301. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  302. package/dist/Thumbnail/Thumbnail.js +37 -31
  303. package/dist/TimeInput/TimeInput.d.ts +1 -1
  304. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  305. package/dist/TimeInput/TimeInput.js +28 -23
  306. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  307. package/dist/Timestamp/Timestamp.js +29 -14
  308. package/dist/Toast/Toast.d.ts.map +1 -1
  309. package/dist/Toast/Toast.js +17 -15
  310. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  311. package/dist/Toast/ToastViewport.js +14 -12
  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.d.ts.map +1 -1
  316. package/dist/Token/Token.js +29 -23
  317. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  318. package/dist/Tokenizer/Tokenizer.js +33 -31
  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.d.ts +2 -1
  323. package/dist/TopNav/TopNav.d.ts.map +1 -1
  324. package/dist/TopNav/TopNav.js +36 -33
  325. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  326. package/dist/TopNav/TopNavHeading.js +72 -70
  327. package/dist/TopNav/TopNavItem.js +5 -5
  328. package/dist/TopNav/TopNavMegaMenu.js +30 -30
  329. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +10 -10
  330. package/dist/TopNav/TopNavMegaMenuItem.js +16 -16
  331. package/dist/TopNav/TopNavMenu.js +32 -32
  332. package/dist/TreeList/TreeList.d.ts.map +1 -1
  333. package/dist/TreeList/TreeList.js +13 -9
  334. package/dist/TreeList/TreeListBranches.js +11 -11
  335. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  336. package/dist/TreeList/TreeListItem.js +37 -31
  337. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  338. package/dist/Typeahead/BaseTypeahead.js +26 -22
  339. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  340. package/dist/Typeahead/Typeahead.js +15 -13
  341. package/dist/Typeahead/TypeaheadItem.js +10 -10
  342. package/dist/VStack/VStack.js +3 -3
  343. package/dist/VisuallyHidden/VisuallyHidden.d.ts +1 -3
  344. package/dist/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
  345. package/dist/VisuallyHidden/VisuallyHidden.js +1 -3
  346. package/dist/astryx.css +20 -2
  347. package/dist/astryx.umd.js +66 -64
  348. package/dist/astryx.umd.js.map +4 -4
  349. package/dist/authoring/doc.d.ts +145 -0
  350. package/dist/authoring/doc.d.ts.map +1 -0
  351. package/dist/authoring/doc.js +100 -0
  352. package/dist/authoring/index.d.ts +29 -0
  353. package/dist/authoring/index.d.ts.map +1 -0
  354. package/dist/authoring/index.js +28 -0
  355. package/dist/authoring/integration.d.ts +35 -0
  356. package/dist/authoring/integration.d.ts.map +1 -0
  357. package/dist/authoring/integration.js +30 -0
  358. package/dist/authoring/template.d.ts +66 -0
  359. package/dist/authoring/template.d.ts.map +1 -0
  360. package/dist/authoring/template.js +55 -0
  361. package/dist/config.d.ts +80 -0
  362. package/dist/config.d.ts.map +1 -0
  363. package/dist/config.js +40 -0
  364. package/dist/hooks/useKeyboardHint.js +9 -9
  365. package/dist/i18n/InternationalizationContext.d.ts +12 -0
  366. package/dist/i18n/InternationalizationContext.d.ts.map +1 -0
  367. package/dist/i18n/InternationalizationContext.js +29 -0
  368. package/dist/i18n/InternationalizationProvider.d.ts +62 -0
  369. package/dist/i18n/InternationalizationProvider.d.ts.map +1 -0
  370. package/dist/i18n/InternationalizationProvider.js +44 -0
  371. package/dist/i18n/index.d.ts +24 -0
  372. package/dist/i18n/index.d.ts.map +1 -0
  373. package/dist/i18n/index.js +21 -0
  374. package/dist/i18n/resolve.d.ts +22 -0
  375. package/dist/i18n/resolve.d.ts.map +1 -0
  376. package/dist/i18n/resolve.js +141 -0
  377. package/dist/i18n/translator.d.ts +25 -0
  378. package/dist/i18n/translator.d.ts.map +1 -0
  379. package/dist/i18n/translator.js +1 -0
  380. package/dist/i18n/types.d.ts +47 -0
  381. package/dist/i18n/types.d.ts.map +1 -0
  382. package/dist/i18n/types.js +1 -0
  383. package/dist/i18n/useTranslator.d.ts +15 -0
  384. package/dist/i18n/useTranslator.d.ts.map +1 -0
  385. package/dist/i18n/useTranslator.js +39 -0
  386. package/dist/index.d.ts +1 -0
  387. package/dist/index.d.ts.map +1 -1
  388. package/dist/index.js +3 -0
  389. package/dist/theme/MediaTheme.js +3 -3
  390. package/dist/theme/Theme.js +7 -7
  391. package/dist/theme/syntax/SyntaxTheme.js +5 -5
  392. package/locales/en.json +746 -0
  393. package/locales/pseudo.json +560 -0
  394. package/package.json +24 -3
  395. package/src/AlertDialog/AlertDialog.doc.mjs +5 -0
  396. package/src/AlertDialog/AlertDialog.tsx +4 -1
  397. package/src/AlertDialog/useImperativeAlertDialog.tsx +0 -2
  398. package/src/AppShell/AppShell.doc.mjs +8 -2
  399. package/src/AppShell/AppShell.tsx +3 -1
  400. package/src/AvatarGroup/AvatarGroup.tsx +4 -1
  401. package/src/Banner/Banner.tsx +10 -5
  402. package/src/Breadcrumbs/Breadcrumbs.tsx +4 -1
  403. package/src/Button/Button.tsx +34 -4
  404. package/src/ButtonGroup/ButtonGroup.test.tsx +386 -2
  405. package/src/ButtonGroup/ButtonGroup.tsx +27 -11
  406. package/src/Calendar/Calendar.tsx +8 -5
  407. package/src/Card/Card.doc.mjs +3 -3
  408. package/src/Carousel/Carousel.tsx +10 -7
  409. package/src/Chat/ChatComposer.tsx +5 -1
  410. package/src/Chat/ChatComposerDrawer.tsx +9 -2
  411. package/src/Chat/ChatComposerInput.tsx +10 -4
  412. package/src/Chat/ChatLayout.tsx +5 -12
  413. package/src/Chat/ChatLayoutScrollButton.tsx +4 -2
  414. package/src/Chat/ChatMessage.tsx +5 -1
  415. package/src/Chat/ChatMessageBubble.tsx +2 -0
  416. package/src/Chat/ChatMessageList.doc.mjs +1 -1
  417. package/src/Chat/ChatMessageList.tsx +2 -0
  418. package/src/Chat/ChatMessageMetadata.tsx +15 -9
  419. package/src/Chat/ChatPastedTextToken.tsx +3 -1
  420. package/src/Chat/ChatSendButton.tsx +3 -1
  421. package/src/Chat/ChatToolCalls.doc.mjs +1 -1
  422. package/src/Chat/useSpeechRecognition.ts +11 -2
  423. package/src/Chat/useTriggerMenu.tsx +4 -2
  424. package/src/CheckboxInput/CheckboxInput.test.tsx +16 -0
  425. package/src/CheckboxInput/CheckboxInput.tsx +4 -2
  426. package/src/CheckboxList/CheckboxList.doc.mjs +6 -1
  427. package/src/CheckboxList/CheckboxList.tsx +2 -0
  428. package/src/CheckboxList/CheckboxListItem.tsx +7 -1
  429. package/src/Citation/Citation.tsx +4 -2
  430. package/src/ClickableCard/ClickableCard.doc.mjs +1 -1
  431. package/src/CodeBlock/CodeBlock.tsx +91 -40
  432. package/src/Collapsible/Collapsible.doc.mjs +3 -3
  433. package/src/CommandPalette/CommandPalette.tsx +10 -3
  434. package/src/CommandPalette/CommandPaletteInput.test.tsx +1 -1
  435. package/src/CommandPalette/CommandPaletteInput.tsx +5 -1
  436. package/src/CommandPalette/CommandPaletteList.tsx +4 -1
  437. package/src/ContextMenu/ContextMenu.tsx +4 -1
  438. package/src/DateInput/DateInput.doc.mjs +2 -2
  439. package/src/DateInput/DateInput.tsx +13 -5
  440. package/src/DateRangeInput/DateRangeInput.doc.mjs +7 -7
  441. package/src/DateRangeInput/DateRangeInput.tsx +14 -6
  442. package/src/DateTimeInput/DateTimeInput.doc.mjs +2 -2
  443. package/src/DateTimeInput/DateTimeInput.tsx +17 -7
  444. package/src/Dialog/DialogHeader.tsx +4 -2
  445. package/src/DropdownMenu/DropdownMenu.tsx +12 -8
  446. package/src/EmptyState/EmptyState.doc.mjs +3 -3
  447. package/src/EmptyState/EmptyState.tsx +4 -1
  448. package/src/Field/Field.doc.mjs +2 -2
  449. package/src/FileInput/FileInput.tsx +3 -1
  450. package/src/Grid/Grid.doc.mjs +5 -5
  451. package/src/InputGroup/InputGroup.doc.mjs +1 -1
  452. package/src/Layer/useLayer.doc.mjs +2 -2
  453. package/src/Lightbox/Lightbox.doc.mjs +7 -2
  454. package/src/Lightbox/Lightbox.tsx +6 -4
  455. package/src/Lightbox/useLightbox.tsx +0 -1
  456. package/src/Link/Link.test.tsx +74 -2
  457. package/src/Link/Link.tsx +48 -3
  458. package/src/Markdown/Markdown.tsx +12 -4
  459. package/src/MobileNav/MobileNav.tsx +4 -2
  460. package/src/MobileNav/MobileNavToggle.tsx +5 -3
  461. package/src/MoreMenu/MoreMenu.tsx +4 -1
  462. package/src/MultiSelector/MultiSelector.tsx +14 -5
  463. package/src/NumberInput/NumberInput.tsx +3 -1
  464. package/src/Outline/Outline.tsx +4 -1
  465. package/src/OverflowList/OverflowList.doc.mjs +2 -2
  466. package/src/Overlay/useOverlay.tsx +0 -3
  467. package/src/Pagination/Pagination.tsx +35 -12
  468. package/src/Popover/usePopover.tsx +6 -1
  469. package/src/PowerSearch/PowerSearch.doc.mjs +9 -4
  470. package/src/PowerSearch/PowerSearch.tsx +22 -10
  471. package/src/PowerSearch/PowerSearchEditPopover.tsx +27 -20
  472. package/src/PowerSearch/PowerSearchToken.tsx +17 -6
  473. package/src/PowerSearch/PowerSearchValueEditor.tsx +34 -21
  474. package/src/PowerSearch/formatFilterValue.test.ts +282 -0
  475. package/src/PowerSearch/formatFilterValue.ts +21 -8
  476. package/src/PowerSearch/index.ts +5 -0
  477. package/src/PowerSearch/resolveOperatorLabel.ts +34 -0
  478. package/src/PowerSearch/types.ts +33 -9
  479. package/src/PowerSearch/usePowerSearchConfig.ts +59 -27
  480. package/src/PowerSearch/usePowerSearchSource.ts +17 -8
  481. package/src/RadioList/RadioList.doc.mjs +1 -1
  482. package/src/Resizable/ResizeHandle.tsx +4 -1
  483. package/src/Section/Section.doc.mjs +4 -4
  484. package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
  485. package/src/Selector/Selector.tsx +11 -6
  486. package/src/SideNav/SideNav.tsx +4 -2
  487. package/src/SideNav/SideNavCollapseButton.tsx +3 -1
  488. package/src/SideNav/SideNavHeading.tsx +5 -3
  489. package/src/SideNav/SideNavItem.tsx +3 -1
  490. package/src/Slider/Slider.doc.mjs +2 -2
  491. package/src/Stack/Stack.doc.mjs +10 -10
  492. package/src/Switch/Switch.doc.mjs +2 -2
  493. package/src/Switch/Switch.test.tsx +16 -0
  494. package/src/Switch/Switch.tsx +4 -2
  495. package/src/TabList/TabList.tsx +4 -1
  496. package/src/Table/BaseTable.tsx +8 -1
  497. package/src/Table/Table.doc.mjs +1 -1
  498. package/src/Table/Table.tsx +3 -1
  499. package/src/Table/index.ts +7 -0
  500. package/src/Table/plugins/filtering/useTableFiltering.tsx +31 -30
  501. package/src/Table/plugins/groupedRows/index.ts +7 -0
  502. package/src/Table/plugins/groupedRows/useTableGroupedRows.test.tsx +231 -0
  503. package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +351 -0
  504. package/src/Table/plugins/pagination/useTablePagination.tsx +4 -1
  505. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +8 -4
  506. package/src/Table/plugins/rowIndex/index.ts +4 -0
  507. package/src/Table/plugins/rowIndex/useTableRowIndex.test.tsx +132 -0
  508. package/src/Table/plugins/rowIndex/useTableRowIndex.tsx +114 -0
  509. package/src/Table/plugins/selection/useTableSelection.tsx +6 -7
  510. package/src/Table/plugins/sortable/useTableSortable.tsx +8 -5
  511. package/src/Table/useTableFiltering.doc.mjs +2 -2
  512. package/src/Table/useTableGroupedRows.doc.mjs +71 -0
  513. package/src/Table/useTableRowIndex.doc.mjs +50 -0
  514. package/src/Table/useTableSortable.doc.mjs +11 -11
  515. package/src/Text/Text.doc.mjs +2 -2
  516. package/src/TextInput/TextInput.tsx +3 -1
  517. package/src/Thumbnail/Thumbnail.tsx +4 -2
  518. package/src/TimeInput/TimeInput.doc.mjs +2 -2
  519. package/src/TimeInput/TimeInput.tsx +6 -2
  520. package/src/Timestamp/Timestamp.doc.mjs +4 -4
  521. package/src/Timestamp/Timestamp.test.tsx +120 -7
  522. package/src/Timestamp/Timestamp.tsx +21 -1
  523. package/src/Toast/Toast.tsx +3 -1
  524. package/src/Toast/ToastViewport.tsx +3 -1
  525. package/src/Token/Token.tsx +4 -2
  526. package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
  527. package/src/Tokenizer/Tokenizer.tsx +4 -4
  528. package/src/Toolbar/Toolbar.doc.mjs +1 -1
  529. package/src/TopNav/TopNav.doc.mjs +1 -0
  530. package/src/TopNav/TopNav.test.tsx +30 -0
  531. package/src/TopNav/TopNav.tsx +6 -4
  532. package/src/TopNav/TopNavHeading.tsx +5 -3
  533. package/src/TreeList/TreeList.tsx +5 -1
  534. package/src/TreeList/TreeListItem.tsx +6 -1
  535. package/src/Typeahead/BaseTypeahead.tsx +11 -4
  536. package/src/Typeahead/Typeahead.doc.mjs +1 -1
  537. package/src/Typeahead/Typeahead.tsx +3 -1
  538. package/src/VisuallyHidden/VisuallyHidden.tsx +1 -3
  539. package/src/authoring/doc.ts +166 -0
  540. package/src/authoring/index.test.ts +52 -0
  541. package/src/authoring/index.ts +50 -0
  542. package/src/authoring/integration.ts +42 -0
  543. package/src/authoring/template.ts +74 -0
  544. package/src/config.test.ts +16 -0
  545. package/src/config.ts +92 -0
  546. package/src/docPropLiterals.test.ts +902 -0
  547. package/src/hooks/useHotkeys.doc.mjs +5 -5
  548. package/src/i18n/InternationalizationContext.ts +39 -0
  549. package/src/i18n/InternationalizationProvider.doc.mjs +72 -0
  550. package/src/i18n/InternationalizationProvider.tsx +83 -0
  551. package/src/i18n/__tests__/e2e-pagination.test.tsx +172 -0
  552. package/src/i18n/__tests__/e2e-powersearch.test.tsx +130 -0
  553. package/src/i18n/__tests__/resolve.test.ts +284 -0
  554. package/src/i18n/index.ts +32 -0
  555. package/src/i18n/resolve.ts +165 -0
  556. package/src/i18n/translator.ts +31 -0
  557. package/src/i18n/types.ts +53 -0
  558. package/src/i18n/useTranslator.doc.mjs +46 -0
  559. package/src/i18n/useTranslator.ts +50 -0
  560. package/src/index.ts +3 -0
  561. package/dist/NavItem/index.d.ts +0 -9
  562. package/dist/NavItem/index.d.ts.map +0 -1
  563. package/dist/NavItem/index.js +0 -10
  564. package/src/NavItem/index.ts +0 -11
@@ -0,0 +1,257 @@
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 { useTranslator } from "../../../i18n/index.js";
20
+
21
+ // A synthetic group-header row injected into the flattened data. Real rows
22
+ // never carry this marker.
23
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
24
+ const GROUP_HEADER = Symbol('tableGroupHeader');
25
+ function isGroupHeader(item) {
26
+ return typeof item === 'object' && item !== null && item[GROUP_HEADER] === true;
27
+ }
28
+
29
+ // Proxy handler: any field access beyond the marker fields resolves to `''`
30
+ // so user cell renderers (`item.name.toUpperCase()`) never throw on a header.
31
+ const HEADER_PROXY_HANDLER = {
32
+ // eslint-disable-next-line @typescript-eslint/promise-function-async -- Proxy get trap, not a promise-returning fn
33
+ get(t, prop) {
34
+ if (prop === GROUP_HEADER || prop === 'groupKey' || prop === 'count') {
35
+ return t[prop];
36
+ }
37
+ return prop in t ? t[prop] : '';
38
+ }
39
+ };
40
+
41
+ /**
42
+ * Build a synthetic header row wrapped in a Proxy so arbitrary field access
43
+ * from user cell renderers (e.g. `item.name.toUpperCase()`) resolves to `''`
44
+ * instead of throwing — BaseTable evaluates `col.renderCell(item)` on every
45
+ * row (including synthetic headers) before `transformBodyRow` can replace the
46
+ * row's cells. `transformBodyRow` then discards those cells and renders a
47
+ * single full-width header cell.
48
+ */
49
+ function makeHeader(groupKey, count) {
50
+ const target = {
51
+ [GROUP_HEADER]: true,
52
+ groupKey,
53
+ count
54
+ };
55
+ return new Proxy(target, HEADER_PROXY_HANDLER);
56
+ }
57
+
58
+ /** Configuration for {@link useTableGroupedRows}. */
59
+
60
+ const styles = {
61
+ headerRow: {
62
+ kkrTdU: "x1ypdohk",
63
+ kfSwDN: "x87ps6o",
64
+ kWkggS: "xwmxj5m",
65
+ kt9PQ7: "xso031l",
66
+ kfdmCh: "x1q0q8m5",
67
+ kL6WhQ: "xw8gpjh",
68
+ $$css: true
69
+ }
70
+ };
71
+
72
+ /**
73
+ * Groups a flat data array into collapsible section rows. Each distinct
74
+ * `groupBy` value becomes a full-width section-header row with a chevron
75
+ * toggle, the group label, and a member count; collapsing hides that group's
76
+ * data rows while keeping the header visible.
77
+ *
78
+ * Mirrors {@link useTableRowExpansionState}: the consumer owns the
79
+ * `collapsedGroups` set and this hook returns `{data, plugin, idKey}` —
80
+ * pass all three to `<Table>`.
81
+ *
82
+ * @example
83
+ * ```
84
+ * const [collapsed, setCollapsed] = useState<Set<string>>(new Set());
85
+ * const grouped = useTableGroupedRows({
86
+ * data: rows,
87
+ * groupBy: r => r.team,
88
+ * collapsedGroups: collapsed,
89
+ * onToggleGroup: key =>
90
+ * setCollapsed(prev => {
91
+ * const next = new Set(prev);
92
+ * next.has(key) ? next.delete(key) : next.add(key);
93
+ * return next;
94
+ * }),
95
+ * getRowKey: r => r.id,
96
+ * });
97
+ * <Table
98
+ * data={grouped.data}
99
+ * columns={columns}
100
+ * idKey={grouped.idKey}
101
+ * plugins={{grouped: grouped.plugin}}
102
+ * />;
103
+ * ```
104
+ */
105
+ export function useTableGroupedRows(config) {
106
+ const t = useTranslator();
107
+ const {
108
+ data,
109
+ groupBy,
110
+ collapsedGroups,
111
+ onToggleGroup,
112
+ renderGroupHeader,
113
+ getRowKey: getRowKeyProp,
114
+ groupOrder
115
+ } = config;
116
+ const flattened = useMemo(() => {
117
+ if (data.length === 0) {
118
+ return [];
119
+ }
120
+
121
+ // Group preserving first-seen order.
122
+ const groups = new Map();
123
+ for (const item of data) {
124
+ const key = groupBy(item);
125
+ const bucket = groups.get(key);
126
+ if (bucket) {
127
+ bucket.push(item);
128
+ } else {
129
+ groups.set(key, [item]);
130
+ }
131
+ }
132
+
133
+ // Determine iteration order.
134
+ let keys = [...groups.keys()];
135
+ if (groupOrder && groupOrder.length > 0) {
136
+ const ordered = groupOrder.filter(k => groups.has(k));
137
+ const rest = keys.filter(k => !groupOrder.includes(k));
138
+ keys = [...ordered, ...rest];
139
+ }
140
+ const out = [];
141
+ for (const key of keys) {
142
+ const rows = groups.get(key) ?? [];
143
+ out.push(makeHeader(key, rows.length));
144
+ if (!collapsedGroups.has(key)) {
145
+ out.push(...rows);
146
+ }
147
+ }
148
+ return out;
149
+ }, [data, groupBy, collapsedGroups, groupOrder]);
150
+
151
+ // Positional fallback index, built once per flattened array so key lookup
152
+ // stays O(1) instead of O(n) per row (which would make table keying O(n²)).
153
+ const positionByItem = useMemo(() => {
154
+ if (getRowKeyProp) {
155
+ return null;
156
+ }
157
+ const map = new Map();
158
+ for (let i = 0; i < flattened.length; i++) {
159
+ map.set(flattened[i], i);
160
+ }
161
+ return map;
162
+ }, [flattened, getRowKeyProp]);
163
+ const idKey = useCallback(item => {
164
+ if (isGroupHeader(item)) {
165
+ return `__group_${item.groupKey}`;
166
+ }
167
+ if (getRowKeyProp) {
168
+ return getRowKeyProp(item);
169
+ }
170
+ return String(positionByItem?.get(item) ?? -1);
171
+ }, [getRowKeyProp, positionByItem]);
172
+ const plugin = useMemo(() => ({
173
+ // Replace a header row's pre-rendered cells with one full-width cell.
174
+ transformBodyRow(props, item) {
175
+ if (!isGroupHeader(item)) {
176
+ return props;
177
+ }
178
+ const header = item;
179
+ const collapsed = collapsedGroups.has(header.groupKey);
180
+ const toggle = () => onToggleGroup(header.groupKey);
181
+ const content = renderGroupHeader ? renderGroupHeader(header.groupKey, header.count, collapsed) : /*#__PURE__*/_jsxs("span", {
182
+ ...{
183
+ className: "x2mo6ok x1tgivj0"
184
+ },
185
+ children: [header.groupKey, ' ', /*#__PURE__*/_jsxs("span", {
186
+ ...{
187
+ className: "x1sodnla xv1l7n4"
188
+ },
189
+ children: ["(", header.count, ")"]
190
+ })]
191
+ });
192
+ return {
193
+ ...props,
194
+ htmlProps: {
195
+ ...props.htmlProps,
196
+ // Convenience: clicking anywhere on the row toggles it. The chevron
197
+ // button below is the accessible, keyboard-operable control, so the
198
+ // row keeps its implicit `row` role (no role override here).
199
+ onClick: toggle,
200
+ 'aria-expanded': !collapsed
201
+ },
202
+ styles: [...props.styles, styles.headerRow],
203
+ children:
204
+ /*#__PURE__*/
205
+ // colSpan larger than the column count is clamped by the browser
206
+ // to the actual number of columns, so the header always spans the
207
+ // full width without the plugin knowing the column count.
208
+ _jsx("td", {
209
+ colSpan: 999,
210
+ ...{
211
+ className: "xce4md1 x1vsv5vr x1t818jl"
212
+ },
213
+ children: /*#__PURE__*/_jsxs("span", {
214
+ ...{
215
+ className: "x78zum5 x6s0dn4 xzye2dw"
216
+ },
217
+ children: [/*#__PURE__*/_jsx("button", {
218
+ type: "button",
219
+ ...{
220
+ className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x1717udv x1ghz6dp x1ypdohk xv9yike x1cqbx0l"
221
+ },
222
+ onClick: e => {
223
+ e.stopPropagation();
224
+ toggle();
225
+ },
226
+ "aria-label": collapsed ? t('@astryx.tableGroupedRows.expandGroup', {
227
+ groupKey: header.groupKey
228
+ }) : t('@astryx.tableGroupedRows.collapseGroup', {
229
+ groupKey: header.groupKey
230
+ }),
231
+ "aria-expanded": !collapsed,
232
+ children: /*#__PURE__*/_jsx("span", {
233
+ ...{
234
+ 0: {
235
+ className: "x3nfvp2 x11xpdln xx6bhzk"
236
+ },
237
+ 1: {
238
+ className: "x3nfvp2 x11xpdln xx6bhzk x1iffjtl"
239
+ }
240
+ }[!!!collapsed << 0],
241
+ children: /*#__PURE__*/_jsx(Icon, {
242
+ icon: "chevronRight",
243
+ size: "xsm"
244
+ })
245
+ })
246
+ }), content]
247
+ })
248
+ })
249
+ };
250
+ }
251
+ }), [collapsedGroups, onToggleGroup, renderGroupHeader, t]);
252
+ return {
253
+ plugin,
254
+ data: flattened,
255
+ idKey
256
+ };
257
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"useTablePagination.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/pagination/useTablePagination.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AA+B7C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,wBAAwB;IAGvC,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IAEb,sEAAsE;IACtE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAIrC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAIlB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9C;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAI3B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAE1D;;;OAGG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAEnB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAE/C;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAInC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,MAAM,EAAE,wBAAwB,GAC/B,WAAW,CAAC,CAAC,CAAC,CAiGhB"}
1
+ {"version":3,"file":"useTablePagination.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/pagination/useTablePagination.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AAgC7C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,wBAAwB;IAGvC,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IAEb,sEAAsE;IACtE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAIrC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAIlB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9C;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAI3B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAE1D;;;OAGG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAEnB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAE/C;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAInC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,MAAM,EAAE,wBAAwB,GAC/B,WAAW,CAAC,CAAC,CAAC,CAmGhB"}
@@ -20,11 +20,12 @@ 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 { jsxDEV as _jsxDEV, Fragment as _Fragment } from "react/jsx-dev-runtime";
23
+ import { useTranslator } from "../../../i18n/index.js";
24
+
24
25
  // =============================================================================
25
26
  // Styles
26
27
  // =============================================================================
27
-
28
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
28
29
  const styles = {
29
30
  wrapper: {
30
31
  k1xSpc: "x78zum5",
@@ -98,6 +99,7 @@ const styles = {
98
99
  * ```
99
100
  */
100
101
  export function useTablePagination(config) {
102
+ const t = useTranslator();
101
103
  const {
102
104
  page,
103
105
  onPageChange,
@@ -111,8 +113,9 @@ export function useTablePagination(config) {
111
113
  size = 'md',
112
114
  position = 'below',
113
115
  align = 'center',
114
- label = 'Table pagination'
116
+ label: labelFromProps
115
117
  } = config;
118
+ const label = labelFromProps ?? t('@astryx.table.pagination.label');
116
119
 
117
120
  // Same guard as Pagination itself: 0/NaN/negative pageSize would produce an
118
121
  // Infinity/NaN totalPages here, which bypasses Pagination's own coercion
@@ -166,15 +169,15 @@ export function useTablePagination(config) {
166
169
  if (isSinglePage) {
167
170
  return children;
168
171
  }
169
- const makeWrapper = side => /*#__PURE__*/_jsxDEV("div", {
172
+ const makeWrapper = side => /*#__PURE__*/_jsx("div", {
170
173
  ...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__*/_jsxDEV(Pagination, {
174
+ children: /*#__PURE__*/_jsx(Pagination, {
172
175
  ...props
173
- }, void 0, false)
174
- }, void 0, false);
175
- return /*#__PURE__*/_jsxDEV(_Fragment, {
176
+ })
177
+ });
178
+ return /*#__PURE__*/_jsxs(_Fragment, {
176
179
  children: [(pos === 'above' || pos === 'both') && makeWrapper('above'), children, (pos === 'below' || pos === 'both') && makeWrapper('below')]
177
- }, void 0, true);
180
+ });
178
181
  }
179
182
  }), []);
180
183
  }
@@ -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,
@@ -1 +1 @@
1
- {"version":3,"file":"useTableRowExpansion.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/rowExpansion/useTableRowExpansion.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACV,WAAW,EAKZ,MAAM,aAAa,CAAC;AAMrB;;;;;;;GAOG;AACH,MAAM,WAAW,0BAA0B,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3E,0CAA0C;IAC1C,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,gDAAgD;IAChD,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,kDAAkD;IAClD,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAC/B,sEAAsE;IACtE,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IAC9B,kEAAkE;IAClE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAC/B,uFAAuF;IACvF,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IAC3C;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC;IAC1C,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC/C;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,+BAA+B,CAC9C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEjC,mCAAmC;IACnC,QAAQ,EAAE,CAAC,EAAE,CAAC;IACd,qEAAqE;IACrE,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IAC9B,kDAAkD;IAClD,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAC/B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IAC3C,qDAAqD;IACrD,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,+CAA+C;IAC/C,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,+BAA+B,CAC9C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEjC,qEAAqE;IACrE,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,4DAA4D;IAC5D,eAAe,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC;CAChD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC3E,QAAQ,EACR,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,eAAe,GAChB,EAAE,+BAA+B,CAAC,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC,CAAC,CAyHzE;AAuGD,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpE,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAAC,GACpC,WAAW,CAAC,CAAC,CAAC,CAwOhB"}
1
+ {"version":3,"file":"useTableRowExpansion.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/rowExpansion/useTableRowExpansion.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,WAAW,EAKZ,MAAM,aAAa,CAAC;AAMrB;;;;;;;GAOG;AACH,MAAM,WAAW,0BAA0B,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3E,0CAA0C;IAC1C,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,gDAAgD;IAChD,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,kDAAkD;IAClD,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAC/B,sEAAsE;IACtE,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IAC9B,kEAAkE;IAClE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAC/B,uFAAuF;IACvF,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IAC3C;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC;IAC1C,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC/C;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,+BAA+B,CAC9C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEjC,mCAAmC;IACnC,QAAQ,EAAE,CAAC,EAAE,CAAC;IACd,qEAAqE;IACrE,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IAC9B,kDAAkD;IAClD,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAC/B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IAC3C,qDAAqD;IACrD,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,+CAA+C;IAC/C,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,+BAA+B,CAC9C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEjC,qEAAqE;IACrE,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,4DAA4D;IAC5D,eAAe,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC;CAChD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC3E,QAAQ,EACR,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,eAAe,GAChB,EAAE,+BAA+B,CAAC,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC,CAAC,CAyHzE;AAuGD,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpE,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAAC,GACpC,WAAW,CAAC,CAAC,CAAC,CA2OhB"}
@@ -17,6 +17,7 @@ import "../../../theme/tokens.stylex.js";
17
17
  import { spacingVars, colorVars, radiusVars } from "../../../theme/tokens.stylex.js";
18
18
  import { Icon } from "../../../Icon/index.js";
19
19
  import { resolveContextActions } from "../../tableContextMenu.js";
20
+ import { useTranslator } from "../../../i18n/index.js";
20
21
 
21
22
  // =============================================================================
22
23
  // Config
@@ -39,7 +40,7 @@ import { resolveContextActions } from "../../tableContextMenu.js";
39
40
  * plugin needs — the flattened `data`, per-row depth, expand/collapse
40
41
  * handlers, and the expand-all toggle state.
41
42
  */
42
- import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
43
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
43
44
  /**
44
45
  * Manages row-expansion state and derives the config for
45
46
  * {@link useTableRowExpansion}. This is the recommended entry point — it
@@ -47,7 +48,7 @@ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
47
48
  * computing the expand-all state.
48
49
  *
49
50
  * @example
50
- * ```tsx
51
+ * ```
51
52
  * const [expandedKeys, setExpandedKeys] = useState<Set<string>>(new Set());
52
53
  * const {data, expansionConfig} = useTableRowExpansionState({
53
54
  * baseData: tree,
@@ -196,7 +197,7 @@ function ExpansionChevron({
196
197
  onToggle,
197
198
  ariaLabel
198
199
  }) {
199
- return /*#__PURE__*/_jsxDEV("button", {
200
+ return /*#__PURE__*/_jsx("button", {
200
201
  type: "button",
201
202
  ...{
202
203
  className: "x3nfvp2 x6s0dn4 xl56j7k xvy4d1p xxk0z11 xx3sua9 x1ypdohk xv9yike xefglzl xx6bhzk x1717udv x2lah0s x1ilzqfv x1cqbx0l"
@@ -207,7 +208,7 @@ function ExpansionChevron({
207
208
  },
208
209
  "aria-label": ariaLabel,
209
210
  "aria-expanded": isExpanded,
210
- children: /*#__PURE__*/_jsxDEV("span", {
211
+ children: /*#__PURE__*/_jsx("span", {
211
212
  ...{
212
213
  0: {
213
214
  className: "x3nfvp2 x11xpdln xx6bhzk"
@@ -216,12 +217,12 @@ function ExpansionChevron({
216
217
  className: "x3nfvp2 x11xpdln xx6bhzk x1iffjtl"
217
218
  }
218
219
  }[!!isExpanded << 0],
219
- children: /*#__PURE__*/_jsxDEV(Icon, {
220
+ children: /*#__PURE__*/_jsx(Icon, {
220
221
  icon: "chevronRight",
221
222
  size: "xsm"
222
- }, void 0, false)
223
- }, void 0, false)
224
- }, void 0, false);
223
+ })
224
+ })
225
+ });
225
226
  }
226
227
 
227
228
  // =============================================================================
@@ -229,6 +230,7 @@ function ExpansionChevron({
229
230
  // =============================================================================
230
231
 
231
232
  export function useTableRowExpansion(config) {
233
+ const t = useTranslator();
232
234
  const {
233
235
  expandedKeys,
234
236
  onToggle,
@@ -261,13 +263,13 @@ export function useTableRowExpansion(config) {
261
263
  return null;
262
264
  }
263
265
  const isExpanded = expandedKeys.has(key);
264
- return /*#__PURE__*/_jsxDEV(ExpansionChevron, {
266
+ return /*#__PURE__*/_jsx(ExpansionChevron, {
265
267
  isExpanded: isExpanded,
266
268
  onToggle: () => onToggle(key),
267
- ariaLabel: isExpanded ? 'Collapse row' : 'Expand row'
268
- }, void 0, false);
269
+ ariaLabel: isExpanded ? t('@astryx.tableRowExpansion.collapseRow') : t('@astryx.tableRowExpansion.expandRow')
270
+ });
269
271
  }
270
- }), [expandedKeys, onToggle, getRowKey, getChildren, getIsItemExpandable, getDepth]);
272
+ }), [expandedKeys, onToggle, getRowKey, getChildren, getIsItemExpandable, getDepth, t]);
271
273
  return useMemo(() => ({
272
274
  transformColumns(columns) {
273
275
  // Track the first user column for indentation.
@@ -295,19 +297,19 @@ export function useTableRowExpansion(config) {
295
297
  const key = getRowKey(item);
296
298
  const isExpanded = expandedKeys.has(key);
297
299
  const expandable = getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0;
298
- const chevron = expandable ? /*#__PURE__*/_jsxDEV(ExpansionChevron, {
300
+ const chevron = expandable ? /*#__PURE__*/_jsx(ExpansionChevron, {
299
301
  isExpanded: isExpanded,
300
302
  onToggle: () => onToggle(key),
301
- ariaLabel: isExpanded ? 'Collapse row' : 'Expand row'
302
- }, void 0, false) : /*#__PURE__*/_jsxDEV("span", {
303
+ ariaLabel: isExpanded ? t('@astryx.tableRowExpansion.collapseRow') : t('@astryx.tableRowExpansion.expandRow')
304
+ }) : /*#__PURE__*/_jsx("span", {
303
305
  ...{
304
306
  className: "x1rg5ohu xvy4d1p xxk0z11 x2lah0s"
305
307
  }
306
- }, void 0, false);
307
- return /*#__PURE__*/_jsxDEV("div", {
308
+ });
309
+ return /*#__PURE__*/_jsxs("div", {
308
310
  ...stylex.props(expansionStyles.indentedCell, indent > 0 && expansionStyles.indent(indent)),
309
311
  children: [chevron, originalContent]
310
- }, void 0, true);
312
+ });
311
313
  }
312
314
  };
313
315
  });
@@ -323,14 +325,14 @@ export function useTableRowExpansion(config) {
323
325
  const allExpanded = isAllExpanded === true;
324
326
  return {
325
327
  ...props,
326
- content: /*#__PURE__*/_jsxDEV("button", {
328
+ content: /*#__PURE__*/_jsx("button", {
327
329
  type: "button",
328
330
  ...{
329
331
  className: "x3nfvp2 x6s0dn4 xl56j7k xvy4d1p xxk0z11 xx3sua9 x1ypdohk xv9yike xefglzl xx6bhzk x1717udv x2lah0s x1ilzqfv x1cqbx0l"
330
332
  },
331
333
  onClick: () => onToggleExpandAll(!allExpanded),
332
- "aria-label": allExpanded ? 'Collapse all rows' : 'Expand all rows',
333
- children: /*#__PURE__*/_jsxDEV("span", {
334
+ "aria-label": allExpanded ? t('@astryx.tableRowExpansion.collapseAllRows') : t('@astryx.tableRowExpansion.expandAllRows'),
335
+ children: /*#__PURE__*/_jsx("span", {
334
336
  ...{
335
337
  0: {
336
338
  className: "x3nfvp2 x11xpdln xx6bhzk"
@@ -339,12 +341,12 @@ export function useTableRowExpansion(config) {
339
341
  className: "x3nfvp2 x11xpdln xx6bhzk x1iffjtl"
340
342
  }
341
343
  }[!!allExpanded << 0],
342
- children: /*#__PURE__*/_jsxDEV(Icon, {
344
+ children: /*#__PURE__*/_jsx(Icon, {
343
345
  icon: "chevronRight",
344
346
  size: "xsm"
345
- }, void 0, false)
346
- }, void 0, false)
347
- }, void 0, false)
347
+ })
348
+ })
349
+ })
348
350
  };
349
351
  }
350
352
  return {
@@ -367,11 +369,11 @@ export function useTableRowExpansion(config) {
367
369
  id: 'row-expansion-toggle',
368
370
  group: 'row-expansion',
369
371
  label: isExpanded ? 'Collapse row' : 'Expand row',
370
- icon: /*#__PURE__*/_jsxDEV(Icon, {
372
+ icon: /*#__PURE__*/_jsx(Icon, {
371
373
  icon: isExpanded ? 'chevronDown' : 'chevronRight',
372
374
  size: "xsm",
373
375
  "aria-hidden": true
374
- }, void 0, false),
376
+ }),
375
377
  onSelect: () => onToggle(key)
376
378
  }]
377
379
  };
@@ -394,5 +396,5 @@ export function useTableRowExpansion(config) {
394
396
  styles: [...props.styles, expansionStyles.clickableRow]
395
397
  };
396
398
  }
397
- }), [expandedKeys, getRowKey, onToggle, getChildren, getDepth, getIsItemExpandable, hasRowClickExpansion, isAllExpanded, onToggleExpandAll, expansionColumn]);
399
+ }), [expandedKeys, getRowKey, onToggle, getChildren, getDepth, getIsItemExpandable, hasRowClickExpansion, isAllExpanded, onToggleExpandAll, expansionColumn, t]);
398
400
  }
@@ -0,0 +1,3 @@
1
+ export { useTableRowIndex } from './useTableRowIndex';
2
+ export type { UseTableRowIndexConfig } from './useTableRowIndex';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/rowIndex/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,YAAY,EAAC,sBAAsB,EAAC,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ export { useTableRowIndex } from "./useTableRowIndex.js";
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @file useTableRowIndex.tsx
3
+ * @input React, StyleX, Table types + the rendered data array
4
+ * @output Exports useTableRowIndex hook + config type
5
+ * @position Row-index plugin; consumed by Table via plugins prop
6
+ *
7
+ * SYNC: When modified, update these files to stay in sync:
8
+ * - /packages/core/src/Table/index.ts (exports)
9
+ */
10
+ import { type ReactNode } from 'react';
11
+ import type { TablePlugin } from '../../types';
12
+ /**
13
+ * Configuration for {@link useTableRowIndex}.
14
+ *
15
+ * Astryx's `renderCell` receives only the row item (not its position), so the
16
+ * plugin needs the rendered `data` array — the same array passed to
17
+ * `<Table data>` — to derive each row's 1-based ordinal. Pass `getRowKey` when
18
+ * items don't have a stable identity by reference (e.g. new objects each
19
+ * render); it must return a **unique** string per row (duplicate keys collapse
20
+ * to a single ordinal).
21
+ */
22
+ export interface UseTableRowIndexConfig<T extends Record<string, unknown>> {
23
+ /** The data array currently rendered by the table (post sort/filter/page). */
24
+ data: T[];
25
+ /**
26
+ * Optional key extractor returning a **unique** string per row. When
27
+ * provided, index lookup is keyed by the returned string (stable across new
28
+ * object identities); otherwise items are matched by reference identity.
29
+ * For a stable plugin identity across renders, memoize this with
30
+ * `useCallback`.
31
+ */
32
+ getRowKey?: (item: T) => string;
33
+ /** Header label for the index column. @default '#' */
34
+ label?: ReactNode;
35
+ /** First index value. @default 1 */
36
+ startFrom?: number;
37
+ }
38
+ /**
39
+ * Returns a {@link TablePlugin} that prepends a right-aligned, monospaced
40
+ * row-number column. Numbering follows the order of the rendered `data` array,
41
+ * so it reflects the current sort / filter / pagination view.
42
+ *
43
+ * @example
44
+ * ```
45
+ * const rowIndex = useTableRowIndex({data});
46
+ * <Table data={data} columns={columns} idKey="id" plugins={{rowIndex}} />;
47
+ * ```
48
+ */
49
+ export declare function useTableRowIndex<T extends Record<string, unknown>>(config: UseTableRowIndexConfig<T>): TablePlugin<T>;
50
+ //# sourceMappingURL=useTableRowIndex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTableRowIndex.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/rowIndex/useTableRowIndex.tsx"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,EAAU,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAI9C,OAAO,KAAK,EAAc,WAAW,EAAC,MAAM,aAAa,CAAC;AAE1D;;;;;;;;;GASG;AACH,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACvE,8EAA8E;IAC9E,IAAI,EAAE,CAAC,EAAE,CAAC;IACV;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAChC,sDAAsD;IACtD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAaD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAChC,WAAW,CAAC,CAAC,CAAC,CA0ChB"}
@@ -0,0 +1,91 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file useTableRowIndex.tsx
7
+ * @input React, StyleX, Table types + the rendered data array
8
+ * @output Exports useTableRowIndex hook + config type
9
+ * @position Row-index 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 { useMemo } from 'react';
15
+ import * as stylex from '@stylexjs/stylex';
16
+ import "../../../theme/tokens.stylex.js";
17
+ import { colorVars, typeScaleVars } from "../../../theme/tokens.stylex.js";
18
+
19
+ /**
20
+ * Configuration for {@link useTableRowIndex}.
21
+ *
22
+ * Astryx's `renderCell` receives only the row item (not its position), so the
23
+ * plugin needs the rendered `data` array — the same array passed to
24
+ * `<Table data>` — to derive each row's 1-based ordinal. Pass `getRowKey` when
25
+ * items don't have a stable identity by reference (e.g. new objects each
26
+ * render); it must return a **unique** string per row (duplicate keys collapse
27
+ * to a single ordinal).
28
+ */
29
+ import { jsx as _jsx } from "react/jsx-runtime";
30
+ const INDEX_COLUMN_WIDTH = {
31
+ type: 'pixel',
32
+ value: 48
33
+ };
34
+ /**
35
+ * Returns a {@link TablePlugin} that prepends a right-aligned, monospaced
36
+ * row-number column. Numbering follows the order of the rendered `data` array,
37
+ * so it reflects the current sort / filter / pagination view.
38
+ *
39
+ * @example
40
+ * ```
41
+ * const rowIndex = useTableRowIndex({data});
42
+ * <Table data={data} columns={columns} idKey="id" plugins={{rowIndex}} />;
43
+ * ```
44
+ */
45
+ export function useTableRowIndex(config) {
46
+ const {
47
+ data,
48
+ getRowKey,
49
+ label = '#',
50
+ startFrom = 1
51
+ } = config;
52
+
53
+ // Single item → ordinal lookup, built in one pass and rebuilt only when the
54
+ // data array or key extractor changes. Keyed by getRowKey when provided
55
+ // (stable across new object identities), otherwise by object reference.
56
+ const lookup = useMemo(() => {
57
+ const map = new Map();
58
+ for (let i = 0; i < data.length; i++) {
59
+ const item = data[i];
60
+ map.set(getRowKey ? getRowKey(item) : item, i);
61
+ }
62
+ return item => map.get(getRowKey ? getRowKey(item) : item);
63
+ }, [data, getRowKey]);
64
+
65
+ // The plugin object depends only on the stable lookup and the presentational
66
+ // props — not on data directly — so it stays as stable as its inputs allow.
67
+ return useMemo(() => ({
68
+ transformColumns(columns) {
69
+ const indexColumn = {
70
+ key: '__rowIndex',
71
+ header: label,
72
+ width: INDEX_COLUMN_WIDTH,
73
+ align: 'end',
74
+ resizable: false,
75
+ renderCell: item => {
76
+ const idx = lookup(item);
77
+ if (idx == null) {
78
+ return null;
79
+ }
80
+ return /*#__PURE__*/_jsx("span", {
81
+ ...{
82
+ className: "x9m5x89 x141an7d xss6m8b xv1l7n4"
83
+ },
84
+ children: idx + startFrom
85
+ });
86
+ }
87
+ };
88
+ return [indexColumn, ...columns];
89
+ }
90
+ }), [label, startFrom, lookup]);
91
+ }