@astryxdesign/core 0.2.0-canary.8d64648 → 0.2.0-canary.8dfd7cf

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 (872) hide show
  1. package/dist/AlertDialog/AlertDialog.d.ts +1 -1
  2. package/dist/AlertDialog/AlertDialog.js +1 -1
  3. package/dist/AppShell/AppShell.d.ts +2 -20
  4. package/dist/AppShell/AppShell.d.ts.map +1 -1
  5. package/dist/AppShell/AppShell.js +1 -14
  6. package/dist/AppShell/index.d.ts +20 -1
  7. package/dist/AppShell/index.d.ts.map +1 -1
  8. package/dist/AppShell/index.js +14 -0
  9. package/dist/AspectRatio/AspectRatio.d.ts +1 -1
  10. package/dist/AspectRatio/AspectRatio.js +1 -1
  11. package/dist/Avatar/Avatar.d.ts +1 -1
  12. package/dist/Avatar/Avatar.d.ts.map +1 -1
  13. package/dist/Avatar/Avatar.js +4 -4
  14. package/dist/Avatar/AvatarStatusDot.d.ts +2 -26
  15. package/dist/Avatar/AvatarStatusDot.d.ts.map +1 -1
  16. package/dist/Avatar/AvatarStatusDot.js +1 -22
  17. package/dist/Avatar/index.d.ts +26 -1
  18. package/dist/Avatar/index.d.ts.map +1 -1
  19. package/dist/Avatar/index.js +21 -0
  20. package/dist/AvatarGroup/AvatarGroup.d.ts +1 -1
  21. package/dist/AvatarGroup/AvatarGroup.js +1 -1
  22. package/dist/AvatarGroup/AvatarGroupOverflow.d.ts +1 -1
  23. package/dist/AvatarGroup/AvatarGroupOverflow.js +1 -1
  24. package/dist/Badge/Badge.d.ts +2 -30
  25. package/dist/Badge/Badge.d.ts.map +1 -1
  26. package/dist/Badge/Badge.js +2 -17
  27. package/dist/Badge/index.d.ts +31 -2
  28. package/dist/Badge/index.d.ts.map +1 -1
  29. package/dist/Badge/index.js +15 -1
  30. package/dist/Banner/Banner.d.ts +2 -37
  31. package/dist/Banner/Banner.d.ts.map +1 -1
  32. package/dist/Banner/Banner.js +6 -34
  33. package/dist/Banner/index.d.ts +37 -1
  34. package/dist/Banner/index.d.ts.map +1 -1
  35. package/dist/Banner/index.js +27 -0
  36. package/dist/Blockquote/Blockquote.d.ts +1 -1
  37. package/dist/Blockquote/Blockquote.js +1 -1
  38. package/dist/Breadcrumbs/BreadcrumbItem.d.ts +1 -1
  39. package/dist/Breadcrumbs/BreadcrumbItem.js +4 -3
  40. package/dist/Breadcrumbs/Breadcrumbs.d.ts +2 -18
  41. package/dist/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  42. package/dist/Breadcrumbs/Breadcrumbs.js +1 -15
  43. package/dist/Breadcrumbs/index.d.ts +18 -1
  44. package/dist/Breadcrumbs/index.d.ts.map +1 -1
  45. package/dist/Breadcrumbs/index.js +14 -0
  46. package/dist/Button/Button.d.ts +2 -20
  47. package/dist/Button/Button.d.ts.map +1 -1
  48. package/dist/Button/Button.js +2 -17
  49. package/dist/Button/index.d.ts +21 -3
  50. package/dist/Button/index.d.ts.map +1 -1
  51. package/dist/Button/index.js +15 -1
  52. package/dist/ButtonGroup/ButtonGroup.d.ts +1 -1
  53. package/dist/ButtonGroup/ButtonGroup.js +1 -1
  54. package/dist/Calendar/Calendar.js +1 -1
  55. package/dist/Calendar/styles.d.ts +2 -2
  56. package/dist/Calendar/styles.js +2 -2
  57. package/dist/Card/Card.d.ts +1 -1
  58. package/dist/Card/Card.js +1 -1
  59. package/dist/Carousel/Carousel.d.ts +1 -1
  60. package/dist/Carousel/Carousel.js +1 -1
  61. package/dist/Center/Center.d.ts +21 -4
  62. package/dist/Center/Center.d.ts.map +1 -1
  63. package/dist/Center/Center.js +11 -3
  64. package/dist/Chat/ChatComposer.d.ts +1 -1
  65. package/dist/Chat/ChatComposer.js +9 -9
  66. package/dist/Chat/ChatComposerDrawer.d.ts +1 -1
  67. package/dist/Chat/ChatComposerDrawer.js +3 -3
  68. package/dist/Chat/ChatComposerInput.d.ts +1 -1
  69. package/dist/Chat/ChatComposerInput.js +1 -1
  70. package/dist/Chat/ChatDictationButton.d.ts +1 -1
  71. package/dist/Chat/ChatDictationButton.js +1 -1
  72. package/dist/Chat/ChatLayout.d.ts +1 -1
  73. package/dist/Chat/ChatLayout.js +1 -1
  74. package/dist/Chat/ChatLayoutScrollButton.d.ts +1 -1
  75. package/dist/Chat/ChatLayoutScrollButton.js +1 -1
  76. package/dist/Chat/ChatMessage.d.ts +1 -1
  77. package/dist/Chat/ChatMessage.js +1 -1
  78. package/dist/Chat/ChatMessageBubble.d.ts +1 -1
  79. package/dist/Chat/ChatMessageBubble.js +1 -1
  80. package/dist/Chat/ChatMessageList.d.ts +1 -1
  81. package/dist/Chat/ChatMessageList.js +1 -1
  82. package/dist/Chat/ChatSendButton.d.ts.map +1 -1
  83. package/dist/Chat/ChatSendButton.js +4 -2
  84. package/dist/Chat/ChatSystemMessage.d.ts +1 -1
  85. package/dist/Chat/ChatSystemMessage.js +1 -1
  86. package/dist/Chat/ChatTokenizedText.d.ts +1 -1
  87. package/dist/Chat/ChatTokenizedText.js +1 -1
  88. package/dist/CheckboxInput/CheckboxInput.d.ts +1 -1
  89. package/dist/CheckboxInput/CheckboxInput.js +1 -1
  90. package/dist/CheckboxList/CheckboxList.d.ts +1 -1
  91. package/dist/CheckboxList/CheckboxList.js +1 -1
  92. package/dist/CheckboxList/CheckboxListItem.d.ts +1 -1
  93. package/dist/CheckboxList/CheckboxListItem.js +1 -1
  94. package/dist/Citation/Citation.d.ts +1 -1
  95. package/dist/Citation/Citation.js +1 -1
  96. package/dist/ClickableCard/ClickableCard.d.ts +3 -3
  97. package/dist/ClickableCard/ClickableCard.js +3 -3
  98. package/dist/Code/Code.d.ts +2 -2
  99. package/dist/Code/Code.js +2 -2
  100. package/dist/Collapsible/Collapsible.d.ts +1 -1
  101. package/dist/Collapsible/Collapsible.js +3 -3
  102. package/dist/Collapsible/CollapsibleGroup.d.ts +1 -1
  103. package/dist/Collapsible/CollapsibleGroup.js +1 -1
  104. package/dist/Collapsible/CollapsibleGroupContext.js +1 -1
  105. package/dist/CommandPalette/CommandPalette.d.ts +1 -1
  106. package/dist/CommandPalette/CommandPalette.js +1 -1
  107. package/dist/CommandPalette/CommandPaletteEmpty.js +1 -1
  108. package/dist/CommandPalette/CommandPaletteFooter.js +1 -1
  109. package/dist/CommandPalette/CommandPaletteGroup.js +1 -1
  110. package/dist/CommandPalette/CommandPaletteInput.d.ts +2 -2
  111. package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
  112. package/dist/CommandPalette/CommandPaletteInput.js +4 -2
  113. package/dist/CommandPalette/CommandPaletteItem.d.ts +1 -1
  114. package/dist/CommandPalette/CommandPaletteItem.js +1 -1
  115. package/dist/CommandPalette/CommandPaletteList.js +1 -1
  116. package/dist/ContextMenu/ContextMenu.d.ts +2 -2
  117. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  118. package/dist/ContextMenu/ContextMenu.js +14 -5
  119. package/dist/DateInput/DateInput.js +1 -1
  120. package/dist/DateRangeInput/DateRangeInput.js +1 -1
  121. package/dist/DateTimeInput/DateTimeInput.js +1 -1
  122. package/dist/Dialog/Dialog.d.ts +46 -23
  123. package/dist/Dialog/Dialog.d.ts.map +1 -1
  124. package/dist/Dialog/Dialog.js +59 -31
  125. package/dist/Dialog/DialogHeader.d.ts +1 -1
  126. package/dist/Dialog/DialogHeader.js +1 -1
  127. package/dist/Dialog/index.d.ts +18 -1
  128. package/dist/Dialog/index.d.ts.map +1 -1
  129. package/dist/Dialog/index.js +14 -0
  130. package/dist/Divider/Divider.d.ts +2 -18
  131. package/dist/Divider/Divider.d.ts.map +1 -1
  132. package/dist/Divider/Divider.js +1 -15
  133. package/dist/Divider/index.d.ts +18 -1
  134. package/dist/Divider/index.d.ts.map +1 -1
  135. package/dist/Divider/index.js +14 -0
  136. package/dist/DropdownMenu/DropdownMenu.d.ts +9 -3
  137. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  138. package/dist/DropdownMenu/DropdownMenu.js +23 -19
  139. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +18 -12
  140. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
  141. package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +38 -63
  142. package/dist/DropdownMenu/DropdownMenuItem.d.ts +1 -1
  143. package/dist/DropdownMenu/DropdownMenuItem.js +1 -1
  144. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
  145. package/dist/DropdownMenu/DropdownMenuRadioItem.js +5 -1
  146. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +1 -1
  147. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
  148. package/dist/DropdownMenu/DropdownMenuSubMenu.js +5 -5
  149. package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
  150. package/dist/DropdownMenu/renderDropdownItems.js +6 -4
  151. package/dist/EmptyState/EmptyState.d.ts +1 -1
  152. package/dist/EmptyState/EmptyState.js +1 -1
  153. package/dist/Field/Field.d.ts +1 -1
  154. package/dist/Field/Field.js +1 -1
  155. package/dist/Field/FieldLabel.d.ts +2 -2
  156. package/dist/Field/FieldLabel.d.ts.map +1 -1
  157. package/dist/Field/FieldLabel.js +41 -2
  158. package/dist/FieldStatus/FieldStatus.d.ts +1 -18
  159. package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
  160. package/dist/FieldStatus/FieldStatus.js +1 -15
  161. package/dist/FieldStatus/index.d.ts +19 -1
  162. package/dist/FieldStatus/index.d.ts.map +1 -1
  163. package/dist/FieldStatus/index.js +14 -0
  164. package/dist/FileInput/FileInput.js +1 -1
  165. package/dist/FormLayout/FormLayout.d.ts +1 -1
  166. package/dist/FormLayout/FormLayout.d.ts.map +1 -1
  167. package/dist/FormLayout/FormLayout.js +1 -1
  168. package/dist/Grid/Grid.d.ts +1 -1
  169. package/dist/Grid/Grid.js +1 -1
  170. package/dist/Grid/GridSpan.d.ts +1 -1
  171. package/dist/Grid/GridSpan.js +1 -1
  172. package/dist/HStack/HStack.d.ts +1 -1
  173. package/dist/HStack/HStack.js +1 -1
  174. package/dist/Heading/Heading.d.ts +2 -2
  175. package/dist/Heading/Heading.js +2 -2
  176. package/dist/HoverCard/HoverCard.d.ts +1 -1
  177. package/dist/HoverCard/HoverCard.js +1 -1
  178. package/dist/Icon/Icon.d.ts +1 -1
  179. package/dist/Icon/Icon.d.ts.map +1 -1
  180. package/dist/Icon/Icon.js +4 -2
  181. package/dist/Icon/globalIconRegistry.d.ts +6 -4
  182. package/dist/Icon/globalIconRegistry.d.ts.map +1 -1
  183. package/dist/Icon/globalIconRegistry.js +25 -6
  184. package/dist/Icon/index.d.ts +3 -2
  185. package/dist/Icon/index.d.ts.map +1 -1
  186. package/dist/Icon/index.js +1 -0
  187. package/dist/Icon/useIcon.d.ts +14 -0
  188. package/dist/Icon/useIcon.d.ts.map +1 -0
  189. package/dist/Icon/useIcon.js +21 -0
  190. package/dist/IconButton/IconButton.d.ts +1 -1
  191. package/dist/IconButton/IconButton.js +1 -1
  192. package/dist/InputGroup/InputGroup.d.ts +1 -1
  193. package/dist/InputGroup/InputGroup.js +1 -1
  194. package/dist/InputGroup/InputGroupText.d.ts +1 -1
  195. package/dist/InputGroup/InputGroupText.js +1 -1
  196. package/dist/Item/Item.d.ts +1 -1
  197. package/dist/Item/Item.js +1 -1
  198. package/dist/Kbd/Kbd.d.ts +1 -1
  199. package/dist/Kbd/Kbd.js +1 -1
  200. package/dist/Layout/Layout.d.ts +1 -1
  201. package/dist/Layout/Layout.js +1 -1
  202. package/dist/Layout/LayoutContent.d.ts +1 -1
  203. package/dist/Layout/LayoutContent.js +1 -1
  204. package/dist/Layout/LayoutFooter.d.ts +1 -1
  205. package/dist/Layout/LayoutFooter.js +1 -1
  206. package/dist/Layout/LayoutHeader.d.ts +1 -1
  207. package/dist/Layout/LayoutHeader.js +1 -1
  208. package/dist/Layout/LayoutPanel.d.ts +1 -1
  209. package/dist/Layout/LayoutPanel.js +1 -1
  210. package/dist/Lightbox/Lightbox.d.ts +1 -1
  211. package/dist/Lightbox/Lightbox.js +1 -1
  212. package/dist/Link/Link.d.ts +1 -1
  213. package/dist/Link/Link.js +1 -1
  214. package/dist/Link/LinkProvider.d.ts +2 -2
  215. package/dist/Link/LinkProvider.js +2 -2
  216. package/dist/List/List.d.ts +1 -1
  217. package/dist/List/List.js +1 -1
  218. package/dist/List/ListItem.d.ts +1 -1
  219. package/dist/List/ListItem.js +1 -1
  220. package/dist/Markdown/Markdown.js +4 -4
  221. package/dist/MetadataList/MetadataList.d.ts +1 -1
  222. package/dist/MetadataList/MetadataList.js +1 -1
  223. package/dist/MetadataList/MetadataListItem.d.ts +1 -1
  224. package/dist/MetadataList/MetadataListItem.js +1 -1
  225. package/dist/MobileNav/MobileNav.d.ts +1 -1
  226. package/dist/MobileNav/MobileNav.js +1 -1
  227. package/dist/MoreMenu/MoreMenu.d.ts +1 -1
  228. package/dist/MoreMenu/MoreMenu.js +3 -3
  229. package/dist/MultiSelector/MultiSelector.d.ts +1 -1
  230. package/dist/MultiSelector/MultiSelector.js +1 -1
  231. package/dist/NavIcon/NavIcon.d.ts +1 -1
  232. package/dist/NavIcon/NavIcon.js +1 -1
  233. package/dist/NumberInput/NumberInput.d.ts +1 -1
  234. package/dist/NumberInput/NumberInput.js +1 -1
  235. package/dist/Outline/Outline.js +1 -1
  236. package/dist/OverflowList/OverflowList.d.ts +1 -1
  237. package/dist/OverflowList/OverflowList.js +1 -1
  238. package/dist/Pagination/Pagination.d.ts +1 -20
  239. package/dist/Pagination/Pagination.d.ts.map +1 -1
  240. package/dist/Pagination/Pagination.js +1 -15
  241. package/dist/Pagination/index.d.ts +21 -1
  242. package/dist/Pagination/index.d.ts.map +1 -1
  243. package/dist/Pagination/index.js +14 -0
  244. package/dist/Popover/Popover.d.ts +20 -3
  245. package/dist/Popover/Popover.d.ts.map +1 -1
  246. package/dist/Popover/Popover.js +5 -1
  247. package/dist/Popover/usePopover.d.ts.map +1 -1
  248. package/dist/Popover/usePopover.js +14 -3
  249. package/dist/PowerSearch/PowerSearch.d.ts +1 -1
  250. package/dist/PowerSearch/PowerSearch.js +1 -1
  251. package/dist/ProgressBar/ProgressBar.d.ts +1 -20
  252. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  253. package/dist/ProgressBar/ProgressBar.js +1 -15
  254. package/dist/ProgressBar/index.d.ts +21 -1
  255. package/dist/ProgressBar/index.d.ts.map +1 -1
  256. package/dist/ProgressBar/index.js +14 -0
  257. package/dist/RadioList/RadioList.d.ts +1 -1
  258. package/dist/RadioList/RadioList.js +1 -1
  259. package/dist/RadioList/RadioListItem.d.ts +1 -1
  260. package/dist/RadioList/RadioListItem.js +1 -1
  261. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  262. package/dist/Resizable/ResizeHandle.js +3 -10
  263. package/dist/Section/Section.d.ts +2 -19
  264. package/dist/Section/Section.d.ts.map +1 -1
  265. package/dist/Section/Section.js +1 -15
  266. package/dist/Section/index.d.ts +19 -1
  267. package/dist/Section/index.d.ts.map +1 -1
  268. package/dist/Section/index.js +14 -0
  269. package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
  270. package/dist/SegmentedControl/SegmentedControl.js +1 -1
  271. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  272. package/dist/SegmentedControl/SegmentedControlItem.js +1 -1
  273. package/dist/SelectableCard/SelectableCard.d.ts +4 -3
  274. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  275. package/dist/SelectableCard/SelectableCard.js +15 -3
  276. package/dist/Selector/Selector.d.ts +1 -1
  277. package/dist/Selector/Selector.js +1 -1
  278. package/dist/SideNav/SideNav.d.ts +1 -1
  279. package/dist/SideNav/SideNav.js +1 -1
  280. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  281. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  282. package/dist/SideNav/SideNavCollapseButton.js +4 -3
  283. package/dist/SideNav/SideNavHeading.d.ts +1 -1
  284. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  285. package/dist/SideNav/SideNavHeading.js +8 -7
  286. package/dist/SideNav/SideNavItem.d.ts +2 -2
  287. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  288. package/dist/SideNav/SideNavItem.js +6 -7
  289. package/dist/SideNav/SideNavSection.d.ts +1 -1
  290. package/dist/SideNav/SideNavSection.js +1 -1
  291. package/dist/Skeleton/Skeleton.d.ts +1 -1
  292. package/dist/Skeleton/Skeleton.js +1 -1
  293. package/dist/Slider/Slider.d.ts.map +1 -1
  294. package/dist/Slider/Slider.js +78 -68
  295. package/dist/Spinner/Spinner.d.ts +1 -1
  296. package/dist/Spinner/Spinner.js +1 -1
  297. package/dist/Stack/Stack.d.ts +1 -1
  298. package/dist/Stack/Stack.js +1 -1
  299. package/dist/Stack/StackItem.d.ts +1 -1
  300. package/dist/Stack/StackItem.js +1 -1
  301. package/dist/StatusDot/StatusDot.d.ts +1 -20
  302. package/dist/StatusDot/StatusDot.d.ts.map +1 -1
  303. package/dist/StatusDot/StatusDot.js +2 -17
  304. package/dist/StatusDot/index.d.ts +21 -1
  305. package/dist/StatusDot/index.d.ts.map +1 -1
  306. package/dist/StatusDot/index.js +14 -0
  307. package/dist/Switch/Switch.d.ts +1 -1
  308. package/dist/Switch/Switch.js +1 -1
  309. package/dist/TabList/Tab.d.ts +1 -1
  310. package/dist/TabList/Tab.js +1 -1
  311. package/dist/TabList/TabList.d.ts +1 -1
  312. package/dist/TabList/TabList.js +1 -1
  313. package/dist/TabList/TabMenu.d.ts +1 -1
  314. package/dist/TabList/TabMenu.js +1 -1
  315. package/dist/Table/BaseTable.d.ts +1 -1
  316. package/dist/Table/BaseTable.js +1 -1
  317. package/dist/Table/Table.d.ts +1 -1
  318. package/dist/Table/Table.js +1 -1
  319. package/dist/Table/TableCell.d.ts +1 -1
  320. package/dist/Table/TableCell.js +1 -1
  321. package/dist/Table/TableHeaderCell.d.ts +1 -1
  322. package/dist/Table/TableHeaderCell.js +1 -1
  323. package/dist/Table/TableRow.d.ts +1 -1
  324. package/dist/Table/TableRow.js +1 -1
  325. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +18 -3
  326. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  327. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +21 -3
  328. package/dist/Text/Text.d.ts +1 -1
  329. package/dist/Text/Text.js +1 -1
  330. package/dist/Text/index.d.ts +31 -1
  331. package/dist/Text/index.d.ts.map +1 -1
  332. package/dist/Text/index.js +23 -0
  333. package/dist/TextArea/TextArea.d.ts +1 -1
  334. package/dist/TextArea/TextArea.js +1 -1
  335. package/dist/TextInput/TextInput.d.ts +1 -1
  336. package/dist/TextInput/TextInput.js +1 -1
  337. package/dist/Thumbnail/Thumbnail.js +1 -1
  338. package/dist/TimeInput/TimeInput.js +1 -1
  339. package/dist/Timestamp/Timestamp.js +1 -1
  340. package/dist/ToggleButton/ToggleButton.d.ts +1 -1
  341. package/dist/ToggleButton/ToggleButton.js +1 -1
  342. package/dist/ToggleButton/ToggleButtonGroup.d.ts +1 -1
  343. package/dist/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
  344. package/dist/ToggleButton/ToggleButtonGroup.js +1 -1
  345. package/dist/Token/Token.d.ts +2 -27
  346. package/dist/Token/Token.d.ts.map +1 -1
  347. package/dist/Token/Token.js +1 -15
  348. package/dist/Token/index.d.ts +27 -1
  349. package/dist/Token/index.d.ts.map +1 -1
  350. package/dist/Token/index.js +14 -0
  351. package/dist/Tokenizer/Tokenizer.d.ts +1 -1
  352. package/dist/Tokenizer/Tokenizer.js +1 -1
  353. package/dist/Toolbar/Toolbar.d.ts +1 -1
  354. package/dist/Toolbar/Toolbar.js +1 -1
  355. package/dist/Tooltip/Tooltip.d.ts +1 -1
  356. package/dist/Tooltip/Tooltip.js +1 -1
  357. package/dist/TopNav/TopNav.d.ts +1 -1
  358. package/dist/TopNav/TopNav.js +1 -1
  359. package/dist/TopNav/TopNavHeading.d.ts +1 -1
  360. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  361. package/dist/TopNav/TopNavHeading.js +7 -6
  362. package/dist/TopNav/TopNavItem.d.ts +1 -1
  363. package/dist/TopNav/TopNavItem.js +1 -1
  364. package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
  365. package/dist/TopNav/TopNavMegaMenu.js +6 -4
  366. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
  367. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +1 -1
  368. package/dist/TopNav/TopNavMegaMenuItem.d.ts +1 -1
  369. package/dist/TopNav/TopNavMegaMenuItem.js +1 -1
  370. package/dist/TopNav/TopNavMenu.d.ts +1 -1
  371. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  372. package/dist/TopNav/TopNavMenu.js +5 -4
  373. package/dist/TreeList/TreeList.d.ts +1 -1
  374. package/dist/TreeList/TreeList.js +1 -1
  375. package/dist/TreeList/TreeListBranches.js +1 -1
  376. package/dist/TreeList/TreeListItem.d.ts +1 -1
  377. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  378. package/dist/TreeList/TreeListItem.js +4 -3
  379. package/dist/TreeList/TreeListTypes.d.ts +1 -17
  380. package/dist/TreeList/TreeListTypes.d.ts.map +1 -1
  381. package/dist/TreeList/index.d.ts +18 -1
  382. package/dist/TreeList/index.d.ts.map +1 -1
  383. package/dist/TreeList/index.js +14 -0
  384. package/dist/Typeahead/BaseTypeahead.d.ts +1 -1
  385. package/dist/Typeahead/BaseTypeahead.js +1 -1
  386. package/dist/Typeahead/Typeahead.d.ts +1 -1
  387. package/dist/Typeahead/Typeahead.js +1 -1
  388. package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
  389. package/dist/Typeahead/TypeaheadItem.js +1 -1
  390. package/dist/VStack/VStack.d.ts +1 -1
  391. package/dist/VStack/VStack.js +1 -1
  392. package/dist/VisuallyHidden/VisuallyHidden.d.ts +1 -1
  393. package/dist/VisuallyHidden/VisuallyHidden.js +1 -1
  394. package/dist/astryx.css +35 -16
  395. package/dist/astryx.umd.js +49 -49
  396. package/dist/astryx.umd.js.map +4 -4
  397. package/dist/hooks/containerReveal.pool.stylex.d.ts +49 -27
  398. package/dist/hooks/containerReveal.pool.stylex.d.ts.map +1 -1
  399. package/dist/hooks/containerReveal.pool.stylex.js +40 -29
  400. package/dist/hooks/useContainerReveal.d.ts +1 -1
  401. package/dist/hooks/useContainerReveal.d.ts.map +1 -1
  402. package/dist/hooks/useContainerReveal.js +1 -1
  403. package/dist/hooks/useInputContainer.d.ts.map +1 -1
  404. package/dist/hooks/useInputContainer.js +29 -1
  405. package/dist/hooks/useKeyboardHint.d.ts +1 -1
  406. package/dist/hooks/useKeyboardHint.js +1 -1
  407. package/dist/index.d.ts +2 -1
  408. package/dist/index.d.ts.map +1 -1
  409. package/dist/index.js +5 -1
  410. package/dist/theme/Theme.d.ts.map +1 -1
  411. package/dist/theme/Theme.js +2 -7
  412. package/dist/theme/defineTheme.d.ts.map +1 -1
  413. package/dist/theme/defineTheme.js +4 -1
  414. package/dist/theme/index.d.ts +4 -2
  415. package/dist/theme/index.d.ts.map +1 -1
  416. package/dist/theme/index.js +2 -1
  417. package/dist/theme/themeRegistry.d.ts +32 -0
  418. package/dist/theme/themeRegistry.d.ts.map +1 -0
  419. package/dist/theme/themeRegistry.js +49 -0
  420. package/dist/theme/types.d.ts +1 -30
  421. package/dist/theme/types.d.ts.map +1 -1
  422. package/dist/theme/useTheme.d.ts +9 -0
  423. package/dist/theme/useTheme.d.ts.map +1 -1
  424. package/dist/theme/useTheme.js +82 -27
  425. package/dist/utils/rtlStyles.d.ts +21 -0
  426. package/dist/utils/rtlStyles.d.ts.map +1 -1
  427. package/dist/utils/rtlStyles.js +26 -1
  428. package/groups.doc.mjs +2 -2
  429. package/package.json +2 -11
  430. package/src/AlertDialog/AlertDialog.doc.mjs +3 -3
  431. package/src/AlertDialog/AlertDialog.tsx +1 -1
  432. package/src/AlertDialog/useImperativeAlertDialog.doc.mjs +1 -1
  433. package/src/AppShell/AppShell.doc.mjs +3 -3
  434. package/src/AppShell/AppShell.tsx +2 -20
  435. package/src/AppShell/index.ts +20 -1
  436. package/src/AppShell/useAppShellMobile.doc.mjs +2 -2
  437. package/src/AspectRatio/AspectRatio.doc.mjs +3 -3
  438. package/src/AspectRatio/AspectRatio.tsx +1 -1
  439. package/src/Avatar/Avatar.doc.mjs +3 -3
  440. package/src/Avatar/Avatar.tsx +8 -3
  441. package/src/Avatar/AvatarStatusDot.doc.mjs +1 -1
  442. package/src/Avatar/AvatarStatusDot.tsx +2 -27
  443. package/src/Avatar/index.ts +26 -1
  444. package/src/AvatarGroup/AvatarGroup.doc.mjs +3 -3
  445. package/src/AvatarGroup/AvatarGroup.tsx +1 -1
  446. package/src/AvatarGroup/AvatarGroupOverflow.doc.mjs +1 -1
  447. package/src/AvatarGroup/AvatarGroupOverflow.tsx +1 -1
  448. package/src/Badge/Badge.doc.mjs +3 -3
  449. package/src/Badge/Badge.tsx +2 -31
  450. package/src/Badge/index.ts +32 -6
  451. package/src/Banner/Banner.doc.mjs +3 -3
  452. package/src/Banner/Banner.tsx +8 -45
  453. package/src/Banner/index.ts +39 -7
  454. package/src/Blockquote/Blockquote.doc.mjs +3 -3
  455. package/src/Blockquote/Blockquote.tsx +1 -1
  456. package/src/Breadcrumbs/BreadcrumbItem.doc.mjs +1 -1
  457. package/src/Breadcrumbs/BreadcrumbItem.tsx +5 -3
  458. package/src/Breadcrumbs/Breadcrumbs.doc.mjs +3 -3
  459. package/src/Breadcrumbs/Breadcrumbs.tsx +2 -19
  460. package/src/Breadcrumbs/index.ts +19 -5
  461. package/src/Button/Button.doc.mjs +3 -3
  462. package/src/Button/Button.tsx +2 -21
  463. package/src/Button/index.ts +22 -7
  464. package/src/ButtonGroup/ButtonGroup.doc.mjs +3 -3
  465. package/src/ButtonGroup/ButtonGroup.tsx +1 -1
  466. package/src/Calendar/Calendar.doc.mjs +3 -3
  467. package/src/Calendar/Calendar.test.tsx +15 -3
  468. package/src/Calendar/Calendar.tsx +1 -1
  469. package/src/Calendar/styles.ts +2 -2
  470. package/src/Card/Card.doc.mjs +3 -3
  471. package/src/Card/Card.tsx +1 -1
  472. package/src/Carousel/Carousel.doc.mjs +3 -3
  473. package/src/Carousel/Carousel.tsx +1 -1
  474. package/src/Center/Center.doc.mjs +41 -3
  475. package/src/Center/Center.test.tsx +75 -0
  476. package/src/Center/Center.tsx +38 -3
  477. package/src/Chat/Chat.doc.mjs +3 -3
  478. package/src/Chat/ChatComposer.doc.mjs +1 -1
  479. package/src/Chat/ChatComposer.tsx +5 -5
  480. package/src/Chat/ChatComposerDrawer.doc.mjs +1 -1
  481. package/src/Chat/ChatComposerDrawer.tsx +3 -3
  482. package/src/Chat/ChatComposerInput.doc.mjs +1 -1
  483. package/src/Chat/ChatComposerInput.tsx +1 -1
  484. package/src/Chat/ChatComposerTokenElement.doc.mjs +1 -1
  485. package/src/Chat/ChatDictationButton.doc.mjs +3 -3
  486. package/src/Chat/ChatDictationButton.tsx +1 -1
  487. package/src/Chat/ChatLayout.doc.mjs +1 -1
  488. package/src/Chat/ChatLayout.tsx +1 -1
  489. package/src/Chat/ChatLayoutScrollButton.doc.mjs +1 -1
  490. package/src/Chat/ChatLayoutScrollButton.tsx +1 -1
  491. package/src/Chat/ChatMessage.doc.mjs +1 -1
  492. package/src/Chat/ChatMessage.tsx +1 -1
  493. package/src/Chat/ChatMessageBubble.doc.mjs +1 -1
  494. package/src/Chat/ChatMessageBubble.tsx +1 -1
  495. package/src/Chat/ChatMessageList.doc.mjs +1 -1
  496. package/src/Chat/ChatMessageList.tsx +1 -1
  497. package/src/Chat/ChatMessageMetadata.doc.mjs +1 -1
  498. package/src/Chat/ChatSendButton.doc.mjs +1 -1
  499. package/src/Chat/ChatSendButton.tsx +5 -3
  500. package/src/Chat/ChatSystemMessage.doc.mjs +1 -1
  501. package/src/Chat/ChatSystemMessage.tsx +1 -1
  502. package/src/Chat/ChatTokenizedText.doc.mjs +1 -1
  503. package/src/Chat/ChatTokenizedText.tsx +1 -1
  504. package/src/Chat/ChatToolCalls.doc.mjs +3 -3
  505. package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
  506. package/src/CheckboxInput/CheckboxInput.test.tsx +33 -0
  507. package/src/CheckboxInput/CheckboxInput.tsx +1 -1
  508. package/src/CheckboxList/CheckboxList.doc.mjs +3 -3
  509. package/src/CheckboxList/CheckboxList.tsx +1 -1
  510. package/src/CheckboxList/CheckboxListItem.doc.mjs +1 -1
  511. package/src/CheckboxList/CheckboxListItem.tsx +1 -1
  512. package/src/Citation/Citation.doc.mjs +2 -2
  513. package/src/Citation/Citation.tsx +1 -1
  514. package/src/ClickableCard/ClickableCard.doc.mjs +2 -2
  515. package/src/ClickableCard/ClickableCard.tsx +3 -3
  516. package/src/Code/Code.tsx +2 -2
  517. package/src/CodeBlock/Code.doc.mjs +1 -1
  518. package/src/CodeBlock/CodeBlock.doc.mjs +3 -3
  519. package/src/Collapsible/Collapsible.doc.mjs +3 -3
  520. package/src/Collapsible/Collapsible.tsx +3 -3
  521. package/src/Collapsible/CollapsibleGroup.doc.mjs +1 -1
  522. package/src/Collapsible/CollapsibleGroup.tsx +1 -1
  523. package/src/Collapsible/CollapsibleGroupContext.tsx +1 -1
  524. package/src/Collapsible/useCollapsible.doc.mjs +2 -2
  525. package/src/CommandPalette/CommandPalette.doc.mjs +4 -4
  526. package/src/CommandPalette/CommandPalette.tsx +1 -1
  527. package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +1 -1
  528. package/src/CommandPalette/CommandPaletteEmpty.tsx +1 -1
  529. package/src/CommandPalette/CommandPaletteFooter.doc.mjs +1 -1
  530. package/src/CommandPalette/CommandPaletteFooter.tsx +1 -1
  531. package/src/CommandPalette/CommandPaletteGroup.doc.mjs +1 -1
  532. package/src/CommandPalette/CommandPaletteGroup.tsx +1 -1
  533. package/src/CommandPalette/CommandPaletteInput.doc.mjs +1 -1
  534. package/src/CommandPalette/CommandPaletteInput.tsx +5 -1
  535. package/src/CommandPalette/CommandPaletteItem.doc.mjs +1 -1
  536. package/src/CommandPalette/CommandPaletteItem.tsx +1 -1
  537. package/src/CommandPalette/CommandPaletteList.doc.mjs +1 -1
  538. package/src/CommandPalette/CommandPaletteList.tsx +1 -1
  539. package/src/ContextMenu/ContextMenu.doc.mjs +3 -3
  540. package/src/ContextMenu/ContextMenu.tsx +17 -5
  541. package/src/ContextMenu/ContextMenuItem.doc.mjs +1 -1
  542. package/src/DateInput/DateInput.doc.mjs +3 -3
  543. package/src/DateInput/DateInput.tsx +1 -1
  544. package/src/DateRangeInput/DateRangeInput.doc.mjs +2 -2
  545. package/src/DateRangeInput/DateRangeInput.tsx +1 -1
  546. package/src/DateTimeInput/DateTimeInput.doc.mjs +3 -3
  547. package/src/DateTimeInput/DateTimeInput.tsx +1 -1
  548. package/src/Dialog/Dialog.doc.mjs +9 -5
  549. package/src/Dialog/Dialog.test.tsx +84 -1
  550. package/src/Dialog/Dialog.tsx +87 -45
  551. package/src/Dialog/DialogHeader.doc.mjs +1 -1
  552. package/src/Dialog/DialogHeader.tsx +1 -1
  553. package/src/Dialog/index.ts +18 -1
  554. package/src/Dialog/useImperativeDialog.doc.mjs +1 -1
  555. package/src/Divider/Divider.doc.mjs +3 -3
  556. package/src/Divider/Divider.tsx +2 -19
  557. package/src/Divider/index.ts +19 -5
  558. package/src/DropdownMenu/DropdownMenu.doc.mjs +20 -5
  559. package/src/DropdownMenu/DropdownMenu.test.tsx +122 -0
  560. package/src/DropdownMenu/DropdownMenu.tsx +31 -20
  561. package/src/DropdownMenu/DropdownMenuCheckboxItem.doc.mjs +1 -1
  562. package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +41 -64
  563. package/src/DropdownMenu/DropdownMenuItem.doc.mjs +1 -1
  564. package/src/DropdownMenu/DropdownMenuItem.tsx +1 -1
  565. package/src/DropdownMenu/DropdownMenuRadioGroup.doc.mjs +1 -1
  566. package/src/DropdownMenu/DropdownMenuRadioItem.doc.mjs +1 -1
  567. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +10 -1
  568. package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +64 -0
  569. package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +1 -1
  570. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +17 -0
  571. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +11 -3
  572. package/src/DropdownMenu/renderDropdownItems.tsx +14 -2
  573. package/src/EmptyState/EmptyState.doc.mjs +3 -3
  574. package/src/EmptyState/EmptyState.tsx +1 -1
  575. package/src/Field/Field.doc.mjs +3 -3
  576. package/src/Field/Field.tsx +1 -1
  577. package/src/Field/FieldLabel.doc.mjs +1 -1
  578. package/src/Field/FieldLabel.test.tsx +78 -0
  579. package/src/Field/FieldLabel.tsx +50 -3
  580. package/src/FieldStatus/FieldStatus.doc.mjs +2 -2
  581. package/src/FieldStatus/FieldStatus.tsx +2 -20
  582. package/src/FieldStatus/index.ts +20 -5
  583. package/src/FileInput/FileInput.doc.mjs +3 -3
  584. package/src/FileInput/FileInput.tsx +1 -1
  585. package/src/FormLayout/FormLayout.doc.mjs +3 -3
  586. package/src/FormLayout/FormLayout.tsx +2 -5
  587. package/src/Grid/Grid.doc.mjs +3 -3
  588. package/src/Grid/Grid.tsx +1 -1
  589. package/src/Grid/GridSpan.doc.mjs +1 -1
  590. package/src/Grid/GridSpan.tsx +1 -1
  591. package/src/HStack/HStack.tsx +1 -1
  592. package/src/Heading/Heading.tsx +2 -2
  593. package/src/HoverCard/HoverCard.doc.mjs +3 -3
  594. package/src/HoverCard/HoverCard.tsx +1 -1
  595. package/src/HoverCard/useHoverCard.doc.mjs +2 -2
  596. package/src/Icon/Icon.doc.mjs +3 -3
  597. package/src/Icon/Icon.test.tsx +23 -0
  598. package/src/Icon/Icon.tsx +4 -2
  599. package/src/Icon/globalIconRegistry.test.tsx +52 -1
  600. package/src/Icon/globalIconRegistry.tsx +43 -6
  601. package/src/Icon/index.ts +7 -7
  602. package/src/Icon/useIcon.ts +23 -0
  603. package/src/IconButton/IconButton.doc.mjs +2 -2
  604. package/src/IconButton/IconButton.tsx +1 -1
  605. package/src/InputGroup/InputGroup.doc.mjs +2 -2
  606. package/src/InputGroup/InputGroup.tsx +1 -1
  607. package/src/InputGroup/InputGroupText.doc.mjs +1 -1
  608. package/src/InputGroup/InputGroupText.tsx +1 -1
  609. package/src/Item/Item.doc.mjs +3 -3
  610. package/src/Item/Item.tsx +1 -1
  611. package/src/Kbd/Kbd.doc.mjs +3 -3
  612. package/src/Kbd/Kbd.tsx +1 -1
  613. package/src/Layer/Layer.doc.mjs +2 -2
  614. package/src/Layer/useLayer.doc.mjs +2 -2
  615. package/src/Layout/Layout.doc.mjs +3 -3
  616. package/src/Layout/Layout.tsx +1 -1
  617. package/src/Layout/LayoutContent.doc.mjs +1 -1
  618. package/src/Layout/LayoutContent.tsx +1 -1
  619. package/src/Layout/LayoutFooter.doc.mjs +1 -1
  620. package/src/Layout/LayoutFooter.tsx +1 -1
  621. package/src/Layout/LayoutHeader.doc.mjs +1 -1
  622. package/src/Layout/LayoutHeader.tsx +1 -1
  623. package/src/Layout/LayoutPanel.doc.mjs +1 -1
  624. package/src/Layout/LayoutPanel.tsx +1 -1
  625. package/src/Lightbox/Lightbox.doc.mjs +3 -3
  626. package/src/Lightbox/Lightbox.tsx +1 -1
  627. package/src/Link/Link.doc.mjs +3 -3
  628. package/src/Link/Link.tsx +1 -1
  629. package/src/Link/LinkProvider.doc.mjs +2 -2
  630. package/src/Link/LinkProvider.tsx +2 -2
  631. package/src/List/List.doc.mjs +3 -3
  632. package/src/List/List.tsx +1 -1
  633. package/src/List/ListItem.doc.mjs +2 -2
  634. package/src/List/ListItem.tsx +1 -1
  635. package/src/Markdown/Markdown.doc.mjs +1 -1
  636. package/src/Markdown/Markdown.tsx +3 -3
  637. package/src/MetadataList/MetadataList.doc.mjs +3 -3
  638. package/src/MetadataList/MetadataList.tsx +1 -1
  639. package/src/MetadataList/MetadataListItem.doc.mjs +1 -1
  640. package/src/MetadataList/MetadataListItem.tsx +1 -1
  641. package/src/MobileNav/MobileNav.doc.mjs +3 -3
  642. package/src/MobileNav/MobileNav.tsx +1 -1
  643. package/src/MoreMenu/MoreMenu.doc.mjs +3 -3
  644. package/src/MoreMenu/MoreMenu.tsx +3 -3
  645. package/src/MultiSelector/MultiSelector.doc.mjs +3 -3
  646. package/src/MultiSelector/MultiSelector.tsx +1 -1
  647. package/src/NavIcon/NavIcon.doc.mjs +3 -3
  648. package/src/NavIcon/NavIcon.tsx +1 -1
  649. package/src/NavMenu/NavMenu.doc.mjs +2 -2
  650. package/src/NumberInput/NumberInput.doc.mjs +3 -3
  651. package/src/NumberInput/NumberInput.tsx +1 -1
  652. package/src/Outline/Outline.doc.mjs +3 -3
  653. package/src/Outline/Outline.tsx +1 -1
  654. package/src/OverflowList/OverflowList.doc.mjs +3 -3
  655. package/src/OverflowList/OverflowList.tsx +1 -1
  656. package/src/Overlay/Overlay.doc.mjs +2 -2
  657. package/src/Pagination/Pagination.doc.mjs +3 -3
  658. package/src/Pagination/Pagination.tsx +2 -22
  659. package/src/Pagination/index.ts +21 -1
  660. package/src/Popover/Popover.doc.mjs +31 -3
  661. package/src/Popover/Popover.test.tsx +41 -0
  662. package/src/Popover/Popover.tsx +25 -2
  663. package/src/Popover/usePopover.doc.mjs +2 -2
  664. package/src/Popover/usePopover.tsx +10 -4
  665. package/src/PowerSearch/PowerSearch.doc.mjs +3 -3
  666. package/src/PowerSearch/PowerSearch.tsx +1 -1
  667. package/src/ProgressBar/ProgressBar.doc.mjs +3 -3
  668. package/src/ProgressBar/ProgressBar.tsx +2 -22
  669. package/src/ProgressBar/index.ts +22 -5
  670. package/src/RadioList/RadioList.doc.mjs +3 -3
  671. package/src/RadioList/RadioList.tsx +1 -1
  672. package/src/RadioList/RadioListItem.doc.mjs +1 -1
  673. package/src/RadioList/RadioListItem.tsx +1 -1
  674. package/src/Resizable/Resizable.doc.mjs +2 -2
  675. package/src/Resizable/ResizeHandle.test.tsx +3 -2
  676. package/src/Resizable/ResizeHandle.tsx +8 -12
  677. package/src/Resizable/useResizable.doc.mjs +2 -2
  678. package/src/Section/Section.doc.mjs +3 -3
  679. package/src/Section/Section.tsx +2 -20
  680. package/src/Section/index.ts +20 -5
  681. package/src/SegmentedControl/SegmentedControl.doc.mjs +3 -3
  682. package/src/SegmentedControl/SegmentedControl.tsx +1 -1
  683. package/src/SegmentedControl/SegmentedControlItem.doc.mjs +1 -1
  684. package/src/SegmentedControl/SegmentedControlItem.tsx +1 -1
  685. package/src/SelectableCard/SelectableCard.doc.mjs +4 -2
  686. package/src/SelectableCard/SelectableCard.test.tsx +55 -0
  687. package/src/SelectableCard/SelectableCard.tsx +19 -3
  688. package/src/Selector/Selector.doc.mjs +3 -3
  689. package/src/Selector/Selector.tsx +1 -1
  690. package/src/Selector/SelectorOption.doc.mjs +1 -1
  691. package/src/SideNav/SideNav.doc.mjs +3 -3
  692. package/src/SideNav/SideNav.tsx +1 -1
  693. package/src/SideNav/SideNavCollapseButton.doc.mjs +1 -1
  694. package/src/SideNav/SideNavCollapseButton.tsx +4 -3
  695. package/src/SideNav/SideNavHeading.doc.mjs +1 -1
  696. package/src/SideNav/SideNavHeading.tsx +8 -9
  697. package/src/SideNav/SideNavItem.doc.mjs +1 -1
  698. package/src/SideNav/SideNavItem.tsx +5 -6
  699. package/src/SideNav/SideNavSection.doc.mjs +1 -1
  700. package/src/SideNav/SideNavSection.tsx +1 -1
  701. package/src/Skeleton/Skeleton.doc.mjs +3 -3
  702. package/src/Skeleton/Skeleton.tsx +1 -1
  703. package/src/Slider/Slider.doc.mjs +3 -3
  704. package/src/Slider/Slider.tsx +9 -13
  705. package/src/Spinner/Spinner.doc.mjs +3 -3
  706. package/src/Spinner/Spinner.tsx +1 -1
  707. package/src/Stack/Stack.doc.mjs +3 -3
  708. package/src/Stack/Stack.tsx +1 -1
  709. package/src/Stack/StackItem.tsx +1 -1
  710. package/src/StatusDot/StatusDot.doc.mjs +3 -3
  711. package/src/StatusDot/StatusDot.tsx +2 -22
  712. package/src/StatusDot/index.ts +22 -5
  713. package/src/Switch/Switch.doc.mjs +3 -3
  714. package/src/Switch/Switch.test.tsx +34 -0
  715. package/src/Switch/Switch.tsx +1 -1
  716. package/src/TabList/Tab.doc.mjs +1 -1
  717. package/src/TabList/Tab.tsx +1 -1
  718. package/src/TabList/TabList.doc.mjs +3 -3
  719. package/src/TabList/TabList.tsx +1 -1
  720. package/src/TabList/TabMenu.doc.mjs +1 -1
  721. package/src/TabList/TabMenu.tsx +1 -1
  722. package/src/Table/BaseTable.tsx +1 -1
  723. package/src/Table/Table.doc.mjs +3 -3
  724. package/src/Table/Table.tsx +1 -1
  725. package/src/Table/TableCell.doc.mjs +1 -1
  726. package/src/Table/TableCell.tsx +1 -1
  727. package/src/Table/TableHeaderCell.doc.mjs +1 -1
  728. package/src/Table/TableHeaderCell.tsx +1 -1
  729. package/src/Table/TableRow.doc.mjs +1 -1
  730. package/src/Table/TableRow.tsx +1 -1
  731. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +21 -3
  732. package/src/Table/useTableColumnResize.doc.mjs +1 -1
  733. package/src/Table/useTableColumnSettings.doc.mjs +1 -1
  734. package/src/Table/useTableFilterState.doc.mjs +1 -1
  735. package/src/Table/useTableFiltering.doc.mjs +1 -1
  736. package/src/Table/useTableGroupedRows.doc.mjs +2 -2
  737. package/src/Table/useTablePagination.doc.mjs +1 -1
  738. package/src/Table/useTableRowExpansion.doc.mjs +57 -4
  739. package/src/Table/useTableRowIndex.doc.mjs +2 -2
  740. package/src/Table/useTableRowStatus.doc.mjs +2 -2
  741. package/src/Table/useTableSelection.doc.mjs +1 -1
  742. package/src/Table/useTableSelectionState.doc.mjs +1 -1
  743. package/src/Table/useTableSortable.doc.mjs +1 -1
  744. package/src/Table/useTableStickyColumns.doc.mjs +1 -1
  745. package/src/Table/useTableTreeData.doc.mjs +1 -1
  746. package/src/Table/useTableTreeState.doc.mjs +1 -1
  747. package/src/Text/Heading.doc.mjs +1 -1
  748. package/src/Text/Text.doc.mjs +3 -3
  749. package/src/Text/Text.tsx +1 -1
  750. package/src/Text/index.ts +31 -1
  751. package/src/TextArea/TextArea.doc.mjs +3 -3
  752. package/src/TextArea/TextArea.tsx +1 -1
  753. package/src/TextInput/TextInput.doc.mjs +3 -3
  754. package/src/TextInput/TextInput.tsx +1 -1
  755. package/src/Thumbnail/Thumbnail.doc.mjs +2 -2
  756. package/src/Thumbnail/Thumbnail.tsx +1 -1
  757. package/src/TimeInput/TimeInput.doc.mjs +3 -3
  758. package/src/TimeInput/TimeInput.tsx +1 -1
  759. package/src/Timestamp/Timestamp.doc.mjs +3 -3
  760. package/src/Timestamp/Timestamp.tsx +1 -1
  761. package/src/Toast/Toast.doc.mjs +3 -3
  762. package/src/Toast/useToast.doc.mjs +2 -2
  763. package/src/ToggleButton/ToggleButton.doc.mjs +3 -3
  764. package/src/ToggleButton/ToggleButton.tsx +1 -1
  765. package/src/ToggleButton/ToggleButtonGroup.doc.mjs +1 -1
  766. package/src/ToggleButton/ToggleButtonGroup.tsx +3 -6
  767. package/src/Token/Token.doc.mjs +3 -3
  768. package/src/Token/Token.tsx +2 -28
  769. package/src/Token/index.ts +28 -1
  770. package/src/Tokenizer/Tokenizer.doc.mjs +3 -3
  771. package/src/Tokenizer/Tokenizer.tsx +1 -1
  772. package/src/Toolbar/Toolbar.doc.mjs +3 -3
  773. package/src/Toolbar/Toolbar.tsx +1 -1
  774. package/src/Tooltip/Tooltip.doc.mjs +3 -3
  775. package/src/Tooltip/Tooltip.tsx +1 -1
  776. package/src/Tooltip/useTooltip.doc.mjs +2 -2
  777. package/src/TopNav/TopNav.doc.mjs +3 -3
  778. package/src/TopNav/TopNav.tsx +1 -1
  779. package/src/TopNav/TopNavHeading.doc.mjs +1 -1
  780. package/src/TopNav/TopNavHeading.tsx +7 -8
  781. package/src/TopNav/TopNavItem.doc.mjs +1 -1
  782. package/src/TopNav/TopNavItem.tsx +1 -1
  783. package/src/TopNav/TopNavMegaMenu.doc.mjs +1 -1
  784. package/src/TopNav/TopNavMegaMenu.tsx +6 -4
  785. package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +1 -1
  786. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +1 -1
  787. package/src/TopNav/TopNavMegaMenuItem.doc.mjs +1 -1
  788. package/src/TopNav/TopNavMegaMenuItem.tsx +1 -1
  789. package/src/TopNav/TopNavMenu.doc.mjs +1 -1
  790. package/src/TopNav/TopNavMenu.tsx +5 -4
  791. package/src/TreeList/TreeList.doc.mjs +3 -3
  792. package/src/TreeList/TreeList.tsx +1 -1
  793. package/src/TreeList/TreeListBranches.tsx +1 -1
  794. package/src/TreeList/TreeListItem.tsx +4 -3
  795. package/src/TreeList/TreeListTypes.ts +1 -18
  796. package/src/TreeList/index.ts +19 -1
  797. package/src/Typeahead/BaseTypeahead.doc.mjs +1 -1
  798. package/src/Typeahead/BaseTypeahead.tsx +1 -1
  799. package/src/Typeahead/Typeahead.doc.mjs +3 -3
  800. package/src/Typeahead/Typeahead.tsx +1 -1
  801. package/src/Typeahead/TypeaheadItem.doc.mjs +1 -1
  802. package/src/Typeahead/TypeaheadItem.tsx +1 -1
  803. package/src/VStack/VStack.tsx +1 -1
  804. package/src/VisuallyHidden/VisuallyHidden.doc.mjs +3 -3
  805. package/src/VisuallyHidden/VisuallyHidden.tsx +1 -1
  806. package/src/__tests__/inputWidthContract.test.tsx +8 -1
  807. package/src/doc-mjs.d.ts +5 -2
  808. package/src/docPropLiterals.test.ts +1 -1
  809. package/src/docPropReferences.test.ts +1 -1
  810. package/src/hooks/containerReveal.pool.stylex.ts +154 -47
  811. package/src/hooks/useClickableContainer.doc.mjs +2 -2
  812. package/src/hooks/useContainerReveal.doc.mjs +75 -0
  813. package/src/hooks/useContainerReveal.ts +5 -4
  814. package/src/hooks/useEntryAnimation.doc.mjs +2 -2
  815. package/src/hooks/useFocusTrap.doc.mjs +2 -2
  816. package/src/hooks/useGridFocus.doc.mjs +2 -2
  817. package/src/hooks/useHotkeys.doc.mjs +2 -2
  818. package/src/hooks/useImageMode.doc.mjs +2 -2
  819. package/src/hooks/useInputContainer.doc.mjs +2 -2
  820. package/src/hooks/useInputContainer.test.tsx +180 -0
  821. package/src/hooks/useInputContainer.ts +36 -1
  822. package/src/hooks/useKeyboardHint.doc.mjs +2 -2
  823. package/src/hooks/useKeyboardHint.tsx +1 -1
  824. package/src/hooks/useListFocus.doc.mjs +2 -2
  825. package/src/hooks/useMediaQuery.doc.mjs +2 -2
  826. package/src/hooks/useOverflow.doc.mjs +2 -2
  827. package/src/hooks/useScrollLock.doc.mjs +2 -2
  828. package/src/hooks/useScrollOverflow.doc.mjs +2 -2
  829. package/src/hooks/useStreamingText.doc.mjs +2 -2
  830. package/src/hooks/useTreeFocus.doc.mjs +2 -2
  831. package/src/i18n/InternationalizationProvider.doc.mjs +2 -2
  832. package/src/i18n/useTranslator.doc.mjs +2 -2
  833. package/src/index.ts +14 -10
  834. package/src/theme/MediaTheme.doc.mjs +2 -2
  835. package/src/theme/SyntaxTheme.doc.mjs +2 -2
  836. package/src/theme/Theme.doc.mjs +2 -2
  837. package/src/theme/Theme.tsx +3 -7
  838. package/src/theme/defineTheme.ts +5 -1
  839. package/src/theme/index.ts +8 -2
  840. package/src/theme/themeRegistry.test.ts +59 -0
  841. package/src/theme/themeRegistry.ts +53 -0
  842. package/src/theme/types.ts +2 -31
  843. package/src/theme/useTheme.doc.mjs +2 -2
  844. package/src/theme/useTheme.test.tsx +48 -3
  845. package/src/theme/useTheme.ts +100 -29
  846. package/src/utils/rtlStyles.ts +22 -0
  847. package/dist/authoring/doc.d.ts +0 -145
  848. package/dist/authoring/doc.d.ts.map +0 -1
  849. package/dist/authoring/doc.js +0 -100
  850. package/dist/authoring/index.d.ts +0 -29
  851. package/dist/authoring/index.d.ts.map +0 -1
  852. package/dist/authoring/index.js +0 -28
  853. package/dist/authoring/integration.d.ts +0 -35
  854. package/dist/authoring/integration.d.ts.map +0 -1
  855. package/dist/authoring/integration.js +0 -30
  856. package/dist/authoring/template.d.ts +0 -66
  857. package/dist/authoring/template.d.ts.map +0 -1
  858. package/dist/authoring/template.js +0 -55
  859. package/dist/config.d.ts +0 -80
  860. package/dist/config.d.ts.map +0 -1
  861. package/dist/config.js +0 -40
  862. package/dist/docs-types.d.ts +0 -969
  863. package/dist/docs-types.d.ts.map +0 -1
  864. package/dist/docs-types.js +0 -1
  865. package/src/authoring/doc.ts +0 -164
  866. package/src/authoring/index.test.ts +0 -52
  867. package/src/authoring/index.ts +0 -50
  868. package/src/authoring/integration.ts +0 -42
  869. package/src/authoring/template.ts +0 -74
  870. package/src/config.test.ts +0 -16
  871. package/src/config.ts +0 -92
  872. package/src/docs-types.ts +0 -1108
package/src/index.ts CHANGED
@@ -168,25 +168,29 @@ export * from './hooks';
168
168
  export * from './utils';
169
169
 
170
170
  // Theme
171
+ export type {TextColorMap} from './Text';
171
172
  export * from './theme';
172
173
 
173
174
  // Internationalization
174
175
  export * from './i18n';
175
176
 
176
- // Doc types — for external library authors writing .doc.mjs files
177
+ // Doc types — for external library authors writing .doc.mjs files.
178
+ // @deprecated Import these from `@astryxdesign/cli/authoring` instead. These
179
+ // re-exports are kept for one release cycle and will be removed; `astryx upgrade`
180
+ // repoints them automatically.
177
181
  export type {
178
182
  ComponentDoc,
179
183
  SingleComponentDoc,
180
184
  MultiComponentDoc,
181
- PropDoc,
185
+ ComponentPropDoc,
182
186
  ComponentEntry,
183
- ThemingTarget,
184
- ComponentVar,
185
- DerivedVar,
186
- TranslationDoc,
187
- GroupDoc,
187
+ ComponentThemingTarget,
188
+ ComponentThemingVar,
189
+ ComponentThemingDerivedVar,
190
+ ComponentTranslationDoc,
191
+ ComponentGroupDoc,
188
192
  ReferenceDoc,
189
193
  ReferenceSection,
190
- ContentBlock,
191
- TokenPreviewType,
192
- } from './docs-types';
194
+ ReferenceContentBlock,
195
+ ReferenceTokenPreviewType,
196
+ } from '@astryxdesign/cli/authoring';
@@ -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: 'MediaTheme',
@@ -100,7 +100,7 @@ export const docs = {
100
100
  ],
101
101
  };
102
102
 
103
- /** @type {import('../docs-types').TranslationDoc} */
103
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
104
104
  export const docsDense = {
105
105
  usage: {
106
106
  description:
@@ -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: 'SyntaxTheme',
@@ -74,7 +74,7 @@ export const docs = {
74
74
  ],
75
75
  };
76
76
 
77
- /** @type {import('../docs-types').TranslationDoc} */
77
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
78
78
  export const docsDense = {
79
79
  usage: {
80
80
  description:
@@ -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: 'Theme',
@@ -86,7 +86,7 @@ export const docs = {
86
86
  ],
87
87
  };
88
88
 
89
- /** @type {import('../docs-types').TranslationDoc} */
89
+ /** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
90
90
  export const docsDense = {
91
91
  usage: {
92
92
  description:
@@ -41,8 +41,8 @@ import {useIsomorphicLayoutEffect} from '../hooks/useIsomorphicLayoutEffect';
41
41
  import * as stylex from '@stylexjs/stylex';
42
42
  import type {ThemeMode} from './types';
43
43
  import {colorVars, typographyVars} from './tokens.stylex';
44
- import {registerIcons} from '../Icon/globalIconRegistry';
45
44
  import {generateThemeCSS, type DefinedTheme} from './defineTheme';
45
+ import {registerTheme} from './themeRegistry';
46
46
  import {dataAttr} from '../naming';
47
47
  import {ThemeContext} from './useTheme';
48
48
  import {warnOnce} from '../utils/devWarning';
@@ -243,6 +243,8 @@ export function Theme({
243
243
  }: ThemeProps): React.ReactElement {
244
244
  const isNested = use(ThemeNestingContext);
245
245
 
246
+ registerTheme(theme);
247
+
246
248
  useThemeStyleInjection(theme);
247
249
  useRootThemeSync(isNested, mode, theme.name);
248
250
 
@@ -254,12 +256,6 @@ export function Theme({
254
256
  ? wrapperStyles.light
255
257
  : wrapperStyles.system;
256
258
 
257
- // Icons — register globally (works in both server and client environments)
258
- const icons = theme.icons;
259
- if (icons != null) {
260
- registerIcons(icons);
261
- }
262
-
263
259
  // Memoize the context value to prevent unnecessary re-renders
264
260
  const ctxValue = useMemo(() => ({theme, mode}), [theme, mode]);
265
261
 
@@ -63,6 +63,7 @@ import {expandColorScale, type ColorScaleConfig} from './expandColorScale';
63
63
  import type {DomainTokenName} from './domainTokens';
64
64
  import {domainTokenDefaults} from './domainTokens';
65
65
  import type {SyntaxThemeDefinition} from './syntax';
66
+ import {registerTheme} from './themeRegistry';
66
67
 
67
68
  // =============================================================================
68
69
  // Types
@@ -624,7 +625,7 @@ export function defineTheme(input: DefineThemeInput): DefinedTheme {
624
625
  ? {...base.icons, ...input.icons}
625
626
  : (input.icons ?? base?.icons);
626
627
 
627
- return {
628
+ const theme: DefinedTheme = {
628
629
  name: input.name,
629
630
  tokens,
630
631
  components,
@@ -633,6 +634,9 @@ export function defineTheme(input: DefineThemeInput): DefinedTheme {
633
634
  __onDark,
634
635
  __onLight,
635
636
  };
637
+
638
+ registerTheme(theme);
639
+ return theme;
636
640
  }
637
641
 
638
642
  // =============================================================================
@@ -30,6 +30,12 @@ export {
30
30
  isDefinedTheme,
31
31
  tokenDefaults,
32
32
  } from './defineTheme';
33
+ export {
34
+ registerTheme,
35
+ getRegisteredTheme,
36
+ getRegisteredThemes,
37
+ resetThemes,
38
+ } from './themeRegistry';
33
39
  export type {
34
40
  DefineThemeInput,
35
41
  DefinedTheme,
@@ -126,7 +132,7 @@ export type {
126
132
  TypeScaleVarName,
127
133
  } from './tokens.stylex';
128
134
 
129
- export {useTheme, ThemeContext} from './useTheme';
135
+ export {useTheme, useThemeName, ThemeContext} from './useTheme';
130
136
  export type {UseThemeReturn, ThemeContextValue} from './useTheme';
131
137
  export {
132
138
  resolveThemeToken,
@@ -140,6 +146,7 @@ export type {
140
146
  ResolvedThemeMode,
141
147
  } from './tokens';
142
148
 
149
+ export type {TextColorMap} from '../Text';
143
150
  export type {
144
151
  ThemeMode,
145
152
  HeadingTag,
@@ -150,7 +157,6 @@ export type {
150
157
  TextWeight,
151
158
  TextColor,
152
159
  BuiltinTextColor,
153
- TextColorMap,
154
160
  TypographyConfig,
155
161
  TypographyRole,
156
162
  FontWeight,
@@ -0,0 +1,59 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ import {describe, it, expect, beforeEach} from 'vitest';
4
+ import {defineTheme} from './defineTheme';
5
+ import {
6
+ getRegisteredTheme,
7
+ getRegisteredThemes,
8
+ registerTheme,
9
+ resetThemes,
10
+ } from './themeRegistry';
11
+
12
+ describe('themeRegistry', () => {
13
+ beforeEach(() => {
14
+ resetThemes();
15
+ });
16
+
17
+ it('registers and resolves themes by name', () => {
18
+ const theme = defineTheme({
19
+ name: 'brand',
20
+ tokens: {'--color-accent': '#123456'},
21
+ });
22
+
23
+ expect(getRegisteredTheme('brand')).toBe(theme);
24
+ });
25
+
26
+ it('returns null for empty or unknown names', () => {
27
+ expect(getRegisteredTheme(null)).toBeNull();
28
+ expect(getRegisteredTheme('')).toBeNull();
29
+ expect(getRegisteredTheme('missing')).toBeNull();
30
+ });
31
+
32
+ it('replaces an existing theme with the same name', () => {
33
+ const first = defineTheme({name: 'brand'});
34
+ const second = defineTheme({
35
+ name: 'brand',
36
+ tokens: {'--color-accent': '#654321'},
37
+ });
38
+
39
+ expect(getRegisteredTheme('brand')).not.toBe(first);
40
+ expect(getRegisteredTheme('brand')).toBe(second);
41
+ });
42
+
43
+ it('returns a defensive snapshot of registered themes', () => {
44
+ const theme = defineTheme({name: 'brand'});
45
+ const snapshot = getRegisteredThemes();
46
+
47
+ expect(snapshot.get('brand')).toBe(theme);
48
+ expect(snapshot).not.toBe(getRegisteredThemes());
49
+ });
50
+
51
+ it('allows explicit registration of built theme objects', () => {
52
+ const theme = defineTheme({name: 'built'});
53
+ resetThemes();
54
+
55
+ registerTheme(theme);
56
+
57
+ expect(getRegisteredTheme('built')).toBe(theme);
58
+ });
59
+ });
@@ -0,0 +1,53 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file themeRegistry.ts
5
+ * @input DefinedTheme objects from defineTheme() or built theme packages
6
+ * @output Exports registerTheme, getRegisteredTheme, getRegisteredThemes, resetThemes
7
+ * @position Server-safe theme registry for theme-name-based SSR resolution
8
+ *
9
+ * This module has NO 'use client' directive. It is importable from SSR/RSC and
10
+ * lets code resolve theme data by stable theme name without React context.
11
+ */
12
+
13
+ import type {DefinedTheme} from './defineTheme';
14
+
15
+ const themeRegistry = new Map<string, DefinedTheme>();
16
+
17
+ /**
18
+ * Register a defined theme under its `name`.
19
+ *
20
+ * Registration is idempotent and replaces any previous theme with the same
21
+ * name. Call from app initialization, theme packages, or <Theme> to make the
22
+ * theme available to SSR-safe resolvers by name.
23
+ */
24
+ export function registerTheme(theme: DefinedTheme): void {
25
+ themeRegistry.set(theme.name, theme);
26
+ }
27
+
28
+ /**
29
+ * Return a previously registered theme by name.
30
+ */
31
+ export function getRegisteredTheme(
32
+ name: string | null | undefined,
33
+ ): DefinedTheme | null {
34
+ if (name == null || name === '') {
35
+ return null;
36
+ }
37
+ return themeRegistry.get(name) ?? null;
38
+ }
39
+
40
+ /**
41
+ * Return all registered themes keyed by theme name.
42
+ */
43
+ export function getRegisteredThemes(): ReadonlyMap<string, DefinedTheme> {
44
+ return new Map(themeRegistry);
45
+ }
46
+
47
+ /**
48
+ * Reset the theme registry. For testing only.
49
+ * @internal
50
+ */
51
+ export function resetThemes(): void {
52
+ themeRegistry.clear();
53
+ }
@@ -148,38 +148,9 @@ export type TextSize =
148
148
  /**
149
149
  * Font weight variants for Text/Heading
150
150
  */
151
- export type TextWeight = 'normal' | 'medium' | 'semibold' | 'bold';
151
+ import type {TextColorMap} from '../Text';
152
152
 
153
- /**
154
- * Extensible map of text color variants for Text/Heading.
155
- *
156
- * Themes add custom colors via component overrides in defineTheme; a custom
157
- * color renders with the `primary` baseline color from StyleX and receives its
158
- * actual color from theme CSS (`.astryx-text.<color>` / `.astryx-heading.<color>`),
159
- * exactly like custom text `type`s.
160
- *
161
- * To add type-safe custom colors, use module augmentation — the same technique
162
- * as `ButtonVariantMap` etc.:
163
- * ```ts
164
- * declare module '@astryxdesign/core/Text' {
165
- * interface TextColorMap {
166
- * brand: true;
167
- * danger: true;
168
- * }
169
- * }
170
- * ```
171
- *
172
- * `astryx theme build` generates these augmentations automatically when it
173
- * detects new `color:*` values in a theme's Text/Heading component overrides.
174
- */
175
- export interface TextColorMap {
176
- primary: true;
177
- secondary: true;
178
- disabled: true;
179
- placeholder: true;
180
- accent: true;
181
- inherit: true;
182
- }
153
+ export type TextWeight = 'normal' | 'medium' | 'semibold' | 'bold';
183
154
 
184
155
  /**
185
156
  * Built-in text color variants for Text/Heading. The concrete keys that ship
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
- /** @type {import('../docs-types').HookDoc} */
3
+ /** @type {import('@astryxdesign/cli/authoring').HookDoc} */
4
4
  export const docs = {
5
5
  name: 'useTheme',
6
6
  displayName: 'useTheme',
@@ -87,7 +87,7 @@ export const docs = {
87
87
  importPath: '@astryxdesign/core/theme',
88
88
  };
89
89
 
90
- /** @type {import('../docs-types').HookTranslationDoc} */
90
+ /** @type {import('@astryxdesign/cli/authoring').HookTranslationDoc} */
91
91
  export const docsDense = {
92
92
  description:
93
93
  'Programmatic access to theme tokens for SVG/canvas/charts needing JS values instead of CSS vars.',
@@ -5,6 +5,7 @@ import {render, renderHook, act, waitFor} from '@testing-library/react';
5
5
  import React from 'react';
6
6
  import {Theme} from './Theme';
7
7
  import {defineTheme} from './defineTheme';
8
+ import {resetThemes} from './themeRegistry';
8
9
  import {useTheme} from './useTheme';
9
10
  import {resolveThemeTokens} from './tokens';
10
11
 
@@ -152,6 +153,8 @@ describe('useTheme', () => {
152
153
  // straight to OS preference (see Theme.tsx's useRootThemeSync).
153
154
  describe('useTheme mode resolution without a ThemeContext ancestor', () => {
154
155
  afterEach(async () => {
156
+ resetThemes();
157
+ document.documentElement.removeAttribute('data-astryx-theme');
155
158
  // The hook from each `it` below is still mounted and subscribed to the
156
159
  // shared MutationObserver when this runs (RTL's own cleanup — which
157
160
  // unmounts it — is registered after this file's afterEach), so removing
@@ -184,6 +187,46 @@ describe('useTheme mode resolution without a ThemeContext ancestor', () => {
184
187
 
185
188
  await waitFor(() => expect(result.current.mode).toBe('dark'));
186
189
  });
190
+
191
+ it('resolves registered theme tokens from <html data-astryx-theme> when set', () => {
192
+ defineTheme({
193
+ name: 'root-brand',
194
+ tokens: {'--color-accent': ['#010203', '#AABBCC']},
195
+ });
196
+ document.documentElement.setAttribute('data-astryx-theme', 'root-brand');
197
+ document.documentElement.setAttribute('data-theme', 'dark');
198
+
199
+ const {result} = renderHook(() => useTheme());
200
+
201
+ expect(result.current.name).toBe('root-brand');
202
+ expect(result.current.token('--color-accent')).toBe('#AABBCC');
203
+ });
204
+
205
+ it('stays live when <html data-astryx-theme> changes after mount', async () => {
206
+ defineTheme({
207
+ name: 'first-brand',
208
+ tokens: {'--color-accent': '#111111'},
209
+ });
210
+ defineTheme({
211
+ name: 'second-brand',
212
+ tokens: {'--color-accent': '#222222'},
213
+ });
214
+ document.documentElement.setAttribute('data-astryx-theme', 'first-brand');
215
+
216
+ const {result} = renderHook(() => useTheme());
217
+ expect(result.current.name).toBe('first-brand');
218
+ expect(result.current.token('--color-accent')).toBe('#111111');
219
+
220
+ act(() => {
221
+ document.documentElement.setAttribute(
222
+ 'data-astryx-theme',
223
+ 'second-brand',
224
+ );
225
+ });
226
+
227
+ await waitFor(() => expect(result.current.name).toBe('second-brand'));
228
+ expect(result.current.token('--color-accent')).toBe('#222222');
229
+ });
187
230
  });
188
231
 
189
232
  // Covers the singleton MutationObserver + no-op gating in useRootThemeModeAttr:
@@ -193,7 +236,9 @@ describe('useTheme mode resolution without a ThemeContext ancestor', () => {
193
236
  // zero as they unmount.
194
237
  describe('useTheme root-attribute observer lifecycle', () => {
195
238
  afterEach(() => {
239
+ resetThemes();
196
240
  document.documentElement.removeAttribute('data-theme');
241
+ document.documentElement.removeAttribute('data-astryx-theme');
197
242
  // vi.stubGlobal'd MutationObserver stubs below are torn down here even if
198
243
  // a test fails partway through, instead of relying on a manual restore
199
244
  // line at the end of each test that a mid-test throw would skip.
@@ -237,13 +282,13 @@ describe('useTheme root-attribute observer lifecycle', () => {
237
282
  const first = renderHook(() => useTheme());
238
283
  const second = renderHook(() => useTheme());
239
284
 
240
- expect(ObserverSpy).toHaveBeenCalledTimes(1);
241
- expect(observe).toHaveBeenCalledTimes(1);
285
+ expect(ObserverSpy).toHaveBeenCalledTimes(2);
286
+ expect(observe).toHaveBeenCalledTimes(2);
242
287
 
243
288
  first.unmount();
244
289
  expect(disconnect).not.toHaveBeenCalled();
245
290
 
246
291
  second.unmount();
247
- expect(disconnect).toHaveBeenCalledTimes(1);
292
+ expect(disconnect).toHaveBeenCalledTimes(2);
248
293
  });
249
294
  });
@@ -5,17 +5,17 @@
5
5
  /**
6
6
  * @file useTheme.ts
7
7
  * @input ThemeContext provided by Theme
8
- * @output Exports useTheme hook for programmatic access to resolved theme tokens
8
+ * @output Exports useTheme and useThemeName hooks for programmatic theme access
9
9
  * @position Theme hook; used by data viz, canvas, and non-CSS consumers
10
10
  *
11
11
  * Provides synchronous access to theme token values resolved for the
12
12
  * current color mode — no DOM reads on the provider path, no double render.
13
- * Without a reachable ThemeContext it consults `<html data-theme>` (kept in
14
- * sync by Theme) via a single shared, refcounted MutationObserver before
15
- * assuming OS preference; provider-path consumers subscribe to a no-op
16
- * store instead (the same args-switch technique useMediaQuery uses), so
17
- * mounting under a Theme never creates an observer. Token resolution is
18
- * shared with the server-safe helpers in ./tokens.ts.
13
+ * Without a reachable ThemeContext it consults `<html data-theme>` and
14
+ * `<html data-astryx-theme>` (kept in sync by Theme) via shared, refcounted
15
+ * MutationObservers before assuming OS preference/default tokens. Provider-path
16
+ * consumers subscribe to no-op stores instead, so mounting under a Theme never
17
+ * creates an observer. Token resolution is shared with the server-safe helpers
18
+ * in ./tokens.ts.
19
19
  *
20
20
  * SYNC: When modified, update:
21
21
  * - /packages/core/src/theme/index.ts
@@ -25,6 +25,8 @@ import {createContext, use, useMemo, useSyncExternalStore} from 'react';
25
25
  import type {ThemeMode} from './types';
26
26
  import type {DefinedTheme} from './defineTheme';
27
27
  import {resolveThemeTokens} from './tokens';
28
+ import {getRegisteredTheme} from './themeRegistry';
29
+ import {dataAttr} from '../naming';
28
30
  import {useMediaQuery} from '../hooks/useMediaQuery';
29
31
 
30
32
  // =============================================================================
@@ -92,7 +94,7 @@ export interface UseThemeReturn {
92
94
  // Hook
93
95
  // =============================================================================
94
96
 
95
- function getRootThemeAttrSnapshot(): 'light' | 'dark' | null {
97
+ function getRootModeAttrSnapshot(): 'light' | 'dark' | null {
96
98
  if (typeof document === 'undefined') {
97
99
  return null;
98
100
  }
@@ -100,45 +102,88 @@ function getRootThemeAttrSnapshot(): 'light' | 'dark' | null {
100
102
  return attr === 'light' || attr === 'dark' ? attr : null;
101
103
  }
102
104
 
103
- function getRootThemeAttrServerSnapshot(): 'light' | 'dark' | null {
105
+ function getRootModeAttrServerSnapshot(): 'light' | 'dark' | null {
104
106
  return null;
105
107
  }
106
108
 
107
- function getNullThemeMode(): null {
109
+ function getRootNameAttrSnapshot(): string | null {
110
+ if (typeof document === 'undefined') {
111
+ return null;
112
+ }
113
+ return document.documentElement.getAttribute(dataAttr('theme'));
114
+ }
115
+
116
+ function getRootNameAttrServerSnapshot(): string | null {
117
+ return null;
118
+ }
119
+
120
+ function getNullThemeSnapshot(): null {
108
121
  return null;
109
122
  }
110
123
 
111
124
  // Every no-context consumer wants the same <html data-theme> attribute, so
112
125
  // one MutationObserver — refcounted via this listener set — serves all of
113
126
  // them instead of one per consumer.
114
- const rootThemeAttrListeners = new Set<() => void>();
115
- let rootThemeAttrObserver: MutationObserver | null = null;
127
+ const rootModeAttrListeners = new Set<() => void>();
128
+ let rootModeAttrObserver: MutationObserver | null = null;
116
129
 
117
- function notifyRootThemeAttrListeners(): void {
118
- for (const listener of rootThemeAttrListeners) {
130
+ const rootNameAttrListeners = new Set<() => void>();
131
+ let rootNameAttrObserver: MutationObserver | null = null;
132
+
133
+ function notifyRootModeAttrListeners(): void {
134
+ for (const listener of rootModeAttrListeners) {
119
135
  listener();
120
136
  }
121
137
  }
122
138
 
123
- function subscribeRootThemeAttr(onStoreChange: () => void): () => void {
124
- rootThemeAttrListeners.add(onStoreChange);
139
+ function subscribeRootModeAttr(onStoreChange: () => void): () => void {
140
+ rootModeAttrListeners.add(onStoreChange);
125
141
 
126
142
  if (
127
- rootThemeAttrListeners.size === 1 &&
143
+ rootModeAttrListeners.size === 1 &&
128
144
  typeof MutationObserver !== 'undefined'
129
145
  ) {
130
- rootThemeAttrObserver = new MutationObserver(notifyRootThemeAttrListeners);
131
- rootThemeAttrObserver.observe(document.documentElement, {
146
+ rootModeAttrObserver = new MutationObserver(notifyRootModeAttrListeners);
147
+ rootModeAttrObserver.observe(document.documentElement, {
132
148
  attributes: true,
133
149
  attributeFilter: ['data-theme'],
134
150
  });
135
151
  }
136
152
 
137
153
  return () => {
138
- rootThemeAttrListeners.delete(onStoreChange);
139
- if (rootThemeAttrListeners.size === 0 && rootThemeAttrObserver) {
140
- rootThemeAttrObserver.disconnect();
141
- rootThemeAttrObserver = null;
154
+ rootModeAttrListeners.delete(onStoreChange);
155
+ if (rootModeAttrListeners.size === 0 && rootModeAttrObserver) {
156
+ rootModeAttrObserver.disconnect();
157
+ rootModeAttrObserver = null;
158
+ }
159
+ };
160
+ }
161
+
162
+ function notifyRootNameAttrListeners(): void {
163
+ for (const listener of rootNameAttrListeners) {
164
+ listener();
165
+ }
166
+ }
167
+
168
+ function subscribeRootNameAttr(onStoreChange: () => void): () => void {
169
+ rootNameAttrListeners.add(onStoreChange);
170
+
171
+ if (
172
+ rootNameAttrListeners.size === 1 &&
173
+ typeof MutationObserver !== 'undefined'
174
+ ) {
175
+ rootNameAttrObserver = new MutationObserver(notifyRootNameAttrListeners);
176
+ rootNameAttrObserver.observe(document.documentElement, {
177
+ attributes: true,
178
+ attributeFilter: [dataAttr('theme')],
179
+ });
180
+ }
181
+
182
+ return () => {
183
+ rootNameAttrListeners.delete(onStoreChange);
184
+ if (rootNameAttrListeners.size === 0 && rootNameAttrObserver) {
185
+ rootNameAttrObserver.disconnect();
186
+ rootNameAttrObserver = null;
142
187
  }
143
188
  };
144
189
  }
@@ -154,14 +199,38 @@ function subscribeNoop(): () => void {
154
199
  * a no-op store when a ThemeContext exists — instead of skipping the hook
155
200
  * call, so provider-path consumers never touch the DOM or the observer.
156
201
  */
157
- function useRootThemeModeAttr(hasCtx: boolean): 'light' | 'dark' | null {
202
+ function useRootModeAttr(hasCtx: boolean): 'light' | 'dark' | null {
203
+ return useSyncExternalStore(
204
+ hasCtx ? subscribeNoop : subscribeRootModeAttr,
205
+ hasCtx ? getNullThemeSnapshot : getRootModeAttrSnapshot,
206
+ getRootModeAttrServerSnapshot,
207
+ );
208
+ }
209
+
210
+ function useRootThemeNameAttr(hasCtx: boolean): string | null {
158
211
  return useSyncExternalStore(
159
- hasCtx ? subscribeNoop : subscribeRootThemeAttr,
160
- hasCtx ? getNullThemeMode : getRootThemeAttrSnapshot,
161
- getRootThemeAttrServerSnapshot,
212
+ hasCtx ? subscribeNoop : subscribeRootNameAttr,
213
+ hasCtx ? getNullThemeSnapshot : getRootNameAttrSnapshot,
214
+ getRootNameAttrServerSnapshot,
162
215
  );
163
216
  }
164
217
 
218
+ /**
219
+ * Return the nearest active Astryx theme name.
220
+ *
221
+ * Uses ThemeContext when present and otherwise follows the root Theme's
222
+ * <html data-astryx-theme> attribute. This is intentionally lighter than
223
+ * useTheme() for consumers that only need theme identity, such as semantic
224
+ * icon resolution.
225
+ */
226
+ export function useThemeName(): string | null {
227
+ const ctx = use(ThemeContext);
228
+ const hasCtx = ctx != null;
229
+ const rootThemeName = useRootThemeNameAttr(hasCtx);
230
+
231
+ return ctx?.theme.name ?? rootThemeName;
232
+ }
233
+
165
234
  /**
166
235
  * Access the current Astryx theme's token values, resolved for the active color mode.
167
236
  *
@@ -193,13 +262,15 @@ export function useTheme(): UseThemeReturn {
193
262
  // Falls back to the root Theme's mode via <html data-theme> when there's
194
263
  // no ThemeContext ancestor (e.g. useToast's detached fallback viewport).
195
264
  // Resolves to null when `ctx` is present, so it has no effect there.
196
- const rootAttrMode = useRootThemeModeAttr(ctx != null);
265
+ const hasCtx = ctx != null;
266
+ const rootAttrMode = useRootModeAttr(hasCtx);
267
+ const rootThemeName = useRootThemeNameAttr(hasCtx);
197
268
 
198
269
  // Resolve 'system' to 'light' | 'dark' using the OS preference
199
270
  const prefersDark = useMediaQuery('(prefers-color-scheme: dark)');
200
271
 
201
272
  const mode = ctx?.mode ?? rootAttrMode ?? 'system';
202
- const theme = ctx?.theme ?? null;
273
+ const theme = ctx?.theme ?? getRegisteredTheme(rootThemeName);
203
274
 
204
275
  const effectiveMode: 'light' | 'dark' =
205
276
  mode === 'system' ? (prefersDark ? 'dark' : 'light') : mode;