@astryxdesign/core 0.2.0 → 0.3.0-canary.077087f

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 (1114) hide show
  1. package/CHANGELOG.md +110 -0
  2. package/README.md +5 -3
  3. package/dist/AlertDialog/AlertDialog.d.ts +1 -1
  4. package/dist/AlertDialog/AlertDialog.js +1 -1
  5. package/dist/AppShell/AppShell.d.ts +2 -20
  6. package/dist/AppShell/AppShell.d.ts.map +1 -1
  7. package/dist/AppShell/AppShell.js +25 -18
  8. package/dist/AppShell/index.d.ts +20 -1
  9. package/dist/AppShell/index.d.ts.map +1 -1
  10. package/dist/AppShell/index.js +14 -0
  11. package/dist/AspectRatio/AspectRatio.d.ts +1 -1
  12. package/dist/AspectRatio/AspectRatio.js +1 -1
  13. package/dist/Avatar/Avatar.d.ts +1 -1
  14. package/dist/Avatar/Avatar.d.ts.map +1 -1
  15. package/dist/Avatar/Avatar.js +35 -14
  16. package/dist/Avatar/AvatarStatusDot.d.ts +2 -26
  17. package/dist/Avatar/AvatarStatusDot.d.ts.map +1 -1
  18. package/dist/Avatar/AvatarStatusDot.js +1 -22
  19. package/dist/Avatar/index.d.ts +26 -1
  20. package/dist/Avatar/index.d.ts.map +1 -1
  21. package/dist/Avatar/index.js +21 -0
  22. package/dist/AvatarGroup/AvatarGroup.d.ts +1 -1
  23. package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
  24. package/dist/AvatarGroup/AvatarGroup.js +4 -8
  25. package/dist/AvatarGroup/AvatarGroupOverflow.d.ts +2 -2
  26. package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
  27. package/dist/AvatarGroup/AvatarGroupOverflow.js +7 -3
  28. package/dist/Badge/Badge.d.ts +2 -30
  29. package/dist/Badge/Badge.d.ts.map +1 -1
  30. package/dist/Badge/Badge.js +2 -17
  31. package/dist/Badge/index.d.ts +31 -2
  32. package/dist/Badge/index.d.ts.map +1 -1
  33. package/dist/Badge/index.js +15 -1
  34. package/dist/Banner/Banner.d.ts +2 -37
  35. package/dist/Banner/Banner.d.ts.map +1 -1
  36. package/dist/Banner/Banner.js +6 -34
  37. package/dist/Banner/index.d.ts +37 -1
  38. package/dist/Banner/index.d.ts.map +1 -1
  39. package/dist/Banner/index.js +27 -0
  40. package/dist/Blockquote/Blockquote.d.ts +1 -1
  41. package/dist/Blockquote/Blockquote.js +1 -1
  42. package/dist/Breadcrumbs/BreadcrumbItem.d.ts +1 -1
  43. package/dist/Breadcrumbs/BreadcrumbItem.js +4 -3
  44. package/dist/Breadcrumbs/Breadcrumbs.d.ts +2 -18
  45. package/dist/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  46. package/dist/Breadcrumbs/Breadcrumbs.js +1 -15
  47. package/dist/Breadcrumbs/index.d.ts +18 -1
  48. package/dist/Breadcrumbs/index.d.ts.map +1 -1
  49. package/dist/Breadcrumbs/index.js +14 -0
  50. package/dist/Button/Button.d.ts +3 -21
  51. package/dist/Button/Button.d.ts.map +1 -1
  52. package/dist/Button/Button.js +6 -19
  53. package/dist/Button/index.d.ts +21 -3
  54. package/dist/Button/index.d.ts.map +1 -1
  55. package/dist/Button/index.js +15 -1
  56. package/dist/ButtonGroup/ButtonGroup.d.ts +1 -1
  57. package/dist/ButtonGroup/ButtonGroup.js +1 -1
  58. package/dist/Calendar/Calendar.js +1 -1
  59. package/dist/Calendar/index.d.ts +1 -1
  60. package/dist/Calendar/index.d.ts.map +1 -1
  61. package/dist/Calendar/index.js +1 -1
  62. package/dist/Calendar/styles.d.ts +2 -2
  63. package/dist/Calendar/styles.js +2 -2
  64. package/dist/Calendar/utils.d.ts +0 -4
  65. package/dist/Calendar/utils.d.ts.map +1 -1
  66. package/dist/Calendar/utils.js +1 -8
  67. package/dist/Card/Card.d.ts +1 -1
  68. package/dist/Card/Card.js +1 -1
  69. package/dist/Carousel/Carousel.d.ts +54 -3
  70. package/dist/Carousel/Carousel.d.ts.map +1 -1
  71. package/dist/Carousel/Carousel.js +90 -27
  72. package/dist/Carousel/index.d.ts +1 -1
  73. package/dist/Carousel/index.d.ts.map +1 -1
  74. package/dist/Center/Center.d.ts +21 -4
  75. package/dist/Center/Center.d.ts.map +1 -1
  76. package/dist/Center/Center.js +11 -3
  77. package/dist/Chat/ChatComposer.d.ts +1 -1
  78. package/dist/Chat/ChatComposer.js +9 -9
  79. package/dist/Chat/ChatComposerDrawer.d.ts +1 -1
  80. package/dist/Chat/ChatComposerDrawer.js +5 -5
  81. package/dist/Chat/ChatComposerInput.d.ts +1 -1
  82. package/dist/Chat/ChatComposerInput.js +1 -1
  83. package/dist/Chat/ChatDictationButton.d.ts +1 -1
  84. package/dist/Chat/ChatDictationButton.js +1 -1
  85. package/dist/Chat/ChatLayout.d.ts +8 -1
  86. package/dist/Chat/ChatLayout.d.ts.map +1 -1
  87. package/dist/Chat/ChatLayout.js +15 -4
  88. package/dist/Chat/ChatLayoutScrollButton.d.ts +1 -1
  89. package/dist/Chat/ChatLayoutScrollButton.js +1 -1
  90. package/dist/Chat/ChatMessage.d.ts +1 -1
  91. package/dist/Chat/ChatMessage.js +1 -1
  92. package/dist/Chat/ChatMessageBubble.d.ts +1 -1
  93. package/dist/Chat/ChatMessageBubble.js +1 -1
  94. package/dist/Chat/ChatMessageList.d.ts +1 -1
  95. package/dist/Chat/ChatMessageList.js +1 -1
  96. package/dist/Chat/ChatSendButton.d.ts.map +1 -1
  97. package/dist/Chat/ChatSendButton.js +4 -2
  98. package/dist/Chat/ChatSystemMessage.d.ts +1 -1
  99. package/dist/Chat/ChatSystemMessage.js +1 -1
  100. package/dist/Chat/ChatTokenizedText.d.ts +1 -1
  101. package/dist/Chat/ChatTokenizedText.js +1 -1
  102. package/dist/CheckboxInput/CheckboxInput.d.ts +1 -1
  103. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  104. package/dist/CheckboxInput/CheckboxInput.js +3 -3
  105. package/dist/CheckboxList/CheckboxList.d.ts +1 -1
  106. package/dist/CheckboxList/CheckboxList.js +1 -1
  107. package/dist/CheckboxList/CheckboxListItem.d.ts +1 -1
  108. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  109. package/dist/CheckboxList/CheckboxListItem.js +20 -5
  110. package/dist/Citation/Citation.d.ts +1 -1
  111. package/dist/Citation/Citation.js +1 -1
  112. package/dist/ClickableCard/ClickableCard.d.ts +3 -3
  113. package/dist/ClickableCard/ClickableCard.js +3 -3
  114. package/dist/Code/Code.d.ts +2 -2
  115. package/dist/Code/Code.js +2 -2
  116. package/dist/CodeBlock/CodeBlock.js +2 -2
  117. package/dist/Collapsible/Collapsible.d.ts +1 -1
  118. package/dist/Collapsible/Collapsible.js +3 -3
  119. package/dist/Collapsible/CollapsibleGroup.d.ts +1 -1
  120. package/dist/Collapsible/CollapsibleGroup.js +1 -1
  121. package/dist/Collapsible/CollapsibleGroupContext.js +1 -1
  122. package/dist/CommandPalette/CommandPalette.d.ts +1 -1
  123. package/dist/CommandPalette/CommandPalette.js +1 -1
  124. package/dist/CommandPalette/CommandPaletteEmpty.js +1 -1
  125. package/dist/CommandPalette/CommandPaletteFooter.js +1 -1
  126. package/dist/CommandPalette/CommandPaletteGroup.js +1 -1
  127. package/dist/CommandPalette/CommandPaletteInput.d.ts +2 -2
  128. package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
  129. package/dist/CommandPalette/CommandPaletteInput.js +4 -2
  130. package/dist/CommandPalette/CommandPaletteItem.d.ts +1 -1
  131. package/dist/CommandPalette/CommandPaletteItem.js +1 -1
  132. package/dist/CommandPalette/CommandPaletteList.js +1 -1
  133. package/dist/ComplexSelector/ComplexSelector.d.ts +108 -0
  134. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -0
  135. package/dist/ComplexSelector/ComplexSelector.js +316 -0
  136. package/dist/ComplexSelector/index.d.ts +7 -0
  137. package/dist/ComplexSelector/index.d.ts.map +1 -0
  138. package/dist/ComplexSelector/index.js +10 -0
  139. package/dist/ContextMenu/ContextMenu.d.ts +2 -2
  140. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  141. package/dist/ContextMenu/ContextMenu.js +24 -6
  142. package/dist/DateInput/DateInput.d.ts +9 -2
  143. package/dist/DateInput/DateInput.d.ts.map +1 -1
  144. package/dist/DateInput/DateInput.js +6 -3
  145. package/dist/DateRangeInput/DateRangeInput.d.ts +9 -2
  146. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  147. package/dist/DateRangeInput/DateRangeInput.js +6 -3
  148. package/dist/DateTimeInput/DateTimeInput.d.ts +9 -1
  149. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  150. package/dist/DateTimeInput/DateTimeInput.js +6 -3
  151. package/dist/Dialog/Dialog.d.ts +33 -24
  152. package/dist/Dialog/Dialog.d.ts.map +1 -1
  153. package/dist/Dialog/Dialog.js +47 -31
  154. package/dist/Dialog/DialogHeader.d.ts +1 -1
  155. package/dist/Dialog/DialogHeader.js +1 -1
  156. package/dist/Dialog/index.d.ts +18 -1
  157. package/dist/Dialog/index.d.ts.map +1 -1
  158. package/dist/Dialog/index.js +14 -0
  159. package/dist/Divider/Divider.d.ts +2 -18
  160. package/dist/Divider/Divider.d.ts.map +1 -1
  161. package/dist/Divider/Divider.js +1 -15
  162. package/dist/Divider/index.d.ts +18 -1
  163. package/dist/Divider/index.d.ts.map +1 -1
  164. package/dist/Divider/index.js +14 -0
  165. package/dist/DropdownMenu/DropdownMenu.d.ts +23 -8
  166. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  167. package/dist/DropdownMenu/DropdownMenu.js +32 -19
  168. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +18 -12
  169. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
  170. package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +38 -63
  171. package/dist/DropdownMenu/DropdownMenuItem.d.ts +8 -3
  172. package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
  173. package/dist/DropdownMenu/DropdownMenuItem.js +14 -5
  174. package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts +8 -11
  175. package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts.map +1 -1
  176. package/dist/DropdownMenu/DropdownMenuRadioGroup.js +3 -1
  177. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts +1 -1
  178. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
  179. package/dist/DropdownMenu/DropdownMenuRadioItem.js +6 -2
  180. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +1 -1
  181. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
  182. package/dist/DropdownMenu/DropdownMenuSubMenu.js +14 -6
  183. package/dist/DropdownMenu/menuItemHover.d.ts +1 -0
  184. package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -1
  185. package/dist/DropdownMenu/menuItemHover.js +1 -0
  186. package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
  187. package/dist/DropdownMenu/renderDropdownItems.js +27 -16
  188. package/dist/EmptyState/EmptyState.d.ts +1 -1
  189. package/dist/EmptyState/EmptyState.js +1 -1
  190. package/dist/Field/Field.d.ts +1 -1
  191. package/dist/Field/Field.js +1 -1
  192. package/dist/Field/FieldLabel.d.ts +4 -3
  193. package/dist/Field/FieldLabel.d.ts.map +1 -1
  194. package/dist/Field/FieldLabel.js +48 -5
  195. package/dist/FieldStatus/FieldStatus.d.ts +1 -18
  196. package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
  197. package/dist/FieldStatus/FieldStatus.js +13 -17
  198. package/dist/FieldStatus/index.d.ts +19 -1
  199. package/dist/FieldStatus/index.d.ts.map +1 -1
  200. package/dist/FieldStatus/index.js +14 -0
  201. package/dist/FileInput/FileInput.js +1 -1
  202. package/dist/FormLayout/FormLayout.d.ts +1 -1
  203. package/dist/FormLayout/FormLayout.d.ts.map +1 -1
  204. package/dist/FormLayout/FormLayout.js +1 -1
  205. package/dist/Grid/Grid.d.ts +2 -10
  206. package/dist/Grid/Grid.d.ts.map +1 -1
  207. package/dist/Grid/Grid.js +1 -10
  208. package/dist/Grid/GridSpan.d.ts +1 -1
  209. package/dist/Grid/GridSpan.js +1 -1
  210. package/dist/HStack/HStack.d.ts +1 -1
  211. package/dist/HStack/HStack.js +1 -1
  212. package/dist/Heading/Heading.d.ts +2 -2
  213. package/dist/Heading/Heading.d.ts.map +1 -1
  214. package/dist/Heading/Heading.js +5 -4
  215. package/dist/HoverCard/HoverCard.d.ts +1 -1
  216. package/dist/HoverCard/HoverCard.js +1 -1
  217. package/dist/Icon/Icon.d.ts +1 -1
  218. package/dist/Icon/Icon.d.ts.map +1 -1
  219. package/dist/Icon/Icon.js +4 -2
  220. package/dist/Icon/defaultIcons.d.ts.map +1 -1
  221. package/dist/Icon/defaultIcons.js +14 -0
  222. package/dist/Icon/globalIconRegistry.d.ts +48 -6
  223. package/dist/Icon/globalIconRegistry.d.ts.map +1 -1
  224. package/dist/Icon/globalIconRegistry.js +74 -7
  225. package/dist/Icon/index.d.ts +4 -3
  226. package/dist/Icon/index.d.ts.map +1 -1
  227. package/dist/Icon/index.js +2 -1
  228. package/dist/Icon/useIcon.d.ts +14 -0
  229. package/dist/Icon/useIcon.d.ts.map +1 -0
  230. package/dist/Icon/useIcon.js +21 -0
  231. package/dist/IconButton/IconButton.d.ts +1 -1
  232. package/dist/IconButton/IconButton.js +1 -1
  233. package/dist/InputGroup/InputGroup.d.ts +1 -1
  234. package/dist/InputGroup/InputGroup.js +1 -1
  235. package/dist/InputGroup/InputGroupText.d.ts +1 -1
  236. package/dist/InputGroup/InputGroupText.js +1 -1
  237. package/dist/Item/Item.d.ts +17 -4
  238. package/dist/Item/Item.d.ts.map +1 -1
  239. package/dist/Item/Item.js +34 -9
  240. package/dist/Kbd/Kbd.d.ts +1 -1
  241. package/dist/Kbd/Kbd.js +1 -1
  242. package/dist/Layout/Layout.d.ts +1 -1
  243. package/dist/Layout/Layout.js +1 -1
  244. package/dist/Layout/LayoutContent.d.ts +1 -1
  245. package/dist/Layout/LayoutContent.js +1 -1
  246. package/dist/Layout/LayoutFooter.d.ts +1 -1
  247. package/dist/Layout/LayoutFooter.js +1 -1
  248. package/dist/Layout/LayoutHeader.d.ts +1 -1
  249. package/dist/Layout/LayoutHeader.js +1 -1
  250. package/dist/Layout/LayoutPanel.d.ts +1 -1
  251. package/dist/Layout/LayoutPanel.js +1 -1
  252. package/dist/Lightbox/Lightbox.d.ts +6 -4
  253. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  254. package/dist/Lightbox/Lightbox.js +173 -79
  255. package/dist/Link/Link.d.ts +1 -1
  256. package/dist/Link/Link.js +1 -1
  257. package/dist/Link/LinkProvider.d.ts +2 -2
  258. package/dist/Link/LinkProvider.js +2 -2
  259. package/dist/List/List.d.ts +1 -1
  260. package/dist/List/List.js +1 -1
  261. package/dist/List/ListItem.d.ts +12 -2
  262. package/dist/List/ListItem.d.ts.map +1 -1
  263. package/dist/List/ListItem.js +3 -1
  264. package/dist/Markdown/Markdown.d.ts.map +1 -1
  265. package/dist/Markdown/Markdown.js +35 -13
  266. package/dist/MetadataList/MetadataList.d.ts +2 -2
  267. package/dist/MetadataList/MetadataList.d.ts.map +1 -1
  268. package/dist/MetadataList/MetadataList.js +38 -12
  269. package/dist/MetadataList/MetadataListItem.d.ts +1 -1
  270. package/dist/MetadataList/MetadataListItem.js +1 -1
  271. package/dist/MobileNav/MobileNav.d.ts +1 -1
  272. package/dist/MobileNav/MobileNav.js +9 -9
  273. package/dist/MoreMenu/MoreMenu.d.ts +1 -1
  274. package/dist/MoreMenu/MoreMenu.js +3 -3
  275. package/dist/MultiSelector/MultiSelector.d.ts +13 -4
  276. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  277. package/dist/MultiSelector/MultiSelector.js +120 -26
  278. package/dist/NavIcon/NavIcon.d.ts +1 -1
  279. package/dist/NavIcon/NavIcon.js +1 -1
  280. package/dist/NavMenu/index.d.ts +0 -2
  281. package/dist/NavMenu/index.d.ts.map +1 -1
  282. package/dist/NavMenu/index.js +1 -3
  283. package/dist/NumberInput/NumberInput.d.ts +1 -1
  284. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  285. package/dist/NumberInput/NumberInput.js +19 -7
  286. package/dist/Outline/Outline.js +1 -1
  287. package/dist/OverflowList/OverflowList.d.ts +1 -1
  288. package/dist/OverflowList/OverflowList.js +1 -1
  289. package/dist/Pagination/Pagination.d.ts +26 -21
  290. package/dist/Pagination/Pagination.d.ts.map +1 -1
  291. package/dist/Pagination/Pagination.js +174 -52
  292. package/dist/Pagination/index.d.ts +22 -1
  293. package/dist/Pagination/index.d.ts.map +1 -1
  294. package/dist/Pagination/index.js +14 -0
  295. package/dist/Popover/Popover.d.ts +20 -3
  296. package/dist/Popover/Popover.d.ts.map +1 -1
  297. package/dist/Popover/Popover.js +5 -1
  298. package/dist/Popover/usePopover.d.ts.map +1 -1
  299. package/dist/Popover/usePopover.js +14 -3
  300. package/dist/PowerSearch/PowerSearch.d.ts +1 -1
  301. package/dist/PowerSearch/PowerSearch.js +1 -1
  302. package/dist/ProgressBar/ProgressBar.d.ts +56 -22
  303. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  304. package/dist/ProgressBar/ProgressBar.js +169 -22
  305. package/dist/ProgressBar/ProgressBarMarkTooltip.d.ts +27 -0
  306. package/dist/ProgressBar/ProgressBarMarkTooltip.d.ts.map +1 -0
  307. package/dist/ProgressBar/ProgressBarMarkTooltip.js +35 -0
  308. package/dist/ProgressBar/index.d.ts +21 -1
  309. package/dist/ProgressBar/index.d.ts.map +1 -1
  310. package/dist/ProgressBar/index.js +14 -0
  311. package/dist/RadioList/RadioList.d.ts +1 -1
  312. package/dist/RadioList/RadioList.js +1 -1
  313. package/dist/RadioList/RadioListItem.d.ts +1 -1
  314. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  315. package/dist/RadioList/RadioListItem.js +2 -2
  316. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  317. package/dist/Resizable/ResizeHandle.js +15 -11
  318. package/dist/Section/Section.d.ts +2 -19
  319. package/dist/Section/Section.d.ts.map +1 -1
  320. package/dist/Section/Section.js +1 -15
  321. package/dist/Section/index.d.ts +19 -1
  322. package/dist/Section/index.d.ts.map +1 -1
  323. package/dist/Section/index.js +14 -0
  324. package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
  325. package/dist/SegmentedControl/SegmentedControl.js +1 -1
  326. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  327. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  328. package/dist/SegmentedControl/SegmentedControlItem.js +4 -3
  329. package/dist/SelectableCard/SelectableCard.d.ts +4 -3
  330. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  331. package/dist/SelectableCard/SelectableCard.js +15 -3
  332. package/dist/Selector/Selector.d.ts +14 -4
  333. package/dist/Selector/Selector.d.ts.map +1 -1
  334. package/dist/Selector/Selector.js +139 -30
  335. package/dist/Selector/hooks.d.ts +4 -4
  336. package/dist/Selector/hooks.d.ts.map +1 -1
  337. package/dist/Selector/hooks.js +38 -19
  338. package/dist/SideNav/SideNav.d.ts +1 -1
  339. package/dist/SideNav/SideNav.js +1 -1
  340. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  341. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  342. package/dist/SideNav/SideNavCollapseButton.js +4 -3
  343. package/dist/SideNav/SideNavHeading.d.ts +1 -1
  344. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  345. package/dist/SideNav/SideNavHeading.js +8 -7
  346. package/dist/SideNav/SideNavItem.d.ts +2 -2
  347. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  348. package/dist/SideNav/SideNavItem.js +6 -7
  349. package/dist/SideNav/SideNavSection.d.ts +1 -1
  350. package/dist/SideNav/SideNavSection.js +1 -1
  351. package/dist/Skeleton/Skeleton.d.ts +1 -1
  352. package/dist/Skeleton/Skeleton.d.ts.map +1 -1
  353. package/dist/Skeleton/Skeleton.js +3 -3
  354. package/dist/Slider/Slider.d.ts.map +1 -1
  355. package/dist/Slider/Slider.js +78 -68
  356. package/dist/Spinner/Spinner.d.ts +1 -1
  357. package/dist/Spinner/Spinner.js +1 -1
  358. package/dist/Stack/Stack.d.ts +1 -1
  359. package/dist/Stack/Stack.js +1 -1
  360. package/dist/Stack/StackItem.d.ts +1 -1
  361. package/dist/Stack/StackItem.js +1 -1
  362. package/dist/Stack/stack.stylex.d.ts +3 -3
  363. package/dist/StatusDot/StatusDot.d.ts +1 -20
  364. package/dist/StatusDot/StatusDot.d.ts.map +1 -1
  365. package/dist/StatusDot/StatusDot.js +2 -17
  366. package/dist/StatusDot/index.d.ts +21 -1
  367. package/dist/StatusDot/index.d.ts.map +1 -1
  368. package/dist/StatusDot/index.js +14 -0
  369. package/dist/Switch/Switch.d.ts +2 -6
  370. package/dist/Switch/Switch.d.ts.map +1 -1
  371. package/dist/Switch/Switch.js +28 -20
  372. package/dist/TabList/Tab.d.ts +1 -1
  373. package/dist/TabList/Tab.js +1 -1
  374. package/dist/TabList/TabList.d.ts +1 -1
  375. package/dist/TabList/TabList.js +1 -1
  376. package/dist/TabList/TabMenu.d.ts +1 -1
  377. package/dist/TabList/TabMenu.d.ts.map +1 -1
  378. package/dist/TabList/TabMenu.js +11 -3
  379. package/dist/Table/BaseTable.d.ts +1 -1
  380. package/dist/Table/BaseTable.d.ts.map +1 -1
  381. package/dist/Table/BaseTable.js +4 -7
  382. package/dist/Table/Table.d.ts +1 -1
  383. package/dist/Table/Table.js +1 -1
  384. package/dist/Table/TableCell.d.ts +1 -1
  385. package/dist/Table/TableCell.js +4 -2
  386. package/dist/Table/TableHeaderCell.d.ts +1 -1
  387. package/dist/Table/TableHeaderCell.js +4 -2
  388. package/dist/Table/TableRow.d.ts +1 -1
  389. package/dist/Table/TableRow.js +1 -1
  390. package/dist/Table/index.d.ts +1 -1
  391. package/dist/Table/index.d.ts.map +1 -1
  392. package/dist/Table/index.js +1 -1
  393. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +1 -1
  394. package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +1 -1
  395. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +18 -3
  396. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  397. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +27 -11
  398. package/dist/Table/plugins/tree/useTableTreeData.d.ts +11 -0
  399. package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
  400. package/dist/Table/plugins/tree/useTableTreeData.js +36 -2
  401. package/dist/Table/types.d.ts +0 -9
  402. package/dist/Table/types.d.ts.map +1 -1
  403. package/dist/Text/Text.d.ts +11 -2
  404. package/dist/Text/Text.d.ts.map +1 -1
  405. package/dist/Text/Text.js +26 -3
  406. package/dist/Text/index.d.ts +31 -1
  407. package/dist/Text/index.d.ts.map +1 -1
  408. package/dist/Text/index.js +23 -0
  409. package/dist/TextArea/TextArea.d.ts +1 -1
  410. package/dist/TextArea/TextArea.d.ts.map +1 -1
  411. package/dist/TextArea/TextArea.js +111 -41
  412. package/dist/TextInput/TextInput.d.ts +1 -1
  413. package/dist/TextInput/TextInput.d.ts.map +1 -1
  414. package/dist/TextInput/TextInput.js +4 -3
  415. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  416. package/dist/Thumbnail/Thumbnail.js +52 -46
  417. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  418. package/dist/TimeInput/TimeInput.js +3 -2
  419. package/dist/Timestamp/Timestamp.d.ts +26 -12
  420. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  421. package/dist/Timestamp/Timestamp.js +128 -65
  422. package/dist/Timestamp/TimestampHoverCard.d.ts +45 -0
  423. package/dist/Timestamp/TimestampHoverCard.d.ts.map +1 -0
  424. package/dist/Timestamp/TimestampHoverCard.js +228 -0
  425. package/dist/Timestamp/formatInstant.d.ts +3 -3
  426. package/dist/Timestamp/formatInstant.d.ts.map +1 -1
  427. package/dist/Timestamp/formatInstant.js +7 -2
  428. package/dist/Timestamp/tooltipEntries.d.ts +17 -2
  429. package/dist/Timestamp/tooltipEntries.d.ts.map +1 -1
  430. package/dist/Timestamp/tooltipEntries.js +4 -2
  431. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  432. package/dist/Toast/ToastViewport.js +61 -9
  433. package/dist/ToggleButton/ToggleButton.d.ts +1 -1
  434. package/dist/ToggleButton/ToggleButton.d.ts.map +1 -1
  435. package/dist/ToggleButton/ToggleButton.js +4 -2
  436. package/dist/ToggleButton/ToggleButtonGroup.d.ts +1 -1
  437. package/dist/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
  438. package/dist/ToggleButton/ToggleButtonGroup.js +1 -1
  439. package/dist/Token/Token.d.ts +6 -28
  440. package/dist/Token/Token.d.ts.map +1 -1
  441. package/dist/Token/Token.js +69 -58
  442. package/dist/Token/TokenLink.d.ts +62 -0
  443. package/dist/Token/TokenLink.d.ts.map +1 -0
  444. package/dist/Token/TokenLink.js +76 -0
  445. package/dist/Token/index.d.ts +27 -1
  446. package/dist/Token/index.d.ts.map +1 -1
  447. package/dist/Token/index.js +14 -0
  448. package/dist/Tokenizer/Tokenizer.d.ts +1 -1
  449. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  450. package/dist/Tokenizer/Tokenizer.js +5 -3
  451. package/dist/Toolbar/Toolbar.d.ts +1 -1
  452. package/dist/Toolbar/Toolbar.js +1 -1
  453. package/dist/Tooltip/Tooltip.d.ts +1 -1
  454. package/dist/Tooltip/Tooltip.js +1 -1
  455. package/dist/TopNav/TopNav.d.ts +1 -1
  456. package/dist/TopNav/TopNav.d.ts.map +1 -1
  457. package/dist/TopNav/TopNav.js +7 -6
  458. package/dist/TopNav/TopNavHeading.d.ts +2 -8
  459. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  460. package/dist/TopNav/TopNavHeading.js +8 -10
  461. package/dist/TopNav/TopNavItem.d.ts +1 -1
  462. package/dist/TopNav/TopNavItem.js +1 -1
  463. package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
  464. package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
  465. package/dist/TopNav/TopNavMegaMenu.js +27 -16
  466. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
  467. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +1 -1
  468. package/dist/TopNav/TopNavMegaMenuItem.d.ts +1 -1
  469. package/dist/TopNav/TopNavMegaMenuItem.js +1 -1
  470. package/dist/TopNav/TopNavMenu.d.ts +1 -1
  471. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  472. package/dist/TopNav/TopNavMenu.js +5 -4
  473. package/dist/TreeList/TreeList.d.ts +1 -1
  474. package/dist/TreeList/TreeList.js +1 -1
  475. package/dist/TreeList/TreeListBranches.js +1 -1
  476. package/dist/TreeList/TreeListItem.d.ts +1 -1
  477. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  478. package/dist/TreeList/TreeListItem.js +4 -3
  479. package/dist/TreeList/TreeListTypes.d.ts +1 -17
  480. package/dist/TreeList/TreeListTypes.d.ts.map +1 -1
  481. package/dist/TreeList/index.d.ts +18 -1
  482. package/dist/TreeList/index.d.ts.map +1 -1
  483. package/dist/TreeList/index.js +14 -0
  484. package/dist/Typeahead/BaseTypeahead.d.ts +10 -1
  485. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  486. package/dist/Typeahead/BaseTypeahead.js +3 -1
  487. package/dist/Typeahead/Typeahead.d.ts +1 -1
  488. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  489. package/dist/Typeahead/Typeahead.js +9 -2
  490. package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
  491. package/dist/Typeahead/TypeaheadItem.js +1 -1
  492. package/dist/VStack/VStack.d.ts +1 -1
  493. package/dist/VStack/VStack.js +1 -1
  494. package/dist/VisuallyHidden/VisuallyHidden.d.ts +1 -1
  495. package/dist/VisuallyHidden/VisuallyHidden.js +1 -1
  496. package/dist/astryx.css +121 -37
  497. package/dist/astryx.umd.js +51 -55
  498. package/dist/astryx.umd.js.map +4 -4
  499. package/dist/hooks/containerReveal.pool.stylex.d.ts +303 -0
  500. package/dist/hooks/containerReveal.pool.stylex.d.ts.map +1 -0
  501. package/dist/hooks/containerReveal.pool.stylex.js +292 -0
  502. package/dist/hooks/index.d.ts +2 -0
  503. package/dist/hooks/index.d.ts.map +1 -1
  504. package/dist/hooks/index.js +2 -1
  505. package/dist/hooks/useContainerReveal.d.ts +83 -0
  506. package/dist/hooks/useContainerReveal.d.ts.map +1 -0
  507. package/dist/hooks/useContainerReveal.js +123 -0
  508. package/dist/hooks/useGridFocus.d.ts +8 -6
  509. package/dist/hooks/useGridFocus.d.ts.map +1 -1
  510. package/dist/hooks/useInputContainer.d.ts.map +1 -1
  511. package/dist/hooks/useInputContainer.js +29 -1
  512. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  513. package/dist/hooks/useInputStatusIcon.js +11 -0
  514. package/dist/hooks/useKeyboardHint.d.ts +2 -2
  515. package/dist/hooks/useKeyboardHint.d.ts.map +1 -1
  516. package/dist/hooks/useKeyboardHint.js +5 -3
  517. package/dist/hooks/useListFocus.d.ts +8 -7
  518. package/dist/hooks/useListFocus.d.ts.map +1 -1
  519. package/dist/hooks/useLongPress.d.ts.map +1 -1
  520. package/dist/hooks/useLongPress.js +12 -2
  521. package/dist/hooks/useTreeFocus.d.ts.map +1 -1
  522. package/dist/hooks/useTreeFocus.js +13 -2
  523. package/dist/i18n/InternationalizationProvider.d.ts +6 -0
  524. package/dist/i18n/InternationalizationProvider.d.ts.map +1 -1
  525. package/dist/i18n/useDirection.d.ts.map +1 -1
  526. package/dist/i18n/useDirection.js +6 -3
  527. package/dist/index.d.ts +2 -1
  528. package/dist/index.d.ts.map +1 -1
  529. package/dist/index.js +3 -3
  530. package/dist/theme/Theme.d.ts.map +1 -1
  531. package/dist/theme/Theme.js +2 -7
  532. package/dist/theme/contrast.d.ts +45 -0
  533. package/dist/theme/contrast.d.ts.map +1 -0
  534. package/dist/theme/contrast.js +88 -0
  535. package/dist/theme/defineTheme.d.ts +9 -3
  536. package/dist/theme/defineTheme.d.ts.map +1 -1
  537. package/dist/theme/defineTheme.js +6 -4
  538. package/dist/theme/derivedVarRegistry.d.ts +8 -0
  539. package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
  540. package/dist/theme/derivedVarRegistry.js +5 -13
  541. package/dist/theme/expandColorScale.d.ts +32 -3
  542. package/dist/theme/expandColorScale.d.ts.map +1 -1
  543. package/dist/theme/expandColorScale.js +102 -13
  544. package/dist/theme/generateThemeRules.d.ts +0 -6
  545. package/dist/theme/generateThemeRules.d.ts.map +1 -1
  546. package/dist/theme/generateThemeRules.js +11 -15
  547. package/dist/theme/index.d.ts +9 -7
  548. package/dist/theme/index.d.ts.map +1 -1
  549. package/dist/theme/index.js +4 -3
  550. package/dist/theme/themeRegistry.d.ts +32 -0
  551. package/dist/theme/themeRegistry.d.ts.map +1 -0
  552. package/dist/theme/themeRegistry.js +49 -0
  553. package/dist/theme/tokens.stylex.d.ts +0 -17
  554. package/dist/theme/tokens.stylex.d.ts.map +1 -1
  555. package/dist/theme/tokens.stylex.js +0 -22
  556. package/dist/theme/types.d.ts +10 -2
  557. package/dist/theme/types.d.ts.map +1 -1
  558. package/dist/theme/useTheme.d.ts +9 -0
  559. package/dist/theme/useTheme.d.ts.map +1 -1
  560. package/dist/theme/useTheme.js +82 -27
  561. package/dist/utils/rtlStyles.d.ts +23 -2
  562. package/dist/utils/rtlStyles.d.ts.map +1 -1
  563. package/dist/utils/rtlStyles.js +28 -3
  564. package/groups.doc.mjs +2 -2
  565. package/locales/en.json +124 -0
  566. package/locales/pseudo.json +93 -0
  567. package/package.json +9 -13
  568. package/src/AlertDialog/AlertDialog.doc.mjs +3 -3
  569. package/src/AlertDialog/AlertDialog.tsx +1 -1
  570. package/src/AlertDialog/useImperativeAlertDialog.doc.mjs +1 -1
  571. package/src/AppShell/AppShell.doc.mjs +3 -3
  572. package/src/AppShell/AppShell.test.tsx +55 -0
  573. package/src/AppShell/AppShell.tsx +27 -22
  574. package/src/AppShell/index.ts +20 -1
  575. package/src/AppShell/useAppShellMobile.doc.mjs +2 -2
  576. package/src/AspectRatio/AspectRatio.doc.mjs +3 -3
  577. package/src/AspectRatio/AspectRatio.tsx +1 -1
  578. package/src/Avatar/Avatar.doc.mjs +4 -15
  579. package/src/Avatar/Avatar.test.tsx +33 -8
  580. package/src/Avatar/Avatar.tsx +58 -25
  581. package/src/Avatar/AvatarStatusDot.doc.mjs +1 -1
  582. package/src/Avatar/AvatarStatusDot.tsx +2 -27
  583. package/src/Avatar/index.ts +26 -1
  584. package/src/AvatarGroup/AvatarGroup.doc.mjs +3 -3
  585. package/src/AvatarGroup/AvatarGroup.test.tsx +21 -1
  586. package/src/AvatarGroup/AvatarGroup.tsx +3 -7
  587. package/src/AvatarGroup/AvatarGroupOverflow.doc.mjs +1 -1
  588. package/src/AvatarGroup/AvatarGroupOverflow.tsx +5 -3
  589. package/src/Badge/Badge.doc.mjs +3 -3
  590. package/src/Badge/Badge.tsx +2 -31
  591. package/src/Badge/index.ts +32 -6
  592. package/src/Banner/Banner.doc.mjs +3 -3
  593. package/src/Banner/Banner.tsx +8 -45
  594. package/src/Banner/index.ts +39 -7
  595. package/src/Blockquote/Blockquote.doc.mjs +3 -3
  596. package/src/Blockquote/Blockquote.tsx +1 -1
  597. package/src/Breadcrumbs/BreadcrumbItem.doc.mjs +1 -1
  598. package/src/Breadcrumbs/BreadcrumbItem.tsx +5 -3
  599. package/src/Breadcrumbs/Breadcrumbs.doc.mjs +3 -3
  600. package/src/Breadcrumbs/Breadcrumbs.test.tsx +1 -1
  601. package/src/Breadcrumbs/Breadcrumbs.tsx +2 -19
  602. package/src/Breadcrumbs/index.ts +19 -5
  603. package/src/Button/Button.doc.mjs +3 -3
  604. package/src/Button/Button.test.tsx +16 -0
  605. package/src/Button/Button.tsx +6 -23
  606. package/src/Button/index.ts +22 -7
  607. package/src/ButtonGroup/ButtonGroup.doc.mjs +3 -3
  608. package/src/ButtonGroup/ButtonGroup.tsx +1 -1
  609. package/src/Calendar/Calendar.doc.mjs +3 -3
  610. package/src/Calendar/Calendar.test.tsx +22 -6
  611. package/src/Calendar/Calendar.tsx +1 -1
  612. package/src/Calendar/index.ts +1 -6
  613. package/src/Calendar/styles.ts +2 -2
  614. package/src/Calendar/utils.ts +0 -11
  615. package/src/Card/Card.doc.mjs +3 -3
  616. package/src/Card/Card.tsx +1 -1
  617. package/src/Carousel/Carousel.doc.mjs +13 -3
  618. package/src/Carousel/Carousel.test.tsx +232 -1
  619. package/src/Carousel/Carousel.tsx +154 -27
  620. package/src/Carousel/index.ts +1 -1
  621. package/src/Center/Center.doc.mjs +41 -3
  622. package/src/Center/Center.test.tsx +75 -0
  623. package/src/Center/Center.tsx +38 -3
  624. package/src/Chat/Chat.doc.mjs +3 -3
  625. package/src/Chat/ChatComposer.doc.mjs +1 -1
  626. package/src/Chat/ChatComposer.tsx +5 -5
  627. package/src/Chat/ChatComposerDrawer.doc.mjs +1 -1
  628. package/src/Chat/ChatComposerDrawer.tsx +5 -5
  629. package/src/Chat/ChatComposerInput.doc.mjs +1 -1
  630. package/src/Chat/ChatComposerInput.tsx +1 -1
  631. package/src/Chat/ChatComposerTokenElement.doc.mjs +1 -1
  632. package/src/Chat/ChatDictationButton.doc.mjs +3 -3
  633. package/src/Chat/ChatDictationButton.tsx +1 -1
  634. package/src/Chat/ChatLayout.doc.mjs +1 -1
  635. package/src/Chat/ChatLayout.test.tsx +57 -0
  636. package/src/Chat/ChatLayout.tsx +23 -2
  637. package/src/Chat/ChatLayoutScrollButton.doc.mjs +1 -1
  638. package/src/Chat/ChatLayoutScrollButton.tsx +1 -1
  639. package/src/Chat/ChatMessage.doc.mjs +1 -1
  640. package/src/Chat/ChatMessage.tsx +1 -1
  641. package/src/Chat/ChatMessageBubble.doc.mjs +1 -1
  642. package/src/Chat/ChatMessageBubble.tsx +1 -1
  643. package/src/Chat/ChatMessageList.doc.mjs +1 -1
  644. package/src/Chat/ChatMessageList.tsx +1 -1
  645. package/src/Chat/ChatMessageMetadata.doc.mjs +1 -1
  646. package/src/Chat/ChatSendButton.doc.mjs +1 -1
  647. package/src/Chat/ChatSendButton.tsx +5 -3
  648. package/src/Chat/ChatSystemMessage.doc.mjs +1 -1
  649. package/src/Chat/ChatSystemMessage.tsx +1 -1
  650. package/src/Chat/ChatTokenizedText.doc.mjs +1 -1
  651. package/src/Chat/ChatTokenizedText.tsx +1 -1
  652. package/src/Chat/ChatToolCalls.doc.mjs +3 -3
  653. package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
  654. package/src/CheckboxInput/CheckboxInput.test.tsx +56 -0
  655. package/src/CheckboxInput/CheckboxInput.tsx +18 -3
  656. package/src/CheckboxList/CheckboxList.doc.mjs +3 -3
  657. package/src/CheckboxList/CheckboxList.test.tsx +94 -3
  658. package/src/CheckboxList/CheckboxList.tsx +1 -1
  659. package/src/CheckboxList/CheckboxListItem.doc.mjs +1 -1
  660. package/src/CheckboxList/CheckboxListItem.tsx +18 -11
  661. package/src/Citation/Citation.doc.mjs +2 -2
  662. package/src/Citation/Citation.tsx +1 -1
  663. package/src/ClickableCard/ClickableCard.doc.mjs +2 -2
  664. package/src/ClickableCard/ClickableCard.tsx +3 -3
  665. package/src/Code/Code.tsx +2 -2
  666. package/src/CodeBlock/Code.doc.mjs +1 -1
  667. package/src/CodeBlock/CodeBlock.doc.mjs +3 -3
  668. package/src/CodeBlock/CodeBlock.test.tsx +17 -0
  669. package/src/CodeBlock/CodeBlock.tsx +2 -2
  670. package/src/Collapsible/Collapsible.doc.mjs +3 -3
  671. package/src/Collapsible/Collapsible.tsx +3 -3
  672. package/src/Collapsible/CollapsibleGroup.doc.mjs +1 -1
  673. package/src/Collapsible/CollapsibleGroup.tsx +1 -1
  674. package/src/Collapsible/CollapsibleGroupContext.tsx +1 -1
  675. package/src/Collapsible/useCollapsible.doc.mjs +2 -2
  676. package/src/CommandPalette/CommandPalette.doc.mjs +4 -4
  677. package/src/CommandPalette/CommandPalette.tsx +1 -1
  678. package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +1 -1
  679. package/src/CommandPalette/CommandPaletteEmpty.tsx +1 -1
  680. package/src/CommandPalette/CommandPaletteFooter.doc.mjs +1 -1
  681. package/src/CommandPalette/CommandPaletteFooter.tsx +1 -1
  682. package/src/CommandPalette/CommandPaletteGroup.doc.mjs +1 -1
  683. package/src/CommandPalette/CommandPaletteGroup.test.tsx +6 -2
  684. package/src/CommandPalette/CommandPaletteGroup.tsx +1 -1
  685. package/src/CommandPalette/CommandPaletteInput.doc.mjs +1 -1
  686. package/src/CommandPalette/CommandPaletteInput.tsx +5 -1
  687. package/src/CommandPalette/CommandPaletteItem.doc.mjs +1 -1
  688. package/src/CommandPalette/CommandPaletteItem.tsx +1 -1
  689. package/src/CommandPalette/CommandPaletteList.doc.mjs +1 -1
  690. package/src/CommandPalette/CommandPaletteList.tsx +1 -1
  691. package/src/ComplexSelector/ComplexSelector.doc.mjs +220 -0
  692. package/src/ComplexSelector/ComplexSelector.test.tsx +156 -0
  693. package/src/ComplexSelector/ComplexSelector.tsx +429 -0
  694. package/src/ComplexSelector/index.ts +17 -0
  695. package/src/ContextMenu/ContextMenu.doc.mjs +4 -4
  696. package/src/ContextMenu/ContextMenu.test.tsx +38 -2
  697. package/src/ContextMenu/ContextMenu.tsx +27 -6
  698. package/src/ContextMenu/ContextMenuItem.doc.mjs +1 -1
  699. package/src/DateInput/DateInput.doc.mjs +19 -4
  700. package/src/DateInput/DateInput.test.tsx +79 -3
  701. package/src/DateInput/DateInput.tsx +23 -3
  702. package/src/DateRangeInput/DateRangeInput.doc.mjs +11 -3
  703. package/src/DateRangeInput/DateRangeInput.test.tsx +97 -2
  704. package/src/DateRangeInput/DateRangeInput.tsx +19 -2
  705. package/src/DateTimeInput/DateTimeInput.doc.mjs +19 -5
  706. package/src/DateTimeInput/DateTimeInput.test.tsx +81 -2
  707. package/src/DateTimeInput/DateTimeInput.tsx +19 -2
  708. package/src/Dialog/Dialog.doc.mjs +7 -5
  709. package/src/Dialog/Dialog.test.tsx +46 -3
  710. package/src/Dialog/Dialog.tsx +61 -44
  711. package/src/Dialog/DialogHeader.doc.mjs +1 -1
  712. package/src/Dialog/DialogHeader.tsx +1 -1
  713. package/src/Dialog/index.ts +18 -1
  714. package/src/Dialog/useImperativeDialog.doc.mjs +1 -1
  715. package/src/Divider/Divider.doc.mjs +3 -3
  716. package/src/Divider/Divider.tsx +2 -19
  717. package/src/Divider/index.ts +19 -5
  718. package/src/DropdownMenu/DropdownMenu.doc.mjs +22 -7
  719. package/src/DropdownMenu/DropdownMenu.test.tsx +194 -0
  720. package/src/DropdownMenu/DropdownMenu.tsx +48 -25
  721. package/src/DropdownMenu/DropdownMenuCheckboxItem.doc.mjs +1 -1
  722. package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +41 -64
  723. package/src/DropdownMenu/DropdownMenuItem.doc.mjs +25 -5
  724. package/src/DropdownMenu/DropdownMenuItem.tsx +34 -7
  725. package/src/DropdownMenu/DropdownMenuRadioGroup.doc.mjs +5 -13
  726. package/src/DropdownMenu/DropdownMenuRadioGroup.tsx +9 -10
  727. package/src/DropdownMenu/DropdownMenuRadioItem.doc.mjs +1 -1
  728. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +11 -2
  729. package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +84 -2
  730. package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +1 -1
  731. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +46 -1
  732. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +24 -8
  733. package/src/DropdownMenu/menuItemHover.ts +1 -0
  734. package/src/DropdownMenu/renderDropdownItems.tsx +31 -21
  735. package/src/EmptyState/EmptyState.doc.mjs +3 -3
  736. package/src/EmptyState/EmptyState.tsx +1 -1
  737. package/src/Field/Field.doc.mjs +7 -3
  738. package/src/Field/Field.tsx +1 -1
  739. package/src/Field/FieldLabel.doc.mjs +1 -1
  740. package/src/Field/FieldLabel.test.tsx +103 -0
  741. package/src/Field/FieldLabel.tsx +61 -5
  742. package/src/FieldStatus/FieldStatus.doc.mjs +3 -2
  743. package/src/FieldStatus/FieldStatus.test.tsx +61 -0
  744. package/src/FieldStatus/FieldStatus.tsx +16 -23
  745. package/src/FieldStatus/index.ts +20 -5
  746. package/src/FileInput/FileInput.doc.mjs +3 -3
  747. package/src/FileInput/FileInput.tsx +1 -1
  748. package/src/FormLayout/FormLayout.doc.mjs +3 -3
  749. package/src/FormLayout/FormLayout.tsx +2 -5
  750. package/src/Grid/Grid.doc.mjs +3 -8
  751. package/src/Grid/Grid.tsx +1 -25
  752. package/src/Grid/GridSpan.doc.mjs +1 -1
  753. package/src/Grid/GridSpan.tsx +1 -1
  754. package/src/HStack/HStack.tsx +1 -1
  755. package/src/Heading/Heading.tsx +4 -3
  756. package/src/HoverCard/HoverCard.doc.mjs +3 -3
  757. package/src/HoverCard/HoverCard.tsx +1 -1
  758. package/src/HoverCard/useHoverCard.doc.mjs +2 -2
  759. package/src/Icon/Icon.doc.mjs +8 -6
  760. package/src/Icon/Icon.test.tsx +23 -0
  761. package/src/Icon/Icon.tsx +4 -2
  762. package/src/Icon/defaultIcons.tsx +14 -0
  763. package/src/Icon/globalIconRegistry.test.tsx +87 -1
  764. package/src/Icon/globalIconRegistry.tsx +111 -9
  765. package/src/Icon/index.ts +9 -7
  766. package/src/Icon/useIcon.ts +23 -0
  767. package/src/IconButton/IconButton.doc.mjs +2 -2
  768. package/src/IconButton/IconButton.tsx +1 -1
  769. package/src/InputGroup/InputGroup.doc.mjs +2 -2
  770. package/src/InputGroup/InputGroup.tsx +1 -1
  771. package/src/InputGroup/InputGroupText.doc.mjs +1 -1
  772. package/src/InputGroup/InputGroupText.tsx +1 -1
  773. package/src/Item/Item.doc.mjs +8 -3
  774. package/src/Item/Item.test.tsx +88 -0
  775. package/src/Item/Item.tsx +63 -14
  776. package/src/Kbd/Kbd.doc.mjs +3 -3
  777. package/src/Kbd/Kbd.tsx +1 -1
  778. package/src/Layer/Layer.doc.mjs +2 -2
  779. package/src/Layer/useLayer.doc.mjs +2 -2
  780. package/src/Layout/Layout.doc.mjs +3 -3
  781. package/src/Layout/Layout.tsx +1 -1
  782. package/src/Layout/LayoutContent.doc.mjs +1 -1
  783. package/src/Layout/LayoutContent.tsx +1 -1
  784. package/src/Layout/LayoutFooter.doc.mjs +1 -1
  785. package/src/Layout/LayoutFooter.tsx +1 -1
  786. package/src/Layout/LayoutHeader.doc.mjs +1 -1
  787. package/src/Layout/LayoutHeader.tsx +1 -1
  788. package/src/Layout/LayoutPanel.doc.mjs +1 -1
  789. package/src/Layout/LayoutPanel.tsx +1 -1
  790. package/src/Lightbox/Lightbox.doc.mjs +6 -6
  791. package/src/Lightbox/Lightbox.test.tsx +211 -0
  792. package/src/Lightbox/Lightbox.tsx +152 -60
  793. package/src/Link/Link.doc.mjs +3 -3
  794. package/src/Link/Link.tsx +1 -1
  795. package/src/Link/LinkProvider.doc.mjs +2 -2
  796. package/src/Link/LinkProvider.tsx +2 -2
  797. package/src/List/List.doc.mjs +3 -3
  798. package/src/List/List.tsx +1 -1
  799. package/src/List/ListItem.doc.mjs +13 -1
  800. package/src/List/ListItem.tsx +14 -1
  801. package/src/Markdown/Markdown.doc.mjs +81 -1
  802. package/src/Markdown/Markdown.test.tsx +92 -0
  803. package/src/Markdown/Markdown.tsx +96 -68
  804. package/src/Markdown/parser.perf.test.ts +47 -35
  805. package/src/MetadataList/MetadataList.doc.mjs +3 -3
  806. package/src/MetadataList/MetadataList.test.tsx +82 -0
  807. package/src/MetadataList/MetadataList.tsx +45 -20
  808. package/src/MetadataList/MetadataListItem.doc.mjs +1 -1
  809. package/src/MetadataList/MetadataListItem.tsx +1 -1
  810. package/src/MobileNav/MobileNav.doc.mjs +3 -3
  811. package/src/MobileNav/MobileNav.tsx +4 -4
  812. package/src/MoreMenu/MoreMenu.doc.mjs +3 -3
  813. package/src/MoreMenu/MoreMenu.tsx +3 -3
  814. package/src/MultiSelector/MultiSelector.doc.mjs +36 -10
  815. package/src/MultiSelector/MultiSelector.test.tsx +326 -3
  816. package/src/MultiSelector/MultiSelector.tsx +226 -58
  817. package/src/NavIcon/NavIcon.doc.mjs +3 -3
  818. package/src/NavIcon/NavIcon.tsx +1 -1
  819. package/src/NavMenu/NavHeadingMenu.test.tsx +0 -16
  820. package/src/NavMenu/NavMenu.doc.mjs +2 -2
  821. package/src/NavMenu/index.ts +0 -4
  822. package/src/NumberInput/NumberInput.doc.mjs +5 -8
  823. package/src/NumberInput/NumberInput.test.tsx +117 -3
  824. package/src/NumberInput/NumberInput.tsx +30 -3
  825. package/src/Outline/Outline.doc.mjs +3 -3
  826. package/src/Outline/Outline.tsx +1 -1
  827. package/src/OverflowList/OverflowList.doc.mjs +3 -3
  828. package/src/OverflowList/OverflowList.tsx +1 -1
  829. package/src/Overlay/Overlay.doc.mjs +2 -2
  830. package/src/Pagination/Pagination.doc.mjs +55 -8
  831. package/src/Pagination/Pagination.test.tsx +582 -0
  832. package/src/Pagination/Pagination.tsx +247 -55
  833. package/src/Pagination/index.ts +22 -1
  834. package/src/Popover/Popover.doc.mjs +31 -3
  835. package/src/Popover/Popover.test.tsx +41 -0
  836. package/src/Popover/Popover.tsx +25 -2
  837. package/src/Popover/usePopover.doc.mjs +2 -2
  838. package/src/Popover/usePopover.tsx +10 -4
  839. package/src/PowerSearch/PowerSearch.doc.mjs +3 -3
  840. package/src/PowerSearch/PowerSearch.tsx +1 -1
  841. package/src/ProgressBar/ProgressBar.doc.mjs +24 -3
  842. package/src/ProgressBar/ProgressBar.test.tsx +523 -2
  843. package/src/ProgressBar/ProgressBar.tsx +250 -25
  844. package/src/ProgressBar/ProgressBarMarkTooltip.tsx +43 -0
  845. package/src/ProgressBar/index.ts +22 -1
  846. package/src/RadioList/RadioList.doc.mjs +3 -3
  847. package/src/RadioList/RadioList.test.tsx +26 -4
  848. package/src/RadioList/RadioList.tsx +1 -1
  849. package/src/RadioList/RadioListItem.doc.mjs +1 -1
  850. package/src/RadioList/RadioListItem.tsx +9 -2
  851. package/src/Resizable/Resizable.doc.mjs +2 -2
  852. package/src/Resizable/ResizeHandle.test.tsx +52 -3
  853. package/src/Resizable/ResizeHandle.tsx +25 -13
  854. package/src/Resizable/useResizable.doc.mjs +2 -2
  855. package/src/Section/Section.doc.mjs +3 -3
  856. package/src/Section/Section.tsx +2 -20
  857. package/src/Section/index.ts +20 -5
  858. package/src/SegmentedControl/SegmentedControl.doc.mjs +3 -3
  859. package/src/SegmentedControl/SegmentedControl.test.tsx +28 -0
  860. package/src/SegmentedControl/SegmentedControl.tsx +1 -1
  861. package/src/SegmentedControl/SegmentedControlItem.doc.mjs +1 -1
  862. package/src/SegmentedControl/SegmentedControlItem.tsx +21 -3
  863. package/src/SelectableCard/SelectableCard.doc.mjs +4 -2
  864. package/src/SelectableCard/SelectableCard.test.tsx +55 -0
  865. package/src/SelectableCard/SelectableCard.tsx +19 -3
  866. package/src/Selector/Selector.doc.mjs +30 -8
  867. package/src/Selector/Selector.test.tsx +469 -9
  868. package/src/Selector/Selector.tsx +235 -57
  869. package/src/Selector/SelectorOption.doc.mjs +1 -1
  870. package/src/Selector/hooks.ts +45 -21
  871. package/src/SideNav/SideNav.doc.mjs +3 -3
  872. package/src/SideNav/SideNav.tsx +1 -1
  873. package/src/SideNav/SideNavCollapseButton.doc.mjs +1 -1
  874. package/src/SideNav/SideNavCollapseButton.tsx +4 -3
  875. package/src/SideNav/SideNavHeading.doc.mjs +1 -1
  876. package/src/SideNav/SideNavHeading.tsx +8 -9
  877. package/src/SideNav/SideNavItem.doc.mjs +1 -1
  878. package/src/SideNav/SideNavItem.tsx +5 -6
  879. package/src/SideNav/SideNavSection.doc.mjs +1 -1
  880. package/src/SideNav/SideNavSection.tsx +1 -1
  881. package/src/Skeleton/Skeleton.doc.mjs +3 -3
  882. package/src/Skeleton/Skeleton.test.tsx +16 -0
  883. package/src/Skeleton/Skeleton.tsx +14 -2
  884. package/src/Slider/Slider.doc.mjs +3 -3
  885. package/src/Slider/Slider.tsx +9 -13
  886. package/src/Spinner/Spinner.doc.mjs +3 -3
  887. package/src/Spinner/Spinner.tsx +1 -1
  888. package/src/Stack/Stack.doc.mjs +113 -3
  889. package/src/Stack/Stack.tsx +1 -1
  890. package/src/Stack/StackItem.tsx +1 -1
  891. package/src/StatusDot/StatusDot.doc.mjs +15 -6
  892. package/src/StatusDot/StatusDot.tsx +2 -22
  893. package/src/StatusDot/index.ts +22 -5
  894. package/src/Switch/Switch.doc.mjs +5 -5
  895. package/src/Switch/Switch.test.tsx +71 -25
  896. package/src/Switch/Switch.tsx +63 -26
  897. package/src/TabList/Tab.doc.mjs +1 -1
  898. package/src/TabList/Tab.tsx +1 -1
  899. package/src/TabList/TabList.doc.mjs +3 -3
  900. package/src/TabList/TabList.test.tsx +21 -18
  901. package/src/TabList/TabList.tsx +1 -1
  902. package/src/TabList/TabMenu.doc.mjs +1 -1
  903. package/src/TabList/TabMenu.tsx +11 -3
  904. package/src/Table/BaseTable.tsx +4 -5
  905. package/src/Table/Table.doc.mjs +5 -5
  906. package/src/Table/Table.test.tsx +27 -49
  907. package/src/Table/Table.tsx +1 -1
  908. package/src/Table/TableCell.doc.mjs +1 -1
  909. package/src/Table/TableCell.tsx +2 -2
  910. package/src/Table/TableHeaderCell.doc.mjs +1 -1
  911. package/src/Table/TableHeaderCell.tsx +2 -2
  912. package/src/Table/TableRow.doc.mjs +1 -1
  913. package/src/Table/TableRow.tsx +1 -1
  914. package/src/Table/index.ts +1 -1
  915. package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +1 -1
  916. package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +19 -0
  917. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +30 -11
  918. package/src/Table/plugins/tree/useTableTreeData.test.tsx +161 -2
  919. package/src/Table/plugins/tree/useTableTreeData.tsx +54 -1
  920. package/src/Table/types.ts +0 -9
  921. package/src/Table/useTableColumnResize.doc.mjs +1 -1
  922. package/src/Table/useTableColumnSettings.doc.mjs +1 -1
  923. package/src/Table/useTableFilterState.doc.mjs +1 -1
  924. package/src/Table/useTableFiltering.doc.mjs +1 -1
  925. package/src/Table/useTableGroupedRows.doc.mjs +2 -2
  926. package/src/Table/useTablePagination.doc.mjs +1 -1
  927. package/src/Table/useTableRowExpansion.doc.mjs +57 -4
  928. package/src/Table/useTableRowIndex.doc.mjs +2 -2
  929. package/src/Table/useTableRowStatus.doc.mjs +3 -3
  930. package/src/Table/useTableSelection.doc.mjs +1 -1
  931. package/src/Table/useTableSelectionState.doc.mjs +1 -1
  932. package/src/Table/useTableSortable.doc.mjs +1 -1
  933. package/src/Table/useTableStickyColumns.doc.mjs +1 -1
  934. package/src/Table/useTableTreeData.doc.mjs +10 -1
  935. package/src/Table/useTableTreeState.doc.mjs +1 -1
  936. package/src/Text/Heading.doc.mjs +4 -4
  937. package/src/Text/Text.doc.mjs +4 -4
  938. package/src/Text/Text.test.tsx +42 -0
  939. package/src/Text/Text.tsx +26 -2
  940. package/src/Text/index.ts +32 -6
  941. package/src/TextArea/TextArea.doc.mjs +31 -7
  942. package/src/TextArea/TextArea.test.tsx +186 -7
  943. package/src/TextArea/TextArea.tsx +156 -52
  944. package/src/TextInput/TextInput.doc.mjs +5 -5
  945. package/src/TextInput/TextInput.test.tsx +77 -0
  946. package/src/TextInput/TextInput.tsx +7 -3
  947. package/src/Thumbnail/Thumbnail.doc.mjs +2 -2
  948. package/src/Thumbnail/Thumbnail.test.tsx +24 -1
  949. package/src/Thumbnail/Thumbnail.tsx +28 -35
  950. package/src/TimeInput/TimeInput.doc.mjs +5 -5
  951. package/src/TimeInput/TimeInput.test.tsx +30 -3
  952. package/src/TimeInput/TimeInput.tsx +6 -2
  953. package/src/Timestamp/Timestamp.doc.mjs +30 -24
  954. package/src/Timestamp/Timestamp.test.tsx +438 -107
  955. package/src/Timestamp/Timestamp.tsx +167 -103
  956. package/src/Timestamp/TimestampHoverCard.tsx +283 -0
  957. package/src/Timestamp/formatInstant.ts +9 -4
  958. package/src/Timestamp/tooltipEntries.test.ts +9 -0
  959. package/src/Timestamp/tooltipEntries.ts +18 -2
  960. package/src/Toast/Toast.doc.mjs +3 -3
  961. package/src/Toast/ToastViewport.test.tsx +218 -8
  962. package/src/Toast/ToastViewport.tsx +71 -12
  963. package/src/Toast/useToast.doc.mjs +2 -2
  964. package/src/ToggleButton/ToggleButton.doc.mjs +3 -3
  965. package/src/ToggleButton/ToggleButton.test.tsx +24 -0
  966. package/src/ToggleButton/ToggleButton.tsx +20 -2
  967. package/src/ToggleButton/ToggleButtonGroup.doc.mjs +1 -1
  968. package/src/ToggleButton/ToggleButtonGroup.tsx +3 -6
  969. package/src/Token/Token.doc.mjs +3 -3
  970. package/src/Token/Token.test.tsx +145 -0
  971. package/src/Token/Token.tsx +75 -61
  972. package/src/Token/TokenLink.tsx +107 -0
  973. package/src/Token/index.ts +28 -1
  974. package/src/Tokenizer/Tokenizer.doc.mjs +5 -5
  975. package/src/Tokenizer/Tokenizer.test.tsx +45 -3
  976. package/src/Tokenizer/Tokenizer.tsx +11 -3
  977. package/src/Toolbar/Toolbar.doc.mjs +3 -3
  978. package/src/Toolbar/Toolbar.tsx +1 -1
  979. package/src/Tooltip/Tooltip.doc.mjs +3 -3
  980. package/src/Tooltip/Tooltip.tsx +1 -1
  981. package/src/Tooltip/useTooltip.doc.mjs +2 -2
  982. package/src/TopNav/TopNav.doc.mjs +3 -3
  983. package/src/TopNav/TopNav.test.tsx +2 -2
  984. package/src/TopNav/TopNav.tsx +2 -4
  985. package/src/TopNav/TopNavHeading.doc.mjs +1 -12
  986. package/src/TopNav/TopNavHeading.tsx +8 -18
  987. package/src/TopNav/TopNavItem.doc.mjs +1 -1
  988. package/src/TopNav/TopNavItem.tsx +1 -1
  989. package/src/TopNav/TopNavMegaMenu.doc.mjs +1 -1
  990. package/src/TopNav/TopNavMegaMenu.tsx +35 -11
  991. package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +1 -1
  992. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +1 -1
  993. package/src/TopNav/TopNavMegaMenuItem.doc.mjs +1 -1
  994. package/src/TopNav/TopNavMegaMenuItem.tsx +1 -1
  995. package/src/TopNav/TopNavMenu.doc.mjs +1 -1
  996. package/src/TopNav/TopNavMenu.tsx +5 -4
  997. package/src/TreeList/TreeList.doc.mjs +3 -3
  998. package/src/TreeList/TreeList.test.tsx +10 -6
  999. package/src/TreeList/TreeList.tsx +1 -1
  1000. package/src/TreeList/TreeListBranches.tsx +1 -1
  1001. package/src/TreeList/TreeListItem.tsx +4 -3
  1002. package/src/TreeList/TreeListTypes.ts +1 -18
  1003. package/src/TreeList/index.ts +19 -1
  1004. package/src/Typeahead/BaseTypeahead.doc.mjs +1 -1
  1005. package/src/Typeahead/BaseTypeahead.tsx +13 -1
  1006. package/src/Typeahead/Typeahead.doc.mjs +3 -3
  1007. package/src/Typeahead/Typeahead.test.tsx +62 -0
  1008. package/src/Typeahead/Typeahead.tsx +7 -1
  1009. package/src/Typeahead/TypeaheadItem.doc.mjs +1 -1
  1010. package/src/Typeahead/TypeaheadItem.tsx +1 -1
  1011. package/src/VStack/VStack.tsx +1 -1
  1012. package/src/VisuallyHidden/VisuallyHidden.doc.mjs +3 -3
  1013. package/src/VisuallyHidden/VisuallyHidden.tsx +1 -1
  1014. package/src/__tests__/babelPluginAddExtensions.test.ts +190 -0
  1015. package/src/__tests__/forcedColors.ts +60 -0
  1016. package/src/__tests__/inputWidthContract.test.tsx +8 -1
  1017. package/src/doc-mjs.d.ts +5 -2
  1018. package/src/docPropLiterals.test.ts +1 -1
  1019. package/src/docPropReferences.test.ts +1 -1
  1020. package/src/hooks/containerReveal.pool.stylex.ts +571 -0
  1021. package/src/hooks/index.ts +7 -0
  1022. package/src/hooks/useClickableContainer.doc.mjs +2 -2
  1023. package/src/hooks/useContainerReveal.doc.mjs +75 -0
  1024. package/src/hooks/useContainerReveal.test.tsx +116 -0
  1025. package/src/hooks/useContainerReveal.ts +181 -0
  1026. package/src/hooks/useEntryAnimation.doc.mjs +2 -2
  1027. package/src/hooks/useFocusTrap.doc.mjs +2 -2
  1028. package/src/hooks/useGridFocus.doc.mjs +2 -2
  1029. package/src/hooks/useGridFocus.ts +8 -6
  1030. package/src/hooks/useHotkeys.doc.mjs +2 -2
  1031. package/src/hooks/useImageMode.doc.mjs +2 -2
  1032. package/src/hooks/useImageMode.test.ts +1 -1
  1033. package/src/hooks/useInputContainer.doc.mjs +2 -2
  1034. package/src/hooks/useInputContainer.test.tsx +180 -0
  1035. package/src/hooks/useInputContainer.ts +36 -1
  1036. package/src/hooks/useInputStatusIcon.test.tsx +59 -0
  1037. package/src/hooks/useInputStatusIcon.tsx +12 -1
  1038. package/src/hooks/useKeyboardHint.doc.mjs +2 -2
  1039. package/src/hooks/useKeyboardHint.test.tsx +22 -0
  1040. package/src/hooks/useKeyboardHint.tsx +7 -3
  1041. package/src/hooks/useListFocus.doc.mjs +2 -2
  1042. package/src/hooks/useListFocus.ts +8 -7
  1043. package/src/hooks/useLongPress.test.tsx +18 -0
  1044. package/src/hooks/useLongPress.ts +12 -2
  1045. package/src/hooks/useMediaQuery.doc.mjs +2 -2
  1046. package/src/hooks/useOverflow.doc.mjs +2 -2
  1047. package/src/hooks/useScrollLock.doc.mjs +2 -2
  1048. package/src/hooks/useScrollOverflow.doc.mjs +2 -2
  1049. package/src/hooks/useStreamingText.doc.mjs +2 -2
  1050. package/src/hooks/useTreeFocus.doc.mjs +2 -2
  1051. package/src/hooks/useTreeFocus.test.tsx +53 -1
  1052. package/src/hooks/useTreeFocus.ts +13 -2
  1053. package/src/i18n/InternationalizationProvider.doc.mjs +14 -2
  1054. package/src/i18n/InternationalizationProvider.tsx +6 -0
  1055. package/src/i18n/useDirection.ts +6 -3
  1056. package/src/i18n/useTranslator.doc.mjs +2 -2
  1057. package/src/index.ts +2 -18
  1058. package/src/theme/MediaTheme.doc.mjs +2 -2
  1059. package/src/theme/SyntaxTheme.doc.mjs +2 -2
  1060. package/src/theme/Theme.doc.mjs +2 -2
  1061. package/src/theme/Theme.tsx +3 -7
  1062. package/src/theme/contrast.test.ts +94 -0
  1063. package/src/theme/contrast.ts +99 -0
  1064. package/src/theme/defineTheme.test.ts +29 -30
  1065. package/src/theme/defineTheme.ts +11 -5
  1066. package/src/theme/derivedVarRegistry.test.ts +8 -1
  1067. package/src/theme/derivedVarRegistry.ts +15 -6
  1068. package/src/theme/expandColorScale.test.ts +401 -1
  1069. package/src/theme/expandColorScale.ts +143 -19
  1070. package/src/theme/generateThemeRules.test.ts +41 -20
  1071. package/src/theme/generateThemeRules.ts +11 -15
  1072. package/src/theme/index.ts +11 -13
  1073. package/src/theme/themeRegistry.test.ts +59 -0
  1074. package/src/theme/themeRegistry.ts +53 -0
  1075. package/src/theme/tokens.stylex.ts +0 -19
  1076. package/src/theme/types.ts +14 -13
  1077. package/src/theme/useTheme.doc.mjs +2 -2
  1078. package/src/theme/useTheme.test.tsx +48 -3
  1079. package/src/theme/useTheme.ts +100 -29
  1080. package/src/utils/rtlStyles.ts +24 -2
  1081. package/dist/NavMenu/NavMenuItem.d.ts +0 -13
  1082. package/dist/NavMenu/NavMenuItem.d.ts.map +0 -1
  1083. package/dist/NavMenu/NavMenuItem.js +0 -16
  1084. package/dist/Thumbnail/thumbnail.markers.stylex.d.ts +0 -9
  1085. package/dist/Thumbnail/thumbnail.markers.stylex.d.ts.map +0 -1
  1086. package/dist/Thumbnail/thumbnail.markers.stylex.js +0 -14
  1087. package/dist/authoring/doc.d.ts +0 -145
  1088. package/dist/authoring/doc.d.ts.map +0 -1
  1089. package/dist/authoring/doc.js +0 -100
  1090. package/dist/authoring/index.d.ts +0 -29
  1091. package/dist/authoring/index.d.ts.map +0 -1
  1092. package/dist/authoring/index.js +0 -28
  1093. package/dist/authoring/integration.d.ts +0 -35
  1094. package/dist/authoring/integration.d.ts.map +0 -1
  1095. package/dist/authoring/integration.js +0 -30
  1096. package/dist/authoring/template.d.ts +0 -66
  1097. package/dist/authoring/template.d.ts.map +0 -1
  1098. package/dist/authoring/template.js +0 -55
  1099. package/dist/config.d.ts +0 -80
  1100. package/dist/config.d.ts.map +0 -1
  1101. package/dist/config.js +0 -40
  1102. package/dist/docs-types.d.ts +0 -969
  1103. package/dist/docs-types.d.ts.map +0 -1
  1104. package/dist/docs-types.js +0 -1
  1105. package/src/NavMenu/NavMenuItem.tsx +0 -19
  1106. package/src/Thumbnail/thumbnail.markers.stylex.ts +0 -12
  1107. package/src/authoring/doc.ts +0 -164
  1108. package/src/authoring/index.test.ts +0 -52
  1109. package/src/authoring/index.ts +0 -50
  1110. package/src/authoring/integration.ts +0 -42
  1111. package/src/authoring/template.ts +0 -74
  1112. package/src/config.test.ts +0 -16
  1113. package/src/config.ts +0 -92
  1114. package/src/docs-types.ts +0 -1108
@@ -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',
@@ -179,7 +179,19 @@ export const docs = {
179
179
  ],
180
180
  theming: {
181
181
  targets: [
182
- {className: 'astryx-textarea', visualProps: ['size', 'status']},
182
+ {className: 'astryx-textarea', visualProps: ['size', 'status'], states: ['disabled']},
183
+ ],
184
+ vars: [
185
+ {
186
+ name: '--_textarea-inline-padding',
187
+ description:
188
+ "Inline padding of the textarea's text. The wrapper stays flush (padding: 0) so the native resize grip sits in the true corner; this var carries the inset on the inner <textarea>, and the start icon, status/spinner, and character counter align to it.",
189
+ default: 'var(--spacing-2)',
190
+ private: true,
191
+ },
192
+ ],
193
+ derived: [
194
+ {property: 'paddingInline', vars: ['--_textarea-inline-padding'], replaces: true},
183
195
  ],
184
196
  },
185
197
  usage: {
@@ -198,7 +210,7 @@ export const docs = {
198
210
  },
199
211
  };
200
212
 
201
- /** @type {import('../docs-types').ComponentDoc} */
213
+ /** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
202
214
  export const docsZh = {
203
215
  name: 'TextArea',
204
216
  displayName: 'Text Area',
@@ -355,7 +367,19 @@ export const docsZh = {
355
367
  ],
356
368
  theming: {
357
369
  targets: [
358
- {className: 'astryx-textarea', visualProps: ['size', 'status']},
370
+ {className: 'astryx-textarea', visualProps: ['size', 'status'], states: ['disabled']},
371
+ ],
372
+ vars: [
373
+ {
374
+ name: '--_textarea-inline-padding',
375
+ description:
376
+ '文本域文本的行内内边距。外层容器保持无内边距(padding: 0),使原生缩放手柄位于真正的角落;该变量在内部 <textarea> 上承载内边距,起始图标、状态/加载指示器和字符计数器都与之对齐。',
377
+ default: 'var(--spacing-2)',
378
+ private: true,
379
+ },
380
+ ],
381
+ derived: [
382
+ {property: 'paddingInline', vars: ['--_textarea-inline-padding'], replaces: true},
359
383
  ],
360
384
  },
361
385
  usage: {
@@ -374,7 +398,7 @@ export const docsZh = {
374
398
  },
375
399
  };
376
400
 
377
- /** @type {import('../docs-types').TranslationDoc} */
401
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
378
402
  export const docsDense = {
379
403
  description: 'Multi-line text input for collecting longer user input.',
380
404
  usage: {
@@ -407,7 +431,7 @@ export const docsDense = {
407
431
  isLoading: 'Loading state w/ spinner inside input.',
408
432
  placeholder: 'Placeholder when textarea empty.',
409
433
  rows: 'Visible text rows.',
410
- maxLength: 'Max chars allowed. Shows counter (current/max) below textarea. No native enforcement.',
434
+ 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
435
  status: 'Colored border+icon status. Optional floating message below textarea.',
412
436
  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
437
  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', () => {
@@ -578,6 +673,61 @@ describe('TextArea', () => {
578
673
  });
579
674
  });
580
675
 
676
+ describe('form participation', () => {
677
+ it('submits the value under htmlName', () => {
678
+ const {container} = render(
679
+ <form>
680
+ <TextArea
681
+ label="Notes"
682
+ htmlName="notes"
683
+ value="hello"
684
+ onChange={() => {}}
685
+ />
686
+ </form>,
687
+ );
688
+ const data = new FormData(container.querySelector('form')!);
689
+ expect(data.get('notes')).toBe('hello');
690
+ });
691
+
692
+ it('is excluded from form data when disabled', () => {
693
+ const {container} = render(
694
+ <form>
695
+ <TextArea
696
+ label="Notes"
697
+ htmlName="notes"
698
+ value="hello"
699
+ onChange={() => {}}
700
+ isDisabled
701
+ />
702
+ </form>,
703
+ );
704
+ expect([
705
+ ...new FormData(container.querySelector('form')!).keys(),
706
+ ]).toEqual([]);
707
+ });
708
+
709
+ // Regression: a disabledMessage swaps the native `disabled` attribute for
710
+ // aria-disabled + readOnly so the reason stays focus-discoverable, but
711
+ // read-only fields still submit — the name has to be withheld too.
712
+ it('is excluded from form data when disabled, even with a disabledMessage', () => {
713
+ const {container} = render(
714
+ <form>
715
+ <TextArea
716
+ label="Notes"
717
+ htmlName="notes"
718
+ value="hello"
719
+ onChange={() => {}}
720
+ isDisabled
721
+ disabledMessage="Notes are locked while the review is open"
722
+ />
723
+ </form>,
724
+ );
725
+ expect([
726
+ ...new FormData(container.querySelector('form')!).keys(),
727
+ ]).toEqual([]);
728
+ });
729
+ });
730
+
581
731
  describe('click-to-focus', () => {
582
732
  it('focuses textarea when clicking the start icon', () => {
583
733
  render(
@@ -737,11 +887,15 @@ describe('TextArea', () => {
737
887
  });
738
888
  });
739
889
 
740
-
741
890
  describe('TextArea statusVariant forwarding', () => {
742
891
  it('defaults to attached (status renders with data-variant="attached")', () => {
743
892
  const {container} = render(
744
- <TextArea label="Bio" value="" onChange={() => {}} status={{type: 'error', message: 'Required'}} />,
893
+ <TextArea
894
+ label="Bio"
895
+ value=""
896
+ onChange={() => {}}
897
+ status={{type: 'error', message: 'Required'}}
898
+ />,
745
899
  );
746
900
  expect(container.querySelector('.astryx-field-status')).toHaveAttribute(
747
901
  'data-variant',
@@ -751,7 +905,13 @@ describe('TextArea statusVariant forwarding', () => {
751
905
 
752
906
  it('forwards statusVariant="detached" to the underlying Field status', () => {
753
907
  const {container} = render(
754
- <TextArea label="Bio" value="" onChange={() => {}} status={{type: 'error', message: 'Required'}} statusVariant="detached" />,
908
+ <TextArea
909
+ label="Bio"
910
+ value=""
911
+ onChange={() => {}}
912
+ status={{type: 'error', message: 'Required'}}
913
+ statusVariant="detached"
914
+ />,
755
915
  );
756
916
  expect(container.querySelector('.astryx-field-status')).toHaveAttribute(
757
917
  'data-variant',
@@ -759,3 +919,22 @@ describe('TextArea statusVariant forwarding', () => {
759
919
  );
760
920
  });
761
921
  });
922
+
923
+ describe('TextArea disabled theme state', () => {
924
+ it('reflects disabled on the root target so themes can gate paint on it', () => {
925
+ const {container} = render(
926
+ <TextArea label="Description" value="" onChange={() => {}} isDisabled />,
927
+ );
928
+ const root = container.querySelector('.astryx-textarea');
929
+ expect(root).toHaveAttribute('data-disabled', 'disabled');
930
+ expect(root).toHaveClass('disabled');
931
+ });
932
+
933
+ it('omits data-disabled when enabled, like status does', () => {
934
+ const {container} = render(
935
+ <TextArea label="Description" value="" onChange={() => {}} />,
936
+ );
937
+ const root = container.querySelector('.astryx-textarea');
938
+ expect(root).not.toHaveAttribute('data-disabled');
939
+ });
940
+ });
@@ -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,46 @@ 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
+ // Zero the shared wrapper inset with matching longhands, not the `padding`
70
+ // shorthand: StyleX ranks longhands above shorthands regardless of merge
71
+ // order, so a `padding: 0` shorthand loses to the base's
72
+ // paddingBlock/paddingInline. The wrapper would keep a duplicate inset that
73
+ // the <textarea>'s own padding then doubles — insetting the text and
74
+ // pushing the native resize grip in from the corner.
75
+ paddingBlock: 0,
76
+ paddingInline: 0,
77
+ // Internal inline padding for the textarea's text. Defined on the wrapper
78
+ // so the counter (a sibling overlay) inherits the same value and stays
79
+ // aligned with the text edge. Kept as an internal var so it can later be
80
+ // driven by a theme "padding" translation without touching either child.
81
+ '--_textarea-inline-padding': spacingVars['--spacing-2'],
63
82
  },
64
83
  textarea: {
65
84
  display: 'block',
66
- flex: 1,
85
+ width: '100%',
86
+ boxSizing: 'border-box',
67
87
  minWidth: 0,
68
88
  borderWidth: 0,
69
89
  borderStyle: 'none',
70
- padding: 0,
90
+ // Base internal padding; overlays get their own reserved space below.
91
+ paddingBlock: spacingVars['--spacing-1'],
92
+ paddingInline: 'var(--_textarea-inline-padding)',
71
93
  fontFamily: typographyVars['--font-family-body'],
72
94
  fontSize: {
73
95
  default: typeScaleVars['--text-body-size'],
@@ -85,29 +107,59 @@ const styles = stylex.create({
85
107
  textareaDisabled: {
86
108
  cursor: 'not-allowed',
87
109
  },
110
+ // Reserve start padding so text clears the start icon.
111
+ // inline inset + 16px icon (sm) + 8px gap
112
+ textareaWithStartIcon: {
113
+ paddingInlineStart: `calc(var(--_textarea-inline-padding) + ${spacingVars['--spacing-6']})`,
114
+ },
115
+ // Reserve end padding so text clears the status icon / spinner overlay.
116
+ // inline inset + 20px icon (md) + 4px gap
117
+ textareaWithStatus: {
118
+ paddingInlineEnd: `calc(var(--_textarea-inline-padding) + ${spacingVars['--spacing-6']})`,
119
+ },
120
+ // Reserve wider end padding when the spinner AND status icon both show.
121
+ // inline inset + 16px spinner + 8px gap + 20px icon + 4px gap
122
+ textareaWithBusyStatus: {
123
+ paddingInlineEnd: `calc(var(--_textarea-inline-padding) + ${spacingVars['--spacing-12']})`,
124
+ },
125
+ // Reserve bottom padding so text clears the character counter overlay.
126
+ textareaWithCounter: {
127
+ paddingBottom: spacingVars['--spacing-7'],
128
+ },
129
+ startIcon: {
130
+ position: 'absolute',
131
+ top: spacingVars['--spacing-2'],
132
+ insetInlineStart: 'var(--_textarea-inline-padding)',
133
+ pointerEvents: 'none',
134
+ display: 'flex',
135
+ },
136
+ endSlot: {
137
+ position: 'absolute',
138
+ top: spacingVars['--spacing-2'],
139
+ insetInlineEnd: 'var(--_textarea-inline-padding)',
140
+ pointerEvents: 'none',
141
+ display: 'flex',
142
+ alignItems: 'center',
143
+ gap: spacingVars['--spacing-2'],
144
+ },
145
+ // Character counter lives inside the input container, anchored bottom-right
146
+ // underneath the textarea, aligned to the same inline inset as the text.
88
147
  counter: {
148
+ position: 'absolute',
149
+ bottom: spacingVars['--spacing-1'],
150
+ insetInlineEnd: 'var(--_textarea-inline-padding)',
151
+ pointerEvents: 'none',
89
152
  display: 'flex',
90
- justifyContent: 'flex-end',
91
- marginTop: spacingVars['--spacing-1'],
153
+ alignItems: 'center',
154
+ gap: spacingVars['--spacing-1'],
92
155
  fontFamily: typographyVars['--font-family-body'],
93
156
  fontSize: typeScaleVars['--text-supporting-size'],
157
+ lineHeight: typeScaleVars['--text-supporting-leading'],
94
158
  color: colorVars['--color-text-secondary'],
95
159
  },
96
160
  counterError: {
97
161
  color: colorVars['--color-error'],
98
162
  },
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
163
  });
112
164
 
113
165
  const textareaSizeStyles = stylex.create({
@@ -326,12 +378,17 @@ export function TextArea({
326
378
  ...rest
327
379
  }: TextAreaProps) {
328
380
  const size = useSize(sizeProp, 'md');
381
+ const t = useTranslator();
382
+ const announce = useAnnounce();
329
383
  const id = useId();
330
384
  const descriptionID = useId();
331
385
  const statusMessageID = useId();
332
386
  const counterID = useId();
333
387
  const textareaRef = useRef<HTMLTextAreaElement | null>(null);
334
388
  const containerRef = useRef<HTMLDivElement | null>(null);
389
+ // Tracks the counter "zone" last announced (under / near / over) so we only
390
+ // announce on a zone change, not on every keystroke.
391
+ const counterZoneRef = useRef<'under' | 'near' | 'over' | null>(null);
335
392
 
336
393
  const [, startTransition] = useTransition();
337
394
  const [optimisticValue, setOptimisticValue] = useOptimistic(value);
@@ -370,6 +427,43 @@ export function TextArea({
370
427
  .filter(Boolean)
371
428
  .join(' ') || undefined;
372
429
 
430
+ // Announce the character-count status through the shared live region, but
431
+ // only when the value crosses into a new zone (near the limit / over the
432
+ // limit) so we don't speak on every keystroke. Over-limit is assertive (an
433
+ // error the user should hear immediately); nearing the limit is polite.
434
+ const announceCounter = useCallback(
435
+ (length: number) => {
436
+ if (maxLength == null) {
437
+ return;
438
+ }
439
+ const zone: 'under' | 'near' | 'over' =
440
+ length > maxLength
441
+ ? 'over'
442
+ : length >= maxLength * COUNTER_WARNING_THRESHOLD
443
+ ? 'near'
444
+ : 'under';
445
+ if (zone === counterZoneRef.current) {
446
+ return;
447
+ }
448
+ counterZoneRef.current = zone;
449
+ if (zone === 'over') {
450
+ announce(
451
+ t('@astryx.textArea.charactersOverLimit', {
452
+ count: length - maxLength,
453
+ }),
454
+ 'assertive',
455
+ );
456
+ } else if (zone === 'near') {
457
+ announce(
458
+ t('@astryx.textArea.charactersRemaining', {
459
+ count: maxLength - length,
460
+ }),
461
+ );
462
+ }
463
+ },
464
+ [announce, t, maxLength],
465
+ );
466
+
373
467
  const handleChange = (e: ChangeEvent<HTMLTextAreaElement>) => {
374
468
  // Value can't change while showing a disabled message (the field is
375
469
  // read-only and non-native-disabled), but guard the handler too so the
@@ -378,6 +472,7 @@ export function TextArea({
378
472
  return;
379
473
  }
380
474
  const newValue = e.target.value;
475
+ announceCounter(newValue.length);
381
476
  onChange?.(newValue, e);
382
477
  if (changeAction && !e.defaultPrevented) {
383
478
  startTransition(async () => {
@@ -430,29 +525,33 @@ export function TextArea({
430
525
  onClick={handleWrapperClick}
431
526
  onMouseUp={handleWrapperMouseUp}
432
527
  {...mergeProps(
433
- themeProps('textarea', {size, status: status?.type ?? null}),
528
+ themeProps('textarea', {
529
+ size,
530
+ status: status?.type ?? null,
531
+ disabled: isDisabled ? 'disabled' : null,
532
+ }),
434
533
  stylex.props(
435
534
  inputWrapperStyles.base,
436
535
  styles.wrapper,
437
- textareaSizeStyles[size],
438
- effectivelyDisabled && inputWrapperStyles.disabled,
536
+ isDisabled && inputWrapperStyles.disabled,
439
537
  status && inputStatusBorderStyles[status.type],
440
- status &&
441
- !effectivelyDisabled &&
442
- inputStatusHoverShadowStyles[status.type],
538
+ status && !isDisabled && inputStatusHoverShadowStyles[status.type],
443
539
  status && inputStatusFocusWithinStyles[status.type],
444
540
  xstyle,
445
541
  ),
446
542
  className,
447
543
  style,
448
544
  )}>
449
- {startIcon &&
450
- renderIconSlot(startIcon, {size: 'sm', color: 'secondary'})}
545
+ {startIcon && (
546
+ <span {...stylex.props(styles.startIcon)}>
547
+ {renderIconSlot(startIcon, {size: 'sm', color: 'secondary'})}
548
+ </span>
549
+ )}
451
550
  <textarea
452
551
  {...rest}
453
552
  ref={mergeRefs(ref, textareaRef)}
454
553
  id={id}
455
- name={htmlName}
554
+ name={isDisabled ? undefined : htmlName}
456
555
  value={optimisticValue}
457
556
  onChange={handleChange}
458
557
  onPaste={onPaste}
@@ -480,32 +579,37 @@ export function TextArea({
480
579
  aria-busy={isBusy || undefined}
481
580
  {...stylex.props(
482
581
  styles.textarea,
483
- effectivelyDisabled && styles.textareaDisabled,
484
- status && styles.textareaWithStatus,
582
+ textareaSizeStyles[size],
583
+ isDisabled && styles.textareaDisabled,
584
+ Boolean(startIcon) && styles.textareaWithStartIcon,
585
+ (status || isBusy) && styles.textareaWithStatus,
586
+ isBusy && !!statusIcon && styles.textareaWithBusyStatus,
587
+ maxLength != null && styles.textareaWithCounter,
485
588
  )}
486
589
  />
487
- {isBusy && <Spinner size="sm" />}
488
- {statusIcon && (
489
- <span {...stylex.props(styles.statusIcon)}>{statusIcon}</span>
590
+ {(isBusy || statusIcon) && (
591
+ <span {...stylex.props(styles.endSlot)}>
592
+ {isBusy && <Spinner size="sm" />}
593
+ {statusIcon}
594
+ </span>
595
+ )}
596
+ {maxLength != null && (
597
+ <div
598
+ id={counterID}
599
+ {...stylex.props(
600
+ styles.counter,
601
+ optimisticValue.length > maxLength && styles.counterError,
602
+ )}>
603
+ {optimisticValue.length > maxLength && (
604
+ // Non-color cue so the over-limit state isn't conveyed by the red
605
+ // color alone (WCAG 1.4.1). Decorative — the count text and the
606
+ // live-region announcement carry the meaning.
607
+ <Icon icon="warning" size="sm" />
608
+ )}
609
+ {optimisticValue.length}/{maxLength}
610
+ </div>
490
611
  )}
491
612
  </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
613
  {showsDisabledMessage &&
510
614
  disabledMessageTooltip.renderTooltip(disabledMessage)}
511
615
  </Field>