@astryxdesign/core 0.1.8 → 0.1.9-canary.02ef052

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 (728) hide show
  1. package/CHANGELOG.md +100 -0
  2. package/dist/AppShell/AppShell.d.ts.map +1 -1
  3. package/dist/AppShell/AppShell.js +6 -2
  4. package/dist/AppShell/AppShellMobileContext.d.ts +8 -0
  5. package/dist/AppShell/AppShellMobileContext.d.ts.map +1 -1
  6. package/dist/Avatar/Avatar.d.ts +58 -3
  7. package/dist/Avatar/Avatar.d.ts.map +1 -1
  8. package/dist/Avatar/Avatar.js +240 -53
  9. package/dist/Avatar/AvatarStatusDot.d.ts +35 -5
  10. package/dist/Avatar/AvatarStatusDot.d.ts.map +1 -1
  11. package/dist/Avatar/AvatarStatusDot.js +144 -19
  12. package/dist/AvatarGroup/AvatarGroup.d.ts +7 -1
  13. package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
  14. package/dist/AvatarGroup/AvatarGroup.js +58 -6
  15. package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
  16. package/dist/AvatarGroup/AvatarGroupOverflow.js +1 -0
  17. package/dist/Banner/Banner.d.ts +9 -1
  18. package/dist/Banner/Banner.d.ts.map +1 -1
  19. package/dist/Banner/Banner.js +33 -4
  20. package/dist/Breadcrumbs/BreadcrumbItem.d.ts +31 -2
  21. package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  22. package/dist/Breadcrumbs/BreadcrumbItem.js +215 -6
  23. package/dist/Breadcrumbs/index.d.ts +6 -0
  24. package/dist/Breadcrumbs/index.d.ts.map +1 -1
  25. package/dist/Breadcrumbs/index.js +10 -1
  26. package/dist/Button/Button.d.ts +8 -2
  27. package/dist/Button/Button.d.ts.map +1 -1
  28. package/dist/Button/Button.js +33 -4
  29. package/dist/ButtonGroup/ButtonGroup.d.ts +9 -1
  30. package/dist/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  31. package/dist/ButtonGroup/ButtonGroup.js +30 -1
  32. package/dist/Calendar/Calendar.d.ts.map +1 -1
  33. package/dist/Calendar/Calendar.js +80 -11
  34. package/dist/Calendar/dayCellUtils.d.ts +4 -4
  35. package/dist/Calendar/dayCellUtils.js +3 -3
  36. package/dist/Calendar/styles.d.ts +30 -31
  37. package/dist/Calendar/styles.d.ts.map +1 -1
  38. package/dist/Calendar/styles.js +30 -31
  39. package/dist/Card/Card.d.ts +8 -2
  40. package/dist/Card/Card.d.ts.map +1 -1
  41. package/dist/Card/Card.js +28 -2
  42. package/dist/Carousel/Carousel.d.ts +4 -1
  43. package/dist/Carousel/Carousel.d.ts.map +1 -1
  44. package/dist/Carousel/Carousel.js +46 -16
  45. package/dist/Chat/ChatComposer.d.ts +8 -0
  46. package/dist/Chat/ChatComposer.d.ts.map +1 -1
  47. package/dist/Chat/ChatComposer.js +46 -7
  48. package/dist/Chat/ChatComposerDrawer.d.ts +2 -0
  49. package/dist/Chat/ChatComposerDrawer.d.ts.map +1 -1
  50. package/dist/Chat/ChatComposerDrawer.js +11 -1
  51. package/dist/Chat/ChatComposerInput.d.ts +20 -3
  52. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  53. package/dist/Chat/ChatComposerInput.js +36 -4
  54. package/dist/Chat/ChatContext.d.ts +33 -0
  55. package/dist/Chat/ChatContext.d.ts.map +1 -1
  56. package/dist/Chat/ChatContext.js +16 -2
  57. package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
  58. package/dist/Chat/ChatDictationButton.js +4 -2
  59. package/dist/Chat/ChatLayout.d.ts.map +1 -1
  60. package/dist/Chat/ChatLayout.js +4 -4
  61. package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
  62. package/dist/Chat/ChatLayoutScrollButton.js +4 -4
  63. package/dist/Chat/ChatMessageMetadata.d.ts.map +1 -1
  64. package/dist/Chat/ChatSendButton.d.ts.map +1 -1
  65. package/dist/Chat/ChatSendButton.js +7 -1
  66. package/dist/Chat/ChatToolCalls.d.ts +5 -1
  67. package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
  68. package/dist/Chat/ChatToolCalls.js +27 -11
  69. package/dist/Chat/index.d.ts +2 -1
  70. package/dist/Chat/index.d.ts.map +1 -1
  71. package/dist/Chat/index.js +1 -1
  72. package/dist/Chat/useChatStreamScroll.d.ts +2 -1
  73. package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
  74. package/dist/Chat/useChatStreamScroll.js +22 -8
  75. package/dist/Chat/useSpeechRecognition.d.ts +0 -1
  76. package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
  77. package/dist/Chat/useSpeechRecognition.js +1 -1
  78. package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
  79. package/dist/Chat/useTriggerMenu.js +2 -2
  80. package/dist/CheckboxInput/CheckboxInput.js +5 -5
  81. package/dist/CheckboxList/CheckboxListItem.d.ts +20 -1
  82. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  83. package/dist/CheckboxList/CheckboxListItem.js +11 -1
  84. package/dist/Citation/Citation.d.ts +22 -1
  85. package/dist/Citation/Citation.d.ts.map +1 -1
  86. package/dist/Citation/Citation.js +20 -6
  87. package/dist/ClickableCard/ClickableCard.d.ts +9 -2
  88. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  89. package/dist/ClickableCard/ClickableCard.js +5 -2
  90. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  91. package/dist/CodeBlock/CodeBlock.js +22 -9
  92. package/dist/Collapsible/Collapsible.d.ts.map +1 -1
  93. package/dist/Collapsible/Collapsible.js +3 -1
  94. package/dist/CommandPalette/CommandPalette.d.ts +2 -2
  95. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  96. package/dist/CommandPalette/CommandPalette.js +45 -4
  97. package/dist/CommandPalette/CommandPaletteGroup.d.ts.map +1 -1
  98. package/dist/CommandPalette/CommandPaletteGroup.js +9 -2
  99. package/dist/CommandPalette/CommandPaletteInput.d.ts +7 -1
  100. package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
  101. package/dist/CommandPalette/CommandPaletteInput.js +6 -1
  102. package/dist/CommandPalette/CommandPaletteItem.js +1 -1
  103. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  104. package/dist/ContextMenu/ContextMenu.js +14 -5
  105. package/dist/ContextMenu/index.d.ts +1 -0
  106. package/dist/ContextMenu/index.d.ts.map +1 -1
  107. package/dist/ContextMenu/index.js +3 -1
  108. package/dist/DateInput/DateInput.d.ts +56 -2
  109. package/dist/DateInput/DateInput.d.ts.map +1 -1
  110. package/dist/DateInput/DateInput.js +59 -21
  111. package/dist/DateInput/index.d.ts +1 -1
  112. package/dist/DateInput/index.d.ts.map +1 -1
  113. package/dist/DateRangeInput/DateRangeInput.d.ts +10 -2
  114. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  115. package/dist/DateRangeInput/DateRangeInput.js +23 -20
  116. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  117. package/dist/DateTimeInput/DateTimeInput.js +33 -19
  118. package/dist/Dialog/Dialog.d.ts +3 -0
  119. package/dist/Dialog/Dialog.d.ts.map +1 -1
  120. package/dist/Dialog/Dialog.js +57 -6
  121. package/dist/Dialog/DialogContext.d.ts +7 -0
  122. package/dist/Dialog/DialogContext.d.ts.map +1 -1
  123. package/dist/Dialog/DialogContext.js +2 -2
  124. package/dist/Dialog/DialogHeader.d.ts +5 -2
  125. package/dist/Dialog/DialogHeader.d.ts.map +1 -1
  126. package/dist/Dialog/DialogHeader.js +6 -1
  127. package/dist/Divider/Divider.js +1 -1
  128. package/dist/DropdownMenu/DropdownMenu.d.ts +6 -0
  129. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  130. package/dist/DropdownMenu/DropdownMenu.js +22 -5
  131. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +1 -2
  132. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
  133. package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +5 -3
  134. package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
  135. package/dist/DropdownMenu/DropdownMenuItem.js +5 -2
  136. package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts +1 -2
  137. package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts.map +1 -1
  138. package/dist/DropdownMenu/DropdownMenuRadioGroup.js +1 -2
  139. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
  140. package/dist/DropdownMenu/DropdownMenuRadioItem.js +4 -1
  141. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +104 -0
  142. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -0
  143. package/dist/DropdownMenu/DropdownMenuSubMenu.js +427 -0
  144. package/dist/DropdownMenu/index.d.ts +10 -0
  145. package/dist/DropdownMenu/index.d.ts.map +1 -1
  146. package/dist/DropdownMenu/index.js +13 -0
  147. package/dist/DropdownMenu/menuItemHover.d.ts +23 -0
  148. package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -0
  149. package/dist/DropdownMenu/menuItemHover.js +33 -0
  150. package/dist/DropdownMenu/menuItemRoles.d.ts +8 -0
  151. package/dist/DropdownMenu/menuItemRoles.d.ts.map +1 -1
  152. package/dist/DropdownMenu/menuItemRoles.js +10 -1
  153. package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
  154. package/dist/DropdownMenu/renderDropdownItems.js +21 -6
  155. package/dist/Field/Field.d.ts +3 -1
  156. package/dist/Field/Field.d.ts.map +1 -1
  157. package/dist/Field/Field.js +6 -4
  158. package/dist/Field/FieldLabel.d.ts +1 -1
  159. package/dist/Field/FieldLabel.d.ts.map +1 -1
  160. package/dist/Field/FieldLabel.js +43 -16
  161. package/dist/Field/inputStyles.stylex.d.ts +1 -0
  162. package/dist/Field/inputStyles.stylex.d.ts.map +1 -1
  163. package/dist/Field/inputStyles.stylex.js +1 -0
  164. package/dist/FieldStatus/FieldStatus.d.ts +18 -0
  165. package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
  166. package/dist/FieldStatus/FieldStatus.js +60 -6
  167. package/dist/FileInput/FileInput.d.ts +10 -2
  168. package/dist/FileInput/FileInput.d.ts.map +1 -1
  169. package/dist/FileInput/FileInput.js +54 -35
  170. package/dist/HoverCard/HoverCard.d.ts +9 -1
  171. package/dist/HoverCard/HoverCard.d.ts.map +1 -1
  172. package/dist/HoverCard/HoverCard.js +2 -0
  173. package/dist/HoverCard/useHoverCard.d.ts +8 -0
  174. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  175. package/dist/HoverCard/useHoverCard.js +17 -6
  176. package/dist/Icon/Icon.d.ts +22 -3
  177. package/dist/Icon/Icon.d.ts.map +1 -1
  178. package/dist/Icon/Icon.js +19 -3
  179. package/dist/Item/Item.d.ts +6 -1
  180. package/dist/Item/Item.d.ts.map +1 -1
  181. package/dist/Item/Item.js +22 -1
  182. package/dist/Layer/useLayer.d.ts +6 -0
  183. package/dist/Layer/useLayer.d.ts.map +1 -1
  184. package/dist/Layer/useLayer.js +2 -0
  185. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  186. package/dist/Lightbox/Lightbox.js +19 -13
  187. package/dist/Markdown/Markdown.d.ts.map +1 -1
  188. package/dist/Markdown/Markdown.js +7 -0
  189. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  190. package/dist/MobileNav/MobileNav.js +6 -1
  191. package/dist/MobileNav/MobileNavToggle.d.ts.map +1 -1
  192. package/dist/MobileNav/MobileNavToggle.js +4 -0
  193. package/dist/MultiSelector/MultiSelector.d.ts +9 -1
  194. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  195. package/dist/MultiSelector/MultiSelector.js +104 -50
  196. package/dist/MultiSelector/hooks.d.ts.map +1 -1
  197. package/dist/MultiSelector/hooks.js +16 -0
  198. package/dist/NavMenu/NavHeadingMenuItem.js +1 -1
  199. package/dist/NumberInput/NumberInput.d.ts +10 -2
  200. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  201. package/dist/NumberInput/NumberInput.js +22 -17
  202. package/dist/Outline/Outline.d.ts +0 -1
  203. package/dist/Outline/Outline.d.ts.map +1 -1
  204. package/dist/Outline/Outline.js +0 -1
  205. package/dist/OverflowList/OverflowList.d.ts +20 -3
  206. package/dist/OverflowList/OverflowList.d.ts.map +1 -1
  207. package/dist/OverflowList/OverflowList.js +29 -4
  208. package/dist/Pagination/Pagination.d.ts.map +1 -1
  209. package/dist/Pagination/Pagination.js +11 -3
  210. package/dist/Popover/Popover.d.ts.map +1 -1
  211. package/dist/Popover/Popover.js +3 -2
  212. package/dist/Popover/usePopover.d.ts.map +1 -1
  213. package/dist/Popover/usePopover.js +3 -9
  214. package/dist/PowerSearch/PowerSearch.d.ts +9 -2
  215. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  216. package/dist/PowerSearch/PowerSearch.js +2 -0
  217. package/dist/PowerSearch/PowerSearchEditPopover.js +1 -1
  218. package/dist/PowerSearch/usePowerSearchSource.d.ts.map +1 -1
  219. package/dist/RadioList/RadioList.d.ts +2 -2
  220. package/dist/RadioList/RadioListItem.js +4 -4
  221. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  222. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  223. package/dist/SegmentedControl/SegmentedControlItem.js +2 -1
  224. package/dist/SelectableCard/SelectableCard.d.ts +9 -2
  225. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  226. package/dist/SelectableCard/SelectableCard.js +16 -13
  227. package/dist/Selector/Selector.d.ts +8 -0
  228. package/dist/Selector/Selector.d.ts.map +1 -1
  229. package/dist/Selector/Selector.js +65 -19
  230. package/dist/Selector/hooks.d.ts.map +1 -1
  231. package/dist/Selector/hooks.js +16 -0
  232. package/dist/SideNav/SideNav.d.ts.map +1 -1
  233. package/dist/SideNav/SideNav.js +5 -5
  234. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  235. package/dist/SideNav/SideNavCollapseButton.js +13 -10
  236. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  237. package/dist/SideNav/SideNavHeading.js +21 -8
  238. package/dist/SideNav/SideNavItem.d.ts +1 -1
  239. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  240. package/dist/SideNav/SideNavItem.js +12 -10
  241. package/dist/Slider/Slider.d.ts.map +1 -1
  242. package/dist/Slider/Slider.js +106 -36
  243. package/dist/Stack/stack.stylex.d.ts +9 -9
  244. package/dist/Switch/Switch.d.ts +8 -1
  245. package/dist/Switch/Switch.d.ts.map +1 -1
  246. package/dist/Switch/Switch.js +160 -91
  247. package/dist/TabList/Tab.js +2 -2
  248. package/dist/TabList/TabMenu.js +1 -1
  249. package/dist/Table/BaseTable.d.ts.map +1 -1
  250. package/dist/Table/BaseTable.js +33 -6
  251. package/dist/Table/TableCell.js +3 -3
  252. package/dist/Table/TableHeaderCell.js +3 -3
  253. package/dist/Table/index.d.ts +2 -0
  254. package/dist/Table/index.d.ts.map +1 -1
  255. package/dist/Table/index.js +1 -0
  256. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
  257. package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +15 -11
  258. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  259. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +36 -26
  260. package/dist/Table/plugins/rowStatus/index.d.ts +3 -0
  261. package/dist/Table/plugins/rowStatus/index.d.ts.map +1 -0
  262. package/dist/Table/plugins/rowStatus/index.js +3 -0
  263. package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts +60 -0
  264. package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts.map +1 -0
  265. package/dist/Table/plugins/rowStatus/useTableRowStatus.js +145 -0
  266. package/dist/Table/plugins/selection/useTableSelection.d.ts +13 -0
  267. package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
  268. package/dist/Table/plugins/selection/useTableSelection.js +7 -1
  269. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +1 -1
  270. package/dist/Table/plugins/tree/useTableTreeData.d.ts +16 -0
  271. package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
  272. package/dist/Table/plugins/tree/useTableTreeData.js +105 -12
  273. package/dist/Table/plugins/tree/useTableTreeState.d.ts +6 -0
  274. package/dist/Table/plugins/tree/useTableTreeState.d.ts.map +1 -1
  275. package/dist/Table/plugins/tree/useTableTreeState.js +22 -1
  276. package/dist/Table/types.d.ts +32 -0
  277. package/dist/Table/types.d.ts.map +1 -1
  278. package/dist/Table/useBaseTablePlugins.d.ts.map +1 -1
  279. package/dist/Table/useBaseTablePlugins.js +5 -3
  280. package/dist/TextArea/TextArea.d.ts +10 -1
  281. package/dist/TextArea/TextArea.d.ts.map +1 -1
  282. package/dist/TextArea/TextArea.js +18 -19
  283. package/dist/TextInput/TextInput.d.ts +10 -2
  284. package/dist/TextInput/TextInput.d.ts.map +1 -1
  285. package/dist/TextInput/TextInput.js +20 -17
  286. package/dist/Thumbnail/Thumbnail.d.ts +26 -5
  287. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  288. package/dist/Thumbnail/Thumbnail.js +97 -54
  289. package/dist/Thumbnail/thumbnail.markers.stylex.d.ts +9 -0
  290. package/dist/Thumbnail/thumbnail.markers.stylex.d.ts.map +1 -0
  291. package/dist/Thumbnail/thumbnail.markers.stylex.js +14 -0
  292. package/dist/TimeInput/TimeInput.d.ts +10 -2
  293. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  294. package/dist/TimeInput/TimeInput.js +32 -21
  295. package/dist/Timestamp/Timestamp.d.ts +3 -1
  296. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  297. package/dist/Timestamp/Timestamp.js +8 -6
  298. package/dist/Toast/useToast.d.ts.map +1 -1
  299. package/dist/Toast/useToast.js +2 -5
  300. package/dist/ToggleButton/ToggleButtonGroup.d.ts +0 -1
  301. package/dist/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
  302. package/dist/ToggleButton/ToggleButtonGroup.js +1 -1
  303. package/dist/Token/Token.d.ts +30 -3
  304. package/dist/Token/Token.d.ts.map +1 -1
  305. package/dist/Token/Token.js +17 -2
  306. package/dist/Token/index.d.ts +1 -1
  307. package/dist/Token/index.d.ts.map +1 -1
  308. package/dist/Tokenizer/Tokenizer.d.ts +10 -3
  309. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  310. package/dist/Tokenizer/Tokenizer.js +20 -6
  311. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  312. package/dist/Tooltip/useTooltip.js +17 -1
  313. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  314. package/dist/TopNav/TopNavHeading.js +18 -8
  315. package/dist/TopNav/TopNavMegaMenu.js +10 -4
  316. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +9 -1
  317. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
  318. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +8 -1
  319. package/dist/TopNav/TopNavMenu.d.ts +2 -1
  320. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  321. package/dist/TopNav/TopNavMenu.js +68 -6
  322. package/dist/TreeList/TreeList.d.ts +12 -3
  323. package/dist/TreeList/TreeList.d.ts.map +1 -1
  324. package/dist/TreeList/TreeList.js +3 -0
  325. package/dist/TreeList/TreeListBranches.d.ts +5 -0
  326. package/dist/TreeList/TreeListBranches.d.ts.map +1 -1
  327. package/dist/TreeList/TreeListBranches.js +18 -10
  328. package/dist/TreeList/TreeListItem.d.ts +8 -2
  329. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  330. package/dist/TreeList/TreeListItem.js +59 -21
  331. package/dist/TreeList/TreeListTypes.d.ts +25 -1
  332. package/dist/TreeList/TreeListTypes.d.ts.map +1 -1
  333. package/dist/TreeList/index.d.ts +2 -2
  334. package/dist/TreeList/index.d.ts.map +1 -1
  335. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  336. package/dist/Typeahead/BaseTypeahead.js +20 -11
  337. package/dist/Typeahead/Typeahead.d.ts +9 -2
  338. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  339. package/dist/Typeahead/Typeahead.js +3 -1
  340. package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
  341. package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
  342. package/dist/Typeahead/TypeaheadItem.js +20 -10
  343. package/dist/astryx.css +61 -39
  344. package/dist/astryx.umd.js +53 -53
  345. package/dist/astryx.umd.js.map +4 -4
  346. package/dist/authoring/doc.d.ts.map +1 -1
  347. package/dist/docs-types.d.ts +8 -0
  348. package/dist/docs-types.d.ts.map +1 -1
  349. package/dist/hooks/computeOverflow.d.ts +47 -0
  350. package/dist/hooks/computeOverflow.d.ts.map +1 -0
  351. package/dist/hooks/computeOverflow.js +213 -0
  352. package/dist/hooks/index.d.ts +3 -0
  353. package/dist/hooks/index.d.ts.map +1 -1
  354. package/dist/hooks/index.js +3 -1
  355. package/dist/hooks/isRtlElement.d.ts +18 -0
  356. package/dist/hooks/isRtlElement.d.ts.map +1 -0
  357. package/dist/hooks/isRtlElement.js +27 -0
  358. package/dist/hooks/useDevWarning.d.ts +18 -0
  359. package/dist/hooks/useDevWarning.d.ts.map +1 -0
  360. package/dist/hooks/useDevWarning.js +49 -0
  361. package/dist/hooks/useGridFocus.d.ts +6 -1
  362. package/dist/hooks/useGridFocus.d.ts.map +1 -1
  363. package/dist/hooks/useGridFocus.js +12 -9
  364. package/dist/hooks/useInputStatusIcon.d.ts +38 -0
  365. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -0
  366. package/dist/hooks/useInputStatusIcon.js +158 -0
  367. package/dist/hooks/useListFocus.d.ts +39 -1
  368. package/dist/hooks/useListFocus.d.ts.map +1 -1
  369. package/dist/hooks/useListFocus.js +54 -9
  370. package/dist/hooks/useOverflow.d.ts +19 -0
  371. package/dist/hooks/useOverflow.d.ts.map +1 -1
  372. package/dist/hooks/useOverflow.js +36 -25
  373. package/dist/i18n/InternationalizationContext.d.ts +1 -0
  374. package/dist/i18n/InternationalizationContext.d.ts.map +1 -1
  375. package/dist/i18n/InternationalizationContext.js +3 -0
  376. package/dist/i18n/InternationalizationProvider.d.ts +8 -1
  377. package/dist/i18n/InternationalizationProvider.d.ts.map +1 -1
  378. package/dist/i18n/InternationalizationProvider.js +5 -1
  379. package/dist/i18n/getLocaleDirection.d.ts +18 -0
  380. package/dist/i18n/getLocaleDirection.d.ts.map +1 -0
  381. package/dist/i18n/getLocaleDirection.js +29 -0
  382. package/dist/i18n/index.d.ts +6 -0
  383. package/dist/i18n/index.d.ts.map +1 -1
  384. package/dist/i18n/index.js +7 -1
  385. package/dist/i18n/resolve.d.ts.map +1 -1
  386. package/dist/i18n/resolve.js +7 -18
  387. package/dist/i18n/useDirection.d.ts +2 -0
  388. package/dist/i18n/useDirection.d.ts.map +1 -0
  389. package/dist/i18n/useDirection.js +27 -0
  390. package/dist/theme/Theme.d.ts.map +1 -1
  391. package/dist/theme/Theme.js +2 -7
  392. package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
  393. package/dist/theme/derivedVarRegistry.js +13 -0
  394. package/dist/theme/generateThemeRules.d.ts.map +1 -1
  395. package/dist/theme/generateThemeRules.js +51 -0
  396. package/dist/theme/hct.d.ts +0 -1
  397. package/dist/theme/hct.d.ts.map +1 -1
  398. package/dist/theme/hct.js +1 -1
  399. package/dist/theme/syntax/defineSyntaxTheme.d.ts.map +1 -1
  400. package/dist/theme/syntax/defineSyntaxTheme.js +2 -1
  401. package/dist/utils/devWarning.d.ts +42 -0
  402. package/dist/utils/devWarning.d.ts.map +1 -0
  403. package/dist/utils/devWarning.js +88 -0
  404. package/dist/utils/index.d.ts +4 -1
  405. package/dist/utils/index.d.ts.map +1 -1
  406. package/dist/utils/index.js +4 -2
  407. package/dist/utils/plainDate.d.ts +30 -0
  408. package/dist/utils/plainDate.d.ts.map +1 -1
  409. package/dist/utils/plainDate.js +65 -3
  410. package/dist/utils/rtlStyles.d.ts +24 -0
  411. package/dist/utils/rtlStyles.d.ts.map +1 -0
  412. package/dist/utils/rtlStyles.js +27 -0
  413. package/dist/utils/types.d.ts +13 -0
  414. package/dist/utils/types.d.ts.map +1 -1
  415. package/locales/en.json +104 -0
  416. package/locales/fr-FR.json +14 -0
  417. package/locales/pseudo.json +78 -0
  418. package/package.json +6 -1
  419. package/src/AppShell/AppShell.tsx +6 -0
  420. package/src/AppShell/AppShellMobileContext.tsx +8 -0
  421. package/src/AppShell/useAppShellMobile.doc.mjs +8 -0
  422. package/src/Avatar/Avatar.doc.mjs +64 -5
  423. package/src/Avatar/Avatar.test.tsx +374 -1
  424. package/src/Avatar/Avatar.tsx +367 -69
  425. package/src/Avatar/AvatarStatusDot.doc.mjs +23 -12
  426. package/src/Avatar/AvatarStatusDot.test.tsx +284 -0
  427. package/src/Avatar/AvatarStatusDot.tsx +180 -21
  428. package/src/AvatarGroup/AvatarGroup.doc.mjs +2 -0
  429. package/src/AvatarGroup/AvatarGroup.test.tsx +141 -1
  430. package/src/AvatarGroup/AvatarGroup.tsx +58 -3
  431. package/src/AvatarGroup/AvatarGroupOverflow.tsx +1 -0
  432. package/src/Banner/Banner.doc.mjs +9 -0
  433. package/src/Banner/Banner.test.tsx +30 -0
  434. package/src/Banner/Banner.tsx +53 -9
  435. package/src/Breadcrumbs/BreadcrumbItem.doc.mjs +26 -0
  436. package/src/Breadcrumbs/BreadcrumbItem.tsx +333 -14
  437. package/src/Breadcrumbs/Breadcrumbs.doc.mjs +2 -0
  438. package/src/Breadcrumbs/Breadcrumbs.test.tsx +335 -2
  439. package/src/Breadcrumbs/index.ts +31 -0
  440. package/src/Button/Button.doc.mjs +9 -4
  441. package/src/Button/Button.test.tsx +49 -0
  442. package/src/Button/Button.tsx +27 -3
  443. package/src/ButtonGroup/ButtonGroup.doc.mjs +3 -0
  444. package/src/ButtonGroup/ButtonGroup.test.tsx +37 -0
  445. package/src/ButtonGroup/ButtonGroup.tsx +32 -0
  446. package/src/Calendar/Calendar.doc.mjs +12 -1
  447. package/src/Calendar/Calendar.test.tsx +362 -19
  448. package/src/Calendar/Calendar.tsx +111 -32
  449. package/src/Calendar/dayCellUtils.test.ts +23 -18
  450. package/src/Calendar/dayCellUtils.ts +3 -3
  451. package/src/Calendar/styles.ts +33 -39
  452. package/src/Card/Card.doc.mjs +9 -0
  453. package/src/Card/Card.test.tsx +21 -3
  454. package/src/Card/Card.tsx +35 -2
  455. package/src/Carousel/Carousel.doc.mjs +1 -0
  456. package/src/Carousel/Carousel.test.tsx +53 -0
  457. package/src/Carousel/Carousel.tsx +59 -10
  458. package/src/Chat/ChatComposer.doc.mjs +12 -3
  459. package/src/Chat/ChatComposer.test.tsx +115 -0
  460. package/src/Chat/ChatComposer.tsx +73 -9
  461. package/src/Chat/ChatComposerDrawer.test.tsx +61 -0
  462. package/src/Chat/ChatComposerDrawer.tsx +11 -1
  463. package/src/Chat/ChatComposerInput.doc.mjs +7 -0
  464. package/src/Chat/ChatComposerInput.test.tsx +103 -0
  465. package/src/Chat/ChatComposerInput.tsx +51 -5
  466. package/src/Chat/ChatContext.tsx +37 -10
  467. package/src/Chat/ChatDictationButton.tsx +11 -2
  468. package/src/Chat/ChatLayout.tsx +7 -5
  469. package/src/Chat/ChatLayoutScrollButton.tsx +7 -2
  470. package/src/Chat/ChatMessageMetadata.tsx +1 -2
  471. package/src/Chat/ChatSendButton.tsx +11 -1
  472. package/src/Chat/ChatToolCalls.test.tsx +64 -0
  473. package/src/Chat/ChatToolCalls.tsx +33 -5
  474. package/src/Chat/index.ts +5 -1
  475. package/src/Chat/useChatStreamScroll.test.tsx +49 -0
  476. package/src/Chat/useChatStreamScroll.ts +27 -10
  477. package/src/Chat/useSpeechRecognition.ts +1 -1
  478. package/src/Chat/useTriggerMenu.tsx +4 -2
  479. package/src/CheckboxInput/CheckboxInput.doc.mjs +6 -0
  480. package/src/CheckboxInput/CheckboxInput.test.tsx +32 -1
  481. package/src/CheckboxInput/CheckboxInput.tsx +5 -5
  482. package/src/CheckboxList/CheckboxList.doc.mjs +6 -0
  483. package/src/CheckboxList/CheckboxList.test.tsx +81 -3
  484. package/src/CheckboxList/CheckboxListItem.doc.mjs +33 -5
  485. package/src/CheckboxList/CheckboxListItem.tsx +41 -5
  486. package/src/Citation/Citation.doc.mjs +4 -3
  487. package/src/Citation/Citation.test.tsx +97 -0
  488. package/src/Citation/Citation.tsx +43 -11
  489. package/src/ClickableCard/ClickableCard.doc.mjs +2 -0
  490. package/src/ClickableCard/ClickableCard.test.tsx +34 -0
  491. package/src/ClickableCard/ClickableCard.tsx +13 -3
  492. package/src/CodeBlock/CodeBlock.test.tsx +56 -0
  493. package/src/CodeBlock/CodeBlock.tsx +45 -10
  494. package/src/Collapsible/Collapsible.doc.mjs +1 -0
  495. package/src/Collapsible/Collapsible.test.tsx +7 -0
  496. package/src/Collapsible/Collapsible.tsx +16 -6
  497. package/src/CommandPalette/CommandPalette.doc.mjs +1 -0
  498. package/src/CommandPalette/CommandPalette.test.tsx +95 -1
  499. package/src/CommandPalette/CommandPalette.tsx +44 -3
  500. package/src/CommandPalette/CommandPaletteGroup.test.tsx +71 -0
  501. package/src/CommandPalette/CommandPaletteGroup.tsx +12 -1
  502. package/src/CommandPalette/CommandPaletteInput.doc.mjs +26 -9
  503. package/src/CommandPalette/CommandPaletteInput.test.tsx +34 -0
  504. package/src/CommandPalette/CommandPaletteInput.tsx +11 -0
  505. package/src/CommandPalette/CommandPaletteItem.tsx +1 -1
  506. package/src/ContextMenu/ContextMenu.test.tsx +235 -0
  507. package/src/ContextMenu/ContextMenu.tsx +13 -11
  508. package/src/ContextMenu/index.ts +5 -0
  509. package/src/DateInput/DateInput.doc.mjs +41 -0
  510. package/src/DateInput/DateInput.test.tsx +338 -0
  511. package/src/DateInput/DateInput.tsx +119 -32
  512. package/src/DateInput/index.ts +1 -0
  513. package/src/DateRangeInput/DateRangeInput.doc.mjs +16 -0
  514. package/src/DateRangeInput/DateRangeInput.test.tsx +140 -0
  515. package/src/DateRangeInput/DateRangeInput.tsx +42 -30
  516. package/src/DateTimeInput/DateTimeInput.doc.mjs +22 -1
  517. package/src/DateTimeInput/DateTimeInput.test.tsx +147 -0
  518. package/src/DateTimeInput/DateTimeInput.tsx +58 -41
  519. package/src/Dialog/Dialog.doc.mjs +2 -2
  520. package/src/Dialog/Dialog.test.tsx +77 -4
  521. package/src/Dialog/Dialog.tsx +89 -5
  522. package/src/Dialog/DialogContext.ts +9 -2
  523. package/src/Dialog/DialogHeader.doc.mjs +2 -2
  524. package/src/Dialog/DialogHeader.tsx +9 -2
  525. package/src/Divider/Divider.tsx +2 -2
  526. package/src/DropdownMenu/DropdownMenu.test.tsx +229 -0
  527. package/src/DropdownMenu/DropdownMenu.tsx +31 -12
  528. package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +9 -4
  529. package/src/DropdownMenu/DropdownMenuItem.tsx +9 -3
  530. package/src/DropdownMenu/DropdownMenuRadioGroup.tsx +1 -2
  531. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +8 -2
  532. package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +88 -0
  533. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +635 -0
  534. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +553 -0
  535. package/src/DropdownMenu/index.ts +16 -0
  536. package/src/DropdownMenu/menuItemHover.ts +39 -0
  537. package/src/DropdownMenu/menuItemRoles.ts +9 -0
  538. package/src/DropdownMenu/renderDropdownItems.tsx +29 -15
  539. package/src/Field/Field.test.tsx +57 -12
  540. package/src/Field/Field.tsx +20 -14
  541. package/src/Field/FieldLabel.tsx +9 -1
  542. package/src/Field/inputStyles.stylex.ts +2 -0
  543. package/src/FieldStatus/FieldStatus.doc.mjs +17 -5
  544. package/src/FieldStatus/FieldStatus.test.tsx +150 -40
  545. package/src/FieldStatus/FieldStatus.tsx +69 -5
  546. package/src/FileInput/FileInput.doc.mjs +23 -2
  547. package/src/FileInput/FileInput.test.tsx +135 -12
  548. package/src/FileInput/FileInput.tsx +65 -51
  549. package/src/HoverCard/HoverCard.doc.mjs +13 -0
  550. package/src/HoverCard/HoverCard.test.tsx +21 -2
  551. package/src/HoverCard/HoverCard.tsx +11 -0
  552. package/src/HoverCard/useHoverCard.doc.mjs +2 -0
  553. package/src/HoverCard/useHoverCard.tsx +39 -5
  554. package/src/Icon/Icon.doc.mjs +16 -2
  555. package/src/Icon/Icon.test.tsx +89 -0
  556. package/src/Icon/Icon.tsx +58 -5
  557. package/src/IconButton/IconButton.doc.mjs +8 -0
  558. package/src/IconButton/IconButton.test.tsx +15 -18
  559. package/src/Item/Item.test.tsx +40 -18
  560. package/src/Item/Item.tsx +38 -2
  561. package/src/Layer/useLayer.tsx +8 -0
  562. package/src/Lightbox/Lightbox.tsx +15 -7
  563. package/src/List/List.test.tsx +9 -8
  564. package/src/Markdown/Markdown.test.tsx +21 -0
  565. package/src/Markdown/Markdown.tsx +4 -0
  566. package/src/MobileNav/MobileNav.tsx +12 -1
  567. package/src/MobileNav/MobileNavToggle.test.tsx +116 -0
  568. package/src/MobileNav/MobileNavToggle.tsx +9 -1
  569. package/src/MultiSelector/MultiSelector.doc.mjs +24 -2
  570. package/src/MultiSelector/MultiSelector.test.tsx +498 -3
  571. package/src/MultiSelector/MultiSelector.tsx +149 -65
  572. package/src/MultiSelector/hooks.ts +17 -0
  573. package/src/NavMenu/NavHeadingMenuItem.tsx +1 -1
  574. package/src/NumberInput/NumberInput.doc.mjs +21 -0
  575. package/src/NumberInput/NumberInput.test.tsx +82 -7
  576. package/src/NumberInput/NumberInput.tsx +36 -28
  577. package/src/Outline/Outline.tsx +0 -1
  578. package/src/OverflowList/OverflowList.doc.mjs +39 -6
  579. package/src/OverflowList/OverflowList.test.tsx +111 -0
  580. package/src/OverflowList/OverflowList.tsx +48 -8
  581. package/src/Pagination/Pagination.tsx +11 -3
  582. package/src/Popover/Popover.tsx +7 -4
  583. package/src/Popover/usePopover.tsx +9 -13
  584. package/src/PowerSearch/PowerSearch.doc.mjs +29 -0
  585. package/src/PowerSearch/PowerSearch.test.tsx +43 -0
  586. package/src/PowerSearch/PowerSearch.tsx +10 -1
  587. package/src/PowerSearch/PowerSearchEditPopover.test.tsx +67 -0
  588. package/src/PowerSearch/PowerSearchEditPopover.tsx +1 -1
  589. package/src/PowerSearch/usePowerSearchSource.ts +1 -2
  590. package/src/RadioList/RadioList.doc.mjs +6 -0
  591. package/src/RadioList/RadioList.tsx +2 -2
  592. package/src/RadioList/RadioListItem.tsx +4 -4
  593. package/src/SegmentedControl/SegmentedControlItem.tsx +2 -0
  594. package/src/SelectableCard/SelectableCard.doc.mjs +2 -0
  595. package/src/SelectableCard/SelectableCard.test.tsx +46 -4
  596. package/src/SelectableCard/SelectableCard.tsx +29 -16
  597. package/src/Selector/Selector.doc.mjs +15 -0
  598. package/src/Selector/Selector.test.tsx +417 -0
  599. package/src/Selector/Selector.tsx +86 -21
  600. package/src/Selector/hooks.ts +17 -0
  601. package/src/SideNav/SideNav.test.tsx +119 -3
  602. package/src/SideNav/SideNav.tsx +1 -8
  603. package/src/SideNav/SideNavCollapseButton.tsx +15 -8
  604. package/src/SideNav/SideNavHeading.tsx +24 -8
  605. package/src/SideNav/SideNavItem.tsx +10 -4
  606. package/src/Slider/Slider.doc.mjs +6 -0
  607. package/src/Slider/Slider.test.tsx +314 -13
  608. package/src/Slider/Slider.tsx +117 -28
  609. package/src/Switch/Switch.doc.mjs +142 -42
  610. package/src/Switch/Switch.test.tsx +54 -1
  611. package/src/Switch/Switch.tsx +90 -33
  612. package/src/TabList/Tab.tsx +2 -2
  613. package/src/TabList/TabMenu.tsx +2 -2
  614. package/src/Table/BaseTable.tsx +37 -7
  615. package/src/Table/Table.doc.mjs +11 -0
  616. package/src/Table/Table.test.tsx +85 -0
  617. package/src/Table/TableCell.tsx +3 -3
  618. package/src/Table/TableHeaderCell.tsx +3 -3
  619. package/src/Table/index.ts +5 -0
  620. package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +15 -8
  621. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +24 -17
  622. package/src/Table/plugins/rowStatus/index.ts +7 -0
  623. package/src/Table/plugins/rowStatus/useTableRowStatus.test.tsx +138 -0
  624. package/src/Table/plugins/rowStatus/useTableRowStatus.tsx +189 -0
  625. package/src/Table/plugins/selection/useTableSelection.test.tsx +77 -3
  626. package/src/Table/plugins/selection/useTableSelection.tsx +22 -1
  627. package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +1 -1
  628. package/src/Table/plugins/tree/useTableTreeData.test.tsx +135 -3
  629. package/src/Table/plugins/tree/useTableTreeData.tsx +139 -8
  630. package/src/Table/plugins/tree/useTableTreeState.test.tsx +104 -0
  631. package/src/Table/plugins/tree/useTableTreeState.tsx +46 -2
  632. package/src/Table/types.ts +33 -0
  633. package/src/Table/useBaseTablePlugins.ts +10 -6
  634. package/src/Table/useTableRowStatus.doc.mjs +30 -0
  635. package/src/Table/useTableSelection.doc.mjs +65 -14
  636. package/src/Table/useTableTreeData.doc.mjs +29 -0
  637. package/src/Table/useTableTreeState.doc.mjs +2 -2
  638. package/src/TextArea/TextArea.doc.mjs +21 -0
  639. package/src/TextArea/TextArea.test.tsx +32 -1
  640. package/src/TextArea/TextArea.tsx +27 -26
  641. package/src/TextInput/TextInput.doc.mjs +21 -0
  642. package/src/TextInput/TextInput.test.tsx +150 -0
  643. package/src/TextInput/TextInput.tsx +28 -25
  644. package/src/Thumbnail/Thumbnail.doc.mjs +19 -10
  645. package/src/Thumbnail/Thumbnail.test.tsx +98 -7
  646. package/src/Thumbnail/Thumbnail.tsx +142 -42
  647. package/src/Thumbnail/thumbnail.markers.stylex.ts +12 -0
  648. package/src/TimeInput/TimeInput.doc.mjs +21 -0
  649. package/src/TimeInput/TimeInput.test.tsx +99 -1
  650. package/src/TimeInput/TimeInput.tsx +43 -31
  651. package/src/Timestamp/Timestamp.doc.mjs +4 -4
  652. package/src/Timestamp/Timestamp.test.tsx +32 -0
  653. package/src/Timestamp/Timestamp.tsx +28 -8
  654. package/src/Toast/useToast.tsx +7 -8
  655. package/src/ToggleButton/ToggleButtonGroup.tsx +1 -1
  656. package/src/Token/Token.test.tsx +21 -15
  657. package/src/Token/Token.tsx +31 -14
  658. package/src/Token/index.ts +1 -1
  659. package/src/Tokenizer/Tokenizer.doc.mjs +38 -2
  660. package/src/Tokenizer/Tokenizer.test.tsx +206 -2
  661. package/src/Tokenizer/Tokenizer.tsx +30 -6
  662. package/src/Tooltip/Tooltip.test.tsx +46 -0
  663. package/src/Tooltip/useTooltip.tsx +20 -0
  664. package/src/TopNav/TopNav.test.tsx +125 -1
  665. package/src/TopNav/TopNavHeading.tsx +24 -8
  666. package/src/TopNav/TopNavMegaMenu.test.tsx +149 -1
  667. package/src/TopNav/TopNavMegaMenu.tsx +10 -4
  668. package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +3 -3
  669. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +19 -2
  670. package/src/TopNav/TopNavMenu.test.tsx +118 -4
  671. package/src/TopNav/TopNavMenu.tsx +83 -5
  672. package/src/TreeList/TreeList.doc.mjs +28 -0
  673. package/src/TreeList/TreeList.test.tsx +272 -0
  674. package/src/TreeList/TreeList.tsx +23 -2
  675. package/src/TreeList/TreeListBranches.tsx +24 -8
  676. package/src/TreeList/TreeListItem.tsx +84 -22
  677. package/src/TreeList/TreeListTypes.ts +27 -1
  678. package/src/TreeList/index.ts +2 -2
  679. package/src/Typeahead/BaseTypeahead.tsx +30 -15
  680. package/src/Typeahead/Typeahead.doc.mjs +13 -0
  681. package/src/Typeahead/Typeahead.test.tsx +50 -0
  682. package/src/Typeahead/Typeahead.tsx +11 -1
  683. package/src/Typeahead/TypeaheadItem.tsx +2 -1
  684. package/src/__tests__/inputWidthContract.test.tsx +62 -0
  685. package/src/authoring/doc.ts +1 -3
  686. package/src/doc-mjs.d.ts +19 -0
  687. package/src/docs-types.ts +5 -0
  688. package/src/hooks/computeOverflow.test.ts +422 -0
  689. package/src/hooks/computeOverflow.ts +290 -0
  690. package/src/hooks/index.ts +8 -0
  691. package/src/hooks/isRtlElement.ts +27 -0
  692. package/src/hooks/useDevWarning.test.tsx +45 -0
  693. package/src/hooks/useDevWarning.ts +54 -0
  694. package/src/hooks/useGridFocus.doc.mjs +3 -3
  695. package/src/hooks/useGridFocus.test.tsx +41 -0
  696. package/src/hooks/useGridFocus.ts +21 -10
  697. package/src/hooks/useInputStatusIcon.test.tsx +162 -0
  698. package/src/hooks/useInputStatusIcon.tsx +224 -0
  699. package/src/hooks/useListFocus.doc.mjs +25 -3
  700. package/src/hooks/useListFocus.test.tsx +153 -1
  701. package/src/hooks/useListFocus.ts +102 -9
  702. package/src/hooks/useOverflow.test.ts +96 -4
  703. package/src/hooks/useOverflow.ts +74 -33
  704. package/src/i18n/InternationalizationContext.ts +4 -0
  705. package/src/i18n/InternationalizationProvider.doc.mjs +99 -2
  706. package/src/i18n/InternationalizationProvider.tsx +12 -2
  707. package/src/i18n/__tests__/getLocaleDirection.test.ts +40 -0
  708. package/src/i18n/__tests__/useDirection.test.tsx +66 -0
  709. package/src/i18n/getLocaleDirection.ts +29 -0
  710. package/src/i18n/index.ts +6 -0
  711. package/src/i18n/resolve.ts +9 -21
  712. package/src/i18n/useDirection.ts +29 -0
  713. package/src/reset.css +0 -26
  714. package/src/reset.test.ts +60 -0
  715. package/src/theme/Theme.tsx +11 -14
  716. package/src/theme/derivedVarRegistry.test.ts +1 -0
  717. package/src/theme/derivedVarRegistry.ts +6 -0
  718. package/src/theme/generateThemeRules.test.ts +107 -0
  719. package/src/theme/generateThemeRules.ts +56 -0
  720. package/src/theme/hct.ts +1 -1
  721. package/src/theme/syntax/defineSyntaxTheme.ts +5 -6
  722. package/src/utils/devWarning.test.ts +56 -0
  723. package/src/utils/devWarning.ts +102 -0
  724. package/src/utils/index.ts +8 -0
  725. package/src/utils/plainDate.test.ts +46 -6
  726. package/src/utils/plainDate.ts +69 -3
  727. package/src/utils/rtlStyles.ts +27 -0
  728. package/src/utils/types.ts +14 -0
@@ -9,10 +9,15 @@
9
9
  * SYNC: When Switch.tsx changes, update tests to match new behavior
10
10
  */
11
11
 
12
- import {describe, it, expect, vi, beforeEach} from 'vitest';
12
+ import {describe, it, expect, vi, beforeEach, afterEach} from 'vitest';
13
13
  import {render, screen, fireEvent, waitFor} from '@testing-library/react';
14
14
  import userEvent from '@testing-library/user-event';
15
15
  import {Switch} from './Switch';
16
+ import {__resetLiveRegionsForTest} from '../hooks/useAnnounce';
17
+
18
+ afterEach(() => {
19
+ __resetLiveRegionsForTest();
20
+ });
16
21
 
17
22
  // Mock showPopover/hidePopover (not implemented in jsdom) so the tooltip layer
18
23
  // reflects its open state via a `popover-open` attribute the tests can assert.
@@ -63,6 +68,28 @@ describe('Switch', () => {
63
68
  expect(screen.getByRole('switch')).toBeChecked();
64
69
  });
65
70
 
71
+ it('renders with custom size prop (sm / md)', () => {
72
+ const {rerender} = render(
73
+ <Switch
74
+ label="Small switch"
75
+ value={false}
76
+ size="sm"
77
+ onChange={() => {}}
78
+ />,
79
+ );
80
+ expect(screen.getByRole('switch')).toBeInTheDocument();
81
+
82
+ rerender(
83
+ <Switch
84
+ label="Medium switch"
85
+ value={false}
86
+ size="md"
87
+ onChange={() => {}}
88
+ />,
89
+ );
90
+ expect(screen.getByRole('switch')).toBeInTheDocument();
91
+ });
92
+
66
93
  it('calls onChange with new checked state when clicked', async () => {
67
94
  const user = userEvent.setup();
68
95
  const handleChange = vi.fn();
@@ -324,6 +351,32 @@ describe('Switch', () => {
324
351
  expect(describedBy).toBeTruthy();
325
352
  });
326
353
 
354
+ // Regression: the status is conditionally mounted, so it must be announced
355
+ // through the persistent useAnnounce live region — a live region born
356
+ // together with its content is not reliably announced.
357
+ it('announces a status message that appears after mount', async () => {
358
+ const {rerender} = render(
359
+ <Switch label="Enable notifications" value={false} onChange={() => {}} />,
360
+ );
361
+ expect(
362
+ document.querySelector('[data-astryx-live-region="assertive"]'),
363
+ ).toBeNull();
364
+
365
+ rerender(
366
+ <Switch
367
+ label="Enable notifications"
368
+ value={false}
369
+ onChange={() => {}}
370
+ status={{type: 'error', message: 'Failed to save setting'}}
371
+ />,
372
+ );
373
+ await waitFor(() => {
374
+ expect(
375
+ document.querySelector('[data-astryx-live-region="assertive"]'),
376
+ ).toHaveTextContent('Failed to save setting');
377
+ });
378
+ });
379
+
327
380
  it('calls onFocus and onBlur callbacks', async () => {
328
381
  const user = userEvent.setup();
329
382
  const handleFocus = vi.fn();
@@ -47,17 +47,75 @@ import type {SizeValue} from '../utils/types';
47
47
  import {themeProps} from '../utils/themeProps';
48
48
  import {VisuallyHidden} from '../VisuallyHidden';
49
49
 
50
- // Fixed dimensions: 40px width, 24px height, 16px thumb (off), 20px thumb (on)
51
- const SWITCH_WIDTH = 40;
52
- const SWITCH_HEIGHT = 24;
53
- const THUMB_SIZE_OFF = 16;
54
- const THUMB_SIZE_ON = 20;
55
- const TRACK_PADDING = 4;
56
- // Padding between thumb right edge and track inner edge when on
57
- const ON_RIGHT_PADDING = 2;
58
- // Travel distance for on state: positions thumb with ON_RIGHT_PADDING from right edge
59
- const THUMB_TRAVEL_ON =
60
- SWITCH_WIDTH - TRACK_PADDING - THUMB_SIZE_ON - ON_RIGHT_PADDING;
50
+ const wrapperSizeStyles = stylex.create({
51
+ sm: {
52
+ width: 32,
53
+ height: 20,
54
+ },
55
+ md: {
56
+ width: 40,
57
+ height: 24,
58
+ },
59
+ });
60
+
61
+ const inputSizeStyles = stylex.create({
62
+ sm: {
63
+ width: 32,
64
+ height: 20,
65
+ },
66
+ md: {
67
+ width: 40,
68
+ height: 24,
69
+ },
70
+ });
71
+
72
+ const trackSizeStyles = stylex.create({
73
+ sm: {
74
+ width: 32,
75
+ height: 20,
76
+ padding: 2,
77
+ },
78
+ md: {
79
+ width: 40,
80
+ height: 24,
81
+ padding: 4,
82
+ },
83
+ });
84
+
85
+ const thumbOffSizeStyles = stylex.create({
86
+ sm: {
87
+ width: 14,
88
+ height: 14,
89
+ transform: 'translateX(0)',
90
+ },
91
+ md: {
92
+ width: 16,
93
+ height: 16,
94
+ transform: 'translateX(0)',
95
+ },
96
+ });
97
+
98
+ const thumbOnSizeStyles = stylex.create({
99
+ sm: {
100
+ width: 16,
101
+ height: 16,
102
+ transform: 'translateX(12px)',
103
+ },
104
+ md: {
105
+ width: 20,
106
+ height: 20,
107
+ transform: 'translateX(14px)',
108
+ },
109
+ });
110
+
111
+ const labelWrapperSizeStyles = stylex.create({
112
+ sm: {
113
+ minHeight: 20,
114
+ },
115
+ md: {
116
+ minHeight: 24,
117
+ },
118
+ });
61
119
 
62
120
  const styles = stylex.create({
63
121
  container: {
@@ -77,8 +135,6 @@ const styles = stylex.create({
77
135
  display: 'flex',
78
136
  alignItems: 'center',
79
137
  flexShrink: 0,
80
- width: SWITCH_WIDTH,
81
- height: SWITCH_HEIGHT,
82
138
  isolation: 'isolate',
83
139
  },
84
140
  input: {
@@ -88,8 +144,6 @@ const styles = stylex.create({
88
144
  opacity: 0,
89
145
  cursor: 'pointer',
90
146
  zIndex: 1,
91
- width: SWITCH_WIDTH,
92
- height: SWITCH_HEIGHT,
93
147
  },
94
148
  inputDisabled: {
95
149
  cursor: 'not-allowed',
@@ -100,9 +154,6 @@ const styles = stylex.create({
100
154
  track: {
101
155
  display: 'flex',
102
156
  alignItems: 'center',
103
- width: SWITCH_WIDTH,
104
- height: SWITCH_HEIGHT,
105
- padding: TRACK_PADDING,
106
157
  borderRadius: radiusVars['--radius-full'],
107
158
  transitionProperty: 'background-color',
108
159
  transitionDuration: {
@@ -159,22 +210,11 @@ const styles = stylex.create({
159
210
  },
160
211
  transitionTimingFunction: easeVars['--ease-standard'],
161
212
  },
162
- thumbOff: {
163
- width: THUMB_SIZE_OFF,
164
- height: THUMB_SIZE_OFF,
165
- transform: 'translateX(0)',
166
- },
167
- thumbOn: {
168
- width: THUMB_SIZE_ON,
169
- height: THUMB_SIZE_ON,
170
- transform: `translateX(${THUMB_TRAVEL_ON}px)`,
171
- },
172
213
  labelWrapper: {
173
214
  display: 'flex',
174
215
  flexDirection: 'column',
175
216
  gap: spacingVars['--spacing-0-5'],
176
217
  justifyContent: 'center',
177
- minHeight: SWITCH_HEIGHT,
178
218
  },
179
219
  description: {
180
220
  fontFamily: typographyVars['--font-family-body'],
@@ -313,6 +353,13 @@ export interface SwitchProps extends Omit<BaseProps, 'onChange'> {
313
353
  * When set with a message, displays a colored message box below the switch.
314
354
  */
315
355
  status?: InputStatus;
356
+ /**
357
+ * Size variant controlling track and thumb dimensions.
358
+ * - 'sm': 34x20px (matches sm checkbox/radio vertical rhythm)
359
+ * - 'md': 40x24px (default, matches md checkbox/radio vertical rhythm)
360
+ * @default 'md'
361
+ */
362
+ size?: 'sm' | 'md';
316
363
  }
317
364
 
318
365
  // Dynamic field width (number -> px, string used as-is).
@@ -358,6 +405,7 @@ export function Switch({
358
405
  labelPosition = 'end',
359
406
  labelSpacing = 'hug',
360
407
  status,
408
+ size = 'md',
361
409
  width,
362
410
  xstyle,
363
411
  className,
@@ -410,7 +458,7 @@ export function Switch({
410
458
  describedByParts.length > 0 ? describedByParts.join(' ') : undefined;
411
459
 
412
460
  const switchElement = (
413
- <div {...stylex.props(styles.switchWrapper)}>
461
+ <div {...stylex.props(styles.switchWrapper, wrapperSizeStyles[size])}>
414
462
  <input
415
463
  ref={mergeRefs(ref, disabledMessageTooltip.positionRef)}
416
464
  id={id}
@@ -447,6 +495,7 @@ export function Switch({
447
495
  aria-busy={isBusy || undefined}
448
496
  {...stylex.props(
449
497
  styles.input,
498
+ inputSizeStyles[size],
450
499
  isDisabled && styles.inputDisabled,
451
500
  isBusy && styles.inputBusy,
452
501
  )}
@@ -457,9 +506,11 @@ export function Switch({
457
506
  themeProps('switch', {
458
507
  checked: isOn ? 'checked' : null,
459
508
  disabled: isDisabled ? 'disabled' : null,
509
+ size,
460
510
  }),
461
511
  stylex.props(
462
512
  styles.track,
513
+ trackSizeStyles[size],
463
514
  isOn ? styles.trackOn : styles.trackOff,
464
515
  !isDisabled && styles.trackFocus,
465
516
  isDisabled && styles.trackDisabled,
@@ -468,8 +519,14 @@ export function Switch({
468
519
  )}>
469
520
  <div
470
521
  {...mergeProps(
471
- themeProps('switch-thumb', {checked: isOn ? 'checked' : null}),
472
- stylex.props(styles.thumb, isOn ? styles.thumbOn : styles.thumbOff),
522
+ themeProps('switch-thumb', {
523
+ checked: isOn ? 'checked' : null,
524
+ size,
525
+ }),
526
+ stylex.props(
527
+ styles.thumb,
528
+ isOn ? thumbOnSizeStyles[size] : thumbOffSizeStyles[size],
529
+ ),
473
530
  )}>
474
531
  {isBusy && <Spinner size="sm" />}
475
532
  </div>
@@ -479,7 +536,7 @@ export function Switch({
479
536
  );
480
537
 
481
538
  const labelElement = (
482
- <div {...stylex.props(styles.labelWrapper)}>
539
+ <div {...stylex.props(styles.labelWrapper, labelWrapperSizeStyles[size])}>
483
540
  <FieldLabel
484
541
  label={label}
485
542
  inputID={id}
@@ -143,8 +143,8 @@ const styles = stylex.create({
143
143
  // with a bottom divider — that ancestor sets `--_tab-indicator-bottom`
144
144
  // to drop the indicator onto the rail beneath the reserved gap.
145
145
  bottom: 'var(--_tab-indicator-bottom, -1px)',
146
- left: spacingVars['--spacing-3'],
147
- right: spacingVars['--spacing-3'],
146
+ insetInlineStart: spacingVars['--spacing-3'],
147
+ insetInlineEnd: spacingVars['--spacing-3'],
148
148
  height: '2px',
149
149
  borderRadius: radiusVars['--radius-full'],
150
150
  pointerEvents: 'none',
@@ -126,8 +126,8 @@ const styles = stylex.create({
126
126
  // drops onto the divider rail when an ancestor (TabList `hasDivider` or a
127
127
  // Toolbar with a bottom divider) sets `--_tab-indicator-bottom`.
128
128
  bottom: 'var(--_tab-indicator-bottom, -1px)',
129
- left: spacingVars['--spacing-3'],
130
- right: spacingVars['--spacing-3'],
129
+ insetInlineStart: spacingVars['--spacing-3'],
130
+ insetInlineEnd: spacingVars['--spacing-3'],
131
131
  height: '2px',
132
132
  borderRadius: radiusVars['--radius-full'],
133
133
  pointerEvents: 'none',
@@ -42,6 +42,7 @@ import {TableHeaderCell} from './TableHeaderCell';
42
42
  import {TableHeader} from './TableHeader';
43
43
  import {TableBody} from './TableBody';
44
44
  import {mergeProps} from '../utils';
45
+ import {devError} from '../utils/devWarning';
45
46
  import {EmptyState} from '../EmptyState';
46
47
  import {Text} from '../Text';
47
48
  import {themeProps} from '../utils/themeProps';
@@ -92,10 +93,7 @@ function applyPlugins<TPlugin, TProps, TArgs extends unknown[]>(
92
93
  try {
93
94
  return transform(acc, ...args);
94
95
  } catch (error) {
95
- console.error(
96
- `[Table] Plugin at index ${index} threw in transform:`,
97
- error,
98
- );
96
+ devError('Table', `Plugin at index ${index} threw in transform:`, error);
99
97
  return acc;
100
98
  }
101
99
  }, initial);
@@ -136,6 +134,12 @@ interface TableRowProps<T extends Record<string, unknown>> {
136
134
  textOverflow: 'wrap' | 'truncate';
137
135
  RowComponent: React.ComponentType<TableRowComponentProps>;
138
136
  CellComponent: React.ComponentType<TableCellComponentProps>;
137
+ /**
138
+ * 1-based ARIA row index for this row's position in the full dataset.
139
+ * `undefined` when the table hasn't opted into ARIA row indexing, in which
140
+ * case no `aria-rowindex` is emitted (native table semantics).
141
+ */
142
+ ariaRowIndex?: number;
139
143
  }
140
144
 
141
145
  /**
@@ -152,6 +156,7 @@ function TableRowInner<T extends Record<string, unknown>>({
152
156
  textOverflow,
153
157
  RowComponent,
154
158
  CellComponent,
159
+ ariaRowIndex,
155
160
  }: TableRowProps<T>): ReactElement {
156
161
  // Build cells first
157
162
  const cells = columns.map((col, columnIndex) => {
@@ -213,12 +218,14 @@ function TableRowInner<T extends Record<string, unknown>>({
213
218
  );
214
219
  });
215
220
 
216
- // Apply plugin transforms for row (with pre-rendered children)
221
+ // Apply plugin transforms for row (with pre-rendered children).
222
+ // Seed `aria-rowindex` (when the table opts into ARIA row indexing) as a
223
+ // base htmlProp so plugins compose over it and can still override.
217
224
  const rowRenderProps = applyPlugins(
218
225
  plugins,
219
226
  p => p.transformBodyRow,
220
227
  {
221
- htmlProps: {},
228
+ htmlProps: ariaRowIndex == null ? {} : {'aria-rowindex': ariaRowIndex},
222
229
  xstyle: [],
223
230
  children: <>{cells}</>,
224
231
  } satisfies BodyRowRenderProps,
@@ -258,6 +265,9 @@ function areRowPropsEqual<T extends Record<string, unknown>>(
258
265
  if (prevProps.rowIndex !== nextProps.rowIndex) {
259
266
  return false;
260
267
  }
268
+ if (prevProps.ariaRowIndex !== nextProps.ariaRowIndex) {
269
+ return false;
270
+ }
261
271
 
262
272
  if (prevProps.columns !== nextProps.columns) {
263
273
  return false;
@@ -325,6 +335,8 @@ function BaseTableInner<T extends Record<string, unknown>>({
325
335
  textOverflow = 'wrap',
326
336
  scrollWrapper: ScrollWrapper,
327
337
  emptyState,
338
+ rowIndexStart,
339
+ rowCount,
328
340
  xstyle,
329
341
  className,
330
342
  style,
@@ -335,6 +347,18 @@ function BaseTableInner<T extends Record<string, unknown>>({
335
347
  // Use stable empty array when no plugins provided
336
348
  const plugins = pluginsProp ?? (EMPTY_PLUGINS as TablePlugin<T>[]);
337
349
 
350
+ // ARIA row indexing. The row ordinal is an accessibility concern that is
351
+ // independent of any visible index column: when the consumer opts in (by
352
+ // passing rowIndexStart or rowCount), body rows carry `aria-rowindex`
353
+ // reflecting their position in the full dataset, and the <table> carries
354
+ // `aria-rowcount`. `aria-rowindex` is 1-based and counts data rows from
355
+ // `rowIndexStart` (default 1); a windowed/paginated view passes the offset
356
+ // of its first visible row. `aria-rowcount` is `rowCount` when known, or
357
+ // `-1` (ARIA's "unknown count") for a windowed view with an unknown total.
358
+ const ariaRowIndexingEnabled = rowIndexStart != null || rowCount != null;
359
+ const firstRowAriaIndex = rowIndexStart ?? 1;
360
+ const ariaRowCount = ariaRowIndexingEnabled ? (rowCount ?? -1) : undefined;
361
+
338
362
  const RowComponent = TableRow as React.ComponentType<TableRowComponentProps>;
339
363
  const CellComponent =
340
364
  TableCell as React.ComponentType<TableCellComponentProps>;
@@ -488,6 +512,7 @@ function BaseTableInner<T extends Record<string, unknown>>({
488
512
  let tableElement: ReactNode = (
489
513
  <table
490
514
  ref={ref}
515
+ {...(ariaRowCount != null ? {'aria-rowcount': ariaRowCount} : null)}
491
516
  {...tableRenderProps.htmlProps}
492
517
  {...mergeProps(
493
518
  themeProps('base-table'),
@@ -532,6 +557,11 @@ function BaseTableInner<T extends Record<string, unknown>>({
532
557
  textOverflow={textOverflow}
533
558
  RowComponent={RowComponent}
534
559
  CellComponent={CellComponent}
560
+ ariaRowIndex={
561
+ ariaRowIndexingEnabled
562
+ ? firstRowAriaIndex + rowIndex
563
+ : undefined
564
+ }
535
565
  />
536
566
  );
537
567
  })
@@ -593,7 +623,7 @@ function BaseTableInner<T extends Record<string, unknown>>({
593
623
  try {
594
624
  tableElement = plugin.transformTableContext(tableElement);
595
625
  } catch (error) {
596
- console.error('[Table] Plugin threw in transformTableContext:', error);
626
+ devError('Table', 'Plugin threw in transformTableContext:', error);
597
627
  }
598
628
  }
599
629
  }
@@ -93,6 +93,17 @@ export const docs = {
93
93
  type: 'Record<string, TablePlugin<T>>',
94
94
  description: 'Named plugins that extend table behavior via the transform pipeline. Converted to an ordered array internally.',
95
95
  },
96
+ {
97
+ name: 'rowIndexStart',
98
+ type: 'number',
99
+ description: 'ARIA row index (1-based) for the first rendered body row. The row ordinal is an accessibility concern independent of any visible index column, so setting this (or rowCount) makes the table emit aria-rowindex on body rows and aria-rowcount on the table. For a paginated/windowed view, pass the offset of the first visible row (e.g. (page - 1) * pageSize + 1) so aria-rowindex reflects position in the full dataset. Data-driven mode only.',
100
+ default: '1',
101
+ },
102
+ {
103
+ name: 'rowCount',
104
+ type: 'number',
105
+ description: 'Total number of body rows across all pages/windows, used for aria-rowcount so assistive tech can announce "row X of Y" against the full dataset. When omitted but rowIndexStart is set (windowed view with an unknown total), aria-rowcount is set to -1 per the ARIA unknown-count convention. Data-driven mode only.',
106
+ },
96
107
  {
97
108
  name: 'children',
98
109
  type: 'ReactNode',
@@ -1451,3 +1451,88 @@ describe('emptyState', () => {
1451
1451
  });
1452
1452
  });
1453
1453
  });
1454
+
1455
+ describe('ARIA row indexing (#3939)', () => {
1456
+ const bodyRows = (container: HTMLElement): HTMLTableRowElement[] =>
1457
+ Array.from(container.querySelectorAll('tbody tr'));
1458
+
1459
+ it('emits no aria-rowindex/aria-rowcount by default', () => {
1460
+ const {container} = render(<Table data={users} columns={columns} />);
1461
+ expect(screen.getByRole('table')).not.toHaveAttribute('aria-rowcount');
1462
+ for (const row of bodyRows(container)) {
1463
+ expect(row).not.toHaveAttribute('aria-rowindex');
1464
+ }
1465
+ });
1466
+
1467
+ it('numbers rows from 1 when rowCount is provided', () => {
1468
+ const {container} = render(
1469
+ <Table data={users} columns={columns} rowCount={users.length} />,
1470
+ );
1471
+ expect(screen.getByRole('table')).toHaveAttribute(
1472
+ 'aria-rowcount',
1473
+ String(users.length),
1474
+ );
1475
+ const indices = bodyRows(container).map(r =>
1476
+ r.getAttribute('aria-rowindex'),
1477
+ );
1478
+ expect(indices).toEqual(['1', '2', '3']);
1479
+ });
1480
+
1481
+ it('offsets aria-rowindex by rowIndexStart for a paginated view', () => {
1482
+ // Page 3 of a 10-per-page dataset: first visible row is dataset row 21.
1483
+ const {container} = render(
1484
+ <Table
1485
+ data={users}
1486
+ columns={columns}
1487
+ rowIndexStart={21}
1488
+ rowCount={100}
1489
+ />,
1490
+ );
1491
+ expect(screen.getByRole('table')).toHaveAttribute('aria-rowcount', '100');
1492
+ const indices = bodyRows(container).map(r =>
1493
+ r.getAttribute('aria-rowindex'),
1494
+ );
1495
+ expect(indices).toEqual(['21', '22', '23']);
1496
+ });
1497
+
1498
+ it('sets aria-rowcount to -1 (unknown) when only rowIndexStart is given', () => {
1499
+ // Windowed/cursor pagination: offset known, total unknown.
1500
+ const {container} = render(
1501
+ <Table data={users} columns={columns} rowIndexStart={5} />,
1502
+ );
1503
+ expect(screen.getByRole('table')).toHaveAttribute('aria-rowcount', '-1');
1504
+ const indices = bodyRows(container).map(r =>
1505
+ r.getAttribute('aria-rowindex'),
1506
+ );
1507
+ expect(indices).toEqual(['5', '6', '7']);
1508
+ });
1509
+
1510
+ it('does not assign an ARIA row index to the header row', () => {
1511
+ render(<Table data={users} columns={columns} rowCount={users.length} />);
1512
+ const header = screen.getAllByRole('row')[0];
1513
+ expect(header).not.toHaveAttribute('aria-rowindex');
1514
+ });
1515
+
1516
+ it('lets a plugin override the seeded aria-rowindex', () => {
1517
+ const plugin: TablePlugin<User> = {
1518
+ transformBodyRow(props, _item, index) {
1519
+ return {
1520
+ ...props,
1521
+ htmlProps: {...props.htmlProps, 'aria-rowindex': 100 + index},
1522
+ };
1523
+ },
1524
+ };
1525
+ const {container} = render(
1526
+ <Table
1527
+ data={users}
1528
+ columns={columns}
1529
+ rowCount={users.length}
1530
+ plugins={{custom: plugin}}
1531
+ />,
1532
+ );
1533
+ const indices = bodyRows(container).map(r =>
1534
+ r.getAttribute('aria-rowindex'),
1535
+ );
1536
+ expect(indices).toEqual(['100', '101', '102']);
1537
+ });
1538
+ });
@@ -161,12 +161,12 @@ const dividerRowStyles = stylex.create({
161
161
 
162
162
  const dividerColumnStyles = stylex.create({
163
163
  cell: {
164
- borderRightWidth: {
164
+ borderInlineEndWidth: {
165
165
  default: borderVars['--border-width'],
166
166
  ':last-child': '0',
167
167
  },
168
- borderRightStyle: 'solid',
169
- borderRightColor: colorVars['--color-border'],
168
+ borderInlineEndStyle: 'solid',
169
+ borderInlineEndColor: colorVars['--color-border'],
170
170
  },
171
171
  });
172
172
 
@@ -91,12 +91,12 @@ const headerDividerStyles = stylex.create({
91
91
 
92
92
  const dividerColumnStyles = stylex.create({
93
93
  cell: {
94
- borderRightWidth: {
94
+ borderInlineEndWidth: {
95
95
  default: borderVars['--border-width'],
96
96
  ':last-child': '0',
97
97
  },
98
- borderRightStyle: 'solid',
99
- borderRightColor: colorVars['--color-border'],
98
+ borderInlineEndStyle: 'solid',
99
+ borderInlineEndColor: colorVars['--color-border'],
100
100
  },
101
101
  });
102
102
 
@@ -28,6 +28,7 @@ export {useTableColumnResize} from './plugins/columnResize';
28
28
  export {useTableStickyColumns} from './plugins/stickyColumns';
29
29
  export {useTableGroupedRows} from './plugins/groupedRows';
30
30
  export {useTableRowIndex} from './plugins/rowIndex';
31
+ export {useTableRowStatus} from './plugins/rowStatus';
31
32
  export {
32
33
  useTableRowExpansion,
33
34
  useTableRowExpansionState,
@@ -110,6 +111,10 @@ export type {
110
111
  UseTableGroupedRowsConfig,
111
112
  UseTableGroupedRowsResult,
112
113
  } from './plugins/groupedRows';
114
+ export type {
115
+ UseTableRowStatusConfig,
116
+ TableRowStatus,
117
+ } from './plugins/rowStatus';
113
118
  export type {
114
119
  TableTreeRowMeta,
115
120
  UseTableTreeDataConfig,
@@ -20,6 +20,7 @@ import {
20
20
  fontWeightVars,
21
21
  } from '../../../theme/tokens.stylex';
22
22
  import {Icon} from '../../../Icon';
23
+ import {rtlStyles} from '../../../utils';
23
24
  import type {TablePlugin} from '../../types';
24
25
  import {useTranslator} from '../../../i18n';
25
26
 
@@ -325,16 +326,22 @@ export function useTableGroupedRows<T extends Record<string, unknown>>(
325
326
  }}
326
327
  aria-label={
327
328
  collapsed
328
- ? t('@astryx.tableGroupedRows.expandGroup', {groupKey: header.groupKey})
329
- : t('@astryx.tableGroupedRows.collapseGroup', {groupKey: header.groupKey})
329
+ ? t('@astryx.tableGroupedRows.expandGroup', {
330
+ groupKey: header.groupKey,
331
+ })
332
+ : t('@astryx.tableGroupedRows.collapseGroup', {
333
+ groupKey: header.groupKey,
334
+ })
330
335
  }
331
336
  aria-expanded={!collapsed}>
332
- <span
333
- {...stylex.props(
334
- styles.chevronIcon,
335
- !collapsed && styles.chevronExpanded,
336
- )}>
337
- <Icon icon="chevronRight" size="xsm" />
337
+ <span {...stylex.props(rtlStyles.mirror)}>
338
+ <span
339
+ {...stylex.props(
340
+ styles.chevronIcon,
341
+ !collapsed && styles.chevronExpanded,
342
+ )}>
343
+ <Icon icon="chevronRight" size="xsm" />
344
+ </span>
338
345
  </span>
339
346
  </button>
340
347
  {content}