@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.
- package/dist/AlertDialog/AlertDialog.d.ts +1 -1
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +18 -20
- package/dist/AlertDialog/useImperativeAlertDialog.js +3 -3
- package/dist/AppShell/AppShell.d.ts +1 -1
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +53 -55
- package/dist/AspectRatio/AspectRatio.d.ts +10 -48
- package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
- package/dist/AspectRatio/AspectRatio.js +12 -33
- package/dist/AspectRatio/index.d.ts +1 -1
- package/dist/AspectRatio/index.d.ts.map +1 -1
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +25 -27
- package/dist/Avatar/AvatarStatusDot.js +5 -5
- package/dist/AvatarGroup/AvatarGroup.js +5 -5
- package/dist/AvatarGroup/AvatarGroupOverflow.js +5 -5
- package/dist/Badge/Badge.js +3 -3
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +25 -32
- package/dist/Blockquote/Blockquote.js +7 -7
- package/dist/Breadcrumbs/BreadcrumbItem.js +17 -17
- package/dist/Breadcrumbs/Breadcrumbs.js +7 -7
- package/dist/Button/Button.js +19 -19
- package/dist/ButtonGroup/ButtonGroup.js +7 -7
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +48 -68
- package/dist/Calendar/dayCellUtils.d.ts.map +1 -1
- package/dist/Calendar/styles.d.ts +2 -2
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +2 -2
- package/dist/Card/Card.d.ts +2 -4
- package/dist/Card/Card.d.ts.map +1 -1
- package/dist/Card/Card.js +10 -18
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +21 -24
- package/dist/Carousel/carousel.markers.stylex.d.ts +7 -0
- package/dist/Carousel/carousel.markers.stylex.d.ts.map +1 -0
- package/dist/Carousel/carousel.markers.stylex.js +12 -0
- package/dist/Center/Center.js +3 -3
- package/dist/Chat/ChatComposer.js +23 -23
- package/dist/Chat/ChatComposerDrawer.js +14 -14
- package/dist/Chat/ChatComposerInput.d.ts +1 -1
- package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +15 -27
- package/dist/Chat/ChatDictationButton.d.ts +1 -1
- package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
- package/dist/Chat/ChatDictationButton.js +11 -13
- package/dist/Chat/ChatLayout.js +17 -17
- package/dist/Chat/ChatLayoutScrollButton.d.ts +1 -1
- package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
- package/dist/Chat/ChatLayoutScrollButton.js +10 -12
- package/dist/Chat/ChatMessage.js +12 -12
- package/dist/Chat/ChatMessageBubble.js +7 -7
- package/dist/Chat/ChatMessageList.js +14 -14
- package/dist/Chat/ChatMessageMetadata.d.ts +1 -1
- package/dist/Chat/ChatMessageMetadata.d.ts.map +1 -1
- package/dist/Chat/ChatMessageMetadata.js +12 -14
- package/dist/Chat/ChatPastedTextToken.js +13 -13
- package/dist/Chat/ChatSendButton.js +3 -3
- package/dist/Chat/ChatSystemMessage.d.ts +1 -1
- package/dist/Chat/ChatSystemMessage.d.ts.map +1 -1
- package/dist/Chat/ChatSystemMessage.js +17 -17
- package/dist/Chat/ChatTokenizedText.d.ts +1 -1
- package/dist/Chat/ChatTokenizedText.d.ts.map +1 -1
- package/dist/Chat/ChatTokenizedText.js +15 -24
- package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
- package/dist/Chat/ChatToolCalls.js +74 -81
- package/dist/Chat/index.d.ts +1 -1
- package/dist/Chat/index.d.ts.map +1 -1
- package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
- package/dist/Chat/useTriggerMenu.js +15 -15
- package/dist/CheckboxInput/CheckboxInput.d.ts +1 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +23 -25
- package/dist/CheckboxList/CheckboxList.js +9 -9
- package/dist/CheckboxList/CheckboxListItem.d.ts +1 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +6 -8
- package/dist/Citation/Citation.js +10 -10
- package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
- package/dist/ClickableCard/ClickableCard.js +9 -32
- package/dist/Code/Code.js +3 -3
- package/dist/CodeBlock/CodeBlock.d.ts +1 -10
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +52 -88
- package/dist/Collapsible/Collapsible.d.ts +3 -9
- package/dist/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible/Collapsible.js +22 -110
- package/dist/Collapsible/CollapsibleGroup.d.ts +7 -39
- package/dist/Collapsible/CollapsibleGroup.d.ts.map +1 -1
- package/dist/Collapsible/CollapsibleGroup.js +12 -73
- package/dist/Collapsible/CollapsibleGroupContext.d.ts +0 -31
- package/dist/Collapsible/CollapsibleGroupContext.d.ts.map +1 -1
- package/dist/Collapsible/CollapsibleGroupContext.js +3 -33
- package/dist/Collapsible/index.d.ts +0 -1
- package/dist/Collapsible/index.d.ts.map +1 -1
- package/dist/Collapsible/useCollapsible.d.ts +1 -4
- package/dist/Collapsible/useCollapsible.d.ts.map +1 -1
- package/dist/Collapsible/useCollapsible.js +6 -20
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +34 -36
- package/dist/CommandPalette/CommandPaletteEmpty.js +3 -3
- package/dist/CommandPalette/CommandPaletteFooter.js +16 -16
- package/dist/CommandPalette/CommandPaletteGroup.js +5 -5
- package/dist/CommandPalette/CommandPaletteInput.js +13 -13
- package/dist/CommandPalette/CommandPaletteItem.js +3 -3
- package/dist/CommandPalette/CommandPaletteList.js +3 -3
- package/dist/ContextMenu/ContextMenu.d.ts +2 -7
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +43 -76
- package/dist/DateInput/DateInput.js +18 -18
- package/dist/DateRangeInput/DateRangeInput.js +21 -21
- package/dist/DateTimeInput/DateTimeInput.d.ts +2 -5
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +26 -30
- package/dist/DateTimeInput/index.d.ts +1 -1
- package/dist/DateTimeInput/index.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +9 -9
- package/dist/Dialog/DialogHeader.js +16 -16
- package/dist/Dialog/useImperativeDialog.js +3 -3
- package/dist/Divider/Divider.js +7 -7
- package/dist/DropdownMenu/DropdownMenu.js +10 -10
- package/dist/DropdownMenu/DropdownMenuItem.d.ts +17 -2
- package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuItem.js +3 -3
- package/dist/DropdownMenu/renderDropdownItems.js +10 -10
- package/dist/EmptyState/EmptyState.js +9 -9
- package/dist/Field/Field.js +17 -17
- package/dist/Field/FieldLabel.js +15 -15
- package/dist/Field/InputClearButton.js +5 -5
- package/dist/FieldStatus/FieldStatus.js +3 -3
- package/dist/FileInput/FileInput.js +29 -29
- package/dist/FormLayout/FormLayout.js +5 -5
- package/dist/Grid/Grid.d.ts +3 -4
- package/dist/Grid/Grid.d.ts.map +1 -1
- package/dist/Grid/Grid.js +12 -29
- package/dist/Grid/GridSpan.js +3 -3
- package/dist/HStack/HStack.js +3 -3
- package/dist/Heading/Heading.js +10 -10
- package/dist/HoverCard/HoverCard.js +9 -9
- package/dist/HoverCard/useHoverCard.d.ts +1 -5
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +3 -3
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +12 -16
- package/dist/Icon/defaultIcons.js +116 -116
- package/dist/IconButton/IconButton.js +3 -3
- package/dist/InputGroup/InputGroup.js +11 -11
- package/dist/InputGroup/InputGroupText.js +3 -3
- package/dist/Item/Item.js +18 -18
- package/dist/Kbd/Kbd.js +5 -5
- package/dist/Layer/LayerProvider.js +7 -7
- package/dist/Layer/useLayer.d.ts +2 -29
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +31 -44
- package/dist/Layout/Layout.js +21 -21
- package/dist/Layout/LayoutContent.js +3 -3
- package/dist/Layout/LayoutFooter.js +5 -5
- package/dist/Layout/LayoutHeader.js +5 -5
- package/dist/Layout/LayoutPanel.js +3 -3
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +31 -55
- package/dist/Lightbox/useLightbox.js +3 -3
- package/dist/Link/Link.js +15 -15
- package/dist/Link/LinkProvider.js +3 -3
- package/dist/Link/useLinkify.js +3 -3
- package/dist/List/List.js +11 -11
- package/dist/List/ListItem.js +11 -11
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +102 -102
- package/dist/MetadataList/MetadataList.js +10 -10
- package/dist/MetadataList/MetadataListItem.js +15 -15
- package/dist/MobileNav/MobileNav.d.ts +1 -1
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +23 -26
- package/dist/MobileNav/MobileNavToggle.js +5 -5
- package/dist/MoreMenu/MoreMenu.js +3 -3
- package/dist/MultiSelector/MultiSelector.js +56 -56
- package/dist/NavIcon/NavIcon.js +3 -3
- package/dist/NavMenu/NavHeadingMenu.js +5 -5
- package/dist/NavMenu/NavHeadingMenuItem.js +8 -8
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +32 -48
- package/dist/Outline/Outline.js +15 -15
- package/dist/OverflowList/OverflowList.js +8 -8
- package/dist/Overlay/Overlay.js +3 -3
- package/dist/Overlay/OverlayScrim.js +5 -5
- package/dist/Overlay/useOverlay.js +3 -3
- package/dist/Pagination/Pagination.d.ts +1 -1
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +72 -125
- package/dist/Popover/Popover.js +16 -16
- package/dist/Popover/usePopover.js +7 -7
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +92 -110
- package/dist/PowerSearch/PowerSearchEditPopover.js +84 -84
- package/dist/PowerSearch/PowerSearchFilterEditor.js +3 -3
- package/dist/PowerSearch/PowerSearchToken.js +5 -5
- package/dist/PowerSearch/PowerSearchValueEditor.js +54 -54
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +18 -25
- package/dist/RadioList/RadioList.js +7 -7
- package/dist/RadioList/RadioListItem.d.ts +1 -1
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +21 -24
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +10 -28
- package/dist/Section/Section.js +5 -5
- package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControl.js +10 -32
- package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +12 -18
- package/dist/SelectableCard/SelectableCard.js +5 -5
- package/dist/Selector/Selector.js +46 -46
- package/dist/Selector/SelectorOption.js +3 -3
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +34 -38
- package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseButton.js +6 -8
- package/dist/SideNav/SideNavHeading.js +87 -87
- package/dist/SideNav/SideNavItem.js +42 -42
- package/dist/SideNav/SideNavSection.d.ts +1 -1
- package/dist/SideNav/SideNavSection.d.ts.map +1 -1
- package/dist/SideNav/SideNavSection.js +16 -18
- package/dist/Skeleton/Skeleton.js +3 -3
- package/dist/Slider/Slider.js +23 -23
- package/dist/Spinner/Spinner.js +9 -9
- package/dist/StatusDot/StatusDot.js +5 -5
- package/dist/Switch/Switch.d.ts +4 -8
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +29 -34
- package/dist/TabList/Tab.js +18 -18
- package/dist/TabList/TabList.js +5 -5
- package/dist/TabList/TabMenu.d.ts.map +1 -1
- package/dist/TabList/TabMenu.js +30 -57
- package/dist/TabList/tab.markers.stylex.d.ts +1 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +39 -50
- package/dist/Table/Table.js +7 -7
- package/dist/Table/TableBody.d.ts +1 -1
- package/dist/Table/TableBody.d.ts.map +1 -1
- package/dist/Table/TableBody.js +5 -9
- package/dist/Table/TableCell.js +3 -3
- package/dist/Table/TableFooter.d.ts +1 -1
- package/dist/Table/TableFooter.d.ts.map +1 -1
- package/dist/Table/TableFooter.js +5 -9
- package/dist/Table/TableHeader.d.ts +1 -1
- package/dist/Table/TableHeader.d.ts.map +1 -1
- package/dist/Table/TableHeader.js +5 -9
- package/dist/Table/TableHeaderCell.js +3 -3
- package/dist/Table/TableRow.js +5 -5
- package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
- package/dist/Table/plugins/columnResize/useTableColumnResize.js +11 -14
- package/dist/Table/plugins/filtering/useTableFiltering.js +71 -71
- package/dist/Table/plugins/pagination/paginateData.d.ts.map +1 -1
- package/dist/Table/plugins/pagination/paginateData.js +1 -5
- package/dist/Table/plugins/pagination/useTablePagination.js +7 -7
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +22 -22
- package/dist/Table/plugins/selection/useTableSelection.js +18 -18
- package/dist/Table/plugins/selection/useTableSelectionState.d.ts.map +1 -1
- package/dist/Table/plugins/selection/useTableSelectionState.js +1 -11
- package/dist/Table/plugins/sortable/useTableSortable.js +17 -17
- package/dist/Table/plugins/sortable/useTableSortableState.d.ts.map +1 -1
- package/dist/Table/plugins/sortable/useTableSortableState.js +4 -8
- package/dist/Table/tableContextMenu.js +9 -9
- package/dist/Text/Text.js +10 -10
- package/dist/TextArea/TextArea.js +14 -14
- package/dist/TextInput/TextInput.js +15 -15
- package/dist/Thumbnail/Thumbnail.d.ts +2 -3
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +29 -30
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +21 -26
- package/dist/Timestamp/Timestamp.d.ts +1 -1
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +26 -37
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +17 -25
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +11 -23
- package/dist/Toast/useToast.d.ts.map +1 -1
- package/dist/Toast/useToast.js +4 -44
- package/dist/ToggleButton/ToggleButton.js +12 -12
- package/dist/ToggleButton/ToggleButtonGroup.js +5 -5
- package/dist/Token/Token.js +21 -21
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +34 -36
- package/dist/Toolbar/Toolbar.js +18 -18
- package/dist/Tooltip/Tooltip.js +11 -11
- package/dist/Tooltip/useTooltip.d.ts +1 -5
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +3 -3
- package/dist/TopNav/TopNav.js +32 -32
- package/dist/TopNav/TopNavHeading.js +67 -67
- package/dist/TopNav/TopNavItem.js +5 -5
- package/dist/TopNav/TopNavMegaMenu.js +30 -30
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +14 -25
- package/dist/TopNav/TopNavMegaMenuItem.js +16 -16
- package/dist/TopNav/TopNavMenu.js +32 -32
- package/dist/TreeList/TreeList.js +8 -8
- package/dist/TreeList/TreeListBranches.js +11 -11
- package/dist/TreeList/TreeListItem.js +30 -30
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +20 -23
- package/dist/Typeahead/Typeahead.js +12 -12
- package/dist/Typeahead/TypeaheadItem.js +10 -10
- package/dist/VStack/VStack.js +3 -3
- package/dist/astryx.css +0 -7
- package/dist/astryx.umd.js +59 -59
- package/dist/astryx.umd.js.map +4 -4
- package/dist/docs-types.d.ts +2 -8
- package/dist/docs-types.d.ts.map +1 -1
- package/dist/hooks/focusableSelector.d.ts +1 -1
- package/dist/hooks/focusableSelector.d.ts.map +1 -1
- package/dist/hooks/focusableSelector.js +1 -1
- package/dist/hooks/index.d.ts +0 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +0 -1
- package/dist/hooks/useFocusTrap.d.ts +0 -3
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +1 -38
- package/dist/hooks/useInteractiveRole.d.ts +2 -6
- package/dist/hooks/useInteractiveRole.d.ts.map +1 -1
- package/dist/hooks/useInteractiveRole.js +2 -6
- package/dist/hooks/useKeyboardHint.js +9 -9
- package/dist/hooks/useStreamingText.d.ts +1 -3
- package/dist/hooks/useStreamingText.d.ts.map +1 -1
- package/dist/hooks/useStreamingText.js +5 -14
- package/dist/theme/MediaTheme.js +3 -3
- package/dist/theme/Theme.js +7 -7
- package/dist/theme/defineTheme.d.ts +1 -1
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/expandColorScale.d.ts.map +1 -1
- package/dist/theme/expandColorScale.js +3 -10
- package/dist/theme/hct.d.ts +15 -0
- package/dist/theme/hct.d.ts.map +1 -1
- package/dist/theme/hct.js +9 -9
- package/dist/theme/syntax/SyntaxTheme.js +5 -5
- package/dist/theme/tokens.d.ts +2 -10
- package/dist/theme/tokens.d.ts.map +1 -1
- package/dist/theme/tokens.js +4 -220
- package/dist/theme/useTheme.d.ts +2 -3
- package/dist/theme/useTheme.d.ts.map +1 -1
- package/dist/theme/useTheme.js +6 -73
- package/dist/utils/index.d.ts +0 -3
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -3
- package/dist/utils/timeParser.d.ts.map +1 -1
- package/dist/utils/timeParser.js +5 -8
- package/package.json +3 -3
- package/src/AlertDialog/AlertDialog.doc.mjs +0 -4
- package/src/AlertDialog/AlertDialog.tsx +0 -2
- package/src/AppShell/AppShell.tsx +0 -2
- package/src/AspectRatio/AspectRatio.doc.mjs +1 -28
- package/src/AspectRatio/AspectRatio.test.tsx +1 -142
- package/src/AspectRatio/AspectRatio.tsx +10 -70
- package/src/AspectRatio/index.ts +1 -5
- package/src/Avatar/Avatar.doc.mjs +0 -11
- package/src/Avatar/Avatar.test.tsx +1 -32
- package/src/Avatar/Avatar.tsx +20 -12
- package/src/AvatarGroup/AvatarGroup.doc.mjs +0 -1
- package/src/Banner/Banner.doc.mjs +0 -8
- package/src/Banner/Banner.test.tsx +0 -38
- package/src/Banner/Banner.tsx +1 -8
- package/src/Calendar/Calendar.doc.mjs +1 -1
- package/src/Calendar/Calendar.test.tsx +17 -122
- package/src/Calendar/Calendar.tsx +5 -26
- package/src/Calendar/dayCellUtils.ts +1 -3
- package/src/Calendar/styles.ts +2 -12
- package/src/Card/Card.doc.mjs +1 -1
- package/src/Card/Card.tsx +6 -16
- package/src/Carousel/Carousel.doc.mjs +12 -12
- package/src/Carousel/Carousel.test.tsx +0 -13
- package/src/Carousel/Carousel.tsx +2 -4
- package/src/Carousel/carousel.markers.stylex.ts +10 -0
- package/src/Chat/Chat.doc.mjs +1 -1
- package/src/Chat/ChatComposerInput.test.tsx +1 -27
- package/src/Chat/ChatComposerInput.tsx +15 -20
- package/src/Chat/ChatDictationButton.tsx +4 -4
- package/src/Chat/ChatLayoutScrollButton.tsx +1 -3
- package/src/Chat/ChatMessageMetadata.tsx +6 -4
- package/src/Chat/ChatSystemMessage.test.tsx +11 -26
- package/src/Chat/ChatSystemMessage.tsx +7 -7
- package/src/Chat/ChatTokenizedText.test.tsx +16 -29
- package/src/Chat/ChatTokenizedText.tsx +8 -15
- package/src/Chat/ChatToolCalls.test.tsx +0 -55
- package/src/Chat/ChatToolCalls.tsx +12 -10
- package/src/Chat/index.ts +4 -1
- package/src/Chat/useTriggerMenu.tsx +4 -1
- package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
- package/src/CheckboxInput/CheckboxInput.test.tsx +4 -71
- package/src/CheckboxInput/CheckboxInput.tsx +0 -2
- package/src/CheckboxList/CheckboxList.test.tsx +0 -19
- package/src/CheckboxList/CheckboxListItem.tsx +2 -11
- package/src/Citation/Citation.doc.mjs +0 -5
- package/src/ClickableCard/ClickableCard.tsx +2 -45
- package/src/CodeBlock/CodeBlock.doc.mjs +2 -7
- package/src/CodeBlock/CodeBlock.test.tsx +3 -122
- package/src/CodeBlock/CodeBlock.tsx +4 -62
- package/src/Collapsible/Collapsible.doc.mjs +4 -8
- package/src/Collapsible/Collapsible.tsx +10 -86
- package/src/Collapsible/CollapsibleGroup.doc.mjs +3 -27
- package/src/Collapsible/CollapsibleGroup.test.tsx +0 -318
- package/src/Collapsible/CollapsibleGroup.tsx +9 -107
- package/src/Collapsible/CollapsibleGroupContext.tsx +2 -42
- package/src/Collapsible/index.ts +0 -4
- package/src/Collapsible/useCollapsible.ts +6 -20
- package/src/CommandPalette/CommandPalette.doc.mjs +0 -5
- package/src/CommandPalette/CommandPalette.tsx +3 -5
- package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +0 -5
- package/src/CommandPalette/CommandPaletteGroup.doc.mjs +0 -10
- package/src/CommandPalette/CommandPaletteInput.doc.mjs +0 -6
- package/src/CommandPalette/CommandPaletteItem.doc.mjs +0 -6
- package/src/CommandPalette/CommandPaletteList.doc.mjs +0 -9
- package/src/ContextMenu/ContextMenu.doc.mjs +0 -15
- package/src/ContextMenu/ContextMenu.test.tsx +0 -87
- package/src/ContextMenu/ContextMenu.tsx +28 -87
- package/src/ContextMenu/ContextMenuItem.doc.mjs +0 -6
- package/src/DateInput/DateInput.test.tsx +20 -11
- package/src/DateRangeInput/DateRangeInput.test.tsx +44 -31
- package/src/DateTimeInput/DateTimeInput.doc.mjs +2 -3
- package/src/DateTimeInput/DateTimeInput.test.tsx +16 -118
- package/src/DateTimeInput/DateTimeInput.tsx +2 -8
- package/src/DateTimeInput/index.ts +0 -1
- package/src/Dialog/Dialog.doc.mjs +0 -4
- package/src/Dialog/DialogHeader.doc.mjs +0 -45
- package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenu.test.tsx +2 -22
- package/src/DropdownMenu/DropdownMenuItem.tsx +17 -5
- package/src/EmptyState/EmptyState.doc.mjs +1 -1
- package/src/Field/Field.test.tsx +4 -1
- package/src/Field/FieldLabel.test.tsx +2 -2
- package/src/FormLayout/__snapshots__/FormLayout.test.tsx.snap +3 -0
- package/src/Grid/Grid.test.tsx +18 -43
- package/src/Grid/Grid.tsx +9 -26
- package/src/HoverCard/HoverCard.doc.mjs +6 -6
- package/src/HoverCard/useHoverCard.doc.mjs +5 -5
- package/src/HoverCard/useHoverCard.tsx +2 -9
- package/src/Icon/Icon.test.tsx +29 -41
- package/src/Icon/Icon.tsx +2 -6
- package/src/InputGroup/InputGroup.doc.mjs +0 -1
- package/src/InputGroup/InputGroup.tsx +2 -2
- package/src/Item/Item.tsx +1 -1
- package/src/Layer/useLayer.doc.mjs +2 -2
- package/src/Layer/useLayer.test.tsx +2 -221
- package/src/Layer/useLayer.tsx +30 -69
- package/src/Layout/LayoutContent.doc.mjs +0 -12
- package/src/Layout/LayoutPanel.doc.mjs +0 -40
- package/src/Lightbox/Lightbox.doc.mjs +0 -5
- package/src/Lightbox/Lightbox.test.tsx +2 -123
- package/src/Lightbox/Lightbox.tsx +1 -29
- package/src/Markdown/Markdown.tsx +7 -9
- package/src/Markdown/parser.perf.test.ts +12 -34
- package/src/MobileNav/MobileNav.test.tsx +0 -56
- package/src/MobileNav/MobileNav.tsx +8 -13
- package/src/NavMenu/NavMenu.doc.mjs +0 -15
- package/src/NumberInput/NumberInput.test.tsx +3 -48
- package/src/NumberInput/NumberInput.tsx +15 -32
- package/src/Outline/Outline.doc.mjs +0 -2
- package/src/Overlay/Overlay.doc.mjs +0 -6
- package/src/Pagination/Pagination.test.tsx +0 -162
- package/src/Pagination/Pagination.tsx +26 -80
- package/src/Popover/Popover.doc.mjs +6 -6
- package/src/Popover/Popover.test.tsx +0 -65
- package/src/Popover/usePopover.doc.mjs +1 -1
- package/src/PowerSearch/PowerSearch.doc.mjs +2 -2
- package/src/PowerSearch/PowerSearch.test.tsx +1 -109
- package/src/PowerSearch/PowerSearch.tsx +16 -37
- package/src/ProgressBar/ProgressBar.doc.mjs +0 -2
- package/src/ProgressBar/ProgressBar.test.tsx +0 -30
- package/src/ProgressBar/ProgressBar.tsx +5 -12
- package/src/RadioList/RadioList.test.tsx +0 -19
- package/src/RadioList/RadioListItem.tsx +4 -9
- package/src/Resizable/ResizeHandle.tsx +4 -22
- package/src/SegmentedControl/SegmentedControl.doc.mjs +1 -1
- package/src/SegmentedControl/SegmentedControl.test.tsx +0 -192
- package/src/SegmentedControl/SegmentedControl.tsx +5 -27
- package/src/SegmentedControl/SegmentedControlItem.tsx +4 -9
- package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
- package/src/Selector/Selector.test.tsx +1 -27
- package/src/SideNav/SideNav.doc.mjs +1 -7
- package/src/SideNav/SideNav.test.tsx +0 -66
- package/src/SideNav/SideNav.tsx +2 -6
- package/src/SideNav/SideNavCollapseButton.tsx +3 -4
- package/src/SideNav/SideNavSection.tsx +4 -6
- package/src/Switch/Switch.doc.mjs +7 -7
- package/src/Switch/Switch.test.tsx +3 -102
- package/src/Switch/Switch.tsx +7 -20
- package/src/TabList/TabList.test.tsx +1 -185
- package/src/TabList/TabMenu.tsx +9 -45
- package/src/Table/BaseTable.tsx +2 -13
- package/src/Table/Table.doc.mjs +0 -5
- package/src/Table/Table.test.tsx +0 -87
- package/src/Table/TableBody.tsx +2 -15
- package/src/Table/TableFooter.tsx +2 -15
- package/src/Table/TableHeader.tsx +2 -15
- package/src/Table/plugins/columnResize/useTableColumnResize.test.tsx +0 -13
- package/src/Table/plugins/columnResize/useTableColumnResize.tsx +1 -3
- package/src/Table/plugins/pagination/paginateData.ts +1 -5
- package/src/Table/plugins/pagination/useTablePagination.test.tsx +0 -13
- package/src/Table/plugins/selection/useTableSelectionState.test.tsx +0 -23
- package/src/Table/plugins/selection/useTableSelectionState.tsx +6 -11
- package/src/Table/plugins/sortable/useTableSortableState.test.tsx +1 -35
- package/src/Table/plugins/sortable/useTableSortableState.tsx +4 -8
- package/src/TextArea/TextArea.test.tsx +3 -3
- package/src/TextInput/TextInput.test.tsx +3 -3
- package/src/Thumbnail/Thumbnail.test.tsx +2 -36
- package/src/Thumbnail/Thumbnail.tsx +2 -4
- package/src/TimeInput/TimeInput.test.tsx +0 -37
- package/src/TimeInput/TimeInput.tsx +1 -11
- package/src/Timestamp/Timestamp.doc.mjs +1 -1
- package/src/Timestamp/Timestamp.test.tsx +0 -52
- package/src/Timestamp/Timestamp.tsx +16 -30
- package/src/Toast/Toast.tsx +3 -11
- package/src/Toast/ToastViewport.test.tsx +0 -64
- package/src/Toast/ToastViewport.tsx +0 -12
- package/src/Toast/useToast.tsx +0 -41
- package/src/ToggleButton/ToggleButton.doc.mjs +0 -1
- package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
- package/src/Tokenizer/Tokenizer.test.tsx +0 -54
- package/src/Tokenizer/Tokenizer.tsx +4 -5
- package/src/Tooltip/Tooltip.doc.mjs +6 -6
- package/src/Tooltip/useTooltip.doc.mjs +5 -5
- package/src/Tooltip/useTooltip.tsx +2 -12
- package/src/TopNav/TopNav.doc.mjs +1 -1
- package/src/TopNav/TopNav.test.tsx +7 -23
- package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +2 -9
- package/src/TreeList/TreeList.doc.mjs +2 -2
- package/src/Typeahead/BaseTypeahead.doc.mjs +0 -19
- package/src/Typeahead/BaseTypeahead.tsx +2 -5
- package/src/Typeahead/Typeahead.doc.mjs +1 -1
- package/src/Typeahead/Typeahead.test.tsx +1 -45
- package/src/docs-types.ts +1 -9
- package/src/hooks/focusableSelector.ts +1 -1
- package/src/hooks/index.ts +0 -3
- package/src/hooks/useFocusTrap.doc.mjs +2 -4
- package/src/hooks/useFocusTrap.test.tsx +1 -149
- package/src/hooks/useFocusTrap.ts +1 -50
- package/src/hooks/useInteractiveRole.ts +4 -12
- package/src/hooks/useStreamingText.test.ts +19 -54
- package/src/hooks/useStreamingText.ts +5 -16
- package/src/hooks/useTreeFocus.test.tsx +3 -1
- package/src/reset.css +0 -29
- package/src/theme/SyntaxTheme.doc.mjs +4 -4
- package/src/theme/defineTheme.ts +13 -4
- package/src/theme/derivedVarRegistry.test.ts +2 -2
- package/src/theme/expandColorScale.test.ts +0 -29
- package/src/theme/expandColorScale.ts +6 -11
- package/src/theme/hct.ts +17 -9
- package/src/theme/tokens.test.ts +9 -182
- package/src/theme/tokens.ts +4 -239
- package/src/theme/useTheme.test.tsx +2 -126
- package/src/theme/useTheme.ts +6 -87
- package/src/utils/index.ts +0 -4
- package/src/utils/sharedResizeObserver.test.ts +2 -2
- package/src/utils/timeParser.test.ts +0 -13
- package/src/utils/timeParser.ts +5 -8
- package/dist/hooks/useHotkeys.d.ts +0 -51
- package/dist/hooks/useHotkeys.d.ts.map +0 -1
- package/dist/hooks/useHotkeys.js +0 -160
- package/dist/utils/color.d.ts +0 -42
- package/dist/utils/color.d.ts.map +0 -1
- package/dist/utils/color.js +0 -150
- package/dist/utils/composeEventHandlers.d.ts +0 -30
- package/dist/utils/composeEventHandlers.d.ts.map +0 -1
- package/dist/utils/composeEventHandlers.js +0 -40
- package/src/Chat/ChatDictationButton.test.tsx +0 -43
- package/src/Chat/ChatLayoutScrollButton.test.tsx +0 -33
- package/src/Chat/ChatMessageMetadata.test.tsx +0 -32
- package/src/Collapsible/Collapsible.test.tsx +0 -405
- package/src/FieldStatus/FieldStatus.test.tsx +0 -282
- package/src/InteractiveRoleContext/InteractiveRoleContext.test.tsx +0 -185
- package/src/Layout/Layout.test.tsx +0 -285
- package/src/Layout/LayoutSlots.test.tsx +0 -364
- package/src/Outline/parseOutlineFromMarkdown.test.ts +0 -80
- package/src/OverflowList/OverflowList.test.tsx +0 -416
- package/src/Overlay/Overlay.test.tsx +0 -356
- package/src/Resizable/ResizeHandle.test.tsx +0 -218
- package/src/SizeContext/SizeContext.test.tsx +0 -226
- package/src/Toast/useToast.test.tsx +0 -258
- package/src/__tests__/TestIcon.tsx +0 -26
- package/src/__tests__/fastRoleQueries.ts +0 -66
- package/src/docPropReferences.test.ts +0 -178
- package/src/hooks/useHotkeys.doc.mjs +0 -52
- package/src/hooks/useHotkeys.test.ts +0 -245
- package/src/hooks/useHotkeys.ts +0 -203
- package/src/theme/themingTargets.test.ts +0 -353
- package/src/utils/color.test.ts +0 -133
- package/src/utils/color.ts +0 -148
- package/src/utils/composeEventHandlers.test.ts +0 -71
- package/src/utils/composeEventHandlers.ts +0 -44
- 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
|
|
4
|
-
import {
|
|
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
|
});
|
package/src/theme/useTheme.ts
CHANGED
|
@@ -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
|
|
13
|
-
*
|
|
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
|
|
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
|
|
174
|
-
*
|
|
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 ??
|
|
120
|
+
const mode = ctx?.mode ?? 'system';
|
|
202
121
|
const theme = ctx?.theme ?? null;
|
|
203
122
|
|
|
204
123
|
const effectiveMode: 'light' | 'dark' =
|
package/src/utils/index.ts
CHANGED
|
@@ -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(
|
|
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
|
-
})
|
|
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');
|
package/src/utils/timeParser.ts
CHANGED
|
@@ -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
|
|
373
|
-
|
|
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"}
|
package/dist/hooks/useHotkeys.js
DELETED
|
@@ -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
|
-
}
|
package/dist/utils/color.d.ts
DELETED
|
@@ -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"}
|