@astryxdesign/core 0.3.0 → 0.4.0

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 (551) hide show
  1. package/CHANGELOG.md +156 -0
  2. package/dist/AlertDialog/AlertDialog.d.ts +10 -2
  3. package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
  4. package/dist/AlertDialog/AlertDialog.js +22 -3
  5. package/dist/AppShell/AppShell.d.ts +2 -2
  6. package/dist/AppShell/AppShell.d.ts.map +1 -1
  7. package/dist/AppShell/AppShell.js +40 -9
  8. package/dist/AspectRatio/AspectRatio.d.ts +13 -0
  9. package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
  10. package/dist/AspectRatio/AspectRatio.js +9 -0
  11. package/dist/Avatar/Avatar.d.ts.map +1 -1
  12. package/dist/Avatar/Avatar.js +33 -20
  13. package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
  14. package/dist/AvatarGroup/AvatarGroupOverflow.js +2 -3
  15. package/dist/Banner/Banner.d.ts.map +1 -1
  16. package/dist/Banner/Banner.js +15 -14
  17. package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  18. package/dist/Breadcrumbs/BreadcrumbItem.js +21 -8
  19. package/dist/Breadcrumbs/index.d.ts +2 -1
  20. package/dist/Breadcrumbs/index.d.ts.map +1 -1
  21. package/dist/Breadcrumbs/index.js +1 -0
  22. package/dist/Button/Button.d.ts.map +1 -1
  23. package/dist/Button/Button.js +11 -15
  24. package/dist/Calendar/Calendar.d.ts.map +1 -1
  25. package/dist/Calendar/Calendar.js +2 -1
  26. package/dist/Calendar/styles.d.ts +0 -2
  27. package/dist/Calendar/styles.d.ts.map +1 -1
  28. package/dist/Calendar/styles.js +0 -2
  29. package/dist/Carousel/Carousel.d.ts.map +1 -1
  30. package/dist/Carousel/Carousel.js +8 -12
  31. package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
  32. package/dist/Chat/ChatDictationButton.js +2 -1
  33. package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
  34. package/dist/Chat/ChatLayoutScrollButton.js +3 -1
  35. package/dist/Chat/ChatSendButton.d.ts.map +1 -1
  36. package/dist/Chat/ChatSendButton.js +4 -3
  37. package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
  38. package/dist/Chat/ChatToolCalls.js +17 -17
  39. package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
  40. package/dist/Chat/useTriggerMenu.js +2 -6
  41. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  42. package/dist/CheckboxInput/CheckboxInput.js +36 -125
  43. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  44. package/dist/ClickableCard/ClickableCard.js +3 -11
  45. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  46. package/dist/CodeBlock/CodeBlock.js +84 -67
  47. package/dist/Collapsible/Collapsible.d.ts.map +1 -1
  48. package/dist/Collapsible/Collapsible.js +35 -15
  49. package/dist/CommandPalette/CommandPaletteItem.d.ts +1 -1
  50. package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
  51. package/dist/CommandPalette/CommandPaletteItem.js +6 -3
  52. package/dist/CommandPalette/CommandPaletteList.js +1 -1
  53. package/dist/ComplexSelector/ComplexSelector.d.ts +1 -1
  54. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  55. package/dist/ComplexSelector/ComplexSelector.js +35 -33
  56. package/dist/ContextMenu/ContextMenu.d.ts +2 -2
  57. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  58. package/dist/ContextMenu/ContextMenu.js +1 -1
  59. package/dist/ContextMenu/index.d.ts +2 -1
  60. package/dist/ContextMenu/index.d.ts.map +1 -1
  61. package/dist/ContextMenu/index.js +1 -0
  62. package/dist/DateInput/DateInput.d.ts +9 -2
  63. package/dist/DateInput/DateInput.d.ts.map +1 -1
  64. package/dist/DateInput/DateInput.js +24 -23
  65. package/dist/DateRangeInput/DateRangeInput.d.ts +9 -2
  66. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  67. package/dist/DateRangeInput/DateRangeInput.js +11 -16
  68. package/dist/DateTimeInput/DateTimeInput.d.ts +9 -1
  69. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  70. package/dist/DateTimeInput/DateTimeInput.js +22 -17
  71. package/dist/Dialog/Dialog.d.ts.map +1 -1
  72. package/dist/Dialog/Dialog.js +4 -4
  73. package/dist/DropdownMenu/DropdownMenu.d.ts +33 -8
  74. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  75. package/dist/DropdownMenu/DropdownMenu.js +62 -20
  76. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +8 -11
  77. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
  78. package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +32 -31
  79. package/dist/DropdownMenu/DropdownMenuDivider.d.ts +25 -0
  80. package/dist/DropdownMenu/DropdownMenuDivider.d.ts.map +1 -0
  81. package/dist/DropdownMenu/DropdownMenuDivider.js +66 -0
  82. package/dist/DropdownMenu/DropdownMenuItem.d.ts +15 -2
  83. package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
  84. package/dist/DropdownMenu/DropdownMenuItem.js +20 -8
  85. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts +5 -5
  86. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
  87. package/dist/DropdownMenu/DropdownMenuRadioItem.js +24 -67
  88. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
  89. package/dist/DropdownMenu/DropdownMenuSubMenu.js +2 -8
  90. package/dist/DropdownMenu/index.d.ts +2 -1
  91. package/dist/DropdownMenu/index.d.ts.map +1 -1
  92. package/dist/DropdownMenu/index.js +4 -0
  93. package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
  94. package/dist/DropdownMenu/renderDropdownItems.js +35 -27
  95. package/dist/EmptyState/EmptyState.d.ts.map +1 -1
  96. package/dist/EmptyState/EmptyState.js +9 -5
  97. package/dist/Field/InputClearButton.d.ts +16 -3
  98. package/dist/Field/InputClearButton.d.ts.map +1 -1
  99. package/dist/Field/InputClearButton.js +15 -4
  100. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  101. package/dist/HoverCard/useHoverCard.js +3 -19
  102. package/dist/Indicator/CheckIndicator.d.ts +25 -0
  103. package/dist/Indicator/CheckIndicator.d.ts.map +1 -0
  104. package/dist/Indicator/CheckIndicator.js +155 -0
  105. package/dist/Indicator/CheckboxIndicator.d.ts +22 -0
  106. package/dist/Indicator/CheckboxIndicator.d.ts.map +1 -0
  107. package/dist/Indicator/CheckboxIndicator.js +173 -0
  108. package/dist/Indicator/RadioIndicator.d.ts +23 -0
  109. package/dist/Indicator/RadioIndicator.d.ts.map +1 -0
  110. package/dist/Indicator/RadioIndicator.js +137 -0
  111. package/dist/Indicator/index.d.ts +24 -0
  112. package/dist/Indicator/index.d.ts.map +1 -0
  113. package/dist/Indicator/index.js +26 -0
  114. package/dist/Indicator/indicator.markers.stylex.d.ts +16 -0
  115. package/dist/Indicator/indicator.markers.stylex.d.ts.map +1 -0
  116. package/dist/Indicator/indicator.markers.stylex.js +21 -0
  117. package/dist/Indicator/indicatorRegistry.d.ts +71 -0
  118. package/dist/Indicator/indicatorRegistry.d.ts.map +1 -0
  119. package/dist/Indicator/indicatorRegistry.js +93 -0
  120. package/dist/Indicator/types.d.ts +167 -0
  121. package/dist/Indicator/types.d.ts.map +1 -0
  122. package/dist/Indicator/types.js +1 -0
  123. package/dist/Indicator/useIndicator.d.ts +18 -0
  124. package/dist/Indicator/useIndicator.d.ts.map +1 -0
  125. package/dist/Indicator/useIndicator.js +30 -0
  126. package/dist/Item/Item.d.ts.map +1 -1
  127. package/dist/Item/Item.js +4 -8
  128. package/dist/Layer/useLayer.d.ts +14 -0
  129. package/dist/Layer/useLayer.d.ts.map +1 -1
  130. package/dist/Layer/useLayer.js +25 -2
  131. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  132. package/dist/Lightbox/Lightbox.js +56 -53
  133. package/dist/Link/Link.d.ts.map +1 -1
  134. package/dist/Link/Link.js +4 -5
  135. package/dist/MobileNav/MobileNav.js +8 -8
  136. package/dist/MoreMenu/MoreMenu.d.ts +14 -1
  137. package/dist/MoreMenu/MoreMenu.d.ts.map +1 -1
  138. package/dist/MoreMenu/MoreMenu.js +4 -0
  139. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  140. package/dist/MultiSelector/MultiSelector.js +78 -75
  141. package/dist/NumberInput/NumberInput.d.ts +27 -1
  142. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  143. package/dist/NumberInput/NumberInput.js +230 -42
  144. package/dist/Outline/Outline.d.ts.map +1 -1
  145. package/dist/Outline/Outline.js +2 -3
  146. package/dist/Pagination/Pagination.d.ts.map +1 -1
  147. package/dist/Pagination/Pagination.js +61 -63
  148. package/dist/Popover/Popover.d.ts.map +1 -1
  149. package/dist/Popover/Popover.js +6 -8
  150. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  151. package/dist/PowerSearch/PowerSearch.js +1 -1
  152. package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
  153. package/dist/PowerSearch/PowerSearchEditPopover.js +7 -0
  154. package/dist/ProgressBar/ProgressBar.d.ts +11 -4
  155. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  156. package/dist/ProgressBar/ProgressBar.js +96 -6
  157. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  158. package/dist/RadioList/RadioListItem.js +29 -84
  159. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  160. package/dist/Resizable/ResizeHandle.js +2 -3
  161. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  162. package/dist/SegmentedControl/SegmentedControlItem.js +2 -3
  163. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  164. package/dist/SelectableCard/SelectableCard.js +3 -11
  165. package/dist/Selector/Selector.d.ts +2 -1
  166. package/dist/Selector/Selector.d.ts.map +1 -1
  167. package/dist/Selector/Selector.js +164 -94
  168. package/dist/Selector/hooks.d.ts +18 -6
  169. package/dist/Selector/hooks.d.ts.map +1 -1
  170. package/dist/Selector/hooks.js +57 -40
  171. package/dist/SideNav/SideNav.d.ts.map +1 -1
  172. package/dist/SideNav/SideNav.js +1 -1
  173. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  174. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  175. package/dist/SideNav/SideNavCollapseButton.js +29 -14
  176. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  177. package/dist/SideNav/SideNavHeading.js +56 -20
  178. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  179. package/dist/SideNav/SideNavItem.js +28 -22
  180. package/dist/Stack/stack.stylex.d.ts +3 -3
  181. package/dist/Switch/Switch.js +11 -10
  182. package/dist/TabList/Tab.d.ts.map +1 -1
  183. package/dist/TabList/Tab.js +2 -3
  184. package/dist/TabList/TabMenu.d.ts.map +1 -1
  185. package/dist/TabList/TabMenu.js +41 -19
  186. package/dist/Table/BaseTable.d.ts.map +1 -1
  187. package/dist/Table/BaseTable.js +8 -0
  188. package/dist/Table/index.d.ts +1 -1
  189. package/dist/Table/index.d.ts.map +1 -1
  190. package/dist/Table/index.js +1 -1
  191. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +1 -1
  192. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
  193. package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +22 -18
  194. package/dist/Table/plugins/rowExpansion/index.d.ts +1 -1
  195. package/dist/Table/plugins/rowExpansion/index.d.ts.map +1 -1
  196. package/dist/Table/plugins/rowExpansion/index.js +1 -1
  197. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +41 -76
  198. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  199. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +94 -345
  200. package/dist/Table/plugins/sortable/useTableSortable.d.ts.map +1 -1
  201. package/dist/Table/plugins/sortable/useTableSortable.js +23 -4
  202. package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
  203. package/dist/Table/plugins/tree/useTableTreeData.js +29 -33
  204. package/dist/Table/tableContextMenu.d.ts.map +1 -1
  205. package/dist/Table/tableContextMenu.js +2 -1
  206. package/dist/Table/types.d.ts +11 -0
  207. package/dist/Table/types.d.ts.map +1 -1
  208. package/dist/TextArea/TextArea.d.ts +10 -1
  209. package/dist/TextArea/TextArea.d.ts.map +1 -1
  210. package/dist/TextArea/TextArea.js +16 -6
  211. package/dist/TextInput/TextInput.d.ts +10 -1
  212. package/dist/TextInput/TextInput.d.ts.map +1 -1
  213. package/dist/TextInput/TextInput.js +13 -19
  214. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  215. package/dist/Thumbnail/Thumbnail.js +32 -26
  216. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  217. package/dist/TimeInput/TimeInput.js +7 -15
  218. package/dist/Timestamp/TimestampHoverCard.d.ts.map +1 -1
  219. package/dist/Timestamp/TimestampHoverCard.js +16 -34
  220. package/dist/Token/Token.d.ts.map +1 -1
  221. package/dist/Token/Token.js +20 -11
  222. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  223. package/dist/Tokenizer/Tokenizer.js +4 -2
  224. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  225. package/dist/Tooltip/useTooltip.js +3 -19
  226. package/dist/TopNav/TopNav.d.ts.map +1 -1
  227. package/dist/TopNav/TopNav.js +6 -5
  228. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  229. package/dist/TopNav/TopNavHeading.js +54 -16
  230. package/dist/TopNav/TopNavItem.d.ts.map +1 -1
  231. package/dist/TopNav/TopNavItem.js +3 -9
  232. package/dist/TopNav/TopNavMegaMenu.d.ts +7 -0
  233. package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
  234. package/dist/TopNav/TopNavMegaMenu.js +146 -60
  235. package/dist/TopNav/TopNavMegaMenuItem.d.ts.map +1 -1
  236. package/dist/TopNav/TopNavMegaMenuItem.js +22 -3
  237. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  238. package/dist/TopNav/TopNavMenu.js +83 -38
  239. package/dist/TreeList/TreeList.d.ts.map +1 -1
  240. package/dist/TreeList/TreeList.js +13 -0
  241. package/dist/TreeList/TreeListBranches.d.ts +1 -1
  242. package/dist/TreeList/TreeListBranches.d.ts.map +1 -1
  243. package/dist/TreeList/TreeListBranches.js +14 -4
  244. package/dist/TreeList/TreeListItem.d.ts +11 -1
  245. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  246. package/dist/TreeList/TreeListItem.js +57 -30
  247. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  248. package/dist/Typeahead/BaseTypeahead.js +16 -8
  249. package/dist/astryx.css +74 -85
  250. package/dist/astryx.umd.js +56 -56
  251. package/dist/astryx.umd.js.map +4 -4
  252. package/dist/hooks/containerReveal.stylex.d.ts +61 -0
  253. package/dist/hooks/containerReveal.stylex.d.ts.map +1 -0
  254. package/dist/hooks/containerReveal.stylex.js +63 -0
  255. package/dist/hooks/index.d.ts +3 -0
  256. package/dist/hooks/index.d.ts.map +1 -1
  257. package/dist/hooks/index.js +2 -0
  258. package/dist/hooks/useClipboard.d.ts +59 -0
  259. package/dist/hooks/useClipboard.d.ts.map +1 -0
  260. package/dist/hooks/useClipboard.js +106 -0
  261. package/dist/hooks/useContainerReveal.d.ts +14 -8
  262. package/dist/hooks/useContainerReveal.d.ts.map +1 -1
  263. package/dist/hooks/useContainerReveal.js +28 -69
  264. package/dist/hooks/useIndicatorFocusRing.d.ts +28 -0
  265. package/dist/hooks/useIndicatorFocusRing.d.ts.map +1 -0
  266. package/dist/hooks/useIndicatorFocusRing.js +96 -0
  267. package/dist/hooks/useLongPress.d.ts.map +1 -1
  268. package/dist/hooks/useLongPress.js +12 -2
  269. package/dist/hooks/useScrollLock.d.ts.map +1 -1
  270. package/dist/hooks/useScrollLock.js +33 -18
  271. package/dist/hooks/useStreamingText.d.ts +18 -3
  272. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  273. package/dist/hooks/useStreamingText.js +47 -7
  274. package/dist/hooks/useTreeFocus.d.ts.map +1 -1
  275. package/dist/hooks/useTreeFocus.js +9 -3
  276. package/dist/hooks/useTypeahead.d.ts +3 -2
  277. package/dist/hooks/useTypeahead.d.ts.map +1 -1
  278. package/dist/hooks/useTypeahead.js +19 -7
  279. package/dist/index.d.ts +1 -0
  280. package/dist/index.d.ts.map +1 -1
  281. package/dist/index.js +1 -0
  282. package/dist/theme/defineTheme.d.ts +16 -0
  283. package/dist/theme/defineTheme.d.ts.map +1 -1
  284. package/dist/theme/defineTheme.js +8 -0
  285. package/dist/theme/derivedVarRegistry.d.ts +8 -0
  286. package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
  287. package/dist/theme/derivedVarRegistry.js +14 -13
  288. package/dist/theme/expandColorScale.d.ts +3 -1
  289. package/dist/theme/expandColorScale.d.ts.map +1 -1
  290. package/dist/theme/expandColorScale.js +17 -7
  291. package/dist/theme/expandTypeScale.d.ts.map +1 -1
  292. package/dist/theme/expandTypeScale.js +17 -0
  293. package/dist/theme/generateThemeRules.d.ts.map +1 -1
  294. package/dist/theme/generateThemeRules.js +11 -0
  295. package/dist/theme/index.d.ts +1 -0
  296. package/dist/theme/index.d.ts.map +1 -1
  297. package/dist/utils/focusOutline.stylex.d.ts +107 -0
  298. package/dist/utils/focusOutline.stylex.d.ts.map +1 -0
  299. package/dist/utils/focusOutline.stylex.js +130 -0
  300. package/dist/utils/focusReturn.d.ts +24 -0
  301. package/dist/utils/focusReturn.d.ts.map +1 -0
  302. package/dist/utils/focusReturn.js +29 -0
  303. package/dist/utils/index.d.ts +1 -0
  304. package/dist/utils/index.d.ts.map +1 -1
  305. package/dist/utils/index.js +1 -0
  306. package/dist/utils/mergeRefs.d.ts.map +1 -1
  307. package/dist/utils/mergeRefs.js +7 -5
  308. package/dist/utils/rtlStyles.d.ts +2 -2
  309. package/dist/utils/rtlStyles.js +2 -2
  310. package/dist/utils/themeProps.d.ts +20 -1
  311. package/dist/utils/themeProps.d.ts.map +1 -1
  312. package/dist/utils/themeProps.js +8 -2
  313. package/locales/en.json +12 -0
  314. package/locales/pseudo.json +9 -0
  315. package/package.json +7 -2
  316. package/src/AlertDialog/AlertDialog.doc.mjs +16 -3
  317. package/src/AlertDialog/AlertDialog.test.tsx +208 -1
  318. package/src/AlertDialog/AlertDialog.tsx +21 -3
  319. package/src/AppShell/AppShell.doc.mjs +11 -0
  320. package/src/AppShell/AppShell.test.tsx +139 -0
  321. package/src/AppShell/AppShell.tsx +32 -22
  322. package/src/AspectRatio/AspectRatio.doc.mjs +27 -3
  323. package/src/AspectRatio/AspectRatio.test.tsx +30 -0
  324. package/src/AspectRatio/AspectRatio.tsx +13 -0
  325. package/src/Avatar/Avatar.doc.mjs +2 -13
  326. package/src/Avatar/Avatar.test.tsx +33 -8
  327. package/src/Avatar/Avatar.tsx +52 -50
  328. package/src/AvatarGroup/AvatarGroupOverflow.tsx +2 -9
  329. package/src/Banner/Banner.tsx +9 -6
  330. package/src/Breadcrumbs/BreadcrumbItem.tsx +16 -6
  331. package/src/Breadcrumbs/index.ts +5 -1
  332. package/src/Button/Button.tsx +21 -41
  333. package/src/Calendar/Calendar.tsx +2 -1
  334. package/src/Calendar/styles.ts +0 -8
  335. package/src/Carousel/Carousel.doc.mjs +3 -0
  336. package/src/Carousel/Carousel.tsx +10 -6
  337. package/src/Chat/Chat.doc.mjs +2 -0
  338. package/src/Chat/ChatDictationButton.tsx +7 -1
  339. package/src/Chat/ChatLayoutScrollButton.test.tsx +22 -0
  340. package/src/Chat/ChatLayoutScrollButton.tsx +8 -1
  341. package/src/Chat/ChatSendButton.tsx +2 -3
  342. package/src/Chat/ChatToolCalls.test.tsx +35 -0
  343. package/src/Chat/ChatToolCalls.tsx +36 -16
  344. package/src/Chat/useTriggerMenu.tsx +2 -5
  345. package/src/CheckboxInput/CheckboxInput.doc.mjs +4 -2
  346. package/src/CheckboxInput/CheckboxInput.test.tsx +115 -0
  347. package/src/CheckboxInput/CheckboxInput.tsx +45 -202
  348. package/src/ClickableCard/ClickableCard.tsx +6 -11
  349. package/src/CodeBlock/CodeBlock.doc.mjs +3 -0
  350. package/src/CodeBlock/CodeBlock.test.tsx +91 -0
  351. package/src/CodeBlock/CodeBlock.tsx +57 -80
  352. package/src/Collapsible/Collapsible.tsx +22 -18
  353. package/src/CommandPalette/CommandPalette.test.tsx +29 -0
  354. package/src/CommandPalette/CommandPaletteItem.tsx +7 -4
  355. package/src/CommandPalette/CommandPaletteList.tsx +2 -2
  356. package/src/ComplexSelector/ComplexSelector.doc.mjs +42 -0
  357. package/src/ComplexSelector/ComplexSelector.test.tsx +64 -0
  358. package/src/ComplexSelector/ComplexSelector.tsx +46 -29
  359. package/src/ContextMenu/ContextMenu.doc.mjs +1 -1
  360. package/src/ContextMenu/ContextMenu.test.tsx +41 -0
  361. package/src/ContextMenu/ContextMenu.tsx +3 -3
  362. package/src/ContextMenu/index.ts +5 -1
  363. package/src/DateInput/DateInput.doc.mjs +18 -3
  364. package/src/DateInput/DateInput.test.tsx +93 -11
  365. package/src/DateInput/DateInput.tsx +41 -19
  366. package/src/DateRangeInput/DateRangeInput.doc.mjs +10 -2
  367. package/src/DateRangeInput/DateRangeInput.test.tsx +110 -14
  368. package/src/DateRangeInput/DateRangeInput.tsx +24 -12
  369. package/src/DateTimeInput/DateTimeInput.doc.mjs +16 -2
  370. package/src/DateTimeInput/DateTimeInput.test.tsx +75 -0
  371. package/src/DateTimeInput/DateTimeInput.tsx +35 -8
  372. package/src/Dialog/Dialog.tsx +2 -9
  373. package/src/DropdownMenu/DropdownMenu.doc.mjs +5 -9
  374. package/src/DropdownMenu/DropdownMenu.test.tsx +534 -4
  375. package/src/DropdownMenu/DropdownMenu.tsx +113 -52
  376. package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +27 -30
  377. package/src/DropdownMenu/DropdownMenuDivider.doc.mjs +34 -0
  378. package/src/DropdownMenu/DropdownMenuDivider.tsx +81 -0
  379. package/src/DropdownMenu/DropdownMenuItem.doc.mjs +39 -4
  380. package/src/DropdownMenu/DropdownMenuItem.tsx +48 -10
  381. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +30 -76
  382. package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +25 -19
  383. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +44 -14
  384. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +1 -5
  385. package/src/DropdownMenu/index.ts +8 -1
  386. package/src/DropdownMenu/renderDropdownItems.tsx +33 -34
  387. package/src/EmptyState/EmptyState.doc.mjs +4 -0
  388. package/src/EmptyState/EmptyState.test.tsx +62 -0
  389. package/src/EmptyState/EmptyState.tsx +16 -6
  390. package/src/Field/Field.doc.mjs +1 -0
  391. package/src/Field/InputClearButton.test.tsx +117 -0
  392. package/src/Field/InputClearButton.tsx +30 -3
  393. package/src/HoverCard/useHoverCard.tsx +2 -23
  394. package/src/Icon/Icon.doc.mjs +2 -1
  395. package/src/Indicator/CheckIndicator.tsx +174 -0
  396. package/src/Indicator/CheckboxIndicator.tsx +257 -0
  397. package/src/Indicator/Indicator.doc.mjs +344 -0
  398. package/src/Indicator/Indicator.test.tsx +393 -0
  399. package/src/Indicator/RadioIndicator.tsx +206 -0
  400. package/src/Indicator/index.ts +45 -0
  401. package/src/Indicator/indicator.markers.stylex.ts +19 -0
  402. package/src/Indicator/indicatorRegistry.test.tsx +106 -0
  403. package/src/Indicator/indicatorRegistry.ts +120 -0
  404. package/src/Indicator/types.ts +186 -0
  405. package/src/Indicator/useIndicator.ts +39 -0
  406. package/src/Item/Item.doc.mjs +1 -1
  407. package/src/Item/Item.tsx +7 -14
  408. package/src/Layer/useLayer.doc.mjs +2 -2
  409. package/src/Layer/useLayer.test.tsx +85 -0
  410. package/src/Layer/useLayer.tsx +39 -1
  411. package/src/Lightbox/Lightbox.doc.mjs +1 -1
  412. package/src/Lightbox/Lightbox.tsx +43 -38
  413. package/src/Link/Link.tsx +4 -11
  414. package/src/MobileNav/MobileNav.tsx +3 -3
  415. package/src/MoreMenu/MoreMenu.doc.mjs +31 -0
  416. package/src/MoreMenu/MoreMenu.test.tsx +68 -1
  417. package/src/MoreMenu/MoreMenu.tsx +19 -0
  418. package/src/MultiSelector/MultiSelector.doc.mjs +9 -1
  419. package/src/MultiSelector/MultiSelector.test.tsx +255 -16
  420. package/src/MultiSelector/MultiSelector.tsx +103 -99
  421. package/src/NumberInput/NumberInput.doc.mjs +265 -50
  422. package/src/NumberInput/NumberInput.test.tsx +726 -21
  423. package/src/NumberInput/NumberInput.tsx +353 -59
  424. package/src/Outline/Outline.tsx +2 -5
  425. package/src/Pagination/Pagination.doc.mjs +1 -1
  426. package/src/Pagination/Pagination.test.tsx +22 -7
  427. package/src/Pagination/Pagination.tsx +38 -35
  428. package/src/Popover/Popover.tsx +6 -7
  429. package/src/PowerSearch/PowerSearch.tsx +1 -1
  430. package/src/PowerSearch/PowerSearchEditPopover.test.tsx +42 -0
  431. package/src/PowerSearch/PowerSearchEditPopover.tsx +7 -0
  432. package/src/ProgressBar/ProgressBar.doc.mjs +27 -5
  433. package/src/ProgressBar/ProgressBar.test.tsx +224 -1
  434. package/src/ProgressBar/ProgressBar.tsx +124 -22
  435. package/src/RadioList/RadioList.doc.mjs +4 -2
  436. package/src/RadioList/RadioListItem.tsx +31 -130
  437. package/src/Resizable/ResizeHandle.tsx +2 -9
  438. package/src/SegmentedControl/SegmentedControlItem.tsx +2 -9
  439. package/src/SelectableCard/SelectableCard.tsx +4 -9
  440. package/src/Selector/Selector.doc.mjs +7 -4
  441. package/src/Selector/Selector.test.tsx +935 -25
  442. package/src/Selector/Selector.tsx +189 -106
  443. package/src/Selector/hooks.ts +77 -50
  444. package/src/SideNav/SideNav.test.tsx +46 -0
  445. package/src/SideNav/SideNav.tsx +1 -0
  446. package/src/SideNav/SideNavCollapseButton.tsx +15 -10
  447. package/src/SideNav/SideNavHeading.tsx +48 -10
  448. package/src/SideNav/SideNavItem.tsx +20 -12
  449. package/src/Stack/Stack.doc.mjs +110 -0
  450. package/src/StatusDot/StatusDot.doc.mjs +12 -3
  451. package/src/Switch/Switch.test.tsx +32 -0
  452. package/src/Switch/Switch.tsx +8 -8
  453. package/src/TabList/Tab.tsx +2 -9
  454. package/src/TabList/TabMenu.tsx +14 -21
  455. package/src/Table/BaseTable.tsx +11 -0
  456. package/src/Table/index.ts +1 -4
  457. package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +30 -14
  458. package/src/Table/plugins/rowExpansion/index.ts +1 -4
  459. package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +125 -175
  460. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +115 -458
  461. package/src/Table/plugins/sortable/useTableSortable.tsx +2 -6
  462. package/src/Table/plugins/tree/useTableTreeData.tsx +43 -24
  463. package/src/Table/tableContextMenu.test.tsx +27 -0
  464. package/src/Table/tableContextMenu.tsx +1 -0
  465. package/src/Table/types.ts +11 -0
  466. package/src/Table/useTableGroupedRows.doc.mjs +1 -1
  467. package/src/Table/useTableRowExpansion.doc.mjs +43 -66
  468. package/src/TextArea/TextArea.doc.mjs +42 -2
  469. package/src/TextArea/TextArea.test.tsx +219 -0
  470. package/src/TextArea/TextArea.tsx +34 -7
  471. package/src/TextInput/TextInput.doc.mjs +18 -2
  472. package/src/TextInput/TextInput.test.tsx +189 -0
  473. package/src/TextInput/TextInput.tsx +25 -31
  474. package/src/Thumbnail/Thumbnail.tsx +2 -9
  475. package/src/TimeInput/TimeInput.doc.mjs +2 -2
  476. package/src/TimeInput/TimeInput.test.tsx +30 -3
  477. package/src/TimeInput/TimeInput.tsx +9 -26
  478. package/src/Timestamp/Timestamp.doc.mjs +4 -3
  479. package/src/Timestamp/TimestampHoverCard.tsx +13 -35
  480. package/src/Token/Token.tsx +5 -28
  481. package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
  482. package/src/Tokenizer/Tokenizer.test.tsx +45 -3
  483. package/src/Tokenizer/Tokenizer.tsx +10 -2
  484. package/src/Tooltip/useTooltip.tsx +2 -23
  485. package/src/TopNav/TopNav.tsx +1 -3
  486. package/src/TopNav/TopNavHeading.tsx +42 -13
  487. package/src/TopNav/TopNavItem.tsx +3 -21
  488. package/src/TopNav/TopNavMegaMenu.test.tsx +433 -33
  489. package/src/TopNav/TopNavMegaMenu.tsx +118 -53
  490. package/src/TopNav/TopNavMegaMenuItem.tsx +2 -9
  491. package/src/TopNav/TopNavMenu.tsx +34 -37
  492. package/src/TreeList/TreeList.doc.mjs +5 -0
  493. package/src/TreeList/TreeList.test.tsx +206 -7
  494. package/src/TreeList/TreeList.tsx +22 -0
  495. package/src/TreeList/TreeListBranches.tsx +25 -2
  496. package/src/TreeList/TreeListItem.tsx +89 -52
  497. package/src/Typeahead/BaseTypeahead.tsx +19 -6
  498. package/src/Typeahead/Typeahead.doc.mjs +1 -0
  499. package/src/Typeahead/Typeahead.test.tsx +76 -3
  500. package/src/hooks/containerReveal.stylex.ts +102 -0
  501. package/src/hooks/index.ts +4 -0
  502. package/src/hooks/useClipboard.doc.mjs +87 -0
  503. package/src/hooks/useClipboard.test.tsx +151 -0
  504. package/src/hooks/useClipboard.ts +135 -0
  505. package/src/hooks/useContainerReveal.doc.mjs +7 -7
  506. package/src/hooks/useContainerReveal.test.tsx +42 -62
  507. package/src/hooks/useContainerReveal.ts +36 -91
  508. package/src/hooks/useImageMode.test.ts +1 -1
  509. package/src/hooks/useIndicatorFocusRing.tsx +120 -0
  510. package/src/hooks/useLongPress.test.tsx +18 -0
  511. package/src/hooks/useLongPress.ts +12 -2
  512. package/src/hooks/useScrollLock.test.ts +72 -0
  513. package/src/hooks/useScrollLock.ts +51 -19
  514. package/src/hooks/useStreamingText.test.ts +46 -1
  515. package/src/hooks/useStreamingText.ts +49 -7
  516. package/src/hooks/useTreeFocus.test.tsx +50 -0
  517. package/src/hooks/useTreeFocus.ts +14 -3
  518. package/src/hooks/useTypeahead.test.tsx +150 -0
  519. package/src/hooks/useTypeahead.ts +24 -9
  520. package/src/i18n/InternationalizationProvider.doc.mjs +7 -2
  521. package/src/index.ts +1 -0
  522. package/src/theme/defineTheme.ts +24 -0
  523. package/src/theme/derivedVarRegistry.test.ts +21 -1
  524. package/src/theme/derivedVarRegistry.ts +19 -6
  525. package/src/theme/expandColorScale.test.ts +14 -0
  526. package/src/theme/expandColorScale.ts +24 -9
  527. package/src/theme/expandTypeScale.test.ts +43 -0
  528. package/src/theme/expandTypeScale.ts +17 -0
  529. package/src/theme/generateThemeRules.test.ts +61 -20
  530. package/src/theme/generateThemeRules.ts +11 -0
  531. package/src/theme/index.ts +13 -0
  532. package/src/utils/focusOutline.stylex.ts +163 -0
  533. package/src/utils/focusReturn.test.ts +42 -0
  534. package/src/utils/focusReturn.ts +31 -0
  535. package/src/utils/index.ts +1 -0
  536. package/src/utils/mergeRefs.test.ts +48 -0
  537. package/src/utils/mergeRefs.ts +12 -6
  538. package/src/utils/rtlStyles.ts +2 -2
  539. package/src/utils/themeProps.ts +26 -4
  540. package/dist/CheckboxInput/checkbox.markers.stylex.d.ts +0 -9
  541. package/dist/CheckboxInput/checkbox.markers.stylex.d.ts.map +0 -1
  542. package/dist/CheckboxInput/checkbox.markers.stylex.js +0 -14
  543. package/dist/RadioList/radio.markers.stylex.d.ts +0 -7
  544. package/dist/RadioList/radio.markers.stylex.d.ts.map +0 -1
  545. package/dist/RadioList/radio.markers.stylex.js +0 -12
  546. package/dist/hooks/containerReveal.pool.stylex.d.ts +0 -303
  547. package/dist/hooks/containerReveal.pool.stylex.d.ts.map +0 -1
  548. package/dist/hooks/containerReveal.pool.stylex.js +0 -292
  549. package/src/CheckboxInput/checkbox.markers.stylex.ts +0 -12
  550. package/src/RadioList/radio.markers.stylex.ts +0 -10
  551. package/src/hooks/containerReveal.pool.stylex.ts +0 -571
@@ -4,22 +4,23 @@
4
4
 
5
5
  /**
6
6
  * @file useTableRowExpansion.tsx
7
- * @input React, StyleX, Icon, Table types
8
- * @output Exports useTableRowExpansion hook + config/state types
9
- * @position Row-expansion plugin; consumed by Table via plugins prop
10
- * @deprecated Superseded by the tree plugin (useTableTreeData +
11
- * useTableTreeState). Kept for back-compat; new tree tables should use the
12
- * tree plugin. See the migration guide on useTableRowExpansion.
7
+ * @input React, StyleX, Icon, Table types, i18n (useTranslator)
8
+ * @output Exports useTableRowExpansion hook + config type
9
+ * @position Row-expansion plugin (detail panel); consumed by Table via plugins prop
10
+ *
11
+ * Expands a full-width detail panel below a row, rendered by the consumer's
12
+ * `renderExpanded(item)`. For hierarchical/tree tables (child rows that reuse
13
+ * the parent columns) use `useTableTreeData` + `useTableTreeState` instead.
13
14
  *
14
15
  * SYNC: When modified, update these files to stay in sync:
15
16
  * - /packages/core/src/Table/index.ts (exports)
17
+ * - /packages/core/src/Table/useTableRowExpansion.doc.mjs
16
18
  */
17
- import { useCallback, useMemo, useRef } from 'react';
19
+ import { useMemo, useRef } from 'react';
18
20
  import * as stylex from '@stylexjs/stylex';
19
21
  import "../../../theme/tokens.stylex.js";
20
22
  import { spacingVars, colorVars, radiusVars } from "../../../theme/tokens.stylex.js";
21
23
  import { Icon } from "../../../Icon/index.js";
22
- import { rtlStyles } from "../../../utils/index.js";
23
24
  import { resolveContextActions } from "../../tableContextMenu.js";
24
25
  import { useTranslator } from "../../../i18n/index.js";
25
26
 
@@ -28,166 +29,13 @@ import { useTranslator } from "../../../i18n/index.js";
28
29
  // =============================================================================
29
30
 
30
31
  /**
31
- * Configuration for useTableRowExpansion (inherited-columns mode).
32
- *
33
- * Child rows use the same columns as their parents, with indentation on the
34
- * first content column. The consumer provides a **flat** data array (use
35
- * {@link useTableRowExpansionState} to flatten a tree) and a `getDepth`
36
- * function so the plugin knows each row's nesting level.
37
- */
38
-
39
- /**
40
- * Configuration for {@link useTableRowExpansionState}.
32
+ * Configuration for useTableRowExpansion (detail-panel mode).
41
33
  *
42
- * Mirrors the shape of {@link useTableSelectionState}: you own the
43
- * `expandedKeys` set (via `useState`), and the hook derives everything the
44
- * plugin needs — the flattened `data`, per-row depth, expand/collapse
45
- * handlers, and the expand-all toggle state.
46
- */
47
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
48
- /**
49
- * Manages row-expansion state and derives the config for
50
- * {@link useTableRowExpansion}.
51
- *
52
- * @deprecated Use `useTableTreeState` (with `useTableTreeData`) instead. The
53
- * tree plugin covers the same affordances (expand-all header control,
54
- * whole-row click) with a cycle guard and per-row fine-grained re-render. See
55
- * the migration guide on `useTableRowExpansion` (`astryx component
56
- * useTableRowExpansion --detail full`) for the before/after and config
57
- * mapping.
58
- *
59
- * @example
60
- * ```
61
- * const [expandedKeys, setExpandedKeys] = useState<Set<string>>(new Set());
62
- * const {data, expansionConfig} = useTableRowExpansionState({
63
- * baseData: tree,
64
- * getChildren: item => item.children ?? [],
65
- * getRowKey: item => item.id,
66
- * expandedKeys,
67
- * setExpandedKeys,
68
- * });
69
- * const expansion = useTableRowExpansion(expansionConfig);
70
- * <Table data={data} columns={columns} idKey="id" plugins={{expansion}} />;
71
- * ```
34
+ * The consumer owns expansion state; the plugin provides the chevron UI, the
35
+ * full-width detail panel rendered below an expanded row, and a right-click
36
+ * "Expand/Collapse row" action.
72
37
  */
73
- export function useTableRowExpansionState({
74
- baseData,
75
- getChildren,
76
- getRowKey,
77
- getIsItemExpandable,
78
- expandedKeys,
79
- setExpandedKeys
80
- }) {
81
- const isExpandable = useCallback(item => getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0, [getIsItemExpandable, getChildren]);
82
- const depthMap = useMemo(() => {
83
- const map = new Map();
84
- // Ancestor keys on the current walk path — guards against cyclic data.
85
- const path = new Set();
86
- function walk(items, depth) {
87
- for (const item of items) {
88
- const key = getRowKey(item);
89
- if (path.has(key)) {
90
- continue; // cyclic edge — skip
91
- }
92
- map.set(key, depth);
93
- if (expandedKeys.has(key)) {
94
- path.add(key);
95
- walk(getChildren(item), depth + 1);
96
- path.delete(key);
97
- }
98
- }
99
- }
100
- walk(baseData, 0);
101
- return map;
102
- }, [baseData, getChildren, getRowKey, expandedKeys]);
103
- const data = useMemo(() => {
104
- const result = [];
105
- // Ancestor keys on the current walk path — guards against cyclic data.
106
- const path = new Set();
107
- function walk(items) {
108
- for (const item of items) {
109
- const key = getRowKey(item);
110
- if (path.has(key)) {
111
- continue; // cyclic edge — skip
112
- }
113
- result.push(item);
114
- if (expandedKeys.has(key)) {
115
- path.add(key);
116
- walk(getChildren(item));
117
- path.delete(key);
118
- }
119
- }
120
- }
121
- walk(baseData);
122
- return result;
123
- }, [baseData, getChildren, getRowKey, expandedKeys]);
124
-
125
- // Every expandable key across the whole tree (drives expand-all).
126
- const allExpandableKeys = useMemo(() => {
127
- const keys = [];
128
- // Ancestor keys on the current walk path — guards against cyclic data.
129
- const path = new Set();
130
- function walk(items) {
131
- for (const item of items) {
132
- const key = getRowKey(item);
133
- if (path.has(key)) {
134
- continue; // cyclic edge — skip
135
- }
136
- if (isExpandable(item)) {
137
- keys.push(key);
138
- path.add(key);
139
- walk(getChildren(item));
140
- path.delete(key);
141
- }
142
- }
143
- }
144
- walk(baseData);
145
- return keys;
146
- }, [baseData, getChildren, getRowKey, isExpandable]);
147
- const getDepth = useCallback(item => depthMap.get(getRowKey(item)) ?? 0, [depthMap, getRowKey]);
148
- const onToggle = useCallback(key => {
149
- setExpandedKeys(prev => {
150
- const next = new Set(prev);
151
- if (next.has(key)) {
152
- next.delete(key);
153
- } else {
154
- next.add(key);
155
- }
156
- return next;
157
- });
158
- }, [setExpandedKeys]);
159
- const isAllExpanded = useMemo(() => {
160
- if (allExpandableKeys.length === 0) {
161
- return false;
162
- }
163
- const expandedCount = allExpandableKeys.filter(k => expandedKeys.has(k)).length;
164
- if (expandedCount === 0) {
165
- return false;
166
- }
167
- if (expandedCount === allExpandableKeys.length) {
168
- return true;
169
- }
170
- return 'indeterminate';
171
- }, [allExpandableKeys, expandedKeys]);
172
- const onToggleExpandAll = useCallback(expand => {
173
- setExpandedKeys(expand ? new Set(allExpandableKeys) : new Set());
174
- }, [setExpandedKeys, allExpandableKeys]);
175
- const expansionConfig = useMemo(() => ({
176
- expandedKeys,
177
- onToggle,
178
- getRowKey,
179
- getChildren,
180
- getDepth,
181
- getIsItemExpandable,
182
- isAllExpanded,
183
- onToggleExpandAll
184
- }), [expandedKeys, onToggle, getRowKey, getChildren, getDepth, getIsItemExpandable, isAllExpanded, onToggleExpandAll]);
185
- return {
186
- data,
187
- expansionConfig
188
- };
189
- }
190
-
38
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
191
39
  // =============================================================================
192
40
  // Styles
193
41
  // =============================================================================
@@ -196,65 +44,34 @@ const EXPANSION_COLUMN_WIDTH = {
196
44
  type: 'pixel',
197
45
  value: 40
198
46
  };
199
-
200
- /** Indentation applied per depth level, in pixels. */
201
- const INDENT_PER_DEPTH = 24;
202
- const _temp = {
203
- kZCmMZ: "xnvo3vl",
204
- "$$css": true
205
- };
206
- const expansionStyles = {
207
- indentedCell: {
208
- k1xSpc: "x78zum5",
209
- kGNEyG: "x6s0dn4",
210
- kOIVth: "xzye2dw",
211
- $$css: true
212
- },
213
- indent: px => [_temp, {
214
- "--x-paddingInlineStart": (val => typeof val === "number" ? val + "px" : val != null ? val : undefined)(`${px}px`)
215
- }],
216
- clickableRow: {
217
- kkrTdU: "x1ypdohk",
218
- $$css: true
219
- }
220
- };
221
-
222
47
  // =============================================================================
223
- // Chevron
48
+ // Chevron Cell
224
49
  // =============================================================================
225
50
 
226
51
  function ExpansionChevron({
227
52
  isExpanded,
228
- onToggle,
229
- ariaLabel
53
+ onToggle
230
54
  }) {
55
+ const t = useTranslator();
231
56
  return /*#__PURE__*/_jsx("button", {
232
57
  type: "button",
233
58
  ...{
234
- className: "x3nfvp2 x6s0dn4 xl56j7k xvy4d1p xxk0z11 xx3sua9 x1ypdohk xv9yike xefglzl xx6bhzk x1717udv x2lah0s x1ilzqfv x1cqbx0l"
235
- },
59
+ 0: {
60
+ className: "x3nfvp2 x6s0dn4 xl56j7k x1mtvzj0 xvpftlf xx3sua9 x1ypdohk xv9yike x12pfavo xx6bhzk x1717udv x1ilzqfv x1cqbx0l"
61
+ },
62
+ 1: {
63
+ className: "x3nfvp2 x6s0dn4 xl56j7k x1mtvzj0 xvpftlf xx3sua9 x1ypdohk xv9yike x12pfavo xx6bhzk x1717udv x1ilzqfv x1cqbx0l x1iffjtl"
64
+ }
65
+ }[!!isExpanded << 0],
236
66
  onClick: e => {
237
67
  e.stopPropagation();
238
68
  onToggle();
239
69
  },
240
- "aria-label": ariaLabel,
70
+ "aria-label": isExpanded ? t('@astryx.tableRowExpansion.collapseRow') : t('@astryx.tableRowExpansion.expandRow'),
241
71
  "aria-expanded": isExpanded,
242
- children: /*#__PURE__*/_jsx("span", {
243
- ...stylex.props(rtlStyles.mirror),
244
- children: /*#__PURE__*/_jsx("span", {
245
- ...{
246
- 0: {
247
- className: "x3nfvp2 x11xpdln xx6bhzk"
248
- },
249
- 1: {
250
- className: "x3nfvp2 x11xpdln xx6bhzk x1iffjtl"
251
- }
252
- }[!!isExpanded << 0],
253
- children: /*#__PURE__*/_jsx(Icon, {
254
- icon: "chevronRight",
255
- size: "xsm"
256
- })
257
- })
72
+ children: /*#__PURE__*/_jsx(Icon, {
73
+ icon: "chevronRight",
74
+ size: "xsm"
258
75
  })
259
76
  });
260
77
  }
@@ -264,147 +81,72 @@ function ExpansionChevron({
264
81
  // =============================================================================
265
82
 
266
83
  /**
267
- * Returns a TablePlugin implementing expandable rows with inherited columns.
84
+ * Returns a TablePlugin that expands a full-width detail panel below a row.
85
+ *
86
+ * The consumer owns the `expandedKeys` set (via `useState`); the plugin adds
87
+ * a leading chevron column, a right-click expand/collapse action, and renders
88
+ * `renderExpanded(item)` in a full-width panel below each expanded row.
268
89
  *
269
- * @deprecated Use `useTableTreeData` (with `useTableTreeState`) instead. The
270
- * tree plugin covers the same affordances (expand-all header control,
271
- * whole-row click) with a cycle guard and per-row fine-grained re-render. See
272
- * the migration guide on this hook's docs (`astryx component
273
- * useTableRowExpansion --detail full`) for the before/after and config
274
- * mapping.
90
+ * For hierarchical data (child rows sharing the parent columns) use
91
+ * `useTableTreeData` + `useTableTreeState` instead.
92
+ *
93
+ * @example
94
+ * ```
95
+ * const [expandedKeys, setExpandedKeys] = useState<Set<string>>(new Set());
96
+ * const expansion = useTableRowExpansion({
97
+ * expandedKeys,
98
+ * onToggle: key =>
99
+ * setExpandedKeys(prev => {
100
+ * const next = new Set(prev);
101
+ * next.has(key) ? next.delete(key) : next.add(key);
102
+ * return next;
103
+ * }),
104
+ * getRowKey: item => item.id,
105
+ * renderExpanded: item => <OrderDetails order={item} />,
106
+ * });
107
+ * <Table data={data} columns={columns} idKey="id" plugins={{expansion}} />;
108
+ * ```
275
109
  */
276
110
  export function useTableRowExpansion(config) {
277
- const t = useTranslator();
278
111
  const {
279
112
  expandedKeys,
280
113
  onToggle,
281
114
  getRowKey,
282
- getChildren,
283
- getDepth,
284
- getIsItemExpandable,
285
- hasRowClickExpansion = false,
286
- isAllExpanded,
287
- onToggleExpandAll
115
+ renderExpanded,
116
+ getIsItemExpandable
288
117
  } = config;
118
+ const t = useTranslator();
289
119
 
290
- // Track the first non-plugin column key for indentation.
291
- const firstUserColumnKeyRef = useRef(null);
120
+ // Final rendered column count, captured in transformColumns (pipeline step
121
+ // 1) and read in transformBodyRow for the detail panel's colSpan.
122
+ const columnCountRef = useRef(1);
292
123
  const expansionColumn = useMemo(() => ({
293
124
  key: '__expansion',
294
125
  header: '',
295
126
  width: EXPANSION_COLUMN_WIDTH,
296
127
  resizable: false,
297
128
  renderCell: item => {
298
- // Child rows (depth > 0) show their chevron inline in the first user
299
- // column instead — don't double up here.
300
- const depth = getDepth ? getDepth(item) : 0;
301
- if (depth > 0) {
302
- return null;
303
- }
304
- const key = getRowKey(item);
305
- const expandable = getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0;
129
+ const expandable = getIsItemExpandable ? getIsItemExpandable(item) : true;
306
130
  if (!expandable) {
307
131
  return null;
308
132
  }
309
- const isExpanded = expandedKeys.has(key);
133
+ const key = getRowKey(item);
310
134
  return /*#__PURE__*/_jsx(ExpansionChevron, {
311
- isExpanded: isExpanded,
312
- onToggle: () => onToggle(key),
313
- ariaLabel: isExpanded ? t('@astryx.tableRowExpansion.collapseRow') : t('@astryx.tableRowExpansion.expandRow')
135
+ isExpanded: expandedKeys.has(key),
136
+ onToggle: () => onToggle(key)
314
137
  });
315
138
  }
316
- }), [expandedKeys, onToggle, getRowKey, getChildren, getIsItemExpandable, getDepth, t]);
139
+ }), [expandedKeys, onToggle, getRowKey, getIsItemExpandable]);
317
140
  return useMemo(() => ({
318
141
  transformColumns(columns) {
319
- // Track the first user column for indentation.
320
- const firstUserCol = columns.find(c => !c.key.startsWith('__'));
321
- firstUserColumnKeyRef.current = firstUserCol?.key ?? null;
322
-
323
- // Wrap the first user column's renderCell to add depth indentation +
324
- // an inline chevron for child rows. This is the inherited-columns
325
- // pattern: child rows use the same columns but indent their first
326
- // content cell.
327
- const wrappedColumns = columns.map(col => {
328
- if (col.key !== firstUserColumnKeyRef.current) {
329
- return col;
330
- }
331
- const originalRenderCell = col.renderCell;
332
- return {
333
- ...col,
334
- renderCell: item => {
335
- const depth = getDepth ? getDepth(item) : 0;
336
- const originalContent = originalRenderCell ? originalRenderCell(item) : String(item[col.key] ?? '');
337
- if (depth === 0) {
338
- return originalContent;
339
- }
340
- const indent = (depth - 1) * INDENT_PER_DEPTH;
341
- const key = getRowKey(item);
342
- const isExpanded = expandedKeys.has(key);
343
- const expandable = getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0;
344
- const chevron = expandable ? /*#__PURE__*/_jsx(ExpansionChevron, {
345
- isExpanded: isExpanded,
346
- onToggle: () => onToggle(key),
347
- ariaLabel: isExpanded ? t('@astryx.tableRowExpansion.collapseRow') : t('@astryx.tableRowExpansion.expandRow')
348
- }) : /*#__PURE__*/_jsx("span", {
349
- ...{
350
- className: "x1rg5ohu xvy4d1p xxk0z11 x2lah0s"
351
- }
352
- });
353
- return /*#__PURE__*/_jsxs("div", {
354
- ...stylex.props(expansionStyles.indentedCell, indent > 0 && expansionStyles.indent(indent)),
355
- children: [chevron, originalContent]
356
- });
357
- }
358
- };
359
- });
360
- return [expansionColumn, ...wrappedColumns];
361
- },
362
- transformHeaderCell(props, column) {
363
- if (column.key !== '__expansion') {
364
- return props;
365
- }
366
-
367
- // Show expand-all toggle when the consumer provides the state + callback.
368
- if (isAllExpanded !== undefined && onToggleExpandAll) {
369
- const allExpanded = isAllExpanded === true;
370
- return {
371
- ...props,
372
- content: /*#__PURE__*/_jsx("button", {
373
- type: "button",
374
- ...{
375
- className: "x3nfvp2 x6s0dn4 xl56j7k xvy4d1p xxk0z11 xx3sua9 x1ypdohk xv9yike xefglzl xx6bhzk x1717udv x2lah0s x1ilzqfv x1cqbx0l"
376
- },
377
- onClick: () => onToggleExpandAll(!allExpanded),
378
- "aria-label": allExpanded ? t('@astryx.tableRowExpansion.collapseAllRows') : t('@astryx.tableRowExpansion.expandAllRows'),
379
- children: /*#__PURE__*/_jsx("span", {
380
- ...stylex.props(rtlStyles.mirror),
381
- children: /*#__PURE__*/_jsx("span", {
382
- ...{
383
- 0: {
384
- className: "x3nfvp2 x11xpdln xx6bhzk"
385
- },
386
- 1: {
387
- className: "x3nfvp2 x11xpdln xx6bhzk x1iffjtl"
388
- }
389
- }[!!allExpanded << 0],
390
- children: /*#__PURE__*/_jsx(Icon, {
391
- icon: "chevronRight",
392
- size: "xsm"
393
- })
394
- })
395
- })
396
- })
397
- };
398
- }
399
- return {
400
- ...props,
401
- content: null
402
- };
142
+ const withExpansion = [expansionColumn, ...columns];
143
+ columnCountRef.current = withExpansion.length;
144
+ return withExpansion;
403
145
  },
404
- transformBodyCell(props, column, item) {
405
- // Contribute "Expand/Collapse row" context-menu action on every cell
406
- // so right-clicking anywhere in the row shows the option.
407
- const expandable = getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0;
146
+ transformBodyCell(props, _column, item) {
147
+ // Contribute the expand/collapse action on every cell; BaseTable
148
+ // aggregates them into one menu per row. Skip non-expandable rows.
149
+ const expandable = getIsItemExpandable ? getIsItemExpandable(item) : true;
408
150
  if (!expandable) {
409
151
  return props;
410
152
  }
@@ -416,35 +158,42 @@ export function useTableRowExpansion(config) {
416
158
  id: 'row-expansion-toggle',
417
159
  group: 'row-expansion',
418
160
  label: isExpanded ? t('@astryx.tableRowExpansion.collapseRow') : t('@astryx.tableRowExpansion.expandRow'),
419
- icon: /*#__PURE__*/_jsx("span", {
420
- ...stylex.props(rtlStyles.mirror),
421
- children: /*#__PURE__*/_jsx(Icon, {
422
- icon: isExpanded ? 'chevronDown' : 'chevronRight',
423
- size: "xsm",
424
- "aria-hidden": true
425
- })
161
+ icon: /*#__PURE__*/_jsx(Icon, {
162
+ icon: isExpanded ? 'chevronDown' : 'chevronRight',
163
+ size: "xsm",
164
+ "aria-hidden": true
426
165
  }),
427
166
  onSelect: () => onToggle(key)
428
167
  }]
429
168
  };
430
169
  },
431
170
  transformBodyRow(props, item) {
432
- if (!hasRowClickExpansion) {
433
- return props;
434
- }
435
- const expandable = getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0;
171
+ const expandable = getIsItemExpandable ? getIsItemExpandable(item) : true;
436
172
  if (!expandable) {
437
173
  return props;
438
174
  }
439
175
  const key = getRowKey(item);
176
+ if (!expandedKeys.has(key)) {
177
+ return props;
178
+ }
179
+ const panel = /*#__PURE__*/_jsx("tr", {
180
+ ...{
181
+ className: "xwmxj5m"
182
+ },
183
+ children: /*#__PURE__*/_jsx("td", {
184
+ colSpan: columnCountRef.current,
185
+ ...{
186
+ className: "x1na6nto xzz68wx"
187
+ },
188
+ children: renderExpanded(item)
189
+ })
190
+ }, `${key}-expanded`);
440
191
  return {
441
192
  ...props,
442
- htmlProps: {
443
- ...props.htmlProps,
444
- onClick: () => onToggle(key)
445
- },
446
- xstyle: [...props.xstyle, expansionStyles.clickableRow]
193
+ afterRow: props.afterRow ? /*#__PURE__*/_jsxs(_Fragment, {
194
+ children: [props.afterRow, panel]
195
+ }) : panel
447
196
  };
448
197
  }
449
- }), [expandedKeys, getRowKey, onToggle, getChildren, getDepth, getIsItemExpandable, hasRowClickExpansion, isAllExpanded, onToggleExpandAll, expansionColumn, t]);
198
+ }), [expandedKeys, getRowKey, renderExpanded, getIsItemExpandable, onToggle, t, expansionColumn]);
450
199
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useTableSortable.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/sortable/useTableSortable.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,WAAW,EAIZ,MAAM,aAAa,CAAC;AAMrB;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,YAAY,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM;IAC9D,2EAA2E;IAC3E,OAAO,EAAE,QAAQ,CAAC;IAClB,0BAA0B;IAC1B,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,cAAc,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,IACzD,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;AAM7B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,sBAAsB,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM;IACtE,iEAAiE;IACjE,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE/B;;;OAGG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;IAEvD;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAmOD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,QAAQ,SAAS,MAAM,GAAG,MAAM,EAChC,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CA2F1D"}
1
+ {"version":3,"file":"useTableSortable.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/sortable/useTableSortable.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EACV,WAAW,EAIZ,MAAM,aAAa,CAAC;AAMrB;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,YAAY,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM;IAC9D,2EAA2E;IAC3E,OAAO,EAAE,QAAQ,CAAC;IAClB,0BAA0B;IAC1B,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,cAAc,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,IACzD,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;AAM7B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,sBAAsB,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM;IACtE,iEAAiE;IACjE,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE/B;;;OAGG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;IAEvD;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AA8ND;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,QAAQ,SAAS,MAAM,GAAG,MAAM,EAChC,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CA2F1D"}
@@ -16,6 +16,7 @@ import { useRef, useMemo } from 'react';
16
16
  import * as stylex from '@stylexjs/stylex';
17
17
  import "../../../theme/tokens.stylex.js";
18
18
  import { colorVars, spacingVars, radiusVars } from "../../../theme/tokens.stylex.js";
19
+ import { focusOutlineProps } from "../../../utils/focusOutline.stylex.js";
19
20
  import { Icon } from "../../../Icon/index.js";
20
21
  import { resolveContextActions } from "../../tableContextMenu.js";
21
22
  import { useTranslator } from "../../../i18n/index.js";
@@ -67,9 +68,29 @@ import { useTranslator } from "../../../i18n/index.js";
67
68
  * <Table plugins={{ sort: sortPlugin }} columns={columns} data={data} />
68
69
  * ```
69
70
  */
70
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; // =============================================================================
71
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
72
+ // =============================================================================
71
73
  // Styles
72
74
  // =============================================================================
75
+
76
+ const sortStyles = {
77
+ button: {
78
+ k1xSpc: "x78zum5",
79
+ kGNEyG: "x6s0dn4",
80
+ kOIVth: "xzye2dw",
81
+ kmVPX3: "x1717udv",
82
+ kogj98: "x1ghz6dp",
83
+ kkrTdU: "x1ypdohk",
84
+ kVVagm: "xln7xf2",
85
+ kMwMTN: "x1heor9g",
86
+ kzqmXN: "xh8yej3",
87
+ kZKoxP: "x5yr21d",
88
+ k9WMMc: "x16tdsg8",
89
+ kaIpWk: "xx3sua9",
90
+ $$css: true
91
+ }
92
+ };
93
+
73
94
  // =============================================================================
74
95
  // Helpers
75
96
  // =============================================================================
@@ -191,9 +212,7 @@ function SortHeaderButton({
191
212
  };
192
213
  return /*#__PURE__*/_jsxs("button", {
193
214
  type: "button",
194
- ...{
195
- className: "x78zum5 x6s0dn4 xzye2dw x1717udv x1ghz6dp x1ypdohk xln7xf2 x1heor9g xh8yej3 x5yr21d x16tdsg8 x1a2a7pz x17nn4n9 x1hl8ikr xx3sua9"
196
- },
215
+ ...focusOutlineProps.focusVisible(sortStyles.button),
197
216
  "aria-label": ariaLabel,
198
217
  onClick: handleClick,
199
218
  children: [/*#__PURE__*/_jsx("span", {
@@ -1 +1 @@
1
- {"version":3,"file":"useTableTreeData.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/tree/useTableTreeData.tsx"],"names":[],"mappings":"AA6CA,OAAO,KAAK,EACV,WAAW,EAIZ,MAAM,aAAa,CAAC;AAOrB,8DAA8D;AAC9D,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,6CAA6C;IAC7C,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACvE,qEAAqE;IACrE,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,gBAAgB,GAAG,SAAS,CAAC;IACtD,gCAAgC;IAChC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAChC;;;;OAIG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC;IAC1C,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC5B,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;OASG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAmUD,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAChC,WAAW,CAAC,CAAC,CAAC,CA0OhB"}
1
+ {"version":3,"file":"useTableTreeData.d.ts","sourceRoot":"","sources":["../../../../src/Table/plugins/tree/useTableTreeData.tsx"],"names":[],"mappings":"AA6CA,OAAO,KAAK,EACV,WAAW,EAIZ,MAAM,aAAa,CAAC;AAOrB,8DAA8D;AAC9D,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,6CAA6C;IAC7C,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACvE,qEAAqE;IACrE,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,gBAAgB,GAAG,SAAS,CAAC;IACtD,gCAAgC;IAChC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAChC;;;;OAIG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC;IAC1C,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC5B,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;OASG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAsVD,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAChC,WAAW,CAAC,CAAC,CAAC,CA0OhB"}