@astryxdesign/core 0.1.4-canary.fd7ab46 → 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 (579) 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.js +15 -15
  175. package/dist/MobileNav/MobileNavToggle.js +5 -5
  176. package/dist/MoreMenu/MoreMenu.js +3 -3
  177. package/dist/MultiSelector/MultiSelector.js +56 -56
  178. package/dist/NavIcon/NavIcon.js +3 -3
  179. package/dist/NavMenu/NavHeadingMenu.js +5 -5
  180. package/dist/NavMenu/NavHeadingMenuItem.js +8 -8
  181. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  182. package/dist/NumberInput/NumberInput.js +32 -48
  183. package/dist/Outline/Outline.js +15 -15
  184. package/dist/OverflowList/OverflowList.js +8 -8
  185. package/dist/Overlay/Overlay.js +3 -3
  186. package/dist/Overlay/OverlayScrim.js +5 -5
  187. package/dist/Overlay/useOverlay.js +3 -3
  188. package/dist/Pagination/Pagination.d.ts +1 -1
  189. package/dist/Pagination/Pagination.d.ts.map +1 -1
  190. package/dist/Pagination/Pagination.js +72 -125
  191. package/dist/Popover/Popover.js +16 -16
  192. package/dist/Popover/usePopover.js +7 -7
  193. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  194. package/dist/PowerSearch/PowerSearch.js +92 -110
  195. package/dist/PowerSearch/PowerSearchEditPopover.js +84 -84
  196. package/dist/PowerSearch/PowerSearchFilterEditor.js +3 -3
  197. package/dist/PowerSearch/PowerSearchToken.js +5 -5
  198. package/dist/PowerSearch/PowerSearchValueEditor.js +54 -54
  199. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  200. package/dist/ProgressBar/ProgressBar.js +18 -25
  201. package/dist/RadioList/RadioList.js +7 -7
  202. package/dist/RadioList/RadioListItem.d.ts +1 -1
  203. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  204. package/dist/RadioList/RadioListItem.js +21 -24
  205. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  206. package/dist/Resizable/ResizeHandle.js +10 -28
  207. package/dist/Section/Section.js +5 -5
  208. package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
  209. package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  210. package/dist/SegmentedControl/SegmentedControl.js +10 -32
  211. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  212. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  213. package/dist/SegmentedControl/SegmentedControlItem.js +12 -18
  214. package/dist/SelectableCard/SelectableCard.js +5 -5
  215. package/dist/Selector/Selector.js +46 -46
  216. package/dist/Selector/SelectorOption.js +3 -3
  217. package/dist/SideNav/SideNav.d.ts.map +1 -1
  218. package/dist/SideNav/SideNav.js +34 -38
  219. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  220. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  221. package/dist/SideNav/SideNavCollapseButton.js +6 -8
  222. package/dist/SideNav/SideNavHeading.js +87 -87
  223. package/dist/SideNav/SideNavItem.js +42 -42
  224. package/dist/SideNav/SideNavSection.d.ts +1 -1
  225. package/dist/SideNav/SideNavSection.d.ts.map +1 -1
  226. package/dist/SideNav/SideNavSection.js +16 -18
  227. package/dist/Skeleton/Skeleton.js +3 -3
  228. package/dist/Slider/Slider.js +23 -23
  229. package/dist/Spinner/Spinner.js +9 -9
  230. package/dist/StatusDot/StatusDot.js +5 -5
  231. package/dist/Switch/Switch.d.ts +4 -8
  232. package/dist/Switch/Switch.d.ts.map +1 -1
  233. package/dist/Switch/Switch.js +29 -34
  234. package/dist/TabList/Tab.js +18 -18
  235. package/dist/TabList/TabList.js +5 -5
  236. package/dist/TabList/TabMenu.d.ts.map +1 -1
  237. package/dist/TabList/TabMenu.js +30 -57
  238. package/dist/TabList/tab.markers.stylex.d.ts +1 -1
  239. package/dist/Table/BaseTable.d.ts.map +1 -1
  240. package/dist/Table/BaseTable.js +39 -50
  241. package/dist/Table/Table.js +7 -7
  242. package/dist/Table/TableBody.d.ts +1 -1
  243. package/dist/Table/TableBody.d.ts.map +1 -1
  244. package/dist/Table/TableBody.js +5 -9
  245. package/dist/Table/TableCell.js +3 -3
  246. package/dist/Table/TableFooter.d.ts +1 -1
  247. package/dist/Table/TableFooter.d.ts.map +1 -1
  248. package/dist/Table/TableFooter.js +5 -9
  249. package/dist/Table/TableHeader.d.ts +1 -1
  250. package/dist/Table/TableHeader.d.ts.map +1 -1
  251. package/dist/Table/TableHeader.js +5 -9
  252. package/dist/Table/TableHeaderCell.js +3 -3
  253. package/dist/Table/TableRow.js +5 -5
  254. package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  255. package/dist/Table/plugins/columnResize/useTableColumnResize.js +11 -14
  256. package/dist/Table/plugins/filtering/useTableFiltering.js +71 -71
  257. package/dist/Table/plugins/pagination/paginateData.d.ts.map +1 -1
  258. package/dist/Table/plugins/pagination/paginateData.js +1 -5
  259. package/dist/Table/plugins/pagination/useTablePagination.js +7 -7
  260. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +22 -22
  261. package/dist/Table/plugins/selection/useTableSelection.js +18 -18
  262. package/dist/Table/plugins/selection/useTableSelectionState.d.ts.map +1 -1
  263. package/dist/Table/plugins/selection/useTableSelectionState.js +1 -11
  264. package/dist/Table/plugins/sortable/useTableSortable.js +17 -17
  265. package/dist/Table/plugins/sortable/useTableSortableState.d.ts.map +1 -1
  266. package/dist/Table/plugins/sortable/useTableSortableState.js +4 -8
  267. package/dist/Table/tableContextMenu.js +9 -9
  268. package/dist/Text/Text.js +10 -10
  269. package/dist/TextArea/TextArea.js +14 -14
  270. package/dist/TextInput/TextInput.js +15 -15
  271. package/dist/Thumbnail/Thumbnail.d.ts +2 -3
  272. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  273. package/dist/Thumbnail/Thumbnail.js +29 -30
  274. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  275. package/dist/TimeInput/TimeInput.js +21 -26
  276. package/dist/Timestamp/Timestamp.d.ts +1 -1
  277. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  278. package/dist/Timestamp/Timestamp.js +26 -37
  279. package/dist/Toast/Toast.d.ts.map +1 -1
  280. package/dist/Toast/Toast.js +17 -25
  281. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  282. package/dist/Toast/ToastViewport.js +11 -23
  283. package/dist/Toast/useToast.js +4 -4
  284. package/dist/ToggleButton/ToggleButton.js +12 -12
  285. package/dist/ToggleButton/ToggleButtonGroup.js +5 -5
  286. package/dist/Token/Token.js +21 -21
  287. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  288. package/dist/Tokenizer/Tokenizer.js +34 -36
  289. package/dist/Toolbar/Toolbar.js +18 -18
  290. package/dist/Tooltip/Tooltip.js +11 -11
  291. package/dist/Tooltip/useTooltip.d.ts +1 -5
  292. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  293. package/dist/Tooltip/useTooltip.js +3 -3
  294. package/dist/TopNav/TopNav.js +32 -32
  295. package/dist/TopNav/TopNavHeading.js +67 -67
  296. package/dist/TopNav/TopNavItem.js +5 -5
  297. package/dist/TopNav/TopNavMegaMenu.js +30 -30
  298. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
  299. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
  300. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +14 -25
  301. package/dist/TopNav/TopNavMegaMenuItem.js +16 -16
  302. package/dist/TopNav/TopNavMenu.js +32 -32
  303. package/dist/TreeList/TreeList.js +8 -8
  304. package/dist/TreeList/TreeListBranches.js +11 -11
  305. package/dist/TreeList/TreeListItem.js +30 -30
  306. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  307. package/dist/Typeahead/BaseTypeahead.js +20 -23
  308. package/dist/Typeahead/Typeahead.js +12 -12
  309. package/dist/Typeahead/TypeaheadItem.js +10 -10
  310. package/dist/VStack/VStack.js +3 -3
  311. package/dist/astryx.css +0 -7
  312. package/dist/astryx.umd.js +60 -60
  313. package/dist/astryx.umd.js.map +4 -4
  314. package/dist/docs-types.d.ts +2 -8
  315. package/dist/docs-types.d.ts.map +1 -1
  316. package/dist/hooks/focusableSelector.d.ts +1 -1
  317. package/dist/hooks/focusableSelector.d.ts.map +1 -1
  318. package/dist/hooks/focusableSelector.js +1 -1
  319. package/dist/hooks/index.d.ts +0 -2
  320. package/dist/hooks/index.d.ts.map +1 -1
  321. package/dist/hooks/index.js +0 -1
  322. package/dist/hooks/useFocusTrap.d.ts +0 -3
  323. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  324. package/dist/hooks/useFocusTrap.js +1 -38
  325. package/dist/hooks/useInteractiveRole.d.ts +2 -6
  326. package/dist/hooks/useInteractiveRole.d.ts.map +1 -1
  327. package/dist/hooks/useInteractiveRole.js +2 -6
  328. package/dist/hooks/useKeyboardHint.js +9 -9
  329. package/dist/hooks/useStreamingText.d.ts +1 -3
  330. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  331. package/dist/hooks/useStreamingText.js +5 -14
  332. package/dist/theme/MediaTheme.js +3 -3
  333. package/dist/theme/Theme.js +7 -7
  334. package/dist/theme/defineTheme.d.ts +1 -1
  335. package/dist/theme/defineTheme.d.ts.map +1 -1
  336. package/dist/theme/expandColorScale.d.ts.map +1 -1
  337. package/dist/theme/expandColorScale.js +3 -10
  338. package/dist/theme/hct.d.ts +15 -0
  339. package/dist/theme/hct.d.ts.map +1 -1
  340. package/dist/theme/hct.js +9 -9
  341. package/dist/theme/syntax/SyntaxTheme.js +5 -5
  342. package/dist/theme/tokens.d.ts +2 -10
  343. package/dist/theme/tokens.d.ts.map +1 -1
  344. package/dist/theme/tokens.js +4 -220
  345. package/dist/utils/index.d.ts +0 -3
  346. package/dist/utils/index.d.ts.map +1 -1
  347. package/dist/utils/index.js +1 -3
  348. package/dist/utils/timeParser.d.ts.map +1 -1
  349. package/dist/utils/timeParser.js +5 -8
  350. package/package.json +3 -3
  351. package/src/AlertDialog/AlertDialog.doc.mjs +0 -4
  352. package/src/AlertDialog/AlertDialog.tsx +0 -2
  353. package/src/AppShell/AppShell.tsx +0 -2
  354. package/src/AspectRatio/AspectRatio.doc.mjs +1 -28
  355. package/src/AspectRatio/AspectRatio.test.tsx +1 -142
  356. package/src/AspectRatio/AspectRatio.tsx +10 -70
  357. package/src/AspectRatio/index.ts +1 -5
  358. package/src/Avatar/Avatar.doc.mjs +0 -11
  359. package/src/Avatar/Avatar.test.tsx +1 -32
  360. package/src/Avatar/Avatar.tsx +20 -12
  361. package/src/Banner/Banner.doc.mjs +0 -8
  362. package/src/Banner/Banner.test.tsx +0 -38
  363. package/src/Banner/Banner.tsx +1 -8
  364. package/src/Calendar/Calendar.doc.mjs +1 -1
  365. package/src/Calendar/Calendar.test.tsx +17 -122
  366. package/src/Calendar/Calendar.tsx +5 -26
  367. package/src/Calendar/dayCellUtils.ts +1 -3
  368. package/src/Calendar/styles.ts +2 -12
  369. package/src/Card/Card.tsx +6 -16
  370. package/src/Carousel/Carousel.doc.mjs +12 -12
  371. package/src/Carousel/Carousel.test.tsx +0 -13
  372. package/src/Carousel/Carousel.tsx +2 -4
  373. package/src/Carousel/carousel.markers.stylex.ts +10 -0
  374. package/src/Chat/Chat.doc.mjs +1 -1
  375. package/src/Chat/ChatComposerInput.test.tsx +1 -27
  376. package/src/Chat/ChatComposerInput.tsx +15 -20
  377. package/src/Chat/ChatDictationButton.tsx +4 -4
  378. package/src/Chat/ChatLayoutScrollButton.tsx +1 -3
  379. package/src/Chat/ChatMessageMetadata.tsx +6 -4
  380. package/src/Chat/ChatSystemMessage.test.tsx +11 -26
  381. package/src/Chat/ChatSystemMessage.tsx +7 -7
  382. package/src/Chat/ChatTokenizedText.test.tsx +16 -29
  383. package/src/Chat/ChatTokenizedText.tsx +8 -15
  384. package/src/Chat/ChatToolCalls.test.tsx +0 -55
  385. package/src/Chat/ChatToolCalls.tsx +12 -10
  386. package/src/Chat/index.ts +4 -1
  387. package/src/Chat/useTriggerMenu.tsx +4 -1
  388. package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
  389. package/src/CheckboxInput/CheckboxInput.test.tsx +4 -71
  390. package/src/CheckboxInput/CheckboxInput.tsx +0 -2
  391. package/src/CheckboxList/CheckboxList.test.tsx +0 -19
  392. package/src/CheckboxList/CheckboxListItem.tsx +2 -11
  393. package/src/Citation/Citation.doc.mjs +0 -5
  394. package/src/ClickableCard/ClickableCard.tsx +2 -45
  395. package/src/CodeBlock/CodeBlock.doc.mjs +2 -7
  396. package/src/CodeBlock/CodeBlock.test.tsx +3 -122
  397. package/src/CodeBlock/CodeBlock.tsx +4 -62
  398. package/src/Collapsible/Collapsible.doc.mjs +4 -8
  399. package/src/Collapsible/Collapsible.tsx +10 -86
  400. package/src/Collapsible/CollapsibleGroup.doc.mjs +3 -27
  401. package/src/Collapsible/CollapsibleGroup.test.tsx +0 -318
  402. package/src/Collapsible/CollapsibleGroup.tsx +9 -107
  403. package/src/Collapsible/CollapsibleGroupContext.tsx +2 -42
  404. package/src/Collapsible/index.ts +0 -4
  405. package/src/Collapsible/useCollapsible.ts +6 -20
  406. package/src/CommandPalette/CommandPalette.doc.mjs +0 -4
  407. package/src/CommandPalette/CommandPalette.tsx +3 -5
  408. package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +0 -5
  409. package/src/CommandPalette/CommandPaletteGroup.doc.mjs +0 -10
  410. package/src/CommandPalette/CommandPaletteInput.doc.mjs +0 -6
  411. package/src/CommandPalette/CommandPaletteItem.doc.mjs +0 -6
  412. package/src/CommandPalette/CommandPaletteList.doc.mjs +0 -9
  413. package/src/ContextMenu/ContextMenu.doc.mjs +0 -15
  414. package/src/ContextMenu/ContextMenu.test.tsx +0 -87
  415. package/src/ContextMenu/ContextMenu.tsx +28 -87
  416. package/src/ContextMenu/ContextMenuItem.doc.mjs +0 -6
  417. package/src/DateInput/DateInput.test.tsx +20 -11
  418. package/src/DateRangeInput/DateRangeInput.test.tsx +44 -31
  419. package/src/DateTimeInput/DateTimeInput.doc.mjs +2 -3
  420. package/src/DateTimeInput/DateTimeInput.test.tsx +16 -118
  421. package/src/DateTimeInput/DateTimeInput.tsx +2 -8
  422. package/src/DateTimeInput/index.ts +0 -1
  423. package/src/Dialog/Dialog.doc.mjs +0 -4
  424. package/src/Dialog/DialogHeader.doc.mjs +0 -45
  425. package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -1
  426. package/src/DropdownMenu/DropdownMenu.test.tsx +2 -22
  427. package/src/DropdownMenu/DropdownMenuItem.tsx +17 -5
  428. package/src/Field/Field.test.tsx +4 -1
  429. package/src/Field/FieldLabel.test.tsx +2 -2
  430. package/src/FormLayout/__snapshots__/FormLayout.test.tsx.snap +3 -0
  431. package/src/Grid/Grid.test.tsx +18 -43
  432. package/src/Grid/Grid.tsx +9 -26
  433. package/src/HoverCard/HoverCard.doc.mjs +6 -6
  434. package/src/HoverCard/useHoverCard.doc.mjs +5 -5
  435. package/src/HoverCard/useHoverCard.tsx +2 -9
  436. package/src/Icon/Icon.test.tsx +29 -41
  437. package/src/Icon/Icon.tsx +2 -6
  438. package/src/InputGroup/InputGroup.tsx +2 -2
  439. package/src/Item/Item.tsx +1 -1
  440. package/src/Layer/useLayer.doc.mjs +2 -2
  441. package/src/Layer/useLayer.test.tsx +2 -221
  442. package/src/Layer/useLayer.tsx +30 -69
  443. package/src/Layout/LayoutContent.doc.mjs +0 -12
  444. package/src/Layout/LayoutPanel.doc.mjs +0 -40
  445. package/src/Lightbox/Lightbox.doc.mjs +0 -5
  446. package/src/Lightbox/Lightbox.test.tsx +2 -123
  447. package/src/Lightbox/Lightbox.tsx +1 -29
  448. package/src/Markdown/Markdown.tsx +7 -9
  449. package/src/Markdown/parser.perf.test.ts +12 -34
  450. package/src/NavMenu/NavMenu.doc.mjs +0 -15
  451. package/src/NumberInput/NumberInput.test.tsx +3 -48
  452. package/src/NumberInput/NumberInput.tsx +15 -32
  453. package/src/Overlay/Overlay.doc.mjs +0 -6
  454. package/src/Pagination/Pagination.test.tsx +0 -162
  455. package/src/Pagination/Pagination.tsx +26 -80
  456. package/src/Popover/Popover.doc.mjs +6 -6
  457. package/src/Popover/Popover.test.tsx +0 -65
  458. package/src/Popover/usePopover.doc.mjs +1 -1
  459. package/src/PowerSearch/PowerSearch.doc.mjs +2 -2
  460. package/src/PowerSearch/PowerSearch.test.tsx +1 -109
  461. package/src/PowerSearch/PowerSearch.tsx +16 -37
  462. package/src/ProgressBar/ProgressBar.test.tsx +0 -30
  463. package/src/ProgressBar/ProgressBar.tsx +5 -12
  464. package/src/RadioList/RadioList.test.tsx +0 -19
  465. package/src/RadioList/RadioListItem.tsx +4 -9
  466. package/src/Resizable/ResizeHandle.tsx +4 -22
  467. package/src/SegmentedControl/SegmentedControl.doc.mjs +1 -1
  468. package/src/SegmentedControl/SegmentedControl.test.tsx +0 -192
  469. package/src/SegmentedControl/SegmentedControl.tsx +5 -27
  470. package/src/SegmentedControl/SegmentedControlItem.tsx +4 -9
  471. package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
  472. package/src/Selector/Selector.test.tsx +1 -27
  473. package/src/SideNav/SideNav.doc.mjs +1 -7
  474. package/src/SideNav/SideNav.test.tsx +0 -66
  475. package/src/SideNav/SideNav.tsx +2 -6
  476. package/src/SideNav/SideNavCollapseButton.tsx +3 -4
  477. package/src/SideNav/SideNavSection.tsx +4 -6
  478. package/src/Switch/Switch.doc.mjs +7 -7
  479. package/src/Switch/Switch.test.tsx +3 -102
  480. package/src/Switch/Switch.tsx +7 -20
  481. package/src/TabList/TabList.test.tsx +1 -185
  482. package/src/TabList/TabMenu.tsx +9 -45
  483. package/src/Table/BaseTable.tsx +2 -13
  484. package/src/Table/Table.test.tsx +0 -87
  485. package/src/Table/TableBody.tsx +2 -15
  486. package/src/Table/TableFooter.tsx +2 -15
  487. package/src/Table/TableHeader.tsx +2 -15
  488. package/src/Table/plugins/columnResize/useTableColumnResize.test.tsx +0 -13
  489. package/src/Table/plugins/columnResize/useTableColumnResize.tsx +1 -3
  490. package/src/Table/plugins/pagination/paginateData.ts +1 -5
  491. package/src/Table/plugins/pagination/useTablePagination.test.tsx +0 -13
  492. package/src/Table/plugins/selection/useTableSelectionState.test.tsx +0 -23
  493. package/src/Table/plugins/selection/useTableSelectionState.tsx +6 -11
  494. package/src/Table/plugins/sortable/useTableSortableState.test.tsx +1 -35
  495. package/src/Table/plugins/sortable/useTableSortableState.tsx +4 -8
  496. package/src/TextArea/TextArea.test.tsx +3 -3
  497. package/src/TextInput/TextInput.test.tsx +3 -3
  498. package/src/Thumbnail/Thumbnail.test.tsx +2 -36
  499. package/src/Thumbnail/Thumbnail.tsx +2 -4
  500. package/src/TimeInput/TimeInput.test.tsx +0 -37
  501. package/src/TimeInput/TimeInput.tsx +1 -11
  502. package/src/Timestamp/Timestamp.doc.mjs +1 -1
  503. package/src/Timestamp/Timestamp.test.tsx +0 -52
  504. package/src/Timestamp/Timestamp.tsx +16 -30
  505. package/src/Toast/Toast.tsx +3 -11
  506. package/src/Toast/ToastViewport.test.tsx +0 -64
  507. package/src/Toast/ToastViewport.tsx +0 -12
  508. package/src/ToggleButton/ToggleButton.doc.mjs +0 -1
  509. package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
  510. package/src/Tokenizer/Tokenizer.test.tsx +0 -54
  511. package/src/Tokenizer/Tokenizer.tsx +4 -5
  512. package/src/Tooltip/Tooltip.doc.mjs +6 -6
  513. package/src/Tooltip/useTooltip.doc.mjs +5 -5
  514. package/src/Tooltip/useTooltip.tsx +2 -12
  515. package/src/TopNav/TopNav.doc.mjs +1 -1
  516. package/src/TopNav/TopNav.test.tsx +7 -23
  517. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +2 -9
  518. package/src/TreeList/TreeList.doc.mjs +2 -2
  519. package/src/Typeahead/BaseTypeahead.doc.mjs +0 -19
  520. package/src/Typeahead/BaseTypeahead.tsx +2 -5
  521. package/src/Typeahead/Typeahead.doc.mjs +1 -1
  522. package/src/Typeahead/Typeahead.test.tsx +1 -45
  523. package/src/docs-types.ts +1 -9
  524. package/src/hooks/focusableSelector.ts +1 -1
  525. package/src/hooks/index.ts +0 -3
  526. package/src/hooks/useFocusTrap.doc.mjs +2 -4
  527. package/src/hooks/useFocusTrap.test.tsx +1 -149
  528. package/src/hooks/useFocusTrap.ts +1 -50
  529. package/src/hooks/useInteractiveRole.ts +4 -12
  530. package/src/hooks/useStreamingText.test.ts +19 -54
  531. package/src/hooks/useStreamingText.ts +5 -16
  532. package/src/hooks/useTreeFocus.test.tsx +3 -1
  533. package/src/reset.css +0 -29
  534. package/src/theme/SyntaxTheme.doc.mjs +4 -4
  535. package/src/theme/defineTheme.ts +13 -4
  536. package/src/theme/derivedVarRegistry.test.ts +2 -2
  537. package/src/theme/expandColorScale.test.ts +0 -29
  538. package/src/theme/expandColorScale.ts +6 -11
  539. package/src/theme/hct.ts +17 -9
  540. package/src/theme/tokens.test.ts +9 -182
  541. package/src/theme/tokens.ts +4 -239
  542. package/src/theme/useTheme.test.tsx +0 -20
  543. package/src/utils/index.ts +0 -4
  544. package/src/utils/sharedResizeObserver.test.ts +2 -2
  545. package/src/utils/timeParser.test.ts +0 -13
  546. package/src/utils/timeParser.ts +5 -8
  547. package/dist/hooks/useHotkeys.d.ts +0 -51
  548. package/dist/hooks/useHotkeys.d.ts.map +0 -1
  549. package/dist/hooks/useHotkeys.js +0 -160
  550. package/dist/utils/color.d.ts +0 -42
  551. package/dist/utils/color.d.ts.map +0 -1
  552. package/dist/utils/color.js +0 -150
  553. package/dist/utils/composeEventHandlers.d.ts +0 -30
  554. package/dist/utils/composeEventHandlers.d.ts.map +0 -1
  555. package/dist/utils/composeEventHandlers.js +0 -40
  556. package/src/Chat/ChatDictationButton.test.tsx +0 -43
  557. package/src/Chat/ChatLayoutScrollButton.test.tsx +0 -33
  558. package/src/Chat/ChatMessageMetadata.test.tsx +0 -32
  559. package/src/Collapsible/Collapsible.test.tsx +0 -405
  560. package/src/FieldStatus/FieldStatus.test.tsx +0 -282
  561. package/src/InteractiveRoleContext/InteractiveRoleContext.test.tsx +0 -185
  562. package/src/Layout/Layout.test.tsx +0 -285
  563. package/src/Layout/LayoutSlots.test.tsx +0 -364
  564. package/src/Outline/parseOutlineFromMarkdown.test.ts +0 -80
  565. package/src/OverflowList/OverflowList.test.tsx +0 -416
  566. package/src/Overlay/Overlay.test.tsx +0 -356
  567. package/src/Resizable/ResizeHandle.test.tsx +0 -218
  568. package/src/SizeContext/SizeContext.test.tsx +0 -226
  569. package/src/__tests__/TestIcon.tsx +0 -26
  570. package/src/__tests__/fastRoleQueries.ts +0 -66
  571. package/src/docPropReferences.test.ts +0 -178
  572. package/src/hooks/useHotkeys.doc.mjs +0 -52
  573. package/src/hooks/useHotkeys.test.ts +0 -245
  574. package/src/hooks/useHotkeys.ts +0 -203
  575. package/src/utils/color.test.ts +0 -133
  576. package/src/utils/color.ts +0 -148
  577. package/src/utils/composeEventHandlers.test.ts +0 -71
  578. package/src/utils/composeEventHandlers.ts +0 -44
  579. package/src/utils/mergeProps.test.ts +0 -166
@@ -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"}
@@ -1,150 +0,0 @@
1
- // Copyright (c) Meta Platforms, Inc. and affiliates.
2
-
3
- /**
4
- * @file color.ts
5
- * @input CSS color strings (hex, rgb()/rgba(), a small set of named colors)
6
- * @output Shared color parsing/formatting primitives used across the design system
7
- * @position Package utility; backs theme token resolution, HCT color math, and chart rendering
8
- *
9
- * A single home for the color parsers that were previously duplicated across
10
- * the theme layer, charts, and lab. Consumers get one well-tested definition of
11
- * "parse this color" rather than several subtly different regexes.
12
- */
13
-
14
- /** A color decomposed into 0-255 RGB channels and a 0-1 alpha. */
15
-
16
- /** The named colors the design system relies on in token expressions. */
17
- const NAMED_COLORS = {
18
- transparent: {
19
- r: 0,
20
- g: 0,
21
- b: 0,
22
- a: 0
23
- },
24
- black: {
25
- r: 0,
26
- g: 0,
27
- b: 0,
28
- a: 1
29
- },
30
- white: {
31
- r: 255,
32
- g: 255,
33
- b: 255,
34
- a: 1
35
- }
36
- };
37
- const clamp = (value, min, max) => Math.max(min, Math.min(max, value));
38
-
39
- /** Expand a shorthand hex body (`rgb`/`rgba`) to its full form (`rrggbb`/`rrggbbaa`). */
40
- function expandShorthand(body) {
41
- return body.split('').map(c => c + c).join('');
42
- }
43
-
44
- /**
45
- * Parse a hex color into {@link RGBA}. Accepts `#rgb`, `#rgba`, `#rrggbb`, and
46
- * `#rrggbbaa`, with or without the leading `#`. Returns null for anything else.
47
- */
48
- export function parseHex(hex) {
49
- if (typeof hex !== 'string') {
50
- return null;
51
- }
52
- const body = hex.trim().replace(/^#/, '');
53
- const normalized = body.length === 3 || body.length === 4 ? expandShorthand(body) : body;
54
- if (normalized.length !== 6 && normalized.length !== 8 || !/^[0-9a-fA-F]+$/.test(normalized)) {
55
- return null;
56
- }
57
- return {
58
- r: parseInt(normalized.slice(0, 2), 16),
59
- g: parseInt(normalized.slice(2, 4), 16),
60
- b: parseInt(normalized.slice(4, 6), 16),
61
- a: normalized.length === 8 ? parseInt(normalized.slice(6, 8), 16) / 255 : 1
62
- };
63
- }
64
-
65
- /**
66
- * Parse an `rgb()`/`rgba()` color into {@link RGBA}. Accepts comma- or
67
- * space-separated channels, an optional `/ alpha`, and percentage channels.
68
- */
69
- export function parseRgb(value) {
70
- const open = value.indexOf('(');
71
- if (open === -1 || !value.trim().endsWith(')')) {
72
- return null;
73
- }
74
- const body = value.slice(open + 1, value.lastIndexOf(')')).replace(/\//g, ' ');
75
- const parts = body.split(/[\s,]+/).map(p => p.trim()).filter(Boolean);
76
- if (parts.length < 3) {
77
- return null;
78
- }
79
- const channel = p => {
80
- const n = p.endsWith('%') ? parseFloat(p) / 100 * 255 : parseFloat(p);
81
- return clamp(n, 0, 255);
82
- };
83
- const r = channel(parts[0]);
84
- const g = channel(parts[1]);
85
- const b = channel(parts[2]);
86
- if ([r, g, b].some(Number.isNaN)) {
87
- return null;
88
- }
89
- let a = 1;
90
- if (parts.length >= 4) {
91
- const raw = parts[3];
92
- a = raw.endsWith('%') ? parseFloat(raw) / 100 : parseFloat(raw);
93
- if (Number.isNaN(a)) {
94
- return null;
95
- }
96
- a = clamp(a, 0, 1);
97
- }
98
- return {
99
- r,
100
- g,
101
- b,
102
- a
103
- };
104
- }
105
-
106
- /**
107
- * Parse a concrete CSS color string into {@link RGBA}. Supports hex,
108
- * `rgb()`/`rgba()`, and the named colors used in token expressions. Returns
109
- * null for anything it can't evaluate (e.g. `var()`, `oklch()`, unknown names)
110
- * so callers can preserve the original expression rather than guessing.
111
- */
112
- export function parseColor(value) {
113
- const trimmed = value.trim();
114
- const named = NAMED_COLORS[trimmed.toLowerCase()];
115
- if (named) {
116
- return {
117
- ...named
118
- };
119
- }
120
- if (trimmed.startsWith('#')) {
121
- return parseHex(trimmed);
122
- }
123
- if (/^rgba?\(/i.test(trimmed)) {
124
- return parseRgb(trimmed);
125
- }
126
- return null;
127
- }
128
-
129
- /** Format RGB channels (0-255) as an uppercase `#RRGGBB` string. */
130
- export function formatHex(r, g, b) {
131
- const channel = c => clamp(Math.round(c), 0, 255).toString(16).padStart(2, '0').toUpperCase();
132
- return `#${channel(r)}${channel(g)}${channel(b)}`;
133
- }
134
-
135
- /**
136
- * Serialize {@link RGBA} to a compact, JS-usable CSS color: `#RRGGBB` when
137
- * fully opaque, otherwise `rgba(r, g, b, a)`.
138
- */
139
- export function formatColor({
140
- r,
141
- g,
142
- b,
143
- a
144
- }) {
145
- if (a >= 1) {
146
- return formatHex(r, g, b);
147
- }
148
- const round = n => clamp(Math.round(n), 0, 255);
149
- return `rgba(${round(r)}, ${round(g)}, ${round(b)}, ${parseFloat(a.toFixed(4))})`;
150
- }
@@ -1,30 +0,0 @@
1
- /**
2
- * @file composeEventHandlers.ts
3
- * @input Multiple React event handlers (or undefined)
4
- * @output A single handler that calls each in order, stopping if one prevents default
5
- * @position Utility; used by components that own an interaction (a click that
6
- * selects, a keydown that drives arrow navigation) but also accept a consumer
7
- * handler for the same event through {...rest}. Composes them instead of
8
- * letting one clobber the other.
9
- *
10
- * Order is call order: the first argument runs first. Put the consumer handler
11
- * first so it can opt out of the component's built-in behavior via
12
- * `event.preventDefault()`; put the component's handler first when its behavior
13
- * must always run regardless of the consumer.
14
- */
15
- import type { SyntheticEvent } from 'react';
16
- /**
17
- * Compose event handlers into one. Each handler runs in argument order; if any
18
- * calls `event.preventDefault()`, the remaining handlers are skipped.
19
- *
20
- * @example
21
- * ```tsx
22
- * // Consumer first: a consumer onClick can preventDefault to block selection.
23
- * <button onClick={composeEventHandlers(onClickProp, handleSelect)} />
24
- *
25
- * // Component first: built-in keyboard nav always runs.
26
- * <div onKeyDown={composeEventHandlers(handleArrowKeys, onKeyDownProp)} />
27
- * ```
28
- */
29
- export declare function composeEventHandlers<E extends SyntheticEvent>(...handlers: (((event: E) => void) | undefined)[]): (event: E) => void;
30
- //# sourceMappingURL=composeEventHandlers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"composeEventHandlers.d.ts","sourceRoot":"","sources":["../../src/utils/composeEventHandlers.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AAE1C;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,cAAc,EAC3D,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAChD,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CASpB"}
@@ -1,40 +0,0 @@
1
- // Copyright (c) Meta Platforms, Inc. and affiliates.
2
-
3
- /**
4
- * @file composeEventHandlers.ts
5
- * @input Multiple React event handlers (or undefined)
6
- * @output A single handler that calls each in order, stopping if one prevents default
7
- * @position Utility; used by components that own an interaction (a click that
8
- * selects, a keydown that drives arrow navigation) but also accept a consumer
9
- * handler for the same event through {...rest}. Composes them instead of
10
- * letting one clobber the other.
11
- *
12
- * Order is call order: the first argument runs first. Put the consumer handler
13
- * first so it can opt out of the component's built-in behavior via
14
- * `event.preventDefault()`; put the component's handler first when its behavior
15
- * must always run regardless of the consumer.
16
- */
17
-
18
- /**
19
- * Compose event handlers into one. Each handler runs in argument order; if any
20
- * calls `event.preventDefault()`, the remaining handlers are skipped.
21
- *
22
- * @example
23
- * ```tsx
24
- * // Consumer first: a consumer onClick can preventDefault to block selection.
25
- * <button onClick={composeEventHandlers(onClickProp, handleSelect)} />
26
- *
27
- * // Component first: built-in keyboard nav always runs.
28
- * <div onKeyDown={composeEventHandlers(handleArrowKeys, onKeyDownProp)} />
29
- * ```
30
- */
31
- export function composeEventHandlers(...handlers) {
32
- return event => {
33
- for (const handler of handlers) {
34
- handler?.(event);
35
- if (event.defaultPrevented) {
36
- return;
37
- }
38
- }
39
- };
40
- }
@@ -1,43 +0,0 @@
1
- // Copyright (c) Meta Platforms, Inc. and affiliates.
2
-
3
- import {describe, it, expect} from 'vitest';
4
- import {render, screen} from '@testing-library/react';
5
- import {ChatDictationButton} from './ChatDictationButton';
6
- import type {UseSpeechRecognitionReturn} from './useSpeechRecognition';
7
-
8
- const dictation: UseSpeechRecognitionReturn = {
9
- isSupported: true,
10
- isListening: false,
11
- isSpeaking: false,
12
- volume: 0,
13
- bands: [0, 0, 0, 0, 0],
14
- rawBands: [0, 0, 0, 0, 0],
15
- interimTranscript: '',
16
- start: () => {},
17
- stop: () => {},
18
- abort: () => {},
19
- toggle: () => {},
20
- };
21
-
22
- describe('ChatDictationButton', () => {
23
- it('renders a dictation button', () => {
24
- render(
25
- <ChatDictationButton dictation={dictation} data-testid="dictation" />,
26
- );
27
- expect(screen.getByTestId('dictation')).toBeTruthy();
28
- });
29
-
30
- it('forwards rest props (data-*, aria-*, id) to the root element', () => {
31
- render(
32
- <ChatDictationButton
33
- dictation={dictation}
34
- data-testid="dictation"
35
- data-custom="x"
36
- id="dictate-1"
37
- />,
38
- );
39
- const root = screen.getByTestId('dictation');
40
- expect(root).toHaveAttribute('data-custom', 'x');
41
- expect(root).toHaveAttribute('id', 'dictate-1');
42
- });
43
- });
@@ -1,33 +0,0 @@
1
- // Copyright (c) Meta Platforms, Inc. and affiliates.
2
-
3
- import {describe, it, expect} from 'vitest';
4
- import {render, screen} from '@testing-library/react';
5
- import {ChatLayoutScrollButton} from './ChatLayoutScrollButton';
6
-
7
- describe('ChatLayoutScrollButton', () => {
8
- it('renders a scroll button', () => {
9
- render(
10
- <ChatLayoutScrollButton
11
- isVisible
12
- onClick={() => {}}
13
- data-testid="scroll"
14
- />,
15
- );
16
- expect(screen.getByTestId('scroll')).toBeTruthy();
17
- });
18
-
19
- it('forwards rest props (data-*, aria-*, id) to the root element', () => {
20
- render(
21
- <ChatLayoutScrollButton
22
- isVisible
23
- onClick={() => {}}
24
- data-testid="scroll"
25
- data-custom="x"
26
- id="scroll-1"
27
- />,
28
- );
29
- const root = screen.getByTestId('scroll');
30
- expect(root).toHaveAttribute('data-custom', 'x');
31
- expect(root).toHaveAttribute('id', 'scroll-1');
32
- });
33
- });
@@ -1,32 +0,0 @@
1
- // Copyright (c) Meta Platforms, Inc. and affiliates.
2
-
3
- import {describe, it, expect} from 'vitest';
4
- import {render, screen} from '@testing-library/react';
5
- import {ChatMessageMetadata} from './ChatMessageMetadata';
6
-
7
- describe('ChatMessageMetadata', () => {
8
- it('renders metadata content', () => {
9
- render(
10
- <ChatMessageMetadata
11
- timestamp="12:00"
12
- status="read"
13
- data-testid="meta"
14
- />,
15
- );
16
- expect(screen.getByTestId('meta')).toBeTruthy();
17
- });
18
-
19
- it('forwards rest props (data-*, aria-*, id) to the root element', () => {
20
- render(
21
- <ChatMessageMetadata
22
- timestamp="12:00"
23
- data-testid="meta"
24
- data-custom="x"
25
- id="meta-1"
26
- />,
27
- );
28
- const root = screen.getByTestId('meta');
29
- expect(root).toHaveAttribute('data-custom', 'x');
30
- expect(root).toHaveAttribute('id', 'meta-1');
31
- });
32
- });