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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (951) hide show
  1. package/README.md +5 -3
  2. package/dist/AlertDialog/AlertDialog.d.ts +1 -1
  3. package/dist/AlertDialog/AlertDialog.js +1 -1
  4. package/dist/AppShell/AppShell.d.ts +2 -20
  5. package/dist/AppShell/AppShell.d.ts.map +1 -1
  6. package/dist/AppShell/AppShell.js +1 -14
  7. package/dist/AppShell/index.d.ts +20 -1
  8. package/dist/AppShell/index.d.ts.map +1 -1
  9. package/dist/AppShell/index.js +14 -0
  10. package/dist/AspectRatio/AspectRatio.d.ts +1 -1
  11. package/dist/AspectRatio/AspectRatio.js +1 -1
  12. package/dist/Avatar/Avatar.d.ts +1 -1
  13. package/dist/Avatar/Avatar.d.ts.map +1 -1
  14. package/dist/Avatar/Avatar.js +4 -4
  15. package/dist/Avatar/AvatarStatusDot.d.ts +2 -26
  16. package/dist/Avatar/AvatarStatusDot.d.ts.map +1 -1
  17. package/dist/Avatar/AvatarStatusDot.js +1 -22
  18. package/dist/Avatar/index.d.ts +26 -1
  19. package/dist/Avatar/index.d.ts.map +1 -1
  20. package/dist/Avatar/index.js +21 -0
  21. package/dist/AvatarGroup/AvatarGroup.d.ts +1 -1
  22. package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
  23. package/dist/AvatarGroup/AvatarGroup.js +4 -8
  24. package/dist/AvatarGroup/AvatarGroupOverflow.d.ts +1 -1
  25. package/dist/AvatarGroup/AvatarGroupOverflow.js +1 -1
  26. package/dist/Badge/Badge.d.ts +2 -30
  27. package/dist/Badge/Badge.d.ts.map +1 -1
  28. package/dist/Badge/Badge.js +2 -17
  29. package/dist/Badge/index.d.ts +31 -2
  30. package/dist/Badge/index.d.ts.map +1 -1
  31. package/dist/Badge/index.js +15 -1
  32. package/dist/Banner/Banner.d.ts +2 -37
  33. package/dist/Banner/Banner.d.ts.map +1 -1
  34. package/dist/Banner/Banner.js +6 -34
  35. package/dist/Banner/index.d.ts +37 -1
  36. package/dist/Banner/index.d.ts.map +1 -1
  37. package/dist/Banner/index.js +27 -0
  38. package/dist/Blockquote/Blockquote.d.ts +1 -1
  39. package/dist/Blockquote/Blockquote.js +1 -1
  40. package/dist/Breadcrumbs/BreadcrumbItem.d.ts +1 -1
  41. package/dist/Breadcrumbs/BreadcrumbItem.js +4 -3
  42. package/dist/Breadcrumbs/Breadcrumbs.d.ts +2 -18
  43. package/dist/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  44. package/dist/Breadcrumbs/Breadcrumbs.js +1 -15
  45. package/dist/Breadcrumbs/index.d.ts +18 -1
  46. package/dist/Breadcrumbs/index.d.ts.map +1 -1
  47. package/dist/Breadcrumbs/index.js +14 -0
  48. package/dist/Button/Button.d.ts +2 -20
  49. package/dist/Button/Button.d.ts.map +1 -1
  50. package/dist/Button/Button.js +2 -17
  51. package/dist/Button/index.d.ts +21 -3
  52. package/dist/Button/index.d.ts.map +1 -1
  53. package/dist/Button/index.js +15 -1
  54. package/dist/ButtonGroup/ButtonGroup.d.ts +1 -1
  55. package/dist/ButtonGroup/ButtonGroup.js +1 -1
  56. package/dist/Calendar/Calendar.js +1 -1
  57. package/dist/Calendar/styles.d.ts +2 -2
  58. package/dist/Calendar/styles.js +2 -2
  59. package/dist/Card/Card.d.ts +1 -1
  60. package/dist/Card/Card.js +1 -1
  61. package/dist/Carousel/Carousel.d.ts +54 -3
  62. package/dist/Carousel/Carousel.d.ts.map +1 -1
  63. package/dist/Carousel/Carousel.js +82 -15
  64. package/dist/Carousel/index.d.ts +1 -1
  65. package/dist/Carousel/index.d.ts.map +1 -1
  66. package/dist/Center/Center.d.ts +21 -4
  67. package/dist/Center/Center.d.ts.map +1 -1
  68. package/dist/Center/Center.js +11 -3
  69. package/dist/Chat/ChatComposer.d.ts +1 -1
  70. package/dist/Chat/ChatComposer.js +9 -9
  71. package/dist/Chat/ChatComposerDrawer.d.ts +1 -1
  72. package/dist/Chat/ChatComposerDrawer.js +3 -3
  73. package/dist/Chat/ChatComposerInput.d.ts +1 -1
  74. package/dist/Chat/ChatComposerInput.js +1 -1
  75. package/dist/Chat/ChatDictationButton.d.ts +1 -1
  76. package/dist/Chat/ChatDictationButton.js +1 -1
  77. package/dist/Chat/ChatLayout.d.ts +8 -1
  78. package/dist/Chat/ChatLayout.d.ts.map +1 -1
  79. package/dist/Chat/ChatLayout.js +15 -4
  80. package/dist/Chat/ChatLayoutScrollButton.d.ts +1 -1
  81. package/dist/Chat/ChatLayoutScrollButton.js +1 -1
  82. package/dist/Chat/ChatMessage.d.ts +1 -1
  83. package/dist/Chat/ChatMessage.js +1 -1
  84. package/dist/Chat/ChatMessageBubble.d.ts +1 -1
  85. package/dist/Chat/ChatMessageBubble.js +1 -1
  86. package/dist/Chat/ChatMessageList.d.ts +1 -1
  87. package/dist/Chat/ChatMessageList.js +1 -1
  88. package/dist/Chat/ChatSendButton.d.ts.map +1 -1
  89. package/dist/Chat/ChatSendButton.js +4 -2
  90. package/dist/Chat/ChatSystemMessage.d.ts +1 -1
  91. package/dist/Chat/ChatSystemMessage.js +1 -1
  92. package/dist/Chat/ChatTokenizedText.d.ts +1 -1
  93. package/dist/Chat/ChatTokenizedText.js +1 -1
  94. package/dist/CheckboxInput/CheckboxInput.d.ts +1 -1
  95. package/dist/CheckboxInput/CheckboxInput.js +1 -1
  96. package/dist/CheckboxList/CheckboxList.d.ts +1 -1
  97. package/dist/CheckboxList/CheckboxList.js +1 -1
  98. package/dist/CheckboxList/CheckboxListItem.d.ts +1 -1
  99. package/dist/CheckboxList/CheckboxListItem.js +1 -1
  100. package/dist/Citation/Citation.d.ts +1 -1
  101. package/dist/Citation/Citation.js +1 -1
  102. package/dist/ClickableCard/ClickableCard.d.ts +3 -3
  103. package/dist/ClickableCard/ClickableCard.js +3 -3
  104. package/dist/Code/Code.d.ts +2 -2
  105. package/dist/Code/Code.js +2 -2
  106. package/dist/Collapsible/Collapsible.d.ts +1 -1
  107. package/dist/Collapsible/Collapsible.js +3 -3
  108. package/dist/Collapsible/CollapsibleGroup.d.ts +1 -1
  109. package/dist/Collapsible/CollapsibleGroup.js +1 -1
  110. package/dist/Collapsible/CollapsibleGroupContext.js +1 -1
  111. package/dist/CommandPalette/CommandPalette.d.ts +1 -1
  112. package/dist/CommandPalette/CommandPalette.js +1 -1
  113. package/dist/CommandPalette/CommandPaletteEmpty.js +1 -1
  114. package/dist/CommandPalette/CommandPaletteFooter.js +1 -1
  115. package/dist/CommandPalette/CommandPaletteGroup.js +1 -1
  116. package/dist/CommandPalette/CommandPaletteInput.d.ts +2 -2
  117. package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
  118. package/dist/CommandPalette/CommandPaletteInput.js +4 -2
  119. package/dist/CommandPalette/CommandPaletteItem.d.ts +1 -1
  120. package/dist/CommandPalette/CommandPaletteItem.js +1 -1
  121. package/dist/CommandPalette/CommandPaletteList.js +1 -1
  122. package/dist/ContextMenu/ContextMenu.d.ts +2 -2
  123. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  124. package/dist/ContextMenu/ContextMenu.js +14 -5
  125. package/dist/DateInput/DateInput.js +1 -1
  126. package/dist/DateRangeInput/DateRangeInput.js +1 -1
  127. package/dist/DateTimeInput/DateTimeInput.js +1 -1
  128. package/dist/Dialog/Dialog.d.ts +46 -23
  129. package/dist/Dialog/Dialog.d.ts.map +1 -1
  130. package/dist/Dialog/Dialog.js +59 -31
  131. package/dist/Dialog/DialogHeader.d.ts +1 -1
  132. package/dist/Dialog/DialogHeader.js +1 -1
  133. package/dist/Dialog/index.d.ts +18 -1
  134. package/dist/Dialog/index.d.ts.map +1 -1
  135. package/dist/Dialog/index.js +14 -0
  136. package/dist/Divider/Divider.d.ts +2 -18
  137. package/dist/Divider/Divider.d.ts.map +1 -1
  138. package/dist/Divider/Divider.js +1 -15
  139. package/dist/Divider/index.d.ts +18 -1
  140. package/dist/Divider/index.d.ts.map +1 -1
  141. package/dist/Divider/index.js +14 -0
  142. package/dist/DropdownMenu/DropdownMenu.d.ts +9 -3
  143. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  144. package/dist/DropdownMenu/DropdownMenu.js +23 -19
  145. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +18 -12
  146. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
  147. package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +38 -63
  148. package/dist/DropdownMenu/DropdownMenuItem.d.ts +1 -1
  149. package/dist/DropdownMenu/DropdownMenuItem.js +1 -1
  150. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
  151. package/dist/DropdownMenu/DropdownMenuRadioItem.js +5 -1
  152. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +1 -1
  153. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
  154. package/dist/DropdownMenu/DropdownMenuSubMenu.js +14 -6
  155. package/dist/DropdownMenu/menuItemHover.d.ts +1 -0
  156. package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -1
  157. package/dist/DropdownMenu/menuItemHover.js +1 -0
  158. package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
  159. package/dist/DropdownMenu/renderDropdownItems.js +6 -4
  160. package/dist/EmptyState/EmptyState.d.ts +1 -1
  161. package/dist/EmptyState/EmptyState.js +1 -1
  162. package/dist/Field/Field.d.ts +1 -1
  163. package/dist/Field/Field.js +1 -1
  164. package/dist/Field/FieldLabel.d.ts +2 -2
  165. package/dist/Field/FieldLabel.d.ts.map +1 -1
  166. package/dist/Field/FieldLabel.js +41 -2
  167. package/dist/FieldStatus/FieldStatus.d.ts +1 -18
  168. package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
  169. package/dist/FieldStatus/FieldStatus.js +13 -17
  170. package/dist/FieldStatus/index.d.ts +19 -1
  171. package/dist/FieldStatus/index.d.ts.map +1 -1
  172. package/dist/FieldStatus/index.js +14 -0
  173. package/dist/FileInput/FileInput.js +1 -1
  174. package/dist/FormLayout/FormLayout.d.ts +1 -1
  175. package/dist/FormLayout/FormLayout.d.ts.map +1 -1
  176. package/dist/FormLayout/FormLayout.js +1 -1
  177. package/dist/Grid/Grid.d.ts +1 -1
  178. package/dist/Grid/Grid.js +1 -1
  179. package/dist/Grid/GridSpan.d.ts +1 -1
  180. package/dist/Grid/GridSpan.js +1 -1
  181. package/dist/HStack/HStack.d.ts +1 -1
  182. package/dist/HStack/HStack.js +1 -1
  183. package/dist/Heading/Heading.d.ts +2 -2
  184. package/dist/Heading/Heading.d.ts.map +1 -1
  185. package/dist/Heading/Heading.js +5 -4
  186. package/dist/HoverCard/HoverCard.d.ts +1 -1
  187. package/dist/HoverCard/HoverCard.js +1 -1
  188. package/dist/Icon/Icon.d.ts +1 -1
  189. package/dist/Icon/Icon.d.ts.map +1 -1
  190. package/dist/Icon/Icon.js +4 -2
  191. package/dist/Icon/globalIconRegistry.d.ts +47 -5
  192. package/dist/Icon/globalIconRegistry.d.ts.map +1 -1
  193. package/dist/Icon/globalIconRegistry.js +74 -7
  194. package/dist/Icon/index.d.ts +4 -3
  195. package/dist/Icon/index.d.ts.map +1 -1
  196. package/dist/Icon/index.js +2 -1
  197. package/dist/Icon/useIcon.d.ts +14 -0
  198. package/dist/Icon/useIcon.d.ts.map +1 -0
  199. package/dist/Icon/useIcon.js +21 -0
  200. package/dist/IconButton/IconButton.d.ts +1 -1
  201. package/dist/IconButton/IconButton.js +1 -1
  202. package/dist/InputGroup/InputGroup.d.ts +1 -1
  203. package/dist/InputGroup/InputGroup.js +1 -1
  204. package/dist/InputGroup/InputGroupText.d.ts +1 -1
  205. package/dist/InputGroup/InputGroupText.js +1 -1
  206. package/dist/Item/Item.d.ts +1 -1
  207. package/dist/Item/Item.js +1 -1
  208. package/dist/Kbd/Kbd.d.ts +1 -1
  209. package/dist/Kbd/Kbd.js +1 -1
  210. package/dist/Layout/Layout.d.ts +1 -1
  211. package/dist/Layout/Layout.js +1 -1
  212. package/dist/Layout/LayoutContent.d.ts +1 -1
  213. package/dist/Layout/LayoutContent.js +1 -1
  214. package/dist/Layout/LayoutFooter.d.ts +1 -1
  215. package/dist/Layout/LayoutFooter.js +1 -1
  216. package/dist/Layout/LayoutHeader.d.ts +1 -1
  217. package/dist/Layout/LayoutHeader.js +1 -1
  218. package/dist/Layout/LayoutPanel.d.ts +1 -1
  219. package/dist/Layout/LayoutPanel.js +1 -1
  220. package/dist/Lightbox/Lightbox.d.ts +1 -1
  221. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  222. package/dist/Lightbox/Lightbox.js +16 -3
  223. package/dist/Link/Link.d.ts +1 -1
  224. package/dist/Link/Link.js +1 -1
  225. package/dist/Link/LinkProvider.d.ts +2 -2
  226. package/dist/Link/LinkProvider.js +2 -2
  227. package/dist/List/List.d.ts +1 -1
  228. package/dist/List/List.js +1 -1
  229. package/dist/List/ListItem.d.ts +1 -1
  230. package/dist/List/ListItem.js +1 -1
  231. package/dist/Markdown/Markdown.d.ts.map +1 -1
  232. package/dist/Markdown/Markdown.js +35 -13
  233. package/dist/MetadataList/MetadataList.d.ts +1 -1
  234. package/dist/MetadataList/MetadataList.js +1 -1
  235. package/dist/MetadataList/MetadataListItem.d.ts +1 -1
  236. package/dist/MetadataList/MetadataListItem.js +1 -1
  237. package/dist/MobileNav/MobileNav.d.ts +1 -1
  238. package/dist/MobileNav/MobileNav.js +1 -1
  239. package/dist/MoreMenu/MoreMenu.d.ts +1 -1
  240. package/dist/MoreMenu/MoreMenu.js +3 -3
  241. package/dist/MultiSelector/MultiSelector.d.ts +13 -4
  242. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  243. package/dist/MultiSelector/MultiSelector.js +105 -22
  244. package/dist/NavIcon/NavIcon.d.ts +1 -1
  245. package/dist/NavIcon/NavIcon.js +1 -1
  246. package/dist/NumberInput/NumberInput.d.ts +1 -1
  247. package/dist/NumberInput/NumberInput.js +1 -1
  248. package/dist/Outline/Outline.js +1 -1
  249. package/dist/OverflowList/OverflowList.d.ts +1 -1
  250. package/dist/OverflowList/OverflowList.js +1 -1
  251. package/dist/Pagination/Pagination.d.ts +1 -20
  252. package/dist/Pagination/Pagination.d.ts.map +1 -1
  253. package/dist/Pagination/Pagination.js +1 -15
  254. package/dist/Pagination/index.d.ts +21 -1
  255. package/dist/Pagination/index.d.ts.map +1 -1
  256. package/dist/Pagination/index.js +14 -0
  257. package/dist/Popover/Popover.d.ts +20 -3
  258. package/dist/Popover/Popover.d.ts.map +1 -1
  259. package/dist/Popover/Popover.js +5 -1
  260. package/dist/Popover/usePopover.d.ts.map +1 -1
  261. package/dist/Popover/usePopover.js +14 -3
  262. package/dist/PowerSearch/PowerSearch.d.ts +1 -1
  263. package/dist/PowerSearch/PowerSearch.js +1 -1
  264. package/dist/ProgressBar/ProgressBar.d.ts +1 -20
  265. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  266. package/dist/ProgressBar/ProgressBar.js +1 -15
  267. package/dist/ProgressBar/index.d.ts +21 -1
  268. package/dist/ProgressBar/index.d.ts.map +1 -1
  269. package/dist/ProgressBar/index.js +14 -0
  270. package/dist/RadioList/RadioList.d.ts +1 -1
  271. package/dist/RadioList/RadioList.js +1 -1
  272. package/dist/RadioList/RadioListItem.d.ts +1 -1
  273. package/dist/RadioList/RadioListItem.js +1 -1
  274. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  275. package/dist/Resizable/ResizeHandle.js +3 -10
  276. package/dist/Section/Section.d.ts +2 -19
  277. package/dist/Section/Section.d.ts.map +1 -1
  278. package/dist/Section/Section.js +1 -15
  279. package/dist/Section/index.d.ts +19 -1
  280. package/dist/Section/index.d.ts.map +1 -1
  281. package/dist/Section/index.js +14 -0
  282. package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
  283. package/dist/SegmentedControl/SegmentedControl.js +1 -1
  284. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  285. package/dist/SegmentedControl/SegmentedControlItem.js +1 -1
  286. package/dist/SelectableCard/SelectableCard.d.ts +4 -3
  287. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  288. package/dist/SelectableCard/SelectableCard.js +15 -3
  289. package/dist/Selector/Selector.d.ts +12 -3
  290. package/dist/Selector/Selector.d.ts.map +1 -1
  291. package/dist/Selector/Selector.js +104 -21
  292. package/dist/SideNav/SideNav.d.ts +1 -1
  293. package/dist/SideNav/SideNav.js +1 -1
  294. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  295. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  296. package/dist/SideNav/SideNavCollapseButton.js +4 -3
  297. package/dist/SideNav/SideNavHeading.d.ts +1 -1
  298. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  299. package/dist/SideNav/SideNavHeading.js +8 -7
  300. package/dist/SideNav/SideNavItem.d.ts +2 -2
  301. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  302. package/dist/SideNav/SideNavItem.js +6 -7
  303. package/dist/SideNav/SideNavSection.d.ts +1 -1
  304. package/dist/SideNav/SideNavSection.js +1 -1
  305. package/dist/Skeleton/Skeleton.d.ts +1 -1
  306. package/dist/Skeleton/Skeleton.js +1 -1
  307. package/dist/Slider/Slider.d.ts.map +1 -1
  308. package/dist/Slider/Slider.js +78 -68
  309. package/dist/Spinner/Spinner.d.ts +1 -1
  310. package/dist/Spinner/Spinner.js +1 -1
  311. package/dist/Stack/Stack.d.ts +1 -1
  312. package/dist/Stack/Stack.js +1 -1
  313. package/dist/Stack/StackItem.d.ts +1 -1
  314. package/dist/Stack/StackItem.js +1 -1
  315. package/dist/StatusDot/StatusDot.d.ts +1 -20
  316. package/dist/StatusDot/StatusDot.d.ts.map +1 -1
  317. package/dist/StatusDot/StatusDot.js +2 -17
  318. package/dist/StatusDot/index.d.ts +21 -1
  319. package/dist/StatusDot/index.d.ts.map +1 -1
  320. package/dist/StatusDot/index.js +14 -0
  321. package/dist/Switch/Switch.d.ts +1 -1
  322. package/dist/Switch/Switch.js +1 -1
  323. package/dist/TabList/Tab.d.ts +1 -1
  324. package/dist/TabList/Tab.js +1 -1
  325. package/dist/TabList/TabList.d.ts +1 -1
  326. package/dist/TabList/TabList.js +1 -1
  327. package/dist/TabList/TabMenu.d.ts +1 -1
  328. package/dist/TabList/TabMenu.js +1 -1
  329. package/dist/Table/BaseTable.d.ts +1 -1
  330. package/dist/Table/BaseTable.js +1 -1
  331. package/dist/Table/Table.d.ts +1 -1
  332. package/dist/Table/Table.js +1 -1
  333. package/dist/Table/TableCell.d.ts +1 -1
  334. package/dist/Table/TableCell.js +1 -1
  335. package/dist/Table/TableHeaderCell.d.ts +1 -1
  336. package/dist/Table/TableHeaderCell.js +1 -1
  337. package/dist/Table/TableRow.d.ts +1 -1
  338. package/dist/Table/TableRow.js +1 -1
  339. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +18 -3
  340. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  341. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +21 -3
  342. package/dist/Table/plugins/tree/useTableTreeData.d.ts +11 -0
  343. package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
  344. package/dist/Table/plugins/tree/useTableTreeData.js +36 -2
  345. package/dist/Text/Text.d.ts +11 -2
  346. package/dist/Text/Text.d.ts.map +1 -1
  347. package/dist/Text/Text.js +26 -3
  348. package/dist/Text/index.d.ts +31 -1
  349. package/dist/Text/index.d.ts.map +1 -1
  350. package/dist/Text/index.js +23 -0
  351. package/dist/TextArea/TextArea.d.ts +1 -1
  352. package/dist/TextArea/TextArea.d.ts.map +1 -1
  353. package/dist/TextArea/TextArea.js +107 -39
  354. package/dist/TextInput/TextInput.d.ts +1 -1
  355. package/dist/TextInput/TextInput.js +1 -1
  356. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  357. package/dist/Thumbnail/Thumbnail.js +52 -46
  358. package/dist/TimeInput/TimeInput.js +1 -1
  359. package/dist/Timestamp/Timestamp.d.ts +4 -1
  360. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  361. package/dist/Timestamp/Timestamp.js +78 -7
  362. package/dist/Timestamp/formatInstant.d.ts +3 -3
  363. package/dist/Timestamp/formatInstant.d.ts.map +1 -1
  364. package/dist/Timestamp/formatInstant.js +2 -2
  365. package/dist/Timestamp/tooltipEntries.d.ts +3 -2
  366. package/dist/Timestamp/tooltipEntries.d.ts.map +1 -1
  367. package/dist/Timestamp/tooltipEntries.js +3 -2
  368. package/dist/ToggleButton/ToggleButton.d.ts +1 -1
  369. package/dist/ToggleButton/ToggleButton.js +1 -1
  370. package/dist/ToggleButton/ToggleButtonGroup.d.ts +1 -1
  371. package/dist/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
  372. package/dist/ToggleButton/ToggleButtonGroup.js +1 -1
  373. package/dist/Token/Token.d.ts +2 -27
  374. package/dist/Token/Token.d.ts.map +1 -1
  375. package/dist/Token/Token.js +1 -15
  376. package/dist/Token/index.d.ts +27 -1
  377. package/dist/Token/index.d.ts.map +1 -1
  378. package/dist/Token/index.js +14 -0
  379. package/dist/Tokenizer/Tokenizer.d.ts +1 -1
  380. package/dist/Tokenizer/Tokenizer.js +1 -1
  381. package/dist/Toolbar/Toolbar.d.ts +1 -1
  382. package/dist/Toolbar/Toolbar.js +1 -1
  383. package/dist/Tooltip/Tooltip.d.ts +1 -1
  384. package/dist/Tooltip/Tooltip.js +1 -1
  385. package/dist/TopNav/TopNav.d.ts +1 -1
  386. package/dist/TopNav/TopNav.js +1 -1
  387. package/dist/TopNav/TopNavHeading.d.ts +1 -1
  388. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  389. package/dist/TopNav/TopNavHeading.js +7 -6
  390. package/dist/TopNav/TopNavItem.d.ts +1 -1
  391. package/dist/TopNav/TopNavItem.js +1 -1
  392. package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
  393. package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
  394. package/dist/TopNav/TopNavMegaMenu.js +15 -7
  395. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
  396. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +1 -1
  397. package/dist/TopNav/TopNavMegaMenuItem.d.ts +1 -1
  398. package/dist/TopNav/TopNavMegaMenuItem.js +1 -1
  399. package/dist/TopNav/TopNavMenu.d.ts +1 -1
  400. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  401. package/dist/TopNav/TopNavMenu.js +5 -4
  402. package/dist/TreeList/TreeList.d.ts +1 -1
  403. package/dist/TreeList/TreeList.js +1 -1
  404. package/dist/TreeList/TreeListBranches.js +1 -1
  405. package/dist/TreeList/TreeListItem.d.ts +1 -1
  406. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  407. package/dist/TreeList/TreeListItem.js +4 -3
  408. package/dist/TreeList/TreeListTypes.d.ts +1 -17
  409. package/dist/TreeList/TreeListTypes.d.ts.map +1 -1
  410. package/dist/TreeList/index.d.ts +18 -1
  411. package/dist/TreeList/index.d.ts.map +1 -1
  412. package/dist/TreeList/index.js +14 -0
  413. package/dist/Typeahead/BaseTypeahead.d.ts +1 -1
  414. package/dist/Typeahead/BaseTypeahead.js +1 -1
  415. package/dist/Typeahead/Typeahead.d.ts +1 -1
  416. package/dist/Typeahead/Typeahead.js +1 -1
  417. package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
  418. package/dist/Typeahead/TypeaheadItem.js +1 -1
  419. package/dist/VStack/VStack.d.ts +1 -1
  420. package/dist/VStack/VStack.js +1 -1
  421. package/dist/VisuallyHidden/VisuallyHidden.d.ts +1 -1
  422. package/dist/VisuallyHidden/VisuallyHidden.js +1 -1
  423. package/dist/astryx.css +83 -22
  424. package/dist/astryx.umd.js +50 -50
  425. package/dist/astryx.umd.js.map +4 -4
  426. package/dist/hooks/containerReveal.pool.stylex.d.ts +303 -0
  427. package/dist/hooks/containerReveal.pool.stylex.d.ts.map +1 -0
  428. package/dist/hooks/containerReveal.pool.stylex.js +292 -0
  429. package/dist/hooks/index.d.ts +2 -0
  430. package/dist/hooks/index.d.ts.map +1 -1
  431. package/dist/hooks/index.js +2 -1
  432. package/dist/hooks/useContainerReveal.d.ts +83 -0
  433. package/dist/hooks/useContainerReveal.d.ts.map +1 -0
  434. package/dist/hooks/useContainerReveal.js +123 -0
  435. package/dist/hooks/useGridFocus.d.ts +8 -6
  436. package/dist/hooks/useGridFocus.d.ts.map +1 -1
  437. package/dist/hooks/useInputContainer.d.ts.map +1 -1
  438. package/dist/hooks/useInputContainer.js +29 -1
  439. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  440. package/dist/hooks/useInputStatusIcon.js +11 -0
  441. package/dist/hooks/useKeyboardHint.d.ts +1 -1
  442. package/dist/hooks/useKeyboardHint.js +1 -1
  443. package/dist/hooks/useListFocus.d.ts +8 -7
  444. package/dist/hooks/useListFocus.d.ts.map +1 -1
  445. package/dist/hooks/useTreeFocus.d.ts.map +1 -1
  446. package/dist/hooks/useTreeFocus.js +13 -2
  447. package/dist/index.d.ts +2 -1
  448. package/dist/index.d.ts.map +1 -1
  449. package/dist/index.js +5 -1
  450. package/dist/theme/Theme.d.ts.map +1 -1
  451. package/dist/theme/Theme.js +2 -7
  452. package/dist/theme/defineTheme.d.ts +6 -0
  453. package/dist/theme/defineTheme.d.ts.map +1 -1
  454. package/dist/theme/defineTheme.js +4 -1
  455. package/dist/theme/expandColorScale.d.ts +19 -2
  456. package/dist/theme/expandColorScale.d.ts.map +1 -1
  457. package/dist/theme/expandColorScale.js +38 -10
  458. package/dist/theme/index.d.ts +6 -4
  459. package/dist/theme/index.d.ts.map +1 -1
  460. package/dist/theme/index.js +2 -1
  461. package/dist/theme/themeRegistry.d.ts +32 -0
  462. package/dist/theme/themeRegistry.d.ts.map +1 -0
  463. package/dist/theme/themeRegistry.js +49 -0
  464. package/dist/theme/types.d.ts +10 -2
  465. package/dist/theme/types.d.ts.map +1 -1
  466. package/dist/theme/useTheme.d.ts +9 -0
  467. package/dist/theme/useTheme.d.ts.map +1 -1
  468. package/dist/theme/useTheme.js +82 -27
  469. package/dist/utils/rtlStyles.d.ts +21 -0
  470. package/dist/utils/rtlStyles.d.ts.map +1 -1
  471. package/dist/utils/rtlStyles.js +26 -1
  472. package/groups.doc.mjs +2 -2
  473. package/locales/en.json +8 -0
  474. package/locales/pseudo.json +6 -0
  475. package/package.json +4 -13
  476. package/src/AlertDialog/AlertDialog.doc.mjs +3 -3
  477. package/src/AlertDialog/AlertDialog.tsx +1 -1
  478. package/src/AlertDialog/useImperativeAlertDialog.doc.mjs +1 -1
  479. package/src/AppShell/AppShell.doc.mjs +3 -3
  480. package/src/AppShell/AppShell.tsx +2 -20
  481. package/src/AppShell/index.ts +20 -1
  482. package/src/AppShell/useAppShellMobile.doc.mjs +2 -2
  483. package/src/AspectRatio/AspectRatio.doc.mjs +3 -3
  484. package/src/AspectRatio/AspectRatio.tsx +1 -1
  485. package/src/Avatar/Avatar.doc.mjs +3 -3
  486. package/src/Avatar/Avatar.tsx +8 -3
  487. package/src/Avatar/AvatarStatusDot.doc.mjs +1 -1
  488. package/src/Avatar/AvatarStatusDot.tsx +2 -27
  489. package/src/Avatar/index.ts +26 -1
  490. package/src/AvatarGroup/AvatarGroup.doc.mjs +3 -3
  491. package/src/AvatarGroup/AvatarGroup.tsx +3 -7
  492. package/src/AvatarGroup/AvatarGroupOverflow.doc.mjs +1 -1
  493. package/src/AvatarGroup/AvatarGroupOverflow.tsx +1 -1
  494. package/src/Badge/Badge.doc.mjs +3 -3
  495. package/src/Badge/Badge.tsx +2 -31
  496. package/src/Badge/index.ts +32 -6
  497. package/src/Banner/Banner.doc.mjs +3 -3
  498. package/src/Banner/Banner.tsx +8 -45
  499. package/src/Banner/index.ts +39 -7
  500. package/src/Blockquote/Blockquote.doc.mjs +3 -3
  501. package/src/Blockquote/Blockquote.tsx +1 -1
  502. package/src/Breadcrumbs/BreadcrumbItem.doc.mjs +1 -1
  503. package/src/Breadcrumbs/BreadcrumbItem.tsx +5 -3
  504. package/src/Breadcrumbs/Breadcrumbs.doc.mjs +3 -3
  505. package/src/Breadcrumbs/Breadcrumbs.tsx +2 -19
  506. package/src/Breadcrumbs/index.ts +19 -5
  507. package/src/Button/Button.doc.mjs +3 -3
  508. package/src/Button/Button.tsx +2 -21
  509. package/src/Button/index.ts +22 -7
  510. package/src/ButtonGroup/ButtonGroup.doc.mjs +3 -3
  511. package/src/ButtonGroup/ButtonGroup.tsx +1 -1
  512. package/src/Calendar/Calendar.doc.mjs +3 -3
  513. package/src/Calendar/Calendar.test.tsx +15 -3
  514. package/src/Calendar/Calendar.tsx +1 -1
  515. package/src/Calendar/styles.ts +2 -2
  516. package/src/Card/Card.doc.mjs +3 -3
  517. package/src/Card/Card.tsx +1 -1
  518. package/src/Carousel/Carousel.doc.mjs +10 -3
  519. package/src/Carousel/Carousel.test.tsx +232 -1
  520. package/src/Carousel/Carousel.tsx +144 -21
  521. package/src/Carousel/index.ts +1 -1
  522. package/src/Center/Center.doc.mjs +41 -3
  523. package/src/Center/Center.test.tsx +75 -0
  524. package/src/Center/Center.tsx +38 -3
  525. package/src/Chat/Chat.doc.mjs +3 -3
  526. package/src/Chat/ChatComposer.doc.mjs +1 -1
  527. package/src/Chat/ChatComposer.tsx +5 -5
  528. package/src/Chat/ChatComposerDrawer.doc.mjs +1 -1
  529. package/src/Chat/ChatComposerDrawer.tsx +3 -3
  530. package/src/Chat/ChatComposerInput.doc.mjs +1 -1
  531. package/src/Chat/ChatComposerInput.tsx +1 -1
  532. package/src/Chat/ChatComposerTokenElement.doc.mjs +1 -1
  533. package/src/Chat/ChatDictationButton.doc.mjs +3 -3
  534. package/src/Chat/ChatDictationButton.tsx +1 -1
  535. package/src/Chat/ChatLayout.doc.mjs +1 -1
  536. package/src/Chat/ChatLayout.test.tsx +57 -0
  537. package/src/Chat/ChatLayout.tsx +23 -2
  538. package/src/Chat/ChatLayoutScrollButton.doc.mjs +1 -1
  539. package/src/Chat/ChatLayoutScrollButton.tsx +1 -1
  540. package/src/Chat/ChatMessage.doc.mjs +1 -1
  541. package/src/Chat/ChatMessage.tsx +1 -1
  542. package/src/Chat/ChatMessageBubble.doc.mjs +1 -1
  543. package/src/Chat/ChatMessageBubble.tsx +1 -1
  544. package/src/Chat/ChatMessageList.doc.mjs +1 -1
  545. package/src/Chat/ChatMessageList.tsx +1 -1
  546. package/src/Chat/ChatMessageMetadata.doc.mjs +1 -1
  547. package/src/Chat/ChatSendButton.doc.mjs +1 -1
  548. package/src/Chat/ChatSendButton.tsx +5 -3
  549. package/src/Chat/ChatSystemMessage.doc.mjs +1 -1
  550. package/src/Chat/ChatSystemMessage.tsx +1 -1
  551. package/src/Chat/ChatTokenizedText.doc.mjs +1 -1
  552. package/src/Chat/ChatTokenizedText.tsx +1 -1
  553. package/src/Chat/ChatToolCalls.doc.mjs +3 -3
  554. package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
  555. package/src/CheckboxInput/CheckboxInput.test.tsx +33 -0
  556. package/src/CheckboxInput/CheckboxInput.tsx +1 -1
  557. package/src/CheckboxList/CheckboxList.doc.mjs +3 -3
  558. package/src/CheckboxList/CheckboxList.tsx +1 -1
  559. package/src/CheckboxList/CheckboxListItem.doc.mjs +1 -1
  560. package/src/CheckboxList/CheckboxListItem.tsx +1 -1
  561. package/src/Citation/Citation.doc.mjs +2 -2
  562. package/src/Citation/Citation.tsx +1 -1
  563. package/src/ClickableCard/ClickableCard.doc.mjs +2 -2
  564. package/src/ClickableCard/ClickableCard.tsx +3 -3
  565. package/src/Code/Code.tsx +2 -2
  566. package/src/CodeBlock/Code.doc.mjs +1 -1
  567. package/src/CodeBlock/CodeBlock.doc.mjs +3 -3
  568. package/src/Collapsible/Collapsible.doc.mjs +3 -3
  569. package/src/Collapsible/Collapsible.tsx +3 -3
  570. package/src/Collapsible/CollapsibleGroup.doc.mjs +1 -1
  571. package/src/Collapsible/CollapsibleGroup.tsx +1 -1
  572. package/src/Collapsible/CollapsibleGroupContext.tsx +1 -1
  573. package/src/Collapsible/useCollapsible.doc.mjs +2 -2
  574. package/src/CommandPalette/CommandPalette.doc.mjs +4 -4
  575. package/src/CommandPalette/CommandPalette.tsx +1 -1
  576. package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +1 -1
  577. package/src/CommandPalette/CommandPaletteEmpty.tsx +1 -1
  578. package/src/CommandPalette/CommandPaletteFooter.doc.mjs +1 -1
  579. package/src/CommandPalette/CommandPaletteFooter.tsx +1 -1
  580. package/src/CommandPalette/CommandPaletteGroup.doc.mjs +1 -1
  581. package/src/CommandPalette/CommandPaletteGroup.tsx +1 -1
  582. package/src/CommandPalette/CommandPaletteInput.doc.mjs +1 -1
  583. package/src/CommandPalette/CommandPaletteInput.tsx +5 -1
  584. package/src/CommandPalette/CommandPaletteItem.doc.mjs +1 -1
  585. package/src/CommandPalette/CommandPaletteItem.tsx +1 -1
  586. package/src/CommandPalette/CommandPaletteList.doc.mjs +1 -1
  587. package/src/CommandPalette/CommandPaletteList.tsx +1 -1
  588. package/src/ContextMenu/ContextMenu.doc.mjs +3 -3
  589. package/src/ContextMenu/ContextMenu.tsx +17 -5
  590. package/src/ContextMenu/ContextMenuItem.doc.mjs +1 -1
  591. package/src/DateInput/DateInput.doc.mjs +3 -3
  592. package/src/DateInput/DateInput.tsx +1 -1
  593. package/src/DateRangeInput/DateRangeInput.doc.mjs +2 -2
  594. package/src/DateRangeInput/DateRangeInput.tsx +1 -1
  595. package/src/DateTimeInput/DateTimeInput.doc.mjs +3 -3
  596. package/src/DateTimeInput/DateTimeInput.tsx +1 -1
  597. package/src/Dialog/Dialog.doc.mjs +9 -5
  598. package/src/Dialog/Dialog.test.tsx +84 -1
  599. package/src/Dialog/Dialog.tsx +87 -45
  600. package/src/Dialog/DialogHeader.doc.mjs +1 -1
  601. package/src/Dialog/DialogHeader.tsx +1 -1
  602. package/src/Dialog/index.ts +18 -1
  603. package/src/Dialog/useImperativeDialog.doc.mjs +1 -1
  604. package/src/Divider/Divider.doc.mjs +3 -3
  605. package/src/Divider/Divider.tsx +2 -19
  606. package/src/Divider/index.ts +19 -5
  607. package/src/DropdownMenu/DropdownMenu.doc.mjs +20 -5
  608. package/src/DropdownMenu/DropdownMenu.test.tsx +122 -0
  609. package/src/DropdownMenu/DropdownMenu.tsx +31 -20
  610. package/src/DropdownMenu/DropdownMenuCheckboxItem.doc.mjs +1 -1
  611. package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +41 -64
  612. package/src/DropdownMenu/DropdownMenuItem.doc.mjs +1 -1
  613. package/src/DropdownMenu/DropdownMenuItem.tsx +1 -1
  614. package/src/DropdownMenu/DropdownMenuRadioGroup.doc.mjs +1 -1
  615. package/src/DropdownMenu/DropdownMenuRadioItem.doc.mjs +1 -1
  616. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +10 -1
  617. package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +64 -0
  618. package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +1 -1
  619. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +46 -1
  620. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +24 -8
  621. package/src/DropdownMenu/menuItemHover.ts +1 -0
  622. package/src/DropdownMenu/renderDropdownItems.tsx +14 -2
  623. package/src/EmptyState/EmptyState.doc.mjs +3 -3
  624. package/src/EmptyState/EmptyState.tsx +1 -1
  625. package/src/Field/Field.doc.mjs +7 -3
  626. package/src/Field/Field.tsx +1 -1
  627. package/src/Field/FieldLabel.doc.mjs +1 -1
  628. package/src/Field/FieldLabel.test.tsx +78 -0
  629. package/src/Field/FieldLabel.tsx +50 -3
  630. package/src/FieldStatus/FieldStatus.doc.mjs +3 -2
  631. package/src/FieldStatus/FieldStatus.test.tsx +61 -0
  632. package/src/FieldStatus/FieldStatus.tsx +16 -23
  633. package/src/FieldStatus/index.ts +20 -5
  634. package/src/FileInput/FileInput.doc.mjs +3 -3
  635. package/src/FileInput/FileInput.tsx +1 -1
  636. package/src/FormLayout/FormLayout.doc.mjs +3 -3
  637. package/src/FormLayout/FormLayout.tsx +2 -5
  638. package/src/Grid/Grid.doc.mjs +3 -3
  639. package/src/Grid/Grid.tsx +1 -1
  640. package/src/Grid/GridSpan.doc.mjs +1 -1
  641. package/src/Grid/GridSpan.tsx +1 -1
  642. package/src/HStack/HStack.tsx +1 -1
  643. package/src/Heading/Heading.tsx +4 -3
  644. package/src/HoverCard/HoverCard.doc.mjs +3 -3
  645. package/src/HoverCard/HoverCard.tsx +1 -1
  646. package/src/HoverCard/useHoverCard.doc.mjs +2 -2
  647. package/src/Icon/Icon.doc.mjs +4 -3
  648. package/src/Icon/Icon.test.tsx +23 -0
  649. package/src/Icon/Icon.tsx +4 -2
  650. package/src/Icon/globalIconRegistry.test.tsx +87 -1
  651. package/src/Icon/globalIconRegistry.tsx +109 -9
  652. package/src/Icon/index.ts +9 -7
  653. package/src/Icon/useIcon.ts +23 -0
  654. package/src/IconButton/IconButton.doc.mjs +2 -2
  655. package/src/IconButton/IconButton.tsx +1 -1
  656. package/src/InputGroup/InputGroup.doc.mjs +2 -2
  657. package/src/InputGroup/InputGroup.tsx +1 -1
  658. package/src/InputGroup/InputGroupText.doc.mjs +1 -1
  659. package/src/InputGroup/InputGroupText.tsx +1 -1
  660. package/src/Item/Item.doc.mjs +3 -3
  661. package/src/Item/Item.tsx +1 -1
  662. package/src/Kbd/Kbd.doc.mjs +3 -3
  663. package/src/Kbd/Kbd.tsx +1 -1
  664. package/src/Layer/Layer.doc.mjs +2 -2
  665. package/src/Layer/useLayer.doc.mjs +2 -2
  666. package/src/Layout/Layout.doc.mjs +3 -3
  667. package/src/Layout/Layout.tsx +1 -1
  668. package/src/Layout/LayoutContent.doc.mjs +1 -1
  669. package/src/Layout/LayoutContent.tsx +1 -1
  670. package/src/Layout/LayoutFooter.doc.mjs +1 -1
  671. package/src/Layout/LayoutFooter.tsx +1 -1
  672. package/src/Layout/LayoutHeader.doc.mjs +1 -1
  673. package/src/Layout/LayoutHeader.tsx +1 -1
  674. package/src/Layout/LayoutPanel.doc.mjs +1 -1
  675. package/src/Layout/LayoutPanel.tsx +1 -1
  676. package/src/Lightbox/Lightbox.doc.mjs +3 -3
  677. package/src/Lightbox/Lightbox.test.tsx +33 -0
  678. package/src/Lightbox/Lightbox.tsx +16 -4
  679. package/src/Link/Link.doc.mjs +3 -3
  680. package/src/Link/Link.tsx +1 -1
  681. package/src/Link/LinkProvider.doc.mjs +2 -2
  682. package/src/Link/LinkProvider.tsx +2 -2
  683. package/src/List/List.doc.mjs +3 -3
  684. package/src/List/List.tsx +1 -1
  685. package/src/List/ListItem.doc.mjs +2 -2
  686. package/src/List/ListItem.tsx +1 -1
  687. package/src/Markdown/Markdown.doc.mjs +81 -1
  688. package/src/Markdown/Markdown.test.tsx +92 -0
  689. package/src/Markdown/Markdown.tsx +96 -68
  690. package/src/Markdown/parser.perf.test.ts +47 -35
  691. package/src/MetadataList/MetadataList.doc.mjs +3 -3
  692. package/src/MetadataList/MetadataList.tsx +1 -1
  693. package/src/MetadataList/MetadataListItem.doc.mjs +1 -1
  694. package/src/MetadataList/MetadataListItem.tsx +1 -1
  695. package/src/MobileNav/MobileNav.doc.mjs +3 -3
  696. package/src/MobileNav/MobileNav.tsx +1 -1
  697. package/src/MoreMenu/MoreMenu.doc.mjs +3 -3
  698. package/src/MoreMenu/MoreMenu.tsx +3 -3
  699. package/src/MultiSelector/MultiSelector.doc.mjs +35 -10
  700. package/src/MultiSelector/MultiSelector.test.tsx +220 -0
  701. package/src/MultiSelector/MultiSelector.tsx +201 -56
  702. package/src/NavIcon/NavIcon.doc.mjs +3 -3
  703. package/src/NavIcon/NavIcon.tsx +1 -1
  704. package/src/NavMenu/NavMenu.doc.mjs +2 -2
  705. package/src/NumberInput/NumberInput.doc.mjs +3 -3
  706. package/src/NumberInput/NumberInput.tsx +1 -1
  707. package/src/Outline/Outline.doc.mjs +3 -3
  708. package/src/Outline/Outline.tsx +1 -1
  709. package/src/OverflowList/OverflowList.doc.mjs +3 -3
  710. package/src/OverflowList/OverflowList.tsx +1 -1
  711. package/src/Overlay/Overlay.doc.mjs +2 -2
  712. package/src/Pagination/Pagination.doc.mjs +3 -3
  713. package/src/Pagination/Pagination.tsx +2 -22
  714. package/src/Pagination/index.ts +21 -1
  715. package/src/Popover/Popover.doc.mjs +31 -3
  716. package/src/Popover/Popover.test.tsx +41 -0
  717. package/src/Popover/Popover.tsx +25 -2
  718. package/src/Popover/usePopover.doc.mjs +2 -2
  719. package/src/Popover/usePopover.tsx +10 -4
  720. package/src/PowerSearch/PowerSearch.doc.mjs +3 -3
  721. package/src/PowerSearch/PowerSearch.tsx +1 -1
  722. package/src/ProgressBar/ProgressBar.doc.mjs +3 -3
  723. package/src/ProgressBar/ProgressBar.tsx +2 -22
  724. package/src/ProgressBar/index.ts +22 -5
  725. package/src/RadioList/RadioList.doc.mjs +3 -3
  726. package/src/RadioList/RadioList.tsx +1 -1
  727. package/src/RadioList/RadioListItem.doc.mjs +1 -1
  728. package/src/RadioList/RadioListItem.tsx +1 -1
  729. package/src/Resizable/Resizable.doc.mjs +2 -2
  730. package/src/Resizable/ResizeHandle.test.tsx +3 -2
  731. package/src/Resizable/ResizeHandle.tsx +8 -12
  732. package/src/Resizable/useResizable.doc.mjs +2 -2
  733. package/src/Section/Section.doc.mjs +3 -3
  734. package/src/Section/Section.tsx +2 -20
  735. package/src/Section/index.ts +20 -5
  736. package/src/SegmentedControl/SegmentedControl.doc.mjs +3 -3
  737. package/src/SegmentedControl/SegmentedControl.tsx +1 -1
  738. package/src/SegmentedControl/SegmentedControlItem.doc.mjs +1 -1
  739. package/src/SegmentedControl/SegmentedControlItem.tsx +1 -1
  740. package/src/SelectableCard/SelectableCard.doc.mjs +4 -2
  741. package/src/SelectableCard/SelectableCard.test.tsx +55 -0
  742. package/src/SelectableCard/SelectableCard.tsx +19 -3
  743. package/src/Selector/Selector.doc.mjs +28 -8
  744. package/src/Selector/Selector.test.tsx +193 -0
  745. package/src/Selector/Selector.tsx +194 -51
  746. package/src/Selector/SelectorOption.doc.mjs +1 -1
  747. package/src/SideNav/SideNav.doc.mjs +3 -3
  748. package/src/SideNav/SideNav.tsx +1 -1
  749. package/src/SideNav/SideNavCollapseButton.doc.mjs +1 -1
  750. package/src/SideNav/SideNavCollapseButton.tsx +4 -3
  751. package/src/SideNav/SideNavHeading.doc.mjs +1 -1
  752. package/src/SideNav/SideNavHeading.tsx +8 -9
  753. package/src/SideNav/SideNavItem.doc.mjs +1 -1
  754. package/src/SideNav/SideNavItem.tsx +5 -6
  755. package/src/SideNav/SideNavSection.doc.mjs +1 -1
  756. package/src/SideNav/SideNavSection.tsx +1 -1
  757. package/src/Skeleton/Skeleton.doc.mjs +3 -3
  758. package/src/Skeleton/Skeleton.tsx +1 -1
  759. package/src/Slider/Slider.doc.mjs +3 -3
  760. package/src/Slider/Slider.tsx +9 -13
  761. package/src/Spinner/Spinner.doc.mjs +3 -3
  762. package/src/Spinner/Spinner.tsx +1 -1
  763. package/src/Stack/Stack.doc.mjs +3 -3
  764. package/src/Stack/Stack.tsx +1 -1
  765. package/src/Stack/StackItem.tsx +1 -1
  766. package/src/StatusDot/StatusDot.doc.mjs +3 -3
  767. package/src/StatusDot/StatusDot.tsx +2 -22
  768. package/src/StatusDot/index.ts +22 -5
  769. package/src/Switch/Switch.doc.mjs +3 -3
  770. package/src/Switch/Switch.test.tsx +34 -0
  771. package/src/Switch/Switch.tsx +1 -1
  772. package/src/TabList/Tab.doc.mjs +1 -1
  773. package/src/TabList/Tab.tsx +1 -1
  774. package/src/TabList/TabList.doc.mjs +3 -3
  775. package/src/TabList/TabList.tsx +1 -1
  776. package/src/TabList/TabMenu.doc.mjs +1 -1
  777. package/src/TabList/TabMenu.tsx +1 -1
  778. package/src/Table/BaseTable.tsx +1 -1
  779. package/src/Table/Table.doc.mjs +3 -3
  780. package/src/Table/Table.tsx +1 -1
  781. package/src/Table/TableCell.doc.mjs +1 -1
  782. package/src/Table/TableCell.tsx +1 -1
  783. package/src/Table/TableHeaderCell.doc.mjs +1 -1
  784. package/src/Table/TableHeaderCell.tsx +1 -1
  785. package/src/Table/TableRow.doc.mjs +1 -1
  786. package/src/Table/TableRow.tsx +1 -1
  787. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +21 -3
  788. package/src/Table/plugins/tree/useTableTreeData.test.tsx +161 -2
  789. package/src/Table/plugins/tree/useTableTreeData.tsx +54 -1
  790. package/src/Table/useTableColumnResize.doc.mjs +1 -1
  791. package/src/Table/useTableColumnSettings.doc.mjs +1 -1
  792. package/src/Table/useTableFilterState.doc.mjs +1 -1
  793. package/src/Table/useTableFiltering.doc.mjs +1 -1
  794. package/src/Table/useTableGroupedRows.doc.mjs +2 -2
  795. package/src/Table/useTablePagination.doc.mjs +1 -1
  796. package/src/Table/useTableRowExpansion.doc.mjs +57 -4
  797. package/src/Table/useTableRowIndex.doc.mjs +2 -2
  798. package/src/Table/useTableRowStatus.doc.mjs +2 -2
  799. package/src/Table/useTableSelection.doc.mjs +1 -1
  800. package/src/Table/useTableSelectionState.doc.mjs +1 -1
  801. package/src/Table/useTableSortable.doc.mjs +1 -1
  802. package/src/Table/useTableStickyColumns.doc.mjs +1 -1
  803. package/src/Table/useTableTreeData.doc.mjs +10 -1
  804. package/src/Table/useTableTreeState.doc.mjs +1 -1
  805. package/src/Text/Heading.doc.mjs +4 -4
  806. package/src/Text/Text.doc.mjs +4 -4
  807. package/src/Text/Text.test.tsx +42 -0
  808. package/src/Text/Text.tsx +26 -2
  809. package/src/Text/index.ts +32 -6
  810. package/src/TextArea/TextArea.doc.mjs +5 -5
  811. package/src/TextArea/TextArea.test.tsx +112 -7
  812. package/src/TextArea/TextArea.tsx +143 -50
  813. package/src/TextInput/TextInput.doc.mjs +3 -3
  814. package/src/TextInput/TextInput.tsx +1 -1
  815. package/src/Thumbnail/Thumbnail.doc.mjs +2 -2
  816. package/src/Thumbnail/Thumbnail.test.tsx +24 -1
  817. package/src/Thumbnail/Thumbnail.tsx +28 -35
  818. package/src/TimeInput/TimeInput.doc.mjs +3 -3
  819. package/src/TimeInput/TimeInput.tsx +1 -1
  820. package/src/Timestamp/Timestamp.doc.mjs +5 -5
  821. package/src/Timestamp/Timestamp.test.tsx +131 -0
  822. package/src/Timestamp/Timestamp.tsx +92 -9
  823. package/src/Timestamp/formatInstant.ts +3 -4
  824. package/src/Timestamp/tooltipEntries.ts +3 -2
  825. package/src/Toast/Toast.doc.mjs +3 -3
  826. package/src/Toast/useToast.doc.mjs +2 -2
  827. package/src/ToggleButton/ToggleButton.doc.mjs +3 -3
  828. package/src/ToggleButton/ToggleButton.tsx +1 -1
  829. package/src/ToggleButton/ToggleButtonGroup.doc.mjs +1 -1
  830. package/src/ToggleButton/ToggleButtonGroup.tsx +3 -6
  831. package/src/Token/Token.doc.mjs +3 -3
  832. package/src/Token/Token.tsx +2 -28
  833. package/src/Token/index.ts +28 -1
  834. package/src/Tokenizer/Tokenizer.doc.mjs +3 -3
  835. package/src/Tokenizer/Tokenizer.tsx +1 -1
  836. package/src/Toolbar/Toolbar.doc.mjs +3 -3
  837. package/src/Toolbar/Toolbar.tsx +1 -1
  838. package/src/Tooltip/Tooltip.doc.mjs +3 -3
  839. package/src/Tooltip/Tooltip.tsx +1 -1
  840. package/src/Tooltip/useTooltip.doc.mjs +2 -2
  841. package/src/TopNav/TopNav.doc.mjs +3 -3
  842. package/src/TopNav/TopNav.tsx +1 -1
  843. package/src/TopNav/TopNavHeading.doc.mjs +1 -1
  844. package/src/TopNav/TopNavHeading.tsx +7 -8
  845. package/src/TopNav/TopNavItem.doc.mjs +1 -1
  846. package/src/TopNav/TopNavItem.tsx +1 -1
  847. package/src/TopNav/TopNavMegaMenu.doc.mjs +1 -1
  848. package/src/TopNav/TopNavMegaMenu.tsx +32 -6
  849. package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +1 -1
  850. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +1 -1
  851. package/src/TopNav/TopNavMegaMenuItem.doc.mjs +1 -1
  852. package/src/TopNav/TopNavMegaMenuItem.tsx +1 -1
  853. package/src/TopNav/TopNavMenu.doc.mjs +1 -1
  854. package/src/TopNav/TopNavMenu.tsx +5 -4
  855. package/src/TreeList/TreeList.doc.mjs +3 -3
  856. package/src/TreeList/TreeList.tsx +1 -1
  857. package/src/TreeList/TreeListBranches.tsx +1 -1
  858. package/src/TreeList/TreeListItem.tsx +4 -3
  859. package/src/TreeList/TreeListTypes.ts +1 -18
  860. package/src/TreeList/index.ts +19 -1
  861. package/src/Typeahead/BaseTypeahead.doc.mjs +1 -1
  862. package/src/Typeahead/BaseTypeahead.tsx +1 -1
  863. package/src/Typeahead/Typeahead.doc.mjs +3 -3
  864. package/src/Typeahead/Typeahead.tsx +1 -1
  865. package/src/Typeahead/TypeaheadItem.doc.mjs +1 -1
  866. package/src/Typeahead/TypeaheadItem.tsx +1 -1
  867. package/src/VStack/VStack.tsx +1 -1
  868. package/src/VisuallyHidden/VisuallyHidden.doc.mjs +3 -3
  869. package/src/VisuallyHidden/VisuallyHidden.tsx +1 -1
  870. package/src/__tests__/babelPluginAddExtensions.test.ts +190 -0
  871. package/src/__tests__/inputWidthContract.test.tsx +8 -1
  872. package/src/doc-mjs.d.ts +5 -2
  873. package/src/docPropLiterals.test.ts +1 -1
  874. package/src/docPropReferences.test.ts +1 -1
  875. package/src/hooks/containerReveal.pool.stylex.ts +571 -0
  876. package/src/hooks/index.ts +7 -0
  877. package/src/hooks/useClickableContainer.doc.mjs +2 -2
  878. package/src/hooks/useContainerReveal.doc.mjs +75 -0
  879. package/src/hooks/useContainerReveal.test.tsx +116 -0
  880. package/src/hooks/useContainerReveal.ts +181 -0
  881. package/src/hooks/useEntryAnimation.doc.mjs +2 -2
  882. package/src/hooks/useFocusTrap.doc.mjs +2 -2
  883. package/src/hooks/useGridFocus.doc.mjs +2 -2
  884. package/src/hooks/useGridFocus.ts +8 -6
  885. package/src/hooks/useHotkeys.doc.mjs +2 -2
  886. package/src/hooks/useImageMode.doc.mjs +2 -2
  887. package/src/hooks/useInputContainer.doc.mjs +2 -2
  888. package/src/hooks/useInputContainer.test.tsx +180 -0
  889. package/src/hooks/useInputContainer.ts +36 -1
  890. package/src/hooks/useInputStatusIcon.test.tsx +59 -0
  891. package/src/hooks/useInputStatusIcon.tsx +12 -1
  892. package/src/hooks/useKeyboardHint.doc.mjs +2 -2
  893. package/src/hooks/useKeyboardHint.tsx +1 -1
  894. package/src/hooks/useListFocus.doc.mjs +2 -2
  895. package/src/hooks/useListFocus.ts +8 -7
  896. package/src/hooks/useMediaQuery.doc.mjs +2 -2
  897. package/src/hooks/useOverflow.doc.mjs +2 -2
  898. package/src/hooks/useScrollLock.doc.mjs +2 -2
  899. package/src/hooks/useScrollOverflow.doc.mjs +2 -2
  900. package/src/hooks/useStreamingText.doc.mjs +2 -2
  901. package/src/hooks/useTreeFocus.doc.mjs +2 -2
  902. package/src/hooks/useTreeFocus.test.tsx +53 -1
  903. package/src/hooks/useTreeFocus.ts +13 -2
  904. package/src/i18n/InternationalizationProvider.doc.mjs +2 -2
  905. package/src/i18n/useTranslator.doc.mjs +2 -2
  906. package/src/index.ts +14 -10
  907. package/src/theme/MediaTheme.doc.mjs +2 -2
  908. package/src/theme/SyntaxTheme.doc.mjs +2 -2
  909. package/src/theme/Theme.doc.mjs +2 -2
  910. package/src/theme/Theme.tsx +3 -7
  911. package/src/theme/defineTheme.ts +11 -1
  912. package/src/theme/expandColorScale.test.ts +144 -0
  913. package/src/theme/expandColorScale.ts +53 -15
  914. package/src/theme/index.ts +11 -9
  915. package/src/theme/themeRegistry.test.ts +59 -0
  916. package/src/theme/themeRegistry.ts +53 -0
  917. package/src/theme/types.ts +14 -13
  918. package/src/theme/useTheme.doc.mjs +2 -2
  919. package/src/theme/useTheme.test.tsx +48 -3
  920. package/src/theme/useTheme.ts +100 -29
  921. package/src/utils/rtlStyles.ts +22 -0
  922. package/dist/Thumbnail/thumbnail.markers.stylex.d.ts +0 -9
  923. package/dist/Thumbnail/thumbnail.markers.stylex.d.ts.map +0 -1
  924. package/dist/Thumbnail/thumbnail.markers.stylex.js +0 -14
  925. package/dist/authoring/doc.d.ts +0 -145
  926. package/dist/authoring/doc.d.ts.map +0 -1
  927. package/dist/authoring/doc.js +0 -100
  928. package/dist/authoring/index.d.ts +0 -29
  929. package/dist/authoring/index.d.ts.map +0 -1
  930. package/dist/authoring/index.js +0 -28
  931. package/dist/authoring/integration.d.ts +0 -35
  932. package/dist/authoring/integration.d.ts.map +0 -1
  933. package/dist/authoring/integration.js +0 -30
  934. package/dist/authoring/template.d.ts +0 -66
  935. package/dist/authoring/template.d.ts.map +0 -1
  936. package/dist/authoring/template.js +0 -55
  937. package/dist/config.d.ts +0 -80
  938. package/dist/config.d.ts.map +0 -1
  939. package/dist/config.js +0 -40
  940. package/dist/docs-types.d.ts +0 -969
  941. package/dist/docs-types.d.ts.map +0 -1
  942. package/dist/docs-types.js +0 -1
  943. package/src/Thumbnail/thumbnail.markers.stylex.ts +0 -12
  944. package/src/authoring/doc.ts +0 -164
  945. package/src/authoring/index.test.ts +0 -52
  946. package/src/authoring/index.ts +0 -50
  947. package/src/authoring/integration.ts +0 -42
  948. package/src/authoring/template.ts +0 -74
  949. package/src/config.test.ts +0 -16
  950. package/src/config.ts +0 -92
  951. package/src/docs-types.ts +0 -1108
package/src/Text/Text.tsx CHANGED
@@ -13,7 +13,7 @@
13
13
  * - /packages/core/src/Text/Text.test.tsx (tests for new/changed behavior)
14
14
  * - /packages/core/src/Text/index.ts (exports if types change)
15
15
  * - /apps/storybook/stories/Text.stories.tsx (storybook stories)
16
- * - /packages/cli/templates/blocks/components/Text/ (showcase blocks)
16
+ * - /packages/cli/assets/templates/blocks/components/Text/ (showcase blocks)
17
17
  */
18
18
 
19
19
  import {lazy, Suspense, useRef, type ReactNode} from 'react';
@@ -23,6 +23,7 @@ import type {
23
23
  BuiltinTextType,
24
24
  TextSize,
25
25
  TextColor,
26
+ BuiltinTextColor,
26
27
  TextWeight,
27
28
  TextDisplay,
28
29
  TextJustify,
@@ -185,6 +186,24 @@ function resolveStyleType(type: TextType): BuiltinTextType {
185
186
  return 'body';
186
187
  }
187
188
 
189
+ /**
190
+ * Resolve the StyleX baseline color. Built-in colors map to their own color
191
+ * style; custom (theme-defined) colors fall back to the `primary` baseline —
192
+ * their actual color comes from theme CSS (`.astryx-text.<color>` /
193
+ * `.astryx-heading.<color>`), which the rendered `color` class targets.
194
+ *
195
+ * Exported so Heading applies the same custom-color fallback as Text.
196
+ */
197
+ export function resolveStyleColor(color: TextColor): BuiltinTextColor {
198
+ // The `in` guard is a runtime check for consumer-augmented custom colors
199
+ // (which widen `TextColor` beyond the built-ins via TextColorMap); within
200
+ // core the two types coincide, so no cast is needed.
201
+ if (color in colorStyles) {
202
+ return color;
203
+ }
204
+ return 'primary';
205
+ }
206
+
188
207
  /**
189
208
  * Semantic text component. Renders text with type-based styling from the theme.
190
209
  *
@@ -228,6 +247,11 @@ export function Text({
228
247
  // Resolve style type — custom types fall back to 'body' for StyleX baseline
229
248
  const styleType = resolveStyleType(type);
230
249
 
250
+ // Resolve style color — custom colors fall back to 'primary' for StyleX
251
+ // baseline; the real color comes from theme CSS via the rendered `color`
252
+ // class (see themeProps below).
253
+ const styleColor = resolveStyleColor(resolvedColor);
254
+
231
255
  // Resolve wordBreak with smart default
232
256
  const resolvedWordBreak =
233
257
  wordBreak ?? (maxLines === 1 ? 'break-all' : 'break-word');
@@ -257,7 +281,7 @@ export function Text({
257
281
  {...mergeProps(
258
282
  themeProps('text', {type, size, color: resolvedColor}),
259
283
  stylex.props(
260
- colorStyles[resolvedColor],
284
+ colorStyles[styleColor],
261
285
  sizeByTypeStyles[styleType],
262
286
  size && sizeStyles[size],
263
287
  defaultWeightByTypeStyles[styleType],
package/src/Text/index.ts CHANGED
@@ -7,12 +7,38 @@
7
7
  * @position Entry point for Text components
8
8
  */
9
9
 
10
- export {
11
- Text,
12
- type TextProps,
13
- type TextType,
14
- type TextSize,
15
- } from './Text';
10
+ /**
11
+ * Extensible map of text color variants for Text/Heading.
12
+ *
13
+ * Themes add custom colors via component overrides in defineTheme; a custom
14
+ * color renders with the `primary` baseline color from StyleX and receives its
15
+ * actual color from theme CSS (`.astryx-text.<color>` / `.astryx-heading.<color>`),
16
+ * exactly like custom text `type`s.
17
+ *
18
+ * To add type-safe custom colors, use module augmentation — the same technique
19
+ * as `ButtonVariantMap` etc.:
20
+ * ```ts
21
+ * declare module '@astryxdesign/core/Text' {
22
+ * interface TextColorMap {
23
+ * brand: true;
24
+ * danger: true;
25
+ * }
26
+ * }
27
+ * ```
28
+ *
29
+ * `astryx theme build` generates these augmentations automatically when it
30
+ * detects new `color:*` values in a theme's Text/Heading component overrides.
31
+ */
32
+ export interface TextColorMap {
33
+ primary: true;
34
+ secondary: true;
35
+ disabled: true;
36
+ placeholder: true;
37
+ accent: true;
38
+ inherit: true;
39
+ }
40
+
41
+ export {Text, type TextProps, type TextType, type TextSize} from './Text';
16
42
  export {
17
43
  Heading,
18
44
  type HeadingProps,
@@ -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: 'TextArea',
@@ -98,7 +98,7 @@ export const docs = {
98
98
  name: 'maxLength',
99
99
  type: 'number',
100
100
  description:
101
- 'Maximum number of characters allowed. When set, a character counter (current/max) is displayed below the textarea. Does not enforce the limit natively; the counter shows error styling when exceeded.',
101
+ 'Maximum number of characters allowed. When set, a character counter (current/max) is displayed inside the input container, anchored to the bottom-right beneath the text. Does not enforce the limit natively; when exceeded the counter turns red and shows a warning icon (a non-color cue), and screen-reader users hear the remaining/over-limit count announced.',
102
102
  },
103
103
  {
104
104
  name: 'status',
@@ -198,7 +198,7 @@ export const docs = {
198
198
  },
199
199
  };
200
200
 
201
- /** @type {import('../docs-types').ComponentDoc} */
201
+ /** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
202
202
  export const docsZh = {
203
203
  name: 'TextArea',
204
204
  displayName: 'Text Area',
@@ -374,7 +374,7 @@ export const docsZh = {
374
374
  },
375
375
  };
376
376
 
377
- /** @type {import('../docs-types').TranslationDoc} */
377
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
378
378
  export const docsDense = {
379
379
  description: 'Multi-line text input for collecting longer user input.',
380
380
  usage: {
@@ -407,7 +407,7 @@ export const docsDense = {
407
407
  isLoading: 'Loading state w/ spinner inside input.',
408
408
  placeholder: 'Placeholder when textarea empty.',
409
409
  rows: 'Visible text rows.',
410
- maxLength: 'Max chars allowed. Shows counter (current/max) below textarea. No native enforcement.',
410
+ maxLength: 'Max chars allowed. Shows counter (current/max) inside the container, bottom-right beneath the text. No native enforcement; over-limit shows red + a warning icon and is announced to screen readers.',
411
411
  status: 'Colored border+icon status. Optional floating message below textarea.',
412
412
  statusVariant: 'How status message is placed: attached overlaps below input; detached floats below w/ spacing; tooltip hides the box and shows it on the status icon.',
413
413
  labelTooltip: 'Tooltip in info icon at label end.',
@@ -335,6 +335,23 @@ describe('TextArea', () => {
335
335
  expect(messageElement).toHaveAttribute('id');
336
336
  expect(describedBy).toContain(messageElement.id);
337
337
  });
338
+
339
+ it('shows both the loading spinner and the status icon while busy', () => {
340
+ const {container} = render(
341
+ <TextArea
342
+ label="Description"
343
+ value=""
344
+ onChange={() => {}}
345
+ isLoading
346
+ status={{type: 'error'}}
347
+ />,
348
+ );
349
+ // Matches the other inputs: spinner (role="status") and the status icon
350
+ // render side by side in the end slot, not mutually exclusively.
351
+ expect(screen.getByRole('status')).toBeInTheDocument();
352
+ // Status icon svg is also present alongside the spinner.
353
+ expect(container.querySelectorAll('svg').length).toBeGreaterThan(0);
354
+ });
338
355
  });
339
356
 
340
357
  it('renders tooltip info icon when labelTooltip is provided', () => {
@@ -506,7 +523,70 @@ describe('TextArea', () => {
506
523
  expect(screen.getByText('5/50')).toBeInTheDocument();
507
524
  });
508
525
 
509
- it('counter has aria-live region for screen reader announcements', () => {
526
+ it('announces remaining characters politely as the value nears the limit', async () => {
527
+ const user = userEvent.setup();
528
+ function Wrapper() {
529
+ const [val, setVal] = useState('x'.repeat(44));
530
+ return (
531
+ <TextArea
532
+ label="Description"
533
+ value={val}
534
+ onChange={setVal}
535
+ maxLength={50}
536
+ />
537
+ );
538
+ }
539
+ render(<Wrapper />);
540
+ // Type one more char to cross into the "near the limit" zone (45/50).
541
+ await user.type(screen.getByRole('textbox'), 'x');
542
+ const politeRegion = () =>
543
+ document.querySelector('[data-astryx-live-region="polite"]');
544
+ await waitFor(() => {
545
+ expect(politeRegion()).toHaveTextContent('5 characters remaining');
546
+ });
547
+ });
548
+
549
+ it('announces over-limit assertively once the value exceeds the max', async () => {
550
+ const user = userEvent.setup();
551
+ function Wrapper() {
552
+ const [val, setVal] = useState('x'.repeat(50));
553
+ return (
554
+ <TextArea
555
+ label="Description"
556
+ value={val}
557
+ onChange={setVal}
558
+ maxLength={50}
559
+ />
560
+ );
561
+ }
562
+ render(<Wrapper />);
563
+ await user.type(screen.getByRole('textbox'), 'x');
564
+ const assertiveRegion = () =>
565
+ document.querySelector('[data-astryx-live-region="assertive"]');
566
+ await waitFor(() => {
567
+ expect(assertiveRegion()).toHaveTextContent(
568
+ '1 character over the limit',
569
+ );
570
+ });
571
+ });
572
+
573
+ it('shows a non-color over-limit indicator icon when exceeded', () => {
574
+ const {container} = render(
575
+ <TextArea
576
+ label="Description"
577
+ value={'x'.repeat(55)}
578
+ onChange={() => {}}
579
+ maxLength={50}
580
+ />,
581
+ );
582
+ // The counter renders a warning icon (a shape cue) alongside the red
583
+ // count, so the over-limit state is not conveyed by color alone.
584
+ const counter = screen.getByText('55/50').closest('div');
585
+ expect(counter?.querySelector('svg')).toBeInTheDocument();
586
+ expect(container).toBeInTheDocument();
587
+ });
588
+
589
+ it('does not show the over-limit indicator icon within the limit', () => {
510
590
  render(
511
591
  <TextArea
512
592
  label="Description"
@@ -515,9 +595,8 @@ describe('TextArea', () => {
515
595
  maxLength={50}
516
596
  />,
517
597
  );
518
- const liveRegion = document.querySelector('[aria-live="polite"]');
519
- expect(liveRegion).toBeInTheDocument();
520
- expect(liveRegion).toHaveTextContent('5 characters remaining');
598
+ const counter = screen.getByText('45/50').closest('div');
599
+ expect(counter?.querySelector('svg')).not.toBeInTheDocument();
521
600
  });
522
601
 
523
602
  it('counter is linked to textarea via aria-describedby', () => {
@@ -535,6 +614,22 @@ describe('TextArea', () => {
535
614
  expect(counter).toHaveAttribute('id');
536
615
  expect(describedBy).toContain(counter.id);
537
616
  });
617
+
618
+ it('renders the counter inside the input container (same wrapper as textarea)', () => {
619
+ render(
620
+ <TextArea
621
+ label="Description"
622
+ value="Hello"
623
+ onChange={() => {}}
624
+ maxLength={50}
625
+ />,
626
+ );
627
+ const textarea = screen.getByRole('textbox');
628
+ const counter = screen.getByText('5/50');
629
+ // The counter now lives inside the bordered input container as a sibling
630
+ // overlay of the textarea, not below it as an out-of-container element.
631
+ expect(textarea.parentElement).toBe(counter.parentElement);
632
+ });
538
633
  });
539
634
 
540
635
  describe('hasAutoFocus prop', () => {
@@ -737,11 +832,15 @@ describe('TextArea', () => {
737
832
  });
738
833
  });
739
834
 
740
-
741
835
  describe('TextArea statusVariant forwarding', () => {
742
836
  it('defaults to attached (status renders with data-variant="attached")', () => {
743
837
  const {container} = render(
744
- <TextArea label="Bio" value="" onChange={() => {}} status={{type: 'error', message: 'Required'}} />,
838
+ <TextArea
839
+ label="Bio"
840
+ value=""
841
+ onChange={() => {}}
842
+ status={{type: 'error', message: 'Required'}}
843
+ />,
745
844
  );
746
845
  expect(container.querySelector('.astryx-field-status')).toHaveAttribute(
747
846
  'data-variant',
@@ -751,7 +850,13 @@ describe('TextArea statusVariant forwarding', () => {
751
850
 
752
851
  it('forwards statusVariant="detached" to the underlying Field status', () => {
753
852
  const {container} = render(
754
- <TextArea label="Bio" value="" onChange={() => {}} status={{type: 'error', message: 'Required'}} statusVariant="detached" />,
853
+ <TextArea
854
+ label="Bio"
855
+ value=""
856
+ onChange={() => {}}
857
+ status={{type: 'error', message: 'Required'}}
858
+ statusVariant="detached"
859
+ />,
755
860
  );
756
861
  expect(container.querySelector('.astryx-field-status')).toHaveAttribute(
757
862
  'data-variant',
@@ -13,7 +13,7 @@
13
13
  * - /packages/core/src/TextArea/TextArea.test.tsx (tests for new/changed behavior)
14
14
  * - /packages/core/src/TextArea/index.ts (exports if types change)
15
15
  * - /apps/storybook/stories/TextArea.stories.tsx (storybook stories)
16
- * - /packages/cli/templates/blocks/components/TextArea/ (showcase blocks)
16
+ * - /packages/cli/assets/templates/blocks/components/TextArea/ (showcase blocks)
17
17
  */
18
18
 
19
19
  import {
@@ -21,6 +21,7 @@ import {
21
21
  useOptimistic,
22
22
  useTransition,
23
23
  useRef,
24
+ useCallback,
24
25
  type ChangeEvent,
25
26
  type ClipboardEvent,
26
27
  type FocusEvent,
@@ -41,7 +42,7 @@ import {
41
42
  inputStatusFocusWithinStyles,
42
43
  type FieldStatusVariant,
43
44
  } from '../Field';
44
- import {renderIconSlot, type IconType} from '../Icon';
45
+ import {Icon, renderIconSlot, type IconType} from '../Icon';
45
46
  import {Spinner} from '../Spinner';
46
47
  import {useTooltip} from '../Tooltip';
47
48
  import {mergeProps, mergeRefs} from '../utils';
@@ -49,25 +50,39 @@ import type {BaseProps} from '../BaseProps';
49
50
  import type {SizeValue} from '../utils/types';
50
51
  import {useInputContainer} from '../hooks/useInputContainer';
51
52
  import {useInputStatusIcon} from '../hooks/useInputStatusIcon';
53
+ import {useAnnounce} from '../hooks/useAnnounce';
52
54
  import {useSize} from '../SizeContext/SizeContext';
53
55
  import {themeProps} from '../utils/themeProps';
54
- import {VisuallyHidden} from '../VisuallyHidden';
56
+ import {useTranslator} from '../i18n';
55
57
 
56
58
  const COUNTER_WARNING_THRESHOLD = 0.8;
57
59
 
58
60
  const styles = stylex.create({
61
+ // The wrapper is a bare positioning context. The <textarea> spans the full
62
+ // container and carries its own internal padding; icons, status/spinner, and
63
+ // the character counter are absolutely-positioned overlays anchored to the
64
+ // container corners. This keeps the native resize grip in the true
65
+ // bottom-right corner and lets the scrollbar represent the full input area.
59
66
  wrapper: {
60
67
  zIndex: 1,
61
- alignItems: 'flex-start',
62
- paddingBlock: spacingVars['--spacing-1'],
68
+ display: 'block',
69
+ padding: 0,
70
+ // Internal inline padding for the textarea's text. Defined on the wrapper
71
+ // so the counter (a sibling overlay) inherits the same value and stays
72
+ // aligned with the text edge. Kept as an internal var so it can later be
73
+ // driven by a theme "padding" translation without touching either child.
74
+ '--_textarea-inline-padding': spacingVars['--spacing-2'],
63
75
  },
64
76
  textarea: {
65
77
  display: 'block',
66
- flex: 1,
78
+ width: '100%',
79
+ boxSizing: 'border-box',
67
80
  minWidth: 0,
68
81
  borderWidth: 0,
69
82
  borderStyle: 'none',
70
- padding: 0,
83
+ // Base internal padding; overlays get their own reserved space below.
84
+ paddingBlock: spacingVars['--spacing-1'],
85
+ paddingInline: 'var(--_textarea-inline-padding)',
71
86
  fontFamily: typographyVars['--font-family-body'],
72
87
  fontSize: {
73
88
  default: typeScaleVars['--text-body-size'],
@@ -85,29 +100,59 @@ const styles = stylex.create({
85
100
  textareaDisabled: {
86
101
  cursor: 'not-allowed',
87
102
  },
103
+ // Reserve start padding so text clears the start icon.
104
+ // inline inset + 16px icon (sm) + 8px gap
105
+ textareaWithStartIcon: {
106
+ paddingInlineStart: `calc(var(--_textarea-inline-padding) + ${spacingVars['--spacing-6']})`,
107
+ },
108
+ // Reserve end padding so text clears the status icon / spinner overlay.
109
+ // inline inset + 20px icon (md) + 4px gap
110
+ textareaWithStatus: {
111
+ paddingInlineEnd: `calc(var(--_textarea-inline-padding) + ${spacingVars['--spacing-6']})`,
112
+ },
113
+ // Reserve wider end padding when the spinner AND status icon both show.
114
+ // inline inset + 16px spinner + 8px gap + 20px icon + 4px gap
115
+ textareaWithBusyStatus: {
116
+ paddingInlineEnd: `calc(var(--_textarea-inline-padding) + ${spacingVars['--spacing-12']})`,
117
+ },
118
+ // Reserve bottom padding so text clears the character counter overlay.
119
+ textareaWithCounter: {
120
+ paddingBottom: spacingVars['--spacing-7'],
121
+ },
122
+ startIcon: {
123
+ position: 'absolute',
124
+ top: spacingVars['--spacing-2'],
125
+ insetInlineStart: 'var(--_textarea-inline-padding)',
126
+ pointerEvents: 'none',
127
+ display: 'flex',
128
+ },
129
+ endSlot: {
130
+ position: 'absolute',
131
+ top: spacingVars['--spacing-2'],
132
+ insetInlineEnd: 'var(--_textarea-inline-padding)',
133
+ pointerEvents: 'none',
134
+ display: 'flex',
135
+ alignItems: 'center',
136
+ gap: spacingVars['--spacing-2'],
137
+ },
138
+ // Character counter lives inside the input container, anchored bottom-right
139
+ // underneath the textarea, aligned to the same inline inset as the text.
88
140
  counter: {
141
+ position: 'absolute',
142
+ bottom: spacingVars['--spacing-1'],
143
+ insetInlineEnd: 'var(--_textarea-inline-padding)',
144
+ pointerEvents: 'none',
89
145
  display: 'flex',
90
- justifyContent: 'flex-end',
91
- marginTop: spacingVars['--spacing-1'],
146
+ alignItems: 'center',
147
+ gap: spacingVars['--spacing-1'],
92
148
  fontFamily: typographyVars['--font-family-body'],
93
149
  fontSize: typeScaleVars['--text-supporting-size'],
150
+ lineHeight: typeScaleVars['--text-supporting-leading'],
94
151
  color: colorVars['--color-text-secondary'],
95
152
  },
96
153
  counterError: {
97
154
  color: colorVars['--color-error'],
98
155
  },
99
- statusIcon: {
100
- position: 'absolute',
101
- top: spacingVars['--spacing-2'],
102
- insetInlineEnd: spacingVars['--spacing-2'],
103
- pointerEvents: 'none',
104
- display: 'flex',
105
- },
106
- textareaWithStatus: {
107
- // Reserve space so text doesn't flow under the absolutely-positioned icon.
108
- // 20px (icon md) + 4px gap = 24px (--spacing-6)
109
- paddingInlineEnd: spacingVars['--spacing-6'],
110
- },
111
156
  });
112
157
 
113
158
  const textareaSizeStyles = stylex.create({
@@ -326,12 +371,17 @@ export function TextArea({
326
371
  ...rest
327
372
  }: TextAreaProps) {
328
373
  const size = useSize(sizeProp, 'md');
374
+ const t = useTranslator();
375
+ const announce = useAnnounce();
329
376
  const id = useId();
330
377
  const descriptionID = useId();
331
378
  const statusMessageID = useId();
332
379
  const counterID = useId();
333
380
  const textareaRef = useRef<HTMLTextAreaElement | null>(null);
334
381
  const containerRef = useRef<HTMLDivElement | null>(null);
382
+ // Tracks the counter "zone" last announced (under / near / over) so we only
383
+ // announce on a zone change, not on every keystroke.
384
+ const counterZoneRef = useRef<'under' | 'near' | 'over' | null>(null);
335
385
 
336
386
  const [, startTransition] = useTransition();
337
387
  const [optimisticValue, setOptimisticValue] = useOptimistic(value);
@@ -370,6 +420,43 @@ export function TextArea({
370
420
  .filter(Boolean)
371
421
  .join(' ') || undefined;
372
422
 
423
+ // Announce the character-count status through the shared live region, but
424
+ // only when the value crosses into a new zone (near the limit / over the
425
+ // limit) so we don't speak on every keystroke. Over-limit is assertive (an
426
+ // error the user should hear immediately); nearing the limit is polite.
427
+ const announceCounter = useCallback(
428
+ (length: number) => {
429
+ if (maxLength == null) {
430
+ return;
431
+ }
432
+ const zone: 'under' | 'near' | 'over' =
433
+ length > maxLength
434
+ ? 'over'
435
+ : length >= maxLength * COUNTER_WARNING_THRESHOLD
436
+ ? 'near'
437
+ : 'under';
438
+ if (zone === counterZoneRef.current) {
439
+ return;
440
+ }
441
+ counterZoneRef.current = zone;
442
+ if (zone === 'over') {
443
+ announce(
444
+ t('@astryx.textArea.charactersOverLimit', {
445
+ count: length - maxLength,
446
+ }),
447
+ 'assertive',
448
+ );
449
+ } else if (zone === 'near') {
450
+ announce(
451
+ t('@astryx.textArea.charactersRemaining', {
452
+ count: maxLength - length,
453
+ }),
454
+ );
455
+ }
456
+ },
457
+ [announce, t, maxLength],
458
+ );
459
+
373
460
  const handleChange = (e: ChangeEvent<HTMLTextAreaElement>) => {
374
461
  // Value can't change while showing a disabled message (the field is
375
462
  // read-only and non-native-disabled), but guard the handler too so the
@@ -378,6 +465,7 @@ export function TextArea({
378
465
  return;
379
466
  }
380
467
  const newValue = e.target.value;
468
+ announceCounter(newValue.length);
381
469
  onChange?.(newValue, e);
382
470
  if (changeAction && !e.defaultPrevented) {
383
471
  startTransition(async () => {
@@ -434,20 +522,20 @@ export function TextArea({
434
522
  stylex.props(
435
523
  inputWrapperStyles.base,
436
524
  styles.wrapper,
437
- textareaSizeStyles[size],
438
- effectivelyDisabled && inputWrapperStyles.disabled,
525
+ isDisabled && inputWrapperStyles.disabled,
439
526
  status && inputStatusBorderStyles[status.type],
440
- status &&
441
- !effectivelyDisabled &&
442
- inputStatusHoverShadowStyles[status.type],
527
+ status && !isDisabled && inputStatusHoverShadowStyles[status.type],
443
528
  status && inputStatusFocusWithinStyles[status.type],
444
529
  xstyle,
445
530
  ),
446
531
  className,
447
532
  style,
448
533
  )}>
449
- {startIcon &&
450
- renderIconSlot(startIcon, {size: 'sm', color: 'secondary'})}
534
+ {startIcon && (
535
+ <span {...stylex.props(styles.startIcon)}>
536
+ {renderIconSlot(startIcon, {size: 'sm', color: 'secondary'})}
537
+ </span>
538
+ )}
451
539
  <textarea
452
540
  {...rest}
453
541
  ref={mergeRefs(ref, textareaRef)}
@@ -480,32 +568,37 @@ export function TextArea({
480
568
  aria-busy={isBusy || undefined}
481
569
  {...stylex.props(
482
570
  styles.textarea,
483
- effectivelyDisabled && styles.textareaDisabled,
484
- status && styles.textareaWithStatus,
571
+ textareaSizeStyles[size],
572
+ isDisabled && styles.textareaDisabled,
573
+ Boolean(startIcon) && styles.textareaWithStartIcon,
574
+ (status || isBusy) && styles.textareaWithStatus,
575
+ isBusy && !!statusIcon && styles.textareaWithBusyStatus,
576
+ maxLength != null && styles.textareaWithCounter,
485
577
  )}
486
578
  />
487
- {isBusy && <Spinner size="sm" />}
488
- {statusIcon && (
489
- <span {...stylex.props(styles.statusIcon)}>{statusIcon}</span>
579
+ {(isBusy || statusIcon) && (
580
+ <span {...stylex.props(styles.endSlot)}>
581
+ {isBusy && <Spinner size="sm" />}
582
+ {statusIcon}
583
+ </span>
584
+ )}
585
+ {maxLength != null && (
586
+ <div
587
+ id={counterID}
588
+ {...stylex.props(
589
+ styles.counter,
590
+ optimisticValue.length > maxLength && styles.counterError,
591
+ )}>
592
+ {optimisticValue.length > maxLength && (
593
+ // Non-color cue so the over-limit state isn't conveyed by the red
594
+ // color alone (WCAG 1.4.1). Decorative — the count text and the
595
+ // live-region announcement carry the meaning.
596
+ <Icon icon="warning" size="sm" />
597
+ )}
598
+ {optimisticValue.length}/{maxLength}
599
+ </div>
490
600
  )}
491
601
  </div>
492
- {maxLength != null && (
493
- <div
494
- id={counterID}
495
- {...stylex.props(
496
- styles.counter,
497
- optimisticValue.length > maxLength && styles.counterError,
498
- )}>
499
- {optimisticValue.length}/{maxLength}
500
- <VisuallyHidden aria-live="polite">
501
- {optimisticValue.length >= maxLength * COUNTER_WARNING_THRESHOLD
502
- ? optimisticValue.length > maxLength
503
- ? `${optimisticValue.length - maxLength} characters over limit`
504
- : `${maxLength - optimisticValue.length} characters remaining`
505
- : ''}
506
- </VisuallyHidden>
507
- </div>
508
- )}
509
602
  {showsDisabledMessage &&
510
603
  disabledMessageTooltip.renderTooltip(disabledMessage)}
511
604
  </Field>
@@ -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: 'TextInput',
@@ -177,7 +177,7 @@ export const docs = {
177
177
  },
178
178
  };
179
179
 
180
- /** @type {import('../docs-types').ComponentDoc} */
180
+ /** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
181
181
  export const docsZh = {
182
182
  name: 'TextInput',
183
183
  displayName: 'Text Input',
@@ -343,7 +343,7 @@ export const docsZh = {
343
343
  },
344
344
  };
345
345
 
346
- /** @type {import('../docs-types').TranslationDoc} */
346
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
347
347
  export const docsDense = {
348
348
  description: 'Text input for collecting user text w/ label, description, validation status, optional/required indicators.',
349
349
  usage: {
@@ -13,7 +13,7 @@
13
13
  * - /packages/core/src/TextInput/TextInput.test.tsx (tests for new/changed behavior)
14
14
  * - /packages/core/src/TextInput/index.ts (exports if types change)
15
15
  * - /apps/storybook/stories/TextInput.stories.tsx (storybook stories)
16
- * - /packages/cli/templates/blocks/components/TextInput/ (showcase blocks)
16
+ * - /packages/cli/assets/templates/blocks/components/TextInput/ (showcase blocks)
17
17
  */
18
18
 
19
19
  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: 'Thumbnail',
@@ -98,7 +98,7 @@ export const docs = {
98
98
  },
99
99
  };
100
100
 
101
- /** @type {import('../docs-types').TranslationDoc} */
101
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
102
102
  export const docsZh = {
103
103
  propDescriptions: {
104
104
  src: '\u56FE\u7247\u6E90 URL\u3002',