@astryxdesign/core 0.2.0 → 0.3.0
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/CHANGELOG.md +110 -0
- package/README.md +5 -3
- 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 +25 -18
- 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.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroup.js +4 -8
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts +2 -2
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +7 -3
- 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 +3 -21
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +6 -19
- 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/index.d.ts +1 -1
- package/dist/Calendar/index.d.ts.map +1 -1
- package/dist/Calendar/index.js +1 -1
- package/dist/Calendar/styles.d.ts +2 -2
- package/dist/Calendar/styles.js +2 -2
- package/dist/Calendar/utils.d.ts +0 -4
- package/dist/Calendar/utils.d.ts.map +1 -1
- package/dist/Calendar/utils.js +1 -8
- package/dist/Card/Card.d.ts +1 -1
- package/dist/Card/Card.js +1 -1
- package/dist/Carousel/Carousel.d.ts +54 -3
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +82 -15
- package/dist/Carousel/index.d.ts +1 -1
- package/dist/Carousel/index.d.ts.map +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 +5 -5
- 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 +8 -1
- package/dist/Chat/ChatLayout.d.ts.map +1 -1
- package/dist/Chat/ChatLayout.js +15 -4
- 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.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +3 -3
- 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.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +20 -5
- 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/CodeBlock/CodeBlock.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/ComplexSelector/ComplexSelector.d.ts +108 -0
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -0
- package/dist/ComplexSelector/ComplexSelector.js +316 -0
- package/dist/ComplexSelector/index.d.ts +7 -0
- package/dist/ComplexSelector/index.d.ts.map +1 -0
- package/dist/ComplexSelector/index.js +10 -0
- package/dist/ContextMenu/ContextMenu.d.ts +2 -2
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +24 -6
- 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 +33 -24
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +47 -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/DropdownMenuRadioGroup.d.ts +8 -11
- package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioGroup.js +3 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.js +6 -2
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +1 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.js +14 -6
- package/dist/DropdownMenu/menuItemHover.d.ts +1 -0
- package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -1
- package/dist/DropdownMenu/menuItemHover.js +1 -0
- 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 +4 -3
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +48 -5
- package/dist/FieldStatus/FieldStatus.d.ts +1 -18
- package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
- package/dist/FieldStatus/FieldStatus.js +13 -17
- 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 +2 -10
- package/dist/Grid/Grid.d.ts.map +1 -1
- package/dist/Grid/Grid.js +1 -10
- 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.d.ts.map +1 -1
- package/dist/Heading/Heading.js +5 -4
- 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/defaultIcons.d.ts.map +1 -1
- package/dist/Icon/defaultIcons.js +14 -0
- package/dist/Icon/globalIconRegistry.d.ts +48 -6
- package/dist/Icon/globalIconRegistry.d.ts.map +1 -1
- package/dist/Icon/globalIconRegistry.js +74 -7
- package/dist/Icon/index.d.ts +4 -3
- package/dist/Icon/index.d.ts.map +1 -1
- package/dist/Icon/index.js +2 -1
- 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 +17 -4
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +32 -7
- 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 +6 -4
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +117 -26
- 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 +12 -2
- package/dist/List/ListItem.d.ts.map +1 -1
- package/dist/List/ListItem.js +3 -1
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +35 -13
- package/dist/MetadataList/MetadataList.d.ts +2 -2
- package/dist/MetadataList/MetadataList.d.ts.map +1 -1
- package/dist/MetadataList/MetadataList.js +38 -12
- 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 +13 -4
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +118 -24
- package/dist/NavIcon/NavIcon.d.ts +1 -1
- package/dist/NavIcon/NavIcon.js +1 -1
- package/dist/NavMenu/index.d.ts +0 -2
- package/dist/NavMenu/index.d.ts.map +1 -1
- package/dist/NavMenu/index.js +1 -3
- package/dist/NumberInput/NumberInput.d.ts +1 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +16 -5
- 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 +26 -21
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +169 -41
- package/dist/Pagination/index.d.ts +22 -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 +49 -22
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +79 -22
- package/dist/ProgressBar/ProgressBarMarkTooltip.d.ts +27 -0
- package/dist/ProgressBar/ProgressBarMarkTooltip.d.ts.map +1 -0
- package/dist/ProgressBar/ProgressBarMarkTooltip.js +35 -0
- 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.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +2 -2
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +15 -11
- 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.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +4 -3
- 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 +12 -3
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +109 -21
- 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.d.ts.map +1 -1
- package/dist/Skeleton/Skeleton.js +3 -3
- 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 +2 -6
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +18 -10
- 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.d.ts.map +1 -1
- package/dist/TabList/TabMenu.js +11 -3
- package/dist/Table/BaseTable.d.ts +1 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +4 -7
- 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 +4 -2
- package/dist/Table/TableHeaderCell.d.ts +1 -1
- package/dist/Table/TableHeaderCell.js +4 -2
- package/dist/Table/TableRow.d.ts +1 -1
- package/dist/Table/TableRow.js +1 -1
- package/dist/Table/index.d.ts +1 -1
- package/dist/Table/index.d.ts.map +1 -1
- package/dist/Table/index.js +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.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 +22 -4
- package/dist/Table/plugins/tree/useTableTreeData.d.ts +11 -0
- package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
- package/dist/Table/plugins/tree/useTableTreeData.js +36 -2
- package/dist/Table/types.d.ts +0 -9
- package/dist/Table/types.d.ts.map +1 -1
- package/dist/Text/Text.d.ts +11 -2
- package/dist/Text/Text.d.ts.map +1 -1
- package/dist/Text/Text.js +26 -3
- 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.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +107 -39
- package/dist/TextInput/TextInput.d.ts +1 -1
- package/dist/TextInput/TextInput.js +1 -1
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +52 -46
- package/dist/TimeInput/TimeInput.js +1 -1
- package/dist/Timestamp/Timestamp.d.ts +26 -12
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +128 -65
- package/dist/Timestamp/TimestampHoverCard.d.ts +45 -0
- package/dist/Timestamp/TimestampHoverCard.d.ts.map +1 -0
- package/dist/Timestamp/TimestampHoverCard.js +228 -0
- package/dist/Timestamp/formatInstant.d.ts +3 -3
- package/dist/Timestamp/formatInstant.d.ts.map +1 -1
- package/dist/Timestamp/formatInstant.js +7 -2
- package/dist/Timestamp/tooltipEntries.d.ts +17 -2
- package/dist/Timestamp/tooltipEntries.d.ts.map +1 -1
- package/dist/Timestamp/tooltipEntries.js +4 -2
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +61 -9
- package/dist/ToggleButton/ToggleButton.d.ts +1 -1
- package/dist/ToggleButton/ToggleButton.d.ts.map +1 -1
- package/dist/ToggleButton/ToggleButton.js +4 -2
- 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 +6 -28
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +69 -58
- package/dist/Token/TokenLink.d.ts +62 -0
- package/dist/Token/TokenLink.d.ts.map +1 -0
- package/dist/Token/TokenLink.js +76 -0
- 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 +2 -8
- package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/TopNav/TopNavHeading.js +8 -10
- 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.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +15 -7
- 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 +10 -1
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +3 -1
- package/dist/Typeahead/Typeahead.d.ts +1 -1
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +9 -2
- 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 +111 -33
- package/dist/astryx.umd.js +50 -54
- package/dist/astryx.umd.js.map +4 -4
- package/dist/hooks/containerReveal.pool.stylex.d.ts +303 -0
- package/dist/hooks/containerReveal.pool.stylex.d.ts.map +1 -0
- package/dist/hooks/containerReveal.pool.stylex.js +292 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +2 -1
- package/dist/hooks/useContainerReveal.d.ts +83 -0
- package/dist/hooks/useContainerReveal.d.ts.map +1 -0
- package/dist/hooks/useContainerReveal.js +123 -0
- package/dist/hooks/useGridFocus.d.ts +8 -6
- package/dist/hooks/useGridFocus.d.ts.map +1 -1
- package/dist/hooks/useInputContainer.d.ts.map +1 -1
- package/dist/hooks/useInputContainer.js +29 -1
- package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
- package/dist/hooks/useInputStatusIcon.js +11 -0
- package/dist/hooks/useKeyboardHint.d.ts +2 -2
- package/dist/hooks/useKeyboardHint.d.ts.map +1 -1
- package/dist/hooks/useKeyboardHint.js +5 -3
- package/dist/hooks/useListFocus.d.ts +8 -7
- package/dist/hooks/useListFocus.d.ts.map +1 -1
- package/dist/hooks/useTreeFocus.d.ts.map +1 -1
- package/dist/hooks/useTreeFocus.js +13 -2
- package/dist/i18n/InternationalizationProvider.d.ts +6 -0
- package/dist/i18n/InternationalizationProvider.d.ts.map +1 -1
- package/dist/i18n/useDirection.d.ts.map +1 -1
- package/dist/i18n/useDirection.js +6 -3
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/theme/Theme.d.ts.map +1 -1
- package/dist/theme/Theme.js +2 -7
- package/dist/theme/contrast.d.ts +45 -0
- package/dist/theme/contrast.d.ts.map +1 -0
- package/dist/theme/contrast.js +88 -0
- package/dist/theme/defineTheme.d.ts +9 -3
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/defineTheme.js +6 -4
- package/dist/theme/expandColorScale.d.ts +29 -2
- package/dist/theme/expandColorScale.d.ts.map +1 -1
- package/dist/theme/expandColorScale.js +91 -12
- package/dist/theme/generateThemeRules.d.ts +0 -6
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +0 -15
- package/dist/theme/index.d.ts +9 -7
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +4 -3
- 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/tokens.stylex.d.ts +0 -17
- package/dist/theme/tokens.stylex.d.ts.map +1 -1
- package/dist/theme/tokens.stylex.js +0 -22
- package/dist/theme/types.d.ts +10 -2
- 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/locales/en.json +124 -0
- package/locales/pseudo.json +93 -0
- package/package.json +10 -14
- 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.test.tsx +55 -0
- package/src/AppShell/AppShell.tsx +27 -22
- 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.test.tsx +21 -1
- package/src/AvatarGroup/AvatarGroup.tsx +3 -7
- package/src/AvatarGroup/AvatarGroupOverflow.doc.mjs +1 -1
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +5 -3
- 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.test.tsx +1 -1
- 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.test.tsx +16 -0
- package/src/Button/Button.tsx +6 -23
- 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 +22 -6
- package/src/Calendar/Calendar.tsx +1 -1
- package/src/Calendar/index.ts +1 -6
- package/src/Calendar/styles.ts +2 -2
- package/src/Calendar/utils.ts +0 -11
- package/src/Card/Card.doc.mjs +3 -3
- package/src/Card/Card.tsx +1 -1
- package/src/Carousel/Carousel.doc.mjs +10 -3
- package/src/Carousel/Carousel.test.tsx +232 -1
- package/src/Carousel/Carousel.tsx +144 -21
- package/src/Carousel/index.ts +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 +5 -5
- 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.test.tsx +57 -0
- package/src/Chat/ChatLayout.tsx +23 -2
- 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 +56 -0
- package/src/CheckboxInput/CheckboxInput.tsx +18 -3
- package/src/CheckboxList/CheckboxList.doc.mjs +3 -3
- package/src/CheckboxList/CheckboxList.test.tsx +94 -3
- package/src/CheckboxList/CheckboxList.tsx +1 -1
- package/src/CheckboxList/CheckboxListItem.doc.mjs +1 -1
- package/src/CheckboxList/CheckboxListItem.tsx +18 -11
- 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/CodeBlock/CodeBlock.test.tsx +17 -0
- package/src/CodeBlock/CodeBlock.tsx +2 -2
- 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.test.tsx +6 -2
- 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/ComplexSelector/ComplexSelector.doc.mjs +179 -0
- package/src/ComplexSelector/ComplexSelector.test.tsx +156 -0
- package/src/ComplexSelector/ComplexSelector.tsx +429 -0
- package/src/ComplexSelector/index.ts +17 -0
- package/src/ContextMenu/ContextMenu.doc.mjs +3 -3
- package/src/ContextMenu/ContextMenu.test.tsx +17 -2
- package/src/ContextMenu/ContextMenu.tsx +27 -6
- package/src/ContextMenu/ContextMenuItem.doc.mjs +1 -1
- package/src/DateInput/DateInput.doc.mjs +3 -3
- package/src/DateInput/DateInput.test.tsx +7 -3
- package/src/DateInput/DateInput.tsx +1 -1
- package/src/DateRangeInput/DateRangeInput.doc.mjs +2 -2
- package/src/DateRangeInput/DateRangeInput.test.tsx +7 -2
- package/src/DateRangeInput/DateRangeInput.tsx +1 -1
- package/src/DateTimeInput/DateTimeInput.doc.mjs +3 -3
- package/src/DateTimeInput/DateTimeInput.test.tsx +6 -2
- package/src/DateTimeInput/DateTimeInput.tsx +1 -1
- package/src/Dialog/Dialog.doc.mjs +7 -5
- package/src/Dialog/Dialog.test.tsx +46 -3
- package/src/Dialog/Dialog.tsx +61 -44
- 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 +5 -13
- package/src/DropdownMenu/DropdownMenuRadioGroup.tsx +9 -10
- package/src/DropdownMenu/DropdownMenuRadioItem.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuRadioItem.tsx +11 -2
- package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +84 -2
- package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +46 -1
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +24 -8
- package/src/DropdownMenu/menuItemHover.ts +1 -0
- 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 +7 -3
- package/src/Field/Field.tsx +1 -1
- package/src/Field/FieldLabel.doc.mjs +1 -1
- package/src/Field/FieldLabel.test.tsx +103 -0
- package/src/Field/FieldLabel.tsx +61 -5
- package/src/FieldStatus/FieldStatus.doc.mjs +3 -2
- package/src/FieldStatus/FieldStatus.test.tsx +61 -0
- package/src/FieldStatus/FieldStatus.tsx +16 -23
- 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 -8
- package/src/Grid/Grid.tsx +1 -25
- 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 +4 -3
- 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 +7 -6
- package/src/Icon/Icon.test.tsx +23 -0
- package/src/Icon/Icon.tsx +4 -2
- package/src/Icon/defaultIcons.tsx +14 -0
- package/src/Icon/globalIconRegistry.test.tsx +87 -1
- package/src/Icon/globalIconRegistry.tsx +111 -9
- package/src/Icon/index.ts +9 -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 +8 -3
- package/src/Item/Item.test.tsx +88 -0
- package/src/Item/Item.tsx +58 -12
- 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 +5 -5
- package/src/Lightbox/Lightbox.test.tsx +211 -0
- package/src/Lightbox/Lightbox.tsx +109 -22
- 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 +13 -1
- package/src/List/ListItem.tsx +14 -1
- package/src/Markdown/Markdown.doc.mjs +81 -1
- package/src/Markdown/Markdown.test.tsx +92 -0
- package/src/Markdown/Markdown.tsx +96 -68
- package/src/Markdown/parser.perf.test.ts +47 -35
- package/src/MetadataList/MetadataList.doc.mjs +3 -3
- package/src/MetadataList/MetadataList.test.tsx +82 -0
- package/src/MetadataList/MetadataList.tsx +45 -20
- 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 +35 -10
- package/src/MultiSelector/MultiSelector.test.tsx +303 -3
- package/src/MultiSelector/MultiSelector.tsx +223 -58
- package/src/NavIcon/NavIcon.doc.mjs +3 -3
- package/src/NavIcon/NavIcon.tsx +1 -1
- package/src/NavMenu/NavHeadingMenu.test.tsx +0 -16
- package/src/NavMenu/NavMenu.doc.mjs +2 -2
- package/src/NavMenu/index.ts +0 -4
- package/src/NumberInput/NumberInput.doc.mjs +3 -6
- package/src/NumberInput/NumberInput.test.tsx +38 -3
- package/src/NumberInput/NumberInput.tsx +24 -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 +55 -8
- package/src/Pagination/Pagination.test.tsx +567 -0
- package/src/Pagination/Pagination.tsx +223 -41
- package/src/Pagination/index.ts +22 -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 +18 -3
- package/src/ProgressBar/ProgressBar.test.tsx +340 -2
- package/src/ProgressBar/ProgressBar.tsx +153 -25
- package/src/ProgressBar/ProgressBarMarkTooltip.tsx +43 -0
- package/src/ProgressBar/index.ts +22 -1
- package/src/RadioList/RadioList.doc.mjs +3 -3
- package/src/RadioList/RadioList.test.tsx +26 -4
- package/src/RadioList/RadioList.tsx +1 -1
- package/src/RadioList/RadioListItem.doc.mjs +1 -1
- package/src/RadioList/RadioListItem.tsx +9 -2
- package/src/Resizable/Resizable.doc.mjs +2 -2
- package/src/Resizable/ResizeHandle.test.tsx +52 -3
- package/src/Resizable/ResizeHandle.tsx +25 -13
- 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.test.tsx +28 -0
- package/src/SegmentedControl/SegmentedControl.tsx +1 -1
- package/src/SegmentedControl/SegmentedControlItem.doc.mjs +1 -1
- package/src/SegmentedControl/SegmentedControlItem.tsx +21 -3
- 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 +28 -8
- package/src/Selector/Selector.test.tsx +222 -3
- package/src/Selector/Selector.tsx +202 -52
- 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.test.tsx +16 -0
- package/src/Skeleton/Skeleton.tsx +14 -2
- 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 +5 -5
- package/src/Switch/Switch.test.tsx +71 -25
- package/src/Switch/Switch.tsx +56 -18
- 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.test.tsx +21 -18
- package/src/TabList/TabList.tsx +1 -1
- package/src/TabList/TabMenu.doc.mjs +1 -1
- package/src/TabList/TabMenu.tsx +11 -3
- package/src/Table/BaseTable.tsx +4 -5
- package/src/Table/Table.doc.mjs +5 -5
- package/src/Table/Table.test.tsx +27 -49
- package/src/Table/Table.tsx +1 -1
- package/src/Table/TableCell.doc.mjs +1 -1
- package/src/Table/TableCell.tsx +2 -2
- package/src/Table/TableHeaderCell.doc.mjs +1 -1
- package/src/Table/TableHeaderCell.tsx +2 -2
- package/src/Table/TableRow.doc.mjs +1 -1
- package/src/Table/TableRow.tsx +1 -1
- package/src/Table/index.ts +1 -1
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +1 -1
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +19 -0
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +24 -4
- package/src/Table/plugins/tree/useTableTreeData.test.tsx +161 -2
- package/src/Table/plugins/tree/useTableTreeData.tsx +54 -1
- package/src/Table/types.ts +0 -9
- 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 +3 -3
- 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 +10 -1
- package/src/Table/useTableTreeState.doc.mjs +1 -1
- package/src/Text/Heading.doc.mjs +4 -4
- package/src/Text/Text.doc.mjs +4 -4
- package/src/Text/Text.test.tsx +42 -0
- package/src/Text/Text.tsx +26 -2
- package/src/Text/index.ts +32 -6
- package/src/TextArea/TextArea.doc.mjs +5 -5
- package/src/TextArea/TextArea.test.tsx +112 -7
- package/src/TextArea/TextArea.tsx +143 -50
- 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.test.tsx +24 -1
- package/src/Thumbnail/Thumbnail.tsx +28 -35
- package/src/TimeInput/TimeInput.doc.mjs +3 -3
- package/src/TimeInput/TimeInput.tsx +1 -1
- package/src/Timestamp/Timestamp.doc.mjs +29 -24
- package/src/Timestamp/Timestamp.test.tsx +438 -107
- package/src/Timestamp/Timestamp.tsx +167 -103
- package/src/Timestamp/TimestampHoverCard.tsx +283 -0
- package/src/Timestamp/formatInstant.ts +9 -4
- package/src/Timestamp/tooltipEntries.test.ts +9 -0
- package/src/Timestamp/tooltipEntries.ts +18 -2
- package/src/Toast/Toast.doc.mjs +3 -3
- package/src/Toast/ToastViewport.test.tsx +218 -8
- package/src/Toast/ToastViewport.tsx +71 -12
- package/src/Toast/useToast.doc.mjs +2 -2
- package/src/ToggleButton/ToggleButton.doc.mjs +3 -3
- package/src/ToggleButton/ToggleButton.test.tsx +24 -0
- package/src/ToggleButton/ToggleButton.tsx +20 -2
- 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.test.tsx +145 -0
- package/src/Token/Token.tsx +75 -61
- package/src/Token/TokenLink.tsx +107 -0
- 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.test.tsx +2 -2
- package/src/TopNav/TopNav.tsx +1 -1
- package/src/TopNav/TopNavHeading.doc.mjs +1 -12
- package/src/TopNav/TopNavHeading.tsx +8 -18
- 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 +32 -6
- 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.test.tsx +10 -6
- 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 +13 -1
- package/src/Typeahead/Typeahead.doc.mjs +3 -3
- package/src/Typeahead/Typeahead.test.tsx +62 -0
- package/src/Typeahead/Typeahead.tsx +7 -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__/babelPluginAddExtensions.test.ts +190 -0
- package/src/__tests__/forcedColors.ts +60 -0
- 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 +571 -0
- package/src/hooks/index.ts +7 -0
- package/src/hooks/useClickableContainer.doc.mjs +2 -2
- package/src/hooks/useContainerReveal.doc.mjs +75 -0
- package/src/hooks/useContainerReveal.test.tsx +116 -0
- package/src/hooks/useContainerReveal.ts +181 -0
- 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/useGridFocus.ts +8 -6
- 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/useInputStatusIcon.test.tsx +59 -0
- package/src/hooks/useInputStatusIcon.tsx +12 -1
- package/src/hooks/useKeyboardHint.doc.mjs +2 -2
- package/src/hooks/useKeyboardHint.test.tsx +22 -0
- package/src/hooks/useKeyboardHint.tsx +7 -3
- package/src/hooks/useListFocus.doc.mjs +2 -2
- package/src/hooks/useListFocus.ts +8 -7
- 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/hooks/useTreeFocus.test.tsx +53 -1
- package/src/hooks/useTreeFocus.ts +13 -2
- package/src/i18n/InternationalizationProvider.doc.mjs +14 -2
- package/src/i18n/InternationalizationProvider.tsx +6 -0
- package/src/i18n/useDirection.ts +6 -3
- package/src/i18n/useTranslator.doc.mjs +2 -2
- package/src/index.ts +2 -18
- 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/contrast.test.ts +94 -0
- package/src/theme/contrast.ts +99 -0
- package/src/theme/defineTheme.test.ts +29 -30
- package/src/theme/defineTheme.ts +11 -5
- package/src/theme/expandColorScale.test.ts +387 -1
- package/src/theme/expandColorScale.ts +126 -17
- package/src/theme/generateThemeRules.ts +0 -15
- package/src/theme/index.ts +11 -13
- package/src/theme/themeRegistry.test.ts +59 -0
- package/src/theme/themeRegistry.ts +53 -0
- package/src/theme/tokens.stylex.ts +0 -19
- package/src/theme/types.ts +14 -13
- 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/NavMenu/NavMenuItem.d.ts +0 -13
- package/dist/NavMenu/NavMenuItem.d.ts.map +0 -1
- package/dist/NavMenu/NavMenuItem.js +0 -16
- package/dist/Thumbnail/thumbnail.markers.stylex.d.ts +0 -9
- package/dist/Thumbnail/thumbnail.markers.stylex.d.ts.map +0 -1
- package/dist/Thumbnail/thumbnail.markers.stylex.js +0 -14
- 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/NavMenu/NavMenuItem.tsx +0 -19
- package/src/Thumbnail/thumbnail.markers.stylex.ts +0 -12
- 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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @file expandColorScale.ts
|
|
5
|
-
* @input Color scale configuration { accent
|
|
5
|
+
* @input Color scale configuration { accent?, neutralStyle?, contrast? }
|
|
6
6
|
* @output Token overrides for derivable color tokens
|
|
7
7
|
* @position Theme utility; consumed by defineTheme.ts
|
|
8
8
|
*
|
|
@@ -11,11 +11,27 @@
|
|
|
11
11
|
* derive from the accent — status colors, categorical hues, and fixed
|
|
12
12
|
* tokens (on-dark/on-light) fall through to colorDefaults.
|
|
13
13
|
*
|
|
14
|
+
* `accent` is optional: a neutral-only config still gets the full neutral
|
|
15
|
+
* ramp (seeded from the default accent's hue) while the accent tokens
|
|
16
|
+
* themselves fall through to colorDefaults, same as the tokens above.
|
|
17
|
+
*
|
|
18
|
+
* WCAG contrast guarantees (asserted in expandColorScale.test.ts):
|
|
19
|
+
* - Text tones are guaranteed >= 4.5:1 against their surfaces by tone
|
|
20
|
+
* spacing alone — HCT tone is CIE L*, which fixes relative luminance
|
|
21
|
+
* regardless of hue/chroma, so the fixed tone assignments hold for any
|
|
22
|
+
* accent/neutralStyle (WCAG 1.4.3).
|
|
23
|
+
* - --color-border-emphasized (form-control boundaries) is tone-bumped
|
|
24
|
+
* until it reaches >= 3:1 against the generated surface (WCAG 1.4.11).
|
|
25
|
+
* - --color-border, --color-skeleton, and --color-track are intentionally
|
|
26
|
+
* decorative/redundant cues and are NOT held to 3:1 — see the test file
|
|
27
|
+
* for the rationale.
|
|
28
|
+
*
|
|
14
29
|
* SYNC: When modified, update:
|
|
15
30
|
* - /packages/core/src/theme/defineTheme.ts
|
|
16
31
|
*/
|
|
17
32
|
|
|
18
|
-
import {
|
|
33
|
+
import {contrastRatio} from './contrast';
|
|
34
|
+
import {hexToHct, hctToHex, tonalPalette, hexWithAlpha} from './hct';
|
|
19
35
|
|
|
20
36
|
// =============================================================================
|
|
21
37
|
// Types
|
|
@@ -31,11 +47,21 @@ import {hexToHct, tonalPalette, hexWithAlpha} from './hct';
|
|
|
31
47
|
*
|
|
32
48
|
* // With customization
|
|
33
49
|
* { accent: '#B7410E', neutralStyle: 'warm', contrast: 'high' }
|
|
50
|
+
*
|
|
51
|
+
* // Neutral-only — keeps the default accent, themes the neutrals
|
|
52
|
+
* { neutralStyle: 'warm' }
|
|
34
53
|
* ```
|
|
35
54
|
*/
|
|
36
55
|
export interface ColorScaleConfig {
|
|
37
|
-
/**
|
|
38
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Seed accent color as hex (#RRGGBB). Everything derives from this.
|
|
58
|
+
*
|
|
59
|
+
* Optional. When omitted, the neutral palettes are seeded from the
|
|
60
|
+
* default accent's hue and the accent tokens (--color-accent,
|
|
61
|
+
* --color-accent-muted, --color-on-accent) are not generated — they
|
|
62
|
+
* fall through to colorDefaults.
|
|
63
|
+
*/
|
|
64
|
+
accent?: string;
|
|
39
65
|
|
|
40
66
|
/**
|
|
41
67
|
* Neutral tone warmth. Controls how much of the seed's hue bleeds
|
|
@@ -69,6 +95,14 @@ const NEUTRAL_VARIANT_CHROMA: Record<string, number> = {
|
|
|
69
95
|
neutral: 6,
|
|
70
96
|
};
|
|
71
97
|
|
|
98
|
+
/**
|
|
99
|
+
* Hue source for accent-less configs — the light half of
|
|
100
|
+
* colorDefaults['--color-accent'] (a test guards the two against drift).
|
|
101
|
+
* Only its hue reaches the output: the accent tokens stay ungenerated, so
|
|
102
|
+
* they keep their colorDefaults values rather than this seed's derivation.
|
|
103
|
+
*/
|
|
104
|
+
const DEFAULT_ACCENT_SEED = '#0064E0';
|
|
105
|
+
|
|
72
106
|
// =============================================================================
|
|
73
107
|
// Computation
|
|
74
108
|
// =============================================================================
|
|
@@ -81,6 +115,39 @@ function accentWithAlpha(alpha: number): string {
|
|
|
81
115
|
return `color-mix(in srgb, var(--color-accent) ${alpha * 100}%, transparent)`;
|
|
82
116
|
}
|
|
83
117
|
|
|
118
|
+
/** WCAG 1.4.11 minimum contrast for non-text UI boundaries. */
|
|
119
|
+
const NON_TEXT_MIN_CONTRAST = 3;
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Walk tone in `step` increments from `startTone` until the color reaches
|
|
123
|
+
* `minRatio` against `background`, and return the resulting hex.
|
|
124
|
+
*
|
|
125
|
+
* Used for tokens whose preferred tone is not guaranteed by tone spacing
|
|
126
|
+
* alone (e.g. --color-border-emphasized). Because HCT tone is CIE L*,
|
|
127
|
+
* each step moves luminance monotonically, so the loop always terminates —
|
|
128
|
+
* at worst at pure black/white (21:1 against anything mid-range).
|
|
129
|
+
*/
|
|
130
|
+
export function ensureContrastTone(
|
|
131
|
+
hue: number,
|
|
132
|
+
chroma: number,
|
|
133
|
+
startTone: number,
|
|
134
|
+
step: -1 | 1,
|
|
135
|
+
background: string,
|
|
136
|
+
minRatio: number,
|
|
137
|
+
): string {
|
|
138
|
+
let tone = startTone;
|
|
139
|
+
let hex = hctToHex({hue, chroma, tone});
|
|
140
|
+
while (
|
|
141
|
+
contrastRatio(hex, background) < minRatio &&
|
|
142
|
+
tone + step >= 0 &&
|
|
143
|
+
tone + step <= 100
|
|
144
|
+
) {
|
|
145
|
+
tone += step;
|
|
146
|
+
hex = hctToHex({hue, chroma, tone});
|
|
147
|
+
}
|
|
148
|
+
return hex;
|
|
149
|
+
}
|
|
150
|
+
|
|
84
151
|
/**
|
|
85
152
|
* Expand a color scale config into Astryx color token overrides.
|
|
86
153
|
*
|
|
@@ -89,18 +156,23 @@ function accentWithAlpha(alpha: number): string {
|
|
|
89
156
|
* --color-on-dark/on-light) are NOT generated — they fall through
|
|
90
157
|
* to colorDefaults.
|
|
91
158
|
*
|
|
159
|
+
* Without an `accent`, the accent tokens join that fall-through set: the
|
|
160
|
+
* neutrals are seeded from the default accent's hue, and --color-accent,
|
|
161
|
+
* --color-accent-muted and --color-on-accent keep their colorDefaults values.
|
|
162
|
+
*
|
|
92
163
|
* @example
|
|
93
164
|
* ```
|
|
94
165
|
* const tokens = expandColorScale({ accent: '#0064E0' });
|
|
95
166
|
* // tokens['--color-accent'] === 'light-dark(#..., #...)'
|
|
167
|
+
*
|
|
168
|
+
* const neutralOnly = expandColorScale({ neutralStyle: 'warm' });
|
|
169
|
+
* // neutralOnly['--color-accent'] === undefined
|
|
96
170
|
* ```
|
|
97
171
|
*/
|
|
98
|
-
export function expandColorScale(
|
|
99
|
-
config: ColorScaleConfig,
|
|
100
|
-
): ColorScaleTokens {
|
|
172
|
+
export function expandColorScale(config: ColorScaleConfig): ColorScaleTokens {
|
|
101
173
|
const {accent, neutralStyle = 'cool', contrast = 'standard'} = config;
|
|
102
174
|
|
|
103
|
-
const seed = hexToHct(accent);
|
|
175
|
+
const seed = hexToHct(accent ?? DEFAULT_ACCENT_SEED);
|
|
104
176
|
const seedHue = seed.hue;
|
|
105
177
|
|
|
106
178
|
const primaryChroma = Math.max(seed.chroma, 48);
|
|
@@ -118,15 +190,51 @@ export function expandColorScale(
|
|
|
118
190
|
const textSecondaryLightTone = isHigh ? 20 : 30;
|
|
119
191
|
const textSecondaryDarkTone = isHigh ? 80 : 70;
|
|
120
192
|
|
|
193
|
+
// Emphasized borders outline form controls (CheckboxInput, Selector), so
|
|
194
|
+
// they are non-text UI boundaries under WCAG 1.4.11 and must reach 3:1
|
|
195
|
+
// against the surface they sit on. The preferred tones (70 light /
|
|
196
|
+
// 30 dark) land around 2.2:1 / 1.8:1, so bump the tone toward the
|
|
197
|
+
// opposing extreme until the ratio passes. Text tones need no such loop:
|
|
198
|
+
// their spacing guarantees >= 4.5:1 for any hue/chroma (see file header).
|
|
199
|
+
const borderEmphasized = ld(
|
|
200
|
+
ensureContrastTone(
|
|
201
|
+
seedHue,
|
|
202
|
+
neutralVariantChroma,
|
|
203
|
+
70,
|
|
204
|
+
-1,
|
|
205
|
+
N[99],
|
|
206
|
+
NON_TEXT_MIN_CONTRAST,
|
|
207
|
+
),
|
|
208
|
+
ensureContrastTone(
|
|
209
|
+
seedHue,
|
|
210
|
+
neutralVariantChroma,
|
|
211
|
+
30,
|
|
212
|
+
1,
|
|
213
|
+
N[10],
|
|
214
|
+
NON_TEXT_MIN_CONTRAST,
|
|
215
|
+
),
|
|
216
|
+
);
|
|
217
|
+
|
|
121
218
|
return {
|
|
122
|
-
// Core semantic
|
|
123
|
-
|
|
124
|
-
//
|
|
125
|
-
//
|
|
126
|
-
//
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
219
|
+
// Core semantic — only with a seed accent. Without one these fall through
|
|
220
|
+
// to colorDefaults, whose --color-accent is NOT what the default seed
|
|
221
|
+
// derives: defaulting the seed instead of omitting the tokens would
|
|
222
|
+
// recolor every neutral-only theme. Nullish and not truthy, matching the
|
|
223
|
+
// seed above, so a supplied-but-malformed accent keeps its old behavior.
|
|
224
|
+
...(accent != null
|
|
225
|
+
? {
|
|
226
|
+
'--color-accent': ld(P[40], P[80]),
|
|
227
|
+
// Derived accent tokens reference --color-accent instead of baking its
|
|
228
|
+
// resolved hex, so a scoped override of the base token re-accents the
|
|
229
|
+
// whole subtree at runtime. --color-on-accent stays baked: it is a
|
|
230
|
+
// contrast computation against the accent, which CSS cannot express.
|
|
231
|
+
'--color-accent-muted': ld(
|
|
232
|
+
accentWithAlpha(0.2),
|
|
233
|
+
accentWithAlpha(0.25),
|
|
234
|
+
),
|
|
235
|
+
'--color-on-accent': ld(P[100], P[20]),
|
|
236
|
+
}
|
|
237
|
+
: null),
|
|
130
238
|
'--color-neutral': ld(hexWithAlpha(N[10], 0.1), hexWithAlpha(N[90], 0.2)),
|
|
131
239
|
'--color-background-surface': ld(N[99], N[10]),
|
|
132
240
|
'--color-background-body': ld(N[95], N[5]),
|
|
@@ -168,8 +276,9 @@ export function expandColorScale(
|
|
|
168
276
|
'--color-background-inverted': ld(N[10], N[99]),
|
|
169
277
|
|
|
170
278
|
// Border
|
|
279
|
+
// Decorative hairline (~1.1:1 by design) — not a WCAG 1.4.11 boundary.
|
|
171
280
|
'--color-border': ld(hexWithAlpha(N[10], 0.1), hexWithAlpha(N[95], 0.1)),
|
|
172
|
-
'--color-border-emphasized':
|
|
281
|
+
'--color-border-emphasized': borderEmphasized,
|
|
173
282
|
|
|
174
283
|
// Effects
|
|
175
284
|
'--color-skeleton': ld(NV[70], NV[30]),
|
|
@@ -708,18 +708,3 @@ export function generateThemeCSS(theme: DefinedTheme): ThemeCSSOutput {
|
|
|
708
708
|
|
|
709
709
|
return {prose: proseCss, component: componentCss};
|
|
710
710
|
}
|
|
711
|
-
|
|
712
|
-
/**
|
|
713
|
-
* Generate the full CSS string for a theme as a single string.
|
|
714
|
-
* @deprecated Use generateThemeCSS() which returns { prose, component } for proper layering.
|
|
715
|
-
* This flat version is kept for backwards compatibility with tests and simple cases.
|
|
716
|
-
*/
|
|
717
|
-
export function generateThemeCSSFlat(theme: DefinedTheme): string {
|
|
718
|
-
const rules = generateThemeRules(theme);
|
|
719
|
-
if (rules.length === 0) {
|
|
720
|
-
return '';
|
|
721
|
-
}
|
|
722
|
-
const scopeSelector = themeScopeStart(theme.name);
|
|
723
|
-
const inner = rules.join('\n\n');
|
|
724
|
-
return `@scope (${scopeSelector}) to (${THEME_SCOPE_TO}) {\n${inner}\n}`;
|
|
725
|
-
}
|
package/src/theme/index.ts
CHANGED
|
@@ -21,7 +21,6 @@ export type {MediaThemeProps} from './MediaTheme';
|
|
|
21
21
|
export {
|
|
22
22
|
defineTheme,
|
|
23
23
|
generateThemeCSS,
|
|
24
|
-
generateThemeCSSFlat,
|
|
25
24
|
generateOnMediaCSS,
|
|
26
25
|
generateThemeRules,
|
|
27
26
|
generateThemeRulesSplit,
|
|
@@ -30,6 +29,12 @@ export {
|
|
|
30
29
|
isDefinedTheme,
|
|
31
30
|
tokenDefaults,
|
|
32
31
|
} from './defineTheme';
|
|
32
|
+
export {
|
|
33
|
+
registerTheme,
|
|
34
|
+
getRegisteredTheme,
|
|
35
|
+
getRegisteredThemes,
|
|
36
|
+
resetThemes,
|
|
37
|
+
} from './themeRegistry';
|
|
33
38
|
export type {
|
|
34
39
|
DefineThemeInput,
|
|
35
40
|
DefinedTheme,
|
|
@@ -71,19 +76,13 @@ export {expandTypeScale, generateTypeScaleComponents} from './expandTypeScale';
|
|
|
71
76
|
export type {TypeScaleConfig, TypeScaleTokens} from './expandTypeScale';
|
|
72
77
|
|
|
73
78
|
export {expandRadiusScale} from './expandRadiusScale';
|
|
74
|
-
export type {
|
|
75
|
-
RadiusScaleConfig,
|
|
76
|
-
RadiusScaleTokens,
|
|
77
|
-
} from './expandRadiusScale';
|
|
79
|
+
export type {RadiusScaleConfig, RadiusScaleTokens} from './expandRadiusScale';
|
|
78
80
|
|
|
79
81
|
export {expandColorScale} from './expandColorScale';
|
|
80
82
|
export type {ColorScaleConfig, ColorScaleTokens} from './expandColorScale';
|
|
81
83
|
|
|
82
84
|
export {expandMotionScale} from './expandMotionScale';
|
|
83
|
-
export type {
|
|
84
|
-
MotionScaleConfig,
|
|
85
|
-
MotionScaleTokens,
|
|
86
|
-
} from './expandMotionScale';
|
|
85
|
+
export type {MotionScaleConfig, MotionScaleTokens} from './expandMotionScale';
|
|
87
86
|
|
|
88
87
|
// Export token defaults and vars for use in custom components and themes
|
|
89
88
|
export {
|
|
@@ -95,7 +94,6 @@ export {
|
|
|
95
94
|
shadowDefaults,
|
|
96
95
|
durationDefaults,
|
|
97
96
|
easeDefaults,
|
|
98
|
-
transitionDefaults,
|
|
99
97
|
typographyDefaults,
|
|
100
98
|
textSizeDefaults,
|
|
101
99
|
fontWeightDefaults,
|
|
@@ -108,7 +106,6 @@ export {
|
|
|
108
106
|
shadowVars,
|
|
109
107
|
durationVars,
|
|
110
108
|
easeVars,
|
|
111
|
-
transitionVars,
|
|
112
109
|
typographyVars,
|
|
113
110
|
textSizeVars,
|
|
114
111
|
fontWeightVars,
|
|
@@ -125,14 +122,13 @@ export type {
|
|
|
125
122
|
ShadowVarName,
|
|
126
123
|
DurationVarName,
|
|
127
124
|
EaseVarName,
|
|
128
|
-
TransitionVarName,
|
|
129
125
|
TypographyVarName,
|
|
130
126
|
TextSizeVarName,
|
|
131
127
|
FontWeightVarName,
|
|
132
128
|
TypeScaleVarName,
|
|
133
129
|
} from './tokens.stylex';
|
|
134
130
|
|
|
135
|
-
export {useTheme, ThemeContext} from './useTheme';
|
|
131
|
+
export {useTheme, useThemeName, ThemeContext} from './useTheme';
|
|
136
132
|
export type {UseThemeReturn, ThemeContextValue} from './useTheme';
|
|
137
133
|
export {
|
|
138
134
|
resolveThemeToken,
|
|
@@ -146,6 +142,7 @@ export type {
|
|
|
146
142
|
ResolvedThemeMode,
|
|
147
143
|
} from './tokens';
|
|
148
144
|
|
|
145
|
+
export type {TextColorMap} from '../Text';
|
|
149
146
|
export type {
|
|
150
147
|
ThemeMode,
|
|
151
148
|
HeadingTag,
|
|
@@ -155,6 +152,7 @@ export type {
|
|
|
155
152
|
TextSize,
|
|
156
153
|
TextWeight,
|
|
157
154
|
TextColor,
|
|
155
|
+
BuiltinTextColor,
|
|
158
156
|
TypographyConfig,
|
|
159
157
|
TypographyRole,
|
|
160
158
|
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
|
+
}
|
|
@@ -272,23 +272,6 @@ export const easeDefaults = {
|
|
|
272
272
|
export const easeVars = stylex.defineVars(easeDefaults);
|
|
273
273
|
|
|
274
274
|
export type EaseVarName = keyof typeof easeDefaults;
|
|
275
|
-
|
|
276
|
-
// =============================================================================
|
|
277
|
-
// Motion Tokens — Deprecated (transition shorthand)
|
|
278
|
-
// =============================================================================
|
|
279
|
-
|
|
280
|
-
/** @deprecated Use durationVars + easeVars instead */
|
|
281
|
-
export const transitionDefaults = {
|
|
282
|
-
'--transition-fast': '0.15s ease',
|
|
283
|
-
'--transition-normal': '0.2s ease',
|
|
284
|
-
} as const;
|
|
285
|
-
|
|
286
|
-
/** @deprecated Use durationVars + easeVars instead */
|
|
287
|
-
export const transitionRaw = transitionDefaults;
|
|
288
|
-
|
|
289
|
-
/** @deprecated Use durationVars + easeVars instead */
|
|
290
|
-
export const transitionVars = stylex.defineVars(transitionDefaults);
|
|
291
|
-
|
|
292
275
|
// =============================================================================
|
|
293
276
|
// Typography Tokens - Font Families
|
|
294
277
|
// =============================================================================
|
|
@@ -347,8 +330,6 @@ export type SpacingVarName = keyof typeof spacingDefaults;
|
|
|
347
330
|
export type SizeVarName = keyof typeof sizeDefaults;
|
|
348
331
|
export type RadiusVarName = keyof typeof radiusDefaults;
|
|
349
332
|
export type ShadowVarName = keyof typeof shadowDefaults;
|
|
350
|
-
/** @deprecated Use DurationVarName | EaseVarName instead */
|
|
351
|
-
export type TransitionVarName = keyof typeof transitionDefaults;
|
|
352
333
|
export type TypographyVarName = keyof typeof typographyDefaults;
|
|
353
334
|
export type TextSizeVarName = keyof typeof textSizeDefaults;
|
|
354
335
|
export type FontWeightVarName = keyof typeof fontWeightDefaults;
|
package/src/theme/types.ts
CHANGED
|
@@ -15,11 +15,7 @@
|
|
|
15
15
|
* Raw CSS values (e.g. '800') are accepted as an escape hatch.
|
|
16
16
|
*/
|
|
17
17
|
export type FontWeight =
|
|
18
|
-
| '
|
|
19
|
-
| 'medium'
|
|
20
|
-
| 'semibold'
|
|
21
|
-
| 'bold'
|
|
22
|
-
| (string & {});
|
|
18
|
+
'normal' | 'medium' | 'semibold' | 'bold' | (string & {});
|
|
23
19
|
|
|
24
20
|
/**
|
|
25
21
|
* A typography role declaration (body, heading, or code).
|
|
@@ -152,18 +148,23 @@ export type TextSize =
|
|
|
152
148
|
/**
|
|
153
149
|
* Font weight variants for Text/Heading
|
|
154
150
|
*/
|
|
151
|
+
import type {TextColorMap} from '../Text';
|
|
152
|
+
|
|
155
153
|
export type TextWeight = 'normal' | 'medium' | 'semibold' | 'bold';
|
|
156
154
|
|
|
157
155
|
/**
|
|
158
|
-
*
|
|
156
|
+
* Built-in text color variants for Text/Heading. The concrete keys that ship
|
|
157
|
+
* with the design system, independent of theme augmentation — used where a
|
|
158
|
+
* value must be one of the real StyleX color styles (see `resolveStyleColor`).
|
|
159
159
|
*/
|
|
160
|
-
export type
|
|
161
|
-
| '
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
160
|
+
export type BuiltinTextColor =
|
|
161
|
+
'primary' | 'secondary' | 'disabled' | 'placeholder' | 'accent' | 'inherit';
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Text color variants for Text/Heading. Extensible via module augmentation of
|
|
165
|
+
* `TextColorMap`.
|
|
166
|
+
*/
|
|
167
|
+
export type TextColor = keyof TextColorMap;
|
|
167
168
|
|
|
168
169
|
/**
|
|
169
170
|
* Display mode for Text/Heading
|
|
@@ -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
|
});
|