@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
@@ -13,7 +13,7 @@
13
13
  * - /packages/core/src/Dialog/Dialog.test.tsx (tests for new/changed behavior)
14
14
  * - /packages/core/src/Dialog/index.ts (exports if types change)
15
15
  * - /apps/storybook/stories/Dialog.stories.tsx (storybook stories)
16
- * - /packages/cli/templates/blocks/components/Dialog/ (showcase blocks)
16
+ * - /packages/cli/assets/templates/blocks/components/Dialog/ (showcase blocks)
17
17
  */
18
18
 
19
19
  import {
@@ -49,6 +49,7 @@ import {mergeProps, mergeRefs} from '../utils';
49
49
  import {devWarn} from '../utils/devWarning';
50
50
  import {DialogContext} from './DialogContext';
51
51
  import {themeProps} from '../utils/themeProps';
52
+ import type {DialogVariantMap} from './index';
52
53
 
53
54
  /**
54
55
  * Calculate a directional translate offset for dialog entry animation.
@@ -69,24 +70,6 @@ function getDialogDirection(
69
70
  };
70
71
  }
71
72
 
72
- /**
73
- * Extensible variant map for Dialog.
74
- *
75
- * Theme packages can add custom variants via TypeScript module augmentation:
76
- * @example
77
- * ```
78
- * declare module '@astryxdesign/core/Dialog' {
79
- * interface DialogVariantMap {
80
- * 'drawer': true;
81
- * }
82
- * }
83
- * ```
84
- */
85
- export interface DialogVariantMap {
86
- standard: true;
87
- fullscreen: true;
88
- }
89
-
90
73
  /**
91
74
  * Dialog variant type
92
75
  * - standard: Normal dialog with configurable width/height
@@ -104,14 +87,23 @@ export type DialogVariant = keyof DialogVariantMap;
104
87
  */
105
88
  export type DialogPurpose = 'required' | 'form' | 'info';
106
89
 
90
+ /** Block-axis offsets — always allowed, independent of inline direction. */
91
+ interface DialogBlockPosition {
92
+ top?: number | string;
93
+ bottom?: number | string;
94
+ }
95
+
107
96
  /**
108
- * Position configuration for static dialog positioning
97
+ * Static position for a dialog. The inline axis is logical XOR physical — the
98
+ * type forbids mixing the two, so a single dialog can't be positioned both ways:
99
+ * - Logical `start`/`end` map to `inset-inline-*` and mirror under RTL (preferred).
100
+ * Block-axis `top`/`bottom` may be combined with either.
109
101
  */
110
- export interface DialogPosition {
111
- bottom?: number | string;
112
- left?: number | string;
113
- right?: number | string;
114
- top?: number | string;
102
+ export interface DialogPosition extends DialogBlockPosition {
103
+ /** Logical inline-start offset (`inset-inline-start`); mirrors under RTL. */
104
+ start?: number | string;
105
+ /** Logical inline-end offset (`inset-inline-end`); mirrors under RTL. */
106
+ end?: number | string;
115
107
  }
116
108
 
117
109
  const enterDirectional = stylex.keyframes({
@@ -215,30 +207,52 @@ const dynamicStyles = stylex.create({
215
207
  maxHeight: typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight,
216
208
  }),
217
209
  position: (
218
- top: number | string | undefined,
219
- right: number | string | undefined,
220
- bottom: number | string | undefined,
221
- left: number | string | undefined,
210
+ top: string,
211
+ insetInlineStart: string,
212
+ insetInlineEnd: string,
213
+ bottom: string,
222
214
  ) => ({
223
- // When position is set, disable auto margin and use fixed positioning
215
+ // Assigns pre-resolved offsets from resolveDialogPositionOffsets(). This
216
+ // literal has no logic — StyleX can't analyze a helper, so the values
217
+ // (logical start/end → inset-inline-*, physical left/right, `auto`
218
+ // fallbacks) are computed at the call site and passed in.
224
219
  margin: 0,
225
- top: top !== undefined ? formatPosition(top) : 'auto',
226
- right: right !== undefined ? formatPosition(right) : 'auto',
227
- bottom: bottom !== undefined ? formatPosition(bottom) : 'auto',
228
- left: left !== undefined ? formatPosition(left) : 'auto',
220
+ top,
221
+ insetInlineStart,
222
+ insetInlineEnd,
223
+ bottom,
229
224
  }),
230
225
  });
231
226
 
232
227
  /**
233
228
  * Format position value - numbers become pixels, strings pass through, undefined becomes null
234
229
  */
235
- function formatPosition(value: number | string | undefined): string | null {
236
- if (value === undefined) {
237
- return null;
238
- }
230
+ function formatPosition(value: number | string): string {
239
231
  return typeof value === 'number' ? `${value}px` : value;
240
232
  }
241
233
 
234
+ /**
235
+ * Map a {@link DialogPosition} to resolved CSS offsets. Logical `start`/`end`
236
+ * become `inset-inline-*` (mirror under RTL); each unset offset falls back to
237
+ * `auto`.
238
+ *
239
+ * Not re-exported from the package; internal to Dialog. Directly unit-tested
240
+ * so the mapping is verified without StyleX class compilation.
241
+ *
242
+ * @see DialogPosition
243
+ */
244
+ export function resolveDialogPositionOffsets(position: DialogPosition) {
245
+ const {top, bottom, start, end} = position;
246
+
247
+ return {
248
+ top: top !== undefined ? formatPosition(top) : 'auto',
249
+ bottom: bottom !== undefined ? formatPosition(bottom) : 'auto',
250
+ // Logical offsets mirror under RTL (preferred replacements).
251
+ insetInlineStart: start !== undefined ? formatPosition(start) : 'auto',
252
+ insetInlineEnd: end !== undefined ? formatPosition(end) : 'auto',
253
+ };
254
+ }
255
+
242
256
  export interface DialogProps extends BaseProps<HTMLDialogElement> {
243
257
  /** Ref forwarded to the root element */
244
258
  ref?: React.Ref<HTMLDialogElement>;
@@ -632,12 +646,15 @@ export function Dialog({
632
646
  styles.backdrop,
633
647
  !isFullscreen && dynamicStyles.sizing(width, maxHeight),
634
648
  hasPosition &&
635
- dynamicStyles.position(
636
- position?.top,
637
- position?.right,
638
- position?.bottom,
639
- position?.left,
640
- ),
649
+ (() => {
650
+ const o = resolveDialogPositionOffsets(position);
651
+ return dynamicStyles.position(
652
+ o.top,
653
+ o.insetInlineStart,
654
+ o.insetInlineEnd,
655
+ o.bottom,
656
+ );
657
+ })(),
641
658
  isFullscreen && styles.fullscreen,
642
659
  xstyle,
643
660
  ),
@@ -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: 'DialogHeader',
@@ -13,7 +13,7 @@
13
13
  * - /packages/core/src/Dialog/DialogHeader.test.tsx
14
14
  * - /packages/core/src/Dialog/index.ts
15
15
  * - /apps/storybook/stories/Dialog.stories.tsx
16
- * - /packages/cli/templates/blocks/components/Dialog/ (showcase blocks)
16
+ * - /packages/cli/assets/templates/blocks/components/Dialog/ (showcase blocks)
17
17
  */
18
18
 
19
19
  import {useEffect, useRef, type ReactNode} from 'react';
@@ -11,11 +11,28 @@
11
11
  * SYNC: When modified, update this header and /packages/core/src/Dialog/Dialog.doc.mjs
12
12
  */
13
13
 
14
+ /**
15
+ * Extensible variant map for Dialog.
16
+ *
17
+ * Theme packages can add custom variants via TypeScript module augmentation:
18
+ * @example
19
+ * ```
20
+ * declare module '@astryxdesign/core/Dialog' {
21
+ * interface DialogVariantMap {
22
+ * 'drawer': true;
23
+ * }
24
+ * }
25
+ * ```
26
+ */
27
+ export interface DialogVariantMap {
28
+ standard: true;
29
+ fullscreen: true;
30
+ }
31
+
14
32
  export {Dialog} from './Dialog';
15
33
  export type {
16
34
  DialogProps,
17
35
  DialogVariant,
18
- DialogVariantMap,
19
36
  DialogPurpose,
20
37
  DialogPosition,
21
38
  } from './Dialog';
@@ -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: 'useImperativeDialog',
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- /** @type {import('../docs-types').ComponentDoc} */
5
+ /** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
6
6
 
7
7
  export const docs = {
8
8
  name: 'Divider',
@@ -56,7 +56,7 @@ export const docs = {
56
56
  },
57
57
  };
58
58
 
59
- /** @type {import('../docs-types').ComponentDoc} */
59
+ /** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
60
60
  export const docsZh = {
61
61
  name: 'Divider',
62
62
  displayName: 'Divider',
@@ -106,7 +106,7 @@ export const docsZh = {
106
106
  },
107
107
  };
108
108
 
109
- /** @type {import('../docs-types').TranslationDoc} */
109
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
110
110
  export const docsDense = {
111
111
  description: 'visual separator w/ optional label, using Astryx design tokens',
112
112
  usage: {
@@ -12,7 +12,7 @@
12
12
  * - /packages/core/src/Divider/Divider.doc.mjs
13
13
  * - /packages/core/src/Divider/Divider.test.tsx
14
14
  * - /apps/storybook/stories/Divider.stories.tsx
15
- * - /packages/cli/templates/blocks/components/Divider/ (showcase blocks)
15
+ * - /packages/cli/assets/templates/blocks/components/Divider/ (showcase blocks)
16
16
  */
17
17
 
18
18
  import {useId, type ReactNode} from 'react';
@@ -27,24 +27,7 @@ import {
27
27
  } from '../theme/tokens.stylex';
28
28
  import {mergeProps} from '../utils';
29
29
  import {themeProps} from '../utils/themeProps';
30
-
31
- /**
32
- * Extensible variant map for Divider.
33
- *
34
- * Theme packages can add custom variants via TypeScript module augmentation:
35
- * @example
36
- * ```
37
- * declare module '@astryxdesign/core/Divider' {
38
- * interface DividerVariantMap {
39
- * 'accent': true;
40
- * }
41
- * }
42
- * ```
43
- */
44
- export interface DividerVariantMap {
45
- subtle: true;
46
- strong: true;
47
- }
30
+ import type {DividerVariantMap} from './index';
48
31
 
49
32
  /**
50
33
  * Divider variant type. Extensible via module augmentation of DividerVariantMap.
@@ -11,9 +11,23 @@
11
11
  * SYNC: When modified, update /packages/core/src/Divider/Divider.doc.mjs
12
12
  */
13
13
 
14
+ /**
15
+ * Extensible variant map for Divider.
16
+ *
17
+ * Theme packages can add custom variants via TypeScript module augmentation:
18
+ * @example
19
+ * ```
20
+ * declare module '@astryxdesign/core/Divider' {
21
+ * interface DividerVariantMap {
22
+ * 'accent': true;
23
+ * }
24
+ * }
25
+ * ```
26
+ */
27
+ export interface DividerVariantMap {
28
+ subtle: true;
29
+ strong: true;
30
+ }
31
+
14
32
  export {Divider} from './Divider';
15
- export type {
16
- DividerProps,
17
- DividerVariant,
18
- DividerVariantMap,
19
- } from './Divider';
33
+ export type {DividerProps, DividerVariant} from './Divider';
@@ -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: 'DropdownMenu',
@@ -26,15 +26,18 @@ export const docs = {
26
26
  {className: 'astryx-dropdown-menu'},
27
27
  {className: 'astryx-dropdown-menu-item', visualProps: ['size']},
28
28
  {
29
- className: 'astryx-dropdown-menu-checkbox',
29
+ className: 'astryx-dropdown-menu-radio',
30
30
  visualProps: ['size'],
31
31
  states: ['checked', 'disabled'],
32
32
  },
33
33
  {
34
- className: 'astryx-dropdown-menu-radio',
34
+ className: 'astryx-dropdown-menu-radio-dot',
35
35
  visualProps: ['size'],
36
36
  states: ['checked', 'disabled'],
37
37
  },
38
+ {className: 'astryx-dropdown-menu-section-heading'},
39
+ {className: 'astryx-dropdown-menu-divider'},
40
+ {className: 'astryx-dropdown-menu-indicator-icon'},
38
41
  ],
39
42
  vars: [
40
43
  {name: '--_dropdown-menu-radius', description: 'Border radius of the menu popup', default: 'var(--radius-element)', private: true},
@@ -74,6 +77,18 @@ export const docs = {
74
77
  type: 'number | string',
75
78
  description: 'Custom menu width; defaults to matching the trigger button width.',
76
79
  },
80
+ {
81
+ name: 'placement',
82
+ type: "'above' | 'below' | 'start' | 'end'",
83
+ description: "Position placement relative to the trigger. Logical: start/end resolve against the menu's own inherited direction (RTL mirrors).",
84
+ default: "'below'",
85
+ },
86
+ {
87
+ name: 'alignment',
88
+ type: "'start' | 'center' | 'end'",
89
+ description: "Alignment along the placement axis. Logical: start/end follow the menu's own inherited direction (RTL mirrors).",
90
+ default: "'start'",
91
+ },
77
92
  {
78
93
  name: 'onClick',
79
94
  type: '() => void',
@@ -104,7 +119,7 @@ export const docs = {
104
119
  },
105
120
  };
106
121
 
107
- /** @type {import('../docs-types').TranslationDoc} */
122
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
108
123
  export const docsZh = {
109
124
  usage: {
110
125
  description: 'A dropdown menu that displays a list of actionable items in a popup triggered by a button. Use to present action options as a next step in a process, or to offer contextual actions without cluttering the interface.',
@@ -117,7 +132,7 @@ export const docsZh = {
117
132
  },
118
133
  };
119
134
 
120
- /** @type {import('../docs-types').TranslationDoc} */
135
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
121
136
  export const docsDense = {
122
137
  description: 'dropdown menu for actionable items in popup',
123
138
  usage: {
@@ -109,6 +109,22 @@ describe('DropdownMenu', () => {
109
109
  );
110
110
  });
111
111
 
112
+ it('supports explicit menu alignment', () => {
113
+ render(
114
+ <DropdownMenu
115
+ button={{label: 'Actions'}}
116
+ alignment="end"
117
+ items={[{label: 'Item 1'}]}
118
+ />,
119
+ );
120
+ const popover = screen
121
+ .getByRole('menu', {hidden: true})
122
+ .closest('[popover]');
123
+ expect(popover?.getAttribute('style')).toContain(
124
+ 'position-area: self-block-end span-self-inline-start',
125
+ );
126
+ });
127
+
112
128
  it('emits the direction-independent logical mapping under an RTL ancestor (#3389)', async () => {
113
129
  // The self-* position-area keywords resolve against the popover's own
114
130
  // inherited direction in the browser, so RTL emits the same string as
@@ -148,6 +164,77 @@ describe('DropdownMenu', () => {
148
164
  expect(HTMLElement.prototype.showPopover).toHaveBeenCalled();
149
165
  });
150
166
 
167
+ it('calls onOpenChange for uncontrolled native open and close transitions', async () => {
168
+ const user = userEvent.setup();
169
+ const handleOpenChange = vi.fn();
170
+ render(
171
+ <DropdownMenu
172
+ button={{label: 'Actions'}}
173
+ items={[{label: 'Item 1'}]}
174
+ onOpenChange={handleOpenChange}
175
+ />,
176
+ );
177
+
178
+ await user.click(screen.getByRole('button', {name: /Actions/}));
179
+ expect(handleOpenChange).toHaveBeenCalledWith(true);
180
+
181
+ handleOpenChange.mockClear();
182
+ const popoverEl = screen
183
+ .getByRole('menu', {hidden: true})
184
+ .closest('[popover]');
185
+ expect(popoverEl).not.toBeNull();
186
+ const toggleEvent = new Event('toggle');
187
+ Object.defineProperty(toggleEvent, 'newState', {value: 'closed'});
188
+ fireEvent(popoverEl as HTMLElement, toggleEvent);
189
+
190
+ expect(handleOpenChange).toHaveBeenCalledWith(false);
191
+ expect(screen.getByRole('button', {name: /Actions/})).toHaveAttribute(
192
+ 'aria-expanded',
193
+ 'false',
194
+ );
195
+ });
196
+
197
+ it('restores focus to the trigger after native light dismiss', async () => {
198
+ const raf = vi
199
+ .spyOn(window, 'requestAnimationFrame')
200
+ .mockImplementation(callback => {
201
+ callback(0);
202
+ return 0;
203
+ });
204
+
205
+ try {
206
+ const user = userEvent.setup();
207
+ render(
208
+ <DropdownMenu
209
+ button={{label: 'Actions'}}
210
+ items={[{label: 'Edit'}, {label: 'Delete'}]}
211
+ />,
212
+ );
213
+
214
+ const trigger = screen.getByRole('button', {name: /Actions/});
215
+ trigger.focus();
216
+ await user.click(trigger);
217
+ expect(
218
+ screen.getByRole('menuitem', {name: 'Edit', hidden: true}),
219
+ ).toHaveFocus();
220
+
221
+ const popoverEl = screen
222
+ .getByRole('menu', {hidden: true})
223
+ .closest('[popover]');
224
+ expect(popoverEl).not.toBeNull();
225
+ popoverEl?.addEventListener('toggle', () => {
226
+ trigger.blur();
227
+ });
228
+ const toggleEvent = new Event('toggle');
229
+ Object.defineProperty(toggleEvent, 'newState', {value: 'closed'});
230
+ fireEvent(popoverEl as HTMLElement, toggleEvent);
231
+
232
+ expect(trigger).toHaveFocus();
233
+ } finally {
234
+ raf.mockRestore();
235
+ }
236
+ });
237
+
151
238
  it('closes the menu when Tab is pressed inside it (APG menu-button)', async () => {
152
239
  const user = userEvent.setup();
153
240
  render(
@@ -415,6 +502,41 @@ describe('DropdownMenu dividers', () => {
415
502
  });
416
503
  });
417
504
 
505
+ describe('DropdownMenu theming slots', () => {
506
+ it('exposes a themeable slot on the section heading', () => {
507
+ render(
508
+ <DropdownMenu
509
+ button={{label: 'Actions'}}
510
+ items={[
511
+ {
512
+ type: 'section',
513
+ title: 'File Actions',
514
+ items: [{label: 'New'}],
515
+ },
516
+ ]}
517
+ />,
518
+ );
519
+
520
+ expect(screen.getByText('File Actions')).toHaveClass(
521
+ 'astryx-dropdown-menu-section-heading',
522
+ );
523
+ });
524
+
525
+ it('exposes a themeable slot on the menu divider', () => {
526
+ render(
527
+ <DropdownMenu
528
+ button={{label: 'Actions'}}
529
+ items={[{label: 'Edit'}, {type: 'divider'}, {label: 'Delete'}]}
530
+ />,
531
+ );
532
+
533
+ const divider = screen.getByRole('separator', {hidden: true});
534
+ expect(divider).toHaveClass('astryx-dropdown-menu-divider');
535
+ // Still carries the base Divider slot so global divider theming applies too.
536
+ expect(divider).toHaveClass('astryx-divider');
537
+ });
538
+ });
539
+
418
540
  describe('DropdownMenu button customization', () => {
419
541
  it('renders with different button variants', () => {
420
542
  const {rerender} = render(
@@ -19,7 +19,7 @@
19
19
  * - /packages/core/src/DropdownMenu/DropdownMenu.test.tsx
20
20
  * - /packages/core/src/DropdownMenu/index.ts
21
21
  * - /apps/storybook/stories/DropdownMenu.stories.tsx
22
- * - /packages/cli/templates/blocks/components/DropdownMenu/ (showcase blocks)
22
+ * - /packages/cli/assets/templates/blocks/components/DropdownMenu/ (showcase blocks)
23
23
  */
24
24
 
25
25
  import React, {
@@ -50,7 +50,7 @@ import {
50
50
  import {useListFocus} from '../hooks/useListFocus';
51
51
  import {useTypeahead} from '../hooks/useTypeahead';
52
52
  import {layerAnimations} from '../Layer/layerAnimations.stylex';
53
- import type {LayerPlacement} from '../Layer/useLayer';
53
+ import type {LayerAlignment, LayerPlacement} from '../Layer/useLayer';
54
54
  import {
55
55
  spacingVars,
56
56
  radiusVars,
@@ -145,6 +145,13 @@ interface DropdownMenuBaseProps extends BaseProps {
145
145
  */
146
146
  placement?: LayerPlacement;
147
147
 
148
+ /**
149
+ * Alignment along the placement axis.
150
+ * Uses the same alignment values as other Astryx layer-based components.
151
+ * @default 'start'
152
+ */
153
+ alignment?: LayerAlignment;
154
+
148
155
  'data-testid'?: string;
149
156
  }
150
157
 
@@ -198,6 +205,7 @@ export function DropdownMenu({
198
205
  onClick,
199
206
  hasChevron = true,
200
207
  placement = 'below',
208
+ alignment = 'start',
201
209
  className,
202
210
  style,
203
211
  xstyle,
@@ -235,28 +243,22 @@ export function DropdownMenu({
235
243
  // Close menu + return focus to trigger
236
244
  const handleLayerHide = useCallback(() => {
237
245
  lastHideTimeRef.current = Date.now();
238
- if (isControlled) {
239
- onOpenChange?.(false);
240
- } else {
246
+ onOpenChange?.(false);
247
+ if (!isControlled) {
241
248
  setInternalIsOpen(false);
242
249
  }
243
250
  buttonRef.current?.focus();
244
251
  }, [isControlled, onOpenChange]);
245
252
 
246
- // Track whether to focus the first item when the menu opens
253
+ // Defer item focus until the layer has committed open, so focus restore
254
+ // captures the trigger instead of the first menu item.
247
255
  const shouldFocusOnOpenRef = useRef(false);
248
256
 
249
257
  const handleLayerShow = useCallback(() => {
250
- if (isControlled) {
251
- onOpenChange?.(true);
252
- } else {
258
+ onOpenChange?.(true);
259
+ if (!isControlled) {
253
260
  setInternalIsOpen(true);
254
261
  }
255
- if (shouldFocusOnOpenRef.current) {
256
- shouldFocusOnOpenRef.current = false;
257
- // focusFirst is called via openAndFocus below — defer to rAF
258
- // so the popover content is rendered before we query for items
259
- }
260
262
  }, [isControlled, onOpenChange]);
261
263
 
262
264
  const popover = usePopover({
@@ -305,17 +307,26 @@ export function DropdownMenu({
305
307
  ),
306
308
  });
307
309
 
308
- // Sync controlled open state → popover, and focus first item on open
310
+ // Sync controlled open state → popover.
309
311
  useEffect(() => {
310
312
  if (isControlled) {
311
313
  if (controlledIsOpen && !popover.isOpen) {
314
+ shouldFocusOnOpenRef.current = true;
312
315
  popover.show();
313
- requestAnimationFrame(() => focusFirst());
314
316
  } else if (!controlledIsOpen && popover.isOpen) {
315
317
  popover.hide();
316
318
  }
317
319
  }
318
- }, [controlledIsOpen, isControlled, popover, focusFirst]);
320
+ }, [controlledIsOpen, isControlled, popover]);
321
+
322
+ // Move focus into the menu only after the layer has committed open.
323
+ useEffect(() => {
324
+ if (!popover.isOpen || !shouldFocusOnOpenRef.current) {
325
+ return;
326
+ }
327
+ shouldFocusOnOpenRef.current = false;
328
+ requestAnimationFrame(() => focusFirst());
329
+ }, [popover.isOpen, focusFirst]);
319
330
 
320
331
  // Extend useListFocus with Enter/Space activation + typeahead
321
332
  const listKeyDown = useCallback(
@@ -356,9 +367,9 @@ export function DropdownMenu({
356
367
  );
357
368
 
358
369
  const openAndFocus = useCallback(() => {
370
+ shouldFocusOnOpenRef.current = true;
359
371
  popover.show();
360
- requestAnimationFrame(() => focusFirst());
361
- }, [popover, focusFirst]);
372
+ }, [popover]);
362
373
 
363
374
  const handleButtonClick = useCallback(() => {
364
375
  // If the menu was just closed by light dismiss (e.g. iOS Safari fires
@@ -474,7 +485,7 @@ export function DropdownMenu({
474
485
  </div>,
475
486
  {
476
487
  placement,
477
- alignment: 'start',
488
+ alignment,
478
489
  xstyle: [popoverXstyle, popoverGapStyle, layerAnimations[placement]],
479
490
  },
480
491
  )}
@@ -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: 'DropdownMenuCheckboxItem',