@astryxdesign/core 0.2.0-canary.ea693ac → 0.2.0-canary.ebed74f

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 (951) hide show
  1. package/README.md +5 -3
  2. package/dist/AlertDialog/AlertDialog.d.ts +1 -1
  3. package/dist/AlertDialog/AlertDialog.js +1 -1
  4. package/dist/AppShell/AppShell.d.ts +2 -20
  5. package/dist/AppShell/AppShell.d.ts.map +1 -1
  6. package/dist/AppShell/AppShell.js +1 -14
  7. package/dist/AppShell/index.d.ts +20 -1
  8. package/dist/AppShell/index.d.ts.map +1 -1
  9. package/dist/AppShell/index.js +14 -0
  10. package/dist/AspectRatio/AspectRatio.d.ts +1 -1
  11. package/dist/AspectRatio/AspectRatio.js +1 -1
  12. package/dist/Avatar/Avatar.d.ts +1 -1
  13. package/dist/Avatar/Avatar.d.ts.map +1 -1
  14. package/dist/Avatar/Avatar.js +4 -4
  15. package/dist/Avatar/AvatarStatusDot.d.ts +2 -26
  16. package/dist/Avatar/AvatarStatusDot.d.ts.map +1 -1
  17. package/dist/Avatar/AvatarStatusDot.js +1 -22
  18. package/dist/Avatar/index.d.ts +26 -1
  19. package/dist/Avatar/index.d.ts.map +1 -1
  20. package/dist/Avatar/index.js +21 -0
  21. package/dist/AvatarGroup/AvatarGroup.d.ts +1 -1
  22. package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
  23. package/dist/AvatarGroup/AvatarGroup.js +4 -8
  24. package/dist/AvatarGroup/AvatarGroupOverflow.d.ts +1 -1
  25. package/dist/AvatarGroup/AvatarGroupOverflow.js +1 -1
  26. package/dist/Badge/Badge.d.ts +2 -30
  27. package/dist/Badge/Badge.d.ts.map +1 -1
  28. package/dist/Badge/Badge.js +2 -17
  29. package/dist/Badge/index.d.ts +31 -2
  30. package/dist/Badge/index.d.ts.map +1 -1
  31. package/dist/Badge/index.js +15 -1
  32. package/dist/Banner/Banner.d.ts +2 -37
  33. package/dist/Banner/Banner.d.ts.map +1 -1
  34. package/dist/Banner/Banner.js +6 -34
  35. package/dist/Banner/index.d.ts +37 -1
  36. package/dist/Banner/index.d.ts.map +1 -1
  37. package/dist/Banner/index.js +27 -0
  38. package/dist/Blockquote/Blockquote.d.ts +1 -1
  39. package/dist/Blockquote/Blockquote.js +1 -1
  40. package/dist/Breadcrumbs/BreadcrumbItem.d.ts +1 -1
  41. package/dist/Breadcrumbs/BreadcrumbItem.js +4 -3
  42. package/dist/Breadcrumbs/Breadcrumbs.d.ts +2 -18
  43. package/dist/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  44. package/dist/Breadcrumbs/Breadcrumbs.js +1 -15
  45. package/dist/Breadcrumbs/index.d.ts +18 -1
  46. package/dist/Breadcrumbs/index.d.ts.map +1 -1
  47. package/dist/Breadcrumbs/index.js +14 -0
  48. package/dist/Button/Button.d.ts +2 -20
  49. package/dist/Button/Button.d.ts.map +1 -1
  50. package/dist/Button/Button.js +2 -17
  51. package/dist/Button/index.d.ts +21 -3
  52. package/dist/Button/index.d.ts.map +1 -1
  53. package/dist/Button/index.js +15 -1
  54. package/dist/ButtonGroup/ButtonGroup.d.ts +1 -1
  55. package/dist/ButtonGroup/ButtonGroup.js +1 -1
  56. package/dist/Calendar/Calendar.js +1 -1
  57. package/dist/Calendar/styles.d.ts +2 -2
  58. package/dist/Calendar/styles.js +2 -2
  59. package/dist/Card/Card.d.ts +1 -1
  60. package/dist/Card/Card.js +1 -1
  61. package/dist/Carousel/Carousel.d.ts +54 -3
  62. package/dist/Carousel/Carousel.d.ts.map +1 -1
  63. package/dist/Carousel/Carousel.js +82 -15
  64. package/dist/Carousel/index.d.ts +1 -1
  65. package/dist/Carousel/index.d.ts.map +1 -1
  66. package/dist/Center/Center.d.ts +21 -4
  67. package/dist/Center/Center.d.ts.map +1 -1
  68. package/dist/Center/Center.js +11 -3
  69. package/dist/Chat/ChatComposer.d.ts +1 -1
  70. package/dist/Chat/ChatComposer.js +9 -9
  71. package/dist/Chat/ChatComposerDrawer.d.ts +1 -1
  72. package/dist/Chat/ChatComposerDrawer.js +3 -3
  73. package/dist/Chat/ChatComposerInput.d.ts +1 -1
  74. package/dist/Chat/ChatComposerInput.js +1 -1
  75. package/dist/Chat/ChatDictationButton.d.ts +1 -1
  76. package/dist/Chat/ChatDictationButton.js +1 -1
  77. package/dist/Chat/ChatLayout.d.ts +8 -1
  78. package/dist/Chat/ChatLayout.d.ts.map +1 -1
  79. package/dist/Chat/ChatLayout.js +15 -4
  80. package/dist/Chat/ChatLayoutScrollButton.d.ts +1 -1
  81. package/dist/Chat/ChatLayoutScrollButton.js +1 -1
  82. package/dist/Chat/ChatMessage.d.ts +1 -1
  83. package/dist/Chat/ChatMessage.js +1 -1
  84. package/dist/Chat/ChatMessageBubble.d.ts +1 -1
  85. package/dist/Chat/ChatMessageBubble.js +1 -1
  86. package/dist/Chat/ChatMessageList.d.ts +1 -1
  87. package/dist/Chat/ChatMessageList.js +1 -1
  88. package/dist/Chat/ChatSendButton.d.ts.map +1 -1
  89. package/dist/Chat/ChatSendButton.js +4 -2
  90. package/dist/Chat/ChatSystemMessage.d.ts +1 -1
  91. package/dist/Chat/ChatSystemMessage.js +1 -1
  92. package/dist/Chat/ChatTokenizedText.d.ts +1 -1
  93. package/dist/Chat/ChatTokenizedText.js +1 -1
  94. package/dist/CheckboxInput/CheckboxInput.d.ts +1 -1
  95. package/dist/CheckboxInput/CheckboxInput.js +1 -1
  96. package/dist/CheckboxList/CheckboxList.d.ts +1 -1
  97. package/dist/CheckboxList/CheckboxList.js +1 -1
  98. package/dist/CheckboxList/CheckboxListItem.d.ts +1 -1
  99. package/dist/CheckboxList/CheckboxListItem.js +1 -1
  100. package/dist/Citation/Citation.d.ts +1 -1
  101. package/dist/Citation/Citation.js +1 -1
  102. package/dist/ClickableCard/ClickableCard.d.ts +3 -3
  103. package/dist/ClickableCard/ClickableCard.js +3 -3
  104. package/dist/Code/Code.d.ts +2 -2
  105. package/dist/Code/Code.js +2 -2
  106. package/dist/Collapsible/Collapsible.d.ts +1 -1
  107. package/dist/Collapsible/Collapsible.js +3 -3
  108. package/dist/Collapsible/CollapsibleGroup.d.ts +1 -1
  109. package/dist/Collapsible/CollapsibleGroup.js +1 -1
  110. package/dist/Collapsible/CollapsibleGroupContext.js +1 -1
  111. package/dist/CommandPalette/CommandPalette.d.ts +1 -1
  112. package/dist/CommandPalette/CommandPalette.js +1 -1
  113. package/dist/CommandPalette/CommandPaletteEmpty.js +1 -1
  114. package/dist/CommandPalette/CommandPaletteFooter.js +1 -1
  115. package/dist/CommandPalette/CommandPaletteGroup.js +1 -1
  116. package/dist/CommandPalette/CommandPaletteInput.d.ts +2 -2
  117. package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
  118. package/dist/CommandPalette/CommandPaletteInput.js +4 -2
  119. package/dist/CommandPalette/CommandPaletteItem.d.ts +1 -1
  120. package/dist/CommandPalette/CommandPaletteItem.js +1 -1
  121. package/dist/CommandPalette/CommandPaletteList.js +1 -1
  122. package/dist/ContextMenu/ContextMenu.d.ts +2 -2
  123. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  124. package/dist/ContextMenu/ContextMenu.js +14 -5
  125. package/dist/DateInput/DateInput.js +1 -1
  126. package/dist/DateRangeInput/DateRangeInput.js +1 -1
  127. package/dist/DateTimeInput/DateTimeInput.js +1 -1
  128. package/dist/Dialog/Dialog.d.ts +46 -23
  129. package/dist/Dialog/Dialog.d.ts.map +1 -1
  130. package/dist/Dialog/Dialog.js +59 -31
  131. package/dist/Dialog/DialogHeader.d.ts +1 -1
  132. package/dist/Dialog/DialogHeader.js +1 -1
  133. package/dist/Dialog/index.d.ts +18 -1
  134. package/dist/Dialog/index.d.ts.map +1 -1
  135. package/dist/Dialog/index.js +14 -0
  136. package/dist/Divider/Divider.d.ts +2 -18
  137. package/dist/Divider/Divider.d.ts.map +1 -1
  138. package/dist/Divider/Divider.js +1 -15
  139. package/dist/Divider/index.d.ts +18 -1
  140. package/dist/Divider/index.d.ts.map +1 -1
  141. package/dist/Divider/index.js +14 -0
  142. package/dist/DropdownMenu/DropdownMenu.d.ts +9 -3
  143. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  144. package/dist/DropdownMenu/DropdownMenu.js +23 -19
  145. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +18 -12
  146. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
  147. package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +38 -63
  148. package/dist/DropdownMenu/DropdownMenuItem.d.ts +1 -1
  149. package/dist/DropdownMenu/DropdownMenuItem.js +1 -1
  150. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
  151. package/dist/DropdownMenu/DropdownMenuRadioItem.js +5 -1
  152. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +1 -1
  153. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
  154. package/dist/DropdownMenu/DropdownMenuSubMenu.js +14 -6
  155. package/dist/DropdownMenu/menuItemHover.d.ts +1 -0
  156. package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -1
  157. package/dist/DropdownMenu/menuItemHover.js +1 -0
  158. package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
  159. package/dist/DropdownMenu/renderDropdownItems.js +6 -4
  160. package/dist/EmptyState/EmptyState.d.ts +1 -1
  161. package/dist/EmptyState/EmptyState.js +1 -1
  162. package/dist/Field/Field.d.ts +1 -1
  163. package/dist/Field/Field.js +1 -1
  164. package/dist/Field/FieldLabel.d.ts +2 -2
  165. package/dist/Field/FieldLabel.d.ts.map +1 -1
  166. package/dist/Field/FieldLabel.js +41 -2
  167. package/dist/FieldStatus/FieldStatus.d.ts +1 -18
  168. package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
  169. package/dist/FieldStatus/FieldStatus.js +13 -17
  170. package/dist/FieldStatus/index.d.ts +19 -1
  171. package/dist/FieldStatus/index.d.ts.map +1 -1
  172. package/dist/FieldStatus/index.js +14 -0
  173. package/dist/FileInput/FileInput.js +1 -1
  174. package/dist/FormLayout/FormLayout.d.ts +1 -1
  175. package/dist/FormLayout/FormLayout.d.ts.map +1 -1
  176. package/dist/FormLayout/FormLayout.js +1 -1
  177. package/dist/Grid/Grid.d.ts +1 -1
  178. package/dist/Grid/Grid.js +1 -1
  179. package/dist/Grid/GridSpan.d.ts +1 -1
  180. package/dist/Grid/GridSpan.js +1 -1
  181. package/dist/HStack/HStack.d.ts +1 -1
  182. package/dist/HStack/HStack.js +1 -1
  183. package/dist/Heading/Heading.d.ts +2 -2
  184. package/dist/Heading/Heading.d.ts.map +1 -1
  185. package/dist/Heading/Heading.js +5 -4
  186. package/dist/HoverCard/HoverCard.d.ts +1 -1
  187. package/dist/HoverCard/HoverCard.js +1 -1
  188. package/dist/Icon/Icon.d.ts +1 -1
  189. package/dist/Icon/Icon.d.ts.map +1 -1
  190. package/dist/Icon/Icon.js +4 -2
  191. package/dist/Icon/globalIconRegistry.d.ts +47 -5
  192. package/dist/Icon/globalIconRegistry.d.ts.map +1 -1
  193. package/dist/Icon/globalIconRegistry.js +74 -7
  194. package/dist/Icon/index.d.ts +4 -3
  195. package/dist/Icon/index.d.ts.map +1 -1
  196. package/dist/Icon/index.js +2 -1
  197. package/dist/Icon/useIcon.d.ts +14 -0
  198. package/dist/Icon/useIcon.d.ts.map +1 -0
  199. package/dist/Icon/useIcon.js +21 -0
  200. package/dist/IconButton/IconButton.d.ts +1 -1
  201. package/dist/IconButton/IconButton.js +1 -1
  202. package/dist/InputGroup/InputGroup.d.ts +1 -1
  203. package/dist/InputGroup/InputGroup.js +1 -1
  204. package/dist/InputGroup/InputGroupText.d.ts +1 -1
  205. package/dist/InputGroup/InputGroupText.js +1 -1
  206. package/dist/Item/Item.d.ts +1 -1
  207. package/dist/Item/Item.js +1 -1
  208. package/dist/Kbd/Kbd.d.ts +1 -1
  209. package/dist/Kbd/Kbd.js +1 -1
  210. package/dist/Layout/Layout.d.ts +1 -1
  211. package/dist/Layout/Layout.js +1 -1
  212. package/dist/Layout/LayoutContent.d.ts +1 -1
  213. package/dist/Layout/LayoutContent.js +1 -1
  214. package/dist/Layout/LayoutFooter.d.ts +1 -1
  215. package/dist/Layout/LayoutFooter.js +1 -1
  216. package/dist/Layout/LayoutHeader.d.ts +1 -1
  217. package/dist/Layout/LayoutHeader.js +1 -1
  218. package/dist/Layout/LayoutPanel.d.ts +1 -1
  219. package/dist/Layout/LayoutPanel.js +1 -1
  220. package/dist/Lightbox/Lightbox.d.ts +1 -1
  221. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  222. package/dist/Lightbox/Lightbox.js +16 -3
  223. package/dist/Link/Link.d.ts +1 -1
  224. package/dist/Link/Link.js +1 -1
  225. package/dist/Link/LinkProvider.d.ts +2 -2
  226. package/dist/Link/LinkProvider.js +2 -2
  227. package/dist/List/List.d.ts +1 -1
  228. package/dist/List/List.js +1 -1
  229. package/dist/List/ListItem.d.ts +1 -1
  230. package/dist/List/ListItem.js +1 -1
  231. package/dist/Markdown/Markdown.d.ts.map +1 -1
  232. package/dist/Markdown/Markdown.js +35 -13
  233. package/dist/MetadataList/MetadataList.d.ts +1 -1
  234. package/dist/MetadataList/MetadataList.js +1 -1
  235. package/dist/MetadataList/MetadataListItem.d.ts +1 -1
  236. package/dist/MetadataList/MetadataListItem.js +1 -1
  237. package/dist/MobileNav/MobileNav.d.ts +1 -1
  238. package/dist/MobileNav/MobileNav.js +1 -1
  239. package/dist/MoreMenu/MoreMenu.d.ts +1 -1
  240. package/dist/MoreMenu/MoreMenu.js +3 -3
  241. package/dist/MultiSelector/MultiSelector.d.ts +13 -4
  242. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  243. package/dist/MultiSelector/MultiSelector.js +105 -22
  244. package/dist/NavIcon/NavIcon.d.ts +1 -1
  245. package/dist/NavIcon/NavIcon.js +1 -1
  246. package/dist/NumberInput/NumberInput.d.ts +1 -1
  247. package/dist/NumberInput/NumberInput.js +1 -1
  248. package/dist/Outline/Outline.js +1 -1
  249. package/dist/OverflowList/OverflowList.d.ts +1 -1
  250. package/dist/OverflowList/OverflowList.js +1 -1
  251. package/dist/Pagination/Pagination.d.ts +1 -20
  252. package/dist/Pagination/Pagination.d.ts.map +1 -1
  253. package/dist/Pagination/Pagination.js +1 -15
  254. package/dist/Pagination/index.d.ts +21 -1
  255. package/dist/Pagination/index.d.ts.map +1 -1
  256. package/dist/Pagination/index.js +14 -0
  257. package/dist/Popover/Popover.d.ts +20 -3
  258. package/dist/Popover/Popover.d.ts.map +1 -1
  259. package/dist/Popover/Popover.js +5 -1
  260. package/dist/Popover/usePopover.d.ts.map +1 -1
  261. package/dist/Popover/usePopover.js +14 -3
  262. package/dist/PowerSearch/PowerSearch.d.ts +1 -1
  263. package/dist/PowerSearch/PowerSearch.js +1 -1
  264. package/dist/ProgressBar/ProgressBar.d.ts +1 -20
  265. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  266. package/dist/ProgressBar/ProgressBar.js +1 -15
  267. package/dist/ProgressBar/index.d.ts +21 -1
  268. package/dist/ProgressBar/index.d.ts.map +1 -1
  269. package/dist/ProgressBar/index.js +14 -0
  270. package/dist/RadioList/RadioList.d.ts +1 -1
  271. package/dist/RadioList/RadioList.js +1 -1
  272. package/dist/RadioList/RadioListItem.d.ts +1 -1
  273. package/dist/RadioList/RadioListItem.js +1 -1
  274. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  275. package/dist/Resizable/ResizeHandle.js +3 -10
  276. package/dist/Section/Section.d.ts +2 -19
  277. package/dist/Section/Section.d.ts.map +1 -1
  278. package/dist/Section/Section.js +1 -15
  279. package/dist/Section/index.d.ts +19 -1
  280. package/dist/Section/index.d.ts.map +1 -1
  281. package/dist/Section/index.js +14 -0
  282. package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
  283. package/dist/SegmentedControl/SegmentedControl.js +1 -1
  284. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  285. package/dist/SegmentedControl/SegmentedControlItem.js +1 -1
  286. package/dist/SelectableCard/SelectableCard.d.ts +4 -3
  287. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  288. package/dist/SelectableCard/SelectableCard.js +15 -3
  289. package/dist/Selector/Selector.d.ts +12 -3
  290. package/dist/Selector/Selector.d.ts.map +1 -1
  291. package/dist/Selector/Selector.js +104 -21
  292. package/dist/SideNav/SideNav.d.ts +1 -1
  293. package/dist/SideNav/SideNav.js +1 -1
  294. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  295. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  296. package/dist/SideNav/SideNavCollapseButton.js +4 -3
  297. package/dist/SideNav/SideNavHeading.d.ts +1 -1
  298. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  299. package/dist/SideNav/SideNavHeading.js +8 -7
  300. package/dist/SideNav/SideNavItem.d.ts +2 -2
  301. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  302. package/dist/SideNav/SideNavItem.js +6 -7
  303. package/dist/SideNav/SideNavSection.d.ts +1 -1
  304. package/dist/SideNav/SideNavSection.js +1 -1
  305. package/dist/Skeleton/Skeleton.d.ts +1 -1
  306. package/dist/Skeleton/Skeleton.js +1 -1
  307. package/dist/Slider/Slider.d.ts.map +1 -1
  308. package/dist/Slider/Slider.js +78 -68
  309. package/dist/Spinner/Spinner.d.ts +1 -1
  310. package/dist/Spinner/Spinner.js +1 -1
  311. package/dist/Stack/Stack.d.ts +1 -1
  312. package/dist/Stack/Stack.js +1 -1
  313. package/dist/Stack/StackItem.d.ts +1 -1
  314. package/dist/Stack/StackItem.js +1 -1
  315. package/dist/StatusDot/StatusDot.d.ts +1 -20
  316. package/dist/StatusDot/StatusDot.d.ts.map +1 -1
  317. package/dist/StatusDot/StatusDot.js +2 -17
  318. package/dist/StatusDot/index.d.ts +21 -1
  319. package/dist/StatusDot/index.d.ts.map +1 -1
  320. package/dist/StatusDot/index.js +14 -0
  321. package/dist/Switch/Switch.d.ts +1 -1
  322. package/dist/Switch/Switch.js +1 -1
  323. package/dist/TabList/Tab.d.ts +1 -1
  324. package/dist/TabList/Tab.js +1 -1
  325. package/dist/TabList/TabList.d.ts +1 -1
  326. package/dist/TabList/TabList.js +1 -1
  327. package/dist/TabList/TabMenu.d.ts +1 -1
  328. package/dist/TabList/TabMenu.js +1 -1
  329. package/dist/Table/BaseTable.d.ts +1 -1
  330. package/dist/Table/BaseTable.js +1 -1
  331. package/dist/Table/Table.d.ts +1 -1
  332. package/dist/Table/Table.js +1 -1
  333. package/dist/Table/TableCell.d.ts +1 -1
  334. package/dist/Table/TableCell.js +1 -1
  335. package/dist/Table/TableHeaderCell.d.ts +1 -1
  336. package/dist/Table/TableHeaderCell.js +1 -1
  337. package/dist/Table/TableRow.d.ts +1 -1
  338. package/dist/Table/TableRow.js +1 -1
  339. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +18 -3
  340. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  341. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +21 -3
  342. package/dist/Table/plugins/tree/useTableTreeData.d.ts +11 -0
  343. package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
  344. package/dist/Table/plugins/tree/useTableTreeData.js +36 -2
  345. package/dist/Text/Text.d.ts +11 -2
  346. package/dist/Text/Text.d.ts.map +1 -1
  347. package/dist/Text/Text.js +26 -3
  348. package/dist/Text/index.d.ts +31 -1
  349. package/dist/Text/index.d.ts.map +1 -1
  350. package/dist/Text/index.js +23 -0
  351. package/dist/TextArea/TextArea.d.ts +1 -1
  352. package/dist/TextArea/TextArea.d.ts.map +1 -1
  353. package/dist/TextArea/TextArea.js +107 -39
  354. package/dist/TextInput/TextInput.d.ts +1 -1
  355. package/dist/TextInput/TextInput.js +1 -1
  356. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  357. package/dist/Thumbnail/Thumbnail.js +52 -46
  358. package/dist/TimeInput/TimeInput.js +1 -1
  359. package/dist/Timestamp/Timestamp.d.ts +4 -1
  360. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  361. package/dist/Timestamp/Timestamp.js +78 -7
  362. package/dist/Timestamp/formatInstant.d.ts +3 -3
  363. package/dist/Timestamp/formatInstant.d.ts.map +1 -1
  364. package/dist/Timestamp/formatInstant.js +2 -2
  365. package/dist/Timestamp/tooltipEntries.d.ts +3 -2
  366. package/dist/Timestamp/tooltipEntries.d.ts.map +1 -1
  367. package/dist/Timestamp/tooltipEntries.js +3 -2
  368. package/dist/ToggleButton/ToggleButton.d.ts +1 -1
  369. package/dist/ToggleButton/ToggleButton.js +1 -1
  370. package/dist/ToggleButton/ToggleButtonGroup.d.ts +1 -1
  371. package/dist/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
  372. package/dist/ToggleButton/ToggleButtonGroup.js +1 -1
  373. package/dist/Token/Token.d.ts +2 -27
  374. package/dist/Token/Token.d.ts.map +1 -1
  375. package/dist/Token/Token.js +1 -15
  376. package/dist/Token/index.d.ts +27 -1
  377. package/dist/Token/index.d.ts.map +1 -1
  378. package/dist/Token/index.js +14 -0
  379. package/dist/Tokenizer/Tokenizer.d.ts +1 -1
  380. package/dist/Tokenizer/Tokenizer.js +1 -1
  381. package/dist/Toolbar/Toolbar.d.ts +1 -1
  382. package/dist/Toolbar/Toolbar.js +1 -1
  383. package/dist/Tooltip/Tooltip.d.ts +1 -1
  384. package/dist/Tooltip/Tooltip.js +1 -1
  385. package/dist/TopNav/TopNav.d.ts +1 -1
  386. package/dist/TopNav/TopNav.js +1 -1
  387. package/dist/TopNav/TopNavHeading.d.ts +1 -1
  388. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  389. package/dist/TopNav/TopNavHeading.js +7 -6
  390. package/dist/TopNav/TopNavItem.d.ts +1 -1
  391. package/dist/TopNav/TopNavItem.js +1 -1
  392. package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
  393. package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
  394. package/dist/TopNav/TopNavMegaMenu.js +15 -7
  395. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
  396. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +1 -1
  397. package/dist/TopNav/TopNavMegaMenuItem.d.ts +1 -1
  398. package/dist/TopNav/TopNavMegaMenuItem.js +1 -1
  399. package/dist/TopNav/TopNavMenu.d.ts +1 -1
  400. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  401. package/dist/TopNav/TopNavMenu.js +5 -4
  402. package/dist/TreeList/TreeList.d.ts +1 -1
  403. package/dist/TreeList/TreeList.js +1 -1
  404. package/dist/TreeList/TreeListBranches.js +1 -1
  405. package/dist/TreeList/TreeListItem.d.ts +1 -1
  406. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  407. package/dist/TreeList/TreeListItem.js +4 -3
  408. package/dist/TreeList/TreeListTypes.d.ts +1 -17
  409. package/dist/TreeList/TreeListTypes.d.ts.map +1 -1
  410. package/dist/TreeList/index.d.ts +18 -1
  411. package/dist/TreeList/index.d.ts.map +1 -1
  412. package/dist/TreeList/index.js +14 -0
  413. package/dist/Typeahead/BaseTypeahead.d.ts +1 -1
  414. package/dist/Typeahead/BaseTypeahead.js +1 -1
  415. package/dist/Typeahead/Typeahead.d.ts +1 -1
  416. package/dist/Typeahead/Typeahead.js +1 -1
  417. package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
  418. package/dist/Typeahead/TypeaheadItem.js +1 -1
  419. package/dist/VStack/VStack.d.ts +1 -1
  420. package/dist/VStack/VStack.js +1 -1
  421. package/dist/VisuallyHidden/VisuallyHidden.d.ts +1 -1
  422. package/dist/VisuallyHidden/VisuallyHidden.js +1 -1
  423. package/dist/astryx.css +83 -22
  424. package/dist/astryx.umd.js +50 -50
  425. package/dist/astryx.umd.js.map +4 -4
  426. package/dist/hooks/containerReveal.pool.stylex.d.ts +303 -0
  427. package/dist/hooks/containerReveal.pool.stylex.d.ts.map +1 -0
  428. package/dist/hooks/containerReveal.pool.stylex.js +292 -0
  429. package/dist/hooks/index.d.ts +2 -0
  430. package/dist/hooks/index.d.ts.map +1 -1
  431. package/dist/hooks/index.js +2 -1
  432. package/dist/hooks/useContainerReveal.d.ts +83 -0
  433. package/dist/hooks/useContainerReveal.d.ts.map +1 -0
  434. package/dist/hooks/useContainerReveal.js +123 -0
  435. package/dist/hooks/useGridFocus.d.ts +8 -6
  436. package/dist/hooks/useGridFocus.d.ts.map +1 -1
  437. package/dist/hooks/useInputContainer.d.ts.map +1 -1
  438. package/dist/hooks/useInputContainer.js +29 -1
  439. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  440. package/dist/hooks/useInputStatusIcon.js +11 -0
  441. package/dist/hooks/useKeyboardHint.d.ts +1 -1
  442. package/dist/hooks/useKeyboardHint.js +1 -1
  443. package/dist/hooks/useListFocus.d.ts +8 -7
  444. package/dist/hooks/useListFocus.d.ts.map +1 -1
  445. package/dist/hooks/useTreeFocus.d.ts.map +1 -1
  446. package/dist/hooks/useTreeFocus.js +13 -2
  447. package/dist/index.d.ts +2 -1
  448. package/dist/index.d.ts.map +1 -1
  449. package/dist/index.js +5 -1
  450. package/dist/theme/Theme.d.ts.map +1 -1
  451. package/dist/theme/Theme.js +2 -7
  452. package/dist/theme/defineTheme.d.ts +6 -0
  453. package/dist/theme/defineTheme.d.ts.map +1 -1
  454. package/dist/theme/defineTheme.js +4 -1
  455. package/dist/theme/expandColorScale.d.ts +19 -2
  456. package/dist/theme/expandColorScale.d.ts.map +1 -1
  457. package/dist/theme/expandColorScale.js +38 -10
  458. package/dist/theme/index.d.ts +6 -4
  459. package/dist/theme/index.d.ts.map +1 -1
  460. package/dist/theme/index.js +2 -1
  461. package/dist/theme/themeRegistry.d.ts +32 -0
  462. package/dist/theme/themeRegistry.d.ts.map +1 -0
  463. package/dist/theme/themeRegistry.js +49 -0
  464. package/dist/theme/types.d.ts +10 -2
  465. package/dist/theme/types.d.ts.map +1 -1
  466. package/dist/theme/useTheme.d.ts +9 -0
  467. package/dist/theme/useTheme.d.ts.map +1 -1
  468. package/dist/theme/useTheme.js +82 -27
  469. package/dist/utils/rtlStyles.d.ts +21 -0
  470. package/dist/utils/rtlStyles.d.ts.map +1 -1
  471. package/dist/utils/rtlStyles.js +26 -1
  472. package/groups.doc.mjs +2 -2
  473. package/locales/en.json +8 -0
  474. package/locales/pseudo.json +6 -0
  475. package/package.json +4 -13
  476. package/src/AlertDialog/AlertDialog.doc.mjs +3 -3
  477. package/src/AlertDialog/AlertDialog.tsx +1 -1
  478. package/src/AlertDialog/useImperativeAlertDialog.doc.mjs +1 -1
  479. package/src/AppShell/AppShell.doc.mjs +3 -3
  480. package/src/AppShell/AppShell.tsx +2 -20
  481. package/src/AppShell/index.ts +20 -1
  482. package/src/AppShell/useAppShellMobile.doc.mjs +2 -2
  483. package/src/AspectRatio/AspectRatio.doc.mjs +3 -3
  484. package/src/AspectRatio/AspectRatio.tsx +1 -1
  485. package/src/Avatar/Avatar.doc.mjs +3 -3
  486. package/src/Avatar/Avatar.tsx +8 -3
  487. package/src/Avatar/AvatarStatusDot.doc.mjs +1 -1
  488. package/src/Avatar/AvatarStatusDot.tsx +2 -27
  489. package/src/Avatar/index.ts +26 -1
  490. package/src/AvatarGroup/AvatarGroup.doc.mjs +3 -3
  491. package/src/AvatarGroup/AvatarGroup.tsx +3 -7
  492. package/src/AvatarGroup/AvatarGroupOverflow.doc.mjs +1 -1
  493. package/src/AvatarGroup/AvatarGroupOverflow.tsx +1 -1
  494. package/src/Badge/Badge.doc.mjs +3 -3
  495. package/src/Badge/Badge.tsx +2 -31
  496. package/src/Badge/index.ts +32 -6
  497. package/src/Banner/Banner.doc.mjs +3 -3
  498. package/src/Banner/Banner.tsx +8 -45
  499. package/src/Banner/index.ts +39 -7
  500. package/src/Blockquote/Blockquote.doc.mjs +3 -3
  501. package/src/Blockquote/Blockquote.tsx +1 -1
  502. package/src/Breadcrumbs/BreadcrumbItem.doc.mjs +1 -1
  503. package/src/Breadcrumbs/BreadcrumbItem.tsx +5 -3
  504. package/src/Breadcrumbs/Breadcrumbs.doc.mjs +3 -3
  505. package/src/Breadcrumbs/Breadcrumbs.tsx +2 -19
  506. package/src/Breadcrumbs/index.ts +19 -5
  507. package/src/Button/Button.doc.mjs +3 -3
  508. package/src/Button/Button.tsx +2 -21
  509. package/src/Button/index.ts +22 -7
  510. package/src/ButtonGroup/ButtonGroup.doc.mjs +3 -3
  511. package/src/ButtonGroup/ButtonGroup.tsx +1 -1
  512. package/src/Calendar/Calendar.doc.mjs +3 -3
  513. package/src/Calendar/Calendar.test.tsx +15 -3
  514. package/src/Calendar/Calendar.tsx +1 -1
  515. package/src/Calendar/styles.ts +2 -2
  516. package/src/Card/Card.doc.mjs +3 -3
  517. package/src/Card/Card.tsx +1 -1
  518. package/src/Carousel/Carousel.doc.mjs +10 -3
  519. package/src/Carousel/Carousel.test.tsx +232 -1
  520. package/src/Carousel/Carousel.tsx +144 -21
  521. package/src/Carousel/index.ts +1 -1
  522. package/src/Center/Center.doc.mjs +41 -3
  523. package/src/Center/Center.test.tsx +75 -0
  524. package/src/Center/Center.tsx +38 -3
  525. package/src/Chat/Chat.doc.mjs +3 -3
  526. package/src/Chat/ChatComposer.doc.mjs +1 -1
  527. package/src/Chat/ChatComposer.tsx +5 -5
  528. package/src/Chat/ChatComposerDrawer.doc.mjs +1 -1
  529. package/src/Chat/ChatComposerDrawer.tsx +3 -3
  530. package/src/Chat/ChatComposerInput.doc.mjs +1 -1
  531. package/src/Chat/ChatComposerInput.tsx +1 -1
  532. package/src/Chat/ChatComposerTokenElement.doc.mjs +1 -1
  533. package/src/Chat/ChatDictationButton.doc.mjs +3 -3
  534. package/src/Chat/ChatDictationButton.tsx +1 -1
  535. package/src/Chat/ChatLayout.doc.mjs +1 -1
  536. package/src/Chat/ChatLayout.test.tsx +57 -0
  537. package/src/Chat/ChatLayout.tsx +23 -2
  538. package/src/Chat/ChatLayoutScrollButton.doc.mjs +1 -1
  539. package/src/Chat/ChatLayoutScrollButton.tsx +1 -1
  540. package/src/Chat/ChatMessage.doc.mjs +1 -1
  541. package/src/Chat/ChatMessage.tsx +1 -1
  542. package/src/Chat/ChatMessageBubble.doc.mjs +1 -1
  543. package/src/Chat/ChatMessageBubble.tsx +1 -1
  544. package/src/Chat/ChatMessageList.doc.mjs +1 -1
  545. package/src/Chat/ChatMessageList.tsx +1 -1
  546. package/src/Chat/ChatMessageMetadata.doc.mjs +1 -1
  547. package/src/Chat/ChatSendButton.doc.mjs +1 -1
  548. package/src/Chat/ChatSendButton.tsx +5 -3
  549. package/src/Chat/ChatSystemMessage.doc.mjs +1 -1
  550. package/src/Chat/ChatSystemMessage.tsx +1 -1
  551. package/src/Chat/ChatTokenizedText.doc.mjs +1 -1
  552. package/src/Chat/ChatTokenizedText.tsx +1 -1
  553. package/src/Chat/ChatToolCalls.doc.mjs +3 -3
  554. package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
  555. package/src/CheckboxInput/CheckboxInput.test.tsx +33 -0
  556. package/src/CheckboxInput/CheckboxInput.tsx +1 -1
  557. package/src/CheckboxList/CheckboxList.doc.mjs +3 -3
  558. package/src/CheckboxList/CheckboxList.tsx +1 -1
  559. package/src/CheckboxList/CheckboxListItem.doc.mjs +1 -1
  560. package/src/CheckboxList/CheckboxListItem.tsx +1 -1
  561. package/src/Citation/Citation.doc.mjs +2 -2
  562. package/src/Citation/Citation.tsx +1 -1
  563. package/src/ClickableCard/ClickableCard.doc.mjs +2 -2
  564. package/src/ClickableCard/ClickableCard.tsx +3 -3
  565. package/src/Code/Code.tsx +2 -2
  566. package/src/CodeBlock/Code.doc.mjs +1 -1
  567. package/src/CodeBlock/CodeBlock.doc.mjs +3 -3
  568. package/src/Collapsible/Collapsible.doc.mjs +3 -3
  569. package/src/Collapsible/Collapsible.tsx +3 -3
  570. package/src/Collapsible/CollapsibleGroup.doc.mjs +1 -1
  571. package/src/Collapsible/CollapsibleGroup.tsx +1 -1
  572. package/src/Collapsible/CollapsibleGroupContext.tsx +1 -1
  573. package/src/Collapsible/useCollapsible.doc.mjs +2 -2
  574. package/src/CommandPalette/CommandPalette.doc.mjs +4 -4
  575. package/src/CommandPalette/CommandPalette.tsx +1 -1
  576. package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +1 -1
  577. package/src/CommandPalette/CommandPaletteEmpty.tsx +1 -1
  578. package/src/CommandPalette/CommandPaletteFooter.doc.mjs +1 -1
  579. package/src/CommandPalette/CommandPaletteFooter.tsx +1 -1
  580. package/src/CommandPalette/CommandPaletteGroup.doc.mjs +1 -1
  581. package/src/CommandPalette/CommandPaletteGroup.tsx +1 -1
  582. package/src/CommandPalette/CommandPaletteInput.doc.mjs +1 -1
  583. package/src/CommandPalette/CommandPaletteInput.tsx +5 -1
  584. package/src/CommandPalette/CommandPaletteItem.doc.mjs +1 -1
  585. package/src/CommandPalette/CommandPaletteItem.tsx +1 -1
  586. package/src/CommandPalette/CommandPaletteList.doc.mjs +1 -1
  587. package/src/CommandPalette/CommandPaletteList.tsx +1 -1
  588. package/src/ContextMenu/ContextMenu.doc.mjs +3 -3
  589. package/src/ContextMenu/ContextMenu.tsx +17 -5
  590. package/src/ContextMenu/ContextMenuItem.doc.mjs +1 -1
  591. package/src/DateInput/DateInput.doc.mjs +3 -3
  592. package/src/DateInput/DateInput.tsx +1 -1
  593. package/src/DateRangeInput/DateRangeInput.doc.mjs +2 -2
  594. package/src/DateRangeInput/DateRangeInput.tsx +1 -1
  595. package/src/DateTimeInput/DateTimeInput.doc.mjs +3 -3
  596. package/src/DateTimeInput/DateTimeInput.tsx +1 -1
  597. package/src/Dialog/Dialog.doc.mjs +9 -5
  598. package/src/Dialog/Dialog.test.tsx +84 -1
  599. package/src/Dialog/Dialog.tsx +87 -45
  600. package/src/Dialog/DialogHeader.doc.mjs +1 -1
  601. package/src/Dialog/DialogHeader.tsx +1 -1
  602. package/src/Dialog/index.ts +18 -1
  603. package/src/Dialog/useImperativeDialog.doc.mjs +1 -1
  604. package/src/Divider/Divider.doc.mjs +3 -3
  605. package/src/Divider/Divider.tsx +2 -19
  606. package/src/Divider/index.ts +19 -5
  607. package/src/DropdownMenu/DropdownMenu.doc.mjs +20 -5
  608. package/src/DropdownMenu/DropdownMenu.test.tsx +122 -0
  609. package/src/DropdownMenu/DropdownMenu.tsx +31 -20
  610. package/src/DropdownMenu/DropdownMenuCheckboxItem.doc.mjs +1 -1
  611. package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +41 -64
  612. package/src/DropdownMenu/DropdownMenuItem.doc.mjs +1 -1
  613. package/src/DropdownMenu/DropdownMenuItem.tsx +1 -1
  614. package/src/DropdownMenu/DropdownMenuRadioGroup.doc.mjs +1 -1
  615. package/src/DropdownMenu/DropdownMenuRadioItem.doc.mjs +1 -1
  616. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +10 -1
  617. package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +64 -0
  618. package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +1 -1
  619. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +46 -1
  620. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +24 -8
  621. package/src/DropdownMenu/menuItemHover.ts +1 -0
  622. package/src/DropdownMenu/renderDropdownItems.tsx +14 -2
  623. package/src/EmptyState/EmptyState.doc.mjs +3 -3
  624. package/src/EmptyState/EmptyState.tsx +1 -1
  625. package/src/Field/Field.doc.mjs +7 -3
  626. package/src/Field/Field.tsx +1 -1
  627. package/src/Field/FieldLabel.doc.mjs +1 -1
  628. package/src/Field/FieldLabel.test.tsx +78 -0
  629. package/src/Field/FieldLabel.tsx +50 -3
  630. package/src/FieldStatus/FieldStatus.doc.mjs +3 -2
  631. package/src/FieldStatus/FieldStatus.test.tsx +61 -0
  632. package/src/FieldStatus/FieldStatus.tsx +16 -23
  633. package/src/FieldStatus/index.ts +20 -5
  634. package/src/FileInput/FileInput.doc.mjs +3 -3
  635. package/src/FileInput/FileInput.tsx +1 -1
  636. package/src/FormLayout/FormLayout.doc.mjs +3 -3
  637. package/src/FormLayout/FormLayout.tsx +2 -5
  638. package/src/Grid/Grid.doc.mjs +3 -3
  639. package/src/Grid/Grid.tsx +1 -1
  640. package/src/Grid/GridSpan.doc.mjs +1 -1
  641. package/src/Grid/GridSpan.tsx +1 -1
  642. package/src/HStack/HStack.tsx +1 -1
  643. package/src/Heading/Heading.tsx +4 -3
  644. package/src/HoverCard/HoverCard.doc.mjs +3 -3
  645. package/src/HoverCard/HoverCard.tsx +1 -1
  646. package/src/HoverCard/useHoverCard.doc.mjs +2 -2
  647. package/src/Icon/Icon.doc.mjs +4 -3
  648. package/src/Icon/Icon.test.tsx +23 -0
  649. package/src/Icon/Icon.tsx +4 -2
  650. package/src/Icon/globalIconRegistry.test.tsx +87 -1
  651. package/src/Icon/globalIconRegistry.tsx +109 -9
  652. package/src/Icon/index.ts +9 -7
  653. package/src/Icon/useIcon.ts +23 -0
  654. package/src/IconButton/IconButton.doc.mjs +2 -2
  655. package/src/IconButton/IconButton.tsx +1 -1
  656. package/src/InputGroup/InputGroup.doc.mjs +2 -2
  657. package/src/InputGroup/InputGroup.tsx +1 -1
  658. package/src/InputGroup/InputGroupText.doc.mjs +1 -1
  659. package/src/InputGroup/InputGroupText.tsx +1 -1
  660. package/src/Item/Item.doc.mjs +3 -3
  661. package/src/Item/Item.tsx +1 -1
  662. package/src/Kbd/Kbd.doc.mjs +3 -3
  663. package/src/Kbd/Kbd.tsx +1 -1
  664. package/src/Layer/Layer.doc.mjs +2 -2
  665. package/src/Layer/useLayer.doc.mjs +2 -2
  666. package/src/Layout/Layout.doc.mjs +3 -3
  667. package/src/Layout/Layout.tsx +1 -1
  668. package/src/Layout/LayoutContent.doc.mjs +1 -1
  669. package/src/Layout/LayoutContent.tsx +1 -1
  670. package/src/Layout/LayoutFooter.doc.mjs +1 -1
  671. package/src/Layout/LayoutFooter.tsx +1 -1
  672. package/src/Layout/LayoutHeader.doc.mjs +1 -1
  673. package/src/Layout/LayoutHeader.tsx +1 -1
  674. package/src/Layout/LayoutPanel.doc.mjs +1 -1
  675. package/src/Layout/LayoutPanel.tsx +1 -1
  676. package/src/Lightbox/Lightbox.doc.mjs +3 -3
  677. package/src/Lightbox/Lightbox.test.tsx +33 -0
  678. package/src/Lightbox/Lightbox.tsx +16 -4
  679. package/src/Link/Link.doc.mjs +3 -3
  680. package/src/Link/Link.tsx +1 -1
  681. package/src/Link/LinkProvider.doc.mjs +2 -2
  682. package/src/Link/LinkProvider.tsx +2 -2
  683. package/src/List/List.doc.mjs +3 -3
  684. package/src/List/List.tsx +1 -1
  685. package/src/List/ListItem.doc.mjs +2 -2
  686. package/src/List/ListItem.tsx +1 -1
  687. package/src/Markdown/Markdown.doc.mjs +81 -1
  688. package/src/Markdown/Markdown.test.tsx +92 -0
  689. package/src/Markdown/Markdown.tsx +96 -68
  690. package/src/Markdown/parser.perf.test.ts +47 -35
  691. package/src/MetadataList/MetadataList.doc.mjs +3 -3
  692. package/src/MetadataList/MetadataList.tsx +1 -1
  693. package/src/MetadataList/MetadataListItem.doc.mjs +1 -1
  694. package/src/MetadataList/MetadataListItem.tsx +1 -1
  695. package/src/MobileNav/MobileNav.doc.mjs +3 -3
  696. package/src/MobileNav/MobileNav.tsx +1 -1
  697. package/src/MoreMenu/MoreMenu.doc.mjs +3 -3
  698. package/src/MoreMenu/MoreMenu.tsx +3 -3
  699. package/src/MultiSelector/MultiSelector.doc.mjs +35 -10
  700. package/src/MultiSelector/MultiSelector.test.tsx +220 -0
  701. package/src/MultiSelector/MultiSelector.tsx +201 -56
  702. package/src/NavIcon/NavIcon.doc.mjs +3 -3
  703. package/src/NavIcon/NavIcon.tsx +1 -1
  704. package/src/NavMenu/NavMenu.doc.mjs +2 -2
  705. package/src/NumberInput/NumberInput.doc.mjs +3 -3
  706. package/src/NumberInput/NumberInput.tsx +1 -1
  707. package/src/Outline/Outline.doc.mjs +3 -3
  708. package/src/Outline/Outline.tsx +1 -1
  709. package/src/OverflowList/OverflowList.doc.mjs +3 -3
  710. package/src/OverflowList/OverflowList.tsx +1 -1
  711. package/src/Overlay/Overlay.doc.mjs +2 -2
  712. package/src/Pagination/Pagination.doc.mjs +3 -3
  713. package/src/Pagination/Pagination.tsx +2 -22
  714. package/src/Pagination/index.ts +21 -1
  715. package/src/Popover/Popover.doc.mjs +31 -3
  716. package/src/Popover/Popover.test.tsx +41 -0
  717. package/src/Popover/Popover.tsx +25 -2
  718. package/src/Popover/usePopover.doc.mjs +2 -2
  719. package/src/Popover/usePopover.tsx +10 -4
  720. package/src/PowerSearch/PowerSearch.doc.mjs +3 -3
  721. package/src/PowerSearch/PowerSearch.tsx +1 -1
  722. package/src/ProgressBar/ProgressBar.doc.mjs +3 -3
  723. package/src/ProgressBar/ProgressBar.tsx +2 -22
  724. package/src/ProgressBar/index.ts +22 -5
  725. package/src/RadioList/RadioList.doc.mjs +3 -3
  726. package/src/RadioList/RadioList.tsx +1 -1
  727. package/src/RadioList/RadioListItem.doc.mjs +1 -1
  728. package/src/RadioList/RadioListItem.tsx +1 -1
  729. package/src/Resizable/Resizable.doc.mjs +2 -2
  730. package/src/Resizable/ResizeHandle.test.tsx +3 -2
  731. package/src/Resizable/ResizeHandle.tsx +8 -12
  732. package/src/Resizable/useResizable.doc.mjs +2 -2
  733. package/src/Section/Section.doc.mjs +3 -3
  734. package/src/Section/Section.tsx +2 -20
  735. package/src/Section/index.ts +20 -5
  736. package/src/SegmentedControl/SegmentedControl.doc.mjs +3 -3
  737. package/src/SegmentedControl/SegmentedControl.tsx +1 -1
  738. package/src/SegmentedControl/SegmentedControlItem.doc.mjs +1 -1
  739. package/src/SegmentedControl/SegmentedControlItem.tsx +1 -1
  740. package/src/SelectableCard/SelectableCard.doc.mjs +4 -2
  741. package/src/SelectableCard/SelectableCard.test.tsx +55 -0
  742. package/src/SelectableCard/SelectableCard.tsx +19 -3
  743. package/src/Selector/Selector.doc.mjs +28 -8
  744. package/src/Selector/Selector.test.tsx +193 -0
  745. package/src/Selector/Selector.tsx +194 -51
  746. package/src/Selector/SelectorOption.doc.mjs +1 -1
  747. package/src/SideNav/SideNav.doc.mjs +3 -3
  748. package/src/SideNav/SideNav.tsx +1 -1
  749. package/src/SideNav/SideNavCollapseButton.doc.mjs +1 -1
  750. package/src/SideNav/SideNavCollapseButton.tsx +4 -3
  751. package/src/SideNav/SideNavHeading.doc.mjs +1 -1
  752. package/src/SideNav/SideNavHeading.tsx +8 -9
  753. package/src/SideNav/SideNavItem.doc.mjs +1 -1
  754. package/src/SideNav/SideNavItem.tsx +5 -6
  755. package/src/SideNav/SideNavSection.doc.mjs +1 -1
  756. package/src/SideNav/SideNavSection.tsx +1 -1
  757. package/src/Skeleton/Skeleton.doc.mjs +3 -3
  758. package/src/Skeleton/Skeleton.tsx +1 -1
  759. package/src/Slider/Slider.doc.mjs +3 -3
  760. package/src/Slider/Slider.tsx +9 -13
  761. package/src/Spinner/Spinner.doc.mjs +3 -3
  762. package/src/Spinner/Spinner.tsx +1 -1
  763. package/src/Stack/Stack.doc.mjs +3 -3
  764. package/src/Stack/Stack.tsx +1 -1
  765. package/src/Stack/StackItem.tsx +1 -1
  766. package/src/StatusDot/StatusDot.doc.mjs +3 -3
  767. package/src/StatusDot/StatusDot.tsx +2 -22
  768. package/src/StatusDot/index.ts +22 -5
  769. package/src/Switch/Switch.doc.mjs +3 -3
  770. package/src/Switch/Switch.test.tsx +34 -0
  771. package/src/Switch/Switch.tsx +1 -1
  772. package/src/TabList/Tab.doc.mjs +1 -1
  773. package/src/TabList/Tab.tsx +1 -1
  774. package/src/TabList/TabList.doc.mjs +3 -3
  775. package/src/TabList/TabList.tsx +1 -1
  776. package/src/TabList/TabMenu.doc.mjs +1 -1
  777. package/src/TabList/TabMenu.tsx +1 -1
  778. package/src/Table/BaseTable.tsx +1 -1
  779. package/src/Table/Table.doc.mjs +3 -3
  780. package/src/Table/Table.tsx +1 -1
  781. package/src/Table/TableCell.doc.mjs +1 -1
  782. package/src/Table/TableCell.tsx +1 -1
  783. package/src/Table/TableHeaderCell.doc.mjs +1 -1
  784. package/src/Table/TableHeaderCell.tsx +1 -1
  785. package/src/Table/TableRow.doc.mjs +1 -1
  786. package/src/Table/TableRow.tsx +1 -1
  787. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +21 -3
  788. package/src/Table/plugins/tree/useTableTreeData.test.tsx +161 -2
  789. package/src/Table/plugins/tree/useTableTreeData.tsx +54 -1
  790. package/src/Table/useTableColumnResize.doc.mjs +1 -1
  791. package/src/Table/useTableColumnSettings.doc.mjs +1 -1
  792. package/src/Table/useTableFilterState.doc.mjs +1 -1
  793. package/src/Table/useTableFiltering.doc.mjs +1 -1
  794. package/src/Table/useTableGroupedRows.doc.mjs +2 -2
  795. package/src/Table/useTablePagination.doc.mjs +1 -1
  796. package/src/Table/useTableRowExpansion.doc.mjs +57 -4
  797. package/src/Table/useTableRowIndex.doc.mjs +2 -2
  798. package/src/Table/useTableRowStatus.doc.mjs +2 -2
  799. package/src/Table/useTableSelection.doc.mjs +1 -1
  800. package/src/Table/useTableSelectionState.doc.mjs +1 -1
  801. package/src/Table/useTableSortable.doc.mjs +1 -1
  802. package/src/Table/useTableStickyColumns.doc.mjs +1 -1
  803. package/src/Table/useTableTreeData.doc.mjs +10 -1
  804. package/src/Table/useTableTreeState.doc.mjs +1 -1
  805. package/src/Text/Heading.doc.mjs +4 -4
  806. package/src/Text/Text.doc.mjs +4 -4
  807. package/src/Text/Text.test.tsx +42 -0
  808. package/src/Text/Text.tsx +26 -2
  809. package/src/Text/index.ts +32 -6
  810. package/src/TextArea/TextArea.doc.mjs +5 -5
  811. package/src/TextArea/TextArea.test.tsx +112 -7
  812. package/src/TextArea/TextArea.tsx +143 -50
  813. package/src/TextInput/TextInput.doc.mjs +3 -3
  814. package/src/TextInput/TextInput.tsx +1 -1
  815. package/src/Thumbnail/Thumbnail.doc.mjs +2 -2
  816. package/src/Thumbnail/Thumbnail.test.tsx +24 -1
  817. package/src/Thumbnail/Thumbnail.tsx +28 -35
  818. package/src/TimeInput/TimeInput.doc.mjs +3 -3
  819. package/src/TimeInput/TimeInput.tsx +1 -1
  820. package/src/Timestamp/Timestamp.doc.mjs +5 -5
  821. package/src/Timestamp/Timestamp.test.tsx +131 -0
  822. package/src/Timestamp/Timestamp.tsx +92 -9
  823. package/src/Timestamp/formatInstant.ts +3 -4
  824. package/src/Timestamp/tooltipEntries.ts +3 -2
  825. package/src/Toast/Toast.doc.mjs +3 -3
  826. package/src/Toast/useToast.doc.mjs +2 -2
  827. package/src/ToggleButton/ToggleButton.doc.mjs +3 -3
  828. package/src/ToggleButton/ToggleButton.tsx +1 -1
  829. package/src/ToggleButton/ToggleButtonGroup.doc.mjs +1 -1
  830. package/src/ToggleButton/ToggleButtonGroup.tsx +3 -6
  831. package/src/Token/Token.doc.mjs +3 -3
  832. package/src/Token/Token.tsx +2 -28
  833. package/src/Token/index.ts +28 -1
  834. package/src/Tokenizer/Tokenizer.doc.mjs +3 -3
  835. package/src/Tokenizer/Tokenizer.tsx +1 -1
  836. package/src/Toolbar/Toolbar.doc.mjs +3 -3
  837. package/src/Toolbar/Toolbar.tsx +1 -1
  838. package/src/Tooltip/Tooltip.doc.mjs +3 -3
  839. package/src/Tooltip/Tooltip.tsx +1 -1
  840. package/src/Tooltip/useTooltip.doc.mjs +2 -2
  841. package/src/TopNav/TopNav.doc.mjs +3 -3
  842. package/src/TopNav/TopNav.tsx +1 -1
  843. package/src/TopNav/TopNavHeading.doc.mjs +1 -1
  844. package/src/TopNav/TopNavHeading.tsx +7 -8
  845. package/src/TopNav/TopNavItem.doc.mjs +1 -1
  846. package/src/TopNav/TopNavItem.tsx +1 -1
  847. package/src/TopNav/TopNavMegaMenu.doc.mjs +1 -1
  848. package/src/TopNav/TopNavMegaMenu.tsx +32 -6
  849. package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +1 -1
  850. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +1 -1
  851. package/src/TopNav/TopNavMegaMenuItem.doc.mjs +1 -1
  852. package/src/TopNav/TopNavMegaMenuItem.tsx +1 -1
  853. package/src/TopNav/TopNavMenu.doc.mjs +1 -1
  854. package/src/TopNav/TopNavMenu.tsx +5 -4
  855. package/src/TreeList/TreeList.doc.mjs +3 -3
  856. package/src/TreeList/TreeList.tsx +1 -1
  857. package/src/TreeList/TreeListBranches.tsx +1 -1
  858. package/src/TreeList/TreeListItem.tsx +4 -3
  859. package/src/TreeList/TreeListTypes.ts +1 -18
  860. package/src/TreeList/index.ts +19 -1
  861. package/src/Typeahead/BaseTypeahead.doc.mjs +1 -1
  862. package/src/Typeahead/BaseTypeahead.tsx +1 -1
  863. package/src/Typeahead/Typeahead.doc.mjs +3 -3
  864. package/src/Typeahead/Typeahead.tsx +1 -1
  865. package/src/Typeahead/TypeaheadItem.doc.mjs +1 -1
  866. package/src/Typeahead/TypeaheadItem.tsx +1 -1
  867. package/src/VStack/VStack.tsx +1 -1
  868. package/src/VisuallyHidden/VisuallyHidden.doc.mjs +3 -3
  869. package/src/VisuallyHidden/VisuallyHidden.tsx +1 -1
  870. package/src/__tests__/babelPluginAddExtensions.test.ts +190 -0
  871. package/src/__tests__/inputWidthContract.test.tsx +8 -1
  872. package/src/doc-mjs.d.ts +5 -2
  873. package/src/docPropLiterals.test.ts +1 -1
  874. package/src/docPropReferences.test.ts +1 -1
  875. package/src/hooks/containerReveal.pool.stylex.ts +571 -0
  876. package/src/hooks/index.ts +7 -0
  877. package/src/hooks/useClickableContainer.doc.mjs +2 -2
  878. package/src/hooks/useContainerReveal.doc.mjs +75 -0
  879. package/src/hooks/useContainerReveal.test.tsx +116 -0
  880. package/src/hooks/useContainerReveal.ts +181 -0
  881. package/src/hooks/useEntryAnimation.doc.mjs +2 -2
  882. package/src/hooks/useFocusTrap.doc.mjs +2 -2
  883. package/src/hooks/useGridFocus.doc.mjs +2 -2
  884. package/src/hooks/useGridFocus.ts +8 -6
  885. package/src/hooks/useHotkeys.doc.mjs +2 -2
  886. package/src/hooks/useImageMode.doc.mjs +2 -2
  887. package/src/hooks/useInputContainer.doc.mjs +2 -2
  888. package/src/hooks/useInputContainer.test.tsx +180 -0
  889. package/src/hooks/useInputContainer.ts +36 -1
  890. package/src/hooks/useInputStatusIcon.test.tsx +59 -0
  891. package/src/hooks/useInputStatusIcon.tsx +12 -1
  892. package/src/hooks/useKeyboardHint.doc.mjs +2 -2
  893. package/src/hooks/useKeyboardHint.tsx +1 -1
  894. package/src/hooks/useListFocus.doc.mjs +2 -2
  895. package/src/hooks/useListFocus.ts +8 -7
  896. package/src/hooks/useMediaQuery.doc.mjs +2 -2
  897. package/src/hooks/useOverflow.doc.mjs +2 -2
  898. package/src/hooks/useScrollLock.doc.mjs +2 -2
  899. package/src/hooks/useScrollOverflow.doc.mjs +2 -2
  900. package/src/hooks/useStreamingText.doc.mjs +2 -2
  901. package/src/hooks/useTreeFocus.doc.mjs +2 -2
  902. package/src/hooks/useTreeFocus.test.tsx +53 -1
  903. package/src/hooks/useTreeFocus.ts +13 -2
  904. package/src/i18n/InternationalizationProvider.doc.mjs +2 -2
  905. package/src/i18n/useTranslator.doc.mjs +2 -2
  906. package/src/index.ts +14 -10
  907. package/src/theme/MediaTheme.doc.mjs +2 -2
  908. package/src/theme/SyntaxTheme.doc.mjs +2 -2
  909. package/src/theme/Theme.doc.mjs +2 -2
  910. package/src/theme/Theme.tsx +3 -7
  911. package/src/theme/defineTheme.ts +11 -1
  912. package/src/theme/expandColorScale.test.ts +144 -0
  913. package/src/theme/expandColorScale.ts +53 -15
  914. package/src/theme/index.ts +11 -9
  915. package/src/theme/themeRegistry.test.ts +59 -0
  916. package/src/theme/themeRegistry.ts +53 -0
  917. package/src/theme/types.ts +14 -13
  918. package/src/theme/useTheme.doc.mjs +2 -2
  919. package/src/theme/useTheme.test.tsx +48 -3
  920. package/src/theme/useTheme.ts +100 -29
  921. package/src/utils/rtlStyles.ts +22 -0
  922. package/dist/Thumbnail/thumbnail.markers.stylex.d.ts +0 -9
  923. package/dist/Thumbnail/thumbnail.markers.stylex.d.ts.map +0 -1
  924. package/dist/Thumbnail/thumbnail.markers.stylex.js +0 -14
  925. package/dist/authoring/doc.d.ts +0 -145
  926. package/dist/authoring/doc.d.ts.map +0 -1
  927. package/dist/authoring/doc.js +0 -100
  928. package/dist/authoring/index.d.ts +0 -29
  929. package/dist/authoring/index.d.ts.map +0 -1
  930. package/dist/authoring/index.js +0 -28
  931. package/dist/authoring/integration.d.ts +0 -35
  932. package/dist/authoring/integration.d.ts.map +0 -1
  933. package/dist/authoring/integration.js +0 -30
  934. package/dist/authoring/template.d.ts +0 -66
  935. package/dist/authoring/template.d.ts.map +0 -1
  936. package/dist/authoring/template.js +0 -55
  937. package/dist/config.d.ts +0 -80
  938. package/dist/config.d.ts.map +0 -1
  939. package/dist/config.js +0 -40
  940. package/dist/docs-types.d.ts +0 -969
  941. package/dist/docs-types.d.ts.map +0 -1
  942. package/dist/docs-types.js +0 -1
  943. package/src/Thumbnail/thumbnail.markers.stylex.ts +0 -12
  944. package/src/authoring/doc.ts +0 -164
  945. package/src/authoring/index.test.ts +0 -52
  946. package/src/authoring/index.ts +0 -50
  947. package/src/authoring/integration.ts +0 -42
  948. package/src/authoring/template.ts +0 -74
  949. package/src/config.test.ts +0 -16
  950. package/src/config.ts +0 -92
  951. package/src/docs-types.ts +0 -1108
@@ -0,0 +1,116 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file useContainerReveal.test.tsx
5
+ * @input Uses vitest, @testing-library/react, useContainerReveal
6
+ * @output Unit tests for the marker-pool free-list, per-instance scoping, the
7
+ * inert (disabled) path, and the content-option → style-block mapping.
8
+ * @position Testing; validates useContainerReveal.ts and its pool.
9
+ *
10
+ * SYNC: When useContainerReveal.ts changes, update these tests.
11
+ */
12
+
13
+ import {describe, it, expect} from 'vitest';
14
+ import {renderHook, render, act} from '@testing-library/react';
15
+ import {useContainerReveal} from './useContainerReveal';
16
+ import {POOL_SIZE} from './containerReveal.pool.stylex';
17
+
18
+ describe('useContainerReveal', () => {
19
+ it('returns spreadable getter props for container and content', () => {
20
+ const {result} = renderHook(() => useContainerReveal());
21
+ const container = result.current.getContainerProps();
22
+ const content = result.current.getContentRevealProps();
23
+ expect(container).toHaveProperty('className');
24
+ expect(content).toHaveProperty('className');
25
+ expect(typeof container.className).toBe('string');
26
+ expect(typeof content.className).toBe('string');
27
+ });
28
+
29
+ it('is inert when disabled: no marker class, empty content props', () => {
30
+ const {result} = renderHook(() =>
31
+ useContainerReveal({isEnabled: false}),
32
+ );
33
+ expect(result.current.getContainerProps()).toEqual({});
34
+ expect(result.current.getContentRevealProps()).toEqual({});
35
+ });
36
+
37
+ it('gives two concurrently mounted containers DISTINCT marker classes', () => {
38
+ // The core leak-safety property: nested/concurrent containers must never
39
+ // share a marker, or an ancestor container's :hover would reveal a
40
+ // descendant container's content.
41
+ const a = renderHook(() => useContainerReveal());
42
+ const b = renderHook(() => useContainerReveal());
43
+ const classA = a.result.current.getContainerProps().className;
44
+ const classB = b.result.current.getContainerProps().className;
45
+ expect(classA).toBeTruthy();
46
+ expect(classB).toBeTruthy();
47
+ expect(classA).not.toBe(classB);
48
+ a.unmount();
49
+ b.unmount();
50
+ });
51
+
52
+ it('recycles a slot after unmount (free-list release)', () => {
53
+ const first = renderHook(() => useContainerReveal());
54
+ const firstClass = first.result.current.getContainerProps().className;
55
+ first.unmount();
56
+ // A fresh mount should be able to reclaim the just-released slot.
57
+ const second = renderHook(() => useContainerReveal());
58
+ const secondClass = second.result.current.getContainerProps().className;
59
+ expect(secondClass).toBe(firstClass);
60
+ second.unmount();
61
+ });
62
+
63
+ it('reveal and conceal map to different style blocks', () => {
64
+ const {result} = renderHook(() => useContainerReveal());
65
+ const reveal = result.current.getContentRevealProps().className;
66
+ const conceal = result.current.getContentRevealProps({
67
+ isRevealInverted: true,
68
+ }).className;
69
+ expect(reveal).toBeTruthy();
70
+ expect(conceal).toBeTruthy();
71
+ expect(reveal).not.toBe(conceal);
72
+ });
73
+
74
+ it('layout-preserved reveal differs from clipped reveal', () => {
75
+ const {result} = renderHook(() => useContainerReveal());
76
+ const clipped = result.current.getContentRevealProps().className;
77
+ const preserved = result.current.getContentRevealProps({
78
+ isLayoutPreserved: true,
79
+ }).className;
80
+ expect(clipped).not.toBe(preserved);
81
+ });
82
+
83
+ it('assigns distinct markers across a full pool of concurrent containers', () => {
84
+ function Probe({onClass}: {onClass: (c: string) => void}) {
85
+ const {getContainerProps} = useContainerReveal();
86
+ onClass(getContainerProps().className ?? '');
87
+ return null;
88
+ }
89
+ const classes: string[] = [];
90
+ const {unmount} = render(
91
+ <>
92
+ {Array.from({length: POOL_SIZE}, (_, i) => (
93
+ <Probe key={i} onClass={(c) => classes.push(c)} />
94
+ ))}
95
+ </>,
96
+ );
97
+ const unique = new Set(classes.filter(Boolean));
98
+ expect(unique.size).toBe(POOL_SIZE);
99
+ unmount();
100
+ });
101
+
102
+ it('survives repeated mount/unmount without leaking the pool', () => {
103
+ // Mount and unmount a full pool several times; each cycle must still hand
104
+ // out POOL_SIZE distinct markers, proving slots are released.
105
+ for (let cycle = 0; cycle < 3; cycle++) {
106
+ const hooks = Array.from({length: POOL_SIZE}, () =>
107
+ renderHook(() => useContainerReveal()),
108
+ );
109
+ const classes = hooks.map(
110
+ (h) => h.result.current.getContainerProps().className,
111
+ );
112
+ expect(new Set(classes).size).toBe(POOL_SIZE);
113
+ act(() => hooks.forEach((h) => h.unmount()));
114
+ }
115
+ });
116
+ });
@@ -0,0 +1,181 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file useContainerReveal.ts
7
+ * @input Uses React, the generated marker pool, useDevWarning
8
+ * @output Exports useContainerReveal — a headless hover/focus reveal primitive
9
+ * @position Core hook. Consumed by any component that reveals (or conceals)
10
+ * content when its container is hovered or focused — e.g. Thumbnail's remove
11
+ * button, TreeList row actions.
12
+ *
13
+ * Gives a container a scoped hover/focus-within trigger that reveals or
14
+ * conceals content inside it, entirely in CSS (no hover state in JS, no
15
+ * re-render on hover). The caller authors NO StyleX: the hook hands out a
16
+ * marker + matching reveal styles from a pre-compiled pool.
17
+ *
18
+ * ACCESSIBILITY (WCAG 2.2 by construction):
19
+ * - Revealed content is visually hidden at rest via position + opacity, so it
20
+ * stays in the accessibility tree and tab order — never display:none.
21
+ * - Keyboard: revealed on :focus-within, so tabbing in shows it.
22
+ * - Touch: always visible on coarse pointers; never gated behind hover.
23
+ * - Concealed (inverted) content is a mouse-only visual swap: it ignores
24
+ * :focus-within (a keyboard user must never watch content vanish) and stays
25
+ * visible on touch and in the a11y tree.
26
+ * - Motion: honors prefers-reduced-motion.
27
+ *
28
+ * SYNC: When modified, update:
29
+ * - /packages/core/src/hooks/index.ts (export)
30
+ * - containerReveal.pool.stylex.ts (if the slot shape changes)
31
+ */
32
+
33
+ import {useState, useEffect, type CSSProperties} from 'react';
34
+ import * as stylex from '@stylexjs/stylex';
35
+ import {POOL, POOL_SIZE, type RevealSlot} from './containerReveal.pool.stylex';
36
+ import {useDevWarning} from './useDevWarning';
37
+
38
+ // Module-level free-list. Each mounted, enabled useContainerReveal claims a
39
+ // distinct pool slot so that any two CONCURRENTLY mounted containers — in
40
+ // particular a nested container inside another's revealed content — get
41
+ // different markers and cannot leak hover/focus into one another. Slots are
42
+ // returned on unmount. Sibling containers that would only ever collide when
43
+ // the pool is exhausted are harmless (a sibling is never an ancestor), so the
44
+ // pool only needs to cover the number of concurrently mounted containers, not
45
+ // instances over time.
46
+ const claimed: boolean[] = new Array(POOL_SIZE).fill(false);
47
+
48
+ interface Claim {
49
+ /** Pool index to use. */
50
+ index: number;
51
+ /** True when the pool was full and this claim fell back to a shared slot. */
52
+ isExhausted: boolean;
53
+ }
54
+
55
+ function claimSlot(): Claim {
56
+ for (let i = 0; i < POOL_SIZE; i++) {
57
+ if (!claimed[i]) {
58
+ claimed[i] = true;
59
+ return {index: i, isExhausted: false};
60
+ }
61
+ }
62
+ // Exhausted: fall back to slot 0. Safe for siblings (a sibling is never an
63
+ // ancestor); only nesting deeper than POOL_SIZE could reintroduce a leak.
64
+ // Surfaced via useDevWarning so the pool can be grown.
65
+ return {index: 0, isExhausted: true};
66
+ }
67
+
68
+ function releaseSlot(index: number, isExhausted: boolean): void {
69
+ // A fallback claim never owned the slot exclusively; leave it as-is.
70
+ if (!isExhausted) {
71
+ claimed[index] = false;
72
+ }
73
+ }
74
+
75
+ export interface UseContainerRevealOptions {
76
+ /**
77
+ * When false the hook is inert: no marker is applied and content getters
78
+ * return no styles, so content is always shown. Lets a component gate on its
79
+ * own prop (e.g. `revealOn === 'hover'`).
80
+ * @default true
81
+ */
82
+ isEnabled?: boolean;
83
+ }
84
+
85
+ export interface ContentRevealOptions {
86
+ /**
87
+ * Conceal-on-hover instead of reveal-on-hover: content is visible at rest
88
+ * and fades out while the container is hovered. Mouse-only and visual —
89
+ * stays in the a11y tree, ignores focus-within, stays visible on touch.
90
+ * @default false
91
+ */
92
+ isRevealInverted?: boolean;
93
+ /**
94
+ * Reserve the content's layout box while hidden (opacity-only) instead of
95
+ * collapsing it, to avoid layout shift when it appears.
96
+ * @default false
97
+ */
98
+ isLayoutPreserved?: boolean;
99
+ }
100
+
101
+ export interface UseContainerRevealReturn {
102
+ /** Spread onto the container whose hover/focus-within drives the reveal. */
103
+ getContainerProps: () => {className?: string; style?: CSSProperties};
104
+ /** Spread onto each revealed / concealed child. */
105
+ getContentRevealProps: (options?: ContentRevealOptions) => {
106
+ className?: string;
107
+ style?: CSSProperties;
108
+ };
109
+ }
110
+
111
+ const EMPTY = Object.freeze({});
112
+
113
+ /**
114
+ * Scoped, CSS-only hover/focus reveal for content inside a container.
115
+ *
116
+ * @example
117
+ * ```tsx
118
+ * const {getContainerProps, getContentRevealProps} = useContainerReveal({
119
+ * isEnabled: revealOn === 'hover',
120
+ * });
121
+ *
122
+ * <div {...mergeProps(getContainerProps(), stylex.props(styles.row))}>
123
+ * {label}
124
+ * <span {...mergeProps(getContentRevealProps(), stylex.props(styles.actions))}>
125
+ * {actions}
126
+ * </span>
127
+ * </div>
128
+ * ```
129
+ */
130
+ export function useContainerReveal(
131
+ options: UseContainerRevealOptions = {},
132
+ ): UseContainerRevealReturn {
133
+ const {isEnabled = true} = options;
134
+
135
+ // Claim a slot for this container's lifetime. Assigned in the initializer
136
+ // (not the render body) and released on unmount so the free-list stays
137
+ // effect-scoped and StrictMode-safe.
138
+ const [claim] = useState<Claim | null>(() =>
139
+ isEnabled ? claimSlot() : null,
140
+ );
141
+
142
+ useEffect(() => {
143
+ if (claim == null) {
144
+ return;
145
+ }
146
+ return () => releaseSlot(claim.index, claim.isExhausted);
147
+ }, [claim]);
148
+
149
+ useDevWarning(
150
+ 'useContainerReveal',
151
+ `More than ${POOL_SIZE} reveal containers are mounted at once; nested ` +
152
+ `containers beyond the pool may share a marker. Add markers to ` +
153
+ `containerReveal.pool.stylex.ts and raise POOL_SIZE.`,
154
+ claim?.isExhausted ?? false,
155
+ );
156
+
157
+ if (claim == null) {
158
+ return {
159
+ getContainerProps: () => EMPTY,
160
+ getContentRevealProps: () => EMPTY,
161
+ };
162
+ }
163
+
164
+ const slot: RevealSlot = POOL[claim.index];
165
+
166
+ return {
167
+ getContainerProps: () => stylex.props(slot.marker),
168
+ getContentRevealProps: (contentOptions: ContentRevealOptions = {}) => {
169
+ const {isRevealInverted = false, isLayoutPreserved = false} =
170
+ contentOptions;
171
+ const style = isRevealInverted
172
+ ? isLayoutPreserved
173
+ ? slot.concealLayoutPreserved
174
+ : slot.conceal
175
+ : isLayoutPreserved
176
+ ? slot.revealLayoutPreserved
177
+ : slot.reveal;
178
+ return stylex.props(style);
179
+ },
180
+ };
181
+ }
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
- /** @type {import('../docs-types').HookDoc} */
3
+ /** @type {import('@astryxdesign/cli/authoring').HookDoc} */
4
4
  export const docs = {
5
5
  name: 'useEntryAnimation',
6
6
  displayName: 'useEntryAnimation',
@@ -36,7 +36,7 @@ export const docs = {
36
36
  category: 'animation',
37
37
  };
38
38
 
39
- /** @type {import('../docs-types').HookTranslationDoc} */
39
+ /** @type {import('@astryxdesign/cli/authoring').HookTranslationDoc} */
40
40
  export const docsDense = {
41
41
  description:
42
42
  'Returns StyleX style for animating element on mount. Only animates when element dynamically inserted after initial page paint; elements rendered on page load not animated. Uses Astryx motion tokens (duration, easing) for consistent timing. Requires "use client"; does not support SSR.',
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
- /** @type {import('../docs-types').HookDoc} */
3
+ /** @type {import('@astryxdesign/cli/authoring').HookDoc} */
4
4
  export const docs = {
5
5
  name: 'useFocusTrap',
6
6
  displayName: 'useFocusTrap',
@@ -53,7 +53,7 @@ export const docs = {
53
53
  category: 'focus',
54
54
  };
55
55
 
56
- /** @type {import('../docs-types').HookTranslationDoc} */
56
+ /** @type {import('@astryxdesign/cli/authoring').HookTranslationDoc} */
57
57
  export const docsDense = {
58
58
  description:
59
59
  'Traps focus within container element following WAI-ARIA dialog focus trap pattern. Listens to document focus events + redirects focus back into container if it escapes via keyboard navigation. Handles both Tab + Shift+Tab wrapping. Mouse clicks outside container not intercepted; use light-dismiss handler for that.',
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
- /** @type {import('../docs-types').HookDoc} */
3
+ /** @type {import('@astryxdesign/cli/authoring').HookDoc} */
4
4
  export const docs = {
5
5
  name: 'useGridFocus',
6
6
  displayName: 'useGridFocus',
@@ -124,7 +124,7 @@ export const docs = {
124
124
  category: 'focus',
125
125
  };
126
126
 
127
- /** @type {import('../docs-types').HookTranslationDoc} */
127
+ /** @type {import('@astryxdesign/cli/authoring').HookTranslationDoc} */
128
128
  export const docsDense = {
129
129
  description:
130
130
  'Manages keyboard navigation within 2D grid following WAI-ARIA grid pattern. Supports arrow keys for cell-to-cell navigation, Home/End for row boundaries, Ctrl+Home/Ctrl+End for grid boundaries, Page Up/Down for custom callbacks (e.g. month navigation in calendars). Boundary navigation callbacks allow cross-grid navigation.',
@@ -90,13 +90,15 @@ export interface UseGridFocusOptions {
90
90
  onPageDown?: () => void;
91
91
 
92
92
  /**
93
- * Whether the grid is in a right-to-left context. When true, ArrowLeft and
94
- * ArrowRight are swapped so horizontal navigation follows visual direction.
93
+ * @deprecated Direction is auto-detected from the container's computed
94
+ * `direction` — omit this. The explicit override is redundant (there's no
95
+ * valid reason to force RTL arrows in an LTR context) and will be removed in
96
+ * an upcoming major.
95
97
  *
96
- * When omitted, the direction is auto-detected from the container's computed
97
- * `direction` (read lazily on keydown, only for horizontal arrow keys), so
98
- * grids inside `dir="rtl"` subtrees flip automatically. Pass an explicit
99
- * boolean to override detection.
98
+ * When set, forces whether the grid is right-to-left: ArrowLeft/ArrowRight
99
+ * are swapped so horizontal navigation follows visual direction. When
100
+ * omitted (preferred), the direction is auto-detected from the container's
101
+ * computed `direction` (read lazily on keydown, horizontal arrows only).
100
102
  * @default undefined (auto-detect from the container)
101
103
  */
102
104
  isRtl?: boolean;
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
- /** @type {import('../docs-types').HookDoc} */
3
+ /** @type {import('@astryxdesign/cli/authoring').HookDoc} */
4
4
  export const docs = {
5
5
  name: 'useHotkeys',
6
6
  displayName: 'useHotkeys',
@@ -31,7 +31,7 @@ export const docs = {
31
31
  category: 'interaction',
32
32
  };
33
33
 
34
- /** @type {import('../docs-types').HookTranslationDoc} */
34
+ /** @type {import('@astryxdesign/cli/authoring').HookTranslationDoc} */
35
35
  export const docsDense = {
36
36
  description:
37
37
  'Global keyboard shortcuts w/ one window keydown listener per hook instance. Handlers kept in ref; re-renders never re-subscribe. Skips typing targets (input/textarea/select/contenteditable) unless allowInInputs, skips defaultPrevented, preventDefault() on match. "mod" = ⌘ on macOS, Ctrl elsewhere. SSR-safe.',
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
- /** @type {import('../docs-types').HookDoc} */
3
+ /** @type {import('@astryxdesign/cli/authoring').HookDoc} */
4
4
  export const docs = {
5
5
  name: 'useImageMode',
6
6
  displayName: 'useImageMode',
@@ -61,7 +61,7 @@ export const docs = {
61
61
  category: 'media',
62
62
  };
63
63
 
64
- /** @type {import('../docs-types').HookTranslationDoc} */
64
+ /** @type {import('@astryxdesign/cli/authoring').HookTranslationDoc} */
65
65
  export const docsDense = {
66
66
  description:
67
67
  'Detects whether image is predominantly dark / light by sampling pixels via OffscreenCanvas. Uses APCA perceptual lightness (sRGB linearization + power curve) for accurate detection, esp. on saturated colors. Runs entirely off paint path: no visible canvas, no layout thrash. Supports regional sampling for detecting luminance where text overlays will appear. Returns null while loading + falls back gracefully on CORS / network errors.',
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
- /** @type {import('../docs-types').HookDoc} */
3
+ /** @type {import('@astryxdesign/cli/authoring').HookDoc} */
4
4
  export const docs = {
5
5
  name: 'useInputContainer',
6
6
  displayName: 'useInputContainer',
@@ -59,7 +59,7 @@ export const docs = {
59
59
  category: 'interaction',
60
60
  };
61
61
 
62
- /** @type {import('../docs-types').HookTranslationDoc} */
62
+ /** @type {import('@astryxdesign/cli/authoring').HookTranslationDoc} */
63
63
  export const docsDense = {
64
64
  description:
65
65
  'Makes input container wrapper clickable, delegating focus to inner input/textarea when user clicks non-interactive areas (icons, padding, status indicators). Built on useClickableContainer, so nested interactive elements (clear buttons, calendar toggles, links) handled safely; clicking them does NOT steal focus from input. Automatically detects input type: text-like inputs receive .focus(), other types (checkbox, radio, file) receive .click().',
@@ -0,0 +1,180 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file useInputContainer.test.tsx
5
+ * @input Uses React Testing Library, useInputContainer
6
+ * @output Unit tests for focus-vs-click forwarding on container click
7
+ */
8
+
9
+ import {fireEvent, render} from '@testing-library/react';
10
+ import {useRef} from 'react';
11
+ import {describe, expect, it, vi} from 'vitest';
12
+ import {useInputContainer} from './useInputContainer';
13
+
14
+ /**
15
+ * Renders a container wired with useInputContainer around a single control.
16
+ * The control is described by `control`, which receives the ref to attach.
17
+ */
18
+ function TestContainer({
19
+ renderControl,
20
+ }: {
21
+ renderControl: (ref: React.RefObject<HTMLElement | null>) => React.ReactNode;
22
+ }) {
23
+ const containerRef = useRef<HTMLDivElement>(null);
24
+ const inputRef = useRef<HTMLElement | null>(null);
25
+ const {onClick, onMouseUp} = useInputContainer({
26
+ containerRef,
27
+ inputRef,
28
+ });
29
+ return (
30
+ <div ref={containerRef} onClick={onClick} onMouseUp={onMouseUp}>
31
+ <span data-testid="chrome">chrome</span>
32
+ {renderControl(inputRef)}
33
+ </div>
34
+ );
35
+ }
36
+
37
+ describe('useInputContainer', () => {
38
+ it('clicks (not focuses) a role="combobox" aria-haspopup="dialog" text input', () => {
39
+ const onFocus = vi.fn();
40
+ const onControlClick = vi.fn();
41
+ const {getByTestId} = render(
42
+ <TestContainer
43
+ renderControl={ref => (
44
+ <input
45
+ ref={ref as React.RefObject<HTMLInputElement>}
46
+ data-testid="control"
47
+ type="text"
48
+ role="combobox"
49
+ aria-haspopup="dialog"
50
+ onFocus={onFocus}
51
+ onClick={onControlClick}
52
+ />
53
+ )}
54
+ />,
55
+ );
56
+
57
+ // Click the non-interactive chrome so the container handler fires.
58
+ fireEvent.click(getByTestId('chrome'));
59
+
60
+ // A popup trigger must be activated via click, not merely focused —
61
+ // otherwise DateInput's calendar would never open.
62
+ expect(onControlClick).toHaveBeenCalledTimes(1);
63
+ expect(onFocus).not.toHaveBeenCalled();
64
+ });
65
+
66
+ it('clicks a control that only advertises aria-haspopup (no combobox role)', () => {
67
+ const onFocus = vi.fn();
68
+ const onControlClick = vi.fn();
69
+ const {getByTestId} = render(
70
+ <TestContainer
71
+ renderControl={ref => (
72
+ <input
73
+ ref={ref as React.RefObject<HTMLInputElement>}
74
+ data-testid="control"
75
+ type="text"
76
+ aria-haspopup="menu"
77
+ onFocus={onFocus}
78
+ onClick={onControlClick}
79
+ />
80
+ )}
81
+ />,
82
+ );
83
+
84
+ fireEvent.click(getByTestId('chrome'));
85
+
86
+ expect(onControlClick).toHaveBeenCalledTimes(1);
87
+ expect(onFocus).not.toHaveBeenCalled();
88
+ });
89
+
90
+ it('focuses (not clicks) a plain type="text" input', () => {
91
+ const onFocus = vi.fn();
92
+ const onControlClick = vi.fn();
93
+ const {getByTestId} = render(
94
+ <TestContainer
95
+ renderControl={ref => (
96
+ <input
97
+ ref={ref as React.RefObject<HTMLInputElement>}
98
+ data-testid="control"
99
+ type="text"
100
+ onFocus={onFocus}
101
+ onClick={onControlClick}
102
+ />
103
+ )}
104
+ />,
105
+ );
106
+
107
+ fireEvent.click(getByTestId('chrome'));
108
+
109
+ expect(onFocus).toHaveBeenCalledTimes(1);
110
+ expect(onControlClick).not.toHaveBeenCalled();
111
+ });
112
+
113
+ it('focuses (not clicks) a plain type="number" input', () => {
114
+ const onFocus = vi.fn();
115
+ const onControlClick = vi.fn();
116
+ const {getByTestId} = render(
117
+ <TestContainer
118
+ renderControl={ref => (
119
+ <input
120
+ ref={ref as React.RefObject<HTMLInputElement>}
121
+ data-testid="control"
122
+ type="number"
123
+ onFocus={onFocus}
124
+ onClick={onControlClick}
125
+ />
126
+ )}
127
+ />,
128
+ );
129
+
130
+ fireEvent.click(getByTestId('chrome'));
131
+
132
+ expect(onFocus).toHaveBeenCalledTimes(1);
133
+ expect(onControlClick).not.toHaveBeenCalled();
134
+ });
135
+
136
+ it('focuses (not clicks) a textarea', () => {
137
+ const onFocus = vi.fn();
138
+ const onControlClick = vi.fn();
139
+ const {getByTestId} = render(
140
+ <TestContainer
141
+ renderControl={ref => (
142
+ <textarea
143
+ ref={ref as React.RefObject<HTMLTextAreaElement>}
144
+ data-testid="control"
145
+ onFocus={onFocus}
146
+ onClick={onControlClick}
147
+ />
148
+ )}
149
+ />,
150
+ );
151
+
152
+ fireEvent.click(getByTestId('chrome'));
153
+
154
+ expect(onFocus).toHaveBeenCalledTimes(1);
155
+ expect(onControlClick).not.toHaveBeenCalled();
156
+ });
157
+
158
+ it('clicks (not focuses) a checkbox — unchanged behavior', () => {
159
+ const onFocus = vi.fn();
160
+ const onControlClick = vi.fn();
161
+ const {getByTestId} = render(
162
+ <TestContainer
163
+ renderControl={ref => (
164
+ <input
165
+ ref={ref as React.RefObject<HTMLInputElement>}
166
+ data-testid="control"
167
+ type="checkbox"
168
+ onFocus={onFocus}
169
+ onClick={onControlClick}
170
+ />
171
+ )}
172
+ />,
173
+ );
174
+
175
+ fireEvent.click(getByTestId('chrome'));
176
+
177
+ expect(onControlClick).toHaveBeenCalledTimes(1);
178
+ expect(onFocus).not.toHaveBeenCalled();
179
+ });
180
+ });
@@ -35,6 +35,36 @@ const FOCUS_INPUT_TYPES = new Set([
35
35
  'week',
36
36
  ]);
37
37
 
38
+ /**
39
+ * `aria-haspopup` values that advertise a control opens a popup on activation.
40
+ * https://www.w3.org/TR/wai-aria-1.2/#aria-haspopup
41
+ */
42
+ const HASPOPUP_VALUES = new Set([
43
+ 'true',
44
+ 'menu',
45
+ 'listbox',
46
+ 'tree',
47
+ 'grid',
48
+ 'dialog',
49
+ ]);
50
+
51
+ /**
52
+ * Whether an element is a popup trigger — a combobox or any control that
53
+ * advertises `aria-haspopup`. Such controls activate their popup on *click*
54
+ * (e.g. DateInput's `<input type="text" role="combobox" aria-haspopup="dialog">`
55
+ * opens its calendar via `onClick`, with no `onFocus` opener). Forwarding a
56
+ * container click to `.focus()` would focus the control but leave the popup
57
+ * closed — so we `.click()` these instead. Plain text inputs (no popup) are
58
+ * unaffected and keep `.focus()`.
59
+ */
60
+ function isPopupTrigger(el: HTMLElement): boolean {
61
+ if (el.getAttribute('role') === 'combobox') {
62
+ return true;
63
+ }
64
+ const haspopup = el.getAttribute('aria-haspopup');
65
+ return haspopup != null && HASPOPUP_VALUES.has(haspopup);
66
+ }
67
+
38
68
  export interface UseInputContainerOptions {
39
69
  /** Ref to the outer container/wrapper element */
40
70
  containerRef: RefObject<HTMLElement | null>;
@@ -83,7 +113,12 @@ export function useInputContainer({
83
113
  if (input == null) {
84
114
  return;
85
115
  }
86
- if (
116
+ // Popup triggers (combobox / aria-haspopup) activate their popup on
117
+ // *click*, not focus — so check this BEFORE the type check, otherwise a
118
+ // `type="text"` combobox (DateInput) would `.focus()` and never open.
119
+ if (input instanceof HTMLElement && isPopupTrigger(input)) {
120
+ input.click();
121
+ } else if (
87
122
  input instanceof HTMLInputElement &&
88
123
  FOCUS_INPUT_TYPES.has(input.type)
89
124
  ) {