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

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