@astryxdesign/core 0.2.0 → 0.3.0-canary.060cc9d
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 +35 -14
- 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 +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.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.d.ts +9 -2
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +4 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts +9 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +4 -2
- package/dist/DateTimeInput/DateTimeInput.d.ts +9 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +4 -2
- 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 +173 -79
- 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 +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 +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 +174 -52
- package/dist/Pagination/index.d.ts +22 -1
- package/dist/Pagination/index.d.ts.map +1 -1
- package/dist/Pagination/index.js +14 -0
- package/dist/Popover/Popover.d.ts +20 -3
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +5 -1
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +14 -3
- package/dist/PowerSearch/PowerSearch.d.ts +1 -1
- package/dist/PowerSearch/PowerSearch.js +1 -1
- package/dist/ProgressBar/ProgressBar.d.ts +56 -22
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +169 -22
- package/dist/ProgressBar/ProgressBarMarkTooltip.d.ts +27 -0
- package/dist/ProgressBar/ProgressBarMarkTooltip.d.ts.map +1 -0
- package/dist/ProgressBar/ProgressBarMarkTooltip.js +35 -0
- package/dist/ProgressBar/index.d.ts +21 -1
- package/dist/ProgressBar/index.d.ts.map +1 -1
- package/dist/ProgressBar/index.js +14 -0
- package/dist/RadioList/RadioList.d.ts +1 -1
- package/dist/RadioList/RadioList.js +1 -1
- package/dist/RadioList/RadioListItem.d.ts +1 -1
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +2 -2
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +15 -11
- package/dist/Section/Section.d.ts +2 -19
- package/dist/Section/Section.d.ts.map +1 -1
- package/dist/Section/Section.js +1 -15
- package/dist/Section/index.d.ts +19 -1
- package/dist/Section/index.d.ts.map +1 -1
- package/dist/Section/index.js +14 -0
- package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControl.js +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +4 -3
- package/dist/SelectableCard/SelectableCard.d.ts +4 -3
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +15 -3
- package/dist/Selector/Selector.d.ts +14 -4
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +137 -28
- package/dist/Selector/hooks.d.ts +4 -4
- package/dist/Selector/hooks.d.ts.map +1 -1
- package/dist/Selector/hooks.js +38 -19
- package/dist/SideNav/SideNav.d.ts +1 -1
- package/dist/SideNav/SideNav.js +1 -1
- package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseButton.js +4 -3
- package/dist/SideNav/SideNavHeading.d.ts +1 -1
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +8 -7
- package/dist/SideNav/SideNavItem.d.ts +2 -2
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +6 -7
- package/dist/SideNav/SideNavSection.d.ts +1 -1
- package/dist/SideNav/SideNavSection.js +1 -1
- package/dist/Skeleton/Skeleton.d.ts +1 -1
- package/dist/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/Skeleton/Skeleton.js +3 -3
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +78 -68
- package/dist/Spinner/Spinner.d.ts +1 -1
- package/dist/Spinner/Spinner.js +1 -1
- package/dist/Stack/Stack.d.ts +1 -1
- package/dist/Stack/Stack.js +1 -1
- package/dist/Stack/StackItem.d.ts +1 -1
- package/dist/Stack/StackItem.js +1 -1
- package/dist/Stack/stack.stylex.d.ts +3 -3
- package/dist/StatusDot/StatusDot.d.ts +1 -20
- package/dist/StatusDot/StatusDot.d.ts.map +1 -1
- package/dist/StatusDot/StatusDot.js +2 -17
- package/dist/StatusDot/index.d.ts +21 -1
- package/dist/StatusDot/index.d.ts.map +1 -1
- package/dist/StatusDot/index.js +14 -0
- package/dist/Switch/Switch.d.ts +2 -6
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +28 -20
- 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 +27 -11
- 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.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 +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 +27 -16
- 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 +117 -37
- 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/useLongPress.d.ts.map +1 -1
- package/dist/hooks/useLongPress.js +12 -2
- 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/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +0 -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/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 +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 +124 -0
- package/locales/pseudo.json +93 -0
- package/package.json +9 -13
- package/src/AlertDialog/AlertDialog.doc.mjs +3 -3
- package/src/AlertDialog/AlertDialog.tsx +1 -1
- package/src/AlertDialog/useImperativeAlertDialog.doc.mjs +1 -1
- package/src/AppShell/AppShell.doc.mjs +3 -3
- package/src/AppShell/AppShell.test.tsx +55 -0
- package/src/AppShell/AppShell.tsx +27 -22
- package/src/AppShell/index.ts +20 -1
- package/src/AppShell/useAppShellMobile.doc.mjs +2 -2
- package/src/AspectRatio/AspectRatio.doc.mjs +3 -3
- package/src/AspectRatio/AspectRatio.tsx +1 -1
- package/src/Avatar/Avatar.doc.mjs +4 -15
- package/src/Avatar/Avatar.test.tsx +33 -8
- package/src/Avatar/Avatar.tsx +58 -25
- 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 +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.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 +220 -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 +17 -3
- package/src/DateInput/DateInput.test.tsx +62 -3
- package/src/DateInput/DateInput.tsx +18 -2
- package/src/DateRangeInput/DateRangeInput.doc.mjs +10 -2
- package/src/DateRangeInput/DateRangeInput.test.tsx +73 -2
- package/src/DateRangeInput/DateRangeInput.tsx +18 -2
- package/src/DateTimeInput/DateTimeInput.doc.mjs +17 -3
- package/src/DateTimeInput/DateTimeInput.test.tsx +62 -2
- package/src/DateTimeInput/DateTimeInput.tsx +18 -2
- 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 +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 +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 +4 -4
- 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 +582 -0
- package/src/Pagination/Pagination.tsx +247 -55
- package/src/Pagination/index.ts +22 -1
- package/src/Popover/Popover.doc.mjs +31 -3
- package/src/Popover/Popover.test.tsx +41 -0
- package/src/Popover/Popover.tsx +25 -2
- package/src/Popover/usePopover.doc.mjs +2 -2
- package/src/Popover/usePopover.tsx +10 -4
- package/src/PowerSearch/PowerSearch.doc.mjs +3 -3
- package/src/PowerSearch/PowerSearch.tsx +1 -1
- package/src/ProgressBar/ProgressBar.doc.mjs +24 -3
- package/src/ProgressBar/ProgressBar.test.tsx +523 -2
- package/src/ProgressBar/ProgressBar.tsx +250 -25
- package/src/ProgressBar/ProgressBarMarkTooltip.tsx +43 -0
- package/src/ProgressBar/index.ts +22 -1
- package/src/RadioList/RadioList.doc.mjs +3 -3
- package/src/RadioList/RadioList.test.tsx +26 -4
- package/src/RadioList/RadioList.tsx +1 -1
- package/src/RadioList/RadioListItem.doc.mjs +1 -1
- package/src/RadioList/RadioListItem.tsx +9 -2
- package/src/Resizable/Resizable.doc.mjs +2 -2
- package/src/Resizable/ResizeHandle.test.tsx +52 -3
- package/src/Resizable/ResizeHandle.tsx +25 -13
- package/src/Resizable/useResizable.doc.mjs +2 -2
- package/src/Section/Section.doc.mjs +3 -3
- package/src/Section/Section.tsx +2 -20
- package/src/Section/index.ts +20 -5
- package/src/SegmentedControl/SegmentedControl.doc.mjs +3 -3
- package/src/SegmentedControl/SegmentedControl.test.tsx +28 -0
- package/src/SegmentedControl/SegmentedControl.tsx +1 -1
- package/src/SegmentedControl/SegmentedControlItem.doc.mjs +1 -1
- package/src/SegmentedControl/SegmentedControlItem.tsx +21 -3
- package/src/SelectableCard/SelectableCard.doc.mjs +4 -2
- package/src/SelectableCard/SelectableCard.test.tsx +55 -0
- package/src/SelectableCard/SelectableCard.tsx +19 -3
- package/src/Selector/Selector.doc.mjs +29 -8
- package/src/Selector/Selector.test.tsx +447 -9
- package/src/Selector/Selector.tsx +232 -57
- package/src/Selector/SelectorOption.doc.mjs +1 -1
- package/src/Selector/hooks.ts +45 -21
- 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 +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 +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 +30 -11
- 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 +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 +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 +2 -4
- 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 +35 -11
- 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/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/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/derivedVarRegistry.test.ts +0 -1
- package/src/theme/derivedVarRegistry.ts +0 -6
- package/src/theme/expandColorScale.test.ts +401 -1
- package/src/theme/expandColorScale.ts +143 -19
- package/src/theme/generateThemeRules.test.ts +20 -20
- 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 +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,
|
|
@@ -153,6 +155,47 @@ const styles = stylex.create({
|
|
|
153
155
|
// Disable rotation transition for status icons
|
|
154
156
|
transition: 'none',
|
|
155
157
|
},
|
|
158
|
+
triggerGhost: {
|
|
159
|
+
width: 'auto',
|
|
160
|
+
borderWidth: 0,
|
|
161
|
+
backgroundColor: 'transparent',
|
|
162
|
+
backgroundImage: {
|
|
163
|
+
default: null,
|
|
164
|
+
':hover': {
|
|
165
|
+
'@media (hover: hover)': `linear-gradient(${colorVars['--color-overlay-hover']}, ${colorVars['--color-overlay-hover']})`,
|
|
166
|
+
},
|
|
167
|
+
':active': `linear-gradient(${colorVars['--color-overlay-pressed']}, ${colorVars['--color-overlay-pressed']})`,
|
|
168
|
+
},
|
|
169
|
+
boxShadow: {
|
|
170
|
+
default: 'none',
|
|
171
|
+
':hover:not(:focus-within)': {
|
|
172
|
+
'@media (hover: hover)': 'none',
|
|
173
|
+
},
|
|
174
|
+
':focus-within': 'none',
|
|
175
|
+
},
|
|
176
|
+
fontWeight: fontWeightVars['--font-weight-medium'],
|
|
177
|
+
outline: {
|
|
178
|
+
default: 'none',
|
|
179
|
+
':has(:focus-visible)': `2px solid ${colorVars['--color-accent']}`,
|
|
180
|
+
},
|
|
181
|
+
outlineOffset: {
|
|
182
|
+
default: '0',
|
|
183
|
+
':has(:focus-visible)': '3px',
|
|
184
|
+
},
|
|
185
|
+
transitionProperty:
|
|
186
|
+
'background-image, background-color, color, opacity, transform',
|
|
187
|
+
transform: {
|
|
188
|
+
default: 'scale(1)',
|
|
189
|
+
':active': 'scale(0.98)',
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
triggerGhostDisabled: {
|
|
193
|
+
backgroundImage: 'none',
|
|
194
|
+
transform: {
|
|
195
|
+
default: 'none',
|
|
196
|
+
':active': 'none',
|
|
197
|
+
},
|
|
198
|
+
},
|
|
156
199
|
|
|
157
200
|
// Clear button
|
|
158
201
|
clearButton: {
|
|
@@ -172,16 +215,40 @@ const styles = stylex.create({
|
|
|
172
215
|
},
|
|
173
216
|
outlineOffset: 1,
|
|
174
217
|
},
|
|
218
|
+
statusButton: {
|
|
219
|
+
display: 'flex',
|
|
220
|
+
alignItems: 'center',
|
|
221
|
+
justifyContent: 'center',
|
|
222
|
+
padding: 0,
|
|
223
|
+
margin: 0,
|
|
224
|
+
borderWidth: 0,
|
|
225
|
+
borderStyle: 'none',
|
|
226
|
+
backgroundColor: 'transparent',
|
|
227
|
+
color: 'inherit',
|
|
228
|
+
cursor: 'pointer',
|
|
229
|
+
borderRadius: radiusVars['--radius-element'],
|
|
230
|
+
outline: {
|
|
231
|
+
default: 'none',
|
|
232
|
+
':focus-visible': `${borderVars['--border-width']} solid ${colorVars['--color-accent']}`,
|
|
233
|
+
},
|
|
234
|
+
outlineOffset: 1,
|
|
235
|
+
},
|
|
175
236
|
|
|
176
237
|
// Dropdown container
|
|
177
238
|
dropdown: {
|
|
178
239
|
boxSizing: 'border-box',
|
|
179
240
|
maxHeight: '300px',
|
|
180
241
|
overflowY: 'auto',
|
|
181
|
-
|
|
242
|
+
paddingBlock: spacingVars['--spacing-1'],
|
|
243
|
+
paddingInline: spacingVars['--spacing-1'],
|
|
182
244
|
opacity: 1,
|
|
183
245
|
transition: `opacity ${durationVars['--duration-fast']}`,
|
|
184
246
|
},
|
|
247
|
+
dropdownInput: {
|
|
248
|
+
// The input trigger's text inset includes its border. Mirror that extra
|
|
249
|
+
// pixel in the menu; the borderless ghost variant needs no correction.
|
|
250
|
+
paddingInline: `calc(${spacingVars['--spacing-1']} + ${borderVars['--border-width']})`,
|
|
251
|
+
},
|
|
185
252
|
dropdownHidden: {
|
|
186
253
|
opacity: 0,
|
|
187
254
|
transition: 'none',
|
|
@@ -191,33 +258,15 @@ const styles = stylex.create({
|
|
|
191
258
|
popover: {
|
|
192
259
|
minWidth: 'anchor-size(width)',
|
|
193
260
|
},
|
|
194
|
-
// Search
|
|
261
|
+
// Search field. The inner TextInput owns the border, focus ring, magnifier
|
|
262
|
+
// (startIcon), and clear button (hasClear); this wrapper only supplies the
|
|
263
|
+
// dropdown's inline/block padding around it.
|
|
195
264
|
searchWrapper: {
|
|
265
|
+
display: 'flex',
|
|
266
|
+
alignItems: 'center',
|
|
196
267
|
paddingInline: spacingVars['--spacing-2'],
|
|
197
268
|
paddingBlock: spacingVars['--spacing-1'],
|
|
198
269
|
},
|
|
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
270
|
|
|
222
271
|
// Empty state
|
|
223
272
|
emptyState: {
|
|
@@ -326,8 +375,16 @@ const STATUS_ICON_COLOR_MAP: Record<
|
|
|
326
375
|
success: 'success',
|
|
327
376
|
};
|
|
328
377
|
|
|
378
|
+
const STATUS_BUTTON_LABEL_KEY: Record<SelectorStatusType, string> = {
|
|
379
|
+
warning: '@astryx.input.statusButton.warning',
|
|
380
|
+
error: '@astryx.input.statusButton.error',
|
|
381
|
+
success: '@astryx.input.statusButton.success',
|
|
382
|
+
};
|
|
383
|
+
|
|
329
384
|
export type SelectorSize = 'sm' | 'md' | 'lg';
|
|
330
385
|
|
|
386
|
+
export type SelectorVariant = 'input' | 'ghost';
|
|
387
|
+
|
|
331
388
|
export type SelectorStatusType = 'warning' | 'error' | 'success';
|
|
332
389
|
|
|
333
390
|
export interface SelectorStatus {
|
|
@@ -428,6 +485,14 @@ interface SelectorPropsBase<
|
|
|
428
485
|
*/
|
|
429
486
|
size?: SelectorSize;
|
|
430
487
|
|
|
488
|
+
/**
|
|
489
|
+
* Visual style of the selector trigger.
|
|
490
|
+
* - 'input': bordered input-style trigger for forms
|
|
491
|
+
* - 'ghost': borderless trigger matching ghost buttons, for toolbars
|
|
492
|
+
* @default 'input'
|
|
493
|
+
*/
|
|
494
|
+
variant?: SelectorVariant;
|
|
495
|
+
|
|
431
496
|
/**
|
|
432
497
|
* Status indicator for the selector.
|
|
433
498
|
* When set, displays a colored border and status icon.
|
|
@@ -436,9 +501,10 @@ interface SelectorPropsBase<
|
|
|
436
501
|
status?: SelectorStatus;
|
|
437
502
|
/**
|
|
438
503
|
* How the status message is placed relative to the input.
|
|
439
|
-
* - 'attached': message overlaps directly below the input (
|
|
504
|
+
* - 'attached': message overlaps directly below the bordered input (input variant only)
|
|
440
505
|
* - 'detached': message floats below as a separate element with spacing
|
|
441
|
-
*
|
|
506
|
+
* - 'tooltip': message is exposed from the on-field status icon
|
|
507
|
+
* @default 'attached' for input selectors; 'detached' for ghost selectors
|
|
442
508
|
*/
|
|
443
509
|
statusVariant?: FieldStatusVariant;
|
|
444
510
|
|
|
@@ -607,6 +673,7 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
607
673
|
isLoading = false,
|
|
608
674
|
placeholder: placeholderFromProps,
|
|
609
675
|
size: sizeProp,
|
|
676
|
+
variant = 'input',
|
|
610
677
|
status,
|
|
611
678
|
statusVariant = 'attached',
|
|
612
679
|
labelTooltip,
|
|
@@ -630,6 +697,10 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
630
697
|
searchPlaceholderFromProps ?? t('@astryx.selector.searchPlaceholder');
|
|
631
698
|
const hasClear = hasClearProp === true;
|
|
632
699
|
const size = useSize(sizeProp, 'md');
|
|
700
|
+
const effectiveStatusVariant =
|
|
701
|
+
variant === 'ghost' && statusVariant === 'attached'
|
|
702
|
+
? 'detached'
|
|
703
|
+
: statusVariant;
|
|
633
704
|
|
|
634
705
|
// Normalize null to undefined for internal use (null is the clear sentinel)
|
|
635
706
|
const normalizedValue = value === null ? undefined : value;
|
|
@@ -639,11 +710,17 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
639
710
|
const statusMessageId = useId();
|
|
640
711
|
const inputLabelId = useId();
|
|
641
712
|
const searchId = useId();
|
|
713
|
+
// Measure from the same outer control that usePopover anchors to; using the
|
|
714
|
+
// shorter inner button makes every size's selected row land too low.
|
|
715
|
+
const anchorRef = useRef<HTMLDivElement>(null);
|
|
642
716
|
const triggerRef = useRef<HTMLButtonElement>(null);
|
|
643
717
|
const searchRef = useRef<HTMLInputElement>(null);
|
|
644
718
|
const inputGroup = useInputGroup();
|
|
645
719
|
|
|
646
720
|
const [searchQuery, setSearchQuery] = useState('');
|
|
721
|
+
// A typed query shows TextInput's built-in clear (✕) button, which becomes
|
|
722
|
+
// the next tab stop after the search input.
|
|
723
|
+
const hasQuery = searchQuery.length > 0;
|
|
647
724
|
|
|
648
725
|
const [, startTransition] = useTransition();
|
|
649
726
|
const [optimisticValue, setOptimisticValue] = useOptimistic(normalizedValue);
|
|
@@ -662,12 +739,21 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
662
739
|
focusTrigger: 'always',
|
|
663
740
|
isEnabled: showsDisabledMessage,
|
|
664
741
|
});
|
|
742
|
+
const statusTooltip = useTooltip({
|
|
743
|
+
placement: 'above',
|
|
744
|
+
isEnabled: effectiveStatusVariant === 'tooltip' && !!status?.message,
|
|
745
|
+
});
|
|
665
746
|
|
|
666
747
|
const {ariaLabelledBy, ariaDescribedBy} = getInputARIA(
|
|
667
748
|
inputLabelId,
|
|
668
749
|
[
|
|
669
750
|
description ? descriptionId : null,
|
|
670
|
-
|
|
751
|
+
!inputGroup && effectiveStatusVariant !== 'tooltip' && status?.message
|
|
752
|
+
? statusMessageId
|
|
753
|
+
: null,
|
|
754
|
+
effectiveStatusVariant === 'tooltip' && status?.message
|
|
755
|
+
? statusTooltip.describedBy
|
|
756
|
+
: null,
|
|
671
757
|
showsDisabledMessage ? disabledMessageTooltip.describedBy : null,
|
|
672
758
|
],
|
|
673
759
|
inputGroup,
|
|
@@ -737,8 +823,7 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
737
823
|
// next query here fires the announcement exactly once per keystroke and does
|
|
738
824
|
// not re-speak on unrelated re-renders.
|
|
739
825
|
const handleSearchChange = useCallback(
|
|
740
|
-
(
|
|
741
|
-
const nextQuery = event.target.value;
|
|
826
|
+
(nextQuery: string) => {
|
|
742
827
|
setSearchQuery(nextQuery);
|
|
743
828
|
if (nextQuery.length === 0) {
|
|
744
829
|
// Emptying the query clears the region rather than announcing a count.
|
|
@@ -765,7 +850,7 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
765
850
|
selectedItemIndex,
|
|
766
851
|
listboxId,
|
|
767
852
|
listboxRef,
|
|
768
|
-
|
|
853
|
+
anchorRef,
|
|
769
854
|
});
|
|
770
855
|
|
|
771
856
|
const selectedItemOffset = shouldOverlaySelectedItem ? rawOffset : 0;
|
|
@@ -856,14 +941,42 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
856
941
|
return null;
|
|
857
942
|
}
|
|
858
943
|
return (
|
|
859
|
-
<div
|
|
860
|
-
|
|
944
|
+
<div
|
|
945
|
+
{...stylex.props(styles.searchWrapper)}
|
|
946
|
+
onKeyDown={e => {
|
|
947
|
+
// The clear (✕) button lives inside the TextInput, after the input in
|
|
948
|
+
// DOM order. When it is focused and the user tabs forward there is
|
|
949
|
+
// nothing else in the popup, so dismiss it (Shift+Tab returns to the
|
|
950
|
+
// input natively). Key events originating on the input are handled on
|
|
951
|
+
// the input below; ignore them here so we don't double-dismiss.
|
|
952
|
+
if (e.target === searchRef.current) {
|
|
953
|
+
return;
|
|
954
|
+
}
|
|
955
|
+
if (e.key === 'Tab' && !e.shiftKey) {
|
|
956
|
+
onKeyDown(e);
|
|
957
|
+
}
|
|
958
|
+
}}>
|
|
959
|
+
<TextInput
|
|
861
960
|
ref={searchRef}
|
|
862
961
|
id={searchId}
|
|
962
|
+
// The search field IS a TextInput: the leading magnifier is its
|
|
963
|
+
// `startIcon` and the trailing clear (✕) is its built-in `hasClear`
|
|
964
|
+
// (which resets the value and refocuses the input). We add no bespoke
|
|
965
|
+
// affordance chrome — the field just looks and behaves like every
|
|
966
|
+
// other Astryx input.
|
|
967
|
+
label={t('@astryx.selector.searchOptions')}
|
|
968
|
+
isLabelHidden
|
|
969
|
+
startIcon="search"
|
|
970
|
+
hasClear
|
|
971
|
+
size="sm"
|
|
972
|
+
// Fill the dropdown's width (minus the wrapper's inline padding) so
|
|
973
|
+
// the field is flush end-to-end rather than sized to its content.
|
|
974
|
+
width="100%"
|
|
863
975
|
// When hasSearch is set, focus moves into this input on open, so it —
|
|
864
976
|
// not the trigger — must be the combobox that reports the highlighted
|
|
865
977
|
// option via aria-activedescendant (comboboxes-4). A bare searchbox
|
|
866
|
-
// left the highlight silent to screen readers.
|
|
978
|
+
// left the highlight silent to screen readers. role + aria-* pass
|
|
979
|
+
// through to the underlying <input> via BaseProps.
|
|
867
980
|
role="combobox"
|
|
868
981
|
aria-expanded={popover.isOpen}
|
|
869
982
|
aria-controls={listboxId}
|
|
@@ -873,12 +986,10 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
873
986
|
? getItemId(highlightedIndex)
|
|
874
987
|
: undefined
|
|
875
988
|
}
|
|
876
|
-
aria-label={t('@astryx.selector.searchOptions')}
|
|
877
|
-
type="text"
|
|
878
989
|
value={searchQuery}
|
|
879
990
|
onChange={handleSearchChange}
|
|
880
991
|
onKeyDown={e => {
|
|
881
|
-
// Arrow keys navigate options; Enter selects; Escape
|
|
992
|
+
// Arrow keys navigate options; Enter selects; Escape closes.
|
|
882
993
|
// Home/End are left to the input for caret movement (APG editable
|
|
883
994
|
// combobox); PageUp/PageDown are the sanctioned substitute for
|
|
884
995
|
// jumping to the first/last option.
|
|
@@ -888,14 +999,19 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
888
999
|
e.key === 'PageUp' ||
|
|
889
1000
|
e.key === 'PageDown' ||
|
|
890
1001
|
e.key === 'Enter' ||
|
|
891
|
-
e.key === 'Escape'
|
|
892
|
-
e.key === 'Tab'
|
|
1002
|
+
e.key === 'Escape'
|
|
893
1003
|
) {
|
|
894
1004
|
onKeyDown(e);
|
|
1005
|
+
return;
|
|
1006
|
+
}
|
|
1007
|
+
// Tab: when a query is showing the clear (✕) button, forward-tab
|
|
1008
|
+
// moves focus to it (keeping the popup open) so the affordance is
|
|
1009
|
+
// keyboard-reachable. Every other Tab dismisses the popup as usual.
|
|
1010
|
+
if (e.key === 'Tab' && (e.shiftKey || !hasQuery)) {
|
|
1011
|
+
onKeyDown(e);
|
|
895
1012
|
}
|
|
896
1013
|
}}
|
|
897
1014
|
placeholder={searchPlaceholder}
|
|
898
|
-
{...stylex.props(styles.searchInput)}
|
|
899
1015
|
/>
|
|
900
1016
|
</div>
|
|
901
1017
|
);
|
|
@@ -904,6 +1020,7 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
904
1020
|
searchId,
|
|
905
1021
|
listboxId,
|
|
906
1022
|
searchQuery,
|
|
1023
|
+
hasQuery,
|
|
907
1024
|
searchPlaceholder,
|
|
908
1025
|
handleSearchChange,
|
|
909
1026
|
onKeyDown,
|
|
@@ -942,7 +1059,17 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
942
1059
|
<DefaultOption option={item} />
|
|
943
1060
|
)}
|
|
944
1061
|
</span>
|
|
945
|
-
{isSelected &&
|
|
1062
|
+
{isSelected && (
|
|
1063
|
+
<Icon
|
|
1064
|
+
icon="check"
|
|
1065
|
+
size="sm"
|
|
1066
|
+
color="accent"
|
|
1067
|
+
// Stable theme target on the selected-row marker, so a theme can
|
|
1068
|
+
// restyle or hide it (e.g. to compose its own selected indicator
|
|
1069
|
+
// via renderOption) without a structural sibling selector.
|
|
1070
|
+
{...themeProps('selector-check')}
|
|
1071
|
+
/>
|
|
1072
|
+
)}
|
|
946
1073
|
</div>
|
|
947
1074
|
);
|
|
948
1075
|
},
|
|
@@ -963,8 +1090,15 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
963
1090
|
|
|
964
1091
|
// Nothing matched across every group/option: show the empty state.
|
|
965
1092
|
if (isSearching && filteredItems.length === 0) {
|
|
1093
|
+
// role="presentation" keeps the message out of the listbox's
|
|
1094
|
+
// accessibility tree (role="listbox" only permits option/group
|
|
1095
|
+
// children); the no-results outcome is announced via the
|
|
1096
|
+
// result-count live region instead.
|
|
966
1097
|
return [
|
|
967
|
-
<div
|
|
1098
|
+
<div
|
|
1099
|
+
key="empty"
|
|
1100
|
+
role="presentation"
|
|
1101
|
+
{...stylex.props(styles.emptyState)}>
|
|
968
1102
|
No results found
|
|
969
1103
|
</div>,
|
|
970
1104
|
];
|
|
@@ -1025,10 +1159,18 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
1025
1159
|
return elements;
|
|
1026
1160
|
}, [options, renderItem, hasSearch, searchQuery, filteredItems]);
|
|
1027
1161
|
|
|
1162
|
+
// The detached message box renders its own leading status icon, so the
|
|
1163
|
+
// on-field icon would duplicate it — keep the chevron indicator instead.
|
|
1164
|
+
const showStatusIcon =
|
|
1165
|
+
status != null && effectiveStatusVariant !== 'detached';
|
|
1166
|
+
const showStatusTooltip =
|
|
1167
|
+
status != null && effectiveStatusVariant === 'tooltip' && !!status.message;
|
|
1168
|
+
|
|
1028
1169
|
const selectorContent = (
|
|
1029
1170
|
<>
|
|
1030
1171
|
<div
|
|
1031
1172
|
ref={el => {
|
|
1173
|
+
anchorRef.current = el;
|
|
1032
1174
|
popover.triggerRef(el);
|
|
1033
1175
|
// Anchor + hover/focus listeners for the disabled-message tooltip.
|
|
1034
1176
|
// Handlers are gated internally by isEnabled, and anchor names
|
|
@@ -1038,16 +1180,27 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
1038
1180
|
onClick={onTriggerClick}
|
|
1039
1181
|
data-testid={testId}
|
|
1040
1182
|
{...mergeProps(
|
|
1041
|
-
themeProps('selector', {
|
|
1183
|
+
themeProps('selector', {
|
|
1184
|
+
variant,
|
|
1185
|
+
size,
|
|
1186
|
+
status: status?.type ?? null,
|
|
1187
|
+
}),
|
|
1042
1188
|
stylex.props(
|
|
1043
1189
|
inputWrapperStyles.base,
|
|
1044
1190
|
styles.triggerContainer,
|
|
1045
1191
|
sizeStyles[size],
|
|
1192
|
+
variant === 'ghost' && styles.triggerGhost,
|
|
1046
1193
|
isDisabled && inputWrapperStyles.disabled,
|
|
1194
|
+
variant === 'ghost' && isDisabled && styles.triggerGhostDisabled,
|
|
1047
1195
|
!selectedItem && styles.triggerPlaceholder,
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1196
|
+
variant !== 'ghost' &&
|
|
1197
|
+
status &&
|
|
1198
|
+
inputStatusBorderStyles[status.type],
|
|
1199
|
+
variant !== 'ghost' &&
|
|
1200
|
+
status &&
|
|
1201
|
+
!isDisabled &&
|
|
1202
|
+
inputStatusHoverShadowStyles[status.type],
|
|
1203
|
+
variant !== 'ghost' && inputGroup && groupStyles.inGroup,
|
|
1051
1204
|
xstyle,
|
|
1052
1205
|
),
|
|
1053
1206
|
className,
|
|
@@ -1125,15 +1278,31 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
1125
1278
|
<span
|
|
1126
1279
|
{...stylex.props(
|
|
1127
1280
|
styles.triggerIcon,
|
|
1128
|
-
!
|
|
1129
|
-
|
|
1281
|
+
!showStatusIcon && popover.isOpen && styles.triggerIconOpen,
|
|
1282
|
+
showStatusIcon && styles.triggerIconStatus,
|
|
1130
1283
|
)}>
|
|
1131
|
-
{
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1284
|
+
{showStatusIcon ? (
|
|
1285
|
+
showStatusTooltip ? (
|
|
1286
|
+
<button
|
|
1287
|
+
ref={statusTooltip.ref}
|
|
1288
|
+
type="button"
|
|
1289
|
+
aria-label={t(STATUS_BUTTON_LABEL_KEY[status.type])}
|
|
1290
|
+
aria-describedby={statusTooltip.describedBy}
|
|
1291
|
+
onClick={e => e.stopPropagation()}
|
|
1292
|
+
{...stylex.props(styles.statusButton)}>
|
|
1293
|
+
<Icon
|
|
1294
|
+
icon={STATUS_ICON_MAP[status.type]}
|
|
1295
|
+
size="sm"
|
|
1296
|
+
color={STATUS_ICON_COLOR_MAP[status.type]}
|
|
1297
|
+
/>
|
|
1298
|
+
</button>
|
|
1299
|
+
) : (
|
|
1300
|
+
<Icon
|
|
1301
|
+
icon={STATUS_ICON_MAP[status.type]}
|
|
1302
|
+
size="sm"
|
|
1303
|
+
color={STATUS_ICON_COLOR_MAP[status.type]}
|
|
1304
|
+
/>
|
|
1305
|
+
)
|
|
1137
1306
|
) : (
|
|
1138
1307
|
<Icon
|
|
1139
1308
|
icon="chevronDown"
|
|
@@ -1161,7 +1330,10 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
1161
1330
|
id={listboxId}
|
|
1162
1331
|
role="listbox"
|
|
1163
1332
|
aria-labelledby={triggerId}
|
|
1164
|
-
{...stylex.props(
|
|
1333
|
+
{...stylex.props(
|
|
1334
|
+
styles.dropdown,
|
|
1335
|
+
variant !== 'ghost' && styles.dropdownInput,
|
|
1336
|
+
)}>
|
|
1165
1337
|
{renderOptions()}
|
|
1166
1338
|
</div>
|
|
1167
1339
|
</div>
|
|
@@ -1173,6 +1345,7 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
1173
1345
|
aria-labelledby={triggerId}
|
|
1174
1346
|
{...stylex.props(
|
|
1175
1347
|
styles.dropdown,
|
|
1348
|
+
variant !== 'ghost' && styles.dropdownInput,
|
|
1176
1349
|
!isPositioned && styles.dropdownHidden,
|
|
1177
1350
|
)}>
|
|
1178
1351
|
{renderOptions()}
|
|
@@ -1186,6 +1359,8 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
1186
1359
|
},
|
|
1187
1360
|
)}
|
|
1188
1361
|
|
|
1362
|
+
{showStatusTooltip && statusTooltip.renderTooltip(status?.message ?? '')}
|
|
1363
|
+
|
|
1189
1364
|
{showsDisabledMessage &&
|
|
1190
1365
|
disabledMessageTooltip.renderTooltip(disabledMessage)}
|
|
1191
1366
|
</>
|
|
@@ -1214,7 +1389,7 @@ export function Selector<T extends SelectorOptionType>(
|
|
|
1214
1389
|
}
|
|
1215
1390
|
: undefined
|
|
1216
1391
|
}
|
|
1217
|
-
statusVariant={
|
|
1392
|
+
statusVariant={effectiveStatusVariant}
|
|
1218
1393
|
labelTooltip={labelTooltip}
|
|
1219
1394
|
width={width}>
|
|
1220
1395
|
{selectorContent}
|
package/src/Selector/hooks.ts
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file hooks.ts
|
|
7
|
+
* @input Uses untransformed DOM layout geometry from the Selector's outer
|
|
8
|
+
* anchor, listbox, and selected option
|
|
7
9
|
* @output Hooks for Selector
|
|
8
10
|
* @position Internal hooks; used by Selector.tsx
|
|
9
11
|
*/
|
|
@@ -13,6 +15,25 @@ import {useIsomorphicLayoutEffect} from '../hooks/useIsomorphicLayoutEffect';
|
|
|
13
15
|
import type {RefObject} from 'react';
|
|
14
16
|
import type {SelectorOptionData} from './types';
|
|
15
17
|
|
|
18
|
+
// The selected row renders one optical pixel below the closed trigger label at
|
|
19
|
+
// the same mathematical center, so compensate before viewport clamping.
|
|
20
|
+
const SELECTED_ITEM_OPTICAL_OFFSET = 1;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Return an element's document-relative layout top without CSS transforms.
|
|
24
|
+
* getBoundingClientRect includes the popover's entry scale, which would make
|
|
25
|
+
* the measured error grow with each option's distance from the menu top.
|
|
26
|
+
*/
|
|
27
|
+
function getLayoutTop(element: HTMLElement): number {
|
|
28
|
+
let top = 0;
|
|
29
|
+
let current: HTMLElement | null = element;
|
|
30
|
+
while (current) {
|
|
31
|
+
top += current.offsetTop;
|
|
32
|
+
current = current.offsetParent as HTMLElement | null;
|
|
33
|
+
}
|
|
34
|
+
return top;
|
|
35
|
+
}
|
|
36
|
+
|
|
16
37
|
// =============================================================================
|
|
17
38
|
// useSelectedItemOffset - Position dropdown to center selected item over trigger
|
|
18
39
|
// =============================================================================
|
|
@@ -22,7 +43,7 @@ interface UseSelectedItemOffsetOptions {
|
|
|
22
43
|
selectedItemIndex: number;
|
|
23
44
|
listboxId: string;
|
|
24
45
|
listboxRef: RefObject<HTMLDivElement | null>;
|
|
25
|
-
|
|
46
|
+
anchorRef: RefObject<HTMLElement | null>;
|
|
26
47
|
}
|
|
27
48
|
|
|
28
49
|
interface UseSelectedItemOffsetResult {
|
|
@@ -32,9 +53,9 @@ interface UseSelectedItemOffsetResult {
|
|
|
32
53
|
|
|
33
54
|
/**
|
|
34
55
|
* Calculates the offset needed to position the dropdown so that the selected
|
|
35
|
-
* item appears centered over the
|
|
56
|
+
* item appears centered over the outer selector control (macOS-style selector).
|
|
36
57
|
*
|
|
37
|
-
* The desired dropdown top is calculated directly from the
|
|
58
|
+
* The desired dropdown top is calculated directly from the anchor center and
|
|
38
59
|
* selected-item center, then clamped to the viewport. This preserves the
|
|
39
60
|
* default "selected item over trigger" behavior while letting the menu slide
|
|
40
61
|
* upward near the bottom edge or downward near the top edge instead of being
|
|
@@ -45,7 +66,7 @@ export function useSelectedItemOffset({
|
|
|
45
66
|
selectedItemIndex,
|
|
46
67
|
listboxId,
|
|
47
68
|
listboxRef,
|
|
48
|
-
|
|
69
|
+
anchorRef,
|
|
49
70
|
}: UseSelectedItemOffsetOptions): UseSelectedItemOffsetResult {
|
|
50
71
|
const [offset, setOffset] = useState(0);
|
|
51
72
|
const [isPositioned, setIsPositioned] = useState(false);
|
|
@@ -67,7 +88,7 @@ export function useSelectedItemOffset({
|
|
|
67
88
|
return;
|
|
68
89
|
}
|
|
69
90
|
|
|
70
|
-
if (!listboxRef.current || !
|
|
91
|
+
if (!listboxRef.current || !anchorRef.current) {
|
|
71
92
|
commitPosition(0, true);
|
|
72
93
|
return;
|
|
73
94
|
}
|
|
@@ -83,34 +104,37 @@ export function useSelectedItemOffset({
|
|
|
83
104
|
return;
|
|
84
105
|
}
|
|
85
106
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const listboxRect = listboxRef.current.getBoundingClientRect();
|
|
89
|
-
const itemRect = targetItem.getBoundingClientRect();
|
|
90
|
-
const triggerRect = triggerRef.current.getBoundingClientRect();
|
|
107
|
+
const listbox = listboxRef.current;
|
|
108
|
+
const anchorRect = anchorRef.current.getBoundingClientRect();
|
|
91
109
|
|
|
92
|
-
|
|
110
|
+
// offset* metrics intentionally exclude the popover's entry transform.
|
|
111
|
+
const listboxHeight = listbox.offsetHeight;
|
|
93
112
|
if (listboxHeight <= 0) {
|
|
94
113
|
commitPosition(0, true);
|
|
95
114
|
return;
|
|
96
115
|
}
|
|
97
116
|
|
|
98
117
|
// Item center relative to listbox top. This remains stable even as the
|
|
99
|
-
// popover
|
|
118
|
+
// popover animates between scale values. scrollTop keeps the calculation
|
|
119
|
+
// correct when a previously scrolled listbox is reopened.
|
|
100
120
|
const itemCenterInListbox =
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const
|
|
121
|
+
getLayoutTop(targetItem) -
|
|
122
|
+
getLayoutTop(listbox) -
|
|
123
|
+
listbox.scrollTop +
|
|
124
|
+
targetItem.offsetHeight / 2;
|
|
125
|
+
const anchorCenter = anchorRect.top + anchorRect.height / 2;
|
|
126
|
+
|
|
127
|
+
// Desired top aligns the selected item's center with the anchor center.
|
|
128
|
+
const desiredTop =
|
|
129
|
+
anchorCenter - itemCenterInListbox - SELECTED_ITEM_OPTICAL_OFFSET;
|
|
106
130
|
const viewportHeight = window.innerHeight;
|
|
107
131
|
const maxTop = Math.max(0, viewportHeight - listboxHeight);
|
|
108
132
|
const clampedTop = Math.min(Math.max(desiredTop, 0), maxTop);
|
|
109
133
|
|
|
110
|
-
// useLayer positions the popover below the
|
|
134
|
+
// useLayer positions the popover below the outer anchor. Apply a negative
|
|
111
135
|
// block-start margin to the layer container so the listbox top moves from
|
|
112
|
-
//
|
|
113
|
-
const clampedOffset = Math.max(0,
|
|
136
|
+
// anchorRect.bottom to clampedTop.
|
|
137
|
+
const clampedOffset = Math.max(0, anchorRect.bottom - clampedTop);
|
|
114
138
|
|
|
115
139
|
commitPosition(clampedOffset, true);
|
|
116
140
|
}, [
|
|
@@ -118,7 +142,7 @@ export function useSelectedItemOffset({
|
|
|
118
142
|
selectedItemIndex,
|
|
119
143
|
listboxId,
|
|
120
144
|
listboxRef,
|
|
121
|
-
|
|
145
|
+
anchorRef,
|
|
122
146
|
commitPosition,
|
|
123
147
|
]);
|
|
124
148
|
|