@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
|
@@ -11,12 +11,13 @@
|
|
|
11
11
|
* SYNC: When modified, update these files to stay in sync:
|
|
12
12
|
* - /packages/core/src/ProgressBar/ProgressBar.doc.mjs (props table, features, implementation notes)
|
|
13
13
|
* - /packages/core/src/ProgressBar/ProgressBar.test.tsx (tests for new/changed behavior)
|
|
14
|
+
* - /packages/core/src/ProgressBar/ProgressBarMarkTooltip.tsx (the lazy Tooltip wrapper for labeled marks)
|
|
14
15
|
* - /packages/core/src/ProgressBar/index.ts (exports if types change)
|
|
15
16
|
* - /apps/storybook/stories/ProgressBar.stories.tsx (storybook stories)
|
|
16
|
-
* - /packages/cli/templates/blocks/components/ProgressBar/ (showcase blocks)
|
|
17
|
+
* - /packages/cli/assets/templates/blocks/components/ProgressBar/ (showcase blocks)
|
|
17
18
|
*/
|
|
18
19
|
|
|
19
|
-
import {useId} from 'react';
|
|
20
|
+
import {lazy, Suspense, useId} from 'react';
|
|
20
21
|
import * as stylex from '@stylexjs/stylex';
|
|
21
22
|
|
|
22
23
|
import {
|
|
@@ -32,27 +33,15 @@ import {mergeProps} from '../utils';
|
|
|
32
33
|
import type {BaseProps} from '../BaseProps';
|
|
33
34
|
import {themeProps} from '../utils/themeProps';
|
|
34
35
|
import {VisuallyHidden} from '../VisuallyHidden';
|
|
36
|
+
import type {ProgressBarVariantMap} from './index';
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
* interface ProgressBarVariantMap {
|
|
44
|
-
* 'brand': true;
|
|
45
|
-
* }
|
|
46
|
-
* }
|
|
47
|
-
* ```
|
|
48
|
-
*/
|
|
49
|
-
export interface ProgressBarVariantMap {
|
|
50
|
-
accent: true;
|
|
51
|
-
success: true;
|
|
52
|
-
warning: true;
|
|
53
|
-
neutral: true;
|
|
54
|
-
error: true;
|
|
55
|
-
}
|
|
38
|
+
// Every mark is wrapped in a Tooltip (marks always carry a label), so load it
|
|
39
|
+
// lazily: a ProgressBar with no marks never bundles the Tooltip chunk. While it
|
|
40
|
+
// loads, the Suspense fallback shows the bare mark, so nothing disappears; the
|
|
41
|
+
// tooltip simply attaches once the chunk is ready.
|
|
42
|
+
const LazyProgressBarMarkTooltip = lazy(
|
|
43
|
+
async () => import('./ProgressBarMarkTooltip'),
|
|
44
|
+
);
|
|
56
45
|
|
|
57
46
|
/**
|
|
58
47
|
* Progress bar variant type — maps to semantic color tokens.
|
|
@@ -60,6 +49,29 @@ export interface ProgressBarVariantMap {
|
|
|
60
49
|
*/
|
|
61
50
|
export type ProgressBarVariant = keyof ProgressBarVariantMap;
|
|
62
51
|
|
|
52
|
+
/**
|
|
53
|
+
* A fixed target mark drawn on the progress track.
|
|
54
|
+
*
|
|
55
|
+
* Positioned by `value` in the same `0..max` scale as the bar's `value` prop —
|
|
56
|
+
* mirroring the object shape of Slider's `marks` so the two APIs stay
|
|
57
|
+
* consistent.
|
|
58
|
+
*/
|
|
59
|
+
export interface ProgressBarMark {
|
|
60
|
+
/**
|
|
61
|
+
* Position of the mark in the same `0..max` scale as `value`. Values
|
|
62
|
+
* outside the range are clamped to the track edges.
|
|
63
|
+
*/
|
|
64
|
+
value: number;
|
|
65
|
+
/**
|
|
66
|
+
* Names the mark. A mark stands for something meaningful on the track — a
|
|
67
|
+
* goal, a threshold, a quarter target — so a label is required: it is the
|
|
68
|
+
* mark's accessible name and the text revealed in a `Tooltip` on hover and
|
|
69
|
+
* keyboard focus. Can be the value itself (e.g. `'70%'`) or something richer
|
|
70
|
+
* (e.g. `'Q1 target: 50%'`).
|
|
71
|
+
*/
|
|
72
|
+
label: string;
|
|
73
|
+
}
|
|
74
|
+
|
|
63
75
|
export interface ProgressBarProps extends BaseProps<HTMLDivElement> {
|
|
64
76
|
/** Ref forwarded to the root element */
|
|
65
77
|
ref?: React.Ref<HTMLDivElement>;
|
|
@@ -107,6 +119,14 @@ export interface ProgressBarProps extends BaseProps<HTMLDivElement> {
|
|
|
107
119
|
* @default false
|
|
108
120
|
*/
|
|
109
121
|
isIndeterminate?: boolean;
|
|
122
|
+
/**
|
|
123
|
+
* Target marks drawn on the track at fixed points in the same `0..max`
|
|
124
|
+
* scale as `value` — e.g. a goal line. Marks stay visible whether progress
|
|
125
|
+
* is below or past them. Each mark's required `label` names it for assistive
|
|
126
|
+
* tech and is revealed via a `Tooltip` on hover/focus. Ignored when
|
|
127
|
+
* `isIndeterminate` is true.
|
|
128
|
+
*/
|
|
129
|
+
marks?: ReadonlyArray<ProgressBarMark>;
|
|
110
130
|
/**
|
|
111
131
|
* When true, the progress bar is visually disabled — the fill bar and
|
|
112
132
|
* text use disabled colors. Use for canceled or inactive operations.
|
|
@@ -190,11 +210,27 @@ const styles = stylex.create({
|
|
|
190
210
|
whiteSpace: 'nowrap',
|
|
191
211
|
borderWidth: 0,
|
|
192
212
|
},
|
|
213
|
+
// The `role="progressbar"` element. In determinate mode it does NOT clip its
|
|
214
|
+
// content (`overflow` stays visible) so a themed mark taller than the bar can
|
|
215
|
+
// overhang it; the determinate fill rounds its own corners via `border-radius`
|
|
216
|
+
// (see `fill`) and is always inside the track box, so dropping the clip does
|
|
217
|
+
// not change its appearance at any progress. Indeterminate mode re-adds the
|
|
218
|
+
// clip via `trackClipped` (see below) — its sliding fill travels outside the
|
|
219
|
+
// track and must be clipped, and marks are ignored while indeterminate, so
|
|
220
|
+
// there is nothing to overhang.
|
|
193
221
|
track: {
|
|
222
|
+
position: 'relative',
|
|
194
223
|
width: '100%',
|
|
195
224
|
height: '8px',
|
|
196
225
|
backgroundColor: colorVars['--color-background-muted'],
|
|
197
226
|
borderRadius: radiusVars['--radius-full'],
|
|
227
|
+
},
|
|
228
|
+
// Indeterminate-only clip. The indeterminate fill slides from translateX
|
|
229
|
+
// -100% to 250%, so it deliberately overshoots the track on both sides and
|
|
230
|
+
// relies on the track clipping it to the visible window. Applied only when
|
|
231
|
+
// `isIndeterminate` (marks are suppressed then, so nothing needs to overhang)
|
|
232
|
+
// so it never re-clips a themed tall mark in determinate mode.
|
|
233
|
+
trackClipped: {
|
|
198
234
|
overflow: 'hidden',
|
|
199
235
|
},
|
|
200
236
|
fill: {
|
|
@@ -219,6 +255,35 @@ const styles = stylex.create({
|
|
|
219
255
|
animationTimingFunction: 'ease-in-out',
|
|
220
256
|
animationIterationCount: 'infinite',
|
|
221
257
|
},
|
|
258
|
+
// A mark is a vertical tick centered on the track, a child of the
|
|
259
|
+
// `role="progressbar"` element (unchanged DOM). The track no longer clips, so
|
|
260
|
+
// its height — 8px by default, directly overridable via the `progressbar-mark`
|
|
261
|
+
// theme target — may exceed the bar and overhang; the centering translate
|
|
262
|
+
// keeps any overhang symmetric. Positioned horizontally via `insetInlineStart`;
|
|
263
|
+
// the translate mirrors under RTL.
|
|
264
|
+
mark: {
|
|
265
|
+
position: 'absolute',
|
|
266
|
+
top: '50%',
|
|
267
|
+
width: 2,
|
|
268
|
+
height: 8,
|
|
269
|
+
// Defaults to text-primary. Directly overridable via the `progressbar-mark`
|
|
270
|
+
// theme target — a theme can set `backgroundColor`, `width`, and `height`
|
|
271
|
+
// (e.g. a taller "flag" tick that overhangs the bar, or per-variant
|
|
272
|
+
// contrast) with `defineTheme`; no dedicated CSS vars needed.
|
|
273
|
+
backgroundColor: colorVars['--color-text-primary'],
|
|
274
|
+
outline: {
|
|
275
|
+
default: 'none',
|
|
276
|
+
':focus-visible': `2px solid ${colorVars['--color-accent']}`,
|
|
277
|
+
},
|
|
278
|
+
outlineOffset: {
|
|
279
|
+
default: '0',
|
|
280
|
+
':focus-visible': '2px',
|
|
281
|
+
},
|
|
282
|
+
transform: {
|
|
283
|
+
default: 'translate(-50%, -50%)',
|
|
284
|
+
':is([dir="rtl"] *)': 'translate(50%, -50%)',
|
|
285
|
+
},
|
|
286
|
+
},
|
|
222
287
|
});
|
|
223
288
|
|
|
224
289
|
const variantStyles = stylex.create({
|
|
@@ -256,7 +321,8 @@ function defaultFormatValueLabel(value: number, max: number): string {
|
|
|
256
321
|
*
|
|
257
322
|
* ProgressBar is intentionally minimal — compose additional labels, status
|
|
258
323
|
* icons, and descriptions alongside the bar using layout components rather
|
|
259
|
-
* than adding props to ProgressBar itself.
|
|
324
|
+
* than adding props to ProgressBar itself. The exception is on-track content
|
|
325
|
+
* like `marks`, which are positioned by value over the track.
|
|
260
326
|
*
|
|
261
327
|
* Styles use Astryx theme tokens via StyleX.
|
|
262
328
|
* Wrap your app in <Theme> to apply a theme.
|
|
@@ -268,6 +334,21 @@ function defaultFormatValueLabel(value: number, max: number): string {
|
|
|
268
334
|
* <ProgressBar value={3.2} max={5} label="Disk usage" hasValueLabel
|
|
269
335
|
* formatValueLabel={(v, m) => `${v} GB / ${m} GB`} />
|
|
270
336
|
* <ProgressBar value={30} label="Canceled" isDisabled hasValueLabel />
|
|
337
|
+
* <ProgressBar value={45} label="Fundraiser" marks={[{value: 80, label: 'Goal'}]} />
|
|
338
|
+
* ```
|
|
339
|
+
*
|
|
340
|
+
* A mark's height, width, and color are directly themeable via the
|
|
341
|
+
* `progressbar-mark` target — e.g. a taller "goal flag" tick that overhangs the
|
|
342
|
+
* bar (centered, so the overhang is symmetric):
|
|
343
|
+
*
|
|
344
|
+
* @example
|
|
345
|
+
* ```
|
|
346
|
+
* defineTheme({
|
|
347
|
+
* name: 'campaign',
|
|
348
|
+
* components: {
|
|
349
|
+
* 'progressbar-mark': {base: {height: '16px', backgroundColor: 'red'}},
|
|
350
|
+
* },
|
|
351
|
+
* });
|
|
271
352
|
* ```
|
|
272
353
|
*/
|
|
273
354
|
export function ProgressBar({
|
|
@@ -280,6 +361,7 @@ export function ProgressBar({
|
|
|
280
361
|
variant = 'accent',
|
|
281
362
|
isIndeterminate = false,
|
|
282
363
|
isDisabled = false,
|
|
364
|
+
marks,
|
|
283
365
|
xstyle,
|
|
284
366
|
className,
|
|
285
367
|
style,
|
|
@@ -302,6 +384,20 @@ export function ProgressBar({
|
|
|
302
384
|
|
|
303
385
|
const fillVariant = isDisabled ? 'disabled' : variant;
|
|
304
386
|
|
|
387
|
+
// Marks make no sense without a determinate value, so they are only drawn
|
|
388
|
+
// in determinate mode. Non-finite mark values are dropped; the rest are
|
|
389
|
+
// clamped to the track edges, matching the bar's own `clampedValue`.
|
|
390
|
+
const resolvedMarks =
|
|
391
|
+
!isIndeterminate && marks
|
|
392
|
+
? marks
|
|
393
|
+
.filter(mark => Number.isFinite(mark.value))
|
|
394
|
+
.map(mark => {
|
|
395
|
+
const clamped = Math.min(Math.max(0, mark.value), safeMax);
|
|
396
|
+
const pct = safeMax > 0 ? (clamped / safeMax) * 100 : 0;
|
|
397
|
+
return {value: mark.value, label: mark.label, pct};
|
|
398
|
+
})
|
|
399
|
+
: [];
|
|
400
|
+
|
|
305
401
|
return (
|
|
306
402
|
<div
|
|
307
403
|
ref={ref}
|
|
@@ -339,7 +435,10 @@ export function ProgressBar({
|
|
|
339
435
|
<VisuallyHidden id={labelId}>{label}</VisuallyHidden>
|
|
340
436
|
)}
|
|
341
437
|
|
|
342
|
-
{/* Progress track
|
|
438
|
+
{/* Progress track — the `role="progressbar"` element, holding the fill
|
|
439
|
+
and marks as its children (unchanged DOM shape). It no longer clips
|
|
440
|
+
(`overflow` is visible), so a themed taller mark can overhang it;
|
|
441
|
+
the fill preserves its rounded shape via its own `border-radius`. */}
|
|
343
442
|
<div
|
|
344
443
|
role="progressbar"
|
|
345
444
|
aria-valuenow={isIndeterminate ? undefined : clampedValue}
|
|
@@ -349,7 +448,7 @@ export function ProgressBar({
|
|
|
349
448
|
aria-valuetext={isIndeterminate ? undefined : valueText}
|
|
350
449
|
{...mergeProps(
|
|
351
450
|
themeProps('progressbar-track'),
|
|
352
|
-
stylex.props(styles.track),
|
|
451
|
+
stylex.props(styles.track, isIndeterminate && styles.trackClipped),
|
|
353
452
|
)}>
|
|
354
453
|
{isIndeterminate ? (
|
|
355
454
|
<div
|
|
@@ -370,6 +469,35 @@ export function ProgressBar({
|
|
|
370
469
|
style={{width: `${percentage}%`}}
|
|
371
470
|
/>
|
|
372
471
|
)}
|
|
472
|
+
{/* Target marks — children of the progressbar element (unchanged),
|
|
473
|
+
layered above the fill so they show whether progress is below or
|
|
474
|
+
past them. Each mark is labeled, so it is a focusable Tooltip
|
|
475
|
+
trigger: the label is visible on hover/focus and names the mark for
|
|
476
|
+
assistive tech via the Tooltip's aria-describedby, without adding a
|
|
477
|
+
labeled child to the progressbar's own a11y subtree. */}
|
|
478
|
+
{resolvedMarks.map(mark => {
|
|
479
|
+
// The tick element. It is both the Tooltip's anchor and the Suspense
|
|
480
|
+
// fallback shown while the lazy Tooltip chunk loads, so the tick is
|
|
481
|
+
// always visible and the label attaches once ready. The list `key`
|
|
482
|
+
// lives on the mapped <Suspense>, not here.
|
|
483
|
+
const markEl = (
|
|
484
|
+
<span
|
|
485
|
+
tabIndex={0}
|
|
486
|
+
{...mergeProps(
|
|
487
|
+
themeProps('progressbar-mark'),
|
|
488
|
+
stylex.props(styles.mark),
|
|
489
|
+
)}
|
|
490
|
+
style={{insetInlineStart: `${mark.pct}%`}}
|
|
491
|
+
/>
|
|
492
|
+
);
|
|
493
|
+
return (
|
|
494
|
+
<Suspense key={`${mark.value}:${mark.label}`} fallback={markEl}>
|
|
495
|
+
<LazyProgressBarMarkTooltip content={mark.label}>
|
|
496
|
+
{markEl}
|
|
497
|
+
</LazyProgressBarMarkTooltip>
|
|
498
|
+
</Suspense>
|
|
499
|
+
);
|
|
500
|
+
})}
|
|
373
501
|
</div>
|
|
374
502
|
</div>
|
|
375
503
|
);
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file ProgressBarMarkTooltip.tsx
|
|
7
|
+
* @input Uses React, Tooltip, the mark element to wrap, and its label
|
|
8
|
+
* @output Default-exports the lazily-loaded Tooltip wrapper for a labeled mark
|
|
9
|
+
* @position Split out of ProgressBar so the Tooltip only loads when a mark is
|
|
10
|
+
* actually rendered — a ProgressBar with no marks never bundles the Tooltip
|
|
11
|
+
* chunk.
|
|
12
|
+
*
|
|
13
|
+
* SYNC: When modified, update these files to stay in sync:
|
|
14
|
+
* - /packages/core/src/ProgressBar/ProgressBar.tsx (the lazy() + Suspense wrapper)
|
|
15
|
+
* - /packages/core/src/ProgressBar/ProgressBar.test.tsx
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import type {ReactElement} from 'react';
|
|
19
|
+
import {Tooltip} from '../Tooltip/Tooltip';
|
|
20
|
+
|
|
21
|
+
export interface ProgressBarMarkTooltipProps {
|
|
22
|
+
/** The mark's accessible name / visible tooltip text. */
|
|
23
|
+
content: string;
|
|
24
|
+
/** The bare mark element the tooltip anchors to (also the Suspense fallback). */
|
|
25
|
+
children: ReactElement;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Wraps a labeled mark in a `Tooltip` that reveals its label on hover and
|
|
30
|
+
* keyboard focus. Placement and focus behavior match the inline usage this
|
|
31
|
+
* split replaced (`placement="above"`, `focusTrigger="always"`), so the
|
|
32
|
+
* rendered result is identical — only the load timing changes.
|
|
33
|
+
*/
|
|
34
|
+
export default function ProgressBarMarkTooltip({
|
|
35
|
+
content,
|
|
36
|
+
children,
|
|
37
|
+
}: ProgressBarMarkTooltipProps): ReactElement {
|
|
38
|
+
return (
|
|
39
|
+
<Tooltip content={content} placement="above" focusTrigger="always">
|
|
40
|
+
{children}
|
|
41
|
+
</Tooltip>
|
|
42
|
+
);
|
|
43
|
+
}
|
package/src/ProgressBar/index.ts
CHANGED
|
@@ -6,9 +6,30 @@
|
|
|
6
6
|
* @file ProgressBar component barrel export
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Extensible variant map for ProgressBar.
|
|
11
|
+
*
|
|
12
|
+
* Theme packages can add custom variants via TypeScript module augmentation:
|
|
13
|
+
* @example
|
|
14
|
+
* ```
|
|
15
|
+
* declare module '@astryxdesign/core/ProgressBar' {
|
|
16
|
+
* interface ProgressBarVariantMap {
|
|
17
|
+
* 'brand': true;
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export interface ProgressBarVariantMap {
|
|
23
|
+
accent: true;
|
|
24
|
+
success: true;
|
|
25
|
+
warning: true;
|
|
26
|
+
neutral: true;
|
|
27
|
+
error: true;
|
|
28
|
+
}
|
|
29
|
+
|
|
9
30
|
export {ProgressBar} from './ProgressBar';
|
|
10
31
|
export type {
|
|
11
32
|
ProgressBarProps,
|
|
33
|
+
ProgressBarMark,
|
|
12
34
|
ProgressBarVariant,
|
|
13
|
-
ProgressBarVariantMap,
|
|
14
35
|
} from './ProgressBar';
|
|
@@ -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: 'RadioList',
|
|
@@ -149,7 +149,7 @@ export const docs = {
|
|
|
149
149
|
},
|
|
150
150
|
};
|
|
151
151
|
|
|
152
|
-
/** @type {import('
|
|
152
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
|
|
153
153
|
export const docsZh = {
|
|
154
154
|
usage: {
|
|
155
155
|
description:
|
|
@@ -171,7 +171,7 @@ export const docsZh = {
|
|
|
171
171
|
},
|
|
172
172
|
};
|
|
173
173
|
|
|
174
|
-
/** @type {import('
|
|
174
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
|
|
175
175
|
export const docsDense = {
|
|
176
176
|
description:
|
|
177
177
|
'Radio group component for single-value selection from list of options.',
|
|
@@ -14,6 +14,7 @@ import {render, screen, fireEvent, waitFor} from '@testing-library/react';
|
|
|
14
14
|
import userEvent from '@testing-library/user-event';
|
|
15
15
|
import {RadioList} from './RadioList';
|
|
16
16
|
import {RadioListItem} from './RadioListItem';
|
|
17
|
+
import {getForcedColorsRules} from '../__tests__/forcedColors';
|
|
17
18
|
|
|
18
19
|
// Mock showPopover/hidePopover (not implemented in jsdom) so the tooltip layer
|
|
19
20
|
// reflects its open state via a `popover-open` attribute the tests can assert.
|
|
@@ -580,7 +581,11 @@ describe('RadioList', () => {
|
|
|
580
581
|
it('submits the selected value under htmlName', () => {
|
|
581
582
|
const {container} = render(
|
|
582
583
|
<form>
|
|
583
|
-
<RadioList
|
|
584
|
+
<RadioList
|
|
585
|
+
label="Preference"
|
|
586
|
+
htmlName="pref"
|
|
587
|
+
value="b"
|
|
588
|
+
onChange={() => {}}>
|
|
584
589
|
<RadioListItem label="Option A" value="a" />
|
|
585
590
|
<RadioListItem label="Option B" value="b" />
|
|
586
591
|
</RadioList>
|
|
@@ -599,13 +604,14 @@ describe('RadioList', () => {
|
|
|
599
604
|
value="a"
|
|
600
605
|
onChange={() => {}}
|
|
601
606
|
isDisabled
|
|
602
|
-
disabledMessage="Locked"
|
|
603
|
-
>
|
|
607
|
+
disabledMessage="Locked">
|
|
604
608
|
<RadioListItem label="Option A" value="a" />
|
|
605
609
|
</RadioList>
|
|
606
610
|
</form>,
|
|
607
611
|
);
|
|
608
|
-
expect([
|
|
612
|
+
expect([
|
|
613
|
+
...new FormData(container.querySelector('form')!).keys(),
|
|
614
|
+
]).toEqual([]);
|
|
609
615
|
});
|
|
610
616
|
|
|
611
617
|
it('keeps working as an isolated group when htmlName is omitted', () => {
|
|
@@ -642,3 +648,19 @@ describe('RadioList', () => {
|
|
|
642
648
|
});
|
|
643
649
|
});
|
|
644
650
|
});
|
|
651
|
+
|
|
652
|
+
// jsdom cannot emulate forced-colors rendering, so this asserts that the
|
|
653
|
+
// compiled output includes the forced-colors rule; visual behavior needs
|
|
654
|
+
// manual verification under Windows High Contrast.
|
|
655
|
+
describe('forced colors (WCAG 1.4.11)', () => {
|
|
656
|
+
it('compiles a forced-colors fill so the selected dot survives Windows High Contrast', () => {
|
|
657
|
+
render(
|
|
658
|
+
<RadioList label="Preference" value="a" onChange={() => {}}>
|
|
659
|
+
<RadioListItem label="Option A" value="a" />
|
|
660
|
+
</RadioList>,
|
|
661
|
+
);
|
|
662
|
+
// The painted inner dot would be stripped to Canvas (invisible), making
|
|
663
|
+
// checked and unchecked radios identical; CanvasText keeps it perceivable.
|
|
664
|
+
expect(getForcedColorsRules()).toContain('background-color: canvastext;');
|
|
665
|
+
});
|
|
666
|
+
});
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* - /packages/core/src/RadioList/RadioList.test.tsx
|
|
14
14
|
* - /packages/core/src/RadioList/index.ts
|
|
15
15
|
* - /apps/storybook/stories/RadioList.stories.tsx
|
|
16
|
-
* - /packages/cli/templates/blocks/components/RadioList/ (showcase blocks)
|
|
16
|
+
* - /packages/cli/assets/templates/blocks/components/RadioList/ (showcase blocks)
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
import React, {
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* - /packages/core/src/RadioList/RadioList.test.tsx
|
|
16
16
|
* - /packages/core/src/RadioList/index.ts
|
|
17
17
|
* - /apps/storybook/stories/RadioList.stories.tsx
|
|
18
|
-
* - /packages/cli/templates/blocks/components/RadioList/ (showcase blocks)
|
|
18
|
+
* - /packages/cli/assets/templates/blocks/components/RadioList/ (showcase blocks)
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
21
|
import React, {use, useId, type ReactNode} from 'react';
|
|
@@ -119,7 +119,14 @@ const styles = stylex.create({
|
|
|
119
119
|
},
|
|
120
120
|
innerDot: {
|
|
121
121
|
borderRadius: '50%',
|
|
122
|
-
backgroundColor:
|
|
122
|
+
backgroundColor: {
|
|
123
|
+
default: colorVars['--color-on-accent'],
|
|
124
|
+
// Forced colors (Windows High Contrast) strips painted backgrounds,
|
|
125
|
+
// which would make the selected dot invisible — checked and unchecked
|
|
126
|
+
// radios would look identical. CanvasText keeps the dot perceivable on
|
|
127
|
+
// the Canvas circle fill (WCAG 1.4.11).
|
|
128
|
+
'@media (forced-colors: active)': 'CanvasText',
|
|
129
|
+
},
|
|
123
130
|
},
|
|
124
131
|
labelDisabled: {
|
|
125
132
|
color: colorVars['--color-text-disabled'],
|
|
@@ -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
|
export const docs = {
|
|
5
5
|
name: 'Resizable',
|
|
6
6
|
displayName: 'Resizable',
|
|
@@ -188,7 +188,7 @@ export const docs = {
|
|
|
188
188
|
],
|
|
189
189
|
};
|
|
190
190
|
|
|
191
|
-
/** @type {import('
|
|
191
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
|
|
192
192
|
export const docsDense = {
|
|
193
193
|
description: 'Hook-based resizable panel system. useResizable() manages size state; ResizeHandle provides interactive pill-grip separator.',
|
|
194
194
|
usage: {
|
|
@@ -150,7 +150,55 @@ describe('ResizeHandle', () => {
|
|
|
150
150
|
const separator = getSeparator();
|
|
151
151
|
act(() => separator.focus());
|
|
152
152
|
fireEvent.keyDown(separator, {key: 'Enter'});
|
|
153
|
-
|
|
153
|
+
// The panel's real size is 0, but aria-valuenow must never drop below
|
|
154
|
+
// aria-valuemin (WCAG 4.1.2) — it clamps to the minimum and the state
|
|
155
|
+
// is announced via aria-valuetext instead.
|
|
156
|
+
expect(separator).toHaveAttribute('aria-valuenow', '100');
|
|
157
|
+
expect(separator).toHaveAttribute('aria-valuetext', 'Collapsed');
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
it('keeps aria-valuenow >= aria-valuemin and announces "Collapsed" while collapsed', () => {
|
|
161
|
+
render(
|
|
162
|
+
<Harness
|
|
163
|
+
config={{
|
|
164
|
+
defaultSize: 200,
|
|
165
|
+
minSizePx: 100,
|
|
166
|
+
maxSizePx: 400,
|
|
167
|
+
collapsible: true,
|
|
168
|
+
}}
|
|
169
|
+
/>,
|
|
170
|
+
);
|
|
171
|
+
const separator = getSeparator();
|
|
172
|
+
act(() => separator.focus());
|
|
173
|
+
fireEvent.keyDown(separator, {key: 'Enter'});
|
|
174
|
+
|
|
175
|
+
const valueNow = Number(separator.getAttribute('aria-valuenow'));
|
|
176
|
+
const valueMin = Number(separator.getAttribute('aria-valuemin'));
|
|
177
|
+
expect(valueNow).toBeGreaterThanOrEqual(valueMin);
|
|
178
|
+
expect(separator).toHaveAttribute('aria-valuetext', 'Collapsed');
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
it('removes aria-valuetext when the panel is expanded', () => {
|
|
182
|
+
render(
|
|
183
|
+
<Harness
|
|
184
|
+
config={{
|
|
185
|
+
defaultSize: 200,
|
|
186
|
+
minSizePx: 100,
|
|
187
|
+
maxSizePx: 400,
|
|
188
|
+
collapsible: true,
|
|
189
|
+
}}
|
|
190
|
+
/>,
|
|
191
|
+
);
|
|
192
|
+
const separator = getSeparator();
|
|
193
|
+
expect(separator).not.toHaveAttribute('aria-valuetext');
|
|
194
|
+
|
|
195
|
+
act(() => separator.focus());
|
|
196
|
+
fireEvent.keyDown(separator, {key: 'Enter'}); // collapse
|
|
197
|
+
expect(separator).toHaveAttribute('aria-valuetext', 'Collapsed');
|
|
198
|
+
|
|
199
|
+
fireEvent.keyDown(separator, {key: 'Enter'}); // expand again
|
|
200
|
+
expect(separator).not.toHaveAttribute('aria-valuetext');
|
|
201
|
+
expect(separator).toHaveAttribute('aria-valuenow', '100');
|
|
154
202
|
});
|
|
155
203
|
|
|
156
204
|
// --- Disabled guard ---
|
|
@@ -290,8 +338,9 @@ describe('ResizeHandle', () => {
|
|
|
290
338
|
it('centers the grab zone on the divider when the pill is centered (no bias)', () => {
|
|
291
339
|
render(<Harness handleProps={{pillPlacement: 'center'}} />);
|
|
292
340
|
const hitArea = getSeparator().firstElementChild as HTMLElement;
|
|
293
|
-
//
|
|
294
|
-
|
|
341
|
+
// Centered via the shared rtlStyles.centerInline helper (direction-symmetric
|
|
342
|
+
// left+translateX), not a biased offset.
|
|
343
|
+
expect(hitArea.className).toContain('centerInline');
|
|
295
344
|
expect(hitArea.className).not.toContain('hitAreaOffsetX');
|
|
296
345
|
});
|
|
297
346
|
|
|
@@ -17,6 +17,10 @@
|
|
|
17
17
|
* Pill placement uses a single stylex dynamic style that accepts a direction
|
|
18
18
|
* multiplier (-1 or 1). The pill element has its own themeProps
|
|
19
19
|
* ('resize-handle-pill') so themes can target size/shape directly.
|
|
20
|
+
*
|
|
21
|
+
* While the panel is collapsed, aria-valuenow is clamped to aria-valuemin
|
|
22
|
+
* (a value below the minimum is invalid per WCAG 4.1.2) and a localized
|
|
23
|
+
* "Collapsed" aria-valuetext announces the real state.
|
|
20
24
|
*/
|
|
21
25
|
|
|
22
26
|
import {useCallback, useEffect, useRef, useState} from 'react';
|
|
@@ -30,7 +34,7 @@ import {
|
|
|
30
34
|
radiusVars,
|
|
31
35
|
spacingVars,
|
|
32
36
|
} from '../theme/tokens.stylex';
|
|
33
|
-
import {mergeProps, mergeRefs} from '../utils';
|
|
37
|
+
import {mergeProps, mergeRefs, rtlStyles} from '../utils';
|
|
34
38
|
import type {ResizableProps} from './useResizable';
|
|
35
39
|
import {themeProps} from '../utils/themeProps';
|
|
36
40
|
import {useTranslator} from '../i18n';
|
|
@@ -167,11 +171,8 @@ const styles = stylex.create({
|
|
|
167
171
|
cursor: 'row-resize',
|
|
168
172
|
},
|
|
169
173
|
// Centered grab zone (pillPlacement 'center' / no bias): sit the hit area on
|
|
170
|
-
// the divider itself.
|
|
171
|
-
|
|
172
|
-
insetInlineStart: '50%',
|
|
173
|
-
transform: 'translateX(-50%)',
|
|
174
|
-
},
|
|
174
|
+
// the divider itself. Inline centering comes from rtlStyles.centerInline at
|
|
175
|
+
// the call site (correct in LTR and RTL); this block owns only the block axis.
|
|
175
176
|
hitAreaCenteredY: {
|
|
176
177
|
insetBlockStart: '50%',
|
|
177
178
|
transform: 'translateY(-50%)',
|
|
@@ -188,8 +189,6 @@ const styles = stylex.create({
|
|
|
188
189
|
transitionDuration: durationVars['--duration-fast'],
|
|
189
190
|
transitionTimingFunction: easeVars['--ease-standard'],
|
|
190
191
|
top: '50%',
|
|
191
|
-
insetInlineStart: '50%',
|
|
192
|
-
transform: 'translate(-50%, -50%)',
|
|
193
192
|
},
|
|
194
193
|
pillHorizontal: {
|
|
195
194
|
width: 3,
|
|
@@ -519,12 +518,23 @@ export function ResizeHandle({
|
|
|
519
518
|
}, []);
|
|
520
519
|
|
|
521
520
|
// --- ARIA ---
|
|
522
|
-
|
|
521
|
+
// When collapsed the panel's real size (0) sits below aria-valuemin, which
|
|
522
|
+
// is invalid per WCAG 4.1.2. Clamp aria-valuenow to the minimum and announce
|
|
523
|
+
// the true state via aria-valuetext instead; the valuetext is removed as
|
|
524
|
+
// soon as the panel expands so the numeric value reads again.
|
|
525
|
+
const isCollapsed = resizable?._isCollapsed ?? false;
|
|
526
|
+
const ariaValueNow = resizable
|
|
527
|
+
? isCollapsed
|
|
528
|
+
? Math.max(resizable._size, resizable._minSizePx)
|
|
529
|
+
: resizable._size
|
|
530
|
+
: undefined;
|
|
523
531
|
const ariaValueMin = resizable ? resizable._minSizePx : undefined;
|
|
524
532
|
const ariaValueMax =
|
|
525
533
|
resizable && resizable._maxSizePx !== Infinity
|
|
526
534
|
? resizable._maxSizePx
|
|
527
535
|
: undefined;
|
|
536
|
+
const ariaValueText =
|
|
537
|
+
resizable && isCollapsed ? t('@astryx.resizable.collapsed') : undefined;
|
|
528
538
|
|
|
529
539
|
return (
|
|
530
540
|
<div
|
|
@@ -534,6 +544,7 @@ export function ResizeHandle({
|
|
|
534
544
|
aria-valuenow={ariaValueNow}
|
|
535
545
|
aria-valuemin={ariaValueMin}
|
|
536
546
|
aria-valuemax={ariaValueMax}
|
|
547
|
+
aria-valuetext={ariaValueText}
|
|
537
548
|
aria-label={label}
|
|
538
549
|
aria-disabled={isDisabled || undefined}
|
|
539
550
|
tabIndex={isDisabled ? -1 : 0}
|
|
@@ -586,7 +597,7 @@ export function ResizeHandle({
|
|
|
586
597
|
// construction so the two stay aligned in LTR and RTL alike.
|
|
587
598
|
hitBiasDir == null
|
|
588
599
|
? isHorizontal
|
|
589
|
-
?
|
|
600
|
+
? rtlStyles.centerInline('0px')
|
|
590
601
|
: styles.hitAreaCenteredY
|
|
591
602
|
: isHorizontal
|
|
592
603
|
? dynamicStyles.hitAreaOffsetX(hitBiasDir)
|
|
@@ -609,14 +620,15 @@ export function ResizeHandle({
|
|
|
609
620
|
stylex.props(
|
|
610
621
|
styles.pill,
|
|
611
622
|
isHorizontal ? styles.pillHorizontal : styles.pillVertical,
|
|
612
|
-
effectiveSide
|
|
613
|
-
(
|
|
623
|
+
effectiveSide === 'center'
|
|
624
|
+
? rtlStyles.centerInline('-50%')
|
|
625
|
+
: isHorizontal
|
|
614
626
|
? dynamicStyles.pillOffsetX(
|
|
615
627
|
effectiveSide === 'start' ? -1 : 1,
|
|
616
628
|
)
|
|
617
629
|
: dynamicStyles.pillOffsetY(
|
|
618
630
|
effectiveSide === 'start' ? -1 : 1,
|
|
619
|
-
)
|
|
631
|
+
),
|
|
620
632
|
isAlwaysVisible ? styles.pillVisible : styles.pillHidden,
|
|
621
633
|
isInteracting && !isDragging && styles.pillHover,
|
|
622
634
|
isDragging && styles.pillActive,
|