@astryxdesign/core 0.2.0 → 0.3.0-canary.041a0ef
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 +37 -24
- 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 +9 -6
- 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 +21 -48
- 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.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +22 -8
- 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 +17 -34
- 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.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +3 -2
- 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 -4
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +2 -4
- 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 +90 -27
- 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.d.ts.map +1 -1
- package/dist/Chat/ChatLayoutScrollButton.js +2 -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/Chat/ChatToolCalls.d.ts.map +1 -1
- package/dist/Chat/ChatToolCalls.js +17 -17
- 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.d.ts.map +1 -1
- package/dist/ClickableCard/ClickableCard.js +6 -14
- package/dist/Code/Code.d.ts +2 -2
- package/dist/Code/Code.js +2 -2
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +35 -18
- package/dist/Collapsible/Collapsible.d.ts +1 -1
- package/dist/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible/Collapsible.js +36 -16
- 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 +310 -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.d.ts +9 -2
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +6 -3
- package/dist/DateRangeInput/DateRangeInput.d.ts +9 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +6 -3
- package/dist/DateTimeInput/DateTimeInput.d.ts +9 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +6 -3
- 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 +28 -8
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +75 -23
- 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 +8 -3
- package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuItem.js +14 -5
- 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 +27 -16
- 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 +36 -15
- 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 +173 -79
- package/dist/Link/Link.d.ts +1 -1
- package/dist/Link/Link.d.ts.map +1 -1
- package/dist/Link/Link.js +5 -6
- 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 +9 -9
- 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 +155 -54
- 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 +19 -7
- package/dist/Outline/Outline.d.ts.map +1 -1
- package/dist/Outline/Outline.js +3 -4
- 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 +204 -78
- 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/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.js +7 -0
- 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 +17 -14
- 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 +6 -6
- package/dist/SelectableCard/SelectableCard.d.ts +4 -3
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +18 -14
- package/dist/Selector/Selector.d.ts +14 -4
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +247 -77
- package/dist/Selector/hooks.d.ts +18 -6
- package/dist/Selector/hooks.d.ts.map +1 -1
- package/dist/Selector/hooks.js +57 -40
- package/dist/SideNav/SideNav.d.ts +1 -1
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +2 -2
- package/dist/SideNav/SideNavCollapseButton.d.ts +2 -2
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseButton.js +30 -14
- package/dist/SideNav/SideNavHeading.d.ts +1 -1
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +57 -20
- package/dist/SideNav/SideNavItem.d.ts +2 -2
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +30 -25
- 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 +28 -20
- package/dist/TabList/Tab.d.ts +1 -1
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +3 -4
- 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 +52 -22
- 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.d.ts.map +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +22 -18
- 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 +55 -43
- package/dist/Table/plugins/sortable/useTableSortable.d.ts.map +1 -1
- package/dist/Table/plugins/sortable/useTableSortable.js +23 -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 +65 -35
- package/dist/Table/tableContextMenu.d.ts.map +1 -1
- package/dist/Table/tableContextMenu.js +2 -1
- package/dist/Table/types.d.ts +5 -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 +111 -41
- package/dist/TextInput/TextInput.d.ts +1 -1
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +4 -3
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +28 -16
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +3 -2
- 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 +84 -64
- 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.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +5 -3
- 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.d.ts.map +1 -1
- package/dist/TopNav/TopNav.js +7 -6
- package/dist/TopNav/TopNavHeading.d.ts +2 -8
- package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/TopNav/TopNavHeading.js +56 -20
- package/dist/TopNav/TopNavItem.d.ts +1 -1
- package/dist/TopNav/TopNavItem.d.ts.map +1 -1
- package/dist/TopNav/TopNavItem.js +4 -10
- package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +89 -42
- 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.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenuItem.js +23 -4
- package/dist/TopNav/TopNavMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +84 -33
- package/dist/TreeList/TreeList.d.ts +1 -1
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +14 -1
- package/dist/TreeList/TreeListBranches.d.ts +1 -1
- package/dist/TreeList/TreeListBranches.d.ts.map +1 -1
- package/dist/TreeList/TreeListBranches.js +15 -5
- package/dist/TreeList/TreeListItem.d.ts +12 -2
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +58 -30
- 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 +17 -3
- 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 +143 -46
- package/dist/astryx.umd.js +52 -56
- 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/useLongPress.d.ts.map +1 -1
- package/dist/hooks/useLongPress.js +12 -2
- package/dist/hooks/useStreamingText.d.ts +18 -3
- package/dist/hooks/useStreamingText.d.ts.map +1 -1
- package/dist/hooks/useStreamingText.js +47 -7
- package/dist/hooks/useTreeFocus.d.ts.map +1 -1
- package/dist/hooks/useTreeFocus.js +13 -2
- package/dist/hooks/useTypeahead.d.ts +3 -2
- package/dist/hooks/useTypeahead.d.ts.map +1 -1
- package/dist/hooks/useTypeahead.js +19 -7
- 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/derivedVarRegistry.d.ts +8 -0
- package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +5 -13
- 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/expandTypeScale.d.ts.map +1 -1
- package/dist/theme/expandTypeScale.js +17 -0
- package/dist/theme/generateThemeRules.d.ts +0 -6
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +11 -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/focusOutline.stylex.d.ts +74 -0
- package/dist/utils/focusOutline.stylex.d.ts.map +1 -0
- package/dist/utils/focusOutline.stylex.js +95 -0
- package/dist/utils/rtlStyles.d.ts +23 -2
- package/dist/utils/rtlStyles.d.ts.map +1 -1
- package/dist/utils/rtlStyles.js +28 -3
- package/groups.doc.mjs +2 -2
- package/locales/en.json +128 -0
- package/locales/pseudo.json +96 -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 +5 -16
- package/src/Avatar/Avatar.test.tsx +33 -8
- package/src/Avatar/Avatar.tsx +60 -53
- 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 +7 -12
- 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 +17 -51
- 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 +17 -5
- 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 +27 -64
- 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 +3 -2
- package/src/Calendar/index.ts +1 -6
- package/src/Calendar/styles.ts +2 -10
- 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 +13 -3
- package/src/Carousel/Carousel.test.tsx +232 -1
- package/src/Carousel/Carousel.tsx +154 -27
- 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.test.tsx +22 -0
- package/src/Chat/ChatLayoutScrollButton.tsx +2 -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/Chat/ChatToolCalls.test.tsx +35 -0
- package/src/Chat/ChatToolCalls.tsx +36 -16
- 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 +9 -14
- 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 +18 -17
- package/src/Collapsible/Collapsible.doc.mjs +3 -3
- package/src/Collapsible/Collapsible.tsx +23 -19
- 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.test.tsx +29 -0
- 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 +220 -0
- package/src/ComplexSelector/ComplexSelector.test.tsx +181 -0
- package/src/ComplexSelector/ComplexSelector.tsx +443 -0
- package/src/ComplexSelector/index.ts +17 -0
- package/src/ContextMenu/ContextMenu.doc.mjs +4 -4
- package/src/ContextMenu/ContextMenu.test.tsx +38 -2
- package/src/ContextMenu/ContextMenu.tsx +27 -6
- package/src/ContextMenu/ContextMenuItem.doc.mjs +1 -1
- package/src/DateInput/DateInput.doc.mjs +19 -4
- package/src/DateInput/DateInput.test.tsx +79 -3
- package/src/DateInput/DateInput.tsx +23 -3
- package/src/DateRangeInput/DateRangeInput.doc.mjs +11 -3
- package/src/DateRangeInput/DateRangeInput.test.tsx +97 -2
- package/src/DateRangeInput/DateRangeInput.tsx +19 -2
- package/src/DateTimeInput/DateTimeInput.doc.mjs +19 -5
- package/src/DateTimeInput/DateTimeInput.test.tsx +81 -2
- package/src/DateTimeInput/DateTimeInput.tsx +19 -2
- package/src/Dialog/Dialog.doc.mjs +7 -5
- package/src/Dialog/Dialog.test.tsx +46 -3
- package/src/Dialog/Dialog.tsx +63 -53
- 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 +22 -7
- package/src/DropdownMenu/DropdownMenu.test.tsx +405 -1
- package/src/DropdownMenu/DropdownMenu.tsx +117 -50
- package/src/DropdownMenu/DropdownMenuCheckboxItem.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +41 -64
- package/src/DropdownMenu/DropdownMenuItem.doc.mjs +25 -5
- package/src/DropdownMenu/DropdownMenuItem.tsx +34 -7
- 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 +90 -15
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +24 -8
- package/src/DropdownMenu/menuItemHover.ts +1 -0
- package/src/DropdownMenu/renderDropdownItems.tsx +31 -21
- 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 +8 -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 +65 -26
- 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 +6 -6
- package/src/Lightbox/Lightbox.test.tsx +211 -0
- package/src/Lightbox/Lightbox.tsx +152 -60
- package/src/Link/Link.doc.mjs +3 -3
- package/src/Link/Link.tsx +5 -12
- 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 +4 -4
- package/src/MoreMenu/MoreMenu.doc.mjs +3 -3
- package/src/MoreMenu/MoreMenu.test.tsx +28 -1
- package/src/MoreMenu/MoreMenu.tsx +3 -3
- package/src/MultiSelector/MultiSelector.doc.mjs +37 -10
- package/src/MultiSelector/MultiSelector.test.tsx +396 -8
- package/src/MultiSelector/MultiSelector.tsx +254 -74
- 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 +5 -8
- package/src/NumberInput/NumberInput.test.tsx +117 -3
- package/src/NumberInput/NumberInput.tsx +30 -3
- package/src/Outline/Outline.doc.mjs +3 -3
- package/src/Outline/Outline.tsx +3 -6
- 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 +582 -0
- package/src/Pagination/Pagination.tsx +249 -64
- 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/PowerSearch/PowerSearchEditPopover.test.tsx +42 -0
- package/src/PowerSearch/PowerSearchEditPopover.tsx +7 -0
- 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 +27 -22
- 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 +23 -12
- package/src/SelectableCard/SelectableCard.doc.mjs +4 -2
- package/src/SelectableCard/SelectableCard.test.tsx +55 -0
- package/src/SelectableCard/SelectableCard.tsx +23 -12
- package/src/Selector/Selector.doc.mjs +34 -11
- package/src/Selector/Selector.test.tsx +1176 -118
- package/src/Selector/Selector.tsx +345 -96
- package/src/Selector/SelectorOption.doc.mjs +1 -1
- package/src/Selector/hooks.ts +77 -50
- package/src/SideNav/SideNav.doc.mjs +3 -3
- package/src/SideNav/SideNav.test.tsx +46 -0
- package/src/SideNav/SideNav.tsx +2 -1
- package/src/SideNav/SideNavCollapseButton.doc.mjs +1 -1
- package/src/SideNav/SideNavCollapseButton.tsx +16 -10
- package/src/SideNav/SideNavHeading.doc.mjs +1 -1
- package/src/SideNav/SideNavHeading.tsx +49 -12
- package/src/SideNav/SideNavItem.doc.mjs +1 -1
- package/src/SideNav/SideNavItem.tsx +21 -14
- 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 +113 -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 +63 -26
- package/src/TabList/Tab.doc.mjs +1 -1
- package/src/TabList/Tab.tsx +3 -10
- 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 +25 -24
- 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 +30 -14
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +19 -0
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +72 -33
- package/src/Table/plugins/sortable/useTableSortable.tsx +2 -6
- package/src/Table/plugins/tree/useTableTreeData.test.tsx +161 -2
- package/src/Table/plugins/tree/useTableTreeData.tsx +97 -25
- package/src/Table/tableContextMenu.test.tsx +27 -0
- package/src/Table/tableContextMenu.tsx +1 -0
- package/src/Table/types.ts +5 -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 +31 -7
- package/src/TextArea/TextArea.test.tsx +186 -7
- package/src/TextArea/TextArea.tsx +156 -52
- package/src/TextInput/TextInput.doc.mjs +5 -5
- package/src/TextInput/TextInput.test.tsx +77 -0
- package/src/TextInput/TextInput.tsx +7 -3
- package/src/Thumbnail/Thumbnail.doc.mjs +2 -2
- package/src/Thumbnail/Thumbnail.test.tsx +24 -1
- package/src/Thumbnail/Thumbnail.tsx +29 -43
- package/src/TimeInput/TimeInput.doc.mjs +5 -5
- package/src/TimeInput/TimeInput.test.tsx +30 -3
- package/src/TimeInput/TimeInput.tsx +6 -2
- package/src/Timestamp/Timestamp.doc.mjs +30 -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 +77 -86
- package/src/Token/TokenLink.tsx +107 -0
- package/src/Token/index.ts +28 -1
- package/src/Tokenizer/Tokenizer.doc.mjs +5 -5
- package/src/Tokenizer/Tokenizer.test.tsx +45 -3
- package/src/Tokenizer/Tokenizer.tsx +11 -3
- 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 +2 -4
- package/src/TopNav/TopNavHeading.doc.mjs +1 -12
- package/src/TopNav/TopNavHeading.tsx +44 -25
- package/src/TopNav/TopNavItem.doc.mjs +1 -1
- package/src/TopNav/TopNavItem.tsx +4 -22
- package/src/TopNav/TopNavMegaMenu.doc.mjs +1 -1
- package/src/TopNav/TopNavMegaMenu.tsx +62 -30
- 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 +3 -10
- package/src/TopNav/TopNavMenu.doc.mjs +1 -1
- package/src/TopNav/TopNavMenu.tsx +34 -32
- package/src/TreeList/TreeList.doc.mjs +8 -3
- package/src/TreeList/TreeList.test.tsx +216 -13
- package/src/TreeList/TreeList.tsx +23 -1
- package/src/TreeList/TreeListBranches.tsx +26 -3
- package/src/TreeList/TreeListItem.tsx +90 -52
- 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 +30 -2
- package/src/Typeahead/Typeahead.doc.mjs +4 -3
- package/src/Typeahead/Typeahead.test.tsx +138 -3
- 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/useImageMode.test.ts +1 -1
- 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/useLongPress.test.tsx +18 -0
- package/src/hooks/useLongPress.ts +12 -2
- package/src/hooks/useMediaQuery.doc.mjs +2 -2
- package/src/hooks/useOverflow.doc.mjs +2 -2
- package/src/hooks/useScrollLock.doc.mjs +2 -2
- package/src/hooks/useScrollOverflow.doc.mjs +2 -2
- package/src/hooks/useStreamingText.doc.mjs +2 -2
- package/src/hooks/useStreamingText.test.ts +46 -1
- package/src/hooks/useStreamingText.ts +49 -7
- 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/hooks/useTypeahead.test.tsx +150 -0
- package/src/hooks/useTypeahead.ts +24 -9
- 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/derivedVarRegistry.test.ts +8 -1
- package/src/theme/derivedVarRegistry.ts +15 -6
- package/src/theme/expandColorScale.test.ts +401 -1
- package/src/theme/expandColorScale.ts +143 -19
- package/src/theme/expandTypeScale.test.ts +43 -0
- package/src/theme/expandTypeScale.ts +17 -0
- package/src/theme/generateThemeRules.test.ts +41 -20
- package/src/theme/generateThemeRules.ts +11 -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/focusOutline.stylex.ts +128 -0
- package/src/utils/rtlStyles.ts +24 -2
- 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
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file Selector.tsx
|
|
7
|
-
* @input Uses React, StyleX, usePopover, useTooltip, Icon, InputGroupContext
|
|
7
|
+
* @input Uses React, StyleX, usePopover, useTooltip, Icon, InputGroupContext,
|
|
8
|
+
* and Selector positioning hooks
|
|
8
9
|
* @output Exports Selector component
|
|
9
10
|
* @position Core implementation; consumed by index.ts
|
|
10
11
|
*
|
|
@@ -13,7 +14,7 @@
|
|
|
13
14
|
* - /packages/core/src/Selector/Selector.test.tsx
|
|
14
15
|
* - /packages/core/src/Selector/index.ts
|
|
15
16
|
* - /apps/storybook/stories/InputGroup.stories.tsx
|
|
16
|
-
* - /packages/cli/templates/blocks/components/Selector/ (showcase blocks)
|
|
17
|
+
* - /packages/cli/assets/templates/blocks/components/Selector/ (showcase blocks)
|
|
17
18
|
*/
|
|
18
19
|
|
|
19
20
|
import React, {
|
|
@@ -43,6 +44,7 @@ import {Divider} from '../Divider';
|
|
|
43
44
|
import {layerAnimations} from '../Layer/layerAnimations.stylex';
|
|
44
45
|
import type {LayerPlacement} from '../Layer/useLayer';
|
|
45
46
|
import {Spinner} from '../Spinner';
|
|
47
|
+
import {TextInput} from '../TextInput';
|
|
46
48
|
import {useAnnounce} from '../hooks/useAnnounce';
|
|
47
49
|
import {
|
|
48
50
|
colorVars,
|
|
@@ -65,6 +67,7 @@ import {
|
|
|
65
67
|
getSelectableOptions,
|
|
66
68
|
} from './utils';
|
|
67
69
|
import {useCombobox, useSelectedItemOffset} from './hooks';
|
|
70
|
+
import {useTypeahead} from '../hooks/useTypeahead';
|
|
68
71
|
import {SelectorOption} from './SelectorOption';
|
|
69
72
|
import {getInputARIA, mergeProps} from '../utils';
|
|
70
73
|
import {useSize} from '../SizeContext/SizeContext';
|
|
@@ -133,25 +136,67 @@ const styles = stylex.create({
|
|
|
133
136
|
whiteSpace: 'nowrap',
|
|
134
137
|
textAlign: 'start',
|
|
135
138
|
},
|
|
139
|
+
// Only what Icon does not already provide: `size="sm"` gives the 16px box
|
|
140
|
+
// and `color` the token, but the glyph still must not shrink inside the flex
|
|
141
|
+
// trigger.
|
|
136
142
|
triggerIcon: {
|
|
137
143
|
flexShrink: 0,
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
144
|
+
},
|
|
145
|
+
// Rotation lives on the chevron glyph itself (passed through `xstyle`), not
|
|
146
|
+
// on the layout wrapper above, so the icon's `selector-indicator-icon` theme
|
|
147
|
+
// target and the open/closed transform sit on one element — a theme can
|
|
148
|
+
// restyle the mark and its rotation through a single selector. The wrapper
|
|
149
|
+
// keeps only layout. The status branch renders a different icon, so it never
|
|
150
|
+
// picks these up and needs no transition opt-out.
|
|
151
|
+
triggerIconRotation: {
|
|
143
152
|
transitionProperty: 'transform',
|
|
144
153
|
transitionDuration: durationVars['--duration-fast'],
|
|
145
154
|
transitionTimingFunction: easeVars['--ease-standard'],
|
|
146
155
|
transformOrigin: 'center',
|
|
147
|
-
color: colorVars['--color-icon-secondary'],
|
|
148
156
|
},
|
|
149
157
|
triggerIconOpen: {
|
|
150
158
|
transform: 'rotate(180deg)',
|
|
151
159
|
},
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
160
|
+
triggerGhost: {
|
|
161
|
+
width: 'auto',
|
|
162
|
+
borderWidth: 0,
|
|
163
|
+
backgroundColor: 'transparent',
|
|
164
|
+
backgroundImage: {
|
|
165
|
+
default: null,
|
|
166
|
+
':hover': {
|
|
167
|
+
'@media (hover: hover)': `linear-gradient(${colorVars['--color-overlay-hover']}, ${colorVars['--color-overlay-hover']})`,
|
|
168
|
+
},
|
|
169
|
+
':active': `linear-gradient(${colorVars['--color-overlay-pressed']}, ${colorVars['--color-overlay-pressed']})`,
|
|
170
|
+
},
|
|
171
|
+
boxShadow: {
|
|
172
|
+
default: 'none',
|
|
173
|
+
':hover:not(:focus-within)': {
|
|
174
|
+
'@media (hover: hover)': 'none',
|
|
175
|
+
},
|
|
176
|
+
':focus-within': 'none',
|
|
177
|
+
},
|
|
178
|
+
fontWeight: fontWeightVars['--font-weight-medium'],
|
|
179
|
+
outline: {
|
|
180
|
+
default: 'none',
|
|
181
|
+
':has(:focus-visible)': `2px solid ${colorVars['--color-accent']}`,
|
|
182
|
+
},
|
|
183
|
+
outlineOffset: {
|
|
184
|
+
default: '0',
|
|
185
|
+
':has(:focus-visible)': '3px',
|
|
186
|
+
},
|
|
187
|
+
transitionProperty:
|
|
188
|
+
'background-image, background-color, color, opacity, transform',
|
|
189
|
+
transform: {
|
|
190
|
+
default: 'scale(1)',
|
|
191
|
+
':active': 'scale(0.98)',
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
triggerGhostDisabled: {
|
|
195
|
+
backgroundImage: 'none',
|
|
196
|
+
transform: {
|
|
197
|
+
default: 'none',
|
|
198
|
+
':active': 'none',
|
|
199
|
+
},
|
|
155
200
|
},
|
|
156
201
|
|
|
157
202
|
// Clear button
|
|
@@ -172,16 +217,40 @@ const styles = stylex.create({
|
|
|
172
217
|
},
|
|
173
218
|
outlineOffset: 1,
|
|
174
219
|
},
|
|
220
|
+
statusButton: {
|
|
221
|
+
display: 'flex',
|
|
222
|
+
alignItems: 'center',
|
|
223
|
+
justifyContent: 'center',
|
|
224
|
+
padding: 0,
|
|
225
|
+
margin: 0,
|
|
226
|
+
borderWidth: 0,
|
|
227
|
+
borderStyle: 'none',
|
|
228
|
+
backgroundColor: 'transparent',
|
|
229
|
+
color: 'inherit',
|
|
230
|
+
cursor: 'pointer',
|
|
231
|
+
borderRadius: radiusVars['--radius-element'],
|
|
232
|
+
outline: {
|
|
233
|
+
default: 'none',
|
|
234
|
+
':focus-visible': `${borderVars['--border-width']} solid ${colorVars['--color-accent']}`,
|
|
235
|
+
},
|
|
236
|
+
outlineOffset: 1,
|
|
237
|
+
},
|
|
175
238
|
|
|
176
239
|
// Dropdown container
|
|
177
240
|
dropdown: {
|
|
178
241
|
boxSizing: 'border-box',
|
|
179
242
|
maxHeight: '300px',
|
|
180
243
|
overflowY: 'auto',
|
|
181
|
-
|
|
244
|
+
paddingBlock: spacingVars['--spacing-1'],
|
|
245
|
+
paddingInline: spacingVars['--spacing-1'],
|
|
182
246
|
opacity: 1,
|
|
183
247
|
transition: `opacity ${durationVars['--duration-fast']}`,
|
|
184
248
|
},
|
|
249
|
+
dropdownInput: {
|
|
250
|
+
// The input trigger's text inset includes its border. Mirror that extra
|
|
251
|
+
// pixel in the menu; the borderless ghost variant needs no correction.
|
|
252
|
+
paddingInline: `calc(${spacingVars['--spacing-1']} + ${borderVars['--border-width']})`,
|
|
253
|
+
},
|
|
185
254
|
dropdownHidden: {
|
|
186
255
|
opacity: 0,
|
|
187
256
|
transition: 'none',
|
|
@@ -191,33 +260,15 @@ const styles = stylex.create({
|
|
|
191
260
|
popover: {
|
|
192
261
|
minWidth: 'anchor-size(width)',
|
|
193
262
|
},
|
|
194
|
-
// Search
|
|
263
|
+
// Search field. The inner TextInput owns the border, focus ring, magnifier
|
|
264
|
+
// (startIcon), and clear button (hasClear); this wrapper only supplies the
|
|
265
|
+
// dropdown's inline/block padding around it.
|
|
195
266
|
searchWrapper: {
|
|
267
|
+
display: 'flex',
|
|
268
|
+
alignItems: 'center',
|
|
196
269
|
paddingInline: spacingVars['--spacing-2'],
|
|
197
270
|
paddingBlock: spacingVars['--spacing-1'],
|
|
198
271
|
},
|
|
199
|
-
searchInput: {
|
|
200
|
-
boxSizing: 'border-box',
|
|
201
|
-
width: '100%',
|
|
202
|
-
paddingBlock: spacingVars['--spacing-1'],
|
|
203
|
-
paddingInline: spacingVars['--spacing-2'],
|
|
204
|
-
borderWidth: borderVars['--border-width'],
|
|
205
|
-
borderStyle: 'solid',
|
|
206
|
-
borderColor: colorVars['--color-border-emphasized'],
|
|
207
|
-
borderRadius: radiusVars['--radius-element'],
|
|
208
|
-
backgroundColor: colorVars['--color-background-surface'],
|
|
209
|
-
fontFamily: typographyVars['--font-family-body'],
|
|
210
|
-
fontSize: {
|
|
211
|
-
default: typeScaleVars['--text-label-size'],
|
|
212
|
-
'@media (pointer: coarse)': `max(1rem, ${typeScaleVars['--text-label-size']})`,
|
|
213
|
-
},
|
|
214
|
-
color: colorVars['--color-text-primary'],
|
|
215
|
-
outline: {
|
|
216
|
-
default: 'none',
|
|
217
|
-
':focus': `${borderVars['--border-width']} solid ${colorVars['--color-accent']}`,
|
|
218
|
-
},
|
|
219
|
-
outlineOffset: '0',
|
|
220
|
-
},
|
|
221
272
|
|
|
222
273
|
// Empty state
|
|
223
274
|
emptyState: {
|
|
@@ -326,8 +377,16 @@ const STATUS_ICON_COLOR_MAP: Record<
|
|
|
326
377
|
success: 'success',
|
|
327
378
|
};
|
|
328
379
|
|
|
380
|
+
const STATUS_BUTTON_LABEL_KEY: Record<SelectorStatusType, string> = {
|
|
381
|
+
warning: '@astryx.input.statusButton.warning',
|
|
382
|
+
error: '@astryx.input.statusButton.error',
|
|
383
|
+
success: '@astryx.input.statusButton.success',
|
|
384
|
+
};
|
|
385
|
+
|
|
329
386
|
export type SelectorSize = 'sm' | 'md' | 'lg';
|
|
330
387
|
|
|
388
|
+
export type SelectorVariant = 'input' | 'ghost';
|
|
389
|
+
|
|
331
390
|
export type SelectorStatusType = 'warning' | 'error' | 'success';
|
|
332
391
|
|
|
333
392
|
export interface SelectorStatus {
|
|
@@ -428,6 +487,14 @@ interface SelectorPropsBase<
|
|
|
428
487
|
*/
|
|
429
488
|
size?: SelectorSize;
|
|
430
489
|
|
|
490
|
+
/**
|
|
491
|
+
* Visual style of the selector trigger.
|
|
492
|
+
* - 'input': bordered input-style trigger for forms
|
|
493
|
+
* - 'ghost': borderless trigger matching ghost buttons, for toolbars
|
|
494
|
+
* @default 'input'
|
|
495
|
+
*/
|
|
496
|
+
variant?: SelectorVariant;
|
|
497
|
+
|
|
431
498
|
/**
|
|
432
499
|
* Status indicator for the selector.
|
|
433
500
|
* When set, displays a colored border and status icon.
|
|
@@ -436,9 +503,10 @@ interface SelectorPropsBase<
|
|
|
436
503
|
status?: SelectorStatus;
|
|
437
504
|
/**
|
|
438
505
|
* How the status message is placed relative to the input.
|
|
439
|
-
* - 'attached': message overlaps directly below the input (
|
|
506
|
+
* - 'attached': message overlaps directly below the bordered input (input variant only)
|
|
440
507
|
* - 'detached': message floats below as a separate element with spacing
|
|
441
|
-
*
|
|
508
|
+
* - 'tooltip': message is exposed from the on-field status icon
|
|
509
|
+
* @default 'attached' for input selectors; 'detached' for ghost selectors
|
|
442
510
|
*/
|
|
443
511
|
statusVariant?: FieldStatusVariant;
|
|
444
512
|
|
|
@@ -607,6 +675,7 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
607
675
|
isLoading = false,
|
|
608
676
|
placeholder: placeholderFromProps,
|
|
609
677
|
size: sizeProp,
|
|
678
|
+
variant = 'input',
|
|
610
679
|
status,
|
|
611
680
|
statusVariant = 'attached',
|
|
612
681
|
labelTooltip,
|
|
@@ -630,6 +699,10 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
630
699
|
searchPlaceholderFromProps ?? t('@astryx.selector.searchPlaceholder');
|
|
631
700
|
const hasClear = hasClearProp === true;
|
|
632
701
|
const size = useSize(sizeProp, 'md');
|
|
702
|
+
const effectiveStatusVariant =
|
|
703
|
+
variant === 'ghost' && statusVariant === 'attached'
|
|
704
|
+
? 'detached'
|
|
705
|
+
: statusVariant;
|
|
633
706
|
|
|
634
707
|
// Normalize null to undefined for internal use (null is the clear sentinel)
|
|
635
708
|
const normalizedValue = value === null ? undefined : value;
|
|
@@ -639,15 +712,22 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
639
712
|
const statusMessageId = useId();
|
|
640
713
|
const inputLabelId = useId();
|
|
641
714
|
const searchId = useId();
|
|
715
|
+
// Measure from the same outer control that usePopover anchors to; using the
|
|
716
|
+
// shorter inner button makes every size's selected row land too low.
|
|
717
|
+
const anchorRef = useRef<HTMLDivElement>(null);
|
|
642
718
|
const triggerRef = useRef<HTMLButtonElement>(null);
|
|
643
719
|
const searchRef = useRef<HTMLInputElement>(null);
|
|
644
720
|
const inputGroup = useInputGroup();
|
|
645
721
|
|
|
646
722
|
const [searchQuery, setSearchQuery] = useState('');
|
|
723
|
+
// A typed query shows TextInput's built-in clear (✕) button, which becomes
|
|
724
|
+
// the next tab stop after the search input.
|
|
725
|
+
const hasQuery = searchQuery.length > 0;
|
|
647
726
|
|
|
648
727
|
const [, startTransition] = useTransition();
|
|
649
728
|
const [optimisticValue, setOptimisticValue] = useOptimistic(normalizedValue);
|
|
650
729
|
const isBusy = isLoading || optimisticValue !== normalizedValue;
|
|
730
|
+
const announce = useAnnounce();
|
|
651
731
|
|
|
652
732
|
// Disabled-reason tooltip. Disabled controls swallow pointer events, so the
|
|
653
733
|
// tooltip listeners attach to the trigger container (which already exists)
|
|
@@ -662,12 +742,21 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
662
742
|
focusTrigger: 'always',
|
|
663
743
|
isEnabled: showsDisabledMessage,
|
|
664
744
|
});
|
|
745
|
+
const statusTooltip = useTooltip({
|
|
746
|
+
placement: 'above',
|
|
747
|
+
isEnabled: effectiveStatusVariant === 'tooltip' && !!status?.message,
|
|
748
|
+
});
|
|
665
749
|
|
|
666
750
|
const {ariaLabelledBy, ariaDescribedBy} = getInputARIA(
|
|
667
751
|
inputLabelId,
|
|
668
752
|
[
|
|
669
753
|
description ? descriptionId : null,
|
|
670
|
-
|
|
754
|
+
!inputGroup && effectiveStatusVariant !== 'tooltip' && status?.message
|
|
755
|
+
? statusMessageId
|
|
756
|
+
: null,
|
|
757
|
+
effectiveStatusVariant === 'tooltip' && status?.message
|
|
758
|
+
? statusTooltip.describedBy
|
|
759
|
+
: null,
|
|
671
760
|
showsDisabledMessage ? disabledMessageTooltip.describedBy : null,
|
|
672
761
|
],
|
|
673
762
|
inputGroup,
|
|
@@ -699,15 +788,15 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
699
788
|
// Ref for listbox to measure selected item position
|
|
700
789
|
const listboxRef = useRef<HTMLDivElement>(null);
|
|
701
790
|
|
|
702
|
-
//
|
|
703
|
-
//
|
|
704
|
-
//
|
|
705
|
-
|
|
706
|
-
const announce = useAnnounce();
|
|
791
|
+
// Typeahead is defined below (it needs the popover), but closing and clearing
|
|
792
|
+
// must drop its pending buffer — otherwise a stale prefix survives the reset
|
|
793
|
+
// window and poisons the next keystroke ("Dog" then "c" would search "dc").
|
|
794
|
+
const resetTypeaheadRef = useRef<() => void>(() => {});
|
|
707
795
|
|
|
708
796
|
// Layer for dropdown positioning
|
|
709
797
|
const handleLayerHide = useCallback(() => {
|
|
710
798
|
setSearchQuery('');
|
|
799
|
+
resetTypeaheadRef.current();
|
|
711
800
|
// Clear any lingering result count when the popover closes so stale status
|
|
712
801
|
// text does not linger in the a11y tree.
|
|
713
802
|
announce('');
|
|
@@ -737,8 +826,7 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
737
826
|
// next query here fires the announcement exactly once per keystroke and does
|
|
738
827
|
// not re-speak on unrelated re-renders.
|
|
739
828
|
const handleSearchChange = useCallback(
|
|
740
|
-
(
|
|
741
|
-
const nextQuery = event.target.value;
|
|
829
|
+
(nextQuery: string) => {
|
|
742
830
|
setSearchQuery(nextQuery);
|
|
743
831
|
if (nextQuery.length === 0) {
|
|
744
832
|
// Emptying the query clears the region rather than announcing a count.
|
|
@@ -765,7 +853,7 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
765
853
|
selectedItemIndex,
|
|
766
854
|
listboxId,
|
|
767
855
|
listboxRef,
|
|
768
|
-
|
|
856
|
+
anchorRef,
|
|
769
857
|
});
|
|
770
858
|
|
|
771
859
|
const selectedItemOffset = shouldOverlaySelectedItem ? rawOffset : 0;
|
|
@@ -779,6 +867,7 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
779
867
|
// Clear the current value. Shared by the clear button and the keyboard
|
|
780
868
|
// Delete/Backspace path so clearing is reachable without a mouse.
|
|
781
869
|
const clearValue = useCallback(() => {
|
|
870
|
+
resetTypeaheadRef.current();
|
|
782
871
|
onChange?.(null);
|
|
783
872
|
if (changeAction) {
|
|
784
873
|
startTransition(async () => {
|
|
@@ -788,10 +877,29 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
788
877
|
}
|
|
789
878
|
}, [onChange, changeAction, startTransition, setOptimisticValue]);
|
|
790
879
|
|
|
791
|
-
//
|
|
880
|
+
// Type-to-find appends to the query rather than replacing it: characters
|
|
881
|
+
// typed before focus reaches the search input must not be dropped.
|
|
882
|
+
const appendSearchQuery = useCallback((char: string) => {
|
|
883
|
+
setSearchQuery(query => query + char);
|
|
884
|
+
}, []);
|
|
885
|
+
|
|
886
|
+
const commitValue = useCallback(
|
|
887
|
+
(newValue: string) => {
|
|
888
|
+
onChange?.(newValue);
|
|
889
|
+
if (changeAction) {
|
|
890
|
+
startTransition(async () => {
|
|
891
|
+
setOptimisticValue(newValue);
|
|
892
|
+
await changeAction(newValue);
|
|
893
|
+
});
|
|
894
|
+
}
|
|
895
|
+
},
|
|
896
|
+
[onChange, changeAction, startTransition, setOptimisticValue],
|
|
897
|
+
);
|
|
898
|
+
|
|
899
|
+
// Selector behavior (keyboard nav, selection)
|
|
792
900
|
const {
|
|
793
901
|
highlightedIndex,
|
|
794
|
-
setHighlightedIndex
|
|
902
|
+
setHighlightedIndex,
|
|
795
903
|
getItemId,
|
|
796
904
|
onTriggerClick,
|
|
797
905
|
onKeyDown,
|
|
@@ -799,7 +907,11 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
799
907
|
onItemMouseEnter,
|
|
800
908
|
} = useCombobox({
|
|
801
909
|
selectableItems: filteredItems,
|
|
802
|
-
value:
|
|
910
|
+
// The optimistic value, not the raw prop: with a pending changeAction the
|
|
911
|
+
// prop still holds the old selection, so the popup would open with the
|
|
912
|
+
// highlight on it and Delete/Backspace could clear a value the action has
|
|
913
|
+
// already replaced.
|
|
914
|
+
value: optimisticValue,
|
|
803
915
|
isDisabled,
|
|
804
916
|
isOpen: popover.isOpen,
|
|
805
917
|
hasSearch,
|
|
@@ -807,27 +919,61 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
807
919
|
popover.show();
|
|
808
920
|
if (hasSearch) {
|
|
809
921
|
requestAnimationFrame(() => {
|
|
810
|
-
searchRef.current
|
|
922
|
+
const input = searchRef.current;
|
|
923
|
+
if (input) {
|
|
924
|
+
input.focus();
|
|
925
|
+
// When typing seeded the query, place the caret after it so the
|
|
926
|
+
// user keeps typing where they left off.
|
|
927
|
+
input.setSelectionRange(input.value.length, input.value.length);
|
|
928
|
+
}
|
|
811
929
|
});
|
|
812
930
|
}
|
|
813
931
|
}, [popover, hasSearch]),
|
|
814
932
|
onClose: popover.hide,
|
|
815
|
-
onSelect:
|
|
816
|
-
(newValue: string) => {
|
|
817
|
-
onChange?.(newValue);
|
|
818
|
-
if (changeAction) {
|
|
819
|
-
startTransition(async () => {
|
|
820
|
-
setOptimisticValue(newValue);
|
|
821
|
-
await changeAction(newValue);
|
|
822
|
-
});
|
|
823
|
-
}
|
|
824
|
-
},
|
|
825
|
-
[onChange, changeAction, startTransition, setOptimisticValue],
|
|
826
|
-
),
|
|
933
|
+
onSelect: commitValue,
|
|
827
934
|
onClear: hasClear ? clearValue : undefined,
|
|
935
|
+
onSearchSeed: appendSearchQuery,
|
|
828
936
|
listboxId,
|
|
829
937
|
});
|
|
830
938
|
|
|
939
|
+
// Type-to-select, shared with the other collections (menus, listboxes).
|
|
940
|
+
// Open, it walks the highlight — aria-activedescendant announces each match.
|
|
941
|
+
// Closed, it commits the match like a native select, which changes the value
|
|
942
|
+
// without opening the popup or moving focus, so nothing else would prompt
|
|
943
|
+
// assistive tech to re-read the trigger: announce it explicitly.
|
|
944
|
+
const typeahead = useTypeahead({
|
|
945
|
+
getItemLabels: () => selectableItems.map(item => item.label ?? item.value),
|
|
946
|
+
isDisabled: index => selectableItems[index]?.disabled === true,
|
|
947
|
+
// Cycle onward from the highlight when open, from the committed selection
|
|
948
|
+
// when closed — the optimistic one, so a pending changeAction cannot strand
|
|
949
|
+
// cycling on the first match. -1 means nothing is selected or highlighted,
|
|
950
|
+
// which the hook reads as "search from the top".
|
|
951
|
+
getCurrentIndex: () =>
|
|
952
|
+
popover.isOpen ? highlightedIndex : selectedItemIndex,
|
|
953
|
+
onMatch: index => {
|
|
954
|
+
const item = selectableItems[index];
|
|
955
|
+
if (popover.isOpen) {
|
|
956
|
+
setHighlightedIndex(index);
|
|
957
|
+
} else if (item.value !== optimisticValue) {
|
|
958
|
+
commitValue(item.value);
|
|
959
|
+
announce(item.label ?? item.value);
|
|
960
|
+
}
|
|
961
|
+
},
|
|
962
|
+
});
|
|
963
|
+
resetTypeaheadRef.current = typeahead.reset;
|
|
964
|
+
|
|
965
|
+
const handleTriggerKeyDown = useCallback(
|
|
966
|
+
(e: React.KeyboardEvent) => {
|
|
967
|
+
// With hasSearch the query input owns typing, so type-to-select is off.
|
|
968
|
+
if (!isDisabled && !hasSearch && typeahead.onKeyDown(e)) {
|
|
969
|
+
e.preventDefault();
|
|
970
|
+
return;
|
|
971
|
+
}
|
|
972
|
+
onKeyDown(e);
|
|
973
|
+
},
|
|
974
|
+
[isDisabled, hasSearch, typeahead, onKeyDown],
|
|
975
|
+
);
|
|
976
|
+
|
|
831
977
|
// Keep the highlighted option visible during keyboard navigation. The
|
|
832
978
|
// listbox is a fixed-height scroll container, so without this the virtual
|
|
833
979
|
// cursor walks off-screen once navigation passes the visible window. Mirrors
|
|
@@ -856,14 +1002,42 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
856
1002
|
return null;
|
|
857
1003
|
}
|
|
858
1004
|
return (
|
|
859
|
-
<div
|
|
860
|
-
|
|
1005
|
+
<div
|
|
1006
|
+
{...stylex.props(styles.searchWrapper)}
|
|
1007
|
+
onKeyDown={e => {
|
|
1008
|
+
// The clear (✕) button lives inside the TextInput, after the input in
|
|
1009
|
+
// DOM order. When it is focused and the user tabs forward there is
|
|
1010
|
+
// nothing else in the popup, so dismiss it (Shift+Tab returns to the
|
|
1011
|
+
// input natively). Key events originating on the input are handled on
|
|
1012
|
+
// the input below; ignore them here so we don't double-dismiss.
|
|
1013
|
+
if (e.target === searchRef.current) {
|
|
1014
|
+
return;
|
|
1015
|
+
}
|
|
1016
|
+
if (e.key === 'Tab' && !e.shiftKey) {
|
|
1017
|
+
onKeyDown(e);
|
|
1018
|
+
}
|
|
1019
|
+
}}>
|
|
1020
|
+
<TextInput
|
|
861
1021
|
ref={searchRef}
|
|
862
1022
|
id={searchId}
|
|
1023
|
+
// The search field IS a TextInput: the leading magnifier is its
|
|
1024
|
+
// `startIcon` and the trailing clear (✕) is its built-in `hasClear`
|
|
1025
|
+
// (which resets the value and refocuses the input). We add no bespoke
|
|
1026
|
+
// affordance chrome — the field just looks and behaves like every
|
|
1027
|
+
// other Astryx input.
|
|
1028
|
+
label={t('@astryx.selector.searchOptions')}
|
|
1029
|
+
isLabelHidden
|
|
1030
|
+
startIcon="search"
|
|
1031
|
+
hasClear
|
|
1032
|
+
size="sm"
|
|
1033
|
+
// Fill the dropdown's width (minus the wrapper's inline padding) so
|
|
1034
|
+
// the field is flush end-to-end rather than sized to its content.
|
|
1035
|
+
width="100%"
|
|
863
1036
|
// When hasSearch is set, focus moves into this input on open, so it —
|
|
864
1037
|
// not the trigger — must be the combobox that reports the highlighted
|
|
865
1038
|
// option via aria-activedescendant (comboboxes-4). A bare searchbox
|
|
866
|
-
// left the highlight silent to screen readers.
|
|
1039
|
+
// left the highlight silent to screen readers. role + aria-* pass
|
|
1040
|
+
// through to the underlying <input> via BaseProps.
|
|
867
1041
|
role="combobox"
|
|
868
1042
|
aria-expanded={popover.isOpen}
|
|
869
1043
|
aria-controls={listboxId}
|
|
@@ -873,12 +1047,10 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
873
1047
|
? getItemId(highlightedIndex)
|
|
874
1048
|
: undefined
|
|
875
1049
|
}
|
|
876
|
-
aria-label={t('@astryx.selector.searchOptions')}
|
|
877
|
-
type="text"
|
|
878
1050
|
value={searchQuery}
|
|
879
1051
|
onChange={handleSearchChange}
|
|
880
1052
|
onKeyDown={e => {
|
|
881
|
-
// Arrow keys navigate options; Enter selects; Escape
|
|
1053
|
+
// Arrow keys navigate options; Enter selects; Escape closes.
|
|
882
1054
|
// Home/End are left to the input for caret movement (APG editable
|
|
883
1055
|
// combobox); PageUp/PageDown are the sanctioned substitute for
|
|
884
1056
|
// jumping to the first/last option.
|
|
@@ -888,14 +1060,19 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
888
1060
|
e.key === 'PageUp' ||
|
|
889
1061
|
e.key === 'PageDown' ||
|
|
890
1062
|
e.key === 'Enter' ||
|
|
891
|
-
e.key === 'Escape'
|
|
892
|
-
e.key === 'Tab'
|
|
1063
|
+
e.key === 'Escape'
|
|
893
1064
|
) {
|
|
894
1065
|
onKeyDown(e);
|
|
1066
|
+
return;
|
|
1067
|
+
}
|
|
1068
|
+
// Tab: when a query is showing the clear (✕) button, forward-tab
|
|
1069
|
+
// moves focus to it (keeping the popup open) so the affordance is
|
|
1070
|
+
// keyboard-reachable. Every other Tab dismisses the popup as usual.
|
|
1071
|
+
if (e.key === 'Tab' && (e.shiftKey || !hasQuery)) {
|
|
1072
|
+
onKeyDown(e);
|
|
895
1073
|
}
|
|
896
1074
|
}}
|
|
897
1075
|
placeholder={searchPlaceholder}
|
|
898
|
-
{...stylex.props(styles.searchInput)}
|
|
899
1076
|
/>
|
|
900
1077
|
</div>
|
|
901
1078
|
);
|
|
@@ -904,6 +1081,7 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
904
1081
|
searchId,
|
|
905
1082
|
listboxId,
|
|
906
1083
|
searchQuery,
|
|
1084
|
+
hasQuery,
|
|
907
1085
|
searchPlaceholder,
|
|
908
1086
|
handleSearchChange,
|
|
909
1087
|
onKeyDown,
|
|
@@ -942,7 +1120,17 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
942
1120
|
<DefaultOption option={item} />
|
|
943
1121
|
)}
|
|
944
1122
|
</span>
|
|
945
|
-
{isSelected &&
|
|
1123
|
+
{isSelected && (
|
|
1124
|
+
<Icon
|
|
1125
|
+
icon="check"
|
|
1126
|
+
size="sm"
|
|
1127
|
+
color="accent"
|
|
1128
|
+
// Stable theme target on the selected-row marker, so a theme can
|
|
1129
|
+
// restyle or hide it (e.g. to compose its own selected indicator
|
|
1130
|
+
// via renderOption) without a structural sibling selector.
|
|
1131
|
+
{...themeProps('selector-check')}
|
|
1132
|
+
/>
|
|
1133
|
+
)}
|
|
946
1134
|
</div>
|
|
947
1135
|
);
|
|
948
1136
|
},
|
|
@@ -963,8 +1151,18 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
963
1151
|
|
|
964
1152
|
// Nothing matched across every group/option: show the empty state.
|
|
965
1153
|
if (isSearching && filteredItems.length === 0) {
|
|
1154
|
+
// role="presentation" keeps the message out of the listbox's
|
|
1155
|
+
// accessibility tree (role="listbox" only permits option/group
|
|
1156
|
+
// children); the no-results outcome is announced via the
|
|
1157
|
+
// result-count live region instead.
|
|
966
1158
|
return [
|
|
967
|
-
<div
|
|
1159
|
+
<div
|
|
1160
|
+
key="empty"
|
|
1161
|
+
role="presentation"
|
|
1162
|
+
{...mergeProps(
|
|
1163
|
+
themeProps('selector-empty-state'),
|
|
1164
|
+
stylex.props(styles.emptyState),
|
|
1165
|
+
)}>
|
|
968
1166
|
No results found
|
|
969
1167
|
</div>,
|
|
970
1168
|
];
|
|
@@ -1025,10 +1223,18 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
1025
1223
|
return elements;
|
|
1026
1224
|
}, [options, renderItem, hasSearch, searchQuery, filteredItems]);
|
|
1027
1225
|
|
|
1226
|
+
// The detached message box renders its own leading status icon, so the
|
|
1227
|
+
// on-field icon would duplicate it — keep the chevron indicator instead.
|
|
1228
|
+
const showStatusIcon =
|
|
1229
|
+
status != null && effectiveStatusVariant !== 'detached';
|
|
1230
|
+
const showStatusTooltip =
|
|
1231
|
+
status != null && effectiveStatusVariant === 'tooltip' && !!status.message;
|
|
1232
|
+
|
|
1028
1233
|
const selectorContent = (
|
|
1029
1234
|
<>
|
|
1030
1235
|
<div
|
|
1031
1236
|
ref={el => {
|
|
1237
|
+
anchorRef.current = el;
|
|
1032
1238
|
popover.triggerRef(el);
|
|
1033
1239
|
// Anchor + hover/focus listeners for the disabled-message tooltip.
|
|
1034
1240
|
// Handlers are gated internally by isEnabled, and anchor names
|
|
@@ -1038,16 +1244,28 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
1038
1244
|
onClick={onTriggerClick}
|
|
1039
1245
|
data-testid={testId}
|
|
1040
1246
|
{...mergeProps(
|
|
1041
|
-
themeProps('selector', {
|
|
1247
|
+
themeProps('selector', {
|
|
1248
|
+
variant,
|
|
1249
|
+
size,
|
|
1250
|
+
status: status?.type ?? null,
|
|
1251
|
+
disabled: isDisabled ? 'disabled' : null,
|
|
1252
|
+
}),
|
|
1042
1253
|
stylex.props(
|
|
1043
1254
|
inputWrapperStyles.base,
|
|
1044
1255
|
styles.triggerContainer,
|
|
1045
1256
|
sizeStyles[size],
|
|
1257
|
+
variant === 'ghost' && styles.triggerGhost,
|
|
1046
1258
|
isDisabled && inputWrapperStyles.disabled,
|
|
1259
|
+
variant === 'ghost' && isDisabled && styles.triggerGhostDisabled,
|
|
1047
1260
|
!selectedItem && styles.triggerPlaceholder,
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1261
|
+
variant !== 'ghost' &&
|
|
1262
|
+
status &&
|
|
1263
|
+
inputStatusBorderStyles[status.type],
|
|
1264
|
+
variant !== 'ghost' &&
|
|
1265
|
+
status &&
|
|
1266
|
+
!isDisabled &&
|
|
1267
|
+
inputStatusHoverShadowStyles[status.type],
|
|
1268
|
+
variant !== 'ghost' && inputGroup && groupStyles.inGroup,
|
|
1051
1269
|
xstyle,
|
|
1052
1270
|
),
|
|
1053
1271
|
className,
|
|
@@ -1085,7 +1303,7 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
1085
1303
|
// still blocked by the isDisabled guards in useCombobox.
|
|
1086
1304
|
disabled={isDisabled && !showsDisabledMessage}
|
|
1087
1305
|
aria-disabled={showsDisabledMessage ? 'true' : undefined}
|
|
1088
|
-
onKeyDown={
|
|
1306
|
+
onKeyDown={handleTriggerKeyDown}
|
|
1089
1307
|
tabIndex={isDisabled && !showsDisabledMessage ? -1 : 0}
|
|
1090
1308
|
{...stylex.props(styles.trigger)}>
|
|
1091
1309
|
<span {...stylex.props(styles.triggerLabel)}>
|
|
@@ -1122,23 +1340,49 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
1122
1340
|
/>
|
|
1123
1341
|
</button>
|
|
1124
1342
|
)}
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1343
|
+
{/*
|
|
1344
|
+
No wrapper span: Icon's own span already provides the 16px box (`sm`)
|
|
1345
|
+
and the icon color, so the status glyph and the chevron are each
|
|
1346
|
+
directly targetable instead of sharing one untargetable parent — and
|
|
1347
|
+
the two affordances stop sharing a node.
|
|
1348
|
+
*/}
|
|
1349
|
+
{showStatusIcon ? (
|
|
1350
|
+
showStatusTooltip ? (
|
|
1351
|
+
<button
|
|
1352
|
+
ref={statusTooltip.ref}
|
|
1353
|
+
type="button"
|
|
1354
|
+
aria-label={t(STATUS_BUTTON_LABEL_KEY[status.type])}
|
|
1355
|
+
aria-describedby={statusTooltip.describedBy}
|
|
1356
|
+
onClick={e => e.stopPropagation()}
|
|
1357
|
+
{...stylex.props(styles.statusButton)}>
|
|
1358
|
+
<Icon
|
|
1359
|
+
icon={STATUS_ICON_MAP[status.type]}
|
|
1360
|
+
size="sm"
|
|
1361
|
+
color={STATUS_ICON_COLOR_MAP[status.type]}
|
|
1362
|
+
xstyle={styles.triggerIcon}
|
|
1363
|
+
/>
|
|
1364
|
+
</button>
|
|
1365
|
+
) : (
|
|
1366
|
+
<Icon
|
|
1367
|
+
icon={STATUS_ICON_MAP[status.type]}
|
|
1368
|
+
size="sm"
|
|
1369
|
+
color={STATUS_ICON_COLOR_MAP[status.type]}
|
|
1370
|
+
xstyle={styles.triggerIcon}
|
|
1371
|
+
/>
|
|
1372
|
+
)
|
|
1137
1373
|
) : (
|
|
1138
1374
|
<Icon
|
|
1139
1375
|
icon="chevronDown"
|
|
1140
1376
|
size="sm"
|
|
1141
|
-
color="
|
|
1377
|
+
color="secondary"
|
|
1378
|
+
// The rotation rides on the glyph, alongside the box and color
|
|
1379
|
+
// the wrapper used to provide, so one element carries the mark,
|
|
1380
|
+
// its open/closed transform, and the theme target.
|
|
1381
|
+
xstyle={[
|
|
1382
|
+
styles.triggerIcon,
|
|
1383
|
+
styles.triggerIconRotation,
|
|
1384
|
+
popover.isOpen && styles.triggerIconOpen,
|
|
1385
|
+
]}
|
|
1142
1386
|
// Stable theme target on the chevron glyph itself, so a theme can
|
|
1143
1387
|
// restyle just this icon (color, size, hover) — and its
|
|
1144
1388
|
// open/closed state — via `defineTheme`. Same-element rules in
|
|
@@ -1147,9 +1391,8 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
1147
1391
|
{...themeProps('selector-indicator-icon', {
|
|
1148
1392
|
state: popover.isOpen ? 'expanded' : 'collapsed',
|
|
1149
1393
|
})}
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
</span>
|
|
1394
|
+
/>
|
|
1395
|
+
)}
|
|
1153
1396
|
</div>
|
|
1154
1397
|
|
|
1155
1398
|
{popover.render(
|
|
@@ -1161,7 +1404,10 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
1161
1404
|
id={listboxId}
|
|
1162
1405
|
role="listbox"
|
|
1163
1406
|
aria-labelledby={triggerId}
|
|
1164
|
-
{...stylex.props(
|
|
1407
|
+
{...stylex.props(
|
|
1408
|
+
styles.dropdown,
|
|
1409
|
+
variant !== 'ghost' && styles.dropdownInput,
|
|
1410
|
+
)}>
|
|
1165
1411
|
{renderOptions()}
|
|
1166
1412
|
</div>
|
|
1167
1413
|
</div>
|
|
@@ -1173,6 +1419,7 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
1173
1419
|
aria-labelledby={triggerId}
|
|
1174
1420
|
{...stylex.props(
|
|
1175
1421
|
styles.dropdown,
|
|
1422
|
+
variant !== 'ghost' && styles.dropdownInput,
|
|
1176
1423
|
!isPositioned && styles.dropdownHidden,
|
|
1177
1424
|
)}>
|
|
1178
1425
|
{renderOptions()}
|
|
@@ -1186,6 +1433,8 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
1186
1433
|
},
|
|
1187
1434
|
)}
|
|
1188
1435
|
|
|
1436
|
+
{showStatusTooltip && statusTooltip.renderTooltip(status?.message ?? '')}
|
|
1437
|
+
|
|
1189
1438
|
{showsDisabledMessage &&
|
|
1190
1439
|
disabledMessageTooltip.renderTooltip(disabledMessage)}
|
|
1191
1440
|
</>
|
|
@@ -1214,7 +1463,7 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
1214
1463
|
}
|
|
1215
1464
|
: undefined
|
|
1216
1465
|
}
|
|
1217
|
-
statusVariant={
|
|
1466
|
+
statusVariant={effectiveStatusVariant}
|
|
1218
1467
|
labelTooltip={labelTooltip}
|
|
1219
1468
|
width={width}>
|
|
1220
1469
|
{selectorContent}
|