@astryxdesign/core 0.2.0 → 0.3.0-canary.5f9896c
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 +56 -22
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +169 -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/Stack/stack.stylex.d.ts +3 -3
- 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 +115 -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 +32 -3
- package/dist/theme/expandColorScale.d.ts.map +1 -1
- package/dist/theme/expandColorScale.js +102 -13
- 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 +9 -13
- 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 +24 -3
- package/src/ProgressBar/ProgressBar.test.tsx +523 -2
- package/src/ProgressBar/ProgressBar.tsx +250 -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 +15 -6
- 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 +401 -1
- package/src/theme/expandColorScale.ts +143 -19
- 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
|
@@ -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: 'PowerSearch',
|
|
@@ -172,7 +172,7 @@ export const docs = {
|
|
|
172
172
|
// See .context/decisions/dense-compression-protocol.md
|
|
173
173
|
// -------------------------------------------------------
|
|
174
174
|
|
|
175
|
-
/** @type {import('
|
|
175
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
|
|
176
176
|
export const docsZh = {
|
|
177
177
|
name: 'PowerSearch',
|
|
178
178
|
displayName: 'Power Search',
|
|
@@ -319,7 +319,7 @@ export const docsZh = {
|
|
|
319
319
|
},
|
|
320
320
|
};
|
|
321
321
|
|
|
322
|
-
/** @type {import('
|
|
322
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
|
|
323
323
|
export const docsDense = {
|
|
324
324
|
description:
|
|
325
325
|
'Structured filter bar where each token represents filter (field+operator+value). Users select fields from typeahead dropdown, configure operators+values in edit popover, manage filters as removable tokens.',
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*
|
|
12
12
|
* SYNC: When modified, update:
|
|
13
13
|
* - /packages/core/src/PowerSearch/index.ts
|
|
14
|
-
* - /packages/cli/templates/blocks/components/PowerSearch/ (showcase blocks)
|
|
14
|
+
* - /packages/cli/assets/templates/blocks/components/PowerSearch/ (showcase blocks)
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import React, {
|
|
@@ -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: 'ProgressBar',
|
|
@@ -56,6 +56,12 @@ export const docs = {
|
|
|
56
56
|
description: 'Animated loading indicator for unknown progress.',
|
|
57
57
|
default: 'false',
|
|
58
58
|
},
|
|
59
|
+
{
|
|
60
|
+
name: 'marks',
|
|
61
|
+
type: 'ReadonlyArray<{value: number; label: string}>',
|
|
62
|
+
description:
|
|
63
|
+
'Fixed target marks drawn on the track at values in the same 0..max scale as value (e.g. a goal line). They stay visible whether progress is below or past them, and take their color from what they sit on: a mark inside the filled area uses the fill variant\'s on-color (on-accent, on-warning, on-error, …), a mark still out on the bare track uses the primary text color (the secondary one on a disabled bar, which dims everything it draws). Each mark requires a label — it is the mark\'s accessible name and the text revealed via a tooltip on hover/focus. Ignored when indeterminate.',
|
|
64
|
+
},
|
|
59
65
|
{
|
|
60
66
|
name: 'isDisabled',
|
|
61
67
|
type: 'boolean',
|
|
@@ -74,6 +80,10 @@ export const docs = {
|
|
|
74
80
|
{className: 'astryx-progressbar', visualProps: ['variant']},
|
|
75
81
|
{className: 'astryx-progressbar-fill', visualProps: ['variant']},
|
|
76
82
|
{className: 'astryx-progressbar-track'},
|
|
83
|
+
{
|
|
84
|
+
className: 'astryx-progressbar-mark',
|
|
85
|
+
visualProps: ['variant', 'placement'],
|
|
86
|
+
},
|
|
77
87
|
],
|
|
78
88
|
},
|
|
79
89
|
usage: {
|
|
@@ -90,7 +100,7 @@ export const docs = {
|
|
|
90
100
|
},
|
|
91
101
|
};
|
|
92
102
|
|
|
93
|
-
/** @type {import('
|
|
103
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
|
|
94
104
|
export const docsZh = {
|
|
95
105
|
name: 'ProgressBar',
|
|
96
106
|
displayName: 'Progress Bar',
|
|
@@ -143,6 +153,12 @@ export const docsZh = {
|
|
|
143
153
|
description: '用于未知进度的动画加载指示器。',
|
|
144
154
|
default: 'false',
|
|
145
155
|
},
|
|
156
|
+
{
|
|
157
|
+
name: 'marks',
|
|
158
|
+
type: 'ReadonlyArray<{value: number; label: string}>',
|
|
159
|
+
description:
|
|
160
|
+
'在轨道上按与 value 相同的 0..max 刻度绘制的固定目标标记(例如目标线)。无论进度低于还是超过它们都保持可见,并根据所处位置取色:位于已填充区域内的标记使用与填充变体配对的前景色(on-accent、on-warning、on-error 等),仍位于空轨道上的标记使用主文本颜色(禁用状态下会降为次要文本颜色,与其整体弱化的呈现保持一致)。每个标记都必须提供 label——它既是标记的无障碍名称,也是悬停/聚焦时通过工具提示显示的文本。不确定模式下忽略。',
|
|
161
|
+
},
|
|
146
162
|
{
|
|
147
163
|
name: 'isDisabled',
|
|
148
164
|
type: 'boolean',
|
|
@@ -161,6 +177,10 @@ export const docsZh = {
|
|
|
161
177
|
{className: 'astryx-progressbar', visualProps: ['variant']},
|
|
162
178
|
{className: 'astryx-progressbar-fill', visualProps: ['variant']},
|
|
163
179
|
{className: 'astryx-progressbar-track'},
|
|
180
|
+
{
|
|
181
|
+
className: 'astryx-progressbar-mark',
|
|
182
|
+
visualProps: ['variant', 'placement'],
|
|
183
|
+
},
|
|
164
184
|
],
|
|
165
185
|
},
|
|
166
186
|
usage: {
|
|
@@ -177,7 +197,7 @@ export const docsZh = {
|
|
|
177
197
|
},
|
|
178
198
|
};
|
|
179
199
|
|
|
180
|
-
/** @type {import('
|
|
200
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
|
|
181
201
|
export const docsDense = {
|
|
182
202
|
description:
|
|
183
203
|
'Progress bar for displaying determinate or indeterminate progress.',
|
|
@@ -202,6 +222,7 @@ export const docsDense = {
|
|
|
202
222
|
formatValueLabel: 'Custom value label formatter; defaults to percentage string.',
|
|
203
223
|
variant: 'Semantic color variant.',
|
|
204
224
|
isIndeterminate: 'Animated loading indicator for unknown progress.',
|
|
225
|
+
marks: 'Fixed target marks ({value, label?}) drawn on the track in the 0..max scale; stay visible past the fill. Marks inside the fill take the variant on-color; marks on the bare track take the primary text color (secondary when disabled). A label reveals a tooltip on hover/focus. Ignored when indeterminate.',
|
|
205
226
|
isDisabled: 'Visually disabled: grays out fill and text.',
|
|
206
227
|
xstyle: 'StyleX styles for layout customization. Must be stylex.create() value.',
|
|
207
228
|
},
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
|
-
import {describe, it, expect} from 'vitest';
|
|
4
|
-
import {render, screen} from '@testing-library/react';
|
|
3
|
+
import {describe, it, expect, beforeAll} from 'vitest';
|
|
4
|
+
import {render, screen, waitFor} from '@testing-library/react';
|
|
5
5
|
import {ProgressBar} from './ProgressBar';
|
|
6
6
|
|
|
7
|
+
// A labeled mark wraps the tick in a lazily-loaded Tooltip (React.lazy +
|
|
8
|
+
// Suspense). Preload that chunk once so the Tooltip (and its
|
|
9
|
+
// aria-describedby) is present synchronously on first render, keeping these
|
|
10
|
+
// tests deterministic rather than racing the dynamic import's default 1s
|
|
11
|
+
// Suspense timeout.
|
|
12
|
+
beforeAll(async () => {
|
|
13
|
+
await import('./ProgressBarMarkTooltip');
|
|
14
|
+
});
|
|
15
|
+
|
|
7
16
|
describe('ProgressBar', () => {
|
|
8
17
|
it('renders with default props', () => {
|
|
9
18
|
render(<ProgressBar value={50} label="Progress" />);
|
|
@@ -277,4 +286,516 @@ describe('ProgressBar', () => {
|
|
|
277
286
|
expect(css).toMatch(/:is\(\[dir="rtl"\][^)]*\)[^{]*\{\s*animation-name:/);
|
|
278
287
|
});
|
|
279
288
|
});
|
|
289
|
+
|
|
290
|
+
// Target marks
|
|
291
|
+
describe('target marks', () => {
|
|
292
|
+
const MARK = '.astryx-progressbar-mark';
|
|
293
|
+
|
|
294
|
+
// The StyleX atomic classes on an element, without the stable astryx-*
|
|
295
|
+
// theme classes and the bare variant/placement tokens — so a comparison
|
|
296
|
+
// reflects the resolved styles, not the reflected props.
|
|
297
|
+
function styleClasses(el: HTMLElement): string {
|
|
298
|
+
return Array.from(el.classList)
|
|
299
|
+
.filter(c => /^x[a-z0-9]+$/.test(c))
|
|
300
|
+
.sort()
|
|
301
|
+
.join(' ');
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
it('renders no mark elements when marks is omitted', () => {
|
|
305
|
+
const {container} = render(<ProgressBar value={50} label="Progress" />);
|
|
306
|
+
expect(container.querySelectorAll(MARK)).toHaveLength(0);
|
|
307
|
+
});
|
|
308
|
+
|
|
309
|
+
it('renders no mark elements for an empty marks array', () => {
|
|
310
|
+
const {container} = render(
|
|
311
|
+
<ProgressBar value={50} label="Progress" marks={[]} />,
|
|
312
|
+
);
|
|
313
|
+
expect(container.querySelectorAll(MARK)).toHaveLength(0);
|
|
314
|
+
});
|
|
315
|
+
|
|
316
|
+
it('renders a mark at the position matching its value', () => {
|
|
317
|
+
const {container} = render(
|
|
318
|
+
<ProgressBar
|
|
319
|
+
value={40}
|
|
320
|
+
label="Progress"
|
|
321
|
+
marks={[{value: 80, label: 'M'}]}
|
|
322
|
+
/>,
|
|
323
|
+
);
|
|
324
|
+
const marks = container.querySelectorAll<HTMLElement>(MARK);
|
|
325
|
+
expect(marks).toHaveLength(1);
|
|
326
|
+
// value 80 of max 100 -> 80% along the track (RTL-safe logical property).
|
|
327
|
+
expect(marks[0].style.insetInlineStart).toBe('80%');
|
|
328
|
+
});
|
|
329
|
+
|
|
330
|
+
it('positions marks relative to a custom max', () => {
|
|
331
|
+
const {container} = render(
|
|
332
|
+
<ProgressBar
|
|
333
|
+
value={1}
|
|
334
|
+
max={5}
|
|
335
|
+
label="Steps"
|
|
336
|
+
marks={[{value: 4, label: 'M'}]}
|
|
337
|
+
/>,
|
|
338
|
+
);
|
|
339
|
+
const marks = container.querySelectorAll<HTMLElement>(MARK);
|
|
340
|
+
// value 4 of max 5 -> 80%.
|
|
341
|
+
expect(marks[0].style.insetInlineStart).toBe('80%');
|
|
342
|
+
});
|
|
343
|
+
|
|
344
|
+
it('keeps a mark past the current value visible', () => {
|
|
345
|
+
// A mark beyond the fill still renders — it layers above the fill.
|
|
346
|
+
const {container} = render(
|
|
347
|
+
<ProgressBar
|
|
348
|
+
value={20}
|
|
349
|
+
label="Progress"
|
|
350
|
+
marks={[{value: 90, label: 'M'}]}
|
|
351
|
+
/>,
|
|
352
|
+
);
|
|
353
|
+
const marks = container.querySelectorAll<HTMLElement>(MARK);
|
|
354
|
+
expect(marks).toHaveLength(1);
|
|
355
|
+
expect(marks[0].style.insetInlineStart).toBe('90%');
|
|
356
|
+
});
|
|
357
|
+
|
|
358
|
+
it('renders multiple marks', () => {
|
|
359
|
+
const {container} = render(
|
|
360
|
+
<ProgressBar
|
|
361
|
+
value={50}
|
|
362
|
+
label="Progress"
|
|
363
|
+
marks={[
|
|
364
|
+
{value: 25, label: 'M'},
|
|
365
|
+
{value: 50, label: 'M'},
|
|
366
|
+
{value: 80, label: 'M'},
|
|
367
|
+
]}
|
|
368
|
+
/>,
|
|
369
|
+
);
|
|
370
|
+
expect(container.querySelectorAll(MARK)).toHaveLength(3);
|
|
371
|
+
});
|
|
372
|
+
|
|
373
|
+
it('clamps out-of-range mark positions to the track edges', () => {
|
|
374
|
+
const {container} = render(
|
|
375
|
+
<ProgressBar
|
|
376
|
+
value={50}
|
|
377
|
+
label="Progress"
|
|
378
|
+
marks={[
|
|
379
|
+
{value: -10, label: 'M'},
|
|
380
|
+
{value: 150, label: 'M'},
|
|
381
|
+
]}
|
|
382
|
+
/>,
|
|
383
|
+
);
|
|
384
|
+
const marks = container.querySelectorAll<HTMLElement>(MARK);
|
|
385
|
+
expect(marks).toHaveLength(2);
|
|
386
|
+
expect(marks[0].style.insetInlineStart).toBe('0%');
|
|
387
|
+
expect(marks[1].style.insetInlineStart).toBe('100%');
|
|
388
|
+
});
|
|
389
|
+
|
|
390
|
+
it('drops non-finite mark values', () => {
|
|
391
|
+
const {container} = render(
|
|
392
|
+
<ProgressBar
|
|
393
|
+
value={50}
|
|
394
|
+
label="Progress"
|
|
395
|
+
marks={[
|
|
396
|
+
{value: NaN, label: 'M'},
|
|
397
|
+
{value: Infinity, label: 'M'},
|
|
398
|
+
{value: 60, label: 'M'},
|
|
399
|
+
]}
|
|
400
|
+
/>,
|
|
401
|
+
);
|
|
402
|
+
const marks = container.querySelectorAll<HTMLElement>(MARK);
|
|
403
|
+
expect(marks).toHaveLength(1);
|
|
404
|
+
expect(marks[0].style.insetInlineStart).toBe('60%');
|
|
405
|
+
});
|
|
406
|
+
|
|
407
|
+
it('does not render marks in indeterminate mode', () => {
|
|
408
|
+
const {container} = render(
|
|
409
|
+
<ProgressBar
|
|
410
|
+
isIndeterminate
|
|
411
|
+
label="Loading"
|
|
412
|
+
marks={[{value: 80, label: 'M'}]}
|
|
413
|
+
/>,
|
|
414
|
+
);
|
|
415
|
+
expect(container.querySelectorAll(MARK)).toHaveLength(0);
|
|
416
|
+
});
|
|
417
|
+
|
|
418
|
+
// Mark color follows what the mark sits on: inside the filled area it
|
|
419
|
+
// takes the fill variant's on-color, out on the bare track it takes the
|
|
420
|
+
// primary text color. The choice is reflected as `data-placement`
|
|
421
|
+
// (plus `data-variant`, mirroring the fill) so themes can target it and
|
|
422
|
+
// tests can assert it without reading atomic class names.
|
|
423
|
+
it('marks the ticks inside the filled area as placed on the fill', () => {
|
|
424
|
+
const {container} = render(
|
|
425
|
+
<ProgressBar
|
|
426
|
+
value={60}
|
|
427
|
+
label="Progress"
|
|
428
|
+
marks={[
|
|
429
|
+
{value: 25, label: 'Behind'},
|
|
430
|
+
{value: 90, label: 'Ahead'},
|
|
431
|
+
]}
|
|
432
|
+
/>,
|
|
433
|
+
);
|
|
434
|
+
const marks = container.querySelectorAll<HTMLElement>(MARK);
|
|
435
|
+
expect(marks[0]).toHaveAttribute('data-placement', 'fill');
|
|
436
|
+
expect(marks[1]).toHaveAttribute('data-placement', 'track');
|
|
437
|
+
// Different placements resolve to different color styles.
|
|
438
|
+
expect(styleClasses(marks[0])).not.toBe(styleClasses(marks[1]));
|
|
439
|
+
});
|
|
440
|
+
|
|
441
|
+
it('treats a mark exactly at the current value as on the fill', () => {
|
|
442
|
+
const {container} = render(
|
|
443
|
+
<ProgressBar
|
|
444
|
+
value={70}
|
|
445
|
+
label="Progress"
|
|
446
|
+
marks={[{value: 70, label: 'Goal'}]}
|
|
447
|
+
/>,
|
|
448
|
+
);
|
|
449
|
+
expect(container.querySelector(MARK)).toHaveAttribute(
|
|
450
|
+
'data-placement',
|
|
451
|
+
'fill',
|
|
452
|
+
);
|
|
453
|
+
});
|
|
454
|
+
|
|
455
|
+
it('places every mark on the track at zero progress', () => {
|
|
456
|
+
// With no fill drawn, even a mark at 0 sits on the bare track.
|
|
457
|
+
const {container} = render(
|
|
458
|
+
<ProgressBar
|
|
459
|
+
value={0}
|
|
460
|
+
label="Progress"
|
|
461
|
+
marks={[
|
|
462
|
+
{value: 0, label: 'Start'},
|
|
463
|
+
{value: 50, label: 'Goal'},
|
|
464
|
+
]}
|
|
465
|
+
/>,
|
|
466
|
+
);
|
|
467
|
+
const marks = container.querySelectorAll<HTMLElement>(MARK);
|
|
468
|
+
expect(marks[0]).toHaveAttribute('data-placement', 'track');
|
|
469
|
+
expect(marks[1]).toHaveAttribute('data-placement', 'track');
|
|
470
|
+
expect(styleClasses(marks[0])).toBe(styleClasses(marks[1]));
|
|
471
|
+
});
|
|
472
|
+
|
|
473
|
+
it('mirrors the fill variant on marks so the on-color matches the bar', () => {
|
|
474
|
+
const {container} = render(
|
|
475
|
+
<ProgressBar
|
|
476
|
+
value={80}
|
|
477
|
+
variant="warning"
|
|
478
|
+
label="Budget used"
|
|
479
|
+
marks={[
|
|
480
|
+
{value: 50, label: 'Half'},
|
|
481
|
+
{value: 95, label: 'Cap'},
|
|
482
|
+
]}
|
|
483
|
+
/>,
|
|
484
|
+
);
|
|
485
|
+
const marks = container.querySelectorAll<HTMLElement>(MARK);
|
|
486
|
+
expect(marks[0]).toHaveAttribute('data-variant', 'warning');
|
|
487
|
+
expect(marks[0]).toHaveAttribute('data-placement', 'fill');
|
|
488
|
+
expect(marks[1]).toHaveAttribute('data-variant', 'warning');
|
|
489
|
+
expect(marks[1]).toHaveAttribute('data-placement', 'track');
|
|
490
|
+
});
|
|
491
|
+
|
|
492
|
+
it('uses the disabled variant for marks when the bar is disabled', () => {
|
|
493
|
+
const {container} = render(
|
|
494
|
+
<ProgressBar
|
|
495
|
+
value={80}
|
|
496
|
+
variant="error"
|
|
497
|
+
isDisabled
|
|
498
|
+
label="Canceled"
|
|
499
|
+
marks={[{value: 50, label: 'Half'}]}
|
|
500
|
+
/>,
|
|
501
|
+
);
|
|
502
|
+
expect(container.querySelector(MARK)).toHaveAttribute(
|
|
503
|
+
'data-variant',
|
|
504
|
+
'disabled',
|
|
505
|
+
);
|
|
506
|
+
});
|
|
507
|
+
|
|
508
|
+
it('keeps one plain foreground on both sides for neutral and disabled bars', () => {
|
|
509
|
+
// The neutral/disabled fill is the muted gray — it carries no semantic
|
|
510
|
+
// weight and has no on-token, so a mark on it takes the same plain
|
|
511
|
+
// foreground it would have out on the track.
|
|
512
|
+
for (const props of [
|
|
513
|
+
{variant: 'neutral'} as const,
|
|
514
|
+
{isDisabled: true} as const,
|
|
515
|
+
]) {
|
|
516
|
+
const {container, unmount} = render(
|
|
517
|
+
<ProgressBar
|
|
518
|
+
value={60}
|
|
519
|
+
label="Progress"
|
|
520
|
+
{...props}
|
|
521
|
+
marks={[
|
|
522
|
+
{value: 20, label: 'On fill'},
|
|
523
|
+
{value: 90, label: 'On track'},
|
|
524
|
+
]}
|
|
525
|
+
/>,
|
|
526
|
+
);
|
|
527
|
+
const marks = container.querySelectorAll<HTMLElement>(MARK);
|
|
528
|
+
expect(marks[0]).toHaveAttribute('data-placement', 'fill');
|
|
529
|
+
expect(marks[1]).toHaveAttribute('data-placement', 'track');
|
|
530
|
+
expect(styleClasses(marks[0])).toBe(styleClasses(marks[1]));
|
|
531
|
+
unmount();
|
|
532
|
+
}
|
|
533
|
+
});
|
|
534
|
+
|
|
535
|
+
it("dims a disabled bar's marks below a live one's", () => {
|
|
536
|
+
// A disabled bar is deliberately low-emphasis (its label and value text
|
|
537
|
+
// drop to muted colors), so its marks step down to the secondary
|
|
538
|
+
// foreground on both sides rather than shouting over the grayed-out
|
|
539
|
+
// bar. A live neutral bar — same muted gray fill — keeps the
|
|
540
|
+
// full-contrast primary foreground.
|
|
541
|
+
const MARKS = [
|
|
542
|
+
{value: 20, label: 'On fill'},
|
|
543
|
+
{value: 90, label: 'On track'},
|
|
544
|
+
];
|
|
545
|
+
const {container: live} = render(
|
|
546
|
+
<ProgressBar value={60} variant="neutral" label="A" marks={MARKS} />,
|
|
547
|
+
);
|
|
548
|
+
const {container: off} = render(
|
|
549
|
+
<ProgressBar value={60} isDisabled label="B" marks={MARKS} />,
|
|
550
|
+
);
|
|
551
|
+
const liveMarks = live.querySelectorAll<HTMLElement>(MARK);
|
|
552
|
+
const offMarks = off.querySelectorAll<HTMLElement>(MARK);
|
|
553
|
+
expect(styleClasses(offMarks[0])).not.toBe(styleClasses(liveMarks[0]));
|
|
554
|
+
expect(styleClasses(offMarks[1])).not.toBe(styleClasses(liveMarks[1]));
|
|
555
|
+
});
|
|
556
|
+
|
|
557
|
+
it('recolors marks per variant when they sit on the fill', () => {
|
|
558
|
+
// Two bars at the same progress with different variants give their
|
|
559
|
+
// on-fill marks different colors (different atomic classes), while
|
|
560
|
+
// their on-track marks stay the same divider color.
|
|
561
|
+
const {container: accent} = render(
|
|
562
|
+
<ProgressBar
|
|
563
|
+
value={60}
|
|
564
|
+
variant="accent"
|
|
565
|
+
label="A"
|
|
566
|
+
marks={[
|
|
567
|
+
{value: 20, label: 'On fill'},
|
|
568
|
+
{value: 90, label: 'On track'},
|
|
569
|
+
]}
|
|
570
|
+
/>,
|
|
571
|
+
);
|
|
572
|
+
const {container: error} = render(
|
|
573
|
+
<ProgressBar
|
|
574
|
+
value={60}
|
|
575
|
+
variant="error"
|
|
576
|
+
label="B"
|
|
577
|
+
marks={[
|
|
578
|
+
{value: 20, label: 'On fill'},
|
|
579
|
+
{value: 90, label: 'On track'},
|
|
580
|
+
]}
|
|
581
|
+
/>,
|
|
582
|
+
);
|
|
583
|
+
const accentMarks = accent.querySelectorAll<HTMLElement>(MARK);
|
|
584
|
+
const errorMarks = error.querySelectorAll<HTMLElement>(MARK);
|
|
585
|
+
expect(styleClasses(accentMarks[0])).not.toBe(
|
|
586
|
+
styleClasses(errorMarks[0]),
|
|
587
|
+
);
|
|
588
|
+
expect(styleClasses(accentMarks[1])).toBe(styleClasses(errorMarks[1]));
|
|
589
|
+
});
|
|
590
|
+
|
|
591
|
+
it('renders every mark as a focusable trigger (label is required, never decorative)', () => {
|
|
592
|
+
const {container} = render(
|
|
593
|
+
<ProgressBar
|
|
594
|
+
value={50}
|
|
595
|
+
label="Progress"
|
|
596
|
+
marks={[{value: 80, label: 'Goal'}]}
|
|
597
|
+
/>,
|
|
598
|
+
);
|
|
599
|
+
const mark = container.querySelector<HTMLElement>(MARK)!;
|
|
600
|
+
// A mark always stands for something meaningful, so it is never
|
|
601
|
+
// aria-hidden and is always keyboard-focusable to reveal its label.
|
|
602
|
+
expect(mark).not.toHaveAttribute('aria-hidden');
|
|
603
|
+
expect(mark).toHaveAttribute('tabindex', '0');
|
|
604
|
+
// The name comes from the Tooltip (aria-describedby), not a role/label on
|
|
605
|
+
// the tick itself, so the progressbar's own subtree stays clean.
|
|
606
|
+
expect(mark).not.toHaveAttribute('role');
|
|
607
|
+
expect(mark).not.toHaveAttribute('aria-label');
|
|
608
|
+
});
|
|
609
|
+
|
|
610
|
+
it('reveals a labeled mark via a focusable Tooltip trigger', async () => {
|
|
611
|
+
const {container} = render(
|
|
612
|
+
<ProgressBar
|
|
613
|
+
value={50}
|
|
614
|
+
label="Progress"
|
|
615
|
+
marks={[{value: 80, label: 'Goal'}]}
|
|
616
|
+
/>,
|
|
617
|
+
);
|
|
618
|
+
// Focusable so keyboard users can reveal the label; named via the
|
|
619
|
+
// Tooltip's aria-describedby rather than a labeled child of the bar.
|
|
620
|
+
// The Tooltip loads lazily (Suspense), so re-query the live element and
|
|
621
|
+
// wait for it to attach aria-describedby.
|
|
622
|
+
const mark0 = container.querySelector<HTMLElement>(MARK)!;
|
|
623
|
+
expect(mark0).toHaveAttribute('tabindex', '0');
|
|
624
|
+
expect(mark0).not.toHaveAttribute('aria-hidden');
|
|
625
|
+
await waitFor(() =>
|
|
626
|
+
expect(container.querySelector(MARK)).toHaveAttribute(
|
|
627
|
+
'aria-describedby',
|
|
628
|
+
),
|
|
629
|
+
);
|
|
630
|
+
const mark = container.querySelector<HTMLElement>(MARK)!;
|
|
631
|
+
const tip = document.getElementById(
|
|
632
|
+
mark.getAttribute('aria-describedby')!,
|
|
633
|
+
);
|
|
634
|
+
expect(tip).toHaveTextContent('Goal');
|
|
635
|
+
});
|
|
636
|
+
|
|
637
|
+
it('keeps the progressbar element free of role="img"/aria-label children', () => {
|
|
638
|
+
// Marks are children of role="progressbar" (unchanged DOM), but a
|
|
639
|
+
// mark uses a Tooltip (aria-describedby) rather than a
|
|
640
|
+
// role="img"+aria-label child, so nothing muddies what SRs announce for
|
|
641
|
+
// the bar.
|
|
642
|
+
const {container} = render(
|
|
643
|
+
<ProgressBar
|
|
644
|
+
value={50}
|
|
645
|
+
label="Progress"
|
|
646
|
+
marks={[{value: 80, label: 'Goal'}]}
|
|
647
|
+
/>,
|
|
648
|
+
);
|
|
649
|
+
const progressbar = screen.getByRole('progressbar');
|
|
650
|
+
// Mark is a child of the progressbar (DOM unchanged from main).
|
|
651
|
+
expect(progressbar.querySelector(MARK)).not.toBeNull();
|
|
652
|
+
// But it is not a labeled graphic that pollutes the a11y subtree.
|
|
653
|
+
expect(progressbar.querySelector('[role="img"]')).toBeNull();
|
|
654
|
+
expect(progressbar.querySelector('[aria-label]')).toBeNull();
|
|
655
|
+
expect(container.querySelectorAll(MARK)).toHaveLength(1);
|
|
656
|
+
});
|
|
657
|
+
|
|
658
|
+
it('does not add mark info to the progressbar aria-valuetext', () => {
|
|
659
|
+
render(
|
|
660
|
+
<ProgressBar
|
|
661
|
+
value={50}
|
|
662
|
+
label="Progress"
|
|
663
|
+
marks={[{value: 80, label: 'Goal'}]}
|
|
664
|
+
/>,
|
|
665
|
+
);
|
|
666
|
+
const progressbar = screen.getByRole('progressbar');
|
|
667
|
+
expect(progressbar.getAttribute('aria-valuetext')).toBe('50%');
|
|
668
|
+
});
|
|
669
|
+
|
|
670
|
+
it('renders marks as children of the progressbar (unchanged DOM)', () => {
|
|
671
|
+
// Marks stay children of role="progressbar", after the fill — the same
|
|
672
|
+
// shape as main. The fill remains the first child.
|
|
673
|
+
const {container} = render(
|
|
674
|
+
<ProgressBar
|
|
675
|
+
value={50}
|
|
676
|
+
label="Progress"
|
|
677
|
+
marks={[{value: 80, label: 'M'}]}
|
|
678
|
+
/>,
|
|
679
|
+
);
|
|
680
|
+
const progressbar = screen.getByRole('progressbar');
|
|
681
|
+
const fill = progressbar.firstElementChild as HTMLElement;
|
|
682
|
+
expect(fill.style.width).toBe('50%');
|
|
683
|
+
expect(fill.classList.contains('astryx-progressbar-mark')).toBe(false);
|
|
684
|
+
const mark = container.querySelector<HTMLElement>(MARK)!;
|
|
685
|
+
expect(mark.closest('[role="progressbar"]')).toBe(progressbar);
|
|
686
|
+
expect(container.querySelectorAll(MARK)).toHaveLength(1);
|
|
687
|
+
});
|
|
688
|
+
|
|
689
|
+
it('does not clip marks in determinate mode (track carries no overflow:hidden)', () => {
|
|
690
|
+
// In determinate mode the track must NOT clip, so a themed taller mark
|
|
691
|
+
// can overhang the bar. (Indeterminate mode re-adds the clip — covered
|
|
692
|
+
// separately — but marks are suppressed there, so nothing overhangs.)
|
|
693
|
+
render(
|
|
694
|
+
<ProgressBar
|
|
695
|
+
value={50}
|
|
696
|
+
label="Progress"
|
|
697
|
+
marks={[{value: 80, label: 'M'}]}
|
|
698
|
+
/>,
|
|
699
|
+
);
|
|
700
|
+
const progressbar = screen.getByRole('progressbar');
|
|
701
|
+
const trackClass = Array.from(progressbar.classList).find(c =>
|
|
702
|
+
c.startsWith('x'),
|
|
703
|
+
);
|
|
704
|
+
let css = '';
|
|
705
|
+
for (const sheet of Array.from(document.styleSheets)) {
|
|
706
|
+
try {
|
|
707
|
+
for (const rule of Array.from(sheet.cssRules)) {
|
|
708
|
+
css += rule.cssText + '\n';
|
|
709
|
+
}
|
|
710
|
+
} catch {
|
|
711
|
+
// ignore cross-origin sheets
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
css += Array.from(document.querySelectorAll('style'))
|
|
715
|
+
.map(s => s.textContent || '')
|
|
716
|
+
.join('\n');
|
|
717
|
+
// The atomic class that would set overflow:hidden must not be applied to
|
|
718
|
+
// the track. Sanity-check the bar still rendered with a StyleX class.
|
|
719
|
+
expect(trackClass).toBeDefined();
|
|
720
|
+
// No rule targeting the track's classes sets overflow:hidden. (StyleX
|
|
721
|
+
// atomic classes are unique per declaration; if overflow:hidden were on
|
|
722
|
+
// the track we'd see it applied. We assert the track element's computed
|
|
723
|
+
// intent by checking no overflow:hidden atomic is in its class list's
|
|
724
|
+
// rules — simplest robust check: the track style object omits it.)
|
|
725
|
+
const trackHasOverflowHidden = Array.from(progressbar.classList).some(
|
|
726
|
+
cls => {
|
|
727
|
+
const re = new RegExp(
|
|
728
|
+
`\\.${cls}\\b[^{]*\\{[^}]*overflow:\\s*hidden`,
|
|
729
|
+
'i',
|
|
730
|
+
);
|
|
731
|
+
return re.test(css);
|
|
732
|
+
},
|
|
733
|
+
);
|
|
734
|
+
expect(trackHasOverflowHidden).toBe(false);
|
|
735
|
+
});
|
|
736
|
+
|
|
737
|
+
it('clips the track in indeterminate mode (the sliding fill must not escape)', () => {
|
|
738
|
+
// Regression: the indeterminate fill slides from translateX -100% to
|
|
739
|
+
// 250%, deliberately overshooting the track, and relies on the track
|
|
740
|
+
// clipping it to the visible window. Determinate mode drops the clip so
|
|
741
|
+
// marks can overhang — indeterminate mode must keep it.
|
|
742
|
+
render(<ProgressBar isIndeterminate label="Loading" />);
|
|
743
|
+
const progressbar = screen.getByRole('progressbar');
|
|
744
|
+
let css = '';
|
|
745
|
+
for (const sheet of Array.from(document.styleSheets)) {
|
|
746
|
+
try {
|
|
747
|
+
for (const rule of Array.from(sheet.cssRules)) {
|
|
748
|
+
css += rule.cssText + '\n';
|
|
749
|
+
}
|
|
750
|
+
} catch {
|
|
751
|
+
// ignore cross-origin sheets
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
css += Array.from(document.querySelectorAll('style'))
|
|
755
|
+
.map(s => s.textContent || '')
|
|
756
|
+
.join('\n');
|
|
757
|
+
const trackHasOverflowHidden = Array.from(progressbar.classList).some(
|
|
758
|
+
cls => {
|
|
759
|
+
const re = new RegExp(
|
|
760
|
+
`\\.${cls}\\b[^{]*\\{[^}]*overflow:\\s*hidden`,
|
|
761
|
+
'i',
|
|
762
|
+
);
|
|
763
|
+
return re.test(css);
|
|
764
|
+
},
|
|
765
|
+
);
|
|
766
|
+
expect(trackHasOverflowHidden).toBe(true);
|
|
767
|
+
});
|
|
768
|
+
|
|
769
|
+
it('renders the mark on the stable progressbar-mark target, centered for symmetric overhang', () => {
|
|
770
|
+
// The mark's width/height/color are directly overridable via the
|
|
771
|
+
// `progressbar-mark` theme target (no dedicated CSS vars). It is centered
|
|
772
|
+
// on the track (translate -50%,-50%) so a themed taller tick overhangs the
|
|
773
|
+
// bar symmetrically above and below without being clipped.
|
|
774
|
+
const {container} = render(
|
|
775
|
+
<ProgressBar
|
|
776
|
+
value={50}
|
|
777
|
+
label="Progress"
|
|
778
|
+
marks={[{value: 80, label: 'M'}]}
|
|
779
|
+
/>,
|
|
780
|
+
);
|
|
781
|
+
const mark = container.querySelector<HTMLElement>(MARK)!;
|
|
782
|
+
expect(mark.className).toContain('astryx-progressbar-mark');
|
|
783
|
+
let css = '';
|
|
784
|
+
for (const sheet of Array.from(document.styleSheets)) {
|
|
785
|
+
try {
|
|
786
|
+
for (const rule of Array.from(sheet.cssRules)) {
|
|
787
|
+
css += rule.cssText + '\n';
|
|
788
|
+
}
|
|
789
|
+
} catch {
|
|
790
|
+
// ignore cross-origin sheets
|
|
791
|
+
}
|
|
792
|
+
}
|
|
793
|
+
css += Array.from(document.querySelectorAll('style'))
|
|
794
|
+
.map(s => s.textContent || '')
|
|
795
|
+
.join('\n');
|
|
796
|
+
// Centered so any themed overhang stays symmetric.
|
|
797
|
+
expect(css).toMatch(/translate\(-50%,\s*-50%\)/);
|
|
798
|
+
expect(container.querySelectorAll(MARK)).toHaveLength(1);
|
|
799
|
+
});
|
|
800
|
+
});
|
|
280
801
|
});
|