@astryxdesign/core 0.2.0 → 0.3.0-canary.1b8b3f2

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 (1102) 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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +16 -5
  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 +12 -3
  332. package/dist/Selector/Selector.d.ts.map +1 -1
  333. package/dist/Selector/Selector.js +114 -21
  334. package/dist/SideNav/SideNav.d.ts +1 -1
  335. package/dist/SideNav/SideNav.js +1 -1
  336. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  337. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  338. package/dist/SideNav/SideNavCollapseButton.js +4 -3
  339. package/dist/SideNav/SideNavHeading.d.ts +1 -1
  340. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  341. package/dist/SideNav/SideNavHeading.js +8 -7
  342. package/dist/SideNav/SideNavItem.d.ts +2 -2
  343. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  344. package/dist/SideNav/SideNavItem.js +6 -7
  345. package/dist/SideNav/SideNavSection.d.ts +1 -1
  346. package/dist/SideNav/SideNavSection.js +1 -1
  347. package/dist/Skeleton/Skeleton.d.ts +1 -1
  348. package/dist/Skeleton/Skeleton.d.ts.map +1 -1
  349. package/dist/Skeleton/Skeleton.js +3 -3
  350. package/dist/Slider/Slider.d.ts.map +1 -1
  351. package/dist/Slider/Slider.js +78 -68
  352. package/dist/Spinner/Spinner.d.ts +1 -1
  353. package/dist/Spinner/Spinner.js +1 -1
  354. package/dist/Stack/Stack.d.ts +1 -1
  355. package/dist/Stack/Stack.js +1 -1
  356. package/dist/Stack/StackItem.d.ts +1 -1
  357. package/dist/Stack/StackItem.js +1 -1
  358. package/dist/Stack/stack.stylex.d.ts +3 -3
  359. package/dist/StatusDot/StatusDot.d.ts +1 -20
  360. package/dist/StatusDot/StatusDot.d.ts.map +1 -1
  361. package/dist/StatusDot/StatusDot.js +2 -17
  362. package/dist/StatusDot/index.d.ts +21 -1
  363. package/dist/StatusDot/index.d.ts.map +1 -1
  364. package/dist/StatusDot/index.js +14 -0
  365. package/dist/Switch/Switch.d.ts +2 -6
  366. package/dist/Switch/Switch.d.ts.map +1 -1
  367. package/dist/Switch/Switch.js +28 -20
  368. package/dist/TabList/Tab.d.ts +1 -1
  369. package/dist/TabList/Tab.js +1 -1
  370. package/dist/TabList/TabList.d.ts +1 -1
  371. package/dist/TabList/TabList.js +1 -1
  372. package/dist/TabList/TabMenu.d.ts +1 -1
  373. package/dist/TabList/TabMenu.d.ts.map +1 -1
  374. package/dist/TabList/TabMenu.js +11 -3
  375. package/dist/Table/BaseTable.d.ts +1 -1
  376. package/dist/Table/BaseTable.d.ts.map +1 -1
  377. package/dist/Table/BaseTable.js +4 -7
  378. package/dist/Table/Table.d.ts +1 -1
  379. package/dist/Table/Table.js +1 -1
  380. package/dist/Table/TableCell.d.ts +1 -1
  381. package/dist/Table/TableCell.js +4 -2
  382. package/dist/Table/TableHeaderCell.d.ts +1 -1
  383. package/dist/Table/TableHeaderCell.js +4 -2
  384. package/dist/Table/TableRow.d.ts +1 -1
  385. package/dist/Table/TableRow.js +1 -1
  386. package/dist/Table/index.d.ts +1 -1
  387. package/dist/Table/index.d.ts.map +1 -1
  388. package/dist/Table/index.js +1 -1
  389. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +1 -1
  390. package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +1 -1
  391. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +18 -3
  392. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  393. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +27 -11
  394. package/dist/Table/plugins/tree/useTableTreeData.d.ts +11 -0
  395. package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
  396. package/dist/Table/plugins/tree/useTableTreeData.js +36 -2
  397. package/dist/Table/types.d.ts +0 -9
  398. package/dist/Table/types.d.ts.map +1 -1
  399. package/dist/Text/Text.d.ts +11 -2
  400. package/dist/Text/Text.d.ts.map +1 -1
  401. package/dist/Text/Text.js +26 -3
  402. package/dist/Text/index.d.ts +31 -1
  403. package/dist/Text/index.d.ts.map +1 -1
  404. package/dist/Text/index.js +23 -0
  405. package/dist/TextArea/TextArea.d.ts +1 -1
  406. package/dist/TextArea/TextArea.d.ts.map +1 -1
  407. package/dist/TextArea/TextArea.js +107 -39
  408. package/dist/TextInput/TextInput.d.ts +1 -1
  409. package/dist/TextInput/TextInput.js +1 -1
  410. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  411. package/dist/Thumbnail/Thumbnail.js +52 -46
  412. package/dist/TimeInput/TimeInput.js +1 -1
  413. package/dist/Timestamp/Timestamp.d.ts +26 -12
  414. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  415. package/dist/Timestamp/Timestamp.js +128 -65
  416. package/dist/Timestamp/TimestampHoverCard.d.ts +45 -0
  417. package/dist/Timestamp/TimestampHoverCard.d.ts.map +1 -0
  418. package/dist/Timestamp/TimestampHoverCard.js +228 -0
  419. package/dist/Timestamp/formatInstant.d.ts +3 -3
  420. package/dist/Timestamp/formatInstant.d.ts.map +1 -1
  421. package/dist/Timestamp/formatInstant.js +7 -2
  422. package/dist/Timestamp/tooltipEntries.d.ts +17 -2
  423. package/dist/Timestamp/tooltipEntries.d.ts.map +1 -1
  424. package/dist/Timestamp/tooltipEntries.js +4 -2
  425. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  426. package/dist/Toast/ToastViewport.js +61 -9
  427. package/dist/ToggleButton/ToggleButton.d.ts +1 -1
  428. package/dist/ToggleButton/ToggleButton.d.ts.map +1 -1
  429. package/dist/ToggleButton/ToggleButton.js +4 -2
  430. package/dist/ToggleButton/ToggleButtonGroup.d.ts +1 -1
  431. package/dist/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
  432. package/dist/ToggleButton/ToggleButtonGroup.js +1 -1
  433. package/dist/Token/Token.d.ts +6 -28
  434. package/dist/Token/Token.d.ts.map +1 -1
  435. package/dist/Token/Token.js +69 -58
  436. package/dist/Token/TokenLink.d.ts +62 -0
  437. package/dist/Token/TokenLink.d.ts.map +1 -0
  438. package/dist/Token/TokenLink.js +76 -0
  439. package/dist/Token/index.d.ts +27 -1
  440. package/dist/Token/index.d.ts.map +1 -1
  441. package/dist/Token/index.js +14 -0
  442. package/dist/Tokenizer/Tokenizer.d.ts +1 -1
  443. package/dist/Tokenizer/Tokenizer.js +1 -1
  444. package/dist/Toolbar/Toolbar.d.ts +1 -1
  445. package/dist/Toolbar/Toolbar.js +1 -1
  446. package/dist/Tooltip/Tooltip.d.ts +1 -1
  447. package/dist/Tooltip/Tooltip.js +1 -1
  448. package/dist/TopNav/TopNav.d.ts +1 -1
  449. package/dist/TopNav/TopNav.d.ts.map +1 -1
  450. package/dist/TopNav/TopNav.js +7 -6
  451. package/dist/TopNav/TopNavHeading.d.ts +2 -8
  452. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  453. package/dist/TopNav/TopNavHeading.js +8 -10
  454. package/dist/TopNav/TopNavItem.d.ts +1 -1
  455. package/dist/TopNav/TopNavItem.js +1 -1
  456. package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
  457. package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
  458. package/dist/TopNav/TopNavMegaMenu.js +27 -16
  459. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
  460. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +1 -1
  461. package/dist/TopNav/TopNavMegaMenuItem.d.ts +1 -1
  462. package/dist/TopNav/TopNavMegaMenuItem.js +1 -1
  463. package/dist/TopNav/TopNavMenu.d.ts +1 -1
  464. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  465. package/dist/TopNav/TopNavMenu.js +5 -4
  466. package/dist/TreeList/TreeList.d.ts +1 -1
  467. package/dist/TreeList/TreeList.js +1 -1
  468. package/dist/TreeList/TreeListBranches.js +1 -1
  469. package/dist/TreeList/TreeListItem.d.ts +1 -1
  470. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  471. package/dist/TreeList/TreeListItem.js +4 -3
  472. package/dist/TreeList/TreeListTypes.d.ts +1 -17
  473. package/dist/TreeList/TreeListTypes.d.ts.map +1 -1
  474. package/dist/TreeList/index.d.ts +18 -1
  475. package/dist/TreeList/index.d.ts.map +1 -1
  476. package/dist/TreeList/index.js +14 -0
  477. package/dist/Typeahead/BaseTypeahead.d.ts +10 -1
  478. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  479. package/dist/Typeahead/BaseTypeahead.js +3 -1
  480. package/dist/Typeahead/Typeahead.d.ts +1 -1
  481. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  482. package/dist/Typeahead/Typeahead.js +9 -2
  483. package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
  484. package/dist/Typeahead/TypeaheadItem.js +1 -1
  485. package/dist/VStack/VStack.d.ts +1 -1
  486. package/dist/VStack/VStack.js +1 -1
  487. package/dist/VisuallyHidden/VisuallyHidden.d.ts +1 -1
  488. package/dist/VisuallyHidden/VisuallyHidden.js +1 -1
  489. package/dist/astryx.css +116 -37
  490. package/dist/astryx.umd.js +50 -54
  491. package/dist/astryx.umd.js.map +4 -4
  492. package/dist/hooks/containerReveal.pool.stylex.d.ts +303 -0
  493. package/dist/hooks/containerReveal.pool.stylex.d.ts.map +1 -0
  494. package/dist/hooks/containerReveal.pool.stylex.js +292 -0
  495. package/dist/hooks/index.d.ts +2 -0
  496. package/dist/hooks/index.d.ts.map +1 -1
  497. package/dist/hooks/index.js +2 -1
  498. package/dist/hooks/useContainerReveal.d.ts +83 -0
  499. package/dist/hooks/useContainerReveal.d.ts.map +1 -0
  500. package/dist/hooks/useContainerReveal.js +123 -0
  501. package/dist/hooks/useGridFocus.d.ts +8 -6
  502. package/dist/hooks/useGridFocus.d.ts.map +1 -1
  503. package/dist/hooks/useInputContainer.d.ts.map +1 -1
  504. package/dist/hooks/useInputContainer.js +29 -1
  505. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  506. package/dist/hooks/useInputStatusIcon.js +11 -0
  507. package/dist/hooks/useKeyboardHint.d.ts +2 -2
  508. package/dist/hooks/useKeyboardHint.d.ts.map +1 -1
  509. package/dist/hooks/useKeyboardHint.js +5 -3
  510. package/dist/hooks/useListFocus.d.ts +8 -7
  511. package/dist/hooks/useListFocus.d.ts.map +1 -1
  512. package/dist/hooks/useLongPress.d.ts.map +1 -1
  513. package/dist/hooks/useLongPress.js +12 -2
  514. package/dist/hooks/useTreeFocus.d.ts.map +1 -1
  515. package/dist/hooks/useTreeFocus.js +13 -2
  516. package/dist/i18n/InternationalizationProvider.d.ts +6 -0
  517. package/dist/i18n/InternationalizationProvider.d.ts.map +1 -1
  518. package/dist/i18n/useDirection.d.ts.map +1 -1
  519. package/dist/i18n/useDirection.js +6 -3
  520. package/dist/index.d.ts +2 -1
  521. package/dist/index.d.ts.map +1 -1
  522. package/dist/index.js +3 -3
  523. package/dist/theme/Theme.d.ts.map +1 -1
  524. package/dist/theme/Theme.js +2 -7
  525. package/dist/theme/contrast.d.ts +45 -0
  526. package/dist/theme/contrast.d.ts.map +1 -0
  527. package/dist/theme/contrast.js +88 -0
  528. package/dist/theme/defineTheme.d.ts +9 -3
  529. package/dist/theme/defineTheme.d.ts.map +1 -1
  530. package/dist/theme/defineTheme.js +6 -4
  531. package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
  532. package/dist/theme/derivedVarRegistry.js +0 -13
  533. package/dist/theme/expandColorScale.d.ts +32 -3
  534. package/dist/theme/expandColorScale.d.ts.map +1 -1
  535. package/dist/theme/expandColorScale.js +102 -13
  536. package/dist/theme/generateThemeRules.d.ts +0 -6
  537. package/dist/theme/generateThemeRules.d.ts.map +1 -1
  538. package/dist/theme/generateThemeRules.js +0 -15
  539. package/dist/theme/index.d.ts +9 -7
  540. package/dist/theme/index.d.ts.map +1 -1
  541. package/dist/theme/index.js +4 -3
  542. package/dist/theme/themeRegistry.d.ts +32 -0
  543. package/dist/theme/themeRegistry.d.ts.map +1 -0
  544. package/dist/theme/themeRegistry.js +49 -0
  545. package/dist/theme/tokens.stylex.d.ts +0 -17
  546. package/dist/theme/tokens.stylex.d.ts.map +1 -1
  547. package/dist/theme/tokens.stylex.js +0 -22
  548. package/dist/theme/types.d.ts +10 -2
  549. package/dist/theme/types.d.ts.map +1 -1
  550. package/dist/theme/useTheme.d.ts +9 -0
  551. package/dist/theme/useTheme.d.ts.map +1 -1
  552. package/dist/theme/useTheme.js +82 -27
  553. package/dist/utils/rtlStyles.d.ts +23 -2
  554. package/dist/utils/rtlStyles.d.ts.map +1 -1
  555. package/dist/utils/rtlStyles.js +28 -3
  556. package/groups.doc.mjs +2 -2
  557. package/locales/en.json +124 -0
  558. package/locales/pseudo.json +93 -0
  559. package/package.json +9 -13
  560. package/src/AlertDialog/AlertDialog.doc.mjs +3 -3
  561. package/src/AlertDialog/AlertDialog.tsx +1 -1
  562. package/src/AlertDialog/useImperativeAlertDialog.doc.mjs +1 -1
  563. package/src/AppShell/AppShell.doc.mjs +3 -3
  564. package/src/AppShell/AppShell.test.tsx +55 -0
  565. package/src/AppShell/AppShell.tsx +27 -22
  566. package/src/AppShell/index.ts +20 -1
  567. package/src/AppShell/useAppShellMobile.doc.mjs +2 -2
  568. package/src/AspectRatio/AspectRatio.doc.mjs +3 -3
  569. package/src/AspectRatio/AspectRatio.tsx +1 -1
  570. package/src/Avatar/Avatar.doc.mjs +4 -15
  571. package/src/Avatar/Avatar.test.tsx +33 -8
  572. package/src/Avatar/Avatar.tsx +58 -25
  573. package/src/Avatar/AvatarStatusDot.doc.mjs +1 -1
  574. package/src/Avatar/AvatarStatusDot.tsx +2 -27
  575. package/src/Avatar/index.ts +26 -1
  576. package/src/AvatarGroup/AvatarGroup.doc.mjs +3 -3
  577. package/src/AvatarGroup/AvatarGroup.test.tsx +21 -1
  578. package/src/AvatarGroup/AvatarGroup.tsx +3 -7
  579. package/src/AvatarGroup/AvatarGroupOverflow.doc.mjs +1 -1
  580. package/src/AvatarGroup/AvatarGroupOverflow.tsx +5 -3
  581. package/src/Badge/Badge.doc.mjs +3 -3
  582. package/src/Badge/Badge.tsx +2 -31
  583. package/src/Badge/index.ts +32 -6
  584. package/src/Banner/Banner.doc.mjs +3 -3
  585. package/src/Banner/Banner.tsx +8 -45
  586. package/src/Banner/index.ts +39 -7
  587. package/src/Blockquote/Blockquote.doc.mjs +3 -3
  588. package/src/Blockquote/Blockquote.tsx +1 -1
  589. package/src/Breadcrumbs/BreadcrumbItem.doc.mjs +1 -1
  590. package/src/Breadcrumbs/BreadcrumbItem.tsx +5 -3
  591. package/src/Breadcrumbs/Breadcrumbs.doc.mjs +3 -3
  592. package/src/Breadcrumbs/Breadcrumbs.test.tsx +1 -1
  593. package/src/Breadcrumbs/Breadcrumbs.tsx +2 -19
  594. package/src/Breadcrumbs/index.ts +19 -5
  595. package/src/Button/Button.doc.mjs +3 -3
  596. package/src/Button/Button.test.tsx +16 -0
  597. package/src/Button/Button.tsx +6 -23
  598. package/src/Button/index.ts +22 -7
  599. package/src/ButtonGroup/ButtonGroup.doc.mjs +3 -3
  600. package/src/ButtonGroup/ButtonGroup.tsx +1 -1
  601. package/src/Calendar/Calendar.doc.mjs +3 -3
  602. package/src/Calendar/Calendar.test.tsx +22 -6
  603. package/src/Calendar/Calendar.tsx +1 -1
  604. package/src/Calendar/index.ts +1 -6
  605. package/src/Calendar/styles.ts +2 -2
  606. package/src/Calendar/utils.ts +0 -11
  607. package/src/Card/Card.doc.mjs +3 -3
  608. package/src/Card/Card.tsx +1 -1
  609. package/src/Carousel/Carousel.doc.mjs +10 -3
  610. package/src/Carousel/Carousel.test.tsx +232 -1
  611. package/src/Carousel/Carousel.tsx +154 -27
  612. package/src/Carousel/index.ts +1 -1
  613. package/src/Center/Center.doc.mjs +41 -3
  614. package/src/Center/Center.test.tsx +75 -0
  615. package/src/Center/Center.tsx +38 -3
  616. package/src/Chat/Chat.doc.mjs +3 -3
  617. package/src/Chat/ChatComposer.doc.mjs +1 -1
  618. package/src/Chat/ChatComposer.tsx +5 -5
  619. package/src/Chat/ChatComposerDrawer.doc.mjs +1 -1
  620. package/src/Chat/ChatComposerDrawer.tsx +5 -5
  621. package/src/Chat/ChatComposerInput.doc.mjs +1 -1
  622. package/src/Chat/ChatComposerInput.tsx +1 -1
  623. package/src/Chat/ChatComposerTokenElement.doc.mjs +1 -1
  624. package/src/Chat/ChatDictationButton.doc.mjs +3 -3
  625. package/src/Chat/ChatDictationButton.tsx +1 -1
  626. package/src/Chat/ChatLayout.doc.mjs +1 -1
  627. package/src/Chat/ChatLayout.test.tsx +57 -0
  628. package/src/Chat/ChatLayout.tsx +23 -2
  629. package/src/Chat/ChatLayoutScrollButton.doc.mjs +1 -1
  630. package/src/Chat/ChatLayoutScrollButton.tsx +1 -1
  631. package/src/Chat/ChatMessage.doc.mjs +1 -1
  632. package/src/Chat/ChatMessage.tsx +1 -1
  633. package/src/Chat/ChatMessageBubble.doc.mjs +1 -1
  634. package/src/Chat/ChatMessageBubble.tsx +1 -1
  635. package/src/Chat/ChatMessageList.doc.mjs +1 -1
  636. package/src/Chat/ChatMessageList.tsx +1 -1
  637. package/src/Chat/ChatMessageMetadata.doc.mjs +1 -1
  638. package/src/Chat/ChatSendButton.doc.mjs +1 -1
  639. package/src/Chat/ChatSendButton.tsx +5 -3
  640. package/src/Chat/ChatSystemMessage.doc.mjs +1 -1
  641. package/src/Chat/ChatSystemMessage.tsx +1 -1
  642. package/src/Chat/ChatTokenizedText.doc.mjs +1 -1
  643. package/src/Chat/ChatTokenizedText.tsx +1 -1
  644. package/src/Chat/ChatToolCalls.doc.mjs +3 -3
  645. package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
  646. package/src/CheckboxInput/CheckboxInput.test.tsx +56 -0
  647. package/src/CheckboxInput/CheckboxInput.tsx +18 -3
  648. package/src/CheckboxList/CheckboxList.doc.mjs +3 -3
  649. package/src/CheckboxList/CheckboxList.test.tsx +94 -3
  650. package/src/CheckboxList/CheckboxList.tsx +1 -1
  651. package/src/CheckboxList/CheckboxListItem.doc.mjs +1 -1
  652. package/src/CheckboxList/CheckboxListItem.tsx +18 -11
  653. package/src/Citation/Citation.doc.mjs +2 -2
  654. package/src/Citation/Citation.tsx +1 -1
  655. package/src/ClickableCard/ClickableCard.doc.mjs +2 -2
  656. package/src/ClickableCard/ClickableCard.tsx +3 -3
  657. package/src/Code/Code.tsx +2 -2
  658. package/src/CodeBlock/Code.doc.mjs +1 -1
  659. package/src/CodeBlock/CodeBlock.doc.mjs +3 -3
  660. package/src/CodeBlock/CodeBlock.test.tsx +17 -0
  661. package/src/CodeBlock/CodeBlock.tsx +2 -2
  662. package/src/Collapsible/Collapsible.doc.mjs +3 -3
  663. package/src/Collapsible/Collapsible.tsx +3 -3
  664. package/src/Collapsible/CollapsibleGroup.doc.mjs +1 -1
  665. package/src/Collapsible/CollapsibleGroup.tsx +1 -1
  666. package/src/Collapsible/CollapsibleGroupContext.tsx +1 -1
  667. package/src/Collapsible/useCollapsible.doc.mjs +2 -2
  668. package/src/CommandPalette/CommandPalette.doc.mjs +4 -4
  669. package/src/CommandPalette/CommandPalette.tsx +1 -1
  670. package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +1 -1
  671. package/src/CommandPalette/CommandPaletteEmpty.tsx +1 -1
  672. package/src/CommandPalette/CommandPaletteFooter.doc.mjs +1 -1
  673. package/src/CommandPalette/CommandPaletteFooter.tsx +1 -1
  674. package/src/CommandPalette/CommandPaletteGroup.doc.mjs +1 -1
  675. package/src/CommandPalette/CommandPaletteGroup.test.tsx +6 -2
  676. package/src/CommandPalette/CommandPaletteGroup.tsx +1 -1
  677. package/src/CommandPalette/CommandPaletteInput.doc.mjs +1 -1
  678. package/src/CommandPalette/CommandPaletteInput.tsx +5 -1
  679. package/src/CommandPalette/CommandPaletteItem.doc.mjs +1 -1
  680. package/src/CommandPalette/CommandPaletteItem.tsx +1 -1
  681. package/src/CommandPalette/CommandPaletteList.doc.mjs +1 -1
  682. package/src/CommandPalette/CommandPaletteList.tsx +1 -1
  683. package/src/ComplexSelector/ComplexSelector.doc.mjs +220 -0
  684. package/src/ComplexSelector/ComplexSelector.test.tsx +156 -0
  685. package/src/ComplexSelector/ComplexSelector.tsx +429 -0
  686. package/src/ComplexSelector/index.ts +17 -0
  687. package/src/ContextMenu/ContextMenu.doc.mjs +3 -3
  688. package/src/ContextMenu/ContextMenu.test.tsx +17 -2
  689. package/src/ContextMenu/ContextMenu.tsx +27 -6
  690. package/src/ContextMenu/ContextMenuItem.doc.mjs +1 -1
  691. package/src/DateInput/DateInput.doc.mjs +17 -3
  692. package/src/DateInput/DateInput.test.tsx +62 -3
  693. package/src/DateInput/DateInput.tsx +18 -2
  694. package/src/DateRangeInput/DateRangeInput.doc.mjs +10 -2
  695. package/src/DateRangeInput/DateRangeInput.test.tsx +73 -2
  696. package/src/DateRangeInput/DateRangeInput.tsx +18 -2
  697. package/src/DateTimeInput/DateTimeInput.doc.mjs +17 -3
  698. package/src/DateTimeInput/DateTimeInput.test.tsx +62 -2
  699. package/src/DateTimeInput/DateTimeInput.tsx +18 -2
  700. package/src/Dialog/Dialog.doc.mjs +7 -5
  701. package/src/Dialog/Dialog.test.tsx +46 -3
  702. package/src/Dialog/Dialog.tsx +61 -44
  703. package/src/Dialog/DialogHeader.doc.mjs +1 -1
  704. package/src/Dialog/DialogHeader.tsx +1 -1
  705. package/src/Dialog/index.ts +18 -1
  706. package/src/Dialog/useImperativeDialog.doc.mjs +1 -1
  707. package/src/Divider/Divider.doc.mjs +3 -3
  708. package/src/Divider/Divider.tsx +2 -19
  709. package/src/Divider/index.ts +19 -5
  710. package/src/DropdownMenu/DropdownMenu.doc.mjs +20 -5
  711. package/src/DropdownMenu/DropdownMenu.test.tsx +122 -0
  712. package/src/DropdownMenu/DropdownMenu.tsx +31 -20
  713. package/src/DropdownMenu/DropdownMenuCheckboxItem.doc.mjs +1 -1
  714. package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +41 -64
  715. package/src/DropdownMenu/DropdownMenuItem.doc.mjs +1 -1
  716. package/src/DropdownMenu/DropdownMenuItem.tsx +1 -1
  717. package/src/DropdownMenu/DropdownMenuRadioGroup.doc.mjs +5 -13
  718. package/src/DropdownMenu/DropdownMenuRadioGroup.tsx +9 -10
  719. package/src/DropdownMenu/DropdownMenuRadioItem.doc.mjs +1 -1
  720. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +11 -2
  721. package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +84 -2
  722. package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +1 -1
  723. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +46 -1
  724. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +24 -8
  725. package/src/DropdownMenu/menuItemHover.ts +1 -0
  726. package/src/DropdownMenu/renderDropdownItems.tsx +14 -2
  727. package/src/EmptyState/EmptyState.doc.mjs +3 -3
  728. package/src/EmptyState/EmptyState.tsx +1 -1
  729. package/src/Field/Field.doc.mjs +7 -3
  730. package/src/Field/Field.tsx +1 -1
  731. package/src/Field/FieldLabel.doc.mjs +1 -1
  732. package/src/Field/FieldLabel.test.tsx +103 -0
  733. package/src/Field/FieldLabel.tsx +61 -5
  734. package/src/FieldStatus/FieldStatus.doc.mjs +3 -2
  735. package/src/FieldStatus/FieldStatus.test.tsx +61 -0
  736. package/src/FieldStatus/FieldStatus.tsx +16 -23
  737. package/src/FieldStatus/index.ts +20 -5
  738. package/src/FileInput/FileInput.doc.mjs +3 -3
  739. package/src/FileInput/FileInput.tsx +1 -1
  740. package/src/FormLayout/FormLayout.doc.mjs +3 -3
  741. package/src/FormLayout/FormLayout.tsx +2 -5
  742. package/src/Grid/Grid.doc.mjs +3 -8
  743. package/src/Grid/Grid.tsx +1 -25
  744. package/src/Grid/GridSpan.doc.mjs +1 -1
  745. package/src/Grid/GridSpan.tsx +1 -1
  746. package/src/HStack/HStack.tsx +1 -1
  747. package/src/Heading/Heading.tsx +4 -3
  748. package/src/HoverCard/HoverCard.doc.mjs +3 -3
  749. package/src/HoverCard/HoverCard.tsx +1 -1
  750. package/src/HoverCard/useHoverCard.doc.mjs +2 -2
  751. package/src/Icon/Icon.doc.mjs +7 -6
  752. package/src/Icon/Icon.test.tsx +23 -0
  753. package/src/Icon/Icon.tsx +4 -2
  754. package/src/Icon/defaultIcons.tsx +14 -0
  755. package/src/Icon/globalIconRegistry.test.tsx +87 -1
  756. package/src/Icon/globalIconRegistry.tsx +111 -9
  757. package/src/Icon/index.ts +9 -7
  758. package/src/Icon/useIcon.ts +23 -0
  759. package/src/IconButton/IconButton.doc.mjs +2 -2
  760. package/src/IconButton/IconButton.tsx +1 -1
  761. package/src/InputGroup/InputGroup.doc.mjs +2 -2
  762. package/src/InputGroup/InputGroup.tsx +1 -1
  763. package/src/InputGroup/InputGroupText.doc.mjs +1 -1
  764. package/src/InputGroup/InputGroupText.tsx +1 -1
  765. package/src/Item/Item.doc.mjs +8 -3
  766. package/src/Item/Item.test.tsx +88 -0
  767. package/src/Item/Item.tsx +58 -12
  768. package/src/Kbd/Kbd.doc.mjs +3 -3
  769. package/src/Kbd/Kbd.tsx +1 -1
  770. package/src/Layer/Layer.doc.mjs +2 -2
  771. package/src/Layer/useLayer.doc.mjs +2 -2
  772. package/src/Layout/Layout.doc.mjs +3 -3
  773. package/src/Layout/Layout.tsx +1 -1
  774. package/src/Layout/LayoutContent.doc.mjs +1 -1
  775. package/src/Layout/LayoutContent.tsx +1 -1
  776. package/src/Layout/LayoutFooter.doc.mjs +1 -1
  777. package/src/Layout/LayoutFooter.tsx +1 -1
  778. package/src/Layout/LayoutHeader.doc.mjs +1 -1
  779. package/src/Layout/LayoutHeader.tsx +1 -1
  780. package/src/Layout/LayoutPanel.doc.mjs +1 -1
  781. package/src/Layout/LayoutPanel.tsx +1 -1
  782. package/src/Lightbox/Lightbox.doc.mjs +6 -6
  783. package/src/Lightbox/Lightbox.test.tsx +211 -0
  784. package/src/Lightbox/Lightbox.tsx +152 -60
  785. package/src/Link/Link.doc.mjs +3 -3
  786. package/src/Link/Link.tsx +1 -1
  787. package/src/Link/LinkProvider.doc.mjs +2 -2
  788. package/src/Link/LinkProvider.tsx +2 -2
  789. package/src/List/List.doc.mjs +3 -3
  790. package/src/List/List.tsx +1 -1
  791. package/src/List/ListItem.doc.mjs +13 -1
  792. package/src/List/ListItem.tsx +14 -1
  793. package/src/Markdown/Markdown.doc.mjs +81 -1
  794. package/src/Markdown/Markdown.test.tsx +92 -0
  795. package/src/Markdown/Markdown.tsx +96 -68
  796. package/src/Markdown/parser.perf.test.ts +47 -35
  797. package/src/MetadataList/MetadataList.doc.mjs +3 -3
  798. package/src/MetadataList/MetadataList.test.tsx +82 -0
  799. package/src/MetadataList/MetadataList.tsx +45 -20
  800. package/src/MetadataList/MetadataListItem.doc.mjs +1 -1
  801. package/src/MetadataList/MetadataListItem.tsx +1 -1
  802. package/src/MobileNav/MobileNav.doc.mjs +3 -3
  803. package/src/MobileNav/MobileNav.tsx +4 -4
  804. package/src/MoreMenu/MoreMenu.doc.mjs +3 -3
  805. package/src/MoreMenu/MoreMenu.tsx +3 -3
  806. package/src/MultiSelector/MultiSelector.doc.mjs +35 -10
  807. package/src/MultiSelector/MultiSelector.test.tsx +303 -3
  808. package/src/MultiSelector/MultiSelector.tsx +223 -58
  809. package/src/NavIcon/NavIcon.doc.mjs +3 -3
  810. package/src/NavIcon/NavIcon.tsx +1 -1
  811. package/src/NavMenu/NavHeadingMenu.test.tsx +0 -16
  812. package/src/NavMenu/NavMenu.doc.mjs +2 -2
  813. package/src/NavMenu/index.ts +0 -4
  814. package/src/NumberInput/NumberInput.doc.mjs +3 -6
  815. package/src/NumberInput/NumberInput.test.tsx +38 -3
  816. package/src/NumberInput/NumberInput.tsx +24 -1
  817. package/src/Outline/Outline.doc.mjs +3 -3
  818. package/src/Outline/Outline.tsx +1 -1
  819. package/src/OverflowList/OverflowList.doc.mjs +3 -3
  820. package/src/OverflowList/OverflowList.tsx +1 -1
  821. package/src/Overlay/Overlay.doc.mjs +2 -2
  822. package/src/Pagination/Pagination.doc.mjs +55 -8
  823. package/src/Pagination/Pagination.test.tsx +582 -0
  824. package/src/Pagination/Pagination.tsx +247 -55
  825. package/src/Pagination/index.ts +22 -1
  826. package/src/Popover/Popover.doc.mjs +31 -3
  827. package/src/Popover/Popover.test.tsx +41 -0
  828. package/src/Popover/Popover.tsx +25 -2
  829. package/src/Popover/usePopover.doc.mjs +2 -2
  830. package/src/Popover/usePopover.tsx +10 -4
  831. package/src/PowerSearch/PowerSearch.doc.mjs +3 -3
  832. package/src/PowerSearch/PowerSearch.tsx +1 -1
  833. package/src/ProgressBar/ProgressBar.doc.mjs +24 -3
  834. package/src/ProgressBar/ProgressBar.test.tsx +523 -2
  835. package/src/ProgressBar/ProgressBar.tsx +250 -25
  836. package/src/ProgressBar/ProgressBarMarkTooltip.tsx +43 -0
  837. package/src/ProgressBar/index.ts +22 -1
  838. package/src/RadioList/RadioList.doc.mjs +3 -3
  839. package/src/RadioList/RadioList.test.tsx +26 -4
  840. package/src/RadioList/RadioList.tsx +1 -1
  841. package/src/RadioList/RadioListItem.doc.mjs +1 -1
  842. package/src/RadioList/RadioListItem.tsx +9 -2
  843. package/src/Resizable/Resizable.doc.mjs +2 -2
  844. package/src/Resizable/ResizeHandle.test.tsx +52 -3
  845. package/src/Resizable/ResizeHandle.tsx +25 -13
  846. package/src/Resizable/useResizable.doc.mjs +2 -2
  847. package/src/Section/Section.doc.mjs +3 -3
  848. package/src/Section/Section.tsx +2 -20
  849. package/src/Section/index.ts +20 -5
  850. package/src/SegmentedControl/SegmentedControl.doc.mjs +3 -3
  851. package/src/SegmentedControl/SegmentedControl.test.tsx +28 -0
  852. package/src/SegmentedControl/SegmentedControl.tsx +1 -1
  853. package/src/SegmentedControl/SegmentedControlItem.doc.mjs +1 -1
  854. package/src/SegmentedControl/SegmentedControlItem.tsx +21 -3
  855. package/src/SelectableCard/SelectableCard.doc.mjs +4 -2
  856. package/src/SelectableCard/SelectableCard.test.tsx +55 -0
  857. package/src/SelectableCard/SelectableCard.tsx +19 -3
  858. package/src/Selector/Selector.doc.mjs +29 -8
  859. package/src/Selector/Selector.test.tsx +299 -3
  860. package/src/Selector/Selector.tsx +213 -53
  861. package/src/Selector/SelectorOption.doc.mjs +1 -1
  862. package/src/SideNav/SideNav.doc.mjs +3 -3
  863. package/src/SideNav/SideNav.tsx +1 -1
  864. package/src/SideNav/SideNavCollapseButton.doc.mjs +1 -1
  865. package/src/SideNav/SideNavCollapseButton.tsx +4 -3
  866. package/src/SideNav/SideNavHeading.doc.mjs +1 -1
  867. package/src/SideNav/SideNavHeading.tsx +8 -9
  868. package/src/SideNav/SideNavItem.doc.mjs +1 -1
  869. package/src/SideNav/SideNavItem.tsx +5 -6
  870. package/src/SideNav/SideNavSection.doc.mjs +1 -1
  871. package/src/SideNav/SideNavSection.tsx +1 -1
  872. package/src/Skeleton/Skeleton.doc.mjs +3 -3
  873. package/src/Skeleton/Skeleton.test.tsx +16 -0
  874. package/src/Skeleton/Skeleton.tsx +14 -2
  875. package/src/Slider/Slider.doc.mjs +3 -3
  876. package/src/Slider/Slider.tsx +9 -13
  877. package/src/Spinner/Spinner.doc.mjs +3 -3
  878. package/src/Spinner/Spinner.tsx +1 -1
  879. package/src/Stack/Stack.doc.mjs +113 -3
  880. package/src/Stack/Stack.tsx +1 -1
  881. package/src/Stack/StackItem.tsx +1 -1
  882. package/src/StatusDot/StatusDot.doc.mjs +15 -6
  883. package/src/StatusDot/StatusDot.tsx +2 -22
  884. package/src/StatusDot/index.ts +22 -5
  885. package/src/Switch/Switch.doc.mjs +5 -5
  886. package/src/Switch/Switch.test.tsx +71 -25
  887. package/src/Switch/Switch.tsx +63 -26
  888. package/src/TabList/Tab.doc.mjs +1 -1
  889. package/src/TabList/Tab.tsx +1 -1
  890. package/src/TabList/TabList.doc.mjs +3 -3
  891. package/src/TabList/TabList.test.tsx +21 -18
  892. package/src/TabList/TabList.tsx +1 -1
  893. package/src/TabList/TabMenu.doc.mjs +1 -1
  894. package/src/TabList/TabMenu.tsx +11 -3
  895. package/src/Table/BaseTable.tsx +4 -5
  896. package/src/Table/Table.doc.mjs +5 -5
  897. package/src/Table/Table.test.tsx +27 -49
  898. package/src/Table/Table.tsx +1 -1
  899. package/src/Table/TableCell.doc.mjs +1 -1
  900. package/src/Table/TableCell.tsx +2 -2
  901. package/src/Table/TableHeaderCell.doc.mjs +1 -1
  902. package/src/Table/TableHeaderCell.tsx +2 -2
  903. package/src/Table/TableRow.doc.mjs +1 -1
  904. package/src/Table/TableRow.tsx +1 -1
  905. package/src/Table/index.ts +1 -1
  906. package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +1 -1
  907. package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +19 -0
  908. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +30 -11
  909. package/src/Table/plugins/tree/useTableTreeData.test.tsx +161 -2
  910. package/src/Table/plugins/tree/useTableTreeData.tsx +54 -1
  911. package/src/Table/types.ts +0 -9
  912. package/src/Table/useTableColumnResize.doc.mjs +1 -1
  913. package/src/Table/useTableColumnSettings.doc.mjs +1 -1
  914. package/src/Table/useTableFilterState.doc.mjs +1 -1
  915. package/src/Table/useTableFiltering.doc.mjs +1 -1
  916. package/src/Table/useTableGroupedRows.doc.mjs +2 -2
  917. package/src/Table/useTablePagination.doc.mjs +1 -1
  918. package/src/Table/useTableRowExpansion.doc.mjs +57 -4
  919. package/src/Table/useTableRowIndex.doc.mjs +2 -2
  920. package/src/Table/useTableRowStatus.doc.mjs +3 -3
  921. package/src/Table/useTableSelection.doc.mjs +1 -1
  922. package/src/Table/useTableSelectionState.doc.mjs +1 -1
  923. package/src/Table/useTableSortable.doc.mjs +1 -1
  924. package/src/Table/useTableStickyColumns.doc.mjs +1 -1
  925. package/src/Table/useTableTreeData.doc.mjs +10 -1
  926. package/src/Table/useTableTreeState.doc.mjs +1 -1
  927. package/src/Text/Heading.doc.mjs +4 -4
  928. package/src/Text/Text.doc.mjs +4 -4
  929. package/src/Text/Text.test.tsx +42 -0
  930. package/src/Text/Text.tsx +26 -2
  931. package/src/Text/index.ts +32 -6
  932. package/src/TextArea/TextArea.doc.mjs +5 -5
  933. package/src/TextArea/TextArea.test.tsx +112 -7
  934. package/src/TextArea/TextArea.tsx +143 -50
  935. package/src/TextInput/TextInput.doc.mjs +3 -3
  936. package/src/TextInput/TextInput.tsx +1 -1
  937. package/src/Thumbnail/Thumbnail.doc.mjs +2 -2
  938. package/src/Thumbnail/Thumbnail.test.tsx +24 -1
  939. package/src/Thumbnail/Thumbnail.tsx +28 -35
  940. package/src/TimeInput/TimeInput.doc.mjs +3 -3
  941. package/src/TimeInput/TimeInput.tsx +1 -1
  942. package/src/Timestamp/Timestamp.doc.mjs +30 -24
  943. package/src/Timestamp/Timestamp.test.tsx +438 -107
  944. package/src/Timestamp/Timestamp.tsx +167 -103
  945. package/src/Timestamp/TimestampHoverCard.tsx +283 -0
  946. package/src/Timestamp/formatInstant.ts +9 -4
  947. package/src/Timestamp/tooltipEntries.test.ts +9 -0
  948. package/src/Timestamp/tooltipEntries.ts +18 -2
  949. package/src/Toast/Toast.doc.mjs +3 -3
  950. package/src/Toast/ToastViewport.test.tsx +218 -8
  951. package/src/Toast/ToastViewport.tsx +71 -12
  952. package/src/Toast/useToast.doc.mjs +2 -2
  953. package/src/ToggleButton/ToggleButton.doc.mjs +3 -3
  954. package/src/ToggleButton/ToggleButton.test.tsx +24 -0
  955. package/src/ToggleButton/ToggleButton.tsx +20 -2
  956. package/src/ToggleButton/ToggleButtonGroup.doc.mjs +1 -1
  957. package/src/ToggleButton/ToggleButtonGroup.tsx +3 -6
  958. package/src/Token/Token.doc.mjs +3 -3
  959. package/src/Token/Token.test.tsx +145 -0
  960. package/src/Token/Token.tsx +75 -61
  961. package/src/Token/TokenLink.tsx +107 -0
  962. package/src/Token/index.ts +28 -1
  963. package/src/Tokenizer/Tokenizer.doc.mjs +3 -3
  964. package/src/Tokenizer/Tokenizer.tsx +1 -1
  965. package/src/Toolbar/Toolbar.doc.mjs +3 -3
  966. package/src/Toolbar/Toolbar.tsx +1 -1
  967. package/src/Tooltip/Tooltip.doc.mjs +3 -3
  968. package/src/Tooltip/Tooltip.tsx +1 -1
  969. package/src/Tooltip/useTooltip.doc.mjs +2 -2
  970. package/src/TopNav/TopNav.doc.mjs +3 -3
  971. package/src/TopNav/TopNav.test.tsx +2 -2
  972. package/src/TopNav/TopNav.tsx +2 -4
  973. package/src/TopNav/TopNavHeading.doc.mjs +1 -12
  974. package/src/TopNav/TopNavHeading.tsx +8 -18
  975. package/src/TopNav/TopNavItem.doc.mjs +1 -1
  976. package/src/TopNav/TopNavItem.tsx +1 -1
  977. package/src/TopNav/TopNavMegaMenu.doc.mjs +1 -1
  978. package/src/TopNav/TopNavMegaMenu.tsx +35 -11
  979. package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +1 -1
  980. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +1 -1
  981. package/src/TopNav/TopNavMegaMenuItem.doc.mjs +1 -1
  982. package/src/TopNav/TopNavMegaMenuItem.tsx +1 -1
  983. package/src/TopNav/TopNavMenu.doc.mjs +1 -1
  984. package/src/TopNav/TopNavMenu.tsx +5 -4
  985. package/src/TreeList/TreeList.doc.mjs +3 -3
  986. package/src/TreeList/TreeList.test.tsx +10 -6
  987. package/src/TreeList/TreeList.tsx +1 -1
  988. package/src/TreeList/TreeListBranches.tsx +1 -1
  989. package/src/TreeList/TreeListItem.tsx +4 -3
  990. package/src/TreeList/TreeListTypes.ts +1 -18
  991. package/src/TreeList/index.ts +19 -1
  992. package/src/Typeahead/BaseTypeahead.doc.mjs +1 -1
  993. package/src/Typeahead/BaseTypeahead.tsx +13 -1
  994. package/src/Typeahead/Typeahead.doc.mjs +3 -3
  995. package/src/Typeahead/Typeahead.test.tsx +62 -0
  996. package/src/Typeahead/Typeahead.tsx +7 -1
  997. package/src/Typeahead/TypeaheadItem.doc.mjs +1 -1
  998. package/src/Typeahead/TypeaheadItem.tsx +1 -1
  999. package/src/VStack/VStack.tsx +1 -1
  1000. package/src/VisuallyHidden/VisuallyHidden.doc.mjs +3 -3
  1001. package/src/VisuallyHidden/VisuallyHidden.tsx +1 -1
  1002. package/src/__tests__/babelPluginAddExtensions.test.ts +190 -0
  1003. package/src/__tests__/forcedColors.ts +60 -0
  1004. package/src/__tests__/inputWidthContract.test.tsx +8 -1
  1005. package/src/doc-mjs.d.ts +5 -2
  1006. package/src/docPropLiterals.test.ts +1 -1
  1007. package/src/docPropReferences.test.ts +1 -1
  1008. package/src/hooks/containerReveal.pool.stylex.ts +571 -0
  1009. package/src/hooks/index.ts +7 -0
  1010. package/src/hooks/useClickableContainer.doc.mjs +2 -2
  1011. package/src/hooks/useContainerReveal.doc.mjs +75 -0
  1012. package/src/hooks/useContainerReveal.test.tsx +116 -0
  1013. package/src/hooks/useContainerReveal.ts +181 -0
  1014. package/src/hooks/useEntryAnimation.doc.mjs +2 -2
  1015. package/src/hooks/useFocusTrap.doc.mjs +2 -2
  1016. package/src/hooks/useGridFocus.doc.mjs +2 -2
  1017. package/src/hooks/useGridFocus.ts +8 -6
  1018. package/src/hooks/useHotkeys.doc.mjs +2 -2
  1019. package/src/hooks/useImageMode.doc.mjs +2 -2
  1020. package/src/hooks/useImageMode.test.ts +1 -1
  1021. package/src/hooks/useInputContainer.doc.mjs +2 -2
  1022. package/src/hooks/useInputContainer.test.tsx +180 -0
  1023. package/src/hooks/useInputContainer.ts +36 -1
  1024. package/src/hooks/useInputStatusIcon.test.tsx +59 -0
  1025. package/src/hooks/useInputStatusIcon.tsx +12 -1
  1026. package/src/hooks/useKeyboardHint.doc.mjs +2 -2
  1027. package/src/hooks/useKeyboardHint.test.tsx +22 -0
  1028. package/src/hooks/useKeyboardHint.tsx +7 -3
  1029. package/src/hooks/useListFocus.doc.mjs +2 -2
  1030. package/src/hooks/useListFocus.ts +8 -7
  1031. package/src/hooks/useLongPress.test.tsx +18 -0
  1032. package/src/hooks/useLongPress.ts +12 -2
  1033. package/src/hooks/useMediaQuery.doc.mjs +2 -2
  1034. package/src/hooks/useOverflow.doc.mjs +2 -2
  1035. package/src/hooks/useScrollLock.doc.mjs +2 -2
  1036. package/src/hooks/useScrollOverflow.doc.mjs +2 -2
  1037. package/src/hooks/useStreamingText.doc.mjs +2 -2
  1038. package/src/hooks/useTreeFocus.doc.mjs +2 -2
  1039. package/src/hooks/useTreeFocus.test.tsx +53 -1
  1040. package/src/hooks/useTreeFocus.ts +13 -2
  1041. package/src/i18n/InternationalizationProvider.doc.mjs +14 -2
  1042. package/src/i18n/InternationalizationProvider.tsx +6 -0
  1043. package/src/i18n/useDirection.ts +6 -3
  1044. package/src/i18n/useTranslator.doc.mjs +2 -2
  1045. package/src/index.ts +2 -18
  1046. package/src/theme/MediaTheme.doc.mjs +2 -2
  1047. package/src/theme/SyntaxTheme.doc.mjs +2 -2
  1048. package/src/theme/Theme.doc.mjs +2 -2
  1049. package/src/theme/Theme.tsx +3 -7
  1050. package/src/theme/contrast.test.ts +94 -0
  1051. package/src/theme/contrast.ts +99 -0
  1052. package/src/theme/defineTheme.test.ts +29 -30
  1053. package/src/theme/defineTheme.ts +11 -5
  1054. package/src/theme/derivedVarRegistry.test.ts +0 -1
  1055. package/src/theme/derivedVarRegistry.ts +0 -6
  1056. package/src/theme/expandColorScale.test.ts +401 -1
  1057. package/src/theme/expandColorScale.ts +143 -19
  1058. package/src/theme/generateThemeRules.test.ts +20 -20
  1059. package/src/theme/generateThemeRules.ts +0 -15
  1060. package/src/theme/index.ts +11 -13
  1061. package/src/theme/themeRegistry.test.ts +59 -0
  1062. package/src/theme/themeRegistry.ts +53 -0
  1063. package/src/theme/tokens.stylex.ts +0 -19
  1064. package/src/theme/types.ts +14 -13
  1065. package/src/theme/useTheme.doc.mjs +2 -2
  1066. package/src/theme/useTheme.test.tsx +48 -3
  1067. package/src/theme/useTheme.ts +100 -29
  1068. package/src/utils/rtlStyles.ts +24 -2
  1069. package/dist/NavMenu/NavMenuItem.d.ts +0 -13
  1070. package/dist/NavMenu/NavMenuItem.d.ts.map +0 -1
  1071. package/dist/NavMenu/NavMenuItem.js +0 -16
  1072. package/dist/Thumbnail/thumbnail.markers.stylex.d.ts +0 -9
  1073. package/dist/Thumbnail/thumbnail.markers.stylex.d.ts.map +0 -1
  1074. package/dist/Thumbnail/thumbnail.markers.stylex.js +0 -14
  1075. package/dist/authoring/doc.d.ts +0 -145
  1076. package/dist/authoring/doc.d.ts.map +0 -1
  1077. package/dist/authoring/doc.js +0 -100
  1078. package/dist/authoring/index.d.ts +0 -29
  1079. package/dist/authoring/index.d.ts.map +0 -1
  1080. package/dist/authoring/index.js +0 -28
  1081. package/dist/authoring/integration.d.ts +0 -35
  1082. package/dist/authoring/integration.d.ts.map +0 -1
  1083. package/dist/authoring/integration.js +0 -30
  1084. package/dist/authoring/template.d.ts +0 -66
  1085. package/dist/authoring/template.d.ts.map +0 -1
  1086. package/dist/authoring/template.js +0 -55
  1087. package/dist/config.d.ts +0 -80
  1088. package/dist/config.d.ts.map +0 -1
  1089. package/dist/config.js +0 -40
  1090. package/dist/docs-types.d.ts +0 -969
  1091. package/dist/docs-types.d.ts.map +0 -1
  1092. package/dist/docs-types.js +0 -1
  1093. package/src/NavMenu/NavMenuItem.tsx +0 -19
  1094. package/src/Thumbnail/thumbnail.markers.stylex.ts +0 -12
  1095. package/src/authoring/doc.ts +0 -164
  1096. package/src/authoring/index.test.ts +0 -52
  1097. package/src/authoring/index.ts +0 -50
  1098. package/src/authoring/integration.ts +0 -42
  1099. package/src/authoring/template.ts +0 -74
  1100. package/src/config.test.ts +0 -16
  1101. package/src/config.ts +0 -92
  1102. package/src/docs-types.ts +0 -1108
@@ -5,16 +5,31 @@
5
5
  /**
6
6
  * @file index.ts
7
7
  * @input Imports Button component and types from Button.tsx
8
- * @output Exports Button, ButtonProps, ButtonVariant
8
+ * @output Exports Button, ButtonProps, ButtonVariant, ButtonVariantMap
9
9
  * @position Component entry point; re-exported by /packages/core/src/index.ts
10
10
  *
11
11
  * SYNC: When modified, update this header and /packages/core/src/Button/Button.doc.mjs
12
12
  */
13
13
 
14
+ /**
15
+ * Extensible variant map for Button.
16
+ *
17
+ * Theme builds can add custom variants via TypeScript module augmentation:
18
+ * @example
19
+ * ```
20
+ * declare module '@astryxdesign/core/Button' {
21
+ * interface ButtonVariantMap {
22
+ * 'primary-muted': true;
23
+ * }
24
+ * }
25
+ * ```
26
+ */
27
+ export interface ButtonVariantMap {
28
+ primary: true;
29
+ secondary: true;
30
+ ghost: true;
31
+ destructive: true;
32
+ }
33
+
14
34
  export {Button} from './Button';
15
- export type {
16
- ButtonProps,
17
- ButtonVariant,
18
- ButtonSize,
19
- } from './Button';
20
- export type {ButtonVariantMap} from './Button';
35
+ export type {ButtonProps, ButtonVariant, ButtonSize} from './Button';
@@ -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: 'ButtonGroup',
@@ -54,7 +54,7 @@ export const docs = {
54
54
  },
55
55
  };
56
56
 
57
- /** @type {import('../docs-types').TranslationDoc} */
57
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
58
58
  export const docsZh = {
59
59
  components: [
60
60
  {
@@ -92,7 +92,7 @@ export const docsZh = {
92
92
  },
93
93
  };
94
94
 
95
- /** @type {import('../docs-types').TranslationDoc} */
95
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
96
96
  export const docsDense = {
97
97
  description: 'connected button group w/ shared borders, outer-only radius, horizontal/vertical',
98
98
  usage: {
@@ -18,7 +18,7 @@
18
18
  * - /packages/core/src/ButtonGroup/ButtonGroup.test.tsx (tests)
19
19
  * - /packages/core/src/ButtonGroup/index.ts (exports if types change)
20
20
  * - /apps/storybook/stories/ButtonGroup.stories.tsx (storybook stories)
21
- * - /packages/cli/templates/blocks/components/ButtonGroup/ (showcase blocks)
21
+ * - /packages/cli/assets/templates/blocks/components/ButtonGroup/ (showcase blocks)
22
22
  */
23
23
 
24
24
  import {useMemo, type ReactNode} from 'react';
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
- /** @type {import('../docs-types').ComponentDoc} */
3
+ /** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
4
4
 
5
5
  export const docs = {
6
6
  name: 'Calendar',
@@ -117,7 +117,7 @@ export const docs = {
117
117
  },
118
118
  };
119
119
 
120
- /** @type {import('../docs-types').ComponentDoc} */
120
+ /** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
121
121
  export const docsZh = {
122
122
  name: 'Calendar',
123
123
  displayName: 'Calendar',
@@ -181,7 +181,7 @@ export const docsZh = {
181
181
  },
182
182
  };
183
183
 
184
- /** @type {import('../docs-types').TranslationDoc} */
184
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
185
185
  export const docsDense = {
186
186
  description: 'month grid for picking a date or date range',
187
187
  usage: {
@@ -9,7 +9,7 @@
9
9
  * SYNC: When Calendar.tsx changes, update tests accordingly
10
10
  */
11
11
 
12
- import {describe, it, expect, vi, afterEach} from 'vitest';
12
+ import {describe, it, expect, vi, beforeEach, afterEach} from 'vitest';
13
13
  import {act, render, screen, within, waitFor} from '@testing-library/react';
14
14
  import userEvent from '@testing-library/user-event';
15
15
  import {getButton} from '../__tests__/fastRoleQueries';
@@ -19,9 +19,13 @@ import type {CalendarHandle} from './Calendar';
19
19
  import type {ISODateString} from './Calendar';
20
20
  import {calendarStyles} from './styles';
21
21
  import {defineTheme} from '../theme/defineTheme';
22
- import {generateThemeCSSFlat} from '../theme/generateThemeRules';
22
+ import {generateThemeCSS} from '../theme/generateThemeRules';
23
23
  import {__resetLiveRegionsForTest} from '../hooks/useAnnounce';
24
24
 
25
+ function generateThemeTestCSS(theme: Parameters<typeof generateThemeCSS>[0]) {
26
+ const {prose, component} = generateThemeCSS(theme);
27
+ return [prose, component].filter(Boolean).join('\n\n');
28
+ }
25
29
  afterEach(() => {
26
30
  __resetLiveRegionsForTest();
27
31
  });
@@ -1038,8 +1042,20 @@ describe('Calendar', () => {
1038
1042
 
1039
1043
  // ─── Day-cell marker theming (#4286) ─────────────────────────
1040
1044
  describe('day-cell marker theme state', () => {
1041
- // Tests use the real "today" (as the existing aria-current tests do) since
1042
- // Calendar derives it internally. Helpers pin the exact ISO strings.
1045
+ // Pin "today" to a mid-month date so the ±2-day range helpers below stay
1046
+ // within a single rendered month. With the real clock, running near a month
1047
+ // boundary (e.g. the 1st) pushed today-2 into the previous month, so the
1048
+ // rendered grid didn't contain today's cell and the marker assertions
1049
+ // flaked. Fake only Date (timers stay real; these tests are synchronous).
1050
+ beforeEach(() => {
1051
+ vi.useFakeTimers({toFake: ['Date']});
1052
+ vi.setSystemTime(new Date(2026, 5, 15, 12, 0, 0));
1053
+ });
1054
+ afterEach(() => {
1055
+ vi.useRealTimers();
1056
+ });
1057
+ // Tests use the (now-pinned) "today" since Calendar derives it internally.
1058
+ // Helpers pin the exact ISO strings.
1043
1059
  function todayISO(): ISODateString {
1044
1060
  const n = new Date();
1045
1061
  return `${n.getFullYear()}-${String(n.getMonth() + 1).padStart(2, '0')}-${String(n.getDate()).padStart(2, '0')}` as ISODateString;
@@ -1136,7 +1152,7 @@ describe('Calendar', () => {
1136
1152
  },
1137
1153
  },
1138
1154
  });
1139
- const css = generateThemeCSSFlat(theme);
1155
+ const css = generateThemeTestCSS(theme);
1140
1156
  expect(css).toContain('.astryx-calendar-day.today-only');
1141
1157
  expect(css).toContain('.astryx-calendar-day.today-in-range');
1142
1158
  expect(css).toContain('box-shadow: inset 0 0 0 2px var(--color-accent)');
@@ -1217,7 +1233,7 @@ describe('Calendar', () => {
1217
1233
  },
1218
1234
  },
1219
1235
  });
1220
- const css = generateThemeCSSFlat(theme);
1236
+ const css = generateThemeTestCSS(theme);
1221
1237
  expect(css).toContain('.astryx-calendar-nav {');
1222
1238
  expect(css).toContain('color: var(--color-accent)');
1223
1239
  expect(css).toContain('.astryx-calendar-nav.next');
@@ -14,7 +14,7 @@
14
14
  * - /packages/core/src/Calendar/Calendar.test.tsx (tests for new/changed behavior)
15
15
  * - /packages/core/src/Calendar/index.ts (exports if types change)
16
16
  * - /apps/storybook/stories/Calendar.stories.tsx (storybook stories)
17
- * - /packages/cli/templates/blocks/components/Calendar/ (showcase blocks)
17
+ * - /packages/cli/assets/templates/blocks/components/Calendar/ (showcase blocks)
18
18
  */
19
19
 
20
20
  import {
@@ -38,11 +38,6 @@ export type {
38
38
  } from './hooks';
39
39
 
40
40
  // Re-export calendar-specific utilities for advanced usage
41
- export {
42
- isSameDay,
43
- isDateInRange,
44
- getWeekNumber,
45
- formatAccessibleDate,
46
- } from './utils';
41
+ export {isSameDay, isDateInRange, getWeekNumber} from './utils';
47
42
 
48
43
  // Re-export theme styles for customization
@@ -215,9 +215,9 @@ export const dayCellStyles = stylex.create({
215
215
  content: '""',
216
216
  position: 'absolute',
217
217
  top: '-2px',
218
- right: '-2px',
218
+ insetInlineEnd: '-2px',
219
219
  bottom: '-2px',
220
- left: '-2px',
220
+ insetInlineStart: '-2px',
221
221
  },
222
222
  },
223
223
 
@@ -7,8 +7,6 @@
7
7
  * @position Shared utilities; used by Calendar, CalendarMonthGrid, CalendarDayCell
8
8
  */
9
9
 
10
- import {plainDateFormat, DATE_FORMAT_WITH_WEEKDAY} from '../utils/plainDate';
11
-
12
10
  export {
13
11
  type PlainDate,
14
12
  plainDateFromISO as parseISO,
@@ -17,12 +15,3 @@ export {
17
15
  plainDateIsInRange as isDateInRange,
18
16
  plainDateGetWeekNumber as getWeekNumber,
19
17
  } from '../utils/plainDate';
20
-
21
- export {plainDateFormat, DATE_FORMAT_WITH_WEEKDAY};
22
-
23
- /** @deprecated Use `plainDateFormat(pd, DATE_FORMAT_WITH_WEEKDAY)` instead. */
24
- export function formatAccessibleDate(
25
- ...args: Parameters<typeof plainDateFormat>
26
- ): string {
27
- return plainDateFormat(args[0], DATE_FORMAT_WITH_WEEKDAY);
28
- }
@@ -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: 'Card',
@@ -103,7 +103,7 @@ export const docs = {
103
103
  },
104
104
  };
105
105
 
106
- /** @type {import('../docs-types').ComponentDoc} */
106
+ /** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
107
107
  export const docsZh = {
108
108
  name: 'Card',
109
109
  displayName: 'Card',
@@ -151,7 +151,7 @@ export const docsZh = {
151
151
  },
152
152
  };
153
153
 
154
- /** @type {import('../docs-types').TranslationDoc} */
154
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
155
155
  export const docsDense = {
156
156
  description: 'bordered container for DISCRETE items; NOT the default layout tool. Most content doesn\'t need a card.',
157
157
  usage: {
package/src/Card/Card.tsx CHANGED
@@ -12,7 +12,7 @@
12
12
  * - /packages/core/src/Card/Card.doc.mjs (props table, features)
13
13
  * - /packages/core/src/Card/index.ts (exports if types change)
14
14
  * - /apps/storybook/stories/Card.stories.tsx (storybook stories)
15
- * - /packages/cli/templates/blocks/components/Card/ (showcase blocks)
15
+ * - /packages/cli/assets/templates/blocks/components/Card/ (showcase blocks)
16
16
  */
17
17
 
18
18
  import type {ReactNode} from 'react';
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
- /** @type {import('../docs-types').ComponentDoc} */
3
+ /** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
4
4
 
5
5
  export const docs = {
6
6
  name: 'Carousel',
@@ -12,6 +12,7 @@ export const docs = {
12
12
  'Carousel scrolls a row of items horizontally when they overflow the available width. Use it for card grids, image galleries, product lists, or any set of items that should be browsable without taking up the full page.',
13
13
  bestPractices: [
14
14
  {guidance: true, description: 'Enable scroll-snap when each item should land precisely at the start edge, like a gallery or product list.'},
15
+ {guidance: true, description: 'Reach for hasLoop on small, cyclable sets like a photo gallery, where wrapping past the last item back to the first feels natural.'},
15
16
  {guidance: true, description: 'Always provide an aria-label that describes what the carousel contains, like "Featured products" or "Team members".'},
16
17
  {guidance: true, description: 'Use a consistent gap and item width so the carousel looks intentional, not like content overflowing by accident.'},
17
18
  {guidance: true, description: 'Trust the built-in navigation: trackpad users can swipe horizontally, and mouse users can hold Shift while scrolling the wheel to move through items.'},
@@ -31,10 +32,12 @@ export const docs = {
31
32
  {name: 'gap', type: "0 | 0.5 | 1 | 1.5 | 2 | 3 | 4", description: 'Gap between items using the spacing token scale.', default: '1'},
32
33
  {name: 'hasButtons', type: 'boolean', description: 'Show prev/next navigation buttons when content is scrollable.', default: 'true'},
33
34
  {name: 'hasEdgeFade', type: 'boolean', description: 'Show a gradient edge-fade mask when content overflows, signalling that more items exist off-screen.', default: 'true'},
35
+ {name: 'hasLoop', type: 'boolean', description: 'Wrap-around scrolling: next at the end scrolls to the start, prev at the start scrolls to the end. Buttons stay visible at both edges. Only engages when content overflows.', default: 'false'},
34
36
  {name: 'hasSnap', type: 'boolean', description: 'Enable scroll-snap so each child snaps to the start edge.', default: 'false'},
35
37
  {name: 'padding', type: '0 | 0.5 | 1 | 1.5 | 2 | 3 | 4 | 5 | 6 | 8 | 10', description: 'Inline padding inside the scroll container, with matching scroll-padding so snap points align to the content edge.'},
36
38
  {name: 'aria-label', type: 'string', description: 'Accessible label for the carousel region.', default: "\'Carousel\'"},
37
39
  {name: 'ref', type: 'React.Ref<HTMLDivElement>', description: 'Ref forwarded to the root element.'},
40
+ {name: 'handleRef', type: 'React.Ref<CarouselHandle>', description: 'Imperative handle exposing scrollNext(), scrollPrev(), scrollTo(index), canScrollNext(), and canScrollPrev() for programmatic scroll control.'},
38
41
  {name: 'xstyle', type: 'StyleXStyles', description: 'StyleX styles for layout customization (margins, positioning, sizing). Must be a stylex.create() value.'},
39
42
  {name: 'className', type: 'string', description: 'CSS class name for the root element. Prefer xstyle for styling.'},
40
43
  {name: 'style', type: 'CSSProperties', description: 'Inline styles for the root element. Prefer xstyle.'},
@@ -56,7 +59,7 @@ export const docs = {
56
59
  },
57
60
  };
58
61
 
59
- /** @type {import('../docs-types').TranslationDoc} */
62
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
60
63
  export const docsZh = {
61
64
  usage: {
62
65
  description:
@@ -75,13 +78,15 @@ export const docsZh = {
75
78
  gap: '使用间距令牌比例的项目间距。',
76
79
  hasButtons: '内容可滚动时显示上一个/下一个导航按钮。',
77
80
  hasEdgeFade: '内容溢出时显示渐变边缘遮罩,提示屏幕外还有更多项目。',
81
+ hasLoop: '环绕滚动:在末尾按"下一个"回到开头,在开头按"上一个"跳到末尾。按钮在两端始终可见。仅在内容溢出时生效。',
78
82
  hasSnap: '启用滚动吸附,使每个子元素吸附到起始边缘。',
79
83
  padding: '滚动容器内的内联内边距,并设置匹配的 scroll-padding,使吸附点与内容边缘对齐。',
80
84
  'aria-label': '轮播区域的无障碍标签。',
85
+ handleRef: '命令式句柄,暴露 scrollNext()、scrollPrev()、scrollTo(index)、canScrollNext() 和 canScrollPrev() 以进行编程式滚动控制。',
81
86
  },
82
87
  };
83
88
 
84
- /** @type {import('../docs-types').TranslationDoc} */
89
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
85
90
  export const docsDense = {
86
91
  description: 'horizontal scroll container w/ fade edges, nav buttons, scroll-snap',
87
92
  usage: {
@@ -102,9 +107,11 @@ export const docsDense = {
102
107
  gap: 'item spacing via spacing token scale',
103
108
  hasButtons: 'prev/next buttons when content is scrollable',
104
109
  hasEdgeFade: 'gradient edge-fade mask on overflow',
110
+ hasLoop: 'wrap-around: next at end -> start, prev at start -> end; buttons stay visible; only when overflowing',
105
111
  hasSnap: 'scroll-snap; children snap to start edge',
106
112
  padding: 'inline padding; scroll-padding keeps snap points on content edge',
107
113
  'aria-label': 'accessible label for carousel region',
114
+ handleRef: 'imperative handle: scrollNext/scrollPrev/scrollTo(index)/canScrollNext/canScrollPrev',
108
115
  'data-testid': 'test selector for automated testing frameworks',
109
116
  },
110
117
  };
@@ -1,8 +1,9 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
3
  import {describe, it, expect, vi} from 'vitest';
4
+ import {createRef} from 'react';
4
5
  import {render, screen, fireEvent} from '@testing-library/react';
5
- import {Carousel} from './Carousel';
6
+ import {Carousel, type CarouselHandle} from './Carousel';
6
7
 
7
8
  // Mock ResizeObserver (not available in jsdom)
8
9
  class MockResizeObserver {
@@ -259,4 +260,234 @@ describe('Carousel', () => {
259
260
  expect(scrollBy).not.toHaveBeenCalled();
260
261
  });
261
262
  });
263
+
264
+ describe('hasLoop', () => {
265
+ // jsdom doesn't lay out elements, so we fake an overflowing scroll
266
+ // container, force it to rest at an edge, and capture scrollBy calls.
267
+ function getScroller() {
268
+ const region = screen.getByRole('region');
269
+ return region.firstElementChild as HTMLElement;
270
+ }
271
+
272
+ function makeOverflowing(el: HTMLElement, scrollLeft: number) {
273
+ Object.defineProperty(el, 'scrollWidth', {
274
+ value: 500,
275
+ configurable: true,
276
+ });
277
+ Object.defineProperty(el, 'clientWidth', {
278
+ value: 200,
279
+ configurable: true,
280
+ });
281
+ Object.defineProperty(el, 'scrollLeft', {
282
+ value: scrollLeft,
283
+ writable: true,
284
+ configurable: true,
285
+ });
286
+ // Drive the overflow hook's scroll listener so overflowStart/End settle.
287
+ fireEvent.scroll(el);
288
+ }
289
+
290
+ it('keeps both navigation buttons enabled at the edges when looping', () => {
291
+ render(
292
+ <Carousel hasLoop aria-label="Looping">
293
+ <div>Item 1</div>
294
+ <div>Item 2</div>
295
+ </Carousel>,
296
+ );
297
+ const scroller = getScroller();
298
+ // At the start edge: without loop the left button would be disabled.
299
+ makeOverflowing(scroller, 0);
300
+
301
+ expect(screen.getByLabelText('Scroll left')).toBeEnabled();
302
+ expect(screen.getByLabelText('Scroll right')).toBeEnabled();
303
+ });
304
+
305
+ it('wraps to the start when pressing next at the end', () => {
306
+ render(
307
+ <Carousel hasLoop aria-label="Looping">
308
+ <div>Item 1</div>
309
+ <div>Item 2</div>
310
+ </Carousel>,
311
+ );
312
+ const scroller = getScroller();
313
+ // At the end edge (scrolled fully right): overflowEnd is false.
314
+ makeOverflowing(scroller, 300);
315
+ const scrollBy = vi.fn();
316
+ scroller.scrollBy = scrollBy;
317
+
318
+ fireEvent.click(screen.getByLabelText('Scroll right'));
319
+
320
+ // Overshoots toward the start by the full scroll width; the browser
321
+ // clamps to scrollLeft 0.
322
+ expect(scrollBy).toHaveBeenCalledWith({
323
+ left: -500,
324
+ behavior: 'smooth',
325
+ });
326
+ });
327
+
328
+ it('wraps to the end when pressing prev at the start', () => {
329
+ render(
330
+ <Carousel hasLoop aria-label="Looping">
331
+ <div>Item 1</div>
332
+ <div>Item 2</div>
333
+ </Carousel>,
334
+ );
335
+ const scroller = getScroller();
336
+ makeOverflowing(scroller, 0);
337
+ const scrollBy = vi.fn();
338
+ scroller.scrollBy = scrollBy;
339
+
340
+ fireEvent.click(screen.getByLabelText('Scroll left'));
341
+
342
+ // Overshoots toward the end by the full scroll width.
343
+ expect(scrollBy).toHaveBeenCalledWith({
344
+ left: 500,
345
+ behavior: 'smooth',
346
+ });
347
+ });
348
+
349
+ it('does not wrap when content fits without overflowing', () => {
350
+ render(
351
+ <Carousel hasLoop aria-label="Looping">
352
+ <div>Only item</div>
353
+ </Carousel>,
354
+ );
355
+ const scroller = getScroller();
356
+ Object.defineProperty(scroller, 'scrollWidth', {
357
+ value: 200,
358
+ configurable: true,
359
+ });
360
+ Object.defineProperty(scroller, 'clientWidth', {
361
+ value: 200,
362
+ configurable: true,
363
+ });
364
+ Object.defineProperty(scroller, 'scrollLeft', {
365
+ value: 0,
366
+ writable: true,
367
+ configurable: true,
368
+ });
369
+ fireEvent.scroll(scroller);
370
+ const scrollBy = vi.fn();
371
+ scroller.scrollBy = scrollBy;
372
+
373
+ // Buttons are hidden/disabled with no overflow; invoking scroll is a
374
+ // no-op wrap-wise — a normal (non-wrap) scrollBy still runs, but there
375
+ // is nothing to wrap to, so the overshoot branch must not fire.
376
+ fireEvent.click(screen.getByLabelText('Scroll right'));
377
+
378
+ // Either not called (button disabled) or called with a normal delta —
379
+ // never the full-scrollWidth overshoot.
380
+ if (scrollBy.mock.calls.length > 0) {
381
+ expect(scrollBy).not.toHaveBeenCalledWith(
382
+ expect.objectContaining({left: 500}),
383
+ );
384
+ expect(scrollBy).not.toHaveBeenCalledWith(
385
+ expect.objectContaining({left: -500}),
386
+ );
387
+ }
388
+ });
389
+ });
390
+
391
+ describe('handleRef', () => {
392
+ function getScroller() {
393
+ const region = screen.getByRole('region');
394
+ return region.firstElementChild as HTMLElement;
395
+ }
396
+
397
+ function makeOverflowing(el: HTMLElement, scrollLeft: number) {
398
+ Object.defineProperty(el, 'scrollWidth', {
399
+ value: 500,
400
+ configurable: true,
401
+ });
402
+ Object.defineProperty(el, 'clientWidth', {
403
+ value: 200,
404
+ configurable: true,
405
+ });
406
+ Object.defineProperty(el, 'scrollLeft', {
407
+ value: scrollLeft,
408
+ writable: true,
409
+ configurable: true,
410
+ });
411
+ fireEvent.scroll(el);
412
+ }
413
+
414
+ it('exposes scrollNext/scrollPrev that drive the scroll container', () => {
415
+ const handle = createRef<CarouselHandle>();
416
+ render(
417
+ <Carousel handleRef={handle} aria-label="Handle">
418
+ <div>Item 1</div>
419
+ <div>Item 2</div>
420
+ </Carousel>,
421
+ );
422
+ const scroller = getScroller();
423
+ makeOverflowing(scroller, 100);
424
+ const scrollBy = vi.fn();
425
+ scroller.scrollBy = scrollBy;
426
+
427
+ handle.current?.scrollNext();
428
+ expect(scrollBy).toHaveBeenCalledTimes(1);
429
+ expect(scrollBy.mock.calls[0][0].left).toBeGreaterThan(0);
430
+
431
+ handle.current?.scrollPrev();
432
+ expect(scrollBy).toHaveBeenCalledTimes(2);
433
+ expect(scrollBy.mock.calls[1][0].left).toBeLessThan(0);
434
+ });
435
+
436
+ it('reports canScrollNext/canScrollPrev from live overflow state', () => {
437
+ const handle = createRef<CarouselHandle>();
438
+ render(
439
+ <Carousel handleRef={handle} aria-label="Handle">
440
+ <div>Item 1</div>
441
+ <div>Item 2</div>
442
+ </Carousel>,
443
+ );
444
+ const scroller = getScroller();
445
+
446
+ // At the start: can scroll toward the end, not the start.
447
+ makeOverflowing(scroller, 0);
448
+ expect(handle.current?.canScrollPrev()).toBe(false);
449
+ expect(handle.current?.canScrollNext()).toBe(true);
450
+
451
+ // Scroll into the middle: both directions available.
452
+ makeOverflowing(scroller, 150);
453
+ expect(handle.current?.canScrollPrev()).toBe(true);
454
+ expect(handle.current?.canScrollNext()).toBe(true);
455
+ });
456
+
457
+ it('reports both directions scrollable under hasLoop when overflowing', () => {
458
+ const handle = createRef<CarouselHandle>();
459
+ render(
460
+ <Carousel handleRef={handle} hasLoop aria-label="Handle">
461
+ <div>Item 1</div>
462
+ <div>Item 2</div>
463
+ </Carousel>,
464
+ );
465
+ const scroller = getScroller();
466
+ // Rest at the start edge — normally canScrollPrev would be false.
467
+ makeOverflowing(scroller, 0);
468
+
469
+ expect(handle.current?.canScrollPrev()).toBe(true);
470
+ expect(handle.current?.canScrollNext()).toBe(true);
471
+ });
472
+
473
+ it('scrollTo scrolls the container and clamps out-of-range indices', () => {
474
+ const handle = createRef<CarouselHandle>();
475
+ render(
476
+ <Carousel handleRef={handle} aria-label="Handle">
477
+ <div>Item 1</div>
478
+ <div>Item 2</div>
479
+ <div>Item 3</div>
480
+ </Carousel>,
481
+ );
482
+ const scroller = getScroller();
483
+ const scrollBy = vi.fn();
484
+ scroller.scrollBy = scrollBy;
485
+
486
+ // Out-of-range index is clamped to the last item — no throw, one call.
487
+ expect(() => handle.current?.scrollTo(99)).not.toThrow();
488
+ expect(scrollBy).toHaveBeenCalledTimes(1);
489
+ // Uses scrollBy (contained to the carousel), never scrollIntoView.
490
+ expect(scrollBy.mock.calls[0][0]).toHaveProperty('left');
491
+ });
492
+ });
262
493
  });