@astryxdesign/core 0.1.4-canary.ff77e1c → 0.1.4

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 (598) hide show
  1. package/dist/AlertDialog/AlertDialog.d.ts +1 -1
  2. package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
  3. package/dist/AlertDialog/AlertDialog.js +18 -20
  4. package/dist/AlertDialog/useImperativeAlertDialog.js +3 -3
  5. package/dist/AppShell/AppShell.d.ts +1 -1
  6. package/dist/AppShell/AppShell.d.ts.map +1 -1
  7. package/dist/AppShell/AppShell.js +53 -55
  8. package/dist/AspectRatio/AspectRatio.d.ts +10 -48
  9. package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
  10. package/dist/AspectRatio/AspectRatio.js +12 -33
  11. package/dist/AspectRatio/index.d.ts +1 -1
  12. package/dist/AspectRatio/index.d.ts.map +1 -1
  13. package/dist/Avatar/Avatar.d.ts.map +1 -1
  14. package/dist/Avatar/Avatar.js +25 -27
  15. package/dist/Avatar/AvatarStatusDot.js +5 -5
  16. package/dist/AvatarGroup/AvatarGroup.js +5 -5
  17. package/dist/AvatarGroup/AvatarGroupOverflow.js +5 -5
  18. package/dist/Badge/Badge.js +3 -3
  19. package/dist/Banner/Banner.d.ts.map +1 -1
  20. package/dist/Banner/Banner.js +25 -32
  21. package/dist/Blockquote/Blockquote.js +7 -7
  22. package/dist/Breadcrumbs/BreadcrumbItem.js +17 -17
  23. package/dist/Breadcrumbs/Breadcrumbs.js +7 -7
  24. package/dist/Button/Button.js +19 -19
  25. package/dist/ButtonGroup/ButtonGroup.js +7 -7
  26. package/dist/Calendar/Calendar.d.ts.map +1 -1
  27. package/dist/Calendar/Calendar.js +48 -68
  28. package/dist/Calendar/dayCellUtils.d.ts.map +1 -1
  29. package/dist/Calendar/styles.d.ts +2 -2
  30. package/dist/Calendar/styles.d.ts.map +1 -1
  31. package/dist/Calendar/styles.js +2 -2
  32. package/dist/Card/Card.d.ts +2 -4
  33. package/dist/Card/Card.d.ts.map +1 -1
  34. package/dist/Card/Card.js +10 -18
  35. package/dist/Carousel/Carousel.d.ts.map +1 -1
  36. package/dist/Carousel/Carousel.js +21 -24
  37. package/dist/Carousel/carousel.markers.stylex.d.ts +7 -0
  38. package/dist/Carousel/carousel.markers.stylex.d.ts.map +1 -0
  39. package/dist/Carousel/carousel.markers.stylex.js +12 -0
  40. package/dist/Center/Center.js +3 -3
  41. package/dist/Chat/ChatComposer.js +23 -23
  42. package/dist/Chat/ChatComposerDrawer.js +14 -14
  43. package/dist/Chat/ChatComposerInput.d.ts +1 -1
  44. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  45. package/dist/Chat/ChatComposerInput.js +15 -27
  46. package/dist/Chat/ChatDictationButton.d.ts +1 -1
  47. package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
  48. package/dist/Chat/ChatDictationButton.js +11 -13
  49. package/dist/Chat/ChatLayout.js +17 -17
  50. package/dist/Chat/ChatLayoutScrollButton.d.ts +1 -1
  51. package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
  52. package/dist/Chat/ChatLayoutScrollButton.js +10 -12
  53. package/dist/Chat/ChatMessage.js +12 -12
  54. package/dist/Chat/ChatMessageBubble.js +7 -7
  55. package/dist/Chat/ChatMessageList.js +14 -14
  56. package/dist/Chat/ChatMessageMetadata.d.ts +1 -1
  57. package/dist/Chat/ChatMessageMetadata.d.ts.map +1 -1
  58. package/dist/Chat/ChatMessageMetadata.js +12 -14
  59. package/dist/Chat/ChatPastedTextToken.js +13 -13
  60. package/dist/Chat/ChatSendButton.js +3 -3
  61. package/dist/Chat/ChatSystemMessage.d.ts +1 -1
  62. package/dist/Chat/ChatSystemMessage.d.ts.map +1 -1
  63. package/dist/Chat/ChatSystemMessage.js +17 -17
  64. package/dist/Chat/ChatTokenizedText.d.ts +1 -1
  65. package/dist/Chat/ChatTokenizedText.d.ts.map +1 -1
  66. package/dist/Chat/ChatTokenizedText.js +15 -24
  67. package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
  68. package/dist/Chat/ChatToolCalls.js +74 -81
  69. package/dist/Chat/index.d.ts +1 -1
  70. package/dist/Chat/index.d.ts.map +1 -1
  71. package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
  72. package/dist/Chat/useTriggerMenu.js +15 -15
  73. package/dist/CheckboxInput/CheckboxInput.d.ts +1 -1
  74. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  75. package/dist/CheckboxInput/CheckboxInput.js +23 -25
  76. package/dist/CheckboxList/CheckboxList.js +9 -9
  77. package/dist/CheckboxList/CheckboxListItem.d.ts +1 -1
  78. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  79. package/dist/CheckboxList/CheckboxListItem.js +6 -8
  80. package/dist/Citation/Citation.js +10 -10
  81. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  82. package/dist/ClickableCard/ClickableCard.js +9 -32
  83. package/dist/Code/Code.js +3 -3
  84. package/dist/CodeBlock/CodeBlock.d.ts +1 -10
  85. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  86. package/dist/CodeBlock/CodeBlock.js +52 -88
  87. package/dist/Collapsible/Collapsible.d.ts +3 -9
  88. package/dist/Collapsible/Collapsible.d.ts.map +1 -1
  89. package/dist/Collapsible/Collapsible.js +22 -110
  90. package/dist/Collapsible/CollapsibleGroup.d.ts +7 -39
  91. package/dist/Collapsible/CollapsibleGroup.d.ts.map +1 -1
  92. package/dist/Collapsible/CollapsibleGroup.js +12 -73
  93. package/dist/Collapsible/CollapsibleGroupContext.d.ts +0 -31
  94. package/dist/Collapsible/CollapsibleGroupContext.d.ts.map +1 -1
  95. package/dist/Collapsible/CollapsibleGroupContext.js +3 -33
  96. package/dist/Collapsible/index.d.ts +0 -1
  97. package/dist/Collapsible/index.d.ts.map +1 -1
  98. package/dist/Collapsible/useCollapsible.d.ts +1 -4
  99. package/dist/Collapsible/useCollapsible.d.ts.map +1 -1
  100. package/dist/Collapsible/useCollapsible.js +6 -20
  101. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  102. package/dist/CommandPalette/CommandPalette.js +34 -36
  103. package/dist/CommandPalette/CommandPaletteEmpty.js +3 -3
  104. package/dist/CommandPalette/CommandPaletteFooter.js +16 -16
  105. package/dist/CommandPalette/CommandPaletteGroup.js +5 -5
  106. package/dist/CommandPalette/CommandPaletteInput.js +13 -13
  107. package/dist/CommandPalette/CommandPaletteItem.js +3 -3
  108. package/dist/CommandPalette/CommandPaletteList.js +3 -3
  109. package/dist/ContextMenu/ContextMenu.d.ts +2 -7
  110. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  111. package/dist/ContextMenu/ContextMenu.js +43 -76
  112. package/dist/DateInput/DateInput.js +18 -18
  113. package/dist/DateRangeInput/DateRangeInput.js +21 -21
  114. package/dist/DateTimeInput/DateTimeInput.d.ts +2 -5
  115. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  116. package/dist/DateTimeInput/DateTimeInput.js +26 -30
  117. package/dist/DateTimeInput/index.d.ts +1 -1
  118. package/dist/DateTimeInput/index.d.ts.map +1 -1
  119. package/dist/Dialog/Dialog.js +9 -9
  120. package/dist/Dialog/DialogHeader.js +16 -16
  121. package/dist/Dialog/useImperativeDialog.js +3 -3
  122. package/dist/Divider/Divider.js +7 -7
  123. package/dist/DropdownMenu/DropdownMenu.js +10 -10
  124. package/dist/DropdownMenu/DropdownMenuItem.d.ts +17 -2
  125. package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
  126. package/dist/DropdownMenu/DropdownMenuItem.js +3 -3
  127. package/dist/DropdownMenu/renderDropdownItems.js +10 -10
  128. package/dist/EmptyState/EmptyState.js +9 -9
  129. package/dist/Field/Field.js +17 -17
  130. package/dist/Field/FieldLabel.js +15 -15
  131. package/dist/Field/InputClearButton.js +5 -5
  132. package/dist/FieldStatus/FieldStatus.js +3 -3
  133. package/dist/FileInput/FileInput.js +29 -29
  134. package/dist/FormLayout/FormLayout.js +5 -5
  135. package/dist/Grid/Grid.d.ts +3 -4
  136. package/dist/Grid/Grid.d.ts.map +1 -1
  137. package/dist/Grid/Grid.js +12 -29
  138. package/dist/Grid/GridSpan.js +3 -3
  139. package/dist/HStack/HStack.js +3 -3
  140. package/dist/Heading/Heading.js +10 -10
  141. package/dist/HoverCard/HoverCard.js +9 -9
  142. package/dist/HoverCard/useHoverCard.d.ts +1 -5
  143. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  144. package/dist/HoverCard/useHoverCard.js +3 -3
  145. package/dist/Icon/Icon.d.ts.map +1 -1
  146. package/dist/Icon/Icon.js +12 -16
  147. package/dist/Icon/defaultIcons.js +116 -116
  148. package/dist/IconButton/IconButton.js +3 -3
  149. package/dist/InputGroup/InputGroup.js +11 -11
  150. package/dist/InputGroup/InputGroupText.js +3 -3
  151. package/dist/Item/Item.js +18 -18
  152. package/dist/Kbd/Kbd.js +5 -5
  153. package/dist/Layer/LayerProvider.js +7 -7
  154. package/dist/Layer/useLayer.d.ts +2 -29
  155. package/dist/Layer/useLayer.d.ts.map +1 -1
  156. package/dist/Layer/useLayer.js +31 -44
  157. package/dist/Layout/Layout.js +21 -21
  158. package/dist/Layout/LayoutContent.js +3 -3
  159. package/dist/Layout/LayoutFooter.js +5 -5
  160. package/dist/Layout/LayoutHeader.js +5 -5
  161. package/dist/Layout/LayoutPanel.js +3 -3
  162. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  163. package/dist/Lightbox/Lightbox.js +31 -55
  164. package/dist/Lightbox/useLightbox.js +3 -3
  165. package/dist/Link/Link.js +15 -15
  166. package/dist/Link/LinkProvider.js +3 -3
  167. package/dist/Link/useLinkify.js +3 -3
  168. package/dist/List/List.js +11 -11
  169. package/dist/List/ListItem.js +11 -11
  170. package/dist/Markdown/Markdown.d.ts.map +1 -1
  171. package/dist/Markdown/Markdown.js +102 -102
  172. package/dist/MetadataList/MetadataList.js +10 -10
  173. package/dist/MetadataList/MetadataListItem.js +15 -15
  174. package/dist/MobileNav/MobileNav.d.ts +1 -1
  175. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  176. package/dist/MobileNav/MobileNav.js +23 -26
  177. package/dist/MobileNav/MobileNavToggle.js +5 -5
  178. package/dist/MoreMenu/MoreMenu.js +3 -3
  179. package/dist/MultiSelector/MultiSelector.js +56 -56
  180. package/dist/NavIcon/NavIcon.js +3 -3
  181. package/dist/NavMenu/NavHeadingMenu.js +5 -5
  182. package/dist/NavMenu/NavHeadingMenuItem.js +8 -8
  183. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  184. package/dist/NumberInput/NumberInput.js +32 -48
  185. package/dist/Outline/Outline.js +15 -15
  186. package/dist/OverflowList/OverflowList.js +8 -8
  187. package/dist/Overlay/Overlay.js +3 -3
  188. package/dist/Overlay/OverlayScrim.js +5 -5
  189. package/dist/Overlay/useOverlay.js +3 -3
  190. package/dist/Pagination/Pagination.d.ts +1 -1
  191. package/dist/Pagination/Pagination.d.ts.map +1 -1
  192. package/dist/Pagination/Pagination.js +72 -125
  193. package/dist/Popover/Popover.js +16 -16
  194. package/dist/Popover/usePopover.js +7 -7
  195. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  196. package/dist/PowerSearch/PowerSearch.js +92 -110
  197. package/dist/PowerSearch/PowerSearchEditPopover.js +84 -84
  198. package/dist/PowerSearch/PowerSearchFilterEditor.js +3 -3
  199. package/dist/PowerSearch/PowerSearchToken.js +5 -5
  200. package/dist/PowerSearch/PowerSearchValueEditor.js +54 -54
  201. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  202. package/dist/ProgressBar/ProgressBar.js +18 -25
  203. package/dist/RadioList/RadioList.js +7 -7
  204. package/dist/RadioList/RadioListItem.d.ts +1 -1
  205. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  206. package/dist/RadioList/RadioListItem.js +21 -24
  207. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  208. package/dist/Resizable/ResizeHandle.js +10 -28
  209. package/dist/Section/Section.js +5 -5
  210. package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
  211. package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  212. package/dist/SegmentedControl/SegmentedControl.js +10 -32
  213. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  214. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  215. package/dist/SegmentedControl/SegmentedControlItem.js +12 -18
  216. package/dist/SelectableCard/SelectableCard.js +5 -5
  217. package/dist/Selector/Selector.js +46 -46
  218. package/dist/Selector/SelectorOption.js +3 -3
  219. package/dist/SideNav/SideNav.d.ts.map +1 -1
  220. package/dist/SideNav/SideNav.js +34 -38
  221. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  222. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  223. package/dist/SideNav/SideNavCollapseButton.js +6 -8
  224. package/dist/SideNav/SideNavHeading.js +87 -87
  225. package/dist/SideNav/SideNavItem.js +42 -42
  226. package/dist/SideNav/SideNavSection.d.ts +1 -1
  227. package/dist/SideNav/SideNavSection.d.ts.map +1 -1
  228. package/dist/SideNav/SideNavSection.js +16 -18
  229. package/dist/Skeleton/Skeleton.js +3 -3
  230. package/dist/Slider/Slider.js +23 -23
  231. package/dist/Spinner/Spinner.js +9 -9
  232. package/dist/StatusDot/StatusDot.js +5 -5
  233. package/dist/Switch/Switch.d.ts +4 -8
  234. package/dist/Switch/Switch.d.ts.map +1 -1
  235. package/dist/Switch/Switch.js +29 -34
  236. package/dist/TabList/Tab.js +18 -18
  237. package/dist/TabList/TabList.js +5 -5
  238. package/dist/TabList/TabMenu.d.ts.map +1 -1
  239. package/dist/TabList/TabMenu.js +30 -57
  240. package/dist/TabList/tab.markers.stylex.d.ts +1 -1
  241. package/dist/Table/BaseTable.d.ts.map +1 -1
  242. package/dist/Table/BaseTable.js +39 -50
  243. package/dist/Table/Table.js +7 -7
  244. package/dist/Table/TableBody.d.ts +1 -1
  245. package/dist/Table/TableBody.d.ts.map +1 -1
  246. package/dist/Table/TableBody.js +5 -9
  247. package/dist/Table/TableCell.js +3 -3
  248. package/dist/Table/TableFooter.d.ts +1 -1
  249. package/dist/Table/TableFooter.d.ts.map +1 -1
  250. package/dist/Table/TableFooter.js +5 -9
  251. package/dist/Table/TableHeader.d.ts +1 -1
  252. package/dist/Table/TableHeader.d.ts.map +1 -1
  253. package/dist/Table/TableHeader.js +5 -9
  254. package/dist/Table/TableHeaderCell.js +3 -3
  255. package/dist/Table/TableRow.js +5 -5
  256. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  257. package/dist/Table/plugins/columnResize/useTableColumnResize.js +11 -14
  258. package/dist/Table/plugins/filtering/useTableFiltering.js +71 -71
  259. package/dist/Table/plugins/pagination/paginateData.d.ts.map +1 -1
  260. package/dist/Table/plugins/pagination/paginateData.js +1 -5
  261. package/dist/Table/plugins/pagination/useTablePagination.js +7 -7
  262. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +22 -22
  263. package/dist/Table/plugins/selection/useTableSelection.js +18 -18
  264. package/dist/Table/plugins/selection/useTableSelectionState.d.ts.map +1 -1
  265. package/dist/Table/plugins/selection/useTableSelectionState.js +1 -11
  266. package/dist/Table/plugins/sortable/useTableSortable.js +17 -17
  267. package/dist/Table/plugins/sortable/useTableSortableState.d.ts.map +1 -1
  268. package/dist/Table/plugins/sortable/useTableSortableState.js +4 -8
  269. package/dist/Table/tableContextMenu.js +9 -9
  270. package/dist/Text/Text.js +10 -10
  271. package/dist/TextArea/TextArea.js +14 -14
  272. package/dist/TextInput/TextInput.js +15 -15
  273. package/dist/Thumbnail/Thumbnail.d.ts +2 -3
  274. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  275. package/dist/Thumbnail/Thumbnail.js +29 -30
  276. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  277. package/dist/TimeInput/TimeInput.js +21 -26
  278. package/dist/Timestamp/Timestamp.d.ts +1 -1
  279. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  280. package/dist/Timestamp/Timestamp.js +26 -37
  281. package/dist/Toast/Toast.d.ts.map +1 -1
  282. package/dist/Toast/Toast.js +17 -25
  283. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  284. package/dist/Toast/ToastViewport.js +11 -23
  285. package/dist/Toast/useToast.d.ts.map +1 -1
  286. package/dist/Toast/useToast.js +4 -44
  287. package/dist/ToggleButton/ToggleButton.js +12 -12
  288. package/dist/ToggleButton/ToggleButtonGroup.js +5 -5
  289. package/dist/Token/Token.js +21 -21
  290. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  291. package/dist/Tokenizer/Tokenizer.js +34 -36
  292. package/dist/Toolbar/Toolbar.js +18 -18
  293. package/dist/Tooltip/Tooltip.js +11 -11
  294. package/dist/Tooltip/useTooltip.d.ts +1 -5
  295. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  296. package/dist/Tooltip/useTooltip.js +3 -3
  297. package/dist/TopNav/TopNav.js +32 -32
  298. package/dist/TopNav/TopNavHeading.js +67 -67
  299. package/dist/TopNav/TopNavItem.js +5 -5
  300. package/dist/TopNav/TopNavMegaMenu.js +30 -30
  301. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
  302. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
  303. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +14 -25
  304. package/dist/TopNav/TopNavMegaMenuItem.js +16 -16
  305. package/dist/TopNav/TopNavMenu.js +32 -32
  306. package/dist/TreeList/TreeList.js +8 -8
  307. package/dist/TreeList/TreeListBranches.js +11 -11
  308. package/dist/TreeList/TreeListItem.js +30 -30
  309. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  310. package/dist/Typeahead/BaseTypeahead.js +20 -23
  311. package/dist/Typeahead/Typeahead.js +12 -12
  312. package/dist/Typeahead/TypeaheadItem.js +10 -10
  313. package/dist/VStack/VStack.js +3 -3
  314. package/dist/astryx.css +0 -7
  315. package/dist/astryx.umd.js +59 -59
  316. package/dist/astryx.umd.js.map +4 -4
  317. package/dist/docs-types.d.ts +2 -8
  318. package/dist/docs-types.d.ts.map +1 -1
  319. package/dist/hooks/focusableSelector.d.ts +1 -1
  320. package/dist/hooks/focusableSelector.d.ts.map +1 -1
  321. package/dist/hooks/focusableSelector.js +1 -1
  322. package/dist/hooks/index.d.ts +0 -2
  323. package/dist/hooks/index.d.ts.map +1 -1
  324. package/dist/hooks/index.js +0 -1
  325. package/dist/hooks/useFocusTrap.d.ts +0 -3
  326. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  327. package/dist/hooks/useFocusTrap.js +1 -38
  328. package/dist/hooks/useInteractiveRole.d.ts +2 -6
  329. package/dist/hooks/useInteractiveRole.d.ts.map +1 -1
  330. package/dist/hooks/useInteractiveRole.js +2 -6
  331. package/dist/hooks/useKeyboardHint.js +9 -9
  332. package/dist/hooks/useStreamingText.d.ts +1 -3
  333. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  334. package/dist/hooks/useStreamingText.js +5 -14
  335. package/dist/theme/MediaTheme.js +3 -3
  336. package/dist/theme/Theme.js +7 -7
  337. package/dist/theme/defineTheme.d.ts +1 -1
  338. package/dist/theme/defineTheme.d.ts.map +1 -1
  339. package/dist/theme/expandColorScale.d.ts.map +1 -1
  340. package/dist/theme/expandColorScale.js +3 -10
  341. package/dist/theme/hct.d.ts +15 -0
  342. package/dist/theme/hct.d.ts.map +1 -1
  343. package/dist/theme/hct.js +9 -9
  344. package/dist/theme/syntax/SyntaxTheme.js +5 -5
  345. package/dist/theme/tokens.d.ts +2 -10
  346. package/dist/theme/tokens.d.ts.map +1 -1
  347. package/dist/theme/tokens.js +4 -220
  348. package/dist/theme/useTheme.d.ts +2 -3
  349. package/dist/theme/useTheme.d.ts.map +1 -1
  350. package/dist/theme/useTheme.js +6 -73
  351. package/dist/utils/index.d.ts +0 -3
  352. package/dist/utils/index.d.ts.map +1 -1
  353. package/dist/utils/index.js +1 -3
  354. package/dist/utils/timeParser.d.ts.map +1 -1
  355. package/dist/utils/timeParser.js +5 -8
  356. package/package.json +3 -3
  357. package/src/AlertDialog/AlertDialog.doc.mjs +0 -4
  358. package/src/AlertDialog/AlertDialog.tsx +0 -2
  359. package/src/AppShell/AppShell.tsx +0 -2
  360. package/src/AspectRatio/AspectRatio.doc.mjs +1 -28
  361. package/src/AspectRatio/AspectRatio.test.tsx +1 -142
  362. package/src/AspectRatio/AspectRatio.tsx +10 -70
  363. package/src/AspectRatio/index.ts +1 -5
  364. package/src/Avatar/Avatar.doc.mjs +0 -11
  365. package/src/Avatar/Avatar.test.tsx +1 -32
  366. package/src/Avatar/Avatar.tsx +20 -12
  367. package/src/AvatarGroup/AvatarGroup.doc.mjs +0 -1
  368. package/src/Banner/Banner.doc.mjs +0 -8
  369. package/src/Banner/Banner.test.tsx +0 -38
  370. package/src/Banner/Banner.tsx +1 -8
  371. package/src/Calendar/Calendar.doc.mjs +1 -1
  372. package/src/Calendar/Calendar.test.tsx +17 -122
  373. package/src/Calendar/Calendar.tsx +5 -26
  374. package/src/Calendar/dayCellUtils.ts +1 -3
  375. package/src/Calendar/styles.ts +2 -12
  376. package/src/Card/Card.doc.mjs +1 -1
  377. package/src/Card/Card.tsx +6 -16
  378. package/src/Carousel/Carousel.doc.mjs +12 -12
  379. package/src/Carousel/Carousel.test.tsx +0 -13
  380. package/src/Carousel/Carousel.tsx +2 -4
  381. package/src/Carousel/carousel.markers.stylex.ts +10 -0
  382. package/src/Chat/Chat.doc.mjs +1 -1
  383. package/src/Chat/ChatComposerInput.test.tsx +1 -27
  384. package/src/Chat/ChatComposerInput.tsx +15 -20
  385. package/src/Chat/ChatDictationButton.tsx +4 -4
  386. package/src/Chat/ChatLayoutScrollButton.tsx +1 -3
  387. package/src/Chat/ChatMessageMetadata.tsx +6 -4
  388. package/src/Chat/ChatSystemMessage.test.tsx +11 -26
  389. package/src/Chat/ChatSystemMessage.tsx +7 -7
  390. package/src/Chat/ChatTokenizedText.test.tsx +16 -29
  391. package/src/Chat/ChatTokenizedText.tsx +8 -15
  392. package/src/Chat/ChatToolCalls.test.tsx +0 -55
  393. package/src/Chat/ChatToolCalls.tsx +12 -10
  394. package/src/Chat/index.ts +4 -1
  395. package/src/Chat/useTriggerMenu.tsx +4 -1
  396. package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
  397. package/src/CheckboxInput/CheckboxInput.test.tsx +4 -71
  398. package/src/CheckboxInput/CheckboxInput.tsx +0 -2
  399. package/src/CheckboxList/CheckboxList.test.tsx +0 -19
  400. package/src/CheckboxList/CheckboxListItem.tsx +2 -11
  401. package/src/Citation/Citation.doc.mjs +0 -5
  402. package/src/ClickableCard/ClickableCard.tsx +2 -45
  403. package/src/CodeBlock/CodeBlock.doc.mjs +2 -7
  404. package/src/CodeBlock/CodeBlock.test.tsx +3 -122
  405. package/src/CodeBlock/CodeBlock.tsx +4 -62
  406. package/src/Collapsible/Collapsible.doc.mjs +4 -8
  407. package/src/Collapsible/Collapsible.tsx +10 -86
  408. package/src/Collapsible/CollapsibleGroup.doc.mjs +3 -27
  409. package/src/Collapsible/CollapsibleGroup.test.tsx +0 -318
  410. package/src/Collapsible/CollapsibleGroup.tsx +9 -107
  411. package/src/Collapsible/CollapsibleGroupContext.tsx +2 -42
  412. package/src/Collapsible/index.ts +0 -4
  413. package/src/Collapsible/useCollapsible.ts +6 -20
  414. package/src/CommandPalette/CommandPalette.doc.mjs +0 -5
  415. package/src/CommandPalette/CommandPalette.tsx +3 -5
  416. package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +0 -5
  417. package/src/CommandPalette/CommandPaletteGroup.doc.mjs +0 -10
  418. package/src/CommandPalette/CommandPaletteInput.doc.mjs +0 -6
  419. package/src/CommandPalette/CommandPaletteItem.doc.mjs +0 -6
  420. package/src/CommandPalette/CommandPaletteList.doc.mjs +0 -9
  421. package/src/ContextMenu/ContextMenu.doc.mjs +0 -15
  422. package/src/ContextMenu/ContextMenu.test.tsx +0 -87
  423. package/src/ContextMenu/ContextMenu.tsx +28 -87
  424. package/src/ContextMenu/ContextMenuItem.doc.mjs +0 -6
  425. package/src/DateInput/DateInput.test.tsx +20 -11
  426. package/src/DateRangeInput/DateRangeInput.test.tsx +44 -31
  427. package/src/DateTimeInput/DateTimeInput.doc.mjs +2 -3
  428. package/src/DateTimeInput/DateTimeInput.test.tsx +16 -118
  429. package/src/DateTimeInput/DateTimeInput.tsx +2 -8
  430. package/src/DateTimeInput/index.ts +0 -1
  431. package/src/Dialog/Dialog.doc.mjs +0 -4
  432. package/src/Dialog/DialogHeader.doc.mjs +0 -45
  433. package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -1
  434. package/src/DropdownMenu/DropdownMenu.test.tsx +2 -22
  435. package/src/DropdownMenu/DropdownMenuItem.tsx +17 -5
  436. package/src/EmptyState/EmptyState.doc.mjs +1 -1
  437. package/src/Field/Field.test.tsx +4 -1
  438. package/src/Field/FieldLabel.test.tsx +2 -2
  439. package/src/FormLayout/__snapshots__/FormLayout.test.tsx.snap +3 -0
  440. package/src/Grid/Grid.test.tsx +18 -43
  441. package/src/Grid/Grid.tsx +9 -26
  442. package/src/HoverCard/HoverCard.doc.mjs +6 -6
  443. package/src/HoverCard/useHoverCard.doc.mjs +5 -5
  444. package/src/HoverCard/useHoverCard.tsx +2 -9
  445. package/src/Icon/Icon.test.tsx +29 -41
  446. package/src/Icon/Icon.tsx +2 -6
  447. package/src/InputGroup/InputGroup.doc.mjs +0 -1
  448. package/src/InputGroup/InputGroup.tsx +2 -2
  449. package/src/Item/Item.tsx +1 -1
  450. package/src/Layer/useLayer.doc.mjs +2 -2
  451. package/src/Layer/useLayer.test.tsx +2 -221
  452. package/src/Layer/useLayer.tsx +30 -69
  453. package/src/Layout/LayoutContent.doc.mjs +0 -12
  454. package/src/Layout/LayoutPanel.doc.mjs +0 -40
  455. package/src/Lightbox/Lightbox.doc.mjs +0 -5
  456. package/src/Lightbox/Lightbox.test.tsx +2 -123
  457. package/src/Lightbox/Lightbox.tsx +1 -29
  458. package/src/Markdown/Markdown.tsx +7 -9
  459. package/src/Markdown/parser.perf.test.ts +12 -34
  460. package/src/MobileNav/MobileNav.test.tsx +0 -56
  461. package/src/MobileNav/MobileNav.tsx +8 -13
  462. package/src/NavMenu/NavMenu.doc.mjs +0 -15
  463. package/src/NumberInput/NumberInput.test.tsx +3 -48
  464. package/src/NumberInput/NumberInput.tsx +15 -32
  465. package/src/Outline/Outline.doc.mjs +0 -2
  466. package/src/Overlay/Overlay.doc.mjs +0 -6
  467. package/src/Pagination/Pagination.test.tsx +0 -162
  468. package/src/Pagination/Pagination.tsx +26 -80
  469. package/src/Popover/Popover.doc.mjs +6 -6
  470. package/src/Popover/Popover.test.tsx +0 -65
  471. package/src/Popover/usePopover.doc.mjs +1 -1
  472. package/src/PowerSearch/PowerSearch.doc.mjs +2 -2
  473. package/src/PowerSearch/PowerSearch.test.tsx +1 -109
  474. package/src/PowerSearch/PowerSearch.tsx +16 -37
  475. package/src/ProgressBar/ProgressBar.doc.mjs +0 -2
  476. package/src/ProgressBar/ProgressBar.test.tsx +0 -30
  477. package/src/ProgressBar/ProgressBar.tsx +5 -12
  478. package/src/RadioList/RadioList.test.tsx +0 -19
  479. package/src/RadioList/RadioListItem.tsx +4 -9
  480. package/src/Resizable/ResizeHandle.tsx +4 -22
  481. package/src/SegmentedControl/SegmentedControl.doc.mjs +1 -1
  482. package/src/SegmentedControl/SegmentedControl.test.tsx +0 -192
  483. package/src/SegmentedControl/SegmentedControl.tsx +5 -27
  484. package/src/SegmentedControl/SegmentedControlItem.tsx +4 -9
  485. package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
  486. package/src/Selector/Selector.test.tsx +1 -27
  487. package/src/SideNav/SideNav.doc.mjs +1 -7
  488. package/src/SideNav/SideNav.test.tsx +0 -66
  489. package/src/SideNav/SideNav.tsx +2 -6
  490. package/src/SideNav/SideNavCollapseButton.tsx +3 -4
  491. package/src/SideNav/SideNavSection.tsx +4 -6
  492. package/src/Switch/Switch.doc.mjs +7 -7
  493. package/src/Switch/Switch.test.tsx +3 -102
  494. package/src/Switch/Switch.tsx +7 -20
  495. package/src/TabList/TabList.test.tsx +1 -185
  496. package/src/TabList/TabMenu.tsx +9 -45
  497. package/src/Table/BaseTable.tsx +2 -13
  498. package/src/Table/Table.doc.mjs +0 -5
  499. package/src/Table/Table.test.tsx +0 -87
  500. package/src/Table/TableBody.tsx +2 -15
  501. package/src/Table/TableFooter.tsx +2 -15
  502. package/src/Table/TableHeader.tsx +2 -15
  503. package/src/Table/plugins/columnResize/useTableColumnResize.test.tsx +0 -13
  504. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +1 -3
  505. package/src/Table/plugins/pagination/paginateData.ts +1 -5
  506. package/src/Table/plugins/pagination/useTablePagination.test.tsx +0 -13
  507. package/src/Table/plugins/selection/useTableSelectionState.test.tsx +0 -23
  508. package/src/Table/plugins/selection/useTableSelectionState.tsx +6 -11
  509. package/src/Table/plugins/sortable/useTableSortableState.test.tsx +1 -35
  510. package/src/Table/plugins/sortable/useTableSortableState.tsx +4 -8
  511. package/src/TextArea/TextArea.test.tsx +3 -3
  512. package/src/TextInput/TextInput.test.tsx +3 -3
  513. package/src/Thumbnail/Thumbnail.test.tsx +2 -36
  514. package/src/Thumbnail/Thumbnail.tsx +2 -4
  515. package/src/TimeInput/TimeInput.test.tsx +0 -37
  516. package/src/TimeInput/TimeInput.tsx +1 -11
  517. package/src/Timestamp/Timestamp.doc.mjs +1 -1
  518. package/src/Timestamp/Timestamp.test.tsx +0 -52
  519. package/src/Timestamp/Timestamp.tsx +16 -30
  520. package/src/Toast/Toast.tsx +3 -11
  521. package/src/Toast/ToastViewport.test.tsx +0 -64
  522. package/src/Toast/ToastViewport.tsx +0 -12
  523. package/src/Toast/useToast.tsx +0 -41
  524. package/src/ToggleButton/ToggleButton.doc.mjs +0 -1
  525. package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
  526. package/src/Tokenizer/Tokenizer.test.tsx +0 -54
  527. package/src/Tokenizer/Tokenizer.tsx +4 -5
  528. package/src/Tooltip/Tooltip.doc.mjs +6 -6
  529. package/src/Tooltip/useTooltip.doc.mjs +5 -5
  530. package/src/Tooltip/useTooltip.tsx +2 -12
  531. package/src/TopNav/TopNav.doc.mjs +1 -1
  532. package/src/TopNav/TopNav.test.tsx +7 -23
  533. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +2 -9
  534. package/src/TreeList/TreeList.doc.mjs +2 -2
  535. package/src/Typeahead/BaseTypeahead.doc.mjs +0 -19
  536. package/src/Typeahead/BaseTypeahead.tsx +2 -5
  537. package/src/Typeahead/Typeahead.doc.mjs +1 -1
  538. package/src/Typeahead/Typeahead.test.tsx +1 -45
  539. package/src/docs-types.ts +1 -9
  540. package/src/hooks/focusableSelector.ts +1 -1
  541. package/src/hooks/index.ts +0 -3
  542. package/src/hooks/useFocusTrap.doc.mjs +2 -4
  543. package/src/hooks/useFocusTrap.test.tsx +1 -149
  544. package/src/hooks/useFocusTrap.ts +1 -50
  545. package/src/hooks/useInteractiveRole.ts +4 -12
  546. package/src/hooks/useStreamingText.test.ts +19 -54
  547. package/src/hooks/useStreamingText.ts +5 -16
  548. package/src/hooks/useTreeFocus.test.tsx +3 -1
  549. package/src/reset.css +0 -29
  550. package/src/theme/SyntaxTheme.doc.mjs +4 -4
  551. package/src/theme/defineTheme.ts +13 -4
  552. package/src/theme/derivedVarRegistry.test.ts +2 -2
  553. package/src/theme/expandColorScale.test.ts +0 -29
  554. package/src/theme/expandColorScale.ts +6 -11
  555. package/src/theme/hct.ts +17 -9
  556. package/src/theme/tokens.test.ts +9 -182
  557. package/src/theme/tokens.ts +4 -239
  558. package/src/theme/useTheme.test.tsx +2 -126
  559. package/src/theme/useTheme.ts +6 -87
  560. package/src/utils/index.ts +0 -4
  561. package/src/utils/sharedResizeObserver.test.ts +2 -2
  562. package/src/utils/timeParser.test.ts +0 -13
  563. package/src/utils/timeParser.ts +5 -8
  564. package/dist/hooks/useHotkeys.d.ts +0 -51
  565. package/dist/hooks/useHotkeys.d.ts.map +0 -1
  566. package/dist/hooks/useHotkeys.js +0 -160
  567. package/dist/utils/color.d.ts +0 -42
  568. package/dist/utils/color.d.ts.map +0 -1
  569. package/dist/utils/color.js +0 -150
  570. package/dist/utils/composeEventHandlers.d.ts +0 -30
  571. package/dist/utils/composeEventHandlers.d.ts.map +0 -1
  572. package/dist/utils/composeEventHandlers.js +0 -40
  573. package/src/Chat/ChatDictationButton.test.tsx +0 -43
  574. package/src/Chat/ChatLayoutScrollButton.test.tsx +0 -33
  575. package/src/Chat/ChatMessageMetadata.test.tsx +0 -32
  576. package/src/Collapsible/Collapsible.test.tsx +0 -405
  577. package/src/FieldStatus/FieldStatus.test.tsx +0 -282
  578. package/src/InteractiveRoleContext/InteractiveRoleContext.test.tsx +0 -185
  579. package/src/Layout/Layout.test.tsx +0 -285
  580. package/src/Layout/LayoutSlots.test.tsx +0 -364
  581. package/src/Outline/parseOutlineFromMarkdown.test.ts +0 -80
  582. package/src/OverflowList/OverflowList.test.tsx +0 -416
  583. package/src/Overlay/Overlay.test.tsx +0 -356
  584. package/src/Resizable/ResizeHandle.test.tsx +0 -218
  585. package/src/SizeContext/SizeContext.test.tsx +0 -226
  586. package/src/Toast/useToast.test.tsx +0 -258
  587. package/src/__tests__/TestIcon.tsx +0 -26
  588. package/src/__tests__/fastRoleQueries.ts +0 -66
  589. package/src/docPropReferences.test.ts +0 -178
  590. package/src/hooks/useHotkeys.doc.mjs +0 -52
  591. package/src/hooks/useHotkeys.test.ts +0 -245
  592. package/src/hooks/useHotkeys.ts +0 -203
  593. package/src/theme/themingTargets.test.ts +0 -353
  594. package/src/utils/color.test.ts +0 -133
  595. package/src/utils/color.ts +0 -148
  596. package/src/utils/composeEventHandlers.test.ts +0 -71
  597. package/src/utils/composeEventHandlers.ts +0 -44
  598. package/src/utils/mergeProps.test.ts +0 -166
@@ -1,7 +1,7 @@
1
1
  // Copyright (c) Meta Platforms, Inc. and affiliates.
2
2
 
3
- import {describe, it, expect, vi, afterEach} from 'vitest';
4
- import {render, renderHook, act, waitFor} from '@testing-library/react';
3
+ import {describe, it, expect, vi} from 'vitest';
4
+ import {renderHook} from '@testing-library/react';
5
5
  import React from 'react';
6
6
  import {Theme} from './Theme';
7
7
  import {defineTheme} from './defineTheme';
@@ -122,128 +122,4 @@ describe('useTheme', () => {
122
122
  resolveThemeTokens(testTheme, {mode: 'dark'}),
123
123
  );
124
124
  });
125
-
126
- it('resolves derived accent tokens to raw values, not var()/color-mix', () => {
127
- const brandTheme = defineTheme({name: 'brand', color: {accent: '#0064E0'}});
128
- const {result} = renderHook(() => useTheme(), {
129
- wrapper: ({children}) => (
130
- <Theme theme={brandTheme} mode="light">
131
- {children}
132
- </Theme>
133
- ),
134
- });
135
-
136
- const accent = result.current.token('--color-accent');
137
- expect(result.current.token('--color-text-accent')).toBe(accent);
138
- expect(result.current.token('--color-icon-accent')).toBe(accent);
139
- expect(result.current.token('--color-accent-muted')).toMatch(/^(#|rgb)/);
140
- expect(result.current.token('--color-accent-muted')).not.toContain('var(');
141
- expect(result.current.token('--color-accent-muted')).not.toContain(
142
- 'color-mix',
143
- );
144
- });
145
- });
146
-
147
- // Covers the fallback used when a component calls useTheme() with no
148
- // ThemeContext ancestor reachable — e.g. a detached tree (useToast's
149
- // fallback viewport, other portals appended straight to document.body).
150
- // Root Theme instances sync their mode to <html data-theme> specifically so
151
- // this fallback can resolve the app's actual mode instead of jumping
152
- // straight to OS preference (see Theme.tsx's useRootThemeSync).
153
- describe('useTheme mode resolution without a ThemeContext ancestor', () => {
154
- afterEach(async () => {
155
- // The hook from each `it` below is still mounted and subscribed to the
156
- // shared MutationObserver when this runs (RTL's own cleanup — which
157
- // unmounts it — is registered after this file's afterEach), so removing
158
- // the attribute here triggers a live state update; flush it inside act
159
- // so React doesn't warn about an update outside one.
160
- await act(async () => {
161
- document.documentElement.removeAttribute('data-theme');
162
- });
163
- });
164
-
165
- it('resolves mode from <html data-theme> when set', () => {
166
- document.documentElement.setAttribute('data-theme', 'dark');
167
- const {result} = renderHook(() => useTheme());
168
- expect(result.current.mode).toBe('dark');
169
- });
170
-
171
- it('falls back to OS preference when <html data-theme> is absent', () => {
172
- // useMediaQuery is mocked to false (light) at the top of this file.
173
- const {result} = renderHook(() => useTheme());
174
- expect(result.current.mode).toBe('light');
175
- });
176
-
177
- it('stays live when <html data-theme> changes after mount', async () => {
178
- const {result} = renderHook(() => useTheme());
179
- expect(result.current.mode).toBe('light');
180
-
181
- act(() => {
182
- document.documentElement.setAttribute('data-theme', 'dark');
183
- });
184
-
185
- await waitFor(() => expect(result.current.mode).toBe('dark'));
186
- });
187
- });
188
-
189
- // Covers the singleton MutationObserver + no-op gating in useRootThemeModeAttr:
190
- // provider-path consumers (a ThemeContext ancestor is reachable) must not
191
- // create an observer or react to <html data-theme> at all, and every
192
- // no-context consumer must share exactly one observer, refcounted down to
193
- // zero as they unmount.
194
- describe('useTheme root-attribute observer lifecycle', () => {
195
- afterEach(() => {
196
- document.documentElement.removeAttribute('data-theme');
197
- // vi.stubGlobal'd MutationObserver stubs below are torn down here even if
198
- // a test fails partway through, instead of relying on a manual restore
199
- // line at the end of each test that a mid-test throw would skip.
200
- vi.unstubAllGlobals();
201
- });
202
-
203
- it('creates no observer and does not re-render provider-path consumers when <html data-theme> changes', () => {
204
- const ObserverSpy = vi.fn();
205
- vi.stubGlobal('MutationObserver', ObserverSpy);
206
-
207
- const renders = {count: 0};
208
- function Consumer() {
209
- useTheme();
210
- renders.count++;
211
- return null;
212
- }
213
-
214
- render(
215
- <Theme theme={testTheme} mode="light">
216
- <Consumer />
217
- </Theme>,
218
- );
219
-
220
- expect(ObserverSpy).not.toHaveBeenCalled();
221
-
222
- const before = renders.count;
223
- act(() => {
224
- document.documentElement.setAttribute('data-theme', 'dark');
225
- });
226
- expect(renders.count).toBe(before);
227
- });
228
-
229
- it('shares one observer across multiple no-context consumers and disconnects once all unmount', () => {
230
- const observe = vi.fn();
231
- const disconnect = vi.fn();
232
- const ObserverSpy = vi
233
- .fn()
234
- .mockImplementation(() => ({observe, disconnect}));
235
- vi.stubGlobal('MutationObserver', ObserverSpy);
236
-
237
- const first = renderHook(() => useTheme());
238
- const second = renderHook(() => useTheme());
239
-
240
- expect(ObserverSpy).toHaveBeenCalledTimes(1);
241
- expect(observe).toHaveBeenCalledTimes(1);
242
-
243
- first.unmount();
244
- expect(disconnect).not.toHaveBeenCalled();
245
-
246
- second.unmount();
247
- expect(disconnect).toHaveBeenCalledTimes(1);
248
- });
249
125
  });
@@ -9,19 +9,14 @@
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
- * 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.
12
+ * current color mode — no DOM reads, no double render. Token resolution
13
+ * is shared with the server-safe helpers in ./tokens.ts.
19
14
  *
20
15
  * SYNC: When modified, update:
21
16
  * - /packages/core/src/theme/index.ts
22
17
  */
23
18
 
24
- import {createContext, use, useMemo, useSyncExternalStore} from 'react';
19
+ import {createContext, use, useMemo} from 'react';
25
20
  import type {ThemeMode} from './types';
26
21
  import type {DefinedTheme} from './defineTheme';
27
22
  import {resolveThemeTokens} from './tokens';
@@ -92,76 +87,6 @@ export interface UseThemeReturn {
92
87
  // Hook
93
88
  // =============================================================================
94
89
 
95
- function getRootThemeAttrSnapshot(): 'light' | 'dark' | null {
96
- if (typeof document === 'undefined') {
97
- return null;
98
- }
99
- const attr = document.documentElement.getAttribute('data-theme');
100
- return attr === 'light' || attr === 'dark' ? attr : null;
101
- }
102
-
103
- function getRootThemeAttrServerSnapshot(): 'light' | 'dark' | null {
104
- return null;
105
- }
106
-
107
- function getNullThemeMode(): null {
108
- return null;
109
- }
110
-
111
- // Every no-context consumer wants the same <html data-theme> attribute, so
112
- // one MutationObserver — refcounted via this listener set — serves all of
113
- // them instead of one per consumer.
114
- const rootThemeAttrListeners = new Set<() => void>();
115
- let rootThemeAttrObserver: MutationObserver | null = null;
116
-
117
- function notifyRootThemeAttrListeners(): void {
118
- for (const listener of rootThemeAttrListeners) {
119
- listener();
120
- }
121
- }
122
-
123
- function subscribeRootThemeAttr(onStoreChange: () => void): () => void {
124
- rootThemeAttrListeners.add(onStoreChange);
125
-
126
- if (
127
- rootThemeAttrListeners.size === 1 &&
128
- typeof MutationObserver !== 'undefined'
129
- ) {
130
- rootThemeAttrObserver = new MutationObserver(notifyRootThemeAttrListeners);
131
- rootThemeAttrObserver.observe(document.documentElement, {
132
- attributes: true,
133
- attributeFilter: ['data-theme'],
134
- });
135
- }
136
-
137
- return () => {
138
- rootThemeAttrListeners.delete(onStoreChange);
139
- if (rootThemeAttrListeners.size === 0 && rootThemeAttrObserver) {
140
- rootThemeAttrObserver.disconnect();
141
- rootThemeAttrObserver = null;
142
- }
143
- };
144
- }
145
-
146
- function subscribeNoop(): () => void {
147
- return () => {};
148
- }
149
-
150
- /**
151
- * Reads the root Theme's mode off `<html data-theme>`, live via the shared
152
- * MutationObserver. Null means no root Theme has synced it (none present,
153
- * or mode is 'system'). `hasCtx` switches which store this subscribes to —
154
- * a no-op store when a ThemeContext exists — instead of skipping the hook
155
- * call, so provider-path consumers never touch the DOM or the observer.
156
- */
157
- function useRootThemeModeAttr(hasCtx: boolean): 'light' | 'dark' | null {
158
- return useSyncExternalStore(
159
- hasCtx ? subscribeNoop : subscribeRootThemeAttr,
160
- hasCtx ? getNullThemeMode : getRootThemeAttrSnapshot,
161
- getRootThemeAttrServerSnapshot,
162
- );
163
- }
164
-
165
90
  /**
166
91
  * Access the current Astryx theme's token values, resolved for the active color mode.
167
92
  *
@@ -170,9 +95,8 @@ function useRootThemeModeAttr(hasCtx: boolean): 'light' | 'dark' | null {
170
95
  * (e.g. Vega, D3, Chart.js) that need concrete values rather than
171
96
  * CSS custom property references.
172
97
  *
173
- * When called outside a <Theme> provider, resolves mode from the root
174
- * Theme's `<html data-theme>` when one is present, falling back to the
175
- * current system color mode otherwise.
98
+ * When called outside an <Theme> provider, returns the default theme
99
+ * tokens resolved against the current system color mode.
176
100
  *
177
101
  * @example
178
102
  * ```
@@ -190,15 +114,10 @@ function useRootThemeModeAttr(hasCtx: boolean): 'light' | 'dark' | null {
190
114
  export function useTheme(): UseThemeReturn {
191
115
  const ctx = use(ThemeContext);
192
116
 
193
- // Falls back to the root Theme's mode via <html data-theme> when there's
194
- // no ThemeContext ancestor (e.g. useToast's detached fallback viewport).
195
- // Resolves to null when `ctx` is present, so it has no effect there.
196
- const rootAttrMode = useRootThemeModeAttr(ctx != null);
197
-
198
117
  // Resolve 'system' to 'light' | 'dark' using the OS preference
199
118
  const prefersDark = useMediaQuery('(prefers-color-scheme: dark)');
200
119
 
201
- const mode = ctx?.mode ?? rootAttrMode ?? 'system';
120
+ const mode = ctx?.mode ?? 'system';
202
121
  const theme = ctx?.theme ?? null;
203
122
 
204
123
  const effectiveMode: 'light' | 'dark' =
@@ -68,7 +68,6 @@ export {getKey, type Key, type KeyFallback} from './getKey';
68
68
 
69
69
  export {mergeProps} from './mergeProps';
70
70
  export {mergeRefs} from './mergeRefs';
71
- export {composeEventHandlers} from './composeEventHandlers';
72
71
  export {themeProps, themeDataAttributes} from './themeProps';
73
72
  export type {
74
73
  ClassValue,
@@ -82,6 +81,3 @@ export {observeResize, unobserveResize} from './sharedResizeObserver';
82
81
  export {isRenderable} from './isRenderable';
83
82
  export {getInputARIA} from './inputAria';
84
83
  export type {InputARIA, InputARIAInputGroup} from './inputAria';
85
-
86
- export {parseHex, parseRgb, parseColor, formatHex, formatColor} from './color';
87
- export type {RGBA} from './color';
@@ -15,7 +15,7 @@ describe('sharedResizeObserver', () => {
15
15
  mockDisconnect = vi.fn();
16
16
  constructorCalls = 0;
17
17
 
18
- global.ResizeObserver = vi.fn(function (cb: ResizeObserverCallback) {
18
+ global.ResizeObserver = vi.fn((cb: ResizeObserverCallback) => {
19
19
  constructorCalls++;
20
20
  capturedCallback = cb;
21
21
  return {
@@ -23,7 +23,7 @@ describe('sharedResizeObserver', () => {
23
23
  unobserve: mockUnobserve,
24
24
  disconnect: mockDisconnect,
25
25
  };
26
- }) as unknown as typeof ResizeObserver;
26
+ });
27
27
  });
28
28
 
29
29
  afterEach(() => {
@@ -249,19 +249,6 @@ describe('isTimeInRange', () => {
249
249
  });
250
250
 
251
251
  describe('adjustTime', () => {
252
- it('returns the input unchanged for non-finite deltas', () => {
253
- // -Infinity previously spun the wrap-around loop forever;
254
- // NaN previously produced the corrupt string "NaN:NaN".
255
- expect(adjustTime('10:00' as ISOTimeString, -Infinity)).toBe('10:00');
256
- expect(adjustTime('10:00' as ISOTimeString, Infinity)).toBe('10:00');
257
- expect(adjustTime('10:00' as ISOTimeString, NaN)).toBe('10:00');
258
- });
259
-
260
- it('wraps large negative deltas in constant time', () => {
261
- expect(adjustTime('10:00' as ISOTimeString, -1440 * 1e7)).toBe('10:00');
262
- expect(adjustTime('10:00' as ISOTimeString, -1440 * 1e7 - 30)).toBe('09:30');
263
- });
264
-
265
252
  it('adds minutes', () => {
266
253
  expect(adjustTime('14:30' as ISOTimeString, 15)).toBe('14:45');
267
254
  expect(adjustTime('14:30' as ISOTimeString, 30)).toBe('15:00');
@@ -361,16 +361,13 @@ export function adjustTime(
361
361
  return time;
362
362
  }
363
363
 
364
- // A non-finite delta would spin the wrap-around forever (-Infinity) or
365
- // produce "NaN:NaN" (NaN) — return the input unchanged instead.
366
- if (!Number.isFinite(deltaMinutes)) {
367
- return time;
368
- }
369
-
370
364
  let totalMinutes = parsed.hour * 60 + parsed.minute + deltaMinutes;
371
365
 
372
- // Wrap around midnight (double-modulo handles negatives in O(1))
373
- totalMinutes = ((totalMinutes % (24 * 60)) + 24 * 60) % (24 * 60);
366
+ // Wrap around midnight
367
+ while (totalMinutes < 0) {
368
+ totalMinutes += 24 * 60;
369
+ }
370
+ totalMinutes = totalMinutes % (24 * 60);
374
371
 
375
372
  const newHour = Math.floor(totalMinutes / 60);
376
373
  const newMinute = totalMinutes % 60;
@@ -1,51 +0,0 @@
1
- /**
2
- * A single keyboard shortcut registration.
3
- */
4
- export interface Hotkey {
5
- /**
6
- * Key combo, e.g. 'mod+k', 'shift+/', 'c', 'escape'.
7
- * 'mod' = ⌘ on macOS, Ctrl elsewhere.
8
- *
9
- * Format: '+'-separated modifiers (mod, ctrl, meta, shift, alt) followed
10
- * by a final key compared case-insensitively against event.key.
11
- * Named keys: 'escape', 'enter', 'space', 'up', 'down', 'left', 'right'
12
- * (arrow names map to ArrowUp/ArrowDown/ArrowLeft/ArrowRight).
13
- * Use 'plus' for a literal '+' key.
14
- *
15
- * Shift semantics: when 'shift' is not specified, shift state is ignored,
16
- * so single letters match regardless of shift. When 'shift' is specified,
17
- * shiftKey must be pressed and the final key is still compared against
18
- * event.key — for punctuation that shift transforms (e.g. shift+/ produces
19
- * '?' on US layouts), prefer registering the produced character instead.
20
- */
21
- keys: string;
22
- /** Called when the combo matches. The event has preventDefault() applied. */
23
- onPress: (event: KeyboardEvent) => void;
24
- /**
25
- * Fire even when focus is in an input/textarea/select/contenteditable.
26
- * @default false
27
- */
28
- allowInInputs?: boolean;
29
- /** Temporarily disable this hotkey without unregistering it. */
30
- isDisabled?: boolean;
31
- }
32
- /**
33
- * Registers global keyboard shortcuts on window.
34
- *
35
- * A single keydown listener is attached per hook instance; the hotkey
36
- * definitions live in a ref, so re-renders update behavior without
37
- * re-subscribing. First matching hotkey wins per event.
38
- *
39
- * @param hotkeys - Shortcut registrations to listen for.
40
- *
41
- * @example
42
- * ```
43
- * useHotkeys([
44
- * { keys: 'mod+k', onPress: () => openCommandPalette() },
45
- * { keys: 'escape', onPress: () => closePanel(), allowInInputs: true },
46
- * { keys: 'c', onPress: () => compose(), isDisabled: isModalOpen },
47
- * ]);
48
- * ```
49
- */
50
- export declare function useHotkeys(hotkeys: Hotkey[]): void;
51
- //# sourceMappingURL=useHotkeys.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useHotkeys.d.ts","sourceRoot":"","sources":["../../src/hooks/useHotkeys.ts"],"names":[],"mappings":"AA6BA;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;;;;;;;;;;;;;OAeG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gEAAgE;IAChE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA2FD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAkClD"}
@@ -1,160 +0,0 @@
1
- // Copyright (c) Meta Platforms, Inc. and affiliates.
2
-
3
- 'use client';
4
-
5
- /**
6
- * @file useHotkeys.ts
7
- * @input Uses React useEffect, useRef
8
- * @output Exports useHotkeys hook and Hotkey interface for global keyboard shortcuts
9
- * @position Core hook; used by consumers for app-level keyboard shortcuts
10
- *
11
- * Registers a single window keydown listener per hook instance. Handlers
12
- * are kept in a ref so re-renders never re-subscribe (subscribe once on
13
- * mount, unsubscribe on unmount). SSR-safe — window is only touched
14
- * inside the effect.
15
- *
16
- * Skips events that are already handled (defaultPrevented) and events
17
- * targeting typing surfaces (input, textarea, select, contenteditable)
18
- * unless a hotkey opts in via `allowInInputs`.
19
- *
20
- * Platform-aware: `mod` maps to metaKey (⌘) on Apple platforms and
21
- * ctrlKey elsewhere — mirrors the detection used by Kbd.
22
- *
23
- * SYNC: When modified, update:
24
- * - /packages/core/src/hooks/index.ts
25
- * - /packages/core/src/hooks/useHotkeys.doc.mjs
26
- */
27
- import { useEffect, useRef } from 'react';
28
-
29
- /**
30
- * A single keyboard shortcut registration.
31
- */
32
-
33
- /** Aliases for the final key of a combo, normalized to event.key values. */
34
- const KEY_ALIASES = {
35
- esc: 'escape',
36
- space: ' ',
37
- up: 'arrowup',
38
- down: 'arrowdown',
39
- left: 'arrowleft',
40
- right: 'arrowright',
41
- return: 'enter',
42
- plus: '+'
43
- };
44
-
45
- /**
46
- * Detects whether the current platform is macOS/iOS.
47
- * Prefers the User-Agent Client Hints API when available (modern Chrome/Edge),
48
- * falls back to navigator.platform (deprecated but universally supported).
49
- * Mirrors the detection used by Kbd so displayed and handled shortcuts agree.
50
- */
51
- function isApplePlatform() {
52
- if (typeof navigator === 'undefined') {
53
- return false;
54
- }
55
- const uaData = 'userAgentData' in navigator ? navigator.userAgentData : null;
56
- if (uaData && typeof uaData === 'object' && 'platform' in uaData) {
57
- return /mac/i.test(uaData.platform ?? '');
58
- }
59
- return /Mac|iPhone|iPad|iPod/.test(navigator.platform ?? '');
60
- }
61
-
62
- /**
63
- * Whether the event target is a typing surface where global shortcuts
64
- * should stay silent by default.
65
- */
66
- function isTypingTarget(target) {
67
- if (!(target instanceof HTMLElement)) {
68
- return false;
69
- }
70
- if (target.isContentEditable) {
71
- return true;
72
- }
73
- const tag = target.tagName;
74
- return tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT';
75
- }
76
-
77
- /**
78
- * Whether a keydown event matches a '+'-separated combo string.
79
- */
80
- function matchesCombo(keys, event, isApple) {
81
- const parts = keys.toLowerCase().split('+').map(part => part.trim()).filter(Boolean);
82
- if (parts.length === 0) {
83
- return false;
84
- }
85
- const key = parts[parts.length - 1];
86
- const mods = new Set(parts.slice(0, -1));
87
- const wantsMod = mods.has('mod');
88
- const wantsCtrl = mods.has('ctrl') || wantsMod && !isApple;
89
- const wantsMeta = mods.has('meta') || wantsMod && isApple;
90
- const wantsAlt = mods.has('alt');
91
- const wantsShift = mods.has('shift');
92
-
93
- // Non-shift modifiers must match exactly so 'k' doesn't fire on 'mod+k'.
94
- if (event.ctrlKey !== wantsCtrl) {
95
- return false;
96
- }
97
- if (event.metaKey !== wantsMeta) {
98
- return false;
99
- }
100
- if (event.altKey !== wantsAlt) {
101
- return false;
102
- }
103
- // Shift is only enforced when specified — see Hotkey.keys docs.
104
- if (wantsShift && !event.shiftKey) {
105
- return false;
106
- }
107
- const expected = KEY_ALIASES[key] ?? key;
108
- return event.key.toLowerCase() === expected;
109
- }
110
-
111
- /**
112
- * Registers global keyboard shortcuts on window.
113
- *
114
- * A single keydown listener is attached per hook instance; the hotkey
115
- * definitions live in a ref, so re-renders update behavior without
116
- * re-subscribing. First matching hotkey wins per event.
117
- *
118
- * @param hotkeys - Shortcut registrations to listen for.
119
- *
120
- * @example
121
- * ```
122
- * useHotkeys([
123
- * { keys: 'mod+k', onPress: () => openCommandPalette() },
124
- * { keys: 'escape', onPress: () => closePanel(), allowInInputs: true },
125
- * { keys: 'c', onPress: () => compose(), isDisabled: isModalOpen },
126
- * ]);
127
- * ```
128
- */
129
- export function useHotkeys(hotkeys) {
130
- const hotkeysRef = useRef(hotkeys);
131
-
132
- // Keep the latest definitions available to the stable listener.
133
- useEffect(() => {
134
- hotkeysRef.current = hotkeys;
135
- });
136
- useEffect(() => {
137
- const isApple = isApplePlatform();
138
- const handleKeyDown = event => {
139
- if (event.defaultPrevented) {
140
- return;
141
- }
142
- const isTyping = isTypingTarget(event.target);
143
- for (const hotkey of hotkeysRef.current) {
144
- if (hotkey.isDisabled) {
145
- continue;
146
- }
147
- if (isTyping && !hotkey.allowInInputs) {
148
- continue;
149
- }
150
- if (matchesCombo(hotkey.keys, event, isApple)) {
151
- event.preventDefault();
152
- hotkey.onPress(event);
153
- return;
154
- }
155
- }
156
- };
157
- window.addEventListener('keydown', handleKeyDown);
158
- return () => window.removeEventListener('keydown', handleKeyDown);
159
- }, []);
160
- }
@@ -1,42 +0,0 @@
1
- /**
2
- * @file color.ts
3
- * @input CSS color strings (hex, rgb()/rgba(), a small set of named colors)
4
- * @output Shared color parsing/formatting primitives used across the design system
5
- * @position Package utility; backs theme token resolution, HCT color math, and chart rendering
6
- *
7
- * A single home for the color parsers that were previously duplicated across
8
- * the theme layer, charts, and lab. Consumers get one well-tested definition of
9
- * "parse this color" rather than several subtly different regexes.
10
- */
11
- /** A color decomposed into 0-255 RGB channels and a 0-1 alpha. */
12
- export interface RGBA {
13
- r: number;
14
- g: number;
15
- b: number;
16
- a: number;
17
- }
18
- /**
19
- * Parse a hex color into {@link RGBA}. Accepts `#rgb`, `#rgba`, `#rrggbb`, and
20
- * `#rrggbbaa`, with or without the leading `#`. Returns null for anything else.
21
- */
22
- export declare function parseHex(hex: string): RGBA | null;
23
- /**
24
- * Parse an `rgb()`/`rgba()` color into {@link RGBA}. Accepts comma- or
25
- * space-separated channels, an optional `/ alpha`, and percentage channels.
26
- */
27
- export declare function parseRgb(value: string): RGBA | null;
28
- /**
29
- * Parse a concrete CSS color string into {@link RGBA}. Supports hex,
30
- * `rgb()`/`rgba()`, and the named colors used in token expressions. Returns
31
- * null for anything it can't evaluate (e.g. `var()`, `oklch()`, unknown names)
32
- * so callers can preserve the original expression rather than guessing.
33
- */
34
- export declare function parseColor(value: string): RGBA | null;
35
- /** Format RGB channels (0-255) as an uppercase `#RRGGBB` string. */
36
- export declare function formatHex(r: number, g: number, b: number): string;
37
- /**
38
- * Serialize {@link RGBA} to a compact, JS-usable CSS color: `#RRGGBB` when
39
- * fully opaque, otherwise `rgba(r, g, b, a)`.
40
- */
41
- export declare function formatColor({ r, g, b, a }: RGBA): string;
42
- //# sourceMappingURL=color.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../src/utils/color.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,kEAAkE;AAClE,MAAM,WAAW,IAAI;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAoBD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAqBjD;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAqCnD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAarD;AAED,oEAAoE;AACpE,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAIjE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,EAAE,IAAI,GAAG,MAAM,CAMtD"}