@astryxdesign/core 0.2.0 → 0.3.0-canary.0b5a38e

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 (1113) hide show
  1. package/CHANGELOG.md +110 -0
  2. package/README.md +5 -3
  3. package/dist/AlertDialog/AlertDialog.d.ts +1 -1
  4. package/dist/AlertDialog/AlertDialog.js +1 -1
  5. package/dist/AppShell/AppShell.d.ts +2 -20
  6. package/dist/AppShell/AppShell.d.ts.map +1 -1
  7. package/dist/AppShell/AppShell.js +25 -18
  8. package/dist/AppShell/index.d.ts +20 -1
  9. package/dist/AppShell/index.d.ts.map +1 -1
  10. package/dist/AppShell/index.js +14 -0
  11. package/dist/AspectRatio/AspectRatio.d.ts +1 -1
  12. package/dist/AspectRatio/AspectRatio.js +1 -1
  13. package/dist/Avatar/Avatar.d.ts +1 -1
  14. package/dist/Avatar/Avatar.d.ts.map +1 -1
  15. package/dist/Avatar/Avatar.js +35 -14
  16. package/dist/Avatar/AvatarStatusDot.d.ts +2 -26
  17. package/dist/Avatar/AvatarStatusDot.d.ts.map +1 -1
  18. package/dist/Avatar/AvatarStatusDot.js +1 -22
  19. package/dist/Avatar/index.d.ts +26 -1
  20. package/dist/Avatar/index.d.ts.map +1 -1
  21. package/dist/Avatar/index.js +21 -0
  22. package/dist/AvatarGroup/AvatarGroup.d.ts +1 -1
  23. package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
  24. package/dist/AvatarGroup/AvatarGroup.js +4 -8
  25. package/dist/AvatarGroup/AvatarGroupOverflow.d.ts +2 -2
  26. package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
  27. package/dist/AvatarGroup/AvatarGroupOverflow.js +7 -3
  28. package/dist/Badge/Badge.d.ts +2 -30
  29. package/dist/Badge/Badge.d.ts.map +1 -1
  30. package/dist/Badge/Badge.js +2 -17
  31. package/dist/Badge/index.d.ts +31 -2
  32. package/dist/Badge/index.d.ts.map +1 -1
  33. package/dist/Badge/index.js +15 -1
  34. package/dist/Banner/Banner.d.ts +2 -37
  35. package/dist/Banner/Banner.d.ts.map +1 -1
  36. package/dist/Banner/Banner.js +6 -34
  37. package/dist/Banner/index.d.ts +37 -1
  38. package/dist/Banner/index.d.ts.map +1 -1
  39. package/dist/Banner/index.js +27 -0
  40. package/dist/Blockquote/Blockquote.d.ts +1 -1
  41. package/dist/Blockquote/Blockquote.js +1 -1
  42. package/dist/Breadcrumbs/BreadcrumbItem.d.ts +1 -1
  43. package/dist/Breadcrumbs/BreadcrumbItem.js +4 -3
  44. package/dist/Breadcrumbs/Breadcrumbs.d.ts +2 -18
  45. package/dist/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  46. package/dist/Breadcrumbs/Breadcrumbs.js +1 -15
  47. package/dist/Breadcrumbs/index.d.ts +18 -1
  48. package/dist/Breadcrumbs/index.d.ts.map +1 -1
  49. package/dist/Breadcrumbs/index.js +14 -0
  50. package/dist/Button/Button.d.ts +3 -21
  51. package/dist/Button/Button.d.ts.map +1 -1
  52. package/dist/Button/Button.js +6 -19
  53. package/dist/Button/index.d.ts +21 -3
  54. package/dist/Button/index.d.ts.map +1 -1
  55. package/dist/Button/index.js +15 -1
  56. package/dist/ButtonGroup/ButtonGroup.d.ts +1 -1
  57. package/dist/ButtonGroup/ButtonGroup.js +1 -1
  58. package/dist/Calendar/Calendar.js +1 -1
  59. package/dist/Calendar/index.d.ts +1 -1
  60. package/dist/Calendar/index.d.ts.map +1 -1
  61. package/dist/Calendar/index.js +1 -1
  62. package/dist/Calendar/styles.d.ts +2 -2
  63. package/dist/Calendar/styles.js +2 -2
  64. package/dist/Calendar/utils.d.ts +0 -4
  65. package/dist/Calendar/utils.d.ts.map +1 -1
  66. package/dist/Calendar/utils.js +1 -8
  67. package/dist/Card/Card.d.ts +1 -1
  68. package/dist/Card/Card.js +1 -1
  69. package/dist/Carousel/Carousel.d.ts +54 -3
  70. package/dist/Carousel/Carousel.d.ts.map +1 -1
  71. package/dist/Carousel/Carousel.js +90 -27
  72. package/dist/Carousel/index.d.ts +1 -1
  73. package/dist/Carousel/index.d.ts.map +1 -1
  74. package/dist/Center/Center.d.ts +21 -4
  75. package/dist/Center/Center.d.ts.map +1 -1
  76. package/dist/Center/Center.js +11 -3
  77. package/dist/Chat/ChatComposer.d.ts +1 -1
  78. package/dist/Chat/ChatComposer.js +9 -9
  79. package/dist/Chat/ChatComposerDrawer.d.ts +1 -1
  80. package/dist/Chat/ChatComposerDrawer.js +5 -5
  81. package/dist/Chat/ChatComposerInput.d.ts +1 -1
  82. package/dist/Chat/ChatComposerInput.js +1 -1
  83. package/dist/Chat/ChatDictationButton.d.ts +1 -1
  84. package/dist/Chat/ChatDictationButton.js +1 -1
  85. package/dist/Chat/ChatLayout.d.ts +8 -1
  86. package/dist/Chat/ChatLayout.d.ts.map +1 -1
  87. package/dist/Chat/ChatLayout.js +15 -4
  88. package/dist/Chat/ChatLayoutScrollButton.d.ts +1 -1
  89. package/dist/Chat/ChatLayoutScrollButton.js +1 -1
  90. package/dist/Chat/ChatMessage.d.ts +1 -1
  91. package/dist/Chat/ChatMessage.js +1 -1
  92. package/dist/Chat/ChatMessageBubble.d.ts +1 -1
  93. package/dist/Chat/ChatMessageBubble.js +1 -1
  94. package/dist/Chat/ChatMessageList.d.ts +1 -1
  95. package/dist/Chat/ChatMessageList.js +1 -1
  96. package/dist/Chat/ChatSendButton.d.ts.map +1 -1
  97. package/dist/Chat/ChatSendButton.js +4 -2
  98. package/dist/Chat/ChatSystemMessage.d.ts +1 -1
  99. package/dist/Chat/ChatSystemMessage.js +1 -1
  100. package/dist/Chat/ChatTokenizedText.d.ts +1 -1
  101. package/dist/Chat/ChatTokenizedText.js +1 -1
  102. package/dist/CheckboxInput/CheckboxInput.d.ts +1 -1
  103. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  104. package/dist/CheckboxInput/CheckboxInput.js +3 -3
  105. package/dist/CheckboxList/CheckboxList.d.ts +1 -1
  106. package/dist/CheckboxList/CheckboxList.js +1 -1
  107. package/dist/CheckboxList/CheckboxListItem.d.ts +1 -1
  108. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  109. package/dist/CheckboxList/CheckboxListItem.js +20 -5
  110. package/dist/Citation/Citation.d.ts +1 -1
  111. package/dist/Citation/Citation.js +1 -1
  112. package/dist/ClickableCard/ClickableCard.d.ts +3 -3
  113. package/dist/ClickableCard/ClickableCard.js +3 -3
  114. package/dist/Code/Code.d.ts +2 -2
  115. package/dist/Code/Code.js +2 -2
  116. package/dist/CodeBlock/CodeBlock.js +2 -2
  117. package/dist/Collapsible/Collapsible.d.ts +1 -1
  118. package/dist/Collapsible/Collapsible.js +3 -3
  119. package/dist/Collapsible/CollapsibleGroup.d.ts +1 -1
  120. package/dist/Collapsible/CollapsibleGroup.js +1 -1
  121. package/dist/Collapsible/CollapsibleGroupContext.js +1 -1
  122. package/dist/CommandPalette/CommandPalette.d.ts +1 -1
  123. package/dist/CommandPalette/CommandPalette.js +1 -1
  124. package/dist/CommandPalette/CommandPaletteEmpty.js +1 -1
  125. package/dist/CommandPalette/CommandPaletteFooter.js +1 -1
  126. package/dist/CommandPalette/CommandPaletteGroup.js +1 -1
  127. package/dist/CommandPalette/CommandPaletteInput.d.ts +2 -2
  128. package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
  129. package/dist/CommandPalette/CommandPaletteInput.js +4 -2
  130. package/dist/CommandPalette/CommandPaletteItem.d.ts +1 -1
  131. package/dist/CommandPalette/CommandPaletteItem.js +1 -1
  132. package/dist/CommandPalette/CommandPaletteList.js +1 -1
  133. package/dist/ComplexSelector/ComplexSelector.d.ts +108 -0
  134. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -0
  135. package/dist/ComplexSelector/ComplexSelector.js +316 -0
  136. package/dist/ComplexSelector/index.d.ts +7 -0
  137. package/dist/ComplexSelector/index.d.ts.map +1 -0
  138. package/dist/ComplexSelector/index.js +10 -0
  139. package/dist/ContextMenu/ContextMenu.d.ts +2 -2
  140. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  141. package/dist/ContextMenu/ContextMenu.js +24 -6
  142. package/dist/DateInput/DateInput.d.ts +9 -2
  143. package/dist/DateInput/DateInput.d.ts.map +1 -1
  144. package/dist/DateInput/DateInput.js +6 -3
  145. package/dist/DateRangeInput/DateRangeInput.d.ts +9 -2
  146. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  147. package/dist/DateRangeInput/DateRangeInput.js +6 -3
  148. package/dist/DateTimeInput/DateTimeInput.d.ts +9 -1
  149. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  150. package/dist/DateTimeInput/DateTimeInput.js +6 -3
  151. package/dist/Dialog/Dialog.d.ts +33 -24
  152. package/dist/Dialog/Dialog.d.ts.map +1 -1
  153. package/dist/Dialog/Dialog.js +47 -31
  154. package/dist/Dialog/DialogHeader.d.ts +1 -1
  155. package/dist/Dialog/DialogHeader.js +1 -1
  156. package/dist/Dialog/index.d.ts +18 -1
  157. package/dist/Dialog/index.d.ts.map +1 -1
  158. package/dist/Dialog/index.js +14 -0
  159. package/dist/Divider/Divider.d.ts +2 -18
  160. package/dist/Divider/Divider.d.ts.map +1 -1
  161. package/dist/Divider/Divider.js +1 -15
  162. package/dist/Divider/index.d.ts +18 -1
  163. package/dist/Divider/index.d.ts.map +1 -1
  164. package/dist/Divider/index.js +14 -0
  165. package/dist/DropdownMenu/DropdownMenu.d.ts +9 -3
  166. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  167. package/dist/DropdownMenu/DropdownMenu.js +23 -19
  168. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +18 -12
  169. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
  170. package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +38 -63
  171. package/dist/DropdownMenu/DropdownMenuItem.d.ts +1 -1
  172. package/dist/DropdownMenu/DropdownMenuItem.js +1 -1
  173. package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts +8 -11
  174. package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts.map +1 -1
  175. package/dist/DropdownMenu/DropdownMenuRadioGroup.js +3 -1
  176. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts +1 -1
  177. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
  178. package/dist/DropdownMenu/DropdownMenuRadioItem.js +6 -2
  179. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +1 -1
  180. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
  181. package/dist/DropdownMenu/DropdownMenuSubMenu.js +14 -6
  182. package/dist/DropdownMenu/menuItemHover.d.ts +1 -0
  183. package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -1
  184. package/dist/DropdownMenu/menuItemHover.js +1 -0
  185. package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
  186. package/dist/DropdownMenu/renderDropdownItems.js +6 -4
  187. package/dist/EmptyState/EmptyState.d.ts +1 -1
  188. package/dist/EmptyState/EmptyState.js +1 -1
  189. package/dist/Field/Field.d.ts +1 -1
  190. package/dist/Field/Field.js +1 -1
  191. package/dist/Field/FieldLabel.d.ts +4 -3
  192. package/dist/Field/FieldLabel.d.ts.map +1 -1
  193. package/dist/Field/FieldLabel.js +48 -5
  194. package/dist/FieldStatus/FieldStatus.d.ts +1 -18
  195. package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
  196. package/dist/FieldStatus/FieldStatus.js +13 -17
  197. package/dist/FieldStatus/index.d.ts +19 -1
  198. package/dist/FieldStatus/index.d.ts.map +1 -1
  199. package/dist/FieldStatus/index.js +14 -0
  200. package/dist/FileInput/FileInput.js +1 -1
  201. package/dist/FormLayout/FormLayout.d.ts +1 -1
  202. package/dist/FormLayout/FormLayout.d.ts.map +1 -1
  203. package/dist/FormLayout/FormLayout.js +1 -1
  204. package/dist/Grid/Grid.d.ts +2 -10
  205. package/dist/Grid/Grid.d.ts.map +1 -1
  206. package/dist/Grid/Grid.js +1 -10
  207. package/dist/Grid/GridSpan.d.ts +1 -1
  208. package/dist/Grid/GridSpan.js +1 -1
  209. package/dist/HStack/HStack.d.ts +1 -1
  210. package/dist/HStack/HStack.js +1 -1
  211. package/dist/Heading/Heading.d.ts +2 -2
  212. package/dist/Heading/Heading.d.ts.map +1 -1
  213. package/dist/Heading/Heading.js +5 -4
  214. package/dist/HoverCard/HoverCard.d.ts +1 -1
  215. package/dist/HoverCard/HoverCard.js +1 -1
  216. package/dist/Icon/Icon.d.ts +1 -1
  217. package/dist/Icon/Icon.d.ts.map +1 -1
  218. package/dist/Icon/Icon.js +4 -2
  219. package/dist/Icon/defaultIcons.d.ts.map +1 -1
  220. package/dist/Icon/defaultIcons.js +14 -0
  221. package/dist/Icon/globalIconRegistry.d.ts +48 -6
  222. package/dist/Icon/globalIconRegistry.d.ts.map +1 -1
  223. package/dist/Icon/globalIconRegistry.js +74 -7
  224. package/dist/Icon/index.d.ts +4 -3
  225. package/dist/Icon/index.d.ts.map +1 -1
  226. package/dist/Icon/index.js +2 -1
  227. package/dist/Icon/useIcon.d.ts +14 -0
  228. package/dist/Icon/useIcon.d.ts.map +1 -0
  229. package/dist/Icon/useIcon.js +21 -0
  230. package/dist/IconButton/IconButton.d.ts +1 -1
  231. package/dist/IconButton/IconButton.js +1 -1
  232. package/dist/InputGroup/InputGroup.d.ts +1 -1
  233. package/dist/InputGroup/InputGroup.js +1 -1
  234. package/dist/InputGroup/InputGroupText.d.ts +1 -1
  235. package/dist/InputGroup/InputGroupText.js +1 -1
  236. package/dist/Item/Item.d.ts +17 -4
  237. package/dist/Item/Item.d.ts.map +1 -1
  238. package/dist/Item/Item.js +32 -7
  239. package/dist/Kbd/Kbd.d.ts +1 -1
  240. package/dist/Kbd/Kbd.js +1 -1
  241. package/dist/Layout/Layout.d.ts +1 -1
  242. package/dist/Layout/Layout.js +1 -1
  243. package/dist/Layout/LayoutContent.d.ts +1 -1
  244. package/dist/Layout/LayoutContent.js +1 -1
  245. package/dist/Layout/LayoutFooter.d.ts +1 -1
  246. package/dist/Layout/LayoutFooter.js +1 -1
  247. package/dist/Layout/LayoutHeader.d.ts +1 -1
  248. package/dist/Layout/LayoutHeader.js +1 -1
  249. package/dist/Layout/LayoutPanel.d.ts +1 -1
  250. package/dist/Layout/LayoutPanel.js +1 -1
  251. package/dist/Lightbox/Lightbox.d.ts +6 -4
  252. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  253. package/dist/Lightbox/Lightbox.js +173 -79
  254. package/dist/Link/Link.d.ts +1 -1
  255. package/dist/Link/Link.js +1 -1
  256. package/dist/Link/LinkProvider.d.ts +2 -2
  257. package/dist/Link/LinkProvider.js +2 -2
  258. package/dist/List/List.d.ts +1 -1
  259. package/dist/List/List.js +1 -1
  260. package/dist/List/ListItem.d.ts +12 -2
  261. package/dist/List/ListItem.d.ts.map +1 -1
  262. package/dist/List/ListItem.js +3 -1
  263. package/dist/Markdown/Markdown.d.ts.map +1 -1
  264. package/dist/Markdown/Markdown.js +35 -13
  265. package/dist/MetadataList/MetadataList.d.ts +2 -2
  266. package/dist/MetadataList/MetadataList.d.ts.map +1 -1
  267. package/dist/MetadataList/MetadataList.js +38 -12
  268. package/dist/MetadataList/MetadataListItem.d.ts +1 -1
  269. package/dist/MetadataList/MetadataListItem.js +1 -1
  270. package/dist/MobileNav/MobileNav.d.ts +1 -1
  271. package/dist/MobileNav/MobileNav.js +9 -9
  272. package/dist/MoreMenu/MoreMenu.d.ts +1 -1
  273. package/dist/MoreMenu/MoreMenu.js +3 -3
  274. package/dist/MultiSelector/MultiSelector.d.ts +13 -4
  275. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  276. package/dist/MultiSelector/MultiSelector.js +118 -24
  277. package/dist/NavIcon/NavIcon.d.ts +1 -1
  278. package/dist/NavIcon/NavIcon.js +1 -1
  279. package/dist/NavMenu/index.d.ts +0 -2
  280. package/dist/NavMenu/index.d.ts.map +1 -1
  281. package/dist/NavMenu/index.js +1 -3
  282. package/dist/NumberInput/NumberInput.d.ts +1 -1
  283. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  284. package/dist/NumberInput/NumberInput.js +18 -6
  285. package/dist/Outline/Outline.js +1 -1
  286. package/dist/OverflowList/OverflowList.d.ts +1 -1
  287. package/dist/OverflowList/OverflowList.js +1 -1
  288. package/dist/Pagination/Pagination.d.ts +26 -21
  289. package/dist/Pagination/Pagination.d.ts.map +1 -1
  290. package/dist/Pagination/Pagination.js +174 -52
  291. package/dist/Pagination/index.d.ts +22 -1
  292. package/dist/Pagination/index.d.ts.map +1 -1
  293. package/dist/Pagination/index.js +14 -0
  294. package/dist/Popover/Popover.d.ts +20 -3
  295. package/dist/Popover/Popover.d.ts.map +1 -1
  296. package/dist/Popover/Popover.js +5 -1
  297. package/dist/Popover/usePopover.d.ts.map +1 -1
  298. package/dist/Popover/usePopover.js +14 -3
  299. package/dist/PowerSearch/PowerSearch.d.ts +1 -1
  300. package/dist/PowerSearch/PowerSearch.js +1 -1
  301. package/dist/ProgressBar/ProgressBar.d.ts +56 -22
  302. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  303. package/dist/ProgressBar/ProgressBar.js +169 -22
  304. package/dist/ProgressBar/ProgressBarMarkTooltip.d.ts +27 -0
  305. package/dist/ProgressBar/ProgressBarMarkTooltip.d.ts.map +1 -0
  306. package/dist/ProgressBar/ProgressBarMarkTooltip.js +35 -0
  307. package/dist/ProgressBar/index.d.ts +21 -1
  308. package/dist/ProgressBar/index.d.ts.map +1 -1
  309. package/dist/ProgressBar/index.js +14 -0
  310. package/dist/RadioList/RadioList.d.ts +1 -1
  311. package/dist/RadioList/RadioList.js +1 -1
  312. package/dist/RadioList/RadioListItem.d.ts +1 -1
  313. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  314. package/dist/RadioList/RadioListItem.js +2 -2
  315. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  316. package/dist/Resizable/ResizeHandle.js +15 -11
  317. package/dist/Section/Section.d.ts +2 -19
  318. package/dist/Section/Section.d.ts.map +1 -1
  319. package/dist/Section/Section.js +1 -15
  320. package/dist/Section/index.d.ts +19 -1
  321. package/dist/Section/index.d.ts.map +1 -1
  322. package/dist/Section/index.js +14 -0
  323. package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
  324. package/dist/SegmentedControl/SegmentedControl.js +1 -1
  325. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  326. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  327. package/dist/SegmentedControl/SegmentedControlItem.js +4 -3
  328. package/dist/SelectableCard/SelectableCard.d.ts +4 -3
  329. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  330. package/dist/SelectableCard/SelectableCard.js +15 -3
  331. package/dist/Selector/Selector.d.ts +14 -4
  332. package/dist/Selector/Selector.d.ts.map +1 -1
  333. package/dist/Selector/Selector.js +137 -28
  334. package/dist/Selector/hooks.d.ts +4 -4
  335. package/dist/Selector/hooks.d.ts.map +1 -1
  336. package/dist/Selector/hooks.js +38 -19
  337. package/dist/SideNav/SideNav.d.ts +1 -1
  338. package/dist/SideNav/SideNav.js +1 -1
  339. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  340. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  341. package/dist/SideNav/SideNavCollapseButton.js +4 -3
  342. package/dist/SideNav/SideNavHeading.d.ts +1 -1
  343. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  344. package/dist/SideNav/SideNavHeading.js +8 -7
  345. package/dist/SideNav/SideNavItem.d.ts +2 -2
  346. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  347. package/dist/SideNav/SideNavItem.js +6 -7
  348. package/dist/SideNav/SideNavSection.d.ts +1 -1
  349. package/dist/SideNav/SideNavSection.js +1 -1
  350. package/dist/Skeleton/Skeleton.d.ts +1 -1
  351. package/dist/Skeleton/Skeleton.d.ts.map +1 -1
  352. package/dist/Skeleton/Skeleton.js +3 -3
  353. package/dist/Slider/Slider.d.ts.map +1 -1
  354. package/dist/Slider/Slider.js +78 -68
  355. package/dist/Spinner/Spinner.d.ts +1 -1
  356. package/dist/Spinner/Spinner.js +1 -1
  357. package/dist/Stack/Stack.d.ts +1 -1
  358. package/dist/Stack/Stack.js +1 -1
  359. package/dist/Stack/StackItem.d.ts +1 -1
  360. package/dist/Stack/StackItem.js +1 -1
  361. package/dist/Stack/stack.stylex.d.ts +3 -3
  362. package/dist/StatusDot/StatusDot.d.ts +1 -20
  363. package/dist/StatusDot/StatusDot.d.ts.map +1 -1
  364. package/dist/StatusDot/StatusDot.js +2 -17
  365. package/dist/StatusDot/index.d.ts +21 -1
  366. package/dist/StatusDot/index.d.ts.map +1 -1
  367. package/dist/StatusDot/index.js +14 -0
  368. package/dist/Switch/Switch.d.ts +2 -6
  369. package/dist/Switch/Switch.d.ts.map +1 -1
  370. package/dist/Switch/Switch.js +28 -20
  371. package/dist/TabList/Tab.d.ts +1 -1
  372. package/dist/TabList/Tab.js +1 -1
  373. package/dist/TabList/TabList.d.ts +1 -1
  374. package/dist/TabList/TabList.js +1 -1
  375. package/dist/TabList/TabMenu.d.ts +1 -1
  376. package/dist/TabList/TabMenu.d.ts.map +1 -1
  377. package/dist/TabList/TabMenu.js +11 -3
  378. package/dist/Table/BaseTable.d.ts +1 -1
  379. package/dist/Table/BaseTable.d.ts.map +1 -1
  380. package/dist/Table/BaseTable.js +4 -7
  381. package/dist/Table/Table.d.ts +1 -1
  382. package/dist/Table/Table.js +1 -1
  383. package/dist/Table/TableCell.d.ts +1 -1
  384. package/dist/Table/TableCell.js +4 -2
  385. package/dist/Table/TableHeaderCell.d.ts +1 -1
  386. package/dist/Table/TableHeaderCell.js +4 -2
  387. package/dist/Table/TableRow.d.ts +1 -1
  388. package/dist/Table/TableRow.js +1 -1
  389. package/dist/Table/index.d.ts +1 -1
  390. package/dist/Table/index.d.ts.map +1 -1
  391. package/dist/Table/index.js +1 -1
  392. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +1 -1
  393. package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +1 -1
  394. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +18 -3
  395. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  396. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +27 -11
  397. package/dist/Table/plugins/tree/useTableTreeData.d.ts +11 -0
  398. package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
  399. package/dist/Table/plugins/tree/useTableTreeData.js +36 -2
  400. package/dist/Table/types.d.ts +0 -9
  401. package/dist/Table/types.d.ts.map +1 -1
  402. package/dist/Text/Text.d.ts +11 -2
  403. package/dist/Text/Text.d.ts.map +1 -1
  404. package/dist/Text/Text.js +26 -3
  405. package/dist/Text/index.d.ts +31 -1
  406. package/dist/Text/index.d.ts.map +1 -1
  407. package/dist/Text/index.js +23 -0
  408. package/dist/TextArea/TextArea.d.ts +1 -1
  409. package/dist/TextArea/TextArea.d.ts.map +1 -1
  410. package/dist/TextArea/TextArea.js +109 -40
  411. package/dist/TextInput/TextInput.d.ts +1 -1
  412. package/dist/TextInput/TextInput.d.ts.map +1 -1
  413. package/dist/TextInput/TextInput.js +3 -2
  414. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  415. package/dist/Thumbnail/Thumbnail.js +52 -46
  416. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  417. package/dist/TimeInput/TimeInput.js +3 -2
  418. package/dist/Timestamp/Timestamp.d.ts +26 -12
  419. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  420. package/dist/Timestamp/Timestamp.js +128 -65
  421. package/dist/Timestamp/TimestampHoverCard.d.ts +45 -0
  422. package/dist/Timestamp/TimestampHoverCard.d.ts.map +1 -0
  423. package/dist/Timestamp/TimestampHoverCard.js +228 -0
  424. package/dist/Timestamp/formatInstant.d.ts +3 -3
  425. package/dist/Timestamp/formatInstant.d.ts.map +1 -1
  426. package/dist/Timestamp/formatInstant.js +7 -2
  427. package/dist/Timestamp/tooltipEntries.d.ts +17 -2
  428. package/dist/Timestamp/tooltipEntries.d.ts.map +1 -1
  429. package/dist/Timestamp/tooltipEntries.js +4 -2
  430. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  431. package/dist/Toast/ToastViewport.js +61 -9
  432. package/dist/ToggleButton/ToggleButton.d.ts +1 -1
  433. package/dist/ToggleButton/ToggleButton.d.ts.map +1 -1
  434. package/dist/ToggleButton/ToggleButton.js +4 -2
  435. package/dist/ToggleButton/ToggleButtonGroup.d.ts +1 -1
  436. package/dist/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
  437. package/dist/ToggleButton/ToggleButtonGroup.js +1 -1
  438. package/dist/Token/Token.d.ts +6 -28
  439. package/dist/Token/Token.d.ts.map +1 -1
  440. package/dist/Token/Token.js +69 -58
  441. package/dist/Token/TokenLink.d.ts +62 -0
  442. package/dist/Token/TokenLink.d.ts.map +1 -0
  443. package/dist/Token/TokenLink.js +76 -0
  444. package/dist/Token/index.d.ts +27 -1
  445. package/dist/Token/index.d.ts.map +1 -1
  446. package/dist/Token/index.js +14 -0
  447. package/dist/Tokenizer/Tokenizer.d.ts +1 -1
  448. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  449. package/dist/Tokenizer/Tokenizer.js +5 -3
  450. package/dist/Toolbar/Toolbar.d.ts +1 -1
  451. package/dist/Toolbar/Toolbar.js +1 -1
  452. package/dist/Tooltip/Tooltip.d.ts +1 -1
  453. package/dist/Tooltip/Tooltip.js +1 -1
  454. package/dist/TopNav/TopNav.d.ts +1 -1
  455. package/dist/TopNav/TopNav.d.ts.map +1 -1
  456. package/dist/TopNav/TopNav.js +7 -6
  457. package/dist/TopNav/TopNavHeading.d.ts +2 -8
  458. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  459. package/dist/TopNav/TopNavHeading.js +8 -10
  460. package/dist/TopNav/TopNavItem.d.ts +1 -1
  461. package/dist/TopNav/TopNavItem.js +1 -1
  462. package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
  463. package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
  464. package/dist/TopNav/TopNavMegaMenu.js +27 -16
  465. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
  466. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +1 -1
  467. package/dist/TopNav/TopNavMegaMenuItem.d.ts +1 -1
  468. package/dist/TopNav/TopNavMegaMenuItem.js +1 -1
  469. package/dist/TopNav/TopNavMenu.d.ts +1 -1
  470. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  471. package/dist/TopNav/TopNavMenu.js +5 -4
  472. package/dist/TreeList/TreeList.d.ts +1 -1
  473. package/dist/TreeList/TreeList.js +1 -1
  474. package/dist/TreeList/TreeListBranches.js +1 -1
  475. package/dist/TreeList/TreeListItem.d.ts +1 -1
  476. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  477. package/dist/TreeList/TreeListItem.js +4 -3
  478. package/dist/TreeList/TreeListTypes.d.ts +1 -17
  479. package/dist/TreeList/TreeListTypes.d.ts.map +1 -1
  480. package/dist/TreeList/index.d.ts +18 -1
  481. package/dist/TreeList/index.d.ts.map +1 -1
  482. package/dist/TreeList/index.js +14 -0
  483. package/dist/Typeahead/BaseTypeahead.d.ts +10 -1
  484. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  485. package/dist/Typeahead/BaseTypeahead.js +3 -1
  486. package/dist/Typeahead/Typeahead.d.ts +1 -1
  487. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  488. package/dist/Typeahead/Typeahead.js +9 -2
  489. package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
  490. package/dist/Typeahead/TypeaheadItem.js +1 -1
  491. package/dist/VStack/VStack.d.ts +1 -1
  492. package/dist/VStack/VStack.js +1 -1
  493. package/dist/VisuallyHidden/VisuallyHidden.d.ts +1 -1
  494. package/dist/VisuallyHidden/VisuallyHidden.js +1 -1
  495. package/dist/astryx.css +117 -37
  496. package/dist/astryx.umd.js +51 -55
  497. package/dist/astryx.umd.js.map +4 -4
  498. package/dist/hooks/containerReveal.pool.stylex.d.ts +303 -0
  499. package/dist/hooks/containerReveal.pool.stylex.d.ts.map +1 -0
  500. package/dist/hooks/containerReveal.pool.stylex.js +292 -0
  501. package/dist/hooks/index.d.ts +2 -0
  502. package/dist/hooks/index.d.ts.map +1 -1
  503. package/dist/hooks/index.js +2 -1
  504. package/dist/hooks/useContainerReveal.d.ts +83 -0
  505. package/dist/hooks/useContainerReveal.d.ts.map +1 -0
  506. package/dist/hooks/useContainerReveal.js +123 -0
  507. package/dist/hooks/useGridFocus.d.ts +8 -6
  508. package/dist/hooks/useGridFocus.d.ts.map +1 -1
  509. package/dist/hooks/useInputContainer.d.ts.map +1 -1
  510. package/dist/hooks/useInputContainer.js +29 -1
  511. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  512. package/dist/hooks/useInputStatusIcon.js +11 -0
  513. package/dist/hooks/useKeyboardHint.d.ts +2 -2
  514. package/dist/hooks/useKeyboardHint.d.ts.map +1 -1
  515. package/dist/hooks/useKeyboardHint.js +5 -3
  516. package/dist/hooks/useListFocus.d.ts +8 -7
  517. package/dist/hooks/useListFocus.d.ts.map +1 -1
  518. package/dist/hooks/useLongPress.d.ts.map +1 -1
  519. package/dist/hooks/useLongPress.js +12 -2
  520. package/dist/hooks/useTreeFocus.d.ts.map +1 -1
  521. package/dist/hooks/useTreeFocus.js +13 -2
  522. package/dist/i18n/InternationalizationProvider.d.ts +6 -0
  523. package/dist/i18n/InternationalizationProvider.d.ts.map +1 -1
  524. package/dist/i18n/useDirection.d.ts.map +1 -1
  525. package/dist/i18n/useDirection.js +6 -3
  526. package/dist/index.d.ts +2 -1
  527. package/dist/index.d.ts.map +1 -1
  528. package/dist/index.js +3 -3
  529. package/dist/theme/Theme.d.ts.map +1 -1
  530. package/dist/theme/Theme.js +2 -7
  531. package/dist/theme/contrast.d.ts +45 -0
  532. package/dist/theme/contrast.d.ts.map +1 -0
  533. package/dist/theme/contrast.js +88 -0
  534. package/dist/theme/defineTheme.d.ts +9 -3
  535. package/dist/theme/defineTheme.d.ts.map +1 -1
  536. package/dist/theme/defineTheme.js +6 -4
  537. package/dist/theme/derivedVarRegistry.d.ts +8 -0
  538. package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
  539. package/dist/theme/derivedVarRegistry.js +5 -13
  540. package/dist/theme/expandColorScale.d.ts +32 -3
  541. package/dist/theme/expandColorScale.d.ts.map +1 -1
  542. package/dist/theme/expandColorScale.js +102 -13
  543. package/dist/theme/generateThemeRules.d.ts +0 -6
  544. package/dist/theme/generateThemeRules.d.ts.map +1 -1
  545. package/dist/theme/generateThemeRules.js +11 -15
  546. package/dist/theme/index.d.ts +9 -7
  547. package/dist/theme/index.d.ts.map +1 -1
  548. package/dist/theme/index.js +4 -3
  549. package/dist/theme/themeRegistry.d.ts +32 -0
  550. package/dist/theme/themeRegistry.d.ts.map +1 -0
  551. package/dist/theme/themeRegistry.js +49 -0
  552. package/dist/theme/tokens.stylex.d.ts +0 -17
  553. package/dist/theme/tokens.stylex.d.ts.map +1 -1
  554. package/dist/theme/tokens.stylex.js +0 -22
  555. package/dist/theme/types.d.ts +10 -2
  556. package/dist/theme/types.d.ts.map +1 -1
  557. package/dist/theme/useTheme.d.ts +9 -0
  558. package/dist/theme/useTheme.d.ts.map +1 -1
  559. package/dist/theme/useTheme.js +82 -27
  560. package/dist/utils/rtlStyles.d.ts +23 -2
  561. package/dist/utils/rtlStyles.d.ts.map +1 -1
  562. package/dist/utils/rtlStyles.js +28 -3
  563. package/groups.doc.mjs +2 -2
  564. package/locales/en.json +124 -0
  565. package/locales/pseudo.json +93 -0
  566. package/package.json +9 -13
  567. package/src/AlertDialog/AlertDialog.doc.mjs +3 -3
  568. package/src/AlertDialog/AlertDialog.tsx +1 -1
  569. package/src/AlertDialog/useImperativeAlertDialog.doc.mjs +1 -1
  570. package/src/AppShell/AppShell.doc.mjs +3 -3
  571. package/src/AppShell/AppShell.test.tsx +55 -0
  572. package/src/AppShell/AppShell.tsx +27 -22
  573. package/src/AppShell/index.ts +20 -1
  574. package/src/AppShell/useAppShellMobile.doc.mjs +2 -2
  575. package/src/AspectRatio/AspectRatio.doc.mjs +3 -3
  576. package/src/AspectRatio/AspectRatio.tsx +1 -1
  577. package/src/Avatar/Avatar.doc.mjs +4 -15
  578. package/src/Avatar/Avatar.test.tsx +33 -8
  579. package/src/Avatar/Avatar.tsx +58 -25
  580. package/src/Avatar/AvatarStatusDot.doc.mjs +1 -1
  581. package/src/Avatar/AvatarStatusDot.tsx +2 -27
  582. package/src/Avatar/index.ts +26 -1
  583. package/src/AvatarGroup/AvatarGroup.doc.mjs +3 -3
  584. package/src/AvatarGroup/AvatarGroup.test.tsx +21 -1
  585. package/src/AvatarGroup/AvatarGroup.tsx +3 -7
  586. package/src/AvatarGroup/AvatarGroupOverflow.doc.mjs +1 -1
  587. package/src/AvatarGroup/AvatarGroupOverflow.tsx +5 -3
  588. package/src/Badge/Badge.doc.mjs +3 -3
  589. package/src/Badge/Badge.tsx +2 -31
  590. package/src/Badge/index.ts +32 -6
  591. package/src/Banner/Banner.doc.mjs +3 -3
  592. package/src/Banner/Banner.tsx +8 -45
  593. package/src/Banner/index.ts +39 -7
  594. package/src/Blockquote/Blockquote.doc.mjs +3 -3
  595. package/src/Blockquote/Blockquote.tsx +1 -1
  596. package/src/Breadcrumbs/BreadcrumbItem.doc.mjs +1 -1
  597. package/src/Breadcrumbs/BreadcrumbItem.tsx +5 -3
  598. package/src/Breadcrumbs/Breadcrumbs.doc.mjs +3 -3
  599. package/src/Breadcrumbs/Breadcrumbs.test.tsx +1 -1
  600. package/src/Breadcrumbs/Breadcrumbs.tsx +2 -19
  601. package/src/Breadcrumbs/index.ts +19 -5
  602. package/src/Button/Button.doc.mjs +3 -3
  603. package/src/Button/Button.test.tsx +16 -0
  604. package/src/Button/Button.tsx +6 -23
  605. package/src/Button/index.ts +22 -7
  606. package/src/ButtonGroup/ButtonGroup.doc.mjs +3 -3
  607. package/src/ButtonGroup/ButtonGroup.tsx +1 -1
  608. package/src/Calendar/Calendar.doc.mjs +3 -3
  609. package/src/Calendar/Calendar.test.tsx +22 -6
  610. package/src/Calendar/Calendar.tsx +1 -1
  611. package/src/Calendar/index.ts +1 -6
  612. package/src/Calendar/styles.ts +2 -2
  613. package/src/Calendar/utils.ts +0 -11
  614. package/src/Card/Card.doc.mjs +3 -3
  615. package/src/Card/Card.tsx +1 -1
  616. package/src/Carousel/Carousel.doc.mjs +10 -3
  617. package/src/Carousel/Carousel.test.tsx +232 -1
  618. package/src/Carousel/Carousel.tsx +154 -27
  619. package/src/Carousel/index.ts +1 -1
  620. package/src/Center/Center.doc.mjs +41 -3
  621. package/src/Center/Center.test.tsx +75 -0
  622. package/src/Center/Center.tsx +38 -3
  623. package/src/Chat/Chat.doc.mjs +3 -3
  624. package/src/Chat/ChatComposer.doc.mjs +1 -1
  625. package/src/Chat/ChatComposer.tsx +5 -5
  626. package/src/Chat/ChatComposerDrawer.doc.mjs +1 -1
  627. package/src/Chat/ChatComposerDrawer.tsx +5 -5
  628. package/src/Chat/ChatComposerInput.doc.mjs +1 -1
  629. package/src/Chat/ChatComposerInput.tsx +1 -1
  630. package/src/Chat/ChatComposerTokenElement.doc.mjs +1 -1
  631. package/src/Chat/ChatDictationButton.doc.mjs +3 -3
  632. package/src/Chat/ChatDictationButton.tsx +1 -1
  633. package/src/Chat/ChatLayout.doc.mjs +1 -1
  634. package/src/Chat/ChatLayout.test.tsx +57 -0
  635. package/src/Chat/ChatLayout.tsx +23 -2
  636. package/src/Chat/ChatLayoutScrollButton.doc.mjs +1 -1
  637. package/src/Chat/ChatLayoutScrollButton.tsx +1 -1
  638. package/src/Chat/ChatMessage.doc.mjs +1 -1
  639. package/src/Chat/ChatMessage.tsx +1 -1
  640. package/src/Chat/ChatMessageBubble.doc.mjs +1 -1
  641. package/src/Chat/ChatMessageBubble.tsx +1 -1
  642. package/src/Chat/ChatMessageList.doc.mjs +1 -1
  643. package/src/Chat/ChatMessageList.tsx +1 -1
  644. package/src/Chat/ChatMessageMetadata.doc.mjs +1 -1
  645. package/src/Chat/ChatSendButton.doc.mjs +1 -1
  646. package/src/Chat/ChatSendButton.tsx +5 -3
  647. package/src/Chat/ChatSystemMessage.doc.mjs +1 -1
  648. package/src/Chat/ChatSystemMessage.tsx +1 -1
  649. package/src/Chat/ChatTokenizedText.doc.mjs +1 -1
  650. package/src/Chat/ChatTokenizedText.tsx +1 -1
  651. package/src/Chat/ChatToolCalls.doc.mjs +3 -3
  652. package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
  653. package/src/CheckboxInput/CheckboxInput.test.tsx +56 -0
  654. package/src/CheckboxInput/CheckboxInput.tsx +18 -3
  655. package/src/CheckboxList/CheckboxList.doc.mjs +3 -3
  656. package/src/CheckboxList/CheckboxList.test.tsx +94 -3
  657. package/src/CheckboxList/CheckboxList.tsx +1 -1
  658. package/src/CheckboxList/CheckboxListItem.doc.mjs +1 -1
  659. package/src/CheckboxList/CheckboxListItem.tsx +18 -11
  660. package/src/Citation/Citation.doc.mjs +2 -2
  661. package/src/Citation/Citation.tsx +1 -1
  662. package/src/ClickableCard/ClickableCard.doc.mjs +2 -2
  663. package/src/ClickableCard/ClickableCard.tsx +3 -3
  664. package/src/Code/Code.tsx +2 -2
  665. package/src/CodeBlock/Code.doc.mjs +1 -1
  666. package/src/CodeBlock/CodeBlock.doc.mjs +3 -3
  667. package/src/CodeBlock/CodeBlock.test.tsx +17 -0
  668. package/src/CodeBlock/CodeBlock.tsx +2 -2
  669. package/src/Collapsible/Collapsible.doc.mjs +3 -3
  670. package/src/Collapsible/Collapsible.tsx +3 -3
  671. package/src/Collapsible/CollapsibleGroup.doc.mjs +1 -1
  672. package/src/Collapsible/CollapsibleGroup.tsx +1 -1
  673. package/src/Collapsible/CollapsibleGroupContext.tsx +1 -1
  674. package/src/Collapsible/useCollapsible.doc.mjs +2 -2
  675. package/src/CommandPalette/CommandPalette.doc.mjs +4 -4
  676. package/src/CommandPalette/CommandPalette.tsx +1 -1
  677. package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +1 -1
  678. package/src/CommandPalette/CommandPaletteEmpty.tsx +1 -1
  679. package/src/CommandPalette/CommandPaletteFooter.doc.mjs +1 -1
  680. package/src/CommandPalette/CommandPaletteFooter.tsx +1 -1
  681. package/src/CommandPalette/CommandPaletteGroup.doc.mjs +1 -1
  682. package/src/CommandPalette/CommandPaletteGroup.test.tsx +6 -2
  683. package/src/CommandPalette/CommandPaletteGroup.tsx +1 -1
  684. package/src/CommandPalette/CommandPaletteInput.doc.mjs +1 -1
  685. package/src/CommandPalette/CommandPaletteInput.tsx +5 -1
  686. package/src/CommandPalette/CommandPaletteItem.doc.mjs +1 -1
  687. package/src/CommandPalette/CommandPaletteItem.tsx +1 -1
  688. package/src/CommandPalette/CommandPaletteList.doc.mjs +1 -1
  689. package/src/CommandPalette/CommandPaletteList.tsx +1 -1
  690. package/src/ComplexSelector/ComplexSelector.doc.mjs +220 -0
  691. package/src/ComplexSelector/ComplexSelector.test.tsx +156 -0
  692. package/src/ComplexSelector/ComplexSelector.tsx +429 -0
  693. package/src/ComplexSelector/index.ts +17 -0
  694. package/src/ContextMenu/ContextMenu.doc.mjs +3 -3
  695. package/src/ContextMenu/ContextMenu.test.tsx +17 -2
  696. package/src/ContextMenu/ContextMenu.tsx +27 -6
  697. package/src/ContextMenu/ContextMenuItem.doc.mjs +1 -1
  698. package/src/DateInput/DateInput.doc.mjs +19 -4
  699. package/src/DateInput/DateInput.test.tsx +79 -3
  700. package/src/DateInput/DateInput.tsx +23 -3
  701. package/src/DateRangeInput/DateRangeInput.doc.mjs +11 -3
  702. package/src/DateRangeInput/DateRangeInput.test.tsx +97 -2
  703. package/src/DateRangeInput/DateRangeInput.tsx +19 -2
  704. package/src/DateTimeInput/DateTimeInput.doc.mjs +19 -5
  705. package/src/DateTimeInput/DateTimeInput.test.tsx +81 -2
  706. package/src/DateTimeInput/DateTimeInput.tsx +19 -2
  707. package/src/Dialog/Dialog.doc.mjs +7 -5
  708. package/src/Dialog/Dialog.test.tsx +46 -3
  709. package/src/Dialog/Dialog.tsx +61 -44
  710. package/src/Dialog/DialogHeader.doc.mjs +1 -1
  711. package/src/Dialog/DialogHeader.tsx +1 -1
  712. package/src/Dialog/index.ts +18 -1
  713. package/src/Dialog/useImperativeDialog.doc.mjs +1 -1
  714. package/src/Divider/Divider.doc.mjs +3 -3
  715. package/src/Divider/Divider.tsx +2 -19
  716. package/src/Divider/index.ts +19 -5
  717. package/src/DropdownMenu/DropdownMenu.doc.mjs +20 -5
  718. package/src/DropdownMenu/DropdownMenu.test.tsx +122 -0
  719. package/src/DropdownMenu/DropdownMenu.tsx +31 -20
  720. package/src/DropdownMenu/DropdownMenuCheckboxItem.doc.mjs +1 -1
  721. package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +41 -64
  722. package/src/DropdownMenu/DropdownMenuItem.doc.mjs +1 -1
  723. package/src/DropdownMenu/DropdownMenuItem.tsx +1 -1
  724. package/src/DropdownMenu/DropdownMenuRadioGroup.doc.mjs +5 -13
  725. package/src/DropdownMenu/DropdownMenuRadioGroup.tsx +9 -10
  726. package/src/DropdownMenu/DropdownMenuRadioItem.doc.mjs +1 -1
  727. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +11 -2
  728. package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +84 -2
  729. package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +1 -1
  730. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +46 -1
  731. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +24 -8
  732. package/src/DropdownMenu/menuItemHover.ts +1 -0
  733. package/src/DropdownMenu/renderDropdownItems.tsx +14 -2
  734. package/src/EmptyState/EmptyState.doc.mjs +3 -3
  735. package/src/EmptyState/EmptyState.tsx +1 -1
  736. package/src/Field/Field.doc.mjs +7 -3
  737. package/src/Field/Field.tsx +1 -1
  738. package/src/Field/FieldLabel.doc.mjs +1 -1
  739. package/src/Field/FieldLabel.test.tsx +103 -0
  740. package/src/Field/FieldLabel.tsx +61 -5
  741. package/src/FieldStatus/FieldStatus.doc.mjs +3 -2
  742. package/src/FieldStatus/FieldStatus.test.tsx +61 -0
  743. package/src/FieldStatus/FieldStatus.tsx +16 -23
  744. package/src/FieldStatus/index.ts +20 -5
  745. package/src/FileInput/FileInput.doc.mjs +3 -3
  746. package/src/FileInput/FileInput.tsx +1 -1
  747. package/src/FormLayout/FormLayout.doc.mjs +3 -3
  748. package/src/FormLayout/FormLayout.tsx +2 -5
  749. package/src/Grid/Grid.doc.mjs +3 -8
  750. package/src/Grid/Grid.tsx +1 -25
  751. package/src/Grid/GridSpan.doc.mjs +1 -1
  752. package/src/Grid/GridSpan.tsx +1 -1
  753. package/src/HStack/HStack.tsx +1 -1
  754. package/src/Heading/Heading.tsx +4 -3
  755. package/src/HoverCard/HoverCard.doc.mjs +3 -3
  756. package/src/HoverCard/HoverCard.tsx +1 -1
  757. package/src/HoverCard/useHoverCard.doc.mjs +2 -2
  758. package/src/Icon/Icon.doc.mjs +7 -6
  759. package/src/Icon/Icon.test.tsx +23 -0
  760. package/src/Icon/Icon.tsx +4 -2
  761. package/src/Icon/defaultIcons.tsx +14 -0
  762. package/src/Icon/globalIconRegistry.test.tsx +87 -1
  763. package/src/Icon/globalIconRegistry.tsx +111 -9
  764. package/src/Icon/index.ts +9 -7
  765. package/src/Icon/useIcon.ts +23 -0
  766. package/src/IconButton/IconButton.doc.mjs +2 -2
  767. package/src/IconButton/IconButton.tsx +1 -1
  768. package/src/InputGroup/InputGroup.doc.mjs +2 -2
  769. package/src/InputGroup/InputGroup.tsx +1 -1
  770. package/src/InputGroup/InputGroupText.doc.mjs +1 -1
  771. package/src/InputGroup/InputGroupText.tsx +1 -1
  772. package/src/Item/Item.doc.mjs +8 -3
  773. package/src/Item/Item.test.tsx +88 -0
  774. package/src/Item/Item.tsx +58 -12
  775. package/src/Kbd/Kbd.doc.mjs +3 -3
  776. package/src/Kbd/Kbd.tsx +1 -1
  777. package/src/Layer/Layer.doc.mjs +2 -2
  778. package/src/Layer/useLayer.doc.mjs +2 -2
  779. package/src/Layout/Layout.doc.mjs +3 -3
  780. package/src/Layout/Layout.tsx +1 -1
  781. package/src/Layout/LayoutContent.doc.mjs +1 -1
  782. package/src/Layout/LayoutContent.tsx +1 -1
  783. package/src/Layout/LayoutFooter.doc.mjs +1 -1
  784. package/src/Layout/LayoutFooter.tsx +1 -1
  785. package/src/Layout/LayoutHeader.doc.mjs +1 -1
  786. package/src/Layout/LayoutHeader.tsx +1 -1
  787. package/src/Layout/LayoutPanel.doc.mjs +1 -1
  788. package/src/Layout/LayoutPanel.tsx +1 -1
  789. package/src/Lightbox/Lightbox.doc.mjs +6 -6
  790. package/src/Lightbox/Lightbox.test.tsx +211 -0
  791. package/src/Lightbox/Lightbox.tsx +152 -60
  792. package/src/Link/Link.doc.mjs +3 -3
  793. package/src/Link/Link.tsx +1 -1
  794. package/src/Link/LinkProvider.doc.mjs +2 -2
  795. package/src/Link/LinkProvider.tsx +2 -2
  796. package/src/List/List.doc.mjs +3 -3
  797. package/src/List/List.tsx +1 -1
  798. package/src/List/ListItem.doc.mjs +13 -1
  799. package/src/List/ListItem.tsx +14 -1
  800. package/src/Markdown/Markdown.doc.mjs +81 -1
  801. package/src/Markdown/Markdown.test.tsx +92 -0
  802. package/src/Markdown/Markdown.tsx +96 -68
  803. package/src/Markdown/parser.perf.test.ts +47 -35
  804. package/src/MetadataList/MetadataList.doc.mjs +3 -3
  805. package/src/MetadataList/MetadataList.test.tsx +82 -0
  806. package/src/MetadataList/MetadataList.tsx +45 -20
  807. package/src/MetadataList/MetadataListItem.doc.mjs +1 -1
  808. package/src/MetadataList/MetadataListItem.tsx +1 -1
  809. package/src/MobileNav/MobileNav.doc.mjs +3 -3
  810. package/src/MobileNav/MobileNav.tsx +4 -4
  811. package/src/MoreMenu/MoreMenu.doc.mjs +3 -3
  812. package/src/MoreMenu/MoreMenu.tsx +3 -3
  813. package/src/MultiSelector/MultiSelector.doc.mjs +35 -10
  814. package/src/MultiSelector/MultiSelector.test.tsx +303 -3
  815. package/src/MultiSelector/MultiSelector.tsx +223 -58
  816. package/src/NavIcon/NavIcon.doc.mjs +3 -3
  817. package/src/NavIcon/NavIcon.tsx +1 -1
  818. package/src/NavMenu/NavHeadingMenu.test.tsx +0 -16
  819. package/src/NavMenu/NavMenu.doc.mjs +2 -2
  820. package/src/NavMenu/index.ts +0 -4
  821. package/src/NumberInput/NumberInput.doc.mjs +5 -8
  822. package/src/NumberInput/NumberInput.test.tsx +62 -3
  823. package/src/NumberInput/NumberInput.tsx +29 -2
  824. package/src/Outline/Outline.doc.mjs +3 -3
  825. package/src/Outline/Outline.tsx +1 -1
  826. package/src/OverflowList/OverflowList.doc.mjs +3 -3
  827. package/src/OverflowList/OverflowList.tsx +1 -1
  828. package/src/Overlay/Overlay.doc.mjs +2 -2
  829. package/src/Pagination/Pagination.doc.mjs +55 -8
  830. package/src/Pagination/Pagination.test.tsx +582 -0
  831. package/src/Pagination/Pagination.tsx +247 -55
  832. package/src/Pagination/index.ts +22 -1
  833. package/src/Popover/Popover.doc.mjs +31 -3
  834. package/src/Popover/Popover.test.tsx +41 -0
  835. package/src/Popover/Popover.tsx +25 -2
  836. package/src/Popover/usePopover.doc.mjs +2 -2
  837. package/src/Popover/usePopover.tsx +10 -4
  838. package/src/PowerSearch/PowerSearch.doc.mjs +3 -3
  839. package/src/PowerSearch/PowerSearch.tsx +1 -1
  840. package/src/ProgressBar/ProgressBar.doc.mjs +24 -3
  841. package/src/ProgressBar/ProgressBar.test.tsx +523 -2
  842. package/src/ProgressBar/ProgressBar.tsx +250 -25
  843. package/src/ProgressBar/ProgressBarMarkTooltip.tsx +43 -0
  844. package/src/ProgressBar/index.ts +22 -1
  845. package/src/RadioList/RadioList.doc.mjs +3 -3
  846. package/src/RadioList/RadioList.test.tsx +26 -4
  847. package/src/RadioList/RadioList.tsx +1 -1
  848. package/src/RadioList/RadioListItem.doc.mjs +1 -1
  849. package/src/RadioList/RadioListItem.tsx +9 -2
  850. package/src/Resizable/Resizable.doc.mjs +2 -2
  851. package/src/Resizable/ResizeHandle.test.tsx +52 -3
  852. package/src/Resizable/ResizeHandle.tsx +25 -13
  853. package/src/Resizable/useResizable.doc.mjs +2 -2
  854. package/src/Section/Section.doc.mjs +3 -3
  855. package/src/Section/Section.tsx +2 -20
  856. package/src/Section/index.ts +20 -5
  857. package/src/SegmentedControl/SegmentedControl.doc.mjs +3 -3
  858. package/src/SegmentedControl/SegmentedControl.test.tsx +28 -0
  859. package/src/SegmentedControl/SegmentedControl.tsx +1 -1
  860. package/src/SegmentedControl/SegmentedControlItem.doc.mjs +1 -1
  861. package/src/SegmentedControl/SegmentedControlItem.tsx +21 -3
  862. package/src/SelectableCard/SelectableCard.doc.mjs +4 -2
  863. package/src/SelectableCard/SelectableCard.test.tsx +55 -0
  864. package/src/SelectableCard/SelectableCard.tsx +19 -3
  865. package/src/Selector/Selector.doc.mjs +29 -8
  866. package/src/Selector/Selector.test.tsx +447 -9
  867. package/src/Selector/Selector.tsx +232 -57
  868. package/src/Selector/SelectorOption.doc.mjs +1 -1
  869. package/src/Selector/hooks.ts +45 -21
  870. package/src/SideNav/SideNav.doc.mjs +3 -3
  871. package/src/SideNav/SideNav.tsx +1 -1
  872. package/src/SideNav/SideNavCollapseButton.doc.mjs +1 -1
  873. package/src/SideNav/SideNavCollapseButton.tsx +4 -3
  874. package/src/SideNav/SideNavHeading.doc.mjs +1 -1
  875. package/src/SideNav/SideNavHeading.tsx +8 -9
  876. package/src/SideNav/SideNavItem.doc.mjs +1 -1
  877. package/src/SideNav/SideNavItem.tsx +5 -6
  878. package/src/SideNav/SideNavSection.doc.mjs +1 -1
  879. package/src/SideNav/SideNavSection.tsx +1 -1
  880. package/src/Skeleton/Skeleton.doc.mjs +3 -3
  881. package/src/Skeleton/Skeleton.test.tsx +16 -0
  882. package/src/Skeleton/Skeleton.tsx +14 -2
  883. package/src/Slider/Slider.doc.mjs +3 -3
  884. package/src/Slider/Slider.tsx +9 -13
  885. package/src/Spinner/Spinner.doc.mjs +3 -3
  886. package/src/Spinner/Spinner.tsx +1 -1
  887. package/src/Stack/Stack.doc.mjs +113 -3
  888. package/src/Stack/Stack.tsx +1 -1
  889. package/src/Stack/StackItem.tsx +1 -1
  890. package/src/StatusDot/StatusDot.doc.mjs +15 -6
  891. package/src/StatusDot/StatusDot.tsx +2 -22
  892. package/src/StatusDot/index.ts +22 -5
  893. package/src/Switch/Switch.doc.mjs +5 -5
  894. package/src/Switch/Switch.test.tsx +71 -25
  895. package/src/Switch/Switch.tsx +63 -26
  896. package/src/TabList/Tab.doc.mjs +1 -1
  897. package/src/TabList/Tab.tsx +1 -1
  898. package/src/TabList/TabList.doc.mjs +3 -3
  899. package/src/TabList/TabList.test.tsx +21 -18
  900. package/src/TabList/TabList.tsx +1 -1
  901. package/src/TabList/TabMenu.doc.mjs +1 -1
  902. package/src/TabList/TabMenu.tsx +11 -3
  903. package/src/Table/BaseTable.tsx +4 -5
  904. package/src/Table/Table.doc.mjs +5 -5
  905. package/src/Table/Table.test.tsx +27 -49
  906. package/src/Table/Table.tsx +1 -1
  907. package/src/Table/TableCell.doc.mjs +1 -1
  908. package/src/Table/TableCell.tsx +2 -2
  909. package/src/Table/TableHeaderCell.doc.mjs +1 -1
  910. package/src/Table/TableHeaderCell.tsx +2 -2
  911. package/src/Table/TableRow.doc.mjs +1 -1
  912. package/src/Table/TableRow.tsx +1 -1
  913. package/src/Table/index.ts +1 -1
  914. package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +1 -1
  915. package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +19 -0
  916. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +30 -11
  917. package/src/Table/plugins/tree/useTableTreeData.test.tsx +161 -2
  918. package/src/Table/plugins/tree/useTableTreeData.tsx +54 -1
  919. package/src/Table/types.ts +0 -9
  920. package/src/Table/useTableColumnResize.doc.mjs +1 -1
  921. package/src/Table/useTableColumnSettings.doc.mjs +1 -1
  922. package/src/Table/useTableFilterState.doc.mjs +1 -1
  923. package/src/Table/useTableFiltering.doc.mjs +1 -1
  924. package/src/Table/useTableGroupedRows.doc.mjs +2 -2
  925. package/src/Table/useTablePagination.doc.mjs +1 -1
  926. package/src/Table/useTableRowExpansion.doc.mjs +57 -4
  927. package/src/Table/useTableRowIndex.doc.mjs +2 -2
  928. package/src/Table/useTableRowStatus.doc.mjs +3 -3
  929. package/src/Table/useTableSelection.doc.mjs +1 -1
  930. package/src/Table/useTableSelectionState.doc.mjs +1 -1
  931. package/src/Table/useTableSortable.doc.mjs +1 -1
  932. package/src/Table/useTableStickyColumns.doc.mjs +1 -1
  933. package/src/Table/useTableTreeData.doc.mjs +10 -1
  934. package/src/Table/useTableTreeState.doc.mjs +1 -1
  935. package/src/Text/Heading.doc.mjs +4 -4
  936. package/src/Text/Text.doc.mjs +4 -4
  937. package/src/Text/Text.test.tsx +42 -0
  938. package/src/Text/Text.tsx +26 -2
  939. package/src/Text/index.ts +32 -6
  940. package/src/TextArea/TextArea.doc.mjs +31 -7
  941. package/src/TextArea/TextArea.test.tsx +131 -7
  942. package/src/TextArea/TextArea.tsx +148 -51
  943. package/src/TextInput/TextInput.doc.mjs +5 -5
  944. package/src/TextInput/TextInput.test.tsx +22 -0
  945. package/src/TextInput/TextInput.tsx +6 -2
  946. package/src/Thumbnail/Thumbnail.doc.mjs +2 -2
  947. package/src/Thumbnail/Thumbnail.test.tsx +24 -1
  948. package/src/Thumbnail/Thumbnail.tsx +28 -35
  949. package/src/TimeInput/TimeInput.doc.mjs +5 -5
  950. package/src/TimeInput/TimeInput.test.tsx +30 -3
  951. package/src/TimeInput/TimeInput.tsx +6 -2
  952. package/src/Timestamp/Timestamp.doc.mjs +30 -24
  953. package/src/Timestamp/Timestamp.test.tsx +438 -107
  954. package/src/Timestamp/Timestamp.tsx +167 -103
  955. package/src/Timestamp/TimestampHoverCard.tsx +283 -0
  956. package/src/Timestamp/formatInstant.ts +9 -4
  957. package/src/Timestamp/tooltipEntries.test.ts +9 -0
  958. package/src/Timestamp/tooltipEntries.ts +18 -2
  959. package/src/Toast/Toast.doc.mjs +3 -3
  960. package/src/Toast/ToastViewport.test.tsx +218 -8
  961. package/src/Toast/ToastViewport.tsx +71 -12
  962. package/src/Toast/useToast.doc.mjs +2 -2
  963. package/src/ToggleButton/ToggleButton.doc.mjs +3 -3
  964. package/src/ToggleButton/ToggleButton.test.tsx +24 -0
  965. package/src/ToggleButton/ToggleButton.tsx +20 -2
  966. package/src/ToggleButton/ToggleButtonGroup.doc.mjs +1 -1
  967. package/src/ToggleButton/ToggleButtonGroup.tsx +3 -6
  968. package/src/Token/Token.doc.mjs +3 -3
  969. package/src/Token/Token.test.tsx +145 -0
  970. package/src/Token/Token.tsx +75 -61
  971. package/src/Token/TokenLink.tsx +107 -0
  972. package/src/Token/index.ts +28 -1
  973. package/src/Tokenizer/Tokenizer.doc.mjs +5 -5
  974. package/src/Tokenizer/Tokenizer.test.tsx +45 -3
  975. package/src/Tokenizer/Tokenizer.tsx +11 -3
  976. package/src/Toolbar/Toolbar.doc.mjs +3 -3
  977. package/src/Toolbar/Toolbar.tsx +1 -1
  978. package/src/Tooltip/Tooltip.doc.mjs +3 -3
  979. package/src/Tooltip/Tooltip.tsx +1 -1
  980. package/src/Tooltip/useTooltip.doc.mjs +2 -2
  981. package/src/TopNav/TopNav.doc.mjs +3 -3
  982. package/src/TopNav/TopNav.test.tsx +2 -2
  983. package/src/TopNav/TopNav.tsx +2 -4
  984. package/src/TopNav/TopNavHeading.doc.mjs +1 -12
  985. package/src/TopNav/TopNavHeading.tsx +8 -18
  986. package/src/TopNav/TopNavItem.doc.mjs +1 -1
  987. package/src/TopNav/TopNavItem.tsx +1 -1
  988. package/src/TopNav/TopNavMegaMenu.doc.mjs +1 -1
  989. package/src/TopNav/TopNavMegaMenu.tsx +35 -11
  990. package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +1 -1
  991. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +1 -1
  992. package/src/TopNav/TopNavMegaMenuItem.doc.mjs +1 -1
  993. package/src/TopNav/TopNavMegaMenuItem.tsx +1 -1
  994. package/src/TopNav/TopNavMenu.doc.mjs +1 -1
  995. package/src/TopNav/TopNavMenu.tsx +5 -4
  996. package/src/TreeList/TreeList.doc.mjs +3 -3
  997. package/src/TreeList/TreeList.test.tsx +10 -6
  998. package/src/TreeList/TreeList.tsx +1 -1
  999. package/src/TreeList/TreeListBranches.tsx +1 -1
  1000. package/src/TreeList/TreeListItem.tsx +4 -3
  1001. package/src/TreeList/TreeListTypes.ts +1 -18
  1002. package/src/TreeList/index.ts +19 -1
  1003. package/src/Typeahead/BaseTypeahead.doc.mjs +1 -1
  1004. package/src/Typeahead/BaseTypeahead.tsx +13 -1
  1005. package/src/Typeahead/Typeahead.doc.mjs +3 -3
  1006. package/src/Typeahead/Typeahead.test.tsx +62 -0
  1007. package/src/Typeahead/Typeahead.tsx +7 -1
  1008. package/src/Typeahead/TypeaheadItem.doc.mjs +1 -1
  1009. package/src/Typeahead/TypeaheadItem.tsx +1 -1
  1010. package/src/VStack/VStack.tsx +1 -1
  1011. package/src/VisuallyHidden/VisuallyHidden.doc.mjs +3 -3
  1012. package/src/VisuallyHidden/VisuallyHidden.tsx +1 -1
  1013. package/src/__tests__/babelPluginAddExtensions.test.ts +190 -0
  1014. package/src/__tests__/forcedColors.ts +60 -0
  1015. package/src/__tests__/inputWidthContract.test.tsx +8 -1
  1016. package/src/doc-mjs.d.ts +5 -2
  1017. package/src/docPropLiterals.test.ts +1 -1
  1018. package/src/docPropReferences.test.ts +1 -1
  1019. package/src/hooks/containerReveal.pool.stylex.ts +571 -0
  1020. package/src/hooks/index.ts +7 -0
  1021. package/src/hooks/useClickableContainer.doc.mjs +2 -2
  1022. package/src/hooks/useContainerReveal.doc.mjs +75 -0
  1023. package/src/hooks/useContainerReveal.test.tsx +116 -0
  1024. package/src/hooks/useContainerReveal.ts +181 -0
  1025. package/src/hooks/useEntryAnimation.doc.mjs +2 -2
  1026. package/src/hooks/useFocusTrap.doc.mjs +2 -2
  1027. package/src/hooks/useGridFocus.doc.mjs +2 -2
  1028. package/src/hooks/useGridFocus.ts +8 -6
  1029. package/src/hooks/useHotkeys.doc.mjs +2 -2
  1030. package/src/hooks/useImageMode.doc.mjs +2 -2
  1031. package/src/hooks/useImageMode.test.ts +1 -1
  1032. package/src/hooks/useInputContainer.doc.mjs +2 -2
  1033. package/src/hooks/useInputContainer.test.tsx +180 -0
  1034. package/src/hooks/useInputContainer.ts +36 -1
  1035. package/src/hooks/useInputStatusIcon.test.tsx +59 -0
  1036. package/src/hooks/useInputStatusIcon.tsx +12 -1
  1037. package/src/hooks/useKeyboardHint.doc.mjs +2 -2
  1038. package/src/hooks/useKeyboardHint.test.tsx +22 -0
  1039. package/src/hooks/useKeyboardHint.tsx +7 -3
  1040. package/src/hooks/useListFocus.doc.mjs +2 -2
  1041. package/src/hooks/useListFocus.ts +8 -7
  1042. package/src/hooks/useLongPress.test.tsx +18 -0
  1043. package/src/hooks/useLongPress.ts +12 -2
  1044. package/src/hooks/useMediaQuery.doc.mjs +2 -2
  1045. package/src/hooks/useOverflow.doc.mjs +2 -2
  1046. package/src/hooks/useScrollLock.doc.mjs +2 -2
  1047. package/src/hooks/useScrollOverflow.doc.mjs +2 -2
  1048. package/src/hooks/useStreamingText.doc.mjs +2 -2
  1049. package/src/hooks/useTreeFocus.doc.mjs +2 -2
  1050. package/src/hooks/useTreeFocus.test.tsx +53 -1
  1051. package/src/hooks/useTreeFocus.ts +13 -2
  1052. package/src/i18n/InternationalizationProvider.doc.mjs +14 -2
  1053. package/src/i18n/InternationalizationProvider.tsx +6 -0
  1054. package/src/i18n/useDirection.ts +6 -3
  1055. package/src/i18n/useTranslator.doc.mjs +2 -2
  1056. package/src/index.ts +2 -18
  1057. package/src/theme/MediaTheme.doc.mjs +2 -2
  1058. package/src/theme/SyntaxTheme.doc.mjs +2 -2
  1059. package/src/theme/Theme.doc.mjs +2 -2
  1060. package/src/theme/Theme.tsx +3 -7
  1061. package/src/theme/contrast.test.ts +94 -0
  1062. package/src/theme/contrast.ts +99 -0
  1063. package/src/theme/defineTheme.test.ts +29 -30
  1064. package/src/theme/defineTheme.ts +11 -5
  1065. package/src/theme/derivedVarRegistry.test.ts +8 -1
  1066. package/src/theme/derivedVarRegistry.ts +15 -6
  1067. package/src/theme/expandColorScale.test.ts +401 -1
  1068. package/src/theme/expandColorScale.ts +143 -19
  1069. package/src/theme/generateThemeRules.test.ts +41 -20
  1070. package/src/theme/generateThemeRules.ts +11 -15
  1071. package/src/theme/index.ts +11 -13
  1072. package/src/theme/themeRegistry.test.ts +59 -0
  1073. package/src/theme/themeRegistry.ts +53 -0
  1074. package/src/theme/tokens.stylex.ts +0 -19
  1075. package/src/theme/types.ts +14 -13
  1076. package/src/theme/useTheme.doc.mjs +2 -2
  1077. package/src/theme/useTheme.test.tsx +48 -3
  1078. package/src/theme/useTheme.ts +100 -29
  1079. package/src/utils/rtlStyles.ts +24 -2
  1080. package/dist/NavMenu/NavMenuItem.d.ts +0 -13
  1081. package/dist/NavMenu/NavMenuItem.d.ts.map +0 -1
  1082. package/dist/NavMenu/NavMenuItem.js +0 -16
  1083. package/dist/Thumbnail/thumbnail.markers.stylex.d.ts +0 -9
  1084. package/dist/Thumbnail/thumbnail.markers.stylex.d.ts.map +0 -1
  1085. package/dist/Thumbnail/thumbnail.markers.stylex.js +0 -14
  1086. package/dist/authoring/doc.d.ts +0 -145
  1087. package/dist/authoring/doc.d.ts.map +0 -1
  1088. package/dist/authoring/doc.js +0 -100
  1089. package/dist/authoring/index.d.ts +0 -29
  1090. package/dist/authoring/index.d.ts.map +0 -1
  1091. package/dist/authoring/index.js +0 -28
  1092. package/dist/authoring/integration.d.ts +0 -35
  1093. package/dist/authoring/integration.d.ts.map +0 -1
  1094. package/dist/authoring/integration.js +0 -30
  1095. package/dist/authoring/template.d.ts +0 -66
  1096. package/dist/authoring/template.d.ts.map +0 -1
  1097. package/dist/authoring/template.js +0 -55
  1098. package/dist/config.d.ts +0 -80
  1099. package/dist/config.d.ts.map +0 -1
  1100. package/dist/config.js +0 -40
  1101. package/dist/docs-types.d.ts +0 -969
  1102. package/dist/docs-types.d.ts.map +0 -1
  1103. package/dist/docs-types.js +0 -1
  1104. package/src/NavMenu/NavMenuItem.tsx +0 -19
  1105. package/src/Thumbnail/thumbnail.markers.stylex.ts +0 -12
  1106. package/src/authoring/doc.ts +0 -164
  1107. package/src/authoring/index.test.ts +0 -52
  1108. package/src/authoring/index.ts +0 -50
  1109. package/src/authoring/integration.ts +0 -42
  1110. package/src/authoring/template.ts +0 -74
  1111. package/src/config.test.ts +0 -16
  1112. package/src/config.ts +0 -92
  1113. package/src/docs-types.ts +0 -1108
@@ -4,14 +4,17 @@
4
4
  * @file globalIconRegistry.tsx
5
5
  * @input None (pure module-level state)
6
6
  * @output Exports registerIcons, getIconRegistry, getIcon, resetIcons, IconName, IconRegistry
7
- * @position Global icon registry; works in both server and client environments
7
+ * @position Global and theme-scoped icon registry; works in server and client environments
8
8
  *
9
9
  * This module has NO 'use client' directive — it's importable from RSC.
10
- * All components use getIcon() to resolve icons from this global registry.
10
+ * Components resolve semantic icons through getIcon() or the client useIcon() hook.
11
11
  */
12
12
 
13
13
  import type {ReactNode} from 'react';
14
14
  import {defaultIcons} from './defaultIcons';
15
+ import type {DefinedTheme} from '../theme/defineTheme';
16
+ import {getRegisteredTheme} from '../theme/themeRegistry';
17
+ import {warnOnce} from '../utils/devWarning';
15
18
 
16
19
  // =============================================================================
17
20
  // Types
@@ -23,12 +26,14 @@ import {defaultIcons} from './defaultIcons';
23
26
  * These represent the functional purpose of each icon, not a specific
24
27
  * visual representation. Themes provide the actual icon components.
25
28
  */
26
- // SYNC: packages/cli/docs/icons.doc.mjs — update USAGE_HINTS when adding names
29
+ // SYNC: packages/cli/assets/docs/icons.doc.mjs — update USAGE_HINTS when adding names
27
30
  export type IconName =
28
31
  | 'close'
29
32
  | 'chevronDown'
30
33
  | 'chevronLeft'
31
34
  | 'chevronRight'
35
+ | 'chevronsLeft'
36
+ | 'chevronsRight'
32
37
  | 'check'
33
38
  | 'success'
34
39
  | 'error'
@@ -52,16 +57,43 @@ export type IconName =
52
57
  | 'stop'
53
58
  | 'microphone';
54
59
 
60
+ /**
61
+ * A semantic icon name — either one of the built-in {@link IconName}s or an
62
+ * arbitrary string key contributed by a library/app.
63
+ *
64
+ * The `(string & {})` intersection keeps the built-in names available for
65
+ * autocomplete while still allowing any string, so downstream libraries can
66
+ * register and resolve their own keys (e.g. `'richtext:bold'`) without having
67
+ * to widen the core `IconName` union.
68
+ */
69
+ export type ExtendedIconName = IconName | (string & {});
70
+
55
71
  /**
56
72
  * Icon registry mapping semantic names to React nodes.
57
73
  */
58
74
  export type IconRegistry = Record<IconName, ReactNode>;
59
75
 
76
+ export type IconRegistrySource = DefinedTheme | string | null | undefined;
77
+
60
78
  // =============================================================================
61
79
  // Global Registry
62
80
  // =============================================================================
63
81
 
64
- let globalRegistry: Partial<IconRegistry> = {};
82
+ let globalRegistry: Record<string, ReactNode> = {};
83
+
84
+ function getThemeIconOverrides(
85
+ source: IconRegistrySource,
86
+ ): Partial<IconRegistry> | null {
87
+ if (source == null) {
88
+ return null;
89
+ }
90
+
91
+ if (typeof source === 'string') {
92
+ return getRegisteredTheme(source)?.icons ?? null;
93
+ }
94
+
95
+ return source.icons ?? null;
96
+ }
65
97
 
66
98
  /**
67
99
  * Register icons at the module level. Works in both server and client
@@ -76,8 +108,24 @@ let globalRegistry: Partial<IconRegistry> = {};
76
108
  * import { brandIcons } from './brand-icons';
77
109
  * registerIcons(brandIcons);
78
110
  * ```
111
+ *
112
+ * Libraries may also register their own extension keys (any string), so a
113
+ * theme can override them the same way it overrides built-in icons:
114
+ * @example
115
+ * ```
116
+ * // In a library that ships its own icons:
117
+ * registerIcons({ 'richtext:bold': <MyBoldIcon /> });
118
+ * // resolve with getIcon('richtext:bold')
119
+ * ```
79
120
  */
80
- export function registerIcons(icons: Partial<IconRegistry>): void {
121
+ export function registerIcons(
122
+ icons: Partial<Record<ExtendedIconName, ReactNode>>,
123
+ ): void {
124
+ warnOnce(
125
+ 'icon-registry:global-register-icons',
126
+ 'Icon',
127
+ '`registerIcons()` applies icon overrides globally. Prefer `defineTheme({ icons })` for theme-scoped icon overrides.',
128
+ );
81
129
  globalRegistry = {...globalRegistry, ...icons};
82
130
  }
83
131
 
@@ -89,13 +137,25 @@ export function registerIcons(icons: Partial<IconRegistry>): void {
89
137
  * to derive valid semantic icon-name options from the same registry Icon
90
138
  * resolves against.
91
139
  */
92
- export function getIconRegistry(): Readonly<IconRegistry> {
140
+ export function getIconRegistry(
141
+ source?: IconRegistrySource,
142
+ ): Readonly<IconRegistry> {
93
143
  const registry = {...defaultIcons};
94
144
 
95
- for (const name of Object.keys(globalRegistry) as IconName[]) {
145
+ // Only surface built-in IconName keys here — extension keys registered by
146
+ // libraries are resolved via getIcon/getExtendedIcon and intentionally kept
147
+ // out of the typed IconRegistry snapshot.
148
+ for (const name of Object.keys(defaultIcons) as IconName[]) {
96
149
  registry[name] = globalRegistry[name] ?? defaultIcons[name];
97
150
  }
98
151
 
152
+ const themeIcons = getThemeIconOverrides(source);
153
+ if (themeIcons != null) {
154
+ for (const name of Object.keys(themeIcons) as IconName[]) {
155
+ registry[name] = themeIcons[name] ?? registry[name];
156
+ }
157
+ }
158
+
99
159
  return registry;
100
160
  }
101
161
 
@@ -104,9 +164,51 @@ export function getIconRegistry(): Readonly<IconRegistry> {
104
164
  *
105
165
  * Works in both server and client environments.
106
166
  * Falls back to built-in default icons when no override is registered.
167
+ *
168
+ * Accepts extension keys (any string) in addition to the built-in
169
+ * {@link IconName}s — useful for library-contributed icons. For a
170
+ * caller-supplied fallback when a key isn't registered, use
171
+ * {@link getExtendedIcon}.
172
+ */
173
+ export function getIcon(
174
+ name: ExtendedIconName,
175
+ source?: IconRegistrySource,
176
+ ): ReactNode {
177
+ const themeIcons = getThemeIconOverrides(source);
178
+ return (
179
+ themeIcons?.[name as IconName] ??
180
+ globalRegistry[name] ??
181
+ defaultIcons[name as IconName]
182
+ );
183
+ }
184
+
185
+ /**
186
+ * Resolve an extension icon by an arbitrary string key, falling back to a
187
+ * caller-supplied default when nothing is registered.
188
+ *
189
+ * This is the seam libraries use to make their own icons themeable: ship the
190
+ * inline SVG as `fallback`, resolve through this function, and a theme can
191
+ * override the key via {@link registerIcons} without the library having to
192
+ * widen the core {@link IconName} union.
193
+ *
194
+ * @example
195
+ * ```
196
+ * // Library default, overridable by a theme registering 'richtext:bold':
197
+ * getExtendedIcon('richtext:bold', <BoldGlyph />)
198
+ * ```
107
199
  */
108
- export function getIcon(name: IconName): ReactNode {
109
- return globalRegistry[name] ?? defaultIcons[name];
200
+ export function getExtendedIcon(
201
+ name: ExtendedIconName,
202
+ fallback?: ReactNode,
203
+ source?: IconRegistrySource,
204
+ ): ReactNode {
205
+ const themeIcons = getThemeIconOverrides(source);
206
+ return (
207
+ themeIcons?.[name as IconName] ??
208
+ globalRegistry[name] ??
209
+ defaultIcons[name as IconName] ??
210
+ fallback
211
+ );
110
212
  }
111
213
 
112
214
  /**
package/src/Icon/index.ts CHANGED
@@ -12,18 +12,20 @@
12
12
  */
13
13
 
14
14
  export {Icon, renderIconSlot} from './Icon';
15
- export type {
16
- IconProps,
17
- IconColor,
18
- IconSize,
19
- IconType,
20
- } from './Icon';
15
+ export {useIcon} from './useIcon';
16
+ export type {IconProps, IconColor, IconSize, IconType} from './Icon';
21
17
 
22
18
  // Global registry (RSC-compatible, no 'use client')
23
19
  export {
24
20
  registerIcons,
25
21
  getIconRegistry,
26
22
  getIcon,
23
+ getExtendedIcon,
27
24
  resetIcons,
28
25
  } from './globalIconRegistry';
29
- export type {IconName, IconRegistry} from './globalIconRegistry';
26
+ export type {
27
+ IconName,
28
+ ExtendedIconName,
29
+ IconRegistry,
30
+ IconRegistrySource,
31
+ } from './globalIconRegistry';
@@ -0,0 +1,23 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file useIcon.ts
7
+ * @input Semantic icon name
8
+ * @output Exports useIcon hook for theme-aware icon lookup
9
+ * @position Client hook for components that render registry icons directly
10
+ */
11
+
12
+ import type {ReactNode} from 'react';
13
+ import {useThemeName} from '../theme/useTheme';
14
+ import {getIcon, type IconName} from './globalIconRegistry';
15
+
16
+ /**
17
+ * Resolve a semantic icon name from the nearest Theme, falling back through
18
+ * root theme registration, global icon overrides, and built-in defaults.
19
+ */
20
+ export function useIcon(name: IconName): ReactNode {
21
+ const themeName = useThemeName();
22
+ return getIcon(name, themeName);
23
+ }
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
- /** @type {import('../docs-types').ComponentDoc} */
3
+ /** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
4
4
 
5
5
  export const docs = {
6
6
  name: 'IconButton',
@@ -84,7 +84,7 @@ export const docs = {
84
84
  },
85
85
  };
86
86
 
87
- /** @type {import('../docs-types').TranslationDoc} */
87
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
88
88
  export const docsDense = {
89
89
  description: 'Button showing only an icon, no visible text. Use in toolbars, table rows, compact UI where space is tight + icon universally understood.',
90
90
  usage: {
@@ -13,7 +13,7 @@
13
13
  * - /packages/core/src/IconButton/IconButton.test.tsx (tests)
14
14
  * - /packages/core/src/IconButton/index.ts (exports if types change)
15
15
  * - /apps/storybook/stories/IconButton.stories.tsx (storybook stories)
16
- * - /packages/cli/templates/blocks/components/IconButton/ (showcase blocks)
16
+ * - /packages/cli/assets/templates/blocks/components/IconButton/ (showcase blocks)
17
17
  */
18
18
 
19
19
  import type {ReactNode} from 'react';
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
- /** @type {import('../docs-types').ComponentDoc} */
3
+ /** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
4
4
 
5
5
  export const docs = {
6
6
  name: 'InputGroup',
@@ -163,7 +163,7 @@ export const docs = {
163
163
  },
164
164
  };
165
165
 
166
- /** @type {import('../docs-types').TranslationDoc} */
166
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
167
167
  export const docsDense = {
168
168
  description:
169
169
  'groups input with prefix/suffix addons in a connected container',
@@ -18,7 +18,7 @@
18
18
  * - /packages/core/src/InputGroup/InputGroup.test.tsx
19
19
  * - /packages/core/src/InputGroup/index.ts
20
20
  * - /apps/storybook/stories/InputGroup.stories.tsx
21
- * - /packages/cli/templates/blocks/components/InputGroup/
21
+ * - /packages/cli/assets/templates/blocks/components/InputGroup/
22
22
  */
23
23
 
24
24
  import {useId, useMemo, type ReactNode} from 'react';
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
- /** @type {import('../docs-types').ComponentDoc} */
3
+ /** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
4
4
 
5
5
  export const docs = {
6
6
  name: 'InputGroupText',
@@ -11,7 +11,7 @@
11
11
  * SYNC: When modified, update these files to stay in sync:
12
12
  * - /packages/core/src/InputGroup/InputGroup.doc.mjs
13
13
  * - /packages/core/src/InputGroup/index.ts
14
- * - /packages/cli/templates/blocks/components/InputGroup/
14
+ * - /packages/cli/assets/templates/blocks/components/InputGroup/
15
15
  */
16
16
 
17
17
  import React, {type ReactNode} from 'react';
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
- /** @type {import('../docs-types').ComponentDoc} */
3
+ /** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
4
4
 
5
5
  export const docs = {
6
6
  name: 'Item',
@@ -37,6 +37,7 @@ export const docs = {
37
37
  {name: 'labelLines', type: 'number', description: 'Max lines before label truncates with ellipsis.'},
38
38
  {name: 'descriptionLines', type: 'number', description: 'Max lines before description truncates with ellipsis.'},
39
39
  {name: 'onClick', type: '(event: MouseEvent) => void', description: 'Click handler. Makes the item clickable with button semantics.'},
40
+ {name: 'interactiveRef', type: 'RefObject<HTMLElement | null>', description: 'Ref to a nested control (e.g. a checkbox in startContent) that owns the item\'s keyboard access and action. The row becomes an enlarged click/tap target that delegates surface clicks to it (useClickableContainer) and renders no invisible button/anchor, so the row adds no second tab stop (WCAG 4.1.2). Mutually exclusive with onClick/href — those are ignored when set.'},
40
41
  {name: 'href', type: 'string', description: 'Link URL. Makes the item a link via an invisible anchor element.'},
41
42
  {name: 'target', type: "'_blank' | '_self'", description: 'Link target. Only used with href. target="_blank" automatically adds noopener noreferrer.'},
42
43
  {name: 'rel', type: 'string', description: 'Link relationship tokens. noopener noreferrer are merged automatically for target="_blank".'},
@@ -71,7 +72,7 @@ export const docs = {
71
72
  },
72
73
  };
73
74
 
74
- /** @type {import('../docs-types').TranslationDoc} */
75
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
75
76
  export const docsZh = {
76
77
  components: [
77
78
  {
@@ -90,6 +91,8 @@ export const docsZh = {
90
91
  labelLines: '标签截断前的最大行数。',
91
92
  descriptionLines: '描述截断前的最大行数。',
92
93
  onClick: '点击处理函数。使项目可点击,具有按钮语义。',
94
+ interactiveRef:
95
+ '指向嵌套控件(如 startContent 中的复选框)的 ref,该控件承载项目的键盘访问和操作。行成为更大的点击/触摸目标,将表面点击委托给该控件(useClickableContainer),且不渲染不可见按钮/锚点,因此行不会增加第二个 Tab 停留点(WCAG 4.1.2)。与 onClick/href 互斥——设置后二者将被忽略。',
93
96
  href: '链接 URL。通过不可见锚点元素使项目成为链接。',
94
97
  target: '链接目标。仅与 href 一起使用。target="_blank" 会自动添加 noopener noreferrer。',
95
98
  rel: '链接关系标记。target="_blank" 会自动合并 noopener noreferrer。',
@@ -124,7 +127,7 @@ export const docsZh = {
124
127
  },
125
128
  };
126
129
 
127
- /** @type {import('../docs-types').TranslationDoc} */
130
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
128
131
  export const docsDense = {
129
132
  description: 'universal item primitive w/ startContent+label+description+endContent layout. building block for list items, menu items, contacts, notifications',
130
133
  usage: {
@@ -157,6 +160,8 @@ export const docsDense = {
157
160
  labelLines: 'Max label lines before truncation.',
158
161
  descriptionLines: 'Max description lines before truncation.',
159
162
  onClick: 'Click handler; enables button semantics.',
163
+ interactiveRef:
164
+ 'Ref to a nested control that owns the item\'s keyboard access/action; row delegates surface clicks to it (useClickableContainer), no invisible button/anchor, no second tab stop (WCAG 4.1.2). Mutually exclusive with onClick/href.',
160
165
  href: 'Link URL; enables anchor semantics.',
161
166
  target:
162
167
  'Link target, only with href. target="_blank" auto-adds noopener noreferrer.',
@@ -9,11 +9,35 @@
9
9
  * SYNC: When Item component changes, update tests to match new behavior
10
10
  */
11
11
 
12
+ import {useRef} from 'react';
12
13
  import {describe, it, expect, vi} from 'vitest';
13
14
  import {render, screen} from '@testing-library/react';
14
15
  import userEvent from '@testing-library/user-event';
15
16
  import {Item} from './Item';
16
17
 
18
+ /**
19
+ * Item in delegation mode: `interactiveRef` points at a nested control that
20
+ * owns the row's keyboard access and action. The row is an enlarged tap target
21
+ * that forwards surface clicks to that control (useClickableContainer).
22
+ */
23
+ function DelegatingItem({onToggle}: {onToggle?: () => void}) {
24
+ const ref = useRef<HTMLInputElement>(null);
25
+ return (
26
+ <Item
27
+ label="Row"
28
+ interactiveRef={ref}
29
+ startContent={
30
+ <input
31
+ ref={ref}
32
+ type="checkbox"
33
+ aria-label="Pick row"
34
+ onChange={onToggle}
35
+ />
36
+ }
37
+ />
38
+ );
39
+ }
40
+
17
41
  describe('Item', () => {
18
42
  // ===========================================================================
19
43
  // Basic rendering
@@ -190,6 +214,70 @@ describe('Item', () => {
190
214
  expect(buttons).toHaveLength(1);
191
215
  });
192
216
 
217
+ // ===========================================================================
218
+ // Interactive — interactiveRef (delegation to a nested control)
219
+ // ===========================================================================
220
+
221
+ it('renders no invisible button in interactiveRef (delegation) mode', () => {
222
+ const {container} = render(<DelegatingItem />);
223
+ // The nested control provides keyboard access — the row must not add a
224
+ // second focusable control for the same action (WCAG 4.1.2).
225
+ expect(container.querySelector('button')).not.toBeInTheDocument();
226
+ });
227
+
228
+ it('keeps the nested control as the only tab stop in interactiveRef mode', async () => {
229
+ const user = userEvent.setup();
230
+ render(<DelegatingItem />);
231
+ await user.tab();
232
+ expect(screen.getByRole('checkbox')).toHaveFocus();
233
+ // Next tab leaves the item entirely — the row itself is not focusable.
234
+ await user.tab();
235
+ expect(screen.getByRole('checkbox')).not.toHaveFocus();
236
+ expect(document.body).toHaveFocus();
237
+ });
238
+
239
+ it('delegates a row-surface click to the interactive control', async () => {
240
+ const user = userEvent.setup();
241
+ const onToggle = vi.fn();
242
+ render(<DelegatingItem onToggle={onToggle} />);
243
+ // Clicking the label (row surface) is forwarded to the checkbox.
244
+ await user.click(screen.getByText('Row'));
245
+ expect(onToggle).toHaveBeenCalledTimes(1);
246
+ });
247
+
248
+ it('does not double-fire when the interactive control itself is clicked', async () => {
249
+ const user = userEvent.setup();
250
+ const onToggle = vi.fn();
251
+ render(<DelegatingItem onToggle={onToggle} />);
252
+ await user.click(screen.getByRole('checkbox'));
253
+ // The row must not re-forward the control's own click back to it.
254
+ expect(onToggle).toHaveBeenCalledTimes(1);
255
+ });
256
+
257
+ it('ignores onClick when interactiveRef is set (delegation wins, single tab stop)', async () => {
258
+ const user = userEvent.setup();
259
+ const onClick = vi.fn();
260
+ function ItemWithBoth() {
261
+ const ref = useRef<HTMLInputElement>(null);
262
+ return (
263
+ <Item
264
+ label="Row"
265
+ onClick={onClick}
266
+ interactiveRef={ref}
267
+ startContent={
268
+ <input ref={ref} type="checkbox" aria-label="Pick row" />
269
+ }
270
+ />
271
+ );
272
+ }
273
+ const {container} = render(<ItemWithBoth />);
274
+ // No invisible button (onClick is ignored in delegation mode)...
275
+ expect(container.querySelector('button')).not.toBeInTheDocument();
276
+ // ...and the checkbox is still the sole tab stop.
277
+ await user.tab();
278
+ expect(screen.getByRole('checkbox')).toHaveFocus();
279
+ });
280
+
193
281
  // ===========================================================================
194
282
  // Interactive — href (invisible anchor pattern)
195
283
  // ===========================================================================
package/src/Item/Item.tsx CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  /**
6
6
  * @file Item.tsx
7
- * @input Uses React, ReactNode, StyleXStyles, theme tokens
7
+ * @input Uses React, ReactNode, StyleXStyles, theme tokens, useClickableContainer
8
8
  * @output Exports Item component, ItemProps type
9
9
  * @position Core layout primitive; consumed by index.ts, tested by Item.test.tsx
10
10
  *
@@ -13,10 +13,10 @@
13
13
  * - /packages/core/src/Item/Item.test.tsx
14
14
  * - /packages/core/src/Item/index.ts
15
15
  * - /apps/storybook/stories/Item.stories.tsx
16
- * - /packages/cli/templates/blocks/components/Item/ (showcase blocks)
16
+ * - /packages/cli/assets/templates/blocks/components/Item/ (showcase blocks)
17
17
  */
18
18
 
19
- import type {ReactNode} from 'react';
19
+ import {useRef, type ReactNode} from 'react';
20
20
  import * as stylex from '@stylexjs/stylex';
21
21
  import {
22
22
  colorVars,
@@ -27,9 +27,11 @@ import {
27
27
  typeScaleVars,
28
28
  } from '../theme/tokens.stylex';
29
29
  import type {BaseProps} from '../BaseProps';
30
- import {mergeProps} from '../utils';
30
+ import {mergeProps, mergeRefs} from '../utils';
31
31
  import {computeTargetAndRel} from '../Link/computeTargetAndRel';
32
32
  import {useLinkComponent} from '../Link/useLinkComponent';
33
+ import {useClickableContainer} from '../hooks/useClickableContainer';
34
+ import {useDevWarning} from '../hooks/useDevWarning';
33
35
  import {themeProps} from '../utils/themeProps';
34
36
 
35
37
  // =============================================================================
@@ -108,6 +110,20 @@ export interface ItemProps extends BaseProps<HTMLElement> {
108
110
  */
109
111
  onClick?: (event: React.MouseEvent) => void;
110
112
 
113
+ /**
114
+ * Ref to a nested control inside the item (e.g. a checkbox in
115
+ * `startContent`) that already provides the item's keyboard access and
116
+ * action. When set, the item becomes an enlarged click/tap target that
117
+ * delegates surface clicks to that control via the `useClickableContainer`
118
+ * pattern: it renders no invisible button/anchor, so the row adds no second
119
+ * tab stop (WCAG 4.1.2 — one focusable control per option). Clicks on the
120
+ * control itself, and on any other nested interactive element, are left to
121
+ * that element. Mutually exclusive with `onClick`/`href` — when
122
+ * `interactiveRef` is set those are ignored (the nested control is the sole
123
+ * action).
124
+ */
125
+ interactiveRef?: React.RefObject<HTMLElement | null>;
126
+
111
127
  /**
112
128
  * Link URL. Makes the item a link via an invisible anchor element.
113
129
  */
@@ -349,6 +365,7 @@ export function Item({
349
365
  labelLines,
350
366
  descriptionLines,
351
367
  onClick,
368
+ interactiveRef,
352
369
  href,
353
370
  target: targetFromProps,
354
371
  rel: relFromProps,
@@ -363,7 +380,29 @@ export function Item({
363
380
  ...restProps
364
381
  }: ItemProps) {
365
382
  const LinkComponent = useLinkComponent();
366
- const isInteractive = onClick != null || href != null;
383
+
384
+ // Delegation mode: the row is an enlarged click/tap target for a nested
385
+ // control (e.g. a checkbox) that owns the keyboard access and action. The
386
+ // control is the row's only tab stop; the row proxies surface clicks to it.
387
+ const isDelegate = interactiveRef != null;
388
+ const containerRef = useRef<HTMLElement | null>(null);
389
+ // Only onClick is needed: onMouseUp handles middle-click href navigation,
390
+ // which delegation mode never has (href is ignored here).
391
+ const {onClick: delegatedOnClick} = useClickableContainer({
392
+ containerRef,
393
+ interactiveRef: interactiveRef ?? undefined,
394
+ disabled: isDisabled,
395
+ });
396
+
397
+ useDevWarning(
398
+ 'Item',
399
+ '`interactiveRef` is mutually exclusive with `onClick`/`href`. In ' +
400
+ 'delegation mode the row only forwards clicks to the referenced control, ' +
401
+ 'so `onClick`/`href` are ignored. Drop one of them.',
402
+ isDelegate && (onClick != null || href != null),
403
+ );
404
+
405
+ const isInteractive = onClick != null || href != null || isDelegate;
367
406
  const {target, rel} = computeTargetAndRel(targetFromProps, relFromProps);
368
407
  // When a semantic role is provided (e.g. "menuitem"), a parent component
369
408
  // handles keyboard access. Skip the invisible button/anchor and put
@@ -441,7 +480,10 @@ export function Item({
441
480
  <span {...stylex.props(styles.startContent)}>{startContent}</span>
442
481
  )}
443
482
 
444
- {hasParentRole ? (
483
+ {hasParentRole || isDelegate ? (
484
+ // Delegation mode (and parent-role mode) put the label in a plain span:
485
+ // keyboard access lives on the nested control, so no invisible
486
+ // button/anchor is rendered and the row adds no second tab stop.
445
487
  <span
446
488
  {...stylex.props(
447
489
  styles.content,
@@ -497,7 +539,9 @@ export function Item({
497
539
 
498
540
  return (
499
541
  <Component
500
- ref={ref as React.Ref<never>}
542
+ ref={
543
+ (isDelegate ? mergeRefs(ref, containerRef) : ref) as React.Ref<never>
544
+ }
501
545
  {...restProps}
502
546
  aria-selected={(allowsAriaSelected && isSelected) || undefined}
503
547
  // aria-selected is invalid on roles that don't permit it (listitem, a
@@ -527,11 +571,13 @@ export function Item({
527
571
  )}
528
572
  role={role}
529
573
  onClick={
530
- hasParentRole
531
- ? onClick
532
- : isInteractive
533
- ? handleContainerClick
534
- : undefined
574
+ isDelegate
575
+ ? delegatedOnClick
576
+ : hasParentRole
577
+ ? onClick
578
+ : isInteractive
579
+ ? handleContainerClick
580
+ : undefined
535
581
  }>
536
582
  {innerContent}
537
583
  </Component>
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
- /** @type {import('../docs-types').ComponentDoc} */
3
+ /** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
4
4
 
5
5
  export const docs = {
6
6
  name: 'Kbd',
@@ -47,7 +47,7 @@ export const docs = {
47
47
  },
48
48
  };
49
49
 
50
- /** @type {import('../docs-types').ComponentDoc} */
50
+ /** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
51
51
  export const docsZh = {
52
52
  name: 'Kbd',
53
53
  displayName: 'Kbd',
@@ -91,7 +91,7 @@ export const docsZh = {
91
91
  },
92
92
  };
93
93
 
94
- /** @type {import('../docs-types').TranslationDoc} */
94
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
95
95
  export const docsDense = {
96
96
  description:
97
97
  'Renders keyboard shortcut as styled key badges. Use in tooltips, menus + help text to show key combinations.',
package/src/Kbd/Kbd.tsx CHANGED
@@ -10,7 +10,7 @@
10
10
  *
11
11
  * SYNC: When modified, update:
12
12
  * - /packages/core/src/Kbd/index.ts
13
- * - /packages/cli/templates/blocks/components/Kbd/ (showcase blocks)
13
+ * - /packages/cli/assets/templates/blocks/components/Kbd/ (showcase blocks)
14
14
  */
15
15
 
16
16
  import React, {useSyncExternalStore} from 'react';
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
- /** @type {import('../docs-types').ComponentDoc} */
3
+ /** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
4
4
  export const docs = {
5
5
  name: 'Layer',
6
6
  displayName: 'Layer',
@@ -63,7 +63,7 @@ export const docs = {
63
63
  ],
64
64
  };
65
65
 
66
- /** @type {import('../docs-types').TranslationDoc} */
66
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
67
67
  export const docsDense = {
68
68
  usage: {
69
69
  description: