@astryxdesign/core 0.2.0-canary.fc53ff7 → 0.2.0-canary.fce8b64

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 (932) 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 +5 -5
  155. package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
  156. package/dist/DropdownMenu/renderDropdownItems.js +6 -4
  157. package/dist/EmptyState/EmptyState.d.ts +1 -1
  158. package/dist/EmptyState/EmptyState.js +1 -1
  159. package/dist/Field/Field.d.ts +1 -1
  160. package/dist/Field/Field.js +1 -1
  161. package/dist/Field/FieldLabel.d.ts +2 -2
  162. package/dist/Field/FieldLabel.d.ts.map +1 -1
  163. package/dist/Field/FieldLabel.js +41 -2
  164. package/dist/FieldStatus/FieldStatus.d.ts +1 -18
  165. package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
  166. package/dist/FieldStatus/FieldStatus.js +1 -15
  167. package/dist/FieldStatus/index.d.ts +19 -1
  168. package/dist/FieldStatus/index.d.ts.map +1 -1
  169. package/dist/FieldStatus/index.js +14 -0
  170. package/dist/FileInput/FileInput.js +1 -1
  171. package/dist/FormLayout/FormLayout.d.ts +1 -1
  172. package/dist/FormLayout/FormLayout.d.ts.map +1 -1
  173. package/dist/FormLayout/FormLayout.js +1 -1
  174. package/dist/Grid/Grid.d.ts +1 -1
  175. package/dist/Grid/Grid.js +1 -1
  176. package/dist/Grid/GridSpan.d.ts +1 -1
  177. package/dist/Grid/GridSpan.js +1 -1
  178. package/dist/HStack/HStack.d.ts +1 -1
  179. package/dist/HStack/HStack.js +1 -1
  180. package/dist/Heading/Heading.d.ts +2 -2
  181. package/dist/Heading/Heading.d.ts.map +1 -1
  182. package/dist/Heading/Heading.js +5 -4
  183. package/dist/HoverCard/HoverCard.d.ts +1 -1
  184. package/dist/HoverCard/HoverCard.js +1 -1
  185. package/dist/Icon/Icon.d.ts +1 -1
  186. package/dist/Icon/Icon.d.ts.map +1 -1
  187. package/dist/Icon/Icon.js +4 -2
  188. package/dist/Icon/globalIconRegistry.d.ts +47 -5
  189. package/dist/Icon/globalIconRegistry.d.ts.map +1 -1
  190. package/dist/Icon/globalIconRegistry.js +74 -7
  191. package/dist/Icon/index.d.ts +4 -3
  192. package/dist/Icon/index.d.ts.map +1 -1
  193. package/dist/Icon/index.js +2 -1
  194. package/dist/Icon/useIcon.d.ts +14 -0
  195. package/dist/Icon/useIcon.d.ts.map +1 -0
  196. package/dist/Icon/useIcon.js +21 -0
  197. package/dist/IconButton/IconButton.d.ts +1 -1
  198. package/dist/IconButton/IconButton.js +1 -1
  199. package/dist/InputGroup/InputGroup.d.ts +1 -1
  200. package/dist/InputGroup/InputGroup.js +1 -1
  201. package/dist/InputGroup/InputGroupText.d.ts +1 -1
  202. package/dist/InputGroup/InputGroupText.js +1 -1
  203. package/dist/Item/Item.d.ts +1 -1
  204. package/dist/Item/Item.js +1 -1
  205. package/dist/Kbd/Kbd.d.ts +1 -1
  206. package/dist/Kbd/Kbd.js +1 -1
  207. package/dist/Layout/Layout.d.ts +1 -1
  208. package/dist/Layout/Layout.js +1 -1
  209. package/dist/Layout/LayoutContent.d.ts +1 -1
  210. package/dist/Layout/LayoutContent.js +1 -1
  211. package/dist/Layout/LayoutFooter.d.ts +1 -1
  212. package/dist/Layout/LayoutFooter.js +1 -1
  213. package/dist/Layout/LayoutHeader.d.ts +1 -1
  214. package/dist/Layout/LayoutHeader.js +1 -1
  215. package/dist/Layout/LayoutPanel.d.ts +1 -1
  216. package/dist/Layout/LayoutPanel.js +1 -1
  217. package/dist/Lightbox/Lightbox.d.ts +1 -1
  218. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  219. package/dist/Lightbox/Lightbox.js +16 -3
  220. package/dist/Link/Link.d.ts +1 -1
  221. package/dist/Link/Link.js +1 -1
  222. package/dist/Link/LinkProvider.d.ts +2 -2
  223. package/dist/Link/LinkProvider.js +2 -2
  224. package/dist/List/List.d.ts +1 -1
  225. package/dist/List/List.js +1 -1
  226. package/dist/List/ListItem.d.ts +1 -1
  227. package/dist/List/ListItem.js +1 -1
  228. package/dist/Markdown/Markdown.d.ts.map +1 -1
  229. package/dist/Markdown/Markdown.js +35 -13
  230. package/dist/MetadataList/MetadataList.d.ts +1 -1
  231. package/dist/MetadataList/MetadataList.js +1 -1
  232. package/dist/MetadataList/MetadataListItem.d.ts +1 -1
  233. package/dist/MetadataList/MetadataListItem.js +1 -1
  234. package/dist/MobileNav/MobileNav.d.ts +1 -1
  235. package/dist/MobileNav/MobileNav.js +1 -1
  236. package/dist/MoreMenu/MoreMenu.d.ts +1 -1
  237. package/dist/MoreMenu/MoreMenu.js +3 -3
  238. package/dist/MultiSelector/MultiSelector.d.ts +1 -1
  239. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  240. package/dist/MultiSelector/MultiSelector.js +55 -17
  241. package/dist/NavIcon/NavIcon.d.ts +1 -1
  242. package/dist/NavIcon/NavIcon.js +1 -1
  243. package/dist/NumberInput/NumberInput.d.ts +1 -1
  244. package/dist/NumberInput/NumberInput.js +1 -1
  245. package/dist/Outline/Outline.js +1 -1
  246. package/dist/OverflowList/OverflowList.d.ts +1 -1
  247. package/dist/OverflowList/OverflowList.js +1 -1
  248. package/dist/Pagination/Pagination.d.ts +1 -20
  249. package/dist/Pagination/Pagination.d.ts.map +1 -1
  250. package/dist/Pagination/Pagination.js +1 -15
  251. package/dist/Pagination/index.d.ts +21 -1
  252. package/dist/Pagination/index.d.ts.map +1 -1
  253. package/dist/Pagination/index.js +14 -0
  254. package/dist/Popover/Popover.d.ts +20 -3
  255. package/dist/Popover/Popover.d.ts.map +1 -1
  256. package/dist/Popover/Popover.js +5 -1
  257. package/dist/Popover/usePopover.d.ts.map +1 -1
  258. package/dist/Popover/usePopover.js +14 -3
  259. package/dist/PowerSearch/PowerSearch.d.ts +1 -1
  260. package/dist/PowerSearch/PowerSearch.js +1 -1
  261. package/dist/ProgressBar/ProgressBar.d.ts +1 -20
  262. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  263. package/dist/ProgressBar/ProgressBar.js +1 -15
  264. package/dist/ProgressBar/index.d.ts +21 -1
  265. package/dist/ProgressBar/index.d.ts.map +1 -1
  266. package/dist/ProgressBar/index.js +14 -0
  267. package/dist/RadioList/RadioList.d.ts +1 -1
  268. package/dist/RadioList/RadioList.js +1 -1
  269. package/dist/RadioList/RadioListItem.d.ts +1 -1
  270. package/dist/RadioList/RadioListItem.js +1 -1
  271. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  272. package/dist/Resizable/ResizeHandle.js +3 -10
  273. package/dist/Section/Section.d.ts +2 -19
  274. package/dist/Section/Section.d.ts.map +1 -1
  275. package/dist/Section/Section.js +1 -15
  276. package/dist/Section/index.d.ts +19 -1
  277. package/dist/Section/index.d.ts.map +1 -1
  278. package/dist/Section/index.js +14 -0
  279. package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
  280. package/dist/SegmentedControl/SegmentedControl.js +1 -1
  281. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  282. package/dist/SegmentedControl/SegmentedControlItem.js +1 -1
  283. package/dist/SelectableCard/SelectableCard.d.ts +4 -3
  284. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  285. package/dist/SelectableCard/SelectableCard.js +15 -3
  286. package/dist/Selector/Selector.d.ts +1 -1
  287. package/dist/Selector/Selector.d.ts.map +1 -1
  288. package/dist/Selector/Selector.js +55 -17
  289. package/dist/SideNav/SideNav.d.ts +1 -1
  290. package/dist/SideNav/SideNav.js +1 -1
  291. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  292. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  293. package/dist/SideNav/SideNavCollapseButton.js +4 -3
  294. package/dist/SideNav/SideNavHeading.d.ts +1 -1
  295. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  296. package/dist/SideNav/SideNavHeading.js +8 -7
  297. package/dist/SideNav/SideNavItem.d.ts +2 -2
  298. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  299. package/dist/SideNav/SideNavItem.js +6 -7
  300. package/dist/SideNav/SideNavSection.d.ts +1 -1
  301. package/dist/SideNav/SideNavSection.js +1 -1
  302. package/dist/Skeleton/Skeleton.d.ts +1 -1
  303. package/dist/Skeleton/Skeleton.js +1 -1
  304. package/dist/Slider/Slider.d.ts.map +1 -1
  305. package/dist/Slider/Slider.js +78 -68
  306. package/dist/Spinner/Spinner.d.ts +1 -1
  307. package/dist/Spinner/Spinner.js +1 -1
  308. package/dist/Stack/Stack.d.ts +1 -1
  309. package/dist/Stack/Stack.js +1 -1
  310. package/dist/Stack/StackItem.d.ts +1 -1
  311. package/dist/Stack/StackItem.js +1 -1
  312. package/dist/StatusDot/StatusDot.d.ts +1 -20
  313. package/dist/StatusDot/StatusDot.d.ts.map +1 -1
  314. package/dist/StatusDot/StatusDot.js +2 -17
  315. package/dist/StatusDot/index.d.ts +21 -1
  316. package/dist/StatusDot/index.d.ts.map +1 -1
  317. package/dist/StatusDot/index.js +14 -0
  318. package/dist/Switch/Switch.d.ts +1 -1
  319. package/dist/Switch/Switch.js +1 -1
  320. package/dist/TabList/Tab.d.ts +1 -1
  321. package/dist/TabList/Tab.js +1 -1
  322. package/dist/TabList/TabList.d.ts +1 -1
  323. package/dist/TabList/TabList.js +1 -1
  324. package/dist/TabList/TabMenu.d.ts +1 -1
  325. package/dist/TabList/TabMenu.js +1 -1
  326. package/dist/Table/BaseTable.d.ts +1 -1
  327. package/dist/Table/BaseTable.js +1 -1
  328. package/dist/Table/Table.d.ts +1 -1
  329. package/dist/Table/Table.js +1 -1
  330. package/dist/Table/TableCell.d.ts +1 -1
  331. package/dist/Table/TableCell.js +1 -1
  332. package/dist/Table/TableHeaderCell.d.ts +1 -1
  333. package/dist/Table/TableHeaderCell.js +1 -1
  334. package/dist/Table/TableRow.d.ts +1 -1
  335. package/dist/Table/TableRow.js +1 -1
  336. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +18 -3
  337. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  338. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +21 -3
  339. package/dist/Table/plugins/tree/useTableTreeData.d.ts +11 -0
  340. package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
  341. package/dist/Table/plugins/tree/useTableTreeData.js +36 -2
  342. package/dist/Text/Text.d.ts +11 -2
  343. package/dist/Text/Text.d.ts.map +1 -1
  344. package/dist/Text/Text.js +26 -3
  345. package/dist/Text/index.d.ts +31 -1
  346. package/dist/Text/index.d.ts.map +1 -1
  347. package/dist/Text/index.js +23 -0
  348. package/dist/TextArea/TextArea.d.ts +1 -1
  349. package/dist/TextArea/TextArea.d.ts.map +1 -1
  350. package/dist/TextArea/TextArea.js +107 -39
  351. package/dist/TextInput/TextInput.d.ts +1 -1
  352. package/dist/TextInput/TextInput.js +1 -1
  353. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  354. package/dist/Thumbnail/Thumbnail.js +10 -3
  355. package/dist/TimeInput/TimeInput.js +1 -1
  356. package/dist/Timestamp/Timestamp.d.ts +4 -1
  357. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  358. package/dist/Timestamp/Timestamp.js +78 -7
  359. package/dist/Timestamp/formatInstant.d.ts +3 -3
  360. package/dist/Timestamp/formatInstant.d.ts.map +1 -1
  361. package/dist/Timestamp/formatInstant.js +2 -2
  362. package/dist/Timestamp/tooltipEntries.d.ts +3 -2
  363. package/dist/Timestamp/tooltipEntries.d.ts.map +1 -1
  364. package/dist/Timestamp/tooltipEntries.js +3 -2
  365. package/dist/ToggleButton/ToggleButton.d.ts +1 -1
  366. package/dist/ToggleButton/ToggleButton.js +1 -1
  367. package/dist/ToggleButton/ToggleButtonGroup.d.ts +1 -1
  368. package/dist/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
  369. package/dist/ToggleButton/ToggleButtonGroup.js +1 -1
  370. package/dist/Token/Token.d.ts +2 -27
  371. package/dist/Token/Token.d.ts.map +1 -1
  372. package/dist/Token/Token.js +1 -15
  373. package/dist/Token/index.d.ts +27 -1
  374. package/dist/Token/index.d.ts.map +1 -1
  375. package/dist/Token/index.js +14 -0
  376. package/dist/Tokenizer/Tokenizer.d.ts +1 -1
  377. package/dist/Tokenizer/Tokenizer.js +1 -1
  378. package/dist/Toolbar/Toolbar.d.ts +1 -1
  379. package/dist/Toolbar/Toolbar.js +1 -1
  380. package/dist/Tooltip/Tooltip.d.ts +1 -1
  381. package/dist/Tooltip/Tooltip.js +1 -1
  382. package/dist/TopNav/TopNav.d.ts +1 -1
  383. package/dist/TopNav/TopNav.js +1 -1
  384. package/dist/TopNav/TopNavHeading.d.ts +1 -1
  385. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  386. package/dist/TopNav/TopNavHeading.js +7 -6
  387. package/dist/TopNav/TopNavItem.d.ts +1 -1
  388. package/dist/TopNav/TopNavItem.js +1 -1
  389. package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
  390. package/dist/TopNav/TopNavMegaMenu.js +6 -4
  391. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
  392. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +1 -1
  393. package/dist/TopNav/TopNavMegaMenuItem.d.ts +1 -1
  394. package/dist/TopNav/TopNavMegaMenuItem.js +1 -1
  395. package/dist/TopNav/TopNavMenu.d.ts +1 -1
  396. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  397. package/dist/TopNav/TopNavMenu.js +5 -4
  398. package/dist/TreeList/TreeList.d.ts +1 -1
  399. package/dist/TreeList/TreeList.js +1 -1
  400. package/dist/TreeList/TreeListBranches.js +1 -1
  401. package/dist/TreeList/TreeListItem.d.ts +1 -1
  402. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  403. package/dist/TreeList/TreeListItem.js +4 -3
  404. package/dist/TreeList/TreeListTypes.d.ts +1 -17
  405. package/dist/TreeList/TreeListTypes.d.ts.map +1 -1
  406. package/dist/TreeList/index.d.ts +18 -1
  407. package/dist/TreeList/index.d.ts.map +1 -1
  408. package/dist/TreeList/index.js +14 -0
  409. package/dist/Typeahead/BaseTypeahead.d.ts +1 -1
  410. package/dist/Typeahead/BaseTypeahead.js +1 -1
  411. package/dist/Typeahead/Typeahead.d.ts +1 -1
  412. package/dist/Typeahead/Typeahead.js +1 -1
  413. package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
  414. package/dist/Typeahead/TypeaheadItem.js +1 -1
  415. package/dist/VStack/VStack.d.ts +1 -1
  416. package/dist/VStack/VStack.js +1 -1
  417. package/dist/VisuallyHidden/VisuallyHidden.d.ts +1 -1
  418. package/dist/VisuallyHidden/VisuallyHidden.js +1 -1
  419. package/dist/astryx.css +45 -17
  420. package/dist/astryx.umd.js +49 -49
  421. package/dist/astryx.umd.js.map +4 -4
  422. package/dist/hooks/containerReveal.pool.stylex.d.ts +49 -27
  423. package/dist/hooks/containerReveal.pool.stylex.d.ts.map +1 -1
  424. package/dist/hooks/containerReveal.pool.stylex.js +40 -29
  425. package/dist/hooks/useContainerReveal.d.ts +1 -1
  426. package/dist/hooks/useContainerReveal.d.ts.map +1 -1
  427. package/dist/hooks/useContainerReveal.js +1 -1
  428. package/dist/hooks/useGridFocus.d.ts +8 -6
  429. package/dist/hooks/useGridFocus.d.ts.map +1 -1
  430. package/dist/hooks/useInputContainer.d.ts.map +1 -1
  431. package/dist/hooks/useInputContainer.js +29 -1
  432. package/dist/hooks/useKeyboardHint.d.ts +1 -1
  433. package/dist/hooks/useKeyboardHint.js +1 -1
  434. package/dist/hooks/useListFocus.d.ts +8 -7
  435. package/dist/hooks/useListFocus.d.ts.map +1 -1
  436. package/dist/hooks/useTreeFocus.d.ts.map +1 -1
  437. package/dist/hooks/useTreeFocus.js +13 -2
  438. package/dist/index.d.ts +2 -1
  439. package/dist/index.d.ts.map +1 -1
  440. package/dist/index.js +5 -1
  441. package/dist/theme/Theme.d.ts.map +1 -1
  442. package/dist/theme/Theme.js +2 -7
  443. package/dist/theme/defineTheme.d.ts +6 -0
  444. package/dist/theme/defineTheme.d.ts.map +1 -1
  445. package/dist/theme/defineTheme.js +4 -1
  446. package/dist/theme/expandColorScale.d.ts +19 -2
  447. package/dist/theme/expandColorScale.d.ts.map +1 -1
  448. package/dist/theme/expandColorScale.js +38 -10
  449. package/dist/theme/index.d.ts +6 -4
  450. package/dist/theme/index.d.ts.map +1 -1
  451. package/dist/theme/index.js +2 -1
  452. package/dist/theme/themeRegistry.d.ts +32 -0
  453. package/dist/theme/themeRegistry.d.ts.map +1 -0
  454. package/dist/theme/themeRegistry.js +49 -0
  455. package/dist/theme/types.d.ts +10 -2
  456. package/dist/theme/types.d.ts.map +1 -1
  457. package/dist/theme/useTheme.d.ts +9 -0
  458. package/dist/theme/useTheme.d.ts.map +1 -1
  459. package/dist/theme/useTheme.js +82 -27
  460. package/dist/utils/rtlStyles.d.ts +21 -0
  461. package/dist/utils/rtlStyles.d.ts.map +1 -1
  462. package/dist/utils/rtlStyles.js +26 -1
  463. package/groups.doc.mjs +2 -2
  464. package/locales/en.json +8 -0
  465. package/locales/pseudo.json +6 -0
  466. package/package.json +4 -13
  467. package/src/AlertDialog/AlertDialog.doc.mjs +3 -3
  468. package/src/AlertDialog/AlertDialog.tsx +1 -1
  469. package/src/AlertDialog/useImperativeAlertDialog.doc.mjs +1 -1
  470. package/src/AppShell/AppShell.doc.mjs +3 -3
  471. package/src/AppShell/AppShell.tsx +2 -20
  472. package/src/AppShell/index.ts +20 -1
  473. package/src/AppShell/useAppShellMobile.doc.mjs +2 -2
  474. package/src/AspectRatio/AspectRatio.doc.mjs +3 -3
  475. package/src/AspectRatio/AspectRatio.tsx +1 -1
  476. package/src/Avatar/Avatar.doc.mjs +3 -3
  477. package/src/Avatar/Avatar.tsx +8 -3
  478. package/src/Avatar/AvatarStatusDot.doc.mjs +1 -1
  479. package/src/Avatar/AvatarStatusDot.tsx +2 -27
  480. package/src/Avatar/index.ts +26 -1
  481. package/src/AvatarGroup/AvatarGroup.doc.mjs +3 -3
  482. package/src/AvatarGroup/AvatarGroup.tsx +3 -7
  483. package/src/AvatarGroup/AvatarGroupOverflow.doc.mjs +1 -1
  484. package/src/AvatarGroup/AvatarGroupOverflow.tsx +1 -1
  485. package/src/Badge/Badge.doc.mjs +3 -3
  486. package/src/Badge/Badge.tsx +2 -31
  487. package/src/Badge/index.ts +32 -6
  488. package/src/Banner/Banner.doc.mjs +3 -3
  489. package/src/Banner/Banner.tsx +8 -45
  490. package/src/Banner/index.ts +39 -7
  491. package/src/Blockquote/Blockquote.doc.mjs +3 -3
  492. package/src/Blockquote/Blockquote.tsx +1 -1
  493. package/src/Breadcrumbs/BreadcrumbItem.doc.mjs +1 -1
  494. package/src/Breadcrumbs/BreadcrumbItem.tsx +5 -3
  495. package/src/Breadcrumbs/Breadcrumbs.doc.mjs +3 -3
  496. package/src/Breadcrumbs/Breadcrumbs.tsx +2 -19
  497. package/src/Breadcrumbs/index.ts +19 -5
  498. package/src/Button/Button.doc.mjs +3 -3
  499. package/src/Button/Button.tsx +2 -21
  500. package/src/Button/index.ts +22 -7
  501. package/src/ButtonGroup/ButtonGroup.doc.mjs +3 -3
  502. package/src/ButtonGroup/ButtonGroup.tsx +1 -1
  503. package/src/Calendar/Calendar.doc.mjs +3 -3
  504. package/src/Calendar/Calendar.test.tsx +15 -3
  505. package/src/Calendar/Calendar.tsx +1 -1
  506. package/src/Calendar/styles.ts +2 -2
  507. package/src/Card/Card.doc.mjs +3 -3
  508. package/src/Card/Card.tsx +1 -1
  509. package/src/Carousel/Carousel.doc.mjs +10 -3
  510. package/src/Carousel/Carousel.test.tsx +232 -1
  511. package/src/Carousel/Carousel.tsx +144 -21
  512. package/src/Carousel/index.ts +1 -1
  513. package/src/Center/Center.doc.mjs +41 -3
  514. package/src/Center/Center.test.tsx +75 -0
  515. package/src/Center/Center.tsx +38 -3
  516. package/src/Chat/Chat.doc.mjs +3 -3
  517. package/src/Chat/ChatComposer.doc.mjs +1 -1
  518. package/src/Chat/ChatComposer.tsx +5 -5
  519. package/src/Chat/ChatComposerDrawer.doc.mjs +1 -1
  520. package/src/Chat/ChatComposerDrawer.tsx +3 -3
  521. package/src/Chat/ChatComposerInput.doc.mjs +1 -1
  522. package/src/Chat/ChatComposerInput.tsx +1 -1
  523. package/src/Chat/ChatComposerTokenElement.doc.mjs +1 -1
  524. package/src/Chat/ChatDictationButton.doc.mjs +3 -3
  525. package/src/Chat/ChatDictationButton.tsx +1 -1
  526. package/src/Chat/ChatLayout.doc.mjs +1 -1
  527. package/src/Chat/ChatLayout.test.tsx +57 -0
  528. package/src/Chat/ChatLayout.tsx +23 -2
  529. package/src/Chat/ChatLayoutScrollButton.doc.mjs +1 -1
  530. package/src/Chat/ChatLayoutScrollButton.tsx +1 -1
  531. package/src/Chat/ChatMessage.doc.mjs +1 -1
  532. package/src/Chat/ChatMessage.tsx +1 -1
  533. package/src/Chat/ChatMessageBubble.doc.mjs +1 -1
  534. package/src/Chat/ChatMessageBubble.tsx +1 -1
  535. package/src/Chat/ChatMessageList.doc.mjs +1 -1
  536. package/src/Chat/ChatMessageList.tsx +1 -1
  537. package/src/Chat/ChatMessageMetadata.doc.mjs +1 -1
  538. package/src/Chat/ChatSendButton.doc.mjs +1 -1
  539. package/src/Chat/ChatSendButton.tsx +5 -3
  540. package/src/Chat/ChatSystemMessage.doc.mjs +1 -1
  541. package/src/Chat/ChatSystemMessage.tsx +1 -1
  542. package/src/Chat/ChatTokenizedText.doc.mjs +1 -1
  543. package/src/Chat/ChatTokenizedText.tsx +1 -1
  544. package/src/Chat/ChatToolCalls.doc.mjs +3 -3
  545. package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
  546. package/src/CheckboxInput/CheckboxInput.test.tsx +33 -0
  547. package/src/CheckboxInput/CheckboxInput.tsx +1 -1
  548. package/src/CheckboxList/CheckboxList.doc.mjs +3 -3
  549. package/src/CheckboxList/CheckboxList.tsx +1 -1
  550. package/src/CheckboxList/CheckboxListItem.doc.mjs +1 -1
  551. package/src/CheckboxList/CheckboxListItem.tsx +1 -1
  552. package/src/Citation/Citation.doc.mjs +2 -2
  553. package/src/Citation/Citation.tsx +1 -1
  554. package/src/ClickableCard/ClickableCard.doc.mjs +2 -2
  555. package/src/ClickableCard/ClickableCard.tsx +3 -3
  556. package/src/Code/Code.tsx +2 -2
  557. package/src/CodeBlock/Code.doc.mjs +1 -1
  558. package/src/CodeBlock/CodeBlock.doc.mjs +3 -3
  559. package/src/Collapsible/Collapsible.doc.mjs +3 -3
  560. package/src/Collapsible/Collapsible.tsx +3 -3
  561. package/src/Collapsible/CollapsibleGroup.doc.mjs +1 -1
  562. package/src/Collapsible/CollapsibleGroup.tsx +1 -1
  563. package/src/Collapsible/CollapsibleGroupContext.tsx +1 -1
  564. package/src/Collapsible/useCollapsible.doc.mjs +2 -2
  565. package/src/CommandPalette/CommandPalette.doc.mjs +4 -4
  566. package/src/CommandPalette/CommandPalette.tsx +1 -1
  567. package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +1 -1
  568. package/src/CommandPalette/CommandPaletteEmpty.tsx +1 -1
  569. package/src/CommandPalette/CommandPaletteFooter.doc.mjs +1 -1
  570. package/src/CommandPalette/CommandPaletteFooter.tsx +1 -1
  571. package/src/CommandPalette/CommandPaletteGroup.doc.mjs +1 -1
  572. package/src/CommandPalette/CommandPaletteGroup.tsx +1 -1
  573. package/src/CommandPalette/CommandPaletteInput.doc.mjs +1 -1
  574. package/src/CommandPalette/CommandPaletteInput.tsx +5 -1
  575. package/src/CommandPalette/CommandPaletteItem.doc.mjs +1 -1
  576. package/src/CommandPalette/CommandPaletteItem.tsx +1 -1
  577. package/src/CommandPalette/CommandPaletteList.doc.mjs +1 -1
  578. package/src/CommandPalette/CommandPaletteList.tsx +1 -1
  579. package/src/ContextMenu/ContextMenu.doc.mjs +3 -3
  580. package/src/ContextMenu/ContextMenu.tsx +17 -5
  581. package/src/ContextMenu/ContextMenuItem.doc.mjs +1 -1
  582. package/src/DateInput/DateInput.doc.mjs +3 -3
  583. package/src/DateInput/DateInput.tsx +1 -1
  584. package/src/DateRangeInput/DateRangeInput.doc.mjs +2 -2
  585. package/src/DateRangeInput/DateRangeInput.tsx +1 -1
  586. package/src/DateTimeInput/DateTimeInput.doc.mjs +3 -3
  587. package/src/DateTimeInput/DateTimeInput.tsx +1 -1
  588. package/src/Dialog/Dialog.doc.mjs +9 -5
  589. package/src/Dialog/Dialog.test.tsx +84 -1
  590. package/src/Dialog/Dialog.tsx +87 -45
  591. package/src/Dialog/DialogHeader.doc.mjs +1 -1
  592. package/src/Dialog/DialogHeader.tsx +1 -1
  593. package/src/Dialog/index.ts +18 -1
  594. package/src/Dialog/useImperativeDialog.doc.mjs +1 -1
  595. package/src/Divider/Divider.doc.mjs +3 -3
  596. package/src/Divider/Divider.tsx +2 -19
  597. package/src/Divider/index.ts +19 -5
  598. package/src/DropdownMenu/DropdownMenu.doc.mjs +20 -5
  599. package/src/DropdownMenu/DropdownMenu.test.tsx +122 -0
  600. package/src/DropdownMenu/DropdownMenu.tsx +31 -20
  601. package/src/DropdownMenu/DropdownMenuCheckboxItem.doc.mjs +1 -1
  602. package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +41 -64
  603. package/src/DropdownMenu/DropdownMenuItem.doc.mjs +1 -1
  604. package/src/DropdownMenu/DropdownMenuItem.tsx +1 -1
  605. package/src/DropdownMenu/DropdownMenuRadioGroup.doc.mjs +1 -1
  606. package/src/DropdownMenu/DropdownMenuRadioItem.doc.mjs +1 -1
  607. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +10 -1
  608. package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +64 -0
  609. package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +1 -1
  610. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +17 -0
  611. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +11 -3
  612. package/src/DropdownMenu/renderDropdownItems.tsx +14 -2
  613. package/src/EmptyState/EmptyState.doc.mjs +3 -3
  614. package/src/EmptyState/EmptyState.tsx +1 -1
  615. package/src/Field/Field.doc.mjs +3 -3
  616. package/src/Field/Field.tsx +1 -1
  617. package/src/Field/FieldLabel.doc.mjs +1 -1
  618. package/src/Field/FieldLabel.test.tsx +78 -0
  619. package/src/Field/FieldLabel.tsx +50 -3
  620. package/src/FieldStatus/FieldStatus.doc.mjs +2 -2
  621. package/src/FieldStatus/FieldStatus.tsx +2 -20
  622. package/src/FieldStatus/index.ts +20 -5
  623. package/src/FileInput/FileInput.doc.mjs +3 -3
  624. package/src/FileInput/FileInput.tsx +1 -1
  625. package/src/FormLayout/FormLayout.doc.mjs +3 -3
  626. package/src/FormLayout/FormLayout.tsx +2 -5
  627. package/src/Grid/Grid.doc.mjs +3 -3
  628. package/src/Grid/Grid.tsx +1 -1
  629. package/src/Grid/GridSpan.doc.mjs +1 -1
  630. package/src/Grid/GridSpan.tsx +1 -1
  631. package/src/HStack/HStack.tsx +1 -1
  632. package/src/Heading/Heading.tsx +4 -3
  633. package/src/HoverCard/HoverCard.doc.mjs +3 -3
  634. package/src/HoverCard/HoverCard.tsx +1 -1
  635. package/src/HoverCard/useHoverCard.doc.mjs +2 -2
  636. package/src/Icon/Icon.doc.mjs +4 -3
  637. package/src/Icon/Icon.test.tsx +23 -0
  638. package/src/Icon/Icon.tsx +4 -2
  639. package/src/Icon/globalIconRegistry.test.tsx +87 -1
  640. package/src/Icon/globalIconRegistry.tsx +109 -9
  641. package/src/Icon/index.ts +9 -7
  642. package/src/Icon/useIcon.ts +23 -0
  643. package/src/IconButton/IconButton.doc.mjs +2 -2
  644. package/src/IconButton/IconButton.tsx +1 -1
  645. package/src/InputGroup/InputGroup.doc.mjs +2 -2
  646. package/src/InputGroup/InputGroup.tsx +1 -1
  647. package/src/InputGroup/InputGroupText.doc.mjs +1 -1
  648. package/src/InputGroup/InputGroupText.tsx +1 -1
  649. package/src/Item/Item.doc.mjs +3 -3
  650. package/src/Item/Item.tsx +1 -1
  651. package/src/Kbd/Kbd.doc.mjs +3 -3
  652. package/src/Kbd/Kbd.tsx +1 -1
  653. package/src/Layer/Layer.doc.mjs +2 -2
  654. package/src/Layer/useLayer.doc.mjs +2 -2
  655. package/src/Layout/Layout.doc.mjs +3 -3
  656. package/src/Layout/Layout.tsx +1 -1
  657. package/src/Layout/LayoutContent.doc.mjs +1 -1
  658. package/src/Layout/LayoutContent.tsx +1 -1
  659. package/src/Layout/LayoutFooter.doc.mjs +1 -1
  660. package/src/Layout/LayoutFooter.tsx +1 -1
  661. package/src/Layout/LayoutHeader.doc.mjs +1 -1
  662. package/src/Layout/LayoutHeader.tsx +1 -1
  663. package/src/Layout/LayoutPanel.doc.mjs +1 -1
  664. package/src/Layout/LayoutPanel.tsx +1 -1
  665. package/src/Lightbox/Lightbox.doc.mjs +3 -3
  666. package/src/Lightbox/Lightbox.test.tsx +33 -0
  667. package/src/Lightbox/Lightbox.tsx +16 -4
  668. package/src/Link/Link.doc.mjs +3 -3
  669. package/src/Link/Link.tsx +1 -1
  670. package/src/Link/LinkProvider.doc.mjs +2 -2
  671. package/src/Link/LinkProvider.tsx +2 -2
  672. package/src/List/List.doc.mjs +3 -3
  673. package/src/List/List.tsx +1 -1
  674. package/src/List/ListItem.doc.mjs +2 -2
  675. package/src/List/ListItem.tsx +1 -1
  676. package/src/Markdown/Markdown.doc.mjs +81 -1
  677. package/src/Markdown/Markdown.test.tsx +92 -0
  678. package/src/Markdown/Markdown.tsx +96 -68
  679. package/src/Markdown/parser.perf.test.ts +47 -35
  680. package/src/MetadataList/MetadataList.doc.mjs +3 -3
  681. package/src/MetadataList/MetadataList.tsx +1 -1
  682. package/src/MetadataList/MetadataListItem.doc.mjs +1 -1
  683. package/src/MetadataList/MetadataListItem.tsx +1 -1
  684. package/src/MobileNav/MobileNav.doc.mjs +3 -3
  685. package/src/MobileNav/MobileNav.tsx +1 -1
  686. package/src/MoreMenu/MoreMenu.doc.mjs +3 -3
  687. package/src/MoreMenu/MoreMenu.tsx +3 -3
  688. package/src/MultiSelector/MultiSelector.doc.mjs +4 -4
  689. package/src/MultiSelector/MultiSelector.test.tsx +175 -0
  690. package/src/MultiSelector/MultiSelector.tsx +59 -38
  691. package/src/NavIcon/NavIcon.doc.mjs +3 -3
  692. package/src/NavIcon/NavIcon.tsx +1 -1
  693. package/src/NavMenu/NavMenu.doc.mjs +2 -2
  694. package/src/NumberInput/NumberInput.doc.mjs +3 -3
  695. package/src/NumberInput/NumberInput.tsx +1 -1
  696. package/src/Outline/Outline.doc.mjs +3 -3
  697. package/src/Outline/Outline.tsx +1 -1
  698. package/src/OverflowList/OverflowList.doc.mjs +3 -3
  699. package/src/OverflowList/OverflowList.tsx +1 -1
  700. package/src/Overlay/Overlay.doc.mjs +2 -2
  701. package/src/Pagination/Pagination.doc.mjs +3 -3
  702. package/src/Pagination/Pagination.tsx +2 -22
  703. package/src/Pagination/index.ts +21 -1
  704. package/src/Popover/Popover.doc.mjs +31 -3
  705. package/src/Popover/Popover.test.tsx +41 -0
  706. package/src/Popover/Popover.tsx +25 -2
  707. package/src/Popover/usePopover.doc.mjs +2 -2
  708. package/src/Popover/usePopover.tsx +10 -4
  709. package/src/PowerSearch/PowerSearch.doc.mjs +3 -3
  710. package/src/PowerSearch/PowerSearch.tsx +1 -1
  711. package/src/ProgressBar/ProgressBar.doc.mjs +3 -3
  712. package/src/ProgressBar/ProgressBar.tsx +2 -22
  713. package/src/ProgressBar/index.ts +22 -5
  714. package/src/RadioList/RadioList.doc.mjs +3 -3
  715. package/src/RadioList/RadioList.tsx +1 -1
  716. package/src/RadioList/RadioListItem.doc.mjs +1 -1
  717. package/src/RadioList/RadioListItem.tsx +1 -1
  718. package/src/Resizable/Resizable.doc.mjs +2 -2
  719. package/src/Resizable/ResizeHandle.test.tsx +3 -2
  720. package/src/Resizable/ResizeHandle.tsx +8 -12
  721. package/src/Resizable/useResizable.doc.mjs +2 -2
  722. package/src/Section/Section.doc.mjs +3 -3
  723. package/src/Section/Section.tsx +2 -20
  724. package/src/Section/index.ts +20 -5
  725. package/src/SegmentedControl/SegmentedControl.doc.mjs +3 -3
  726. package/src/SegmentedControl/SegmentedControl.tsx +1 -1
  727. package/src/SegmentedControl/SegmentedControlItem.doc.mjs +1 -1
  728. package/src/SegmentedControl/SegmentedControlItem.tsx +1 -1
  729. package/src/SelectableCard/SelectableCard.doc.mjs +4 -2
  730. package/src/SelectableCard/SelectableCard.test.tsx +55 -0
  731. package/src/SelectableCard/SelectableCard.tsx +19 -3
  732. package/src/Selector/Selector.doc.mjs +4 -4
  733. package/src/Selector/Selector.test.tsx +152 -0
  734. package/src/Selector/Selector.tsx +59 -38
  735. package/src/Selector/SelectorOption.doc.mjs +1 -1
  736. package/src/SideNav/SideNav.doc.mjs +3 -3
  737. package/src/SideNav/SideNav.tsx +1 -1
  738. package/src/SideNav/SideNavCollapseButton.doc.mjs +1 -1
  739. package/src/SideNav/SideNavCollapseButton.tsx +4 -3
  740. package/src/SideNav/SideNavHeading.doc.mjs +1 -1
  741. package/src/SideNav/SideNavHeading.tsx +8 -9
  742. package/src/SideNav/SideNavItem.doc.mjs +1 -1
  743. package/src/SideNav/SideNavItem.tsx +5 -6
  744. package/src/SideNav/SideNavSection.doc.mjs +1 -1
  745. package/src/SideNav/SideNavSection.tsx +1 -1
  746. package/src/Skeleton/Skeleton.doc.mjs +3 -3
  747. package/src/Skeleton/Skeleton.tsx +1 -1
  748. package/src/Slider/Slider.doc.mjs +3 -3
  749. package/src/Slider/Slider.tsx +9 -13
  750. package/src/Spinner/Spinner.doc.mjs +3 -3
  751. package/src/Spinner/Spinner.tsx +1 -1
  752. package/src/Stack/Stack.doc.mjs +3 -3
  753. package/src/Stack/Stack.tsx +1 -1
  754. package/src/Stack/StackItem.tsx +1 -1
  755. package/src/StatusDot/StatusDot.doc.mjs +3 -3
  756. package/src/StatusDot/StatusDot.tsx +2 -22
  757. package/src/StatusDot/index.ts +22 -5
  758. package/src/Switch/Switch.doc.mjs +3 -3
  759. package/src/Switch/Switch.test.tsx +34 -0
  760. package/src/Switch/Switch.tsx +1 -1
  761. package/src/TabList/Tab.doc.mjs +1 -1
  762. package/src/TabList/Tab.tsx +1 -1
  763. package/src/TabList/TabList.doc.mjs +3 -3
  764. package/src/TabList/TabList.tsx +1 -1
  765. package/src/TabList/TabMenu.doc.mjs +1 -1
  766. package/src/TabList/TabMenu.tsx +1 -1
  767. package/src/Table/BaseTable.tsx +1 -1
  768. package/src/Table/Table.doc.mjs +3 -3
  769. package/src/Table/Table.tsx +1 -1
  770. package/src/Table/TableCell.doc.mjs +1 -1
  771. package/src/Table/TableCell.tsx +1 -1
  772. package/src/Table/TableHeaderCell.doc.mjs +1 -1
  773. package/src/Table/TableHeaderCell.tsx +1 -1
  774. package/src/Table/TableRow.doc.mjs +1 -1
  775. package/src/Table/TableRow.tsx +1 -1
  776. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +21 -3
  777. package/src/Table/plugins/tree/useTableTreeData.test.tsx +161 -2
  778. package/src/Table/plugins/tree/useTableTreeData.tsx +54 -1
  779. package/src/Table/useTableColumnResize.doc.mjs +1 -1
  780. package/src/Table/useTableColumnSettings.doc.mjs +1 -1
  781. package/src/Table/useTableFilterState.doc.mjs +1 -1
  782. package/src/Table/useTableFiltering.doc.mjs +1 -1
  783. package/src/Table/useTableGroupedRows.doc.mjs +2 -2
  784. package/src/Table/useTablePagination.doc.mjs +1 -1
  785. package/src/Table/useTableRowExpansion.doc.mjs +57 -4
  786. package/src/Table/useTableRowIndex.doc.mjs +2 -2
  787. package/src/Table/useTableRowStatus.doc.mjs +2 -2
  788. package/src/Table/useTableSelection.doc.mjs +1 -1
  789. package/src/Table/useTableSelectionState.doc.mjs +1 -1
  790. package/src/Table/useTableSortable.doc.mjs +1 -1
  791. package/src/Table/useTableStickyColumns.doc.mjs +1 -1
  792. package/src/Table/useTableTreeData.doc.mjs +10 -1
  793. package/src/Table/useTableTreeState.doc.mjs +1 -1
  794. package/src/Text/Heading.doc.mjs +4 -4
  795. package/src/Text/Text.doc.mjs +4 -4
  796. package/src/Text/Text.test.tsx +42 -0
  797. package/src/Text/Text.tsx +26 -2
  798. package/src/Text/index.ts +32 -6
  799. package/src/TextArea/TextArea.doc.mjs +5 -5
  800. package/src/TextArea/TextArea.test.tsx +112 -7
  801. package/src/TextArea/TextArea.tsx +143 -50
  802. package/src/TextInput/TextInput.doc.mjs +3 -3
  803. package/src/TextInput/TextInput.tsx +1 -1
  804. package/src/Thumbnail/Thumbnail.doc.mjs +2 -2
  805. package/src/Thumbnail/Thumbnail.test.tsx +24 -1
  806. package/src/Thumbnail/Thumbnail.tsx +10 -3
  807. package/src/TimeInput/TimeInput.doc.mjs +3 -3
  808. package/src/TimeInput/TimeInput.tsx +1 -1
  809. package/src/Timestamp/Timestamp.doc.mjs +5 -5
  810. package/src/Timestamp/Timestamp.test.tsx +131 -0
  811. package/src/Timestamp/Timestamp.tsx +92 -9
  812. package/src/Timestamp/formatInstant.ts +3 -4
  813. package/src/Timestamp/tooltipEntries.ts +3 -2
  814. package/src/Toast/Toast.doc.mjs +3 -3
  815. package/src/Toast/useToast.doc.mjs +2 -2
  816. package/src/ToggleButton/ToggleButton.doc.mjs +3 -3
  817. package/src/ToggleButton/ToggleButton.tsx +1 -1
  818. package/src/ToggleButton/ToggleButtonGroup.doc.mjs +1 -1
  819. package/src/ToggleButton/ToggleButtonGroup.tsx +3 -6
  820. package/src/Token/Token.doc.mjs +3 -3
  821. package/src/Token/Token.tsx +2 -28
  822. package/src/Token/index.ts +28 -1
  823. package/src/Tokenizer/Tokenizer.doc.mjs +3 -3
  824. package/src/Tokenizer/Tokenizer.tsx +1 -1
  825. package/src/Toolbar/Toolbar.doc.mjs +3 -3
  826. package/src/Toolbar/Toolbar.tsx +1 -1
  827. package/src/Tooltip/Tooltip.doc.mjs +3 -3
  828. package/src/Tooltip/Tooltip.tsx +1 -1
  829. package/src/Tooltip/useTooltip.doc.mjs +2 -2
  830. package/src/TopNav/TopNav.doc.mjs +3 -3
  831. package/src/TopNav/TopNav.tsx +1 -1
  832. package/src/TopNav/TopNavHeading.doc.mjs +1 -1
  833. package/src/TopNav/TopNavHeading.tsx +7 -8
  834. package/src/TopNav/TopNavItem.doc.mjs +1 -1
  835. package/src/TopNav/TopNavItem.tsx +1 -1
  836. package/src/TopNav/TopNavMegaMenu.doc.mjs +1 -1
  837. package/src/TopNav/TopNavMegaMenu.tsx +6 -4
  838. package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +1 -1
  839. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +1 -1
  840. package/src/TopNav/TopNavMegaMenuItem.doc.mjs +1 -1
  841. package/src/TopNav/TopNavMegaMenuItem.tsx +1 -1
  842. package/src/TopNav/TopNavMenu.doc.mjs +1 -1
  843. package/src/TopNav/TopNavMenu.tsx +5 -4
  844. package/src/TreeList/TreeList.doc.mjs +3 -3
  845. package/src/TreeList/TreeList.tsx +1 -1
  846. package/src/TreeList/TreeListBranches.tsx +1 -1
  847. package/src/TreeList/TreeListItem.tsx +4 -3
  848. package/src/TreeList/TreeListTypes.ts +1 -18
  849. package/src/TreeList/index.ts +19 -1
  850. package/src/Typeahead/BaseTypeahead.doc.mjs +1 -1
  851. package/src/Typeahead/BaseTypeahead.tsx +1 -1
  852. package/src/Typeahead/Typeahead.doc.mjs +3 -3
  853. package/src/Typeahead/Typeahead.tsx +1 -1
  854. package/src/Typeahead/TypeaheadItem.doc.mjs +1 -1
  855. package/src/Typeahead/TypeaheadItem.tsx +1 -1
  856. package/src/VStack/VStack.tsx +1 -1
  857. package/src/VisuallyHidden/VisuallyHidden.doc.mjs +3 -3
  858. package/src/VisuallyHidden/VisuallyHidden.tsx +1 -1
  859. package/src/__tests__/babelPluginAddExtensions.test.ts +190 -0
  860. package/src/__tests__/inputWidthContract.test.tsx +8 -1
  861. package/src/doc-mjs.d.ts +5 -2
  862. package/src/docPropLiterals.test.ts +1 -1
  863. package/src/docPropReferences.test.ts +1 -1
  864. package/src/hooks/containerReveal.pool.stylex.ts +154 -47
  865. package/src/hooks/useClickableContainer.doc.mjs +2 -2
  866. package/src/hooks/useContainerReveal.doc.mjs +75 -0
  867. package/src/hooks/useContainerReveal.ts +5 -4
  868. package/src/hooks/useEntryAnimation.doc.mjs +2 -2
  869. package/src/hooks/useFocusTrap.doc.mjs +2 -2
  870. package/src/hooks/useGridFocus.doc.mjs +2 -2
  871. package/src/hooks/useGridFocus.ts +8 -6
  872. package/src/hooks/useHotkeys.doc.mjs +2 -2
  873. package/src/hooks/useImageMode.doc.mjs +2 -2
  874. package/src/hooks/useInputContainer.doc.mjs +2 -2
  875. package/src/hooks/useInputContainer.test.tsx +180 -0
  876. package/src/hooks/useInputContainer.ts +36 -1
  877. package/src/hooks/useKeyboardHint.doc.mjs +2 -2
  878. package/src/hooks/useKeyboardHint.tsx +1 -1
  879. package/src/hooks/useListFocus.doc.mjs +2 -2
  880. package/src/hooks/useListFocus.ts +8 -7
  881. package/src/hooks/useMediaQuery.doc.mjs +2 -2
  882. package/src/hooks/useOverflow.doc.mjs +2 -2
  883. package/src/hooks/useScrollLock.doc.mjs +2 -2
  884. package/src/hooks/useScrollOverflow.doc.mjs +2 -2
  885. package/src/hooks/useStreamingText.doc.mjs +2 -2
  886. package/src/hooks/useTreeFocus.doc.mjs +2 -2
  887. package/src/hooks/useTreeFocus.test.tsx +53 -1
  888. package/src/hooks/useTreeFocus.ts +13 -2
  889. package/src/i18n/InternationalizationProvider.doc.mjs +2 -2
  890. package/src/i18n/useTranslator.doc.mjs +2 -2
  891. package/src/index.ts +14 -10
  892. package/src/theme/MediaTheme.doc.mjs +2 -2
  893. package/src/theme/SyntaxTheme.doc.mjs +2 -2
  894. package/src/theme/Theme.doc.mjs +2 -2
  895. package/src/theme/Theme.tsx +3 -7
  896. package/src/theme/defineTheme.ts +11 -1
  897. package/src/theme/expandColorScale.test.ts +144 -0
  898. package/src/theme/expandColorScale.ts +53 -15
  899. package/src/theme/index.ts +11 -9
  900. package/src/theme/themeRegistry.test.ts +59 -0
  901. package/src/theme/themeRegistry.ts +53 -0
  902. package/src/theme/types.ts +14 -13
  903. package/src/theme/useTheme.doc.mjs +2 -2
  904. package/src/theme/useTheme.test.tsx +48 -3
  905. package/src/theme/useTheme.ts +100 -29
  906. package/src/utils/rtlStyles.ts +22 -0
  907. package/dist/authoring/doc.d.ts +0 -145
  908. package/dist/authoring/doc.d.ts.map +0 -1
  909. package/dist/authoring/doc.js +0 -100
  910. package/dist/authoring/index.d.ts +0 -29
  911. package/dist/authoring/index.d.ts.map +0 -1
  912. package/dist/authoring/index.js +0 -28
  913. package/dist/authoring/integration.d.ts +0 -35
  914. package/dist/authoring/integration.d.ts.map +0 -1
  915. package/dist/authoring/integration.js +0 -30
  916. package/dist/authoring/template.d.ts +0 -66
  917. package/dist/authoring/template.d.ts.map +0 -1
  918. package/dist/authoring/template.js +0 -55
  919. package/dist/config.d.ts +0 -80
  920. package/dist/config.d.ts.map +0 -1
  921. package/dist/config.js +0 -40
  922. package/dist/docs-types.d.ts +0 -969
  923. package/dist/docs-types.d.ts.map +0 -1
  924. package/dist/docs-types.js +0 -1
  925. package/src/authoring/doc.ts +0 -164
  926. package/src/authoring/index.test.ts +0 -52
  927. package/src/authoring/index.ts +0 -50
  928. package/src/authoring/integration.ts +0 -42
  929. package/src/authoring/template.ts +0 -74
  930. package/src/config.test.ts +0 -16
  931. package/src/config.ts +0 -92
  932. package/src/docs-types.ts +0 -1108
@@ -12,7 +12,7 @@
12
12
  * - /packages/core/src/SegmentedControl/SegmentedControl.doc.mjs
13
13
  * - /packages/core/src/SegmentedControl/index.ts
14
14
  * - /packages/core/src/SegmentedControl/SegmentedControl.test.tsx
15
- * - /packages/cli/templates/blocks/components/SegmentedControl/ (showcase blocks)
15
+ * - /packages/cli/assets/templates/blocks/components/SegmentedControl/ (showcase blocks)
16
16
  */
17
17
 
18
18
  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
  export const docs = {
5
5
  name: 'SelectableCard',
6
6
  displayName: 'Selectable Card',
@@ -12,6 +12,7 @@ export const docs = {
12
12
  bestPractices: [
13
13
  {guidance: true, description: 'Use for plan pickers, filter chips, or option grids.'},
14
14
  {guidance: true, description: 'For single-select track one ID; for multi-select use a Set.'},
15
+ {guidance: true, description: 'When focused, toggle selection with Space or Enter.'},
15
16
  {guidance: false, description: 'Use for navigation; use ClickableCard for that.'},
16
17
  ],
17
18
  anatomy: [
@@ -54,7 +55,7 @@ export const docs = {
54
55
  },
55
56
  };
56
57
 
57
- /** @type {import('../docs-types').TranslationDoc} */
58
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
58
59
  export const docsDense = {
59
60
  description: 'Card toggling between selected/unselected states w/ accent border. For navigation use ClickableCard instead.',
60
61
  usage: {
@@ -62,6 +63,7 @@ export const docsDense = {
62
63
  bestPractices: [
63
64
  {guidance: true, description: 'Use for plan pickers, filter chips, option grids.'},
64
65
  {guidance: true, description: 'For single-select track one ID; for multi-select use a Set.'},
66
+ {guidance: true, description: 'When focused, toggle selection with Space or Enter.'},
65
67
  {guidance: false, description: 'Use for navigation; use ClickableCard instead.'},
66
68
  ],
67
69
  },
@@ -108,6 +108,61 @@ describe('SelectableCard', () => {
108
108
  expect(handleChange).not.toHaveBeenCalled();
109
109
  });
110
110
 
111
+ it('calls onChange with true when Enter is pressed on the checkbox (unselected)', () => {
112
+ const handleChange = vi.fn();
113
+ render(
114
+ <SelectableCard label="Test" isSelected={false} onChange={handleChange}>
115
+ Content
116
+ </SelectableCard>,
117
+ );
118
+ const checkbox = screen.getByRole('checkbox', {name: 'Test'});
119
+ fireEvent.keyDown(checkbox, {key: 'Enter'});
120
+ expect(handleChange).toHaveBeenCalledWith(true);
121
+ });
122
+
123
+ it('calls onChange with false when Enter is pressed on the checkbox (selected)', () => {
124
+ const handleChange = vi.fn();
125
+ render(
126
+ <SelectableCard label="Test" isSelected={true} onChange={handleChange}>
127
+ Content
128
+ </SelectableCard>,
129
+ );
130
+ const checkbox = screen.getByRole('checkbox', {name: 'Test'});
131
+ fireEvent.keyDown(checkbox, {key: 'Enter'});
132
+ expect(handleChange).toHaveBeenCalledWith(false);
133
+ });
134
+
135
+ it('does not toggle on Enter when disabled', () => {
136
+ const handleChange = vi.fn();
137
+ render(
138
+ <SelectableCard
139
+ label="Disabled"
140
+ isSelected={false}
141
+ onChange={handleChange}
142
+ isDisabled>
143
+ Content
144
+ </SelectableCard>,
145
+ );
146
+ const checkbox = screen.getByRole('checkbox', {name: 'Disabled'});
147
+ fireEvent.keyDown(checkbox, {key: 'Enter'});
148
+ expect(handleChange).not.toHaveBeenCalled();
149
+ });
150
+
151
+ it('toggles exactly once on Space (native), not doubled by the Enter handler', () => {
152
+ const handleChange = vi.fn();
153
+ render(
154
+ <SelectableCard label="Test" isSelected={false} onChange={handleChange}>
155
+ Content
156
+ </SelectableCard>,
157
+ );
158
+ const checkbox = screen.getByRole('checkbox', {name: 'Test'});
159
+ // Space activates the native checkbox, firing a single change event.
160
+ fireEvent.click(checkbox);
161
+ fireEvent.keyDown(checkbox, {key: ' '});
162
+ expect(handleChange).toHaveBeenCalledTimes(1);
163
+ expect(handleChange).toHaveBeenCalledWith(true);
164
+ });
165
+
111
166
  describe('elevation', () => {
112
167
  const noop = () => {};
113
168
 
@@ -12,9 +12,9 @@
12
12
  * - /packages/core/src/SelectableCard/SelectableCard.doc.mjs (props table, features)
13
13
  * - /packages/core/src/SelectableCard/index.ts (exports if types change)
14
14
  * - /apps/storybook/stories/SelectableCard.stories.tsx (storybook stories)
15
- * - /packages/cli/templates/blocks/components/Card/SelectableCardShowcase.tsx (showcase block)
16
- * - /packages/cli/templates/blocks/components/Card/SelectableCardMulti.tsx (block)
17
- * - /packages/cli/templates/blocks/components/Card/SelectableCardElevated.tsx (block)
15
+ * - /packages/cli/assets/templates/blocks/components/Card/SelectableCardShowcase.tsx (showcase block)
16
+ * - /packages/cli/assets/templates/blocks/components/Card/SelectableCardMulti.tsx (block)
17
+ * - /packages/cli/assets/templates/blocks/components/Card/SelectableCardElevated.tsx (block)
18
18
  *
19
19
  * Composes Card for all visual styling. Adds selection state with
20
20
  * an inset box-shadow (zero layout jitter) and useClickableContainer
@@ -22,6 +22,7 @@
22
22
  *
23
23
  * A hidden <input type="checkbox"> inside the card provides the accessible
24
24
  * role, label, and checked state — the card surface itself has no role/tabIndex.
25
+ * Space toggles it natively; Enter is wired up as an additional toggle key.
25
26
  *
26
27
  * For static display, use Card.
27
28
  * For navigation or action cards, use ClickableCard.
@@ -30,6 +31,7 @@
30
31
  import {
31
32
  type ReactNode,
32
33
  type MouseEvent,
34
+ type KeyboardEvent,
33
35
  useRef,
34
36
  useCallback,
35
37
  type Ref,
@@ -311,6 +313,19 @@ export function SelectableCard({
311
313
  [isDisabled, isSelected, onChange],
312
314
  );
313
315
 
316
+ // The focusable control is a native checkbox, which toggles on Space but
317
+ // ignores Enter. Add Enter as an extra toggle key; Space keeps its native
318
+ // handling, so we deliberately do not toggle on Space here (would double).
319
+ const handleKeyDown = useCallback(
320
+ (event: KeyboardEvent<HTMLInputElement>) => {
321
+ if (!isDisabled && event.key === 'Enter') {
322
+ event.preventDefault();
323
+ onChange(!isSelected);
324
+ }
325
+ },
326
+ [isDisabled, isSelected, onChange],
327
+ );
328
+
314
329
  const {onClick, onMouseUp} = useClickableContainer({
315
330
  containerRef,
316
331
  interactiveRef,
@@ -369,6 +384,7 @@ export function SelectableCard({
369
384
  aria-label={label}
370
385
  disabled={isDisabled}
371
386
  onChange={() => onChange(!isSelected)}
387
+ onKeyDown={handleKeyDown}
372
388
  {...stylex.props(styles.srOnly)}
373
389
  />
374
390
  {children}
@@ -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: 'Selector',
@@ -63,7 +63,7 @@ export const docs = {
63
63
  name: 'hasSearch',
64
64
  type: 'boolean',
65
65
  description:
66
- 'Whether to show a search input for filtering options. As the user types, the match count (or "No results found") is announced to screen readers via a polite live region.',
66
+ 'Whether to show a search input for filtering options. As the user types, the match count (or "No results found") is announced to screen readers via a polite live region. The search field has built-in affordances: a leading magnifier icon and, once a query is typed, a trailing clear (✕) button that resets the query and returns focus to the input.',
67
67
  default: 'false',
68
68
  },
69
69
  {
@@ -252,7 +252,7 @@ export const docs = {
252
252
  },
253
253
  };
254
254
 
255
- /** @type {import('../docs-types').TranslationDoc} */
255
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
256
256
  export const docsZh = {
257
257
  usage: {
258
258
  description:
@@ -344,7 +344,7 @@ export const docsZh = {
344
344
  },
345
345
  };
346
346
 
347
- /** @type {import('../docs-types').TranslationDoc} */
347
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
348
348
  export const docsDense = {
349
349
  usage: {
350
350
  description:
@@ -1241,6 +1241,36 @@ describe('Selector statusVariant forwarding', () => {
1241
1241
  'detached',
1242
1242
  );
1243
1243
  });
1244
+
1245
+ it('keeps the on-field status icon for the attached variant', () => {
1246
+ const {container} = render(
1247
+ <Selector
1248
+ label="Fruit"
1249
+ options={['Apple', 'Banana']}
1250
+ status={{type: 'error', message: 'Required'}}
1251
+ />,
1252
+ );
1253
+ // Attached: the status glyph replaces the chevron indicator on the field.
1254
+ expect(
1255
+ container.querySelector('.astryx-selector-indicator-icon'),
1256
+ ).toBeNull();
1257
+ });
1258
+
1259
+ it('suppresses the on-field status icon for the detached variant', () => {
1260
+ const {container} = render(
1261
+ <Selector
1262
+ label="Fruit"
1263
+ options={['Apple', 'Banana']}
1264
+ status={{type: 'error', message: 'Required'}}
1265
+ statusVariant="detached"
1266
+ />,
1267
+ );
1268
+ // Detached: the message box below carries its own leading icon, so the
1269
+ // field keeps its chevron indicator rather than duplicating the glyph.
1270
+ expect(
1271
+ container.querySelector('.astryx-selector-indicator-icon'),
1272
+ ).not.toBeNull();
1273
+ });
1244
1274
  });
1245
1275
 
1246
1276
  describe('Selector clear icon theme target', () => {
@@ -1443,3 +1473,125 @@ describe('Selector indicator (chevron) icon theme target', () => {
1443
1473
  expect(css).toContain('color: var(--color-icon-primary)');
1444
1474
  });
1445
1475
  });
1476
+
1477
+ describe('Selector search affordances', () => {
1478
+ it('renders a decorative (aria-hidden) magnifier icon whenever hasSearch is on', async () => {
1479
+ const user = userEvent.setup();
1480
+ render(
1481
+ <Selector
1482
+ label="Fruit"
1483
+ options={OPTIONS}
1484
+ value="Apple"
1485
+ onChange={() => {}}
1486
+ hasSearch
1487
+ />,
1488
+ );
1489
+ await user.click(screen.getByRole('button', {name: 'Fruit'}));
1490
+ const search = screen.getByRole('combobox', {hidden: true});
1491
+ // The search field is a TextInput; the magnifier is its startIcon, so it
1492
+ // sits inside the input container as a sibling of the <input>.
1493
+ const container = search.parentElement;
1494
+ const magnifier = container?.querySelector('.astryx-icon');
1495
+ expect(magnifier).toBeTruthy();
1496
+ // Decorative: the icon is hidden from assistive tech and carries no name.
1497
+ expect(magnifier?.getAttribute('aria-hidden')).toBe('true');
1498
+ expect(magnifier?.getAttribute('aria-label')).toBeNull();
1499
+ });
1500
+
1501
+ it('renders the clear button once a query is typed and clears + refocuses on click', async () => {
1502
+ const user = userEvent.setup();
1503
+ render(
1504
+ <Selector
1505
+ label="Fruit"
1506
+ options={OPTIONS}
1507
+ value="Apple"
1508
+ onChange={() => {}}
1509
+ hasSearch
1510
+ />,
1511
+ );
1512
+ await user.click(screen.getByRole('button', {name: 'Fruit'}));
1513
+ const search = screen.getByRole('combobox', {hidden: true});
1514
+ await user.type(search, 'ap');
1515
+ expect(search).toHaveValue('ap');
1516
+
1517
+ // The clear button is TextInput's built-in hasClear affordance; its name is
1518
+ // derived from the field label ("Search options").
1519
+ const clear = screen.getByRole('button', {
1520
+ name: 'Clear Search options',
1521
+ hidden: true,
1522
+ });
1523
+
1524
+ await user.click(clear);
1525
+ expect(search).toHaveValue('');
1526
+ expect(search).toHaveFocus();
1527
+ });
1528
+
1529
+ it('does not render the clear button when the query is empty', async () => {
1530
+ const user = userEvent.setup();
1531
+ render(
1532
+ <Selector
1533
+ label="Fruit"
1534
+ options={OPTIONS}
1535
+ value="Apple"
1536
+ onChange={() => {}}
1537
+ hasSearch
1538
+ />,
1539
+ );
1540
+ await user.click(screen.getByRole('button', {name: 'Fruit'}));
1541
+ expect(
1542
+ screen.queryByRole('button', {
1543
+ name: 'Clear Search options',
1544
+ hidden: true,
1545
+ }),
1546
+ ).not.toBeInTheDocument();
1547
+ });
1548
+
1549
+ it('keeps the combobox contract on the input, not the affordances', async () => {
1550
+ const user = userEvent.setup();
1551
+ render(
1552
+ <Selector
1553
+ label="Fruit"
1554
+ options={OPTIONS}
1555
+ value="Apple"
1556
+ onChange={() => {}}
1557
+ hasSearch
1558
+ />,
1559
+ );
1560
+ await user.click(screen.getByRole('button', {name: 'Fruit'}));
1561
+ // Exactly one combobox — the input. The magnifier and clear button are not
1562
+ // part of the combobox contract.
1563
+ const comboboxes = screen.getAllByRole('combobox', {hidden: true});
1564
+ expect(comboboxes).toHaveLength(1);
1565
+ expect(comboboxes[0].tagName).toBe('INPUT');
1566
+ expect(comboboxes[0]).toHaveAttribute('aria-autocomplete', 'list');
1567
+ });
1568
+
1569
+ it('tabs from the search input to the clear button (keeping the popup open) when a query is showing it', async () => {
1570
+ const user = userEvent.setup();
1571
+ render(
1572
+ <Selector
1573
+ label="Fruit"
1574
+ options={OPTIONS}
1575
+ value="Apple"
1576
+ onChange={() => {}}
1577
+ hasSearch
1578
+ />,
1579
+ );
1580
+ await user.click(screen.getByRole('button', {name: 'Fruit'}));
1581
+ const trigger = screen.getByRole('button', {name: 'Fruit'});
1582
+ const search = screen.getByRole('combobox', {hidden: true});
1583
+ await user.type(search, 'ap');
1584
+ expect(search).toHaveFocus();
1585
+
1586
+ // Forward-tab lands on the clear (✕) button and the popup stays open, so
1587
+ // the affordance is keyboard-reachable rather than being skipped when the
1588
+ // input's Tab dismisses the popup.
1589
+ await user.tab();
1590
+ const clear = screen.getByRole('button', {
1591
+ name: 'Clear Search options',
1592
+ hidden: true,
1593
+ });
1594
+ expect(clear).toHaveFocus();
1595
+ expect(trigger).toHaveAttribute('aria-expanded', 'true');
1596
+ });
1597
+ });
@@ -13,7 +13,7 @@
13
13
  * - /packages/core/src/Selector/Selector.test.tsx
14
14
  * - /packages/core/src/Selector/index.ts
15
15
  * - /apps/storybook/stories/InputGroup.stories.tsx
16
- * - /packages/cli/templates/blocks/components/Selector/ (showcase blocks)
16
+ * - /packages/cli/assets/templates/blocks/components/Selector/ (showcase blocks)
17
17
  */
18
18
 
19
19
  import React, {
@@ -43,6 +43,7 @@ import {Divider} from '../Divider';
43
43
  import {layerAnimations} from '../Layer/layerAnimations.stylex';
44
44
  import type {LayerPlacement} from '../Layer/useLayer';
45
45
  import {Spinner} from '../Spinner';
46
+ import {TextInput} from '../TextInput';
46
47
  import {useAnnounce} from '../hooks/useAnnounce';
47
48
  import {
48
49
  colorVars,
@@ -191,33 +192,15 @@ const styles = stylex.create({
191
192
  popover: {
192
193
  minWidth: 'anchor-size(width)',
193
194
  },
194
- // Search input
195
+ // Search field. The inner TextInput owns the border, focus ring, magnifier
196
+ // (startIcon), and clear button (hasClear); this wrapper only supplies the
197
+ // dropdown's inline/block padding around it.
195
198
  searchWrapper: {
199
+ display: 'flex',
200
+ alignItems: 'center',
196
201
  paddingInline: spacingVars['--spacing-2'],
197
202
  paddingBlock: spacingVars['--spacing-1'],
198
203
  },
199
- searchInput: {
200
- boxSizing: 'border-box',
201
- width: '100%',
202
- paddingBlock: spacingVars['--spacing-1'],
203
- paddingInline: spacingVars['--spacing-2'],
204
- borderWidth: borderVars['--border-width'],
205
- borderStyle: 'solid',
206
- borderColor: colorVars['--color-border-emphasized'],
207
- borderRadius: radiusVars['--radius-element'],
208
- backgroundColor: colorVars['--color-background-surface'],
209
- fontFamily: typographyVars['--font-family-body'],
210
- fontSize: {
211
- default: typeScaleVars['--text-label-size'],
212
- '@media (pointer: coarse)': `max(1rem, ${typeScaleVars['--text-label-size']})`,
213
- },
214
- color: colorVars['--color-text-primary'],
215
- outline: {
216
- default: 'none',
217
- ':focus': `${borderVars['--border-width']} solid ${colorVars['--color-accent']}`,
218
- },
219
- outlineOffset: '0',
220
- },
221
204
 
222
205
  // Empty state
223
206
  emptyState: {
@@ -644,6 +627,9 @@ export function Selector<T extends SelectorOptionType>(
644
627
  const inputGroup = useInputGroup();
645
628
 
646
629
  const [searchQuery, setSearchQuery] = useState('');
630
+ // A typed query shows TextInput's built-in clear (✕) button, which becomes
631
+ // the next tab stop after the search input.
632
+ const hasQuery = searchQuery.length > 0;
647
633
 
648
634
  const [, startTransition] = useTransition();
649
635
  const [optimisticValue, setOptimisticValue] = useOptimistic(normalizedValue);
@@ -737,8 +723,7 @@ export function Selector<T extends SelectorOptionType>(
737
723
  // next query here fires the announcement exactly once per keystroke and does
738
724
  // not re-speak on unrelated re-renders.
739
725
  const handleSearchChange = useCallback(
740
- (event: React.ChangeEvent<HTMLInputElement>) => {
741
- const nextQuery = event.target.value;
726
+ (nextQuery: string) => {
742
727
  setSearchQuery(nextQuery);
743
728
  if (nextQuery.length === 0) {
744
729
  // Emptying the query clears the region rather than announcing a count.
@@ -856,14 +841,42 @@ export function Selector<T extends SelectorOptionType>(
856
841
  return null;
857
842
  }
858
843
  return (
859
- <div {...stylex.props(styles.searchWrapper)}>
860
- <input
844
+ <div
845
+ {...stylex.props(styles.searchWrapper)}
846
+ onKeyDown={e => {
847
+ // The clear (✕) button lives inside the TextInput, after the input in
848
+ // DOM order. When it is focused and the user tabs forward there is
849
+ // nothing else in the popup, so dismiss it (Shift+Tab returns to the
850
+ // input natively). Key events originating on the input are handled on
851
+ // the input below; ignore them here so we don't double-dismiss.
852
+ if (e.target === searchRef.current) {
853
+ return;
854
+ }
855
+ if (e.key === 'Tab' && !e.shiftKey) {
856
+ onKeyDown(e);
857
+ }
858
+ }}>
859
+ <TextInput
861
860
  ref={searchRef}
862
861
  id={searchId}
862
+ // The search field IS a TextInput: the leading magnifier is its
863
+ // `startIcon` and the trailing clear (✕) is its built-in `hasClear`
864
+ // (which resets the value and refocuses the input). We add no bespoke
865
+ // affordance chrome — the field just looks and behaves like every
866
+ // other Astryx input.
867
+ label={t('@astryx.selector.searchOptions')}
868
+ isLabelHidden
869
+ startIcon="search"
870
+ hasClear
871
+ size="sm"
872
+ // Fill the dropdown's width (minus the wrapper's inline padding) so
873
+ // the field is flush end-to-end rather than sized to its content.
874
+ width="100%"
863
875
  // When hasSearch is set, focus moves into this input on open, so it —
864
876
  // not the trigger — must be the combobox that reports the highlighted
865
877
  // option via aria-activedescendant (comboboxes-4). A bare searchbox
866
- // left the highlight silent to screen readers.
878
+ // left the highlight silent to screen readers. role + aria-* pass
879
+ // through to the underlying <input> via BaseProps.
867
880
  role="combobox"
868
881
  aria-expanded={popover.isOpen}
869
882
  aria-controls={listboxId}
@@ -873,12 +886,10 @@ export function Selector<T extends SelectorOptionType>(
873
886
  ? getItemId(highlightedIndex)
874
887
  : undefined
875
888
  }
876
- aria-label={t('@astryx.selector.searchOptions')}
877
- type="text"
878
889
  value={searchQuery}
879
890
  onChange={handleSearchChange}
880
891
  onKeyDown={e => {
881
- // Arrow keys navigate options; Enter selects; Escape/Tab close.
892
+ // Arrow keys navigate options; Enter selects; Escape closes.
882
893
  // Home/End are left to the input for caret movement (APG editable
883
894
  // combobox); PageUp/PageDown are the sanctioned substitute for
884
895
  // jumping to the first/last option.
@@ -888,14 +899,19 @@ export function Selector<T extends SelectorOptionType>(
888
899
  e.key === 'PageUp' ||
889
900
  e.key === 'PageDown' ||
890
901
  e.key === 'Enter' ||
891
- e.key === 'Escape' ||
892
- e.key === 'Tab'
902
+ e.key === 'Escape'
893
903
  ) {
894
904
  onKeyDown(e);
905
+ return;
906
+ }
907
+ // Tab: when a query is showing the clear (✕) button, forward-tab
908
+ // moves focus to it (keeping the popup open) so the affordance is
909
+ // keyboard-reachable. Every other Tab dismisses the popup as usual.
910
+ if (e.key === 'Tab' && (e.shiftKey || !hasQuery)) {
911
+ onKeyDown(e);
895
912
  }
896
913
  }}
897
914
  placeholder={searchPlaceholder}
898
- {...stylex.props(styles.searchInput)}
899
915
  />
900
916
  </div>
901
917
  );
@@ -904,6 +920,7 @@ export function Selector<T extends SelectorOptionType>(
904
920
  searchId,
905
921
  listboxId,
906
922
  searchQuery,
923
+ hasQuery,
907
924
  searchPlaceholder,
908
925
  handleSearchChange,
909
926
  onKeyDown,
@@ -1032,6 +1049,10 @@ export function Selector<T extends SelectorOptionType>(
1032
1049
  return elements;
1033
1050
  }, [options, renderItem, hasSearch, searchQuery, filteredItems]);
1034
1051
 
1052
+ // The detached message box renders its own leading status icon, so the
1053
+ // on-field icon would duplicate it — keep the chevron indicator instead.
1054
+ const showStatusIcon = status != null && statusVariant !== 'detached';
1055
+
1035
1056
  const selectorContent = (
1036
1057
  <>
1037
1058
  <div
@@ -1132,10 +1153,10 @@ export function Selector<T extends SelectorOptionType>(
1132
1153
  <span
1133
1154
  {...stylex.props(
1134
1155
  styles.triggerIcon,
1135
- !status && popover.isOpen && styles.triggerIconOpen,
1136
- status && styles.triggerIconStatus,
1156
+ !showStatusIcon && popover.isOpen && styles.triggerIconOpen,
1157
+ showStatusIcon && styles.triggerIconStatus,
1137
1158
  )}>
1138
- {status ? (
1159
+ {showStatusIcon ? (
1139
1160
  <Icon
1140
1161
  icon={STATUS_ICON_MAP[status.type]}
1141
1162
  size="sm"
@@ -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: 'SelectorOption',
@@ -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: 'SideNav',
@@ -142,7 +142,7 @@ export const docs = {
142
142
  },
143
143
  };
144
144
 
145
- /** @type {import('../docs-types').TranslationDoc} */
145
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
146
146
  export const docsZh = {
147
147
  usage: {
148
148
  description:
@@ -161,7 +161,7 @@ export const docsZh = {
161
161
  },
162
162
  };
163
163
 
164
- /** @type {import('../docs-types').TranslationDoc} */
164
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
165
165
  export const docsDense = {
166
166
  usage: {
167
167
  description:
@@ -18,7 +18,7 @@
18
18
  * - /packages/core/src/SideNav/SideNav.test.tsx
19
19
  * - /packages/core/src/SideNav/index.ts
20
20
  * - /apps/storybook/stories/SideNav.stories.tsx
21
- * - /packages/cli/templates/blocks/components/SideNav/ (showcase blocks)
21
+ * - /packages/cli/assets/templates/blocks/components/SideNav/ (showcase blocks)
22
22
  */
23
23
 
24
24
  import {
@@ -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: 'SideNavCollapseButton',
@@ -14,13 +14,13 @@
14
14
  * SYNC: When modified, update:
15
15
  * - /packages/core/src/SideNav/SideNav.doc.mjs
16
16
  * - /packages/core/src/SideNav/index.ts
17
- * - /packages/cli/templates/blocks/components/SideNav/ (showcase blocks)
17
+ * - /packages/cli/assets/templates/blocks/components/SideNav/ (showcase blocks)
18
18
  */
19
19
 
20
20
  import React, {type ReactNode} from 'react';
21
21
  import * as stylex from '@stylexjs/stylex';
22
22
  import {durationVars, easeVars} from '../theme/tokens.stylex';
23
- import {getIcon} from '../Icon/globalIconRegistry';
23
+ import {useIcon} from '../Icon';
24
24
  import {Button} from '../Button';
25
25
  import type {BaseProps} from '../BaseProps';
26
26
  import {composeEventHandlers, rtlStyles} from '../utils';
@@ -107,6 +107,7 @@ export function SideNavCollapseButton({
107
107
  ...props
108
108
  }: SideNavCollapseButtonProps) {
109
109
  const t = useTranslator();
110
+ const chevronLeftIcon = useIcon('chevronLeft');
110
111
  const {isCollapsed, toggle, isCollapsible} =
111
112
  useSideNavCollapseState(handleRef);
112
113
  const {isMobile} = useAppShellMobile();
@@ -137,7 +138,7 @@ export function SideNavCollapseButton({
137
138
  styles.chevron,
138
139
  isCollapsed && styles.chevronCollapsed,
139
140
  )}>
140
- {getIcon('chevronLeft')}
141
+ {chevronLeftIcon}
141
142
  </span>
142
143
  </span>
143
144
  )
@@ -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: 'SideNavHeading',