@astryxdesign/core 0.2.0-canary.8d64648 → 0.2.0-canary.8dfd7cf
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AlertDialog/AlertDialog.d.ts +1 -1
- package/dist/AlertDialog/AlertDialog.js +1 -1
- package/dist/AppShell/AppShell.d.ts +2 -20
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +1 -14
- package/dist/AppShell/index.d.ts +20 -1
- package/dist/AppShell/index.d.ts.map +1 -1
- package/dist/AppShell/index.js +14 -0
- package/dist/AspectRatio/AspectRatio.d.ts +1 -1
- package/dist/AspectRatio/AspectRatio.js +1 -1
- package/dist/Avatar/Avatar.d.ts +1 -1
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +4 -4
- package/dist/Avatar/AvatarStatusDot.d.ts +2 -26
- package/dist/Avatar/AvatarStatusDot.d.ts.map +1 -1
- package/dist/Avatar/AvatarStatusDot.js +1 -22
- package/dist/Avatar/index.d.ts +26 -1
- package/dist/Avatar/index.d.ts.map +1 -1
- package/dist/Avatar/index.js +21 -0
- package/dist/AvatarGroup/AvatarGroup.d.ts +1 -1
- package/dist/AvatarGroup/AvatarGroup.js +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +1 -1
- package/dist/Badge/Badge.d.ts +2 -30
- package/dist/Badge/Badge.d.ts.map +1 -1
- package/dist/Badge/Badge.js +2 -17
- package/dist/Badge/index.d.ts +31 -2
- package/dist/Badge/index.d.ts.map +1 -1
- package/dist/Badge/index.js +15 -1
- package/dist/Banner/Banner.d.ts +2 -37
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +6 -34
- package/dist/Banner/index.d.ts +37 -1
- package/dist/Banner/index.d.ts.map +1 -1
- package/dist/Banner/index.js +27 -0
- package/dist/Blockquote/Blockquote.d.ts +1 -1
- package/dist/Blockquote/Blockquote.js +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +4 -3
- package/dist/Breadcrumbs/Breadcrumbs.d.ts +2 -18
- package/dist/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
- package/dist/Breadcrumbs/Breadcrumbs.js +1 -15
- package/dist/Breadcrumbs/index.d.ts +18 -1
- package/dist/Breadcrumbs/index.d.ts.map +1 -1
- package/dist/Breadcrumbs/index.js +14 -0
- package/dist/Button/Button.d.ts +2 -20
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +2 -17
- package/dist/Button/index.d.ts +21 -3
- package/dist/Button/index.d.ts.map +1 -1
- package/dist/Button/index.js +15 -1
- package/dist/ButtonGroup/ButtonGroup.d.ts +1 -1
- package/dist/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/Calendar/Calendar.js +1 -1
- package/dist/Calendar/styles.d.ts +2 -2
- package/dist/Calendar/styles.js +2 -2
- package/dist/Card/Card.d.ts +1 -1
- package/dist/Card/Card.js +1 -1
- package/dist/Carousel/Carousel.d.ts +1 -1
- package/dist/Carousel/Carousel.js +1 -1
- package/dist/Center/Center.d.ts +21 -4
- package/dist/Center/Center.d.ts.map +1 -1
- package/dist/Center/Center.js +11 -3
- package/dist/Chat/ChatComposer.d.ts +1 -1
- package/dist/Chat/ChatComposer.js +9 -9
- package/dist/Chat/ChatComposerDrawer.d.ts +1 -1
- package/dist/Chat/ChatComposerDrawer.js +3 -3
- package/dist/Chat/ChatComposerInput.d.ts +1 -1
- package/dist/Chat/ChatComposerInput.js +1 -1
- package/dist/Chat/ChatDictationButton.d.ts +1 -1
- package/dist/Chat/ChatDictationButton.js +1 -1
- package/dist/Chat/ChatLayout.d.ts +1 -1
- package/dist/Chat/ChatLayout.js +1 -1
- package/dist/Chat/ChatLayoutScrollButton.d.ts +1 -1
- package/dist/Chat/ChatLayoutScrollButton.js +1 -1
- package/dist/Chat/ChatMessage.d.ts +1 -1
- package/dist/Chat/ChatMessage.js +1 -1
- package/dist/Chat/ChatMessageBubble.d.ts +1 -1
- package/dist/Chat/ChatMessageBubble.js +1 -1
- package/dist/Chat/ChatMessageList.d.ts +1 -1
- package/dist/Chat/ChatMessageList.js +1 -1
- package/dist/Chat/ChatSendButton.d.ts.map +1 -1
- package/dist/Chat/ChatSendButton.js +4 -2
- package/dist/Chat/ChatSystemMessage.d.ts +1 -1
- package/dist/Chat/ChatSystemMessage.js +1 -1
- package/dist/Chat/ChatTokenizedText.d.ts +1 -1
- package/dist/Chat/ChatTokenizedText.js +1 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +1 -1
- package/dist/CheckboxList/CheckboxList.d.ts +1 -1
- package/dist/CheckboxList/CheckboxList.js +1 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +1 -1
- package/dist/Citation/Citation.d.ts +1 -1
- package/dist/Citation/Citation.js +1 -1
- package/dist/ClickableCard/ClickableCard.d.ts +3 -3
- package/dist/ClickableCard/ClickableCard.js +3 -3
- package/dist/Code/Code.d.ts +2 -2
- package/dist/Code/Code.js +2 -2
- package/dist/Collapsible/Collapsible.d.ts +1 -1
- package/dist/Collapsible/Collapsible.js +3 -3
- package/dist/Collapsible/CollapsibleGroup.d.ts +1 -1
- package/dist/Collapsible/CollapsibleGroup.js +1 -1
- package/dist/Collapsible/CollapsibleGroupContext.js +1 -1
- package/dist/CommandPalette/CommandPalette.d.ts +1 -1
- package/dist/CommandPalette/CommandPalette.js +1 -1
- package/dist/CommandPalette/CommandPaletteEmpty.js +1 -1
- package/dist/CommandPalette/CommandPaletteFooter.js +1 -1
- package/dist/CommandPalette/CommandPaletteGroup.js +1 -1
- package/dist/CommandPalette/CommandPaletteInput.d.ts +2 -2
- package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteInput.js +4 -2
- package/dist/CommandPalette/CommandPaletteItem.d.ts +1 -1
- package/dist/CommandPalette/CommandPaletteItem.js +1 -1
- package/dist/CommandPalette/CommandPaletteList.js +1 -1
- package/dist/ContextMenu/ContextMenu.d.ts +2 -2
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +14 -5
- package/dist/DateInput/DateInput.js +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +1 -1
- package/dist/Dialog/Dialog.d.ts +46 -23
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +59 -31
- package/dist/Dialog/DialogHeader.d.ts +1 -1
- package/dist/Dialog/DialogHeader.js +1 -1
- package/dist/Dialog/index.d.ts +18 -1
- package/dist/Dialog/index.d.ts.map +1 -1
- package/dist/Dialog/index.js +14 -0
- package/dist/Divider/Divider.d.ts +2 -18
- package/dist/Divider/Divider.d.ts.map +1 -1
- package/dist/Divider/Divider.js +1 -15
- package/dist/Divider/index.d.ts +18 -1
- package/dist/Divider/index.d.ts.map +1 -1
- package/dist/Divider/index.js +14 -0
- package/dist/DropdownMenu/DropdownMenu.d.ts +9 -3
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +23 -19
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +18 -12
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +38 -63
- package/dist/DropdownMenu/DropdownMenuItem.d.ts +1 -1
- package/dist/DropdownMenu/DropdownMenuItem.js +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.js +5 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +1 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.js +5 -5
- package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
- package/dist/DropdownMenu/renderDropdownItems.js +6 -4
- package/dist/EmptyState/EmptyState.d.ts +1 -1
- package/dist/EmptyState/EmptyState.js +1 -1
- package/dist/Field/Field.d.ts +1 -1
- package/dist/Field/Field.js +1 -1
- package/dist/Field/FieldLabel.d.ts +2 -2
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +41 -2
- package/dist/FieldStatus/FieldStatus.d.ts +1 -18
- package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
- package/dist/FieldStatus/FieldStatus.js +1 -15
- package/dist/FieldStatus/index.d.ts +19 -1
- package/dist/FieldStatus/index.d.ts.map +1 -1
- package/dist/FieldStatus/index.js +14 -0
- package/dist/FileInput/FileInput.js +1 -1
- package/dist/FormLayout/FormLayout.d.ts +1 -1
- package/dist/FormLayout/FormLayout.d.ts.map +1 -1
- package/dist/FormLayout/FormLayout.js +1 -1
- package/dist/Grid/Grid.d.ts +1 -1
- package/dist/Grid/Grid.js +1 -1
- package/dist/Grid/GridSpan.d.ts +1 -1
- package/dist/Grid/GridSpan.js +1 -1
- package/dist/HStack/HStack.d.ts +1 -1
- package/dist/HStack/HStack.js +1 -1
- package/dist/Heading/Heading.d.ts +2 -2
- package/dist/Heading/Heading.js +2 -2
- package/dist/HoverCard/HoverCard.d.ts +1 -1
- package/dist/HoverCard/HoverCard.js +1 -1
- package/dist/Icon/Icon.d.ts +1 -1
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +4 -2
- package/dist/Icon/globalIconRegistry.d.ts +6 -4
- package/dist/Icon/globalIconRegistry.d.ts.map +1 -1
- package/dist/Icon/globalIconRegistry.js +25 -6
- package/dist/Icon/index.d.ts +3 -2
- package/dist/Icon/index.d.ts.map +1 -1
- package/dist/Icon/index.js +1 -0
- package/dist/Icon/useIcon.d.ts +14 -0
- package/dist/Icon/useIcon.d.ts.map +1 -0
- package/dist/Icon/useIcon.js +21 -0
- package/dist/IconButton/IconButton.d.ts +1 -1
- package/dist/IconButton/IconButton.js +1 -1
- package/dist/InputGroup/InputGroup.d.ts +1 -1
- package/dist/InputGroup/InputGroup.js +1 -1
- package/dist/InputGroup/InputGroupText.d.ts +1 -1
- package/dist/InputGroup/InputGroupText.js +1 -1
- package/dist/Item/Item.d.ts +1 -1
- package/dist/Item/Item.js +1 -1
- package/dist/Kbd/Kbd.d.ts +1 -1
- package/dist/Kbd/Kbd.js +1 -1
- package/dist/Layout/Layout.d.ts +1 -1
- package/dist/Layout/Layout.js +1 -1
- package/dist/Layout/LayoutContent.d.ts +1 -1
- package/dist/Layout/LayoutContent.js +1 -1
- package/dist/Layout/LayoutFooter.d.ts +1 -1
- package/dist/Layout/LayoutFooter.js +1 -1
- package/dist/Layout/LayoutHeader.d.ts +1 -1
- package/dist/Layout/LayoutHeader.js +1 -1
- package/dist/Layout/LayoutPanel.d.ts +1 -1
- package/dist/Layout/LayoutPanel.js +1 -1
- package/dist/Lightbox/Lightbox.d.ts +1 -1
- package/dist/Lightbox/Lightbox.js +1 -1
- package/dist/Link/Link.d.ts +1 -1
- package/dist/Link/Link.js +1 -1
- package/dist/Link/LinkProvider.d.ts +2 -2
- package/dist/Link/LinkProvider.js +2 -2
- package/dist/List/List.d.ts +1 -1
- package/dist/List/List.js +1 -1
- package/dist/List/ListItem.d.ts +1 -1
- package/dist/List/ListItem.js +1 -1
- package/dist/Markdown/Markdown.js +4 -4
- package/dist/MetadataList/MetadataList.d.ts +1 -1
- package/dist/MetadataList/MetadataList.js +1 -1
- package/dist/MetadataList/MetadataListItem.d.ts +1 -1
- package/dist/MetadataList/MetadataListItem.js +1 -1
- package/dist/MobileNav/MobileNav.d.ts +1 -1
- package/dist/MobileNav/MobileNav.js +1 -1
- package/dist/MoreMenu/MoreMenu.d.ts +1 -1
- package/dist/MoreMenu/MoreMenu.js +3 -3
- package/dist/MultiSelector/MultiSelector.d.ts +1 -1
- package/dist/MultiSelector/MultiSelector.js +1 -1
- package/dist/NavIcon/NavIcon.d.ts +1 -1
- package/dist/NavIcon/NavIcon.js +1 -1
- package/dist/NumberInput/NumberInput.d.ts +1 -1
- package/dist/NumberInput/NumberInput.js +1 -1
- package/dist/Outline/Outline.js +1 -1
- package/dist/OverflowList/OverflowList.d.ts +1 -1
- package/dist/OverflowList/OverflowList.js +1 -1
- package/dist/Pagination/Pagination.d.ts +1 -20
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +1 -15
- package/dist/Pagination/index.d.ts +21 -1
- package/dist/Pagination/index.d.ts.map +1 -1
- package/dist/Pagination/index.js +14 -0
- package/dist/Popover/Popover.d.ts +20 -3
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +5 -1
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +14 -3
- package/dist/PowerSearch/PowerSearch.d.ts +1 -1
- package/dist/PowerSearch/PowerSearch.js +1 -1
- package/dist/ProgressBar/ProgressBar.d.ts +1 -20
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +1 -15
- package/dist/ProgressBar/index.d.ts +21 -1
- package/dist/ProgressBar/index.d.ts.map +1 -1
- package/dist/ProgressBar/index.js +14 -0
- package/dist/RadioList/RadioList.d.ts +1 -1
- package/dist/RadioList/RadioList.js +1 -1
- package/dist/RadioList/RadioListItem.d.ts +1 -1
- package/dist/RadioList/RadioListItem.js +1 -1
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +3 -10
- package/dist/Section/Section.d.ts +2 -19
- package/dist/Section/Section.d.ts.map +1 -1
- package/dist/Section/Section.js +1 -15
- package/dist/Section/index.d.ts +19 -1
- package/dist/Section/index.d.ts.map +1 -1
- package/dist/Section/index.js +14 -0
- package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControl.js +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +1 -1
- package/dist/SelectableCard/SelectableCard.d.ts +4 -3
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +15 -3
- package/dist/Selector/Selector.d.ts +1 -1
- package/dist/Selector/Selector.js +1 -1
- package/dist/SideNav/SideNav.d.ts +1 -1
- package/dist/SideNav/SideNav.js +1 -1
- package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseButton.js +4 -3
- package/dist/SideNav/SideNavHeading.d.ts +1 -1
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +8 -7
- package/dist/SideNav/SideNavItem.d.ts +2 -2
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +6 -7
- package/dist/SideNav/SideNavSection.d.ts +1 -1
- package/dist/SideNav/SideNavSection.js +1 -1
- package/dist/Skeleton/Skeleton.d.ts +1 -1
- package/dist/Skeleton/Skeleton.js +1 -1
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +78 -68
- package/dist/Spinner/Spinner.d.ts +1 -1
- package/dist/Spinner/Spinner.js +1 -1
- package/dist/Stack/Stack.d.ts +1 -1
- package/dist/Stack/Stack.js +1 -1
- package/dist/Stack/StackItem.d.ts +1 -1
- package/dist/Stack/StackItem.js +1 -1
- package/dist/StatusDot/StatusDot.d.ts +1 -20
- package/dist/StatusDot/StatusDot.d.ts.map +1 -1
- package/dist/StatusDot/StatusDot.js +2 -17
- package/dist/StatusDot/index.d.ts +21 -1
- package/dist/StatusDot/index.d.ts.map +1 -1
- package/dist/StatusDot/index.js +14 -0
- package/dist/Switch/Switch.d.ts +1 -1
- package/dist/Switch/Switch.js +1 -1
- package/dist/TabList/Tab.d.ts +1 -1
- package/dist/TabList/Tab.js +1 -1
- package/dist/TabList/TabList.d.ts +1 -1
- package/dist/TabList/TabList.js +1 -1
- package/dist/TabList/TabMenu.d.ts +1 -1
- package/dist/TabList/TabMenu.js +1 -1
- package/dist/Table/BaseTable.d.ts +1 -1
- package/dist/Table/BaseTable.js +1 -1
- package/dist/Table/Table.d.ts +1 -1
- package/dist/Table/Table.js +1 -1
- package/dist/Table/TableCell.d.ts +1 -1
- package/dist/Table/TableCell.js +1 -1
- package/dist/Table/TableHeaderCell.d.ts +1 -1
- package/dist/Table/TableHeaderCell.js +1 -1
- package/dist/Table/TableRow.d.ts +1 -1
- package/dist/Table/TableRow.js +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +18 -3
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +21 -3
- package/dist/Text/Text.d.ts +1 -1
- package/dist/Text/Text.js +1 -1
- package/dist/Text/index.d.ts +31 -1
- package/dist/Text/index.d.ts.map +1 -1
- package/dist/Text/index.js +23 -0
- package/dist/TextArea/TextArea.d.ts +1 -1
- package/dist/TextArea/TextArea.js +1 -1
- package/dist/TextInput/TextInput.d.ts +1 -1
- package/dist/TextInput/TextInput.js +1 -1
- package/dist/Thumbnail/Thumbnail.js +1 -1
- package/dist/TimeInput/TimeInput.js +1 -1
- package/dist/Timestamp/Timestamp.js +1 -1
- package/dist/ToggleButton/ToggleButton.d.ts +1 -1
- package/dist/ToggleButton/ToggleButton.js +1 -1
- package/dist/ToggleButton/ToggleButtonGroup.d.ts +1 -1
- package/dist/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
- package/dist/ToggleButton/ToggleButtonGroup.js +1 -1
- package/dist/Token/Token.d.ts +2 -27
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +1 -15
- package/dist/Token/index.d.ts +27 -1
- package/dist/Token/index.d.ts.map +1 -1
- package/dist/Token/index.js +14 -0
- package/dist/Tokenizer/Tokenizer.d.ts +1 -1
- package/dist/Tokenizer/Tokenizer.js +1 -1
- package/dist/Toolbar/Toolbar.d.ts +1 -1
- package/dist/Toolbar/Toolbar.js +1 -1
- package/dist/Tooltip/Tooltip.d.ts +1 -1
- package/dist/Tooltip/Tooltip.js +1 -1
- package/dist/TopNav/TopNav.d.ts +1 -1
- package/dist/TopNav/TopNav.js +1 -1
- package/dist/TopNav/TopNavHeading.d.ts +1 -1
- package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/TopNav/TopNavHeading.js +7 -6
- package/dist/TopNav/TopNavItem.d.ts +1 -1
- package/dist/TopNav/TopNavItem.js +1 -1
- package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +6 -4
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +1 -1
- package/dist/TopNav/TopNavMegaMenuItem.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenuItem.js +1 -1
- package/dist/TopNav/TopNavMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +5 -4
- package/dist/TreeList/TreeList.d.ts +1 -1
- package/dist/TreeList/TreeList.js +1 -1
- package/dist/TreeList/TreeListBranches.js +1 -1
- package/dist/TreeList/TreeListItem.d.ts +1 -1
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +4 -3
- package/dist/TreeList/TreeListTypes.d.ts +1 -17
- package/dist/TreeList/TreeListTypes.d.ts.map +1 -1
- package/dist/TreeList/index.d.ts +18 -1
- package/dist/TreeList/index.d.ts.map +1 -1
- package/dist/TreeList/index.js +14 -0
- package/dist/Typeahead/BaseTypeahead.d.ts +1 -1
- package/dist/Typeahead/BaseTypeahead.js +1 -1
- package/dist/Typeahead/Typeahead.d.ts +1 -1
- package/dist/Typeahead/Typeahead.js +1 -1
- package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
- package/dist/Typeahead/TypeaheadItem.js +1 -1
- package/dist/VStack/VStack.d.ts +1 -1
- package/dist/VStack/VStack.js +1 -1
- package/dist/VisuallyHidden/VisuallyHidden.d.ts +1 -1
- package/dist/VisuallyHidden/VisuallyHidden.js +1 -1
- package/dist/astryx.css +35 -16
- package/dist/astryx.umd.js +49 -49
- package/dist/astryx.umd.js.map +4 -4
- package/dist/hooks/containerReveal.pool.stylex.d.ts +49 -27
- package/dist/hooks/containerReveal.pool.stylex.d.ts.map +1 -1
- package/dist/hooks/containerReveal.pool.stylex.js +40 -29
- package/dist/hooks/useContainerReveal.d.ts +1 -1
- package/dist/hooks/useContainerReveal.d.ts.map +1 -1
- package/dist/hooks/useContainerReveal.js +1 -1
- package/dist/hooks/useInputContainer.d.ts.map +1 -1
- package/dist/hooks/useInputContainer.js +29 -1
- package/dist/hooks/useKeyboardHint.d.ts +1 -1
- package/dist/hooks/useKeyboardHint.js +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/theme/Theme.d.ts.map +1 -1
- package/dist/theme/Theme.js +2 -7
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/defineTheme.js +4 -1
- package/dist/theme/index.d.ts +4 -2
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +2 -1
- package/dist/theme/themeRegistry.d.ts +32 -0
- package/dist/theme/themeRegistry.d.ts.map +1 -0
- package/dist/theme/themeRegistry.js +49 -0
- package/dist/theme/types.d.ts +1 -30
- package/dist/theme/types.d.ts.map +1 -1
- package/dist/theme/useTheme.d.ts +9 -0
- package/dist/theme/useTheme.d.ts.map +1 -1
- package/dist/theme/useTheme.js +82 -27
- package/dist/utils/rtlStyles.d.ts +21 -0
- package/dist/utils/rtlStyles.d.ts.map +1 -1
- package/dist/utils/rtlStyles.js +26 -1
- package/groups.doc.mjs +2 -2
- package/package.json +2 -11
- package/src/AlertDialog/AlertDialog.doc.mjs +3 -3
- package/src/AlertDialog/AlertDialog.tsx +1 -1
- package/src/AlertDialog/useImperativeAlertDialog.doc.mjs +1 -1
- package/src/AppShell/AppShell.doc.mjs +3 -3
- package/src/AppShell/AppShell.tsx +2 -20
- package/src/AppShell/index.ts +20 -1
- package/src/AppShell/useAppShellMobile.doc.mjs +2 -2
- package/src/AspectRatio/AspectRatio.doc.mjs +3 -3
- package/src/AspectRatio/AspectRatio.tsx +1 -1
- package/src/Avatar/Avatar.doc.mjs +3 -3
- package/src/Avatar/Avatar.tsx +8 -3
- package/src/Avatar/AvatarStatusDot.doc.mjs +1 -1
- package/src/Avatar/AvatarStatusDot.tsx +2 -27
- package/src/Avatar/index.ts +26 -1
- package/src/AvatarGroup/AvatarGroup.doc.mjs +3 -3
- package/src/AvatarGroup/AvatarGroup.tsx +1 -1
- package/src/AvatarGroup/AvatarGroupOverflow.doc.mjs +1 -1
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +1 -1
- package/src/Badge/Badge.doc.mjs +3 -3
- package/src/Badge/Badge.tsx +2 -31
- package/src/Badge/index.ts +32 -6
- package/src/Banner/Banner.doc.mjs +3 -3
- package/src/Banner/Banner.tsx +8 -45
- package/src/Banner/index.ts +39 -7
- package/src/Blockquote/Blockquote.doc.mjs +3 -3
- package/src/Blockquote/Blockquote.tsx +1 -1
- package/src/Breadcrumbs/BreadcrumbItem.doc.mjs +1 -1
- package/src/Breadcrumbs/BreadcrumbItem.tsx +5 -3
- package/src/Breadcrumbs/Breadcrumbs.doc.mjs +3 -3
- package/src/Breadcrumbs/Breadcrumbs.tsx +2 -19
- package/src/Breadcrumbs/index.ts +19 -5
- package/src/Button/Button.doc.mjs +3 -3
- package/src/Button/Button.tsx +2 -21
- package/src/Button/index.ts +22 -7
- package/src/ButtonGroup/ButtonGroup.doc.mjs +3 -3
- package/src/ButtonGroup/ButtonGroup.tsx +1 -1
- package/src/Calendar/Calendar.doc.mjs +3 -3
- package/src/Calendar/Calendar.test.tsx +15 -3
- package/src/Calendar/Calendar.tsx +1 -1
- package/src/Calendar/styles.ts +2 -2
- package/src/Card/Card.doc.mjs +3 -3
- package/src/Card/Card.tsx +1 -1
- package/src/Carousel/Carousel.doc.mjs +3 -3
- package/src/Carousel/Carousel.tsx +1 -1
- package/src/Center/Center.doc.mjs +41 -3
- package/src/Center/Center.test.tsx +75 -0
- package/src/Center/Center.tsx +38 -3
- package/src/Chat/Chat.doc.mjs +3 -3
- package/src/Chat/ChatComposer.doc.mjs +1 -1
- package/src/Chat/ChatComposer.tsx +5 -5
- package/src/Chat/ChatComposerDrawer.doc.mjs +1 -1
- package/src/Chat/ChatComposerDrawer.tsx +3 -3
- package/src/Chat/ChatComposerInput.doc.mjs +1 -1
- package/src/Chat/ChatComposerInput.tsx +1 -1
- package/src/Chat/ChatComposerTokenElement.doc.mjs +1 -1
- package/src/Chat/ChatDictationButton.doc.mjs +3 -3
- package/src/Chat/ChatDictationButton.tsx +1 -1
- package/src/Chat/ChatLayout.doc.mjs +1 -1
- package/src/Chat/ChatLayout.tsx +1 -1
- package/src/Chat/ChatLayoutScrollButton.doc.mjs +1 -1
- package/src/Chat/ChatLayoutScrollButton.tsx +1 -1
- package/src/Chat/ChatMessage.doc.mjs +1 -1
- package/src/Chat/ChatMessage.tsx +1 -1
- package/src/Chat/ChatMessageBubble.doc.mjs +1 -1
- package/src/Chat/ChatMessageBubble.tsx +1 -1
- package/src/Chat/ChatMessageList.doc.mjs +1 -1
- package/src/Chat/ChatMessageList.tsx +1 -1
- package/src/Chat/ChatMessageMetadata.doc.mjs +1 -1
- package/src/Chat/ChatSendButton.doc.mjs +1 -1
- package/src/Chat/ChatSendButton.tsx +5 -3
- package/src/Chat/ChatSystemMessage.doc.mjs +1 -1
- package/src/Chat/ChatSystemMessage.tsx +1 -1
- package/src/Chat/ChatTokenizedText.doc.mjs +1 -1
- package/src/Chat/ChatTokenizedText.tsx +1 -1
- package/src/Chat/ChatToolCalls.doc.mjs +3 -3
- package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
- package/src/CheckboxInput/CheckboxInput.test.tsx +33 -0
- package/src/CheckboxInput/CheckboxInput.tsx +1 -1
- package/src/CheckboxList/CheckboxList.doc.mjs +3 -3
- package/src/CheckboxList/CheckboxList.tsx +1 -1
- package/src/CheckboxList/CheckboxListItem.doc.mjs +1 -1
- package/src/CheckboxList/CheckboxListItem.tsx +1 -1
- package/src/Citation/Citation.doc.mjs +2 -2
- package/src/Citation/Citation.tsx +1 -1
- package/src/ClickableCard/ClickableCard.doc.mjs +2 -2
- package/src/ClickableCard/ClickableCard.tsx +3 -3
- package/src/Code/Code.tsx +2 -2
- package/src/CodeBlock/Code.doc.mjs +1 -1
- package/src/CodeBlock/CodeBlock.doc.mjs +3 -3
- package/src/Collapsible/Collapsible.doc.mjs +3 -3
- package/src/Collapsible/Collapsible.tsx +3 -3
- package/src/Collapsible/CollapsibleGroup.doc.mjs +1 -1
- package/src/Collapsible/CollapsibleGroup.tsx +1 -1
- package/src/Collapsible/CollapsibleGroupContext.tsx +1 -1
- package/src/Collapsible/useCollapsible.doc.mjs +2 -2
- package/src/CommandPalette/CommandPalette.doc.mjs +4 -4
- package/src/CommandPalette/CommandPalette.tsx +1 -1
- package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteEmpty.tsx +1 -1
- package/src/CommandPalette/CommandPaletteFooter.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteFooter.tsx +1 -1
- package/src/CommandPalette/CommandPaletteGroup.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteGroup.tsx +1 -1
- package/src/CommandPalette/CommandPaletteInput.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteInput.tsx +5 -1
- package/src/CommandPalette/CommandPaletteItem.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteItem.tsx +1 -1
- package/src/CommandPalette/CommandPaletteList.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteList.tsx +1 -1
- package/src/ContextMenu/ContextMenu.doc.mjs +3 -3
- package/src/ContextMenu/ContextMenu.tsx +17 -5
- package/src/ContextMenu/ContextMenuItem.doc.mjs +1 -1
- package/src/DateInput/DateInput.doc.mjs +3 -3
- package/src/DateInput/DateInput.tsx +1 -1
- package/src/DateRangeInput/DateRangeInput.doc.mjs +2 -2
- package/src/DateRangeInput/DateRangeInput.tsx +1 -1
- package/src/DateTimeInput/DateTimeInput.doc.mjs +3 -3
- package/src/DateTimeInput/DateTimeInput.tsx +1 -1
- package/src/Dialog/Dialog.doc.mjs +9 -5
- package/src/Dialog/Dialog.test.tsx +84 -1
- package/src/Dialog/Dialog.tsx +87 -45
- package/src/Dialog/DialogHeader.doc.mjs +1 -1
- package/src/Dialog/DialogHeader.tsx +1 -1
- package/src/Dialog/index.ts +18 -1
- package/src/Dialog/useImperativeDialog.doc.mjs +1 -1
- package/src/Divider/Divider.doc.mjs +3 -3
- package/src/Divider/Divider.tsx +2 -19
- package/src/Divider/index.ts +19 -5
- package/src/DropdownMenu/DropdownMenu.doc.mjs +20 -5
- package/src/DropdownMenu/DropdownMenu.test.tsx +122 -0
- package/src/DropdownMenu/DropdownMenu.tsx +31 -20
- package/src/DropdownMenu/DropdownMenuCheckboxItem.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +41 -64
- package/src/DropdownMenu/DropdownMenuItem.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuItem.tsx +1 -1
- package/src/DropdownMenu/DropdownMenuRadioGroup.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuRadioItem.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuRadioItem.tsx +10 -1
- package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +64 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +17 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +11 -3
- package/src/DropdownMenu/renderDropdownItems.tsx +14 -2
- package/src/EmptyState/EmptyState.doc.mjs +3 -3
- package/src/EmptyState/EmptyState.tsx +1 -1
- package/src/Field/Field.doc.mjs +3 -3
- package/src/Field/Field.tsx +1 -1
- package/src/Field/FieldLabel.doc.mjs +1 -1
- package/src/Field/FieldLabel.test.tsx +78 -0
- package/src/Field/FieldLabel.tsx +50 -3
- package/src/FieldStatus/FieldStatus.doc.mjs +2 -2
- package/src/FieldStatus/FieldStatus.tsx +2 -20
- package/src/FieldStatus/index.ts +20 -5
- package/src/FileInput/FileInput.doc.mjs +3 -3
- package/src/FileInput/FileInput.tsx +1 -1
- package/src/FormLayout/FormLayout.doc.mjs +3 -3
- package/src/FormLayout/FormLayout.tsx +2 -5
- package/src/Grid/Grid.doc.mjs +3 -3
- package/src/Grid/Grid.tsx +1 -1
- package/src/Grid/GridSpan.doc.mjs +1 -1
- package/src/Grid/GridSpan.tsx +1 -1
- package/src/HStack/HStack.tsx +1 -1
- package/src/Heading/Heading.tsx +2 -2
- package/src/HoverCard/HoverCard.doc.mjs +3 -3
- package/src/HoverCard/HoverCard.tsx +1 -1
- package/src/HoverCard/useHoverCard.doc.mjs +2 -2
- package/src/Icon/Icon.doc.mjs +3 -3
- package/src/Icon/Icon.test.tsx +23 -0
- package/src/Icon/Icon.tsx +4 -2
- package/src/Icon/globalIconRegistry.test.tsx +52 -1
- package/src/Icon/globalIconRegistry.tsx +43 -6
- package/src/Icon/index.ts +7 -7
- package/src/Icon/useIcon.ts +23 -0
- package/src/IconButton/IconButton.doc.mjs +2 -2
- package/src/IconButton/IconButton.tsx +1 -1
- package/src/InputGroup/InputGroup.doc.mjs +2 -2
- package/src/InputGroup/InputGroup.tsx +1 -1
- package/src/InputGroup/InputGroupText.doc.mjs +1 -1
- package/src/InputGroup/InputGroupText.tsx +1 -1
- package/src/Item/Item.doc.mjs +3 -3
- package/src/Item/Item.tsx +1 -1
- package/src/Kbd/Kbd.doc.mjs +3 -3
- package/src/Kbd/Kbd.tsx +1 -1
- package/src/Layer/Layer.doc.mjs +2 -2
- package/src/Layer/useLayer.doc.mjs +2 -2
- package/src/Layout/Layout.doc.mjs +3 -3
- package/src/Layout/Layout.tsx +1 -1
- package/src/Layout/LayoutContent.doc.mjs +1 -1
- package/src/Layout/LayoutContent.tsx +1 -1
- package/src/Layout/LayoutFooter.doc.mjs +1 -1
- package/src/Layout/LayoutFooter.tsx +1 -1
- package/src/Layout/LayoutHeader.doc.mjs +1 -1
- package/src/Layout/LayoutHeader.tsx +1 -1
- package/src/Layout/LayoutPanel.doc.mjs +1 -1
- package/src/Layout/LayoutPanel.tsx +1 -1
- package/src/Lightbox/Lightbox.doc.mjs +3 -3
- package/src/Lightbox/Lightbox.tsx +1 -1
- package/src/Link/Link.doc.mjs +3 -3
- package/src/Link/Link.tsx +1 -1
- package/src/Link/LinkProvider.doc.mjs +2 -2
- package/src/Link/LinkProvider.tsx +2 -2
- package/src/List/List.doc.mjs +3 -3
- package/src/List/List.tsx +1 -1
- package/src/List/ListItem.doc.mjs +2 -2
- package/src/List/ListItem.tsx +1 -1
- package/src/Markdown/Markdown.doc.mjs +1 -1
- package/src/Markdown/Markdown.tsx +3 -3
- package/src/MetadataList/MetadataList.doc.mjs +3 -3
- package/src/MetadataList/MetadataList.tsx +1 -1
- package/src/MetadataList/MetadataListItem.doc.mjs +1 -1
- package/src/MetadataList/MetadataListItem.tsx +1 -1
- package/src/MobileNav/MobileNav.doc.mjs +3 -3
- package/src/MobileNav/MobileNav.tsx +1 -1
- package/src/MoreMenu/MoreMenu.doc.mjs +3 -3
- package/src/MoreMenu/MoreMenu.tsx +3 -3
- package/src/MultiSelector/MultiSelector.doc.mjs +3 -3
- package/src/MultiSelector/MultiSelector.tsx +1 -1
- package/src/NavIcon/NavIcon.doc.mjs +3 -3
- package/src/NavIcon/NavIcon.tsx +1 -1
- package/src/NavMenu/NavMenu.doc.mjs +2 -2
- package/src/NumberInput/NumberInput.doc.mjs +3 -3
- package/src/NumberInput/NumberInput.tsx +1 -1
- package/src/Outline/Outline.doc.mjs +3 -3
- package/src/Outline/Outline.tsx +1 -1
- package/src/OverflowList/OverflowList.doc.mjs +3 -3
- package/src/OverflowList/OverflowList.tsx +1 -1
- package/src/Overlay/Overlay.doc.mjs +2 -2
- package/src/Pagination/Pagination.doc.mjs +3 -3
- package/src/Pagination/Pagination.tsx +2 -22
- package/src/Pagination/index.ts +21 -1
- package/src/Popover/Popover.doc.mjs +31 -3
- package/src/Popover/Popover.test.tsx +41 -0
- package/src/Popover/Popover.tsx +25 -2
- package/src/Popover/usePopover.doc.mjs +2 -2
- package/src/Popover/usePopover.tsx +10 -4
- package/src/PowerSearch/PowerSearch.doc.mjs +3 -3
- package/src/PowerSearch/PowerSearch.tsx +1 -1
- package/src/ProgressBar/ProgressBar.doc.mjs +3 -3
- package/src/ProgressBar/ProgressBar.tsx +2 -22
- package/src/ProgressBar/index.ts +22 -5
- package/src/RadioList/RadioList.doc.mjs +3 -3
- package/src/RadioList/RadioList.tsx +1 -1
- package/src/RadioList/RadioListItem.doc.mjs +1 -1
- package/src/RadioList/RadioListItem.tsx +1 -1
- package/src/Resizable/Resizable.doc.mjs +2 -2
- package/src/Resizable/ResizeHandle.test.tsx +3 -2
- package/src/Resizable/ResizeHandle.tsx +8 -12
- package/src/Resizable/useResizable.doc.mjs +2 -2
- package/src/Section/Section.doc.mjs +3 -3
- package/src/Section/Section.tsx +2 -20
- package/src/Section/index.ts +20 -5
- package/src/SegmentedControl/SegmentedControl.doc.mjs +3 -3
- package/src/SegmentedControl/SegmentedControl.tsx +1 -1
- package/src/SegmentedControl/SegmentedControlItem.doc.mjs +1 -1
- package/src/SegmentedControl/SegmentedControlItem.tsx +1 -1
- package/src/SelectableCard/SelectableCard.doc.mjs +4 -2
- package/src/SelectableCard/SelectableCard.test.tsx +55 -0
- package/src/SelectableCard/SelectableCard.tsx +19 -3
- package/src/Selector/Selector.doc.mjs +3 -3
- package/src/Selector/Selector.tsx +1 -1
- package/src/Selector/SelectorOption.doc.mjs +1 -1
- package/src/SideNav/SideNav.doc.mjs +3 -3
- package/src/SideNav/SideNav.tsx +1 -1
- package/src/SideNav/SideNavCollapseButton.doc.mjs +1 -1
- package/src/SideNav/SideNavCollapseButton.tsx +4 -3
- package/src/SideNav/SideNavHeading.doc.mjs +1 -1
- package/src/SideNav/SideNavHeading.tsx +8 -9
- package/src/SideNav/SideNavItem.doc.mjs +1 -1
- package/src/SideNav/SideNavItem.tsx +5 -6
- package/src/SideNav/SideNavSection.doc.mjs +1 -1
- package/src/SideNav/SideNavSection.tsx +1 -1
- package/src/Skeleton/Skeleton.doc.mjs +3 -3
- package/src/Skeleton/Skeleton.tsx +1 -1
- package/src/Slider/Slider.doc.mjs +3 -3
- package/src/Slider/Slider.tsx +9 -13
- package/src/Spinner/Spinner.doc.mjs +3 -3
- package/src/Spinner/Spinner.tsx +1 -1
- package/src/Stack/Stack.doc.mjs +3 -3
- package/src/Stack/Stack.tsx +1 -1
- package/src/Stack/StackItem.tsx +1 -1
- package/src/StatusDot/StatusDot.doc.mjs +3 -3
- package/src/StatusDot/StatusDot.tsx +2 -22
- package/src/StatusDot/index.ts +22 -5
- package/src/Switch/Switch.doc.mjs +3 -3
- package/src/Switch/Switch.test.tsx +34 -0
- package/src/Switch/Switch.tsx +1 -1
- package/src/TabList/Tab.doc.mjs +1 -1
- package/src/TabList/Tab.tsx +1 -1
- package/src/TabList/TabList.doc.mjs +3 -3
- package/src/TabList/TabList.tsx +1 -1
- package/src/TabList/TabMenu.doc.mjs +1 -1
- package/src/TabList/TabMenu.tsx +1 -1
- package/src/Table/BaseTable.tsx +1 -1
- package/src/Table/Table.doc.mjs +3 -3
- package/src/Table/Table.tsx +1 -1
- package/src/Table/TableCell.doc.mjs +1 -1
- package/src/Table/TableCell.tsx +1 -1
- package/src/Table/TableHeaderCell.doc.mjs +1 -1
- package/src/Table/TableHeaderCell.tsx +1 -1
- package/src/Table/TableRow.doc.mjs +1 -1
- package/src/Table/TableRow.tsx +1 -1
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +21 -3
- package/src/Table/useTableColumnResize.doc.mjs +1 -1
- package/src/Table/useTableColumnSettings.doc.mjs +1 -1
- package/src/Table/useTableFilterState.doc.mjs +1 -1
- package/src/Table/useTableFiltering.doc.mjs +1 -1
- package/src/Table/useTableGroupedRows.doc.mjs +2 -2
- package/src/Table/useTablePagination.doc.mjs +1 -1
- package/src/Table/useTableRowExpansion.doc.mjs +57 -4
- package/src/Table/useTableRowIndex.doc.mjs +2 -2
- package/src/Table/useTableRowStatus.doc.mjs +2 -2
- package/src/Table/useTableSelection.doc.mjs +1 -1
- package/src/Table/useTableSelectionState.doc.mjs +1 -1
- package/src/Table/useTableSortable.doc.mjs +1 -1
- package/src/Table/useTableStickyColumns.doc.mjs +1 -1
- package/src/Table/useTableTreeData.doc.mjs +1 -1
- package/src/Table/useTableTreeState.doc.mjs +1 -1
- package/src/Text/Heading.doc.mjs +1 -1
- package/src/Text/Text.doc.mjs +3 -3
- package/src/Text/Text.tsx +1 -1
- package/src/Text/index.ts +31 -1
- package/src/TextArea/TextArea.doc.mjs +3 -3
- package/src/TextArea/TextArea.tsx +1 -1
- package/src/TextInput/TextInput.doc.mjs +3 -3
- package/src/TextInput/TextInput.tsx +1 -1
- package/src/Thumbnail/Thumbnail.doc.mjs +2 -2
- package/src/Thumbnail/Thumbnail.tsx +1 -1
- package/src/TimeInput/TimeInput.doc.mjs +3 -3
- package/src/TimeInput/TimeInput.tsx +1 -1
- package/src/Timestamp/Timestamp.doc.mjs +3 -3
- package/src/Timestamp/Timestamp.tsx +1 -1
- package/src/Toast/Toast.doc.mjs +3 -3
- package/src/Toast/useToast.doc.mjs +2 -2
- package/src/ToggleButton/ToggleButton.doc.mjs +3 -3
- package/src/ToggleButton/ToggleButton.tsx +1 -1
- package/src/ToggleButton/ToggleButtonGroup.doc.mjs +1 -1
- package/src/ToggleButton/ToggleButtonGroup.tsx +3 -6
- package/src/Token/Token.doc.mjs +3 -3
- package/src/Token/Token.tsx +2 -28
- package/src/Token/index.ts +28 -1
- package/src/Tokenizer/Tokenizer.doc.mjs +3 -3
- package/src/Tokenizer/Tokenizer.tsx +1 -1
- package/src/Toolbar/Toolbar.doc.mjs +3 -3
- package/src/Toolbar/Toolbar.tsx +1 -1
- package/src/Tooltip/Tooltip.doc.mjs +3 -3
- package/src/Tooltip/Tooltip.tsx +1 -1
- package/src/Tooltip/useTooltip.doc.mjs +2 -2
- package/src/TopNav/TopNav.doc.mjs +3 -3
- package/src/TopNav/TopNav.tsx +1 -1
- package/src/TopNav/TopNavHeading.doc.mjs +1 -1
- package/src/TopNav/TopNavHeading.tsx +7 -8
- package/src/TopNav/TopNavItem.doc.mjs +1 -1
- package/src/TopNav/TopNavItem.tsx +1 -1
- package/src/TopNav/TopNavMegaMenu.doc.mjs +1 -1
- package/src/TopNav/TopNavMegaMenu.tsx +6 -4
- package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +1 -1
- package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +1 -1
- package/src/TopNav/TopNavMegaMenuItem.doc.mjs +1 -1
- package/src/TopNav/TopNavMegaMenuItem.tsx +1 -1
- package/src/TopNav/TopNavMenu.doc.mjs +1 -1
- package/src/TopNav/TopNavMenu.tsx +5 -4
- package/src/TreeList/TreeList.doc.mjs +3 -3
- package/src/TreeList/TreeList.tsx +1 -1
- package/src/TreeList/TreeListBranches.tsx +1 -1
- package/src/TreeList/TreeListItem.tsx +4 -3
- package/src/TreeList/TreeListTypes.ts +1 -18
- package/src/TreeList/index.ts +19 -1
- package/src/Typeahead/BaseTypeahead.doc.mjs +1 -1
- package/src/Typeahead/BaseTypeahead.tsx +1 -1
- package/src/Typeahead/Typeahead.doc.mjs +3 -3
- package/src/Typeahead/Typeahead.tsx +1 -1
- package/src/Typeahead/TypeaheadItem.doc.mjs +1 -1
- package/src/Typeahead/TypeaheadItem.tsx +1 -1
- package/src/VStack/VStack.tsx +1 -1
- package/src/VisuallyHidden/VisuallyHidden.doc.mjs +3 -3
- package/src/VisuallyHidden/VisuallyHidden.tsx +1 -1
- package/src/__tests__/inputWidthContract.test.tsx +8 -1
- package/src/doc-mjs.d.ts +5 -2
- package/src/docPropLiterals.test.ts +1 -1
- package/src/docPropReferences.test.ts +1 -1
- package/src/hooks/containerReveal.pool.stylex.ts +154 -47
- package/src/hooks/useClickableContainer.doc.mjs +2 -2
- package/src/hooks/useContainerReveal.doc.mjs +75 -0
- package/src/hooks/useContainerReveal.ts +5 -4
- package/src/hooks/useEntryAnimation.doc.mjs +2 -2
- package/src/hooks/useFocusTrap.doc.mjs +2 -2
- package/src/hooks/useGridFocus.doc.mjs +2 -2
- package/src/hooks/useHotkeys.doc.mjs +2 -2
- package/src/hooks/useImageMode.doc.mjs +2 -2
- package/src/hooks/useInputContainer.doc.mjs +2 -2
- package/src/hooks/useInputContainer.test.tsx +180 -0
- package/src/hooks/useInputContainer.ts +36 -1
- package/src/hooks/useKeyboardHint.doc.mjs +2 -2
- package/src/hooks/useKeyboardHint.tsx +1 -1
- package/src/hooks/useListFocus.doc.mjs +2 -2
- package/src/hooks/useMediaQuery.doc.mjs +2 -2
- package/src/hooks/useOverflow.doc.mjs +2 -2
- package/src/hooks/useScrollLock.doc.mjs +2 -2
- package/src/hooks/useScrollOverflow.doc.mjs +2 -2
- package/src/hooks/useStreamingText.doc.mjs +2 -2
- package/src/hooks/useTreeFocus.doc.mjs +2 -2
- package/src/i18n/InternationalizationProvider.doc.mjs +2 -2
- package/src/i18n/useTranslator.doc.mjs +2 -2
- package/src/index.ts +14 -10
- package/src/theme/MediaTheme.doc.mjs +2 -2
- package/src/theme/SyntaxTheme.doc.mjs +2 -2
- package/src/theme/Theme.doc.mjs +2 -2
- package/src/theme/Theme.tsx +3 -7
- package/src/theme/defineTheme.ts +5 -1
- package/src/theme/index.ts +8 -2
- package/src/theme/themeRegistry.test.ts +59 -0
- package/src/theme/themeRegistry.ts +53 -0
- package/src/theme/types.ts +2 -31
- package/src/theme/useTheme.doc.mjs +2 -2
- package/src/theme/useTheme.test.tsx +48 -3
- package/src/theme/useTheme.ts +100 -29
- package/src/utils/rtlStyles.ts +22 -0
- package/dist/authoring/doc.d.ts +0 -145
- package/dist/authoring/doc.d.ts.map +0 -1
- package/dist/authoring/doc.js +0 -100
- package/dist/authoring/index.d.ts +0 -29
- package/dist/authoring/index.d.ts.map +0 -1
- package/dist/authoring/index.js +0 -28
- package/dist/authoring/integration.d.ts +0 -35
- package/dist/authoring/integration.d.ts.map +0 -1
- package/dist/authoring/integration.js +0 -30
- package/dist/authoring/template.d.ts +0 -66
- package/dist/authoring/template.d.ts.map +0 -1
- package/dist/authoring/template.js +0 -55
- package/dist/config.d.ts +0 -80
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -40
- package/dist/docs-types.d.ts +0 -969
- package/dist/docs-types.d.ts.map +0 -1
- package/dist/docs-types.js +0 -1
- package/src/authoring/doc.ts +0 -164
- package/src/authoring/index.test.ts +0 -52
- package/src/authoring/index.ts +0 -50
- package/src/authoring/integration.ts +0 -42
- package/src/authoring/template.ts +0 -74
- package/src/config.test.ts +0 -16
- package/src/config.ts +0 -92
- package/src/docs-types.ts +0 -1108
package/src/index.ts
CHANGED
|
@@ -168,25 +168,29 @@ export * from './hooks';
|
|
|
168
168
|
export * from './utils';
|
|
169
169
|
|
|
170
170
|
// Theme
|
|
171
|
+
export type {TextColorMap} from './Text';
|
|
171
172
|
export * from './theme';
|
|
172
173
|
|
|
173
174
|
// Internationalization
|
|
174
175
|
export * from './i18n';
|
|
175
176
|
|
|
176
|
-
// Doc types — for external library authors writing .doc.mjs files
|
|
177
|
+
// Doc types — for external library authors writing .doc.mjs files.
|
|
178
|
+
// @deprecated Import these from `@astryxdesign/cli/authoring` instead. These
|
|
179
|
+
// re-exports are kept for one release cycle and will be removed; `astryx upgrade`
|
|
180
|
+
// repoints them automatically.
|
|
177
181
|
export type {
|
|
178
182
|
ComponentDoc,
|
|
179
183
|
SingleComponentDoc,
|
|
180
184
|
MultiComponentDoc,
|
|
181
|
-
|
|
185
|
+
ComponentPropDoc,
|
|
182
186
|
ComponentEntry,
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
187
|
+
ComponentThemingTarget,
|
|
188
|
+
ComponentThemingVar,
|
|
189
|
+
ComponentThemingDerivedVar,
|
|
190
|
+
ComponentTranslationDoc,
|
|
191
|
+
ComponentGroupDoc,
|
|
188
192
|
ReferenceDoc,
|
|
189
193
|
ReferenceSection,
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
} from '
|
|
194
|
+
ReferenceContentBlock,
|
|
195
|
+
ReferenceTokenPreviewType,
|
|
196
|
+
} from '@astryxdesign/cli/authoring';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
|
-
/** @type {import('
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
|
|
4
4
|
|
|
5
5
|
export const docs = {
|
|
6
6
|
name: 'MediaTheme',
|
|
@@ -100,7 +100,7 @@ export const docs = {
|
|
|
100
100
|
],
|
|
101
101
|
};
|
|
102
102
|
|
|
103
|
-
/** @type {import('
|
|
103
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
|
|
104
104
|
export const docsDense = {
|
|
105
105
|
usage: {
|
|
106
106
|
description:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
|
-
/** @type {import('
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
|
|
4
4
|
|
|
5
5
|
export const docs = {
|
|
6
6
|
name: 'SyntaxTheme',
|
|
@@ -74,7 +74,7 @@ export const docs = {
|
|
|
74
74
|
],
|
|
75
75
|
};
|
|
76
76
|
|
|
77
|
-
/** @type {import('
|
|
77
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
|
|
78
78
|
export const docsDense = {
|
|
79
79
|
usage: {
|
|
80
80
|
description:
|
package/src/theme/Theme.doc.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
|
-
/** @type {import('
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
|
|
4
4
|
|
|
5
5
|
export const docs = {
|
|
6
6
|
name: 'Theme',
|
|
@@ -86,7 +86,7 @@ export const docs = {
|
|
|
86
86
|
],
|
|
87
87
|
};
|
|
88
88
|
|
|
89
|
-
/** @type {import('
|
|
89
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
|
|
90
90
|
export const docsDense = {
|
|
91
91
|
usage: {
|
|
92
92
|
description:
|
package/src/theme/Theme.tsx
CHANGED
|
@@ -41,8 +41,8 @@ import {useIsomorphicLayoutEffect} from '../hooks/useIsomorphicLayoutEffect';
|
|
|
41
41
|
import * as stylex from '@stylexjs/stylex';
|
|
42
42
|
import type {ThemeMode} from './types';
|
|
43
43
|
import {colorVars, typographyVars} from './tokens.stylex';
|
|
44
|
-
import {registerIcons} from '../Icon/globalIconRegistry';
|
|
45
44
|
import {generateThemeCSS, type DefinedTheme} from './defineTheme';
|
|
45
|
+
import {registerTheme} from './themeRegistry';
|
|
46
46
|
import {dataAttr} from '../naming';
|
|
47
47
|
import {ThemeContext} from './useTheme';
|
|
48
48
|
import {warnOnce} from '../utils/devWarning';
|
|
@@ -243,6 +243,8 @@ export function Theme({
|
|
|
243
243
|
}: ThemeProps): React.ReactElement {
|
|
244
244
|
const isNested = use(ThemeNestingContext);
|
|
245
245
|
|
|
246
|
+
registerTheme(theme);
|
|
247
|
+
|
|
246
248
|
useThemeStyleInjection(theme);
|
|
247
249
|
useRootThemeSync(isNested, mode, theme.name);
|
|
248
250
|
|
|
@@ -254,12 +256,6 @@ export function Theme({
|
|
|
254
256
|
? wrapperStyles.light
|
|
255
257
|
: wrapperStyles.system;
|
|
256
258
|
|
|
257
|
-
// Icons — register globally (works in both server and client environments)
|
|
258
|
-
const icons = theme.icons;
|
|
259
|
-
if (icons != null) {
|
|
260
|
-
registerIcons(icons);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
259
|
// Memoize the context value to prevent unnecessary re-renders
|
|
264
260
|
const ctxValue = useMemo(() => ({theme, mode}), [theme, mode]);
|
|
265
261
|
|
package/src/theme/defineTheme.ts
CHANGED
|
@@ -63,6 +63,7 @@ import {expandColorScale, type ColorScaleConfig} from './expandColorScale';
|
|
|
63
63
|
import type {DomainTokenName} from './domainTokens';
|
|
64
64
|
import {domainTokenDefaults} from './domainTokens';
|
|
65
65
|
import type {SyntaxThemeDefinition} from './syntax';
|
|
66
|
+
import {registerTheme} from './themeRegistry';
|
|
66
67
|
|
|
67
68
|
// =============================================================================
|
|
68
69
|
// Types
|
|
@@ -624,7 +625,7 @@ export function defineTheme(input: DefineThemeInput): DefinedTheme {
|
|
|
624
625
|
? {...base.icons, ...input.icons}
|
|
625
626
|
: (input.icons ?? base?.icons);
|
|
626
627
|
|
|
627
|
-
|
|
628
|
+
const theme: DefinedTheme = {
|
|
628
629
|
name: input.name,
|
|
629
630
|
tokens,
|
|
630
631
|
components,
|
|
@@ -633,6 +634,9 @@ export function defineTheme(input: DefineThemeInput): DefinedTheme {
|
|
|
633
634
|
__onDark,
|
|
634
635
|
__onLight,
|
|
635
636
|
};
|
|
637
|
+
|
|
638
|
+
registerTheme(theme);
|
|
639
|
+
return theme;
|
|
636
640
|
}
|
|
637
641
|
|
|
638
642
|
// =============================================================================
|
package/src/theme/index.ts
CHANGED
|
@@ -30,6 +30,12 @@ export {
|
|
|
30
30
|
isDefinedTheme,
|
|
31
31
|
tokenDefaults,
|
|
32
32
|
} from './defineTheme';
|
|
33
|
+
export {
|
|
34
|
+
registerTheme,
|
|
35
|
+
getRegisteredTheme,
|
|
36
|
+
getRegisteredThemes,
|
|
37
|
+
resetThemes,
|
|
38
|
+
} from './themeRegistry';
|
|
33
39
|
export type {
|
|
34
40
|
DefineThemeInput,
|
|
35
41
|
DefinedTheme,
|
|
@@ -126,7 +132,7 @@ export type {
|
|
|
126
132
|
TypeScaleVarName,
|
|
127
133
|
} from './tokens.stylex';
|
|
128
134
|
|
|
129
|
-
export {useTheme, ThemeContext} from './useTheme';
|
|
135
|
+
export {useTheme, useThemeName, ThemeContext} from './useTheme';
|
|
130
136
|
export type {UseThemeReturn, ThemeContextValue} from './useTheme';
|
|
131
137
|
export {
|
|
132
138
|
resolveThemeToken,
|
|
@@ -140,6 +146,7 @@ export type {
|
|
|
140
146
|
ResolvedThemeMode,
|
|
141
147
|
} from './tokens';
|
|
142
148
|
|
|
149
|
+
export type {TextColorMap} from '../Text';
|
|
143
150
|
export type {
|
|
144
151
|
ThemeMode,
|
|
145
152
|
HeadingTag,
|
|
@@ -150,7 +157,6 @@ export type {
|
|
|
150
157
|
TextWeight,
|
|
151
158
|
TextColor,
|
|
152
159
|
BuiltinTextColor,
|
|
153
|
-
TextColorMap,
|
|
154
160
|
TypographyConfig,
|
|
155
161
|
TypographyRole,
|
|
156
162
|
FontWeight,
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
import {describe, it, expect, beforeEach} from 'vitest';
|
|
4
|
+
import {defineTheme} from './defineTheme';
|
|
5
|
+
import {
|
|
6
|
+
getRegisteredTheme,
|
|
7
|
+
getRegisteredThemes,
|
|
8
|
+
registerTheme,
|
|
9
|
+
resetThemes,
|
|
10
|
+
} from './themeRegistry';
|
|
11
|
+
|
|
12
|
+
describe('themeRegistry', () => {
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
resetThemes();
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it('registers and resolves themes by name', () => {
|
|
18
|
+
const theme = defineTheme({
|
|
19
|
+
name: 'brand',
|
|
20
|
+
tokens: {'--color-accent': '#123456'},
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
expect(getRegisteredTheme('brand')).toBe(theme);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it('returns null for empty or unknown names', () => {
|
|
27
|
+
expect(getRegisteredTheme(null)).toBeNull();
|
|
28
|
+
expect(getRegisteredTheme('')).toBeNull();
|
|
29
|
+
expect(getRegisteredTheme('missing')).toBeNull();
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('replaces an existing theme with the same name', () => {
|
|
33
|
+
const first = defineTheme({name: 'brand'});
|
|
34
|
+
const second = defineTheme({
|
|
35
|
+
name: 'brand',
|
|
36
|
+
tokens: {'--color-accent': '#654321'},
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
expect(getRegisteredTheme('brand')).not.toBe(first);
|
|
40
|
+
expect(getRegisteredTheme('brand')).toBe(second);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it('returns a defensive snapshot of registered themes', () => {
|
|
44
|
+
const theme = defineTheme({name: 'brand'});
|
|
45
|
+
const snapshot = getRegisteredThemes();
|
|
46
|
+
|
|
47
|
+
expect(snapshot.get('brand')).toBe(theme);
|
|
48
|
+
expect(snapshot).not.toBe(getRegisteredThemes());
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it('allows explicit registration of built theme objects', () => {
|
|
52
|
+
const theme = defineTheme({name: 'built'});
|
|
53
|
+
resetThemes();
|
|
54
|
+
|
|
55
|
+
registerTheme(theme);
|
|
56
|
+
|
|
57
|
+
expect(getRegisteredTheme('built')).toBe(theme);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file themeRegistry.ts
|
|
5
|
+
* @input DefinedTheme objects from defineTheme() or built theme packages
|
|
6
|
+
* @output Exports registerTheme, getRegisteredTheme, getRegisteredThemes, resetThemes
|
|
7
|
+
* @position Server-safe theme registry for theme-name-based SSR resolution
|
|
8
|
+
*
|
|
9
|
+
* This module has NO 'use client' directive. It is importable from SSR/RSC and
|
|
10
|
+
* lets code resolve theme data by stable theme name without React context.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import type {DefinedTheme} from './defineTheme';
|
|
14
|
+
|
|
15
|
+
const themeRegistry = new Map<string, DefinedTheme>();
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Register a defined theme under its `name`.
|
|
19
|
+
*
|
|
20
|
+
* Registration is idempotent and replaces any previous theme with the same
|
|
21
|
+
* name. Call from app initialization, theme packages, or <Theme> to make the
|
|
22
|
+
* theme available to SSR-safe resolvers by name.
|
|
23
|
+
*/
|
|
24
|
+
export function registerTheme(theme: DefinedTheme): void {
|
|
25
|
+
themeRegistry.set(theme.name, theme);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Return a previously registered theme by name.
|
|
30
|
+
*/
|
|
31
|
+
export function getRegisteredTheme(
|
|
32
|
+
name: string | null | undefined,
|
|
33
|
+
): DefinedTheme | null {
|
|
34
|
+
if (name == null || name === '') {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
return themeRegistry.get(name) ?? null;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Return all registered themes keyed by theme name.
|
|
42
|
+
*/
|
|
43
|
+
export function getRegisteredThemes(): ReadonlyMap<string, DefinedTheme> {
|
|
44
|
+
return new Map(themeRegistry);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Reset the theme registry. For testing only.
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
export function resetThemes(): void {
|
|
52
|
+
themeRegistry.clear();
|
|
53
|
+
}
|
package/src/theme/types.ts
CHANGED
|
@@ -148,38 +148,9 @@ export type TextSize =
|
|
|
148
148
|
/**
|
|
149
149
|
* Font weight variants for Text/Heading
|
|
150
150
|
*/
|
|
151
|
-
|
|
151
|
+
import type {TextColorMap} from '../Text';
|
|
152
152
|
|
|
153
|
-
|
|
154
|
-
* Extensible map of text color variants for Text/Heading.
|
|
155
|
-
*
|
|
156
|
-
* Themes add custom colors via component overrides in defineTheme; a custom
|
|
157
|
-
* color renders with the `primary` baseline color from StyleX and receives its
|
|
158
|
-
* actual color from theme CSS (`.astryx-text.<color>` / `.astryx-heading.<color>`),
|
|
159
|
-
* exactly like custom text `type`s.
|
|
160
|
-
*
|
|
161
|
-
* To add type-safe custom colors, use module augmentation — the same technique
|
|
162
|
-
* as `ButtonVariantMap` etc.:
|
|
163
|
-
* ```ts
|
|
164
|
-
* declare module '@astryxdesign/core/Text' {
|
|
165
|
-
* interface TextColorMap {
|
|
166
|
-
* brand: true;
|
|
167
|
-
* danger: true;
|
|
168
|
-
* }
|
|
169
|
-
* }
|
|
170
|
-
* ```
|
|
171
|
-
*
|
|
172
|
-
* `astryx theme build` generates these augmentations automatically when it
|
|
173
|
-
* detects new `color:*` values in a theme's Text/Heading component overrides.
|
|
174
|
-
*/
|
|
175
|
-
export interface TextColorMap {
|
|
176
|
-
primary: true;
|
|
177
|
-
secondary: true;
|
|
178
|
-
disabled: true;
|
|
179
|
-
placeholder: true;
|
|
180
|
-
accent: true;
|
|
181
|
-
inherit: true;
|
|
182
|
-
}
|
|
153
|
+
export type TextWeight = 'normal' | 'medium' | 'semibold' | 'bold';
|
|
183
154
|
|
|
184
155
|
/**
|
|
185
156
|
* Built-in text color variants for Text/Heading. The concrete keys that ship
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
|
-
/** @type {import('
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').HookDoc} */
|
|
4
4
|
export const docs = {
|
|
5
5
|
name: 'useTheme',
|
|
6
6
|
displayName: 'useTheme',
|
|
@@ -87,7 +87,7 @@ export const docs = {
|
|
|
87
87
|
importPath: '@astryxdesign/core/theme',
|
|
88
88
|
};
|
|
89
89
|
|
|
90
|
-
/** @type {import('
|
|
90
|
+
/** @type {import('@astryxdesign/cli/authoring').HookTranslationDoc} */
|
|
91
91
|
export const docsDense = {
|
|
92
92
|
description:
|
|
93
93
|
'Programmatic access to theme tokens for SVG/canvas/charts needing JS values instead of CSS vars.',
|
|
@@ -5,6 +5,7 @@ import {render, renderHook, act, waitFor} from '@testing-library/react';
|
|
|
5
5
|
import React from 'react';
|
|
6
6
|
import {Theme} from './Theme';
|
|
7
7
|
import {defineTheme} from './defineTheme';
|
|
8
|
+
import {resetThemes} from './themeRegistry';
|
|
8
9
|
import {useTheme} from './useTheme';
|
|
9
10
|
import {resolveThemeTokens} from './tokens';
|
|
10
11
|
|
|
@@ -152,6 +153,8 @@ describe('useTheme', () => {
|
|
|
152
153
|
// straight to OS preference (see Theme.tsx's useRootThemeSync).
|
|
153
154
|
describe('useTheme mode resolution without a ThemeContext ancestor', () => {
|
|
154
155
|
afterEach(async () => {
|
|
156
|
+
resetThemes();
|
|
157
|
+
document.documentElement.removeAttribute('data-astryx-theme');
|
|
155
158
|
// The hook from each `it` below is still mounted and subscribed to the
|
|
156
159
|
// shared MutationObserver when this runs (RTL's own cleanup — which
|
|
157
160
|
// unmounts it — is registered after this file's afterEach), so removing
|
|
@@ -184,6 +187,46 @@ describe('useTheme mode resolution without a ThemeContext ancestor', () => {
|
|
|
184
187
|
|
|
185
188
|
await waitFor(() => expect(result.current.mode).toBe('dark'));
|
|
186
189
|
});
|
|
190
|
+
|
|
191
|
+
it('resolves registered theme tokens from <html data-astryx-theme> when set', () => {
|
|
192
|
+
defineTheme({
|
|
193
|
+
name: 'root-brand',
|
|
194
|
+
tokens: {'--color-accent': ['#010203', '#AABBCC']},
|
|
195
|
+
});
|
|
196
|
+
document.documentElement.setAttribute('data-astryx-theme', 'root-brand');
|
|
197
|
+
document.documentElement.setAttribute('data-theme', 'dark');
|
|
198
|
+
|
|
199
|
+
const {result} = renderHook(() => useTheme());
|
|
200
|
+
|
|
201
|
+
expect(result.current.name).toBe('root-brand');
|
|
202
|
+
expect(result.current.token('--color-accent')).toBe('#AABBCC');
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
it('stays live when <html data-astryx-theme> changes after mount', async () => {
|
|
206
|
+
defineTheme({
|
|
207
|
+
name: 'first-brand',
|
|
208
|
+
tokens: {'--color-accent': '#111111'},
|
|
209
|
+
});
|
|
210
|
+
defineTheme({
|
|
211
|
+
name: 'second-brand',
|
|
212
|
+
tokens: {'--color-accent': '#222222'},
|
|
213
|
+
});
|
|
214
|
+
document.documentElement.setAttribute('data-astryx-theme', 'first-brand');
|
|
215
|
+
|
|
216
|
+
const {result} = renderHook(() => useTheme());
|
|
217
|
+
expect(result.current.name).toBe('first-brand');
|
|
218
|
+
expect(result.current.token('--color-accent')).toBe('#111111');
|
|
219
|
+
|
|
220
|
+
act(() => {
|
|
221
|
+
document.documentElement.setAttribute(
|
|
222
|
+
'data-astryx-theme',
|
|
223
|
+
'second-brand',
|
|
224
|
+
);
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
await waitFor(() => expect(result.current.name).toBe('second-brand'));
|
|
228
|
+
expect(result.current.token('--color-accent')).toBe('#222222');
|
|
229
|
+
});
|
|
187
230
|
});
|
|
188
231
|
|
|
189
232
|
// Covers the singleton MutationObserver + no-op gating in useRootThemeModeAttr:
|
|
@@ -193,7 +236,9 @@ describe('useTheme mode resolution without a ThemeContext ancestor', () => {
|
|
|
193
236
|
// zero as they unmount.
|
|
194
237
|
describe('useTheme root-attribute observer lifecycle', () => {
|
|
195
238
|
afterEach(() => {
|
|
239
|
+
resetThemes();
|
|
196
240
|
document.documentElement.removeAttribute('data-theme');
|
|
241
|
+
document.documentElement.removeAttribute('data-astryx-theme');
|
|
197
242
|
// vi.stubGlobal'd MutationObserver stubs below are torn down here even if
|
|
198
243
|
// a test fails partway through, instead of relying on a manual restore
|
|
199
244
|
// line at the end of each test that a mid-test throw would skip.
|
|
@@ -237,13 +282,13 @@ describe('useTheme root-attribute observer lifecycle', () => {
|
|
|
237
282
|
const first = renderHook(() => useTheme());
|
|
238
283
|
const second = renderHook(() => useTheme());
|
|
239
284
|
|
|
240
|
-
expect(ObserverSpy).toHaveBeenCalledTimes(
|
|
241
|
-
expect(observe).toHaveBeenCalledTimes(
|
|
285
|
+
expect(ObserverSpy).toHaveBeenCalledTimes(2);
|
|
286
|
+
expect(observe).toHaveBeenCalledTimes(2);
|
|
242
287
|
|
|
243
288
|
first.unmount();
|
|
244
289
|
expect(disconnect).not.toHaveBeenCalled();
|
|
245
290
|
|
|
246
291
|
second.unmount();
|
|
247
|
-
expect(disconnect).toHaveBeenCalledTimes(
|
|
292
|
+
expect(disconnect).toHaveBeenCalledTimes(2);
|
|
248
293
|
});
|
|
249
294
|
});
|
package/src/theme/useTheme.ts
CHANGED
|
@@ -5,17 +5,17 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* @file useTheme.ts
|
|
7
7
|
* @input ThemeContext provided by Theme
|
|
8
|
-
* @output Exports useTheme
|
|
8
|
+
* @output Exports useTheme and useThemeName hooks for programmatic theme access
|
|
9
9
|
* @position Theme hook; used by data viz, canvas, and non-CSS consumers
|
|
10
10
|
*
|
|
11
11
|
* Provides synchronous access to theme token values resolved for the
|
|
12
12
|
* current color mode — no DOM reads on the provider path, no double render.
|
|
13
|
-
* Without a reachable ThemeContext it consults `<html data-theme>`
|
|
14
|
-
* sync by Theme) via
|
|
15
|
-
* assuming OS preference
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
13
|
+
* Without a reachable ThemeContext it consults `<html data-theme>` and
|
|
14
|
+
* `<html data-astryx-theme>` (kept in sync by Theme) via shared, refcounted
|
|
15
|
+
* MutationObservers before assuming OS preference/default tokens. Provider-path
|
|
16
|
+
* consumers subscribe to no-op stores instead, so mounting under a Theme never
|
|
17
|
+
* creates an observer. Token resolution is shared with the server-safe helpers
|
|
18
|
+
* in ./tokens.ts.
|
|
19
19
|
*
|
|
20
20
|
* SYNC: When modified, update:
|
|
21
21
|
* - /packages/core/src/theme/index.ts
|
|
@@ -25,6 +25,8 @@ import {createContext, use, useMemo, useSyncExternalStore} from 'react';
|
|
|
25
25
|
import type {ThemeMode} from './types';
|
|
26
26
|
import type {DefinedTheme} from './defineTheme';
|
|
27
27
|
import {resolveThemeTokens} from './tokens';
|
|
28
|
+
import {getRegisteredTheme} from './themeRegistry';
|
|
29
|
+
import {dataAttr} from '../naming';
|
|
28
30
|
import {useMediaQuery} from '../hooks/useMediaQuery';
|
|
29
31
|
|
|
30
32
|
// =============================================================================
|
|
@@ -92,7 +94,7 @@ export interface UseThemeReturn {
|
|
|
92
94
|
// Hook
|
|
93
95
|
// =============================================================================
|
|
94
96
|
|
|
95
|
-
function
|
|
97
|
+
function getRootModeAttrSnapshot(): 'light' | 'dark' | null {
|
|
96
98
|
if (typeof document === 'undefined') {
|
|
97
99
|
return null;
|
|
98
100
|
}
|
|
@@ -100,45 +102,88 @@ function getRootThemeAttrSnapshot(): 'light' | 'dark' | null {
|
|
|
100
102
|
return attr === 'light' || attr === 'dark' ? attr : null;
|
|
101
103
|
}
|
|
102
104
|
|
|
103
|
-
function
|
|
105
|
+
function getRootModeAttrServerSnapshot(): 'light' | 'dark' | null {
|
|
104
106
|
return null;
|
|
105
107
|
}
|
|
106
108
|
|
|
107
|
-
function
|
|
109
|
+
function getRootNameAttrSnapshot(): string | null {
|
|
110
|
+
if (typeof document === 'undefined') {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
return document.documentElement.getAttribute(dataAttr('theme'));
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function getRootNameAttrServerSnapshot(): string | null {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
function getNullThemeSnapshot(): null {
|
|
108
121
|
return null;
|
|
109
122
|
}
|
|
110
123
|
|
|
111
124
|
// Every no-context consumer wants the same <html data-theme> attribute, so
|
|
112
125
|
// one MutationObserver — refcounted via this listener set — serves all of
|
|
113
126
|
// them instead of one per consumer.
|
|
114
|
-
const
|
|
115
|
-
let
|
|
127
|
+
const rootModeAttrListeners = new Set<() => void>();
|
|
128
|
+
let rootModeAttrObserver: MutationObserver | null = null;
|
|
116
129
|
|
|
117
|
-
|
|
118
|
-
|
|
130
|
+
const rootNameAttrListeners = new Set<() => void>();
|
|
131
|
+
let rootNameAttrObserver: MutationObserver | null = null;
|
|
132
|
+
|
|
133
|
+
function notifyRootModeAttrListeners(): void {
|
|
134
|
+
for (const listener of rootModeAttrListeners) {
|
|
119
135
|
listener();
|
|
120
136
|
}
|
|
121
137
|
}
|
|
122
138
|
|
|
123
|
-
function
|
|
124
|
-
|
|
139
|
+
function subscribeRootModeAttr(onStoreChange: () => void): () => void {
|
|
140
|
+
rootModeAttrListeners.add(onStoreChange);
|
|
125
141
|
|
|
126
142
|
if (
|
|
127
|
-
|
|
143
|
+
rootModeAttrListeners.size === 1 &&
|
|
128
144
|
typeof MutationObserver !== 'undefined'
|
|
129
145
|
) {
|
|
130
|
-
|
|
131
|
-
|
|
146
|
+
rootModeAttrObserver = new MutationObserver(notifyRootModeAttrListeners);
|
|
147
|
+
rootModeAttrObserver.observe(document.documentElement, {
|
|
132
148
|
attributes: true,
|
|
133
149
|
attributeFilter: ['data-theme'],
|
|
134
150
|
});
|
|
135
151
|
}
|
|
136
152
|
|
|
137
153
|
return () => {
|
|
138
|
-
|
|
139
|
-
if (
|
|
140
|
-
|
|
141
|
-
|
|
154
|
+
rootModeAttrListeners.delete(onStoreChange);
|
|
155
|
+
if (rootModeAttrListeners.size === 0 && rootModeAttrObserver) {
|
|
156
|
+
rootModeAttrObserver.disconnect();
|
|
157
|
+
rootModeAttrObserver = null;
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
function notifyRootNameAttrListeners(): void {
|
|
163
|
+
for (const listener of rootNameAttrListeners) {
|
|
164
|
+
listener();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
function subscribeRootNameAttr(onStoreChange: () => void): () => void {
|
|
169
|
+
rootNameAttrListeners.add(onStoreChange);
|
|
170
|
+
|
|
171
|
+
if (
|
|
172
|
+
rootNameAttrListeners.size === 1 &&
|
|
173
|
+
typeof MutationObserver !== 'undefined'
|
|
174
|
+
) {
|
|
175
|
+
rootNameAttrObserver = new MutationObserver(notifyRootNameAttrListeners);
|
|
176
|
+
rootNameAttrObserver.observe(document.documentElement, {
|
|
177
|
+
attributes: true,
|
|
178
|
+
attributeFilter: [dataAttr('theme')],
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return () => {
|
|
183
|
+
rootNameAttrListeners.delete(onStoreChange);
|
|
184
|
+
if (rootNameAttrListeners.size === 0 && rootNameAttrObserver) {
|
|
185
|
+
rootNameAttrObserver.disconnect();
|
|
186
|
+
rootNameAttrObserver = null;
|
|
142
187
|
}
|
|
143
188
|
};
|
|
144
189
|
}
|
|
@@ -154,14 +199,38 @@ function subscribeNoop(): () => void {
|
|
|
154
199
|
* a no-op store when a ThemeContext exists — instead of skipping the hook
|
|
155
200
|
* call, so provider-path consumers never touch the DOM or the observer.
|
|
156
201
|
*/
|
|
157
|
-
function
|
|
202
|
+
function useRootModeAttr(hasCtx: boolean): 'light' | 'dark' | null {
|
|
203
|
+
return useSyncExternalStore(
|
|
204
|
+
hasCtx ? subscribeNoop : subscribeRootModeAttr,
|
|
205
|
+
hasCtx ? getNullThemeSnapshot : getRootModeAttrSnapshot,
|
|
206
|
+
getRootModeAttrServerSnapshot,
|
|
207
|
+
);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
function useRootThemeNameAttr(hasCtx: boolean): string | null {
|
|
158
211
|
return useSyncExternalStore(
|
|
159
|
-
hasCtx ? subscribeNoop :
|
|
160
|
-
hasCtx ?
|
|
161
|
-
|
|
212
|
+
hasCtx ? subscribeNoop : subscribeRootNameAttr,
|
|
213
|
+
hasCtx ? getNullThemeSnapshot : getRootNameAttrSnapshot,
|
|
214
|
+
getRootNameAttrServerSnapshot,
|
|
162
215
|
);
|
|
163
216
|
}
|
|
164
217
|
|
|
218
|
+
/**
|
|
219
|
+
* Return the nearest active Astryx theme name.
|
|
220
|
+
*
|
|
221
|
+
* Uses ThemeContext when present and otherwise follows the root Theme's
|
|
222
|
+
* <html data-astryx-theme> attribute. This is intentionally lighter than
|
|
223
|
+
* useTheme() for consumers that only need theme identity, such as semantic
|
|
224
|
+
* icon resolution.
|
|
225
|
+
*/
|
|
226
|
+
export function useThemeName(): string | null {
|
|
227
|
+
const ctx = use(ThemeContext);
|
|
228
|
+
const hasCtx = ctx != null;
|
|
229
|
+
const rootThemeName = useRootThemeNameAttr(hasCtx);
|
|
230
|
+
|
|
231
|
+
return ctx?.theme.name ?? rootThemeName;
|
|
232
|
+
}
|
|
233
|
+
|
|
165
234
|
/**
|
|
166
235
|
* Access the current Astryx theme's token values, resolved for the active color mode.
|
|
167
236
|
*
|
|
@@ -193,13 +262,15 @@ export function useTheme(): UseThemeReturn {
|
|
|
193
262
|
// Falls back to the root Theme's mode via <html data-theme> when there's
|
|
194
263
|
// no ThemeContext ancestor (e.g. useToast's detached fallback viewport).
|
|
195
264
|
// Resolves to null when `ctx` is present, so it has no effect there.
|
|
196
|
-
const
|
|
265
|
+
const hasCtx = ctx != null;
|
|
266
|
+
const rootAttrMode = useRootModeAttr(hasCtx);
|
|
267
|
+
const rootThemeName = useRootThemeNameAttr(hasCtx);
|
|
197
268
|
|
|
198
269
|
// Resolve 'system' to 'light' | 'dark' using the OS preference
|
|
199
270
|
const prefersDark = useMediaQuery('(prefers-color-scheme: dark)');
|
|
200
271
|
|
|
201
272
|
const mode = ctx?.mode ?? rootAttrMode ?? 'system';
|
|
202
|
-
const theme = ctx?.theme ??
|
|
273
|
+
const theme = ctx?.theme ?? getRegisteredTheme(rootThemeName);
|
|
203
274
|
|
|
204
275
|
const effectiveMode: 'light' | 'dark' =
|
|
205
276
|
mode === 'system' ? (prefersDark ? 'dark' : 'light') : mode;
|