@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
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* - /packages/core/src/TopNav/TopNav.doc.mjs
|
|
14
14
|
* - /packages/core/src/TopNav/TopNavMenu.test.tsx
|
|
15
15
|
* - /packages/core/src/TopNav/index.ts
|
|
16
|
-
* - /packages/cli/templates/blocks/components/TopNav/ (showcase blocks)
|
|
16
|
+
* - /packages/cli/assets/templates/blocks/components/TopNav/ (showcase blocks)
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
import React, {
|
|
@@ -28,7 +28,7 @@ import {usePopover} from '../Popover/usePopover';
|
|
|
28
28
|
import {useMenuHover} from '../hooks/useMenuHover';
|
|
29
29
|
import {useListFocus} from '../hooks/useListFocus';
|
|
30
30
|
import {useTypeahead} from '../hooks/useTypeahead';
|
|
31
|
-
import {
|
|
31
|
+
import {Icon} from '../Icon';
|
|
32
32
|
import {mergeProps, mergeRefs} from '../utils';
|
|
33
33
|
import type {BaseProps} from '../BaseProps';
|
|
34
34
|
import {navItemStyles} from '../NavItem/navItemStyles.stylex';
|
|
@@ -37,6 +37,7 @@ import {useTopNavRenderMode} from './TopNavRenderContext';
|
|
|
37
37
|
import {useAppShellMobile} from '../AppShell/AppShellMobileContext';
|
|
38
38
|
import {useLinkComponent} from '../Link/useLinkComponent';
|
|
39
39
|
import {themeProps} from '../utils/themeProps';
|
|
40
|
+
import {focusOutlineProps} from '../utils/focusOutline.stylex';
|
|
40
41
|
import {
|
|
41
42
|
colorVars,
|
|
42
43
|
spacingVars,
|
|
@@ -74,14 +75,6 @@ const styles = stylex.create({
|
|
|
74
75
|
'@media (hover: hover)': colorVars['--color-overlay-hover'],
|
|
75
76
|
},
|
|
76
77
|
},
|
|
77
|
-
outline: {
|
|
78
|
-
default: null,
|
|
79
|
-
':focus-visible': `2px solid ${colorVars['--color-accent']}`,
|
|
80
|
-
},
|
|
81
|
-
outlineOffset: {
|
|
82
|
-
default: '0',
|
|
83
|
-
':focus-visible': '2px',
|
|
84
|
-
},
|
|
85
78
|
border: 'none',
|
|
86
79
|
fontFamily: 'inherit',
|
|
87
80
|
},
|
|
@@ -92,6 +85,14 @@ const styles = stylex.create({
|
|
|
92
85
|
chevron: {
|
|
93
86
|
display: 'inline-flex',
|
|
94
87
|
alignItems: 'center',
|
|
88
|
+
// The registry chevron is a 1em SVG, so it has always rendered at the
|
|
89
|
+
// trigger's own font size (--text-label-size). Icon's size box would repin
|
|
90
|
+
// it to a fixed rem (the nearest, sm, is 1rem = 16px vs the 14px here), so
|
|
91
|
+
// hold it on the inherited em: same pixels, and still tracks the type
|
|
92
|
+
// scale when a theme changes the label size.
|
|
93
|
+
width: '1em',
|
|
94
|
+
height: '1em',
|
|
95
|
+
fontSize: 'inherit',
|
|
95
96
|
transitionProperty: 'transform',
|
|
96
97
|
transitionDuration: durationVars['--duration-fast'],
|
|
97
98
|
transitionTimingFunction: easeVars['--ease-standard'],
|
|
@@ -128,14 +129,6 @@ const styles = stylex.create({
|
|
|
128
129
|
},
|
|
129
130
|
},
|
|
130
131
|
border: 'none',
|
|
131
|
-
outline: {
|
|
132
|
-
default: null,
|
|
133
|
-
':focus-visible': `2px solid ${colorVars['--color-accent']}`,
|
|
134
|
-
},
|
|
135
|
-
outlineOffset: {
|
|
136
|
-
default: '0',
|
|
137
|
-
':focus-visible': '2px',
|
|
138
|
-
},
|
|
139
132
|
},
|
|
140
133
|
menuItemIcon: {
|
|
141
134
|
display: 'flex',
|
|
@@ -179,6 +172,11 @@ const drawerStyles = stylex.create({
|
|
|
179
172
|
},
|
|
180
173
|
chevron: {
|
|
181
174
|
display: 'inline-flex',
|
|
175
|
+
// Same em pin as styles.chevron above — the drawer header inherits
|
|
176
|
+
// --text-label-size from navItemStyles.item.
|
|
177
|
+
width: '1em',
|
|
178
|
+
height: '1em',
|
|
179
|
+
fontSize: 'inherit',
|
|
182
180
|
transitionProperty: 'transform',
|
|
183
181
|
transitionDuration: durationVars['--duration-fast'],
|
|
184
182
|
transitionTimingFunction: easeVars['--ease-standard'],
|
|
@@ -440,13 +438,15 @@ export function TopNavMenu({
|
|
|
440
438
|
aria-controls={`${menuId}-items`}
|
|
441
439
|
{...stylex.props(navItemStyles.item, drawerStyles.header)}>
|
|
442
440
|
{label}
|
|
443
|
-
<
|
|
444
|
-
|
|
441
|
+
<Icon
|
|
442
|
+
icon="chevronDown"
|
|
443
|
+
size="sm"
|
|
444
|
+
color="inherit"
|
|
445
|
+
xstyle={[
|
|
445
446
|
drawerStyles.chevron,
|
|
446
447
|
drawerExpanded && drawerStyles.chevronExpanded,
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
</span>
|
|
448
|
+
]}
|
|
449
|
+
/>
|
|
450
450
|
</button>
|
|
451
451
|
<div
|
|
452
452
|
id={`${menuId}-items`}
|
|
@@ -495,16 +495,18 @@ export function TopNavMenu({
|
|
|
495
495
|
{...triggerProps}
|
|
496
496
|
{...mergeProps(
|
|
497
497
|
themeProps('top-nav-menu'),
|
|
498
|
-
|
|
498
|
+
focusOutlineProps.focusVisible(
|
|
499
|
+
styles.trigger,
|
|
500
|
+
popover.isOpen && styles.triggerOpen,
|
|
501
|
+
),
|
|
499
502
|
)}>
|
|
500
503
|
{label}
|
|
501
|
-
<
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
</span>
|
|
504
|
+
<Icon
|
|
505
|
+
icon="chevronDown"
|
|
506
|
+
size="sm"
|
|
507
|
+
color="inherit"
|
|
508
|
+
xstyle={[styles.chevron, popover.isOpen && styles.chevronOpen]}
|
|
509
|
+
/>
|
|
508
510
|
</button>
|
|
509
511
|
{popover.render(
|
|
510
512
|
<div
|
|
@@ -529,7 +531,7 @@ export function TopNavMenu({
|
|
|
529
531
|
tabIndex={-1}
|
|
530
532
|
href={item.href}
|
|
531
533
|
onClick={item.onClick}
|
|
532
|
-
{...
|
|
534
|
+
{...focusOutlineProps.focusVisible(styles.menuItem)}>
|
|
533
535
|
<div {...stylex.props(styles.menuItemIcon)}>{item.icon}</div>
|
|
534
536
|
<div {...stylex.props(styles.menuItemContent)}>
|
|
535
537
|
<span {...stylex.props(styles.menuItemTitle)}>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
|
-
/** @type {import('
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
|
|
4
4
|
|
|
5
5
|
export const docs = {
|
|
6
6
|
name: 'TreeList',
|
|
@@ -32,6 +32,7 @@ export const docs = {
|
|
|
32
32
|
],
|
|
33
33
|
vars: [
|
|
34
34
|
{name: '--tree-list-indent', description: 'Per-level indentation step. Each nesting level indents its rows by this distance, and the guide lines follow it so they stay aligned. Set it on the `tree-list` target to retune the metric (e.g. `var(--spacing-5)` for a wider indent).', default: 'var(--spacing-4)'},
|
|
35
|
+
{name: '--tree-list-row-gap', description: 'Vertical gap between adjacent rows. Default `2px` (var(--spacing-0-5)) gives a subtle separation; set it on the `tree-list` target to widen or close the gap. The connector guides span the gap automatically (the line stays continuous) and do not overhang the last row, so no guide-height tuning is needed.', default: 'var(--spacing-0-5)'},
|
|
35
36
|
],
|
|
36
37
|
},
|
|
37
38
|
components: [
|
|
@@ -82,6 +83,7 @@ export const docs = {
|
|
|
82
83
|
bestPractices: [
|
|
83
84
|
{guidance: true, description: 'Provide meaningful labels and icons for each node to make the hierarchy easy to scan.'},
|
|
84
85
|
{guidance: true, description: 'Pre-expand important branches so users see key content immediately.'},
|
|
86
|
+
{guidance: true, description: 'Leaf rows reserve space for a chevron column whenever the tree has any expandable item to line up under; only a fully flat tree (no expandable items at all) renders its rows flush. Rely on this rather than nudging indentation with custom CSS.'},
|
|
85
87
|
{guidance: false, description: 'Nest more than 4–5 levels deep; flatten the structure or use a different pattern.'},
|
|
86
88
|
{guidance: false, description: 'Use a tree for flat, non-hierarchical data; use a List instead.'},
|
|
87
89
|
],
|
|
@@ -94,7 +96,7 @@ export const docs = {
|
|
|
94
96
|
// See .context/decisions/dense-compression-protocol.md
|
|
95
97
|
// -------------------------------------------------------
|
|
96
98
|
|
|
97
|
-
/** @type {import('
|
|
99
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
|
|
98
100
|
export const docsZh = {
|
|
99
101
|
name: 'TreeList',
|
|
100
102
|
displayName: 'Tree List',
|
|
@@ -109,6 +111,7 @@ export const docsZh = {
|
|
|
109
111
|
],
|
|
110
112
|
vars: [
|
|
111
113
|
{name: '--tree-list-indent', description: '每级缩进步长。每个嵌套层级的行按此距离缩进,引导线随之对齐。在 `tree-list` 目标上设置以调整该度量(例如用 `var(--spacing-5)` 获得更宽的缩进)。', default: 'var(--spacing-4)'},
|
|
114
|
+
{name: '--tree-list-row-gap', description: '相邻行之间的垂直间距。默认 `2px`(var(--spacing-0-5))提供细微的分隔;在 `tree-list` 目标上设置以加宽或关闭间距。连接引导线会自动跨越该间距(线保持连续)且不会超出最后一行,因此无需调整引导线高度。', default: 'var(--spacing-0-5)'},
|
|
112
115
|
],
|
|
113
116
|
},
|
|
114
117
|
components: [
|
|
@@ -159,13 +162,14 @@ export const docsZh = {
|
|
|
159
162
|
bestPractices: [
|
|
160
163
|
{guidance: true, description: 'Provide meaningful labels and icons for each node to make the hierarchy easy to scan.'},
|
|
161
164
|
{guidance: true, description: 'Pre-expand important branches so users see key content immediately.'},
|
|
165
|
+
{guidance: true, description: 'Leaf rows reserve space for a chevron column whenever the tree has any expandable item to line up under; only a fully flat tree (no expandable items at all) renders its rows flush. Rely on this rather than nudging indentation with custom CSS.'},
|
|
162
166
|
{guidance: false, description: 'Nest more than 4–5 levels deep; flatten the structure or use a different pattern.'},
|
|
163
167
|
{guidance: false, description: 'Use a tree for flat, non-hierarchical data; use a List instead.'},
|
|
164
168
|
],
|
|
165
169
|
},
|
|
166
170
|
};
|
|
167
171
|
|
|
168
|
-
/** @type {import('
|
|
172
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
|
|
169
173
|
export const docsDense = {
|
|
170
174
|
description:
|
|
171
175
|
'Data-driven tree list for hierarchical data w/ expand/collapse, branch lines, interactive items. Flat items array w/ recursive children, no composition, no cloneElement.',
|
|
@@ -175,6 +179,7 @@ export const docsDense = {
|
|
|
175
179
|
bestPractices: [
|
|
176
180
|
{guidance: true, description: 'Provide meaningful labels and icons for each node to make the hierarchy easy to scan.'},
|
|
177
181
|
{guidance: true, description: 'Pre-expand important branches so users see key content immediately.'},
|
|
182
|
+
{guidance: true, description: 'Leaf rows reserve space for a chevron column whenever the tree has any expandable item to line up under; only a fully flat tree (no expandable items at all) renders its rows flush. Rely on this rather than nudging indentation with custom CSS.'},
|
|
178
183
|
{guidance: false, description: 'Nest more than 4–5 levels deep; flatten the structure or use a different pattern.'},
|
|
179
184
|
{guidance: false, description: 'Use a tree for flat, non-hierarchical data; use a List instead.'},
|
|
180
185
|
],
|
|
@@ -15,8 +15,35 @@ import userEvent from '@testing-library/user-event';
|
|
|
15
15
|
import {TreeList} from './TreeList';
|
|
16
16
|
import type {TreeListItemData} from './TreeListTypes';
|
|
17
17
|
import {defineTheme} from '../theme/defineTheme';
|
|
18
|
-
import {
|
|
18
|
+
import {generateThemeCSS} from '../theme/generateThemeRules';
|
|
19
19
|
|
|
20
|
+
function generateThemeTestCSS(theme: Parameters<typeof generateThemeCSS>[0]) {
|
|
21
|
+
const {prose, component} = generateThemeCSS(theme);
|
|
22
|
+
return [prose, component].filter(Boolean).join('\n\n');
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Concatenate all StyleX-injected CSS (both CSSOM sheets and <style> text) so
|
|
27
|
+
* tests can assert on compiled stylesheet rules — jsdom does not resolve the
|
|
28
|
+
* @layer cascade or compute layout, so structural CSS assertions read the
|
|
29
|
+
* generated declarations directly.
|
|
30
|
+
*/
|
|
31
|
+
function collectCssText(): string {
|
|
32
|
+
let out = '';
|
|
33
|
+
for (const sheet of Array.from(document.styleSheets)) {
|
|
34
|
+
try {
|
|
35
|
+
for (const rule of Array.from(sheet.cssRules)) {
|
|
36
|
+
out += rule.cssText + '\n';
|
|
37
|
+
}
|
|
38
|
+
} catch {
|
|
39
|
+
// ignore cross-origin sheets
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
out += Array.from(document.querySelectorAll('style'))
|
|
43
|
+
.map(s => s.textContent || '')
|
|
44
|
+
.join('\n');
|
|
45
|
+
return out;
|
|
46
|
+
}
|
|
20
47
|
const simpleItems: TreeListItemData[] = [
|
|
21
48
|
{id: 'a', label: 'Item A'},
|
|
22
49
|
{id: 'b', label: 'Item B'},
|
|
@@ -272,16 +299,16 @@ describe('TreeList', () => {
|
|
|
272
299
|
expect(root).toHaveFocus();
|
|
273
300
|
|
|
274
301
|
expect(
|
|
275
|
-
getComputedStyle(root).getPropertyValue('--
|
|
302
|
+
getComputedStyle(root).getPropertyValue('--_focus-outline'),
|
|
276
303
|
).toContain('solid');
|
|
277
304
|
// Mid and Leaf are DOM descendants of Root's <li> (nested <ul role="group">
|
|
278
305
|
// subtrees) — their own outline var must stay unset, not inherit Root's.
|
|
279
|
-
expect(
|
|
280
|
-
|
|
281
|
-
)
|
|
282
|
-
expect(
|
|
283
|
-
|
|
284
|
-
)
|
|
306
|
+
expect(getComputedStyle(mid).getPropertyValue('--_focus-outline')).toBe(
|
|
307
|
+
'none',
|
|
308
|
+
);
|
|
309
|
+
expect(getComputedStyle(leaf).getPropertyValue('--_focus-outline')).toBe(
|
|
310
|
+
'none',
|
|
311
|
+
);
|
|
285
312
|
});
|
|
286
313
|
|
|
287
314
|
// ===========================================================================
|
|
@@ -485,7 +512,7 @@ describe('TreeList', () => {
|
|
|
485
512
|
},
|
|
486
513
|
},
|
|
487
514
|
});
|
|
488
|
-
const css =
|
|
515
|
+
const css = generateThemeTestCSS(theme);
|
|
489
516
|
expect(css).toContain('.astryx-tree-list-guide {');
|
|
490
517
|
expect(css).toContain('background-color: var(--color-accent)');
|
|
491
518
|
});
|
|
@@ -501,7 +528,7 @@ describe('TreeList', () => {
|
|
|
501
528
|
},
|
|
502
529
|
},
|
|
503
530
|
});
|
|
504
|
-
const css =
|
|
531
|
+
const css = generateThemeTestCSS(theme);
|
|
505
532
|
expect(css).toContain('.astryx-tree-list-guide {');
|
|
506
533
|
expect(css).toContain('display: none');
|
|
507
534
|
});
|
|
@@ -525,7 +552,7 @@ describe('TreeList', () => {
|
|
|
525
552
|
},
|
|
526
553
|
},
|
|
527
554
|
});
|
|
528
|
-
const css =
|
|
555
|
+
const css = generateThemeTestCSS(theme);
|
|
529
556
|
expect(css).toContain('.astryx-tree-list {');
|
|
530
557
|
expect(css).toContain('--tree-list-indent: var(--spacing-5)');
|
|
531
558
|
});
|
|
@@ -544,6 +571,182 @@ describe('TreeList', () => {
|
|
|
544
571
|
});
|
|
545
572
|
});
|
|
546
573
|
|
|
574
|
+
// ===========================================================================
|
|
575
|
+
// Leaf chevron-column offset (group-expandable-sibling awareness)
|
|
576
|
+
// ===========================================================================
|
|
577
|
+
|
|
578
|
+
describe('leaf chevron-column offset', () => {
|
|
579
|
+
// A row publishes its indent as the inline `--_tree-indent` custom property.
|
|
580
|
+
// A leaf that reserves the chevron column adds a fixed offset
|
|
581
|
+
// (chevron width + gap) on top of its level indent; a flush leaf does not.
|
|
582
|
+
// The reserved column is expressed as the literal `+ <spacing-4> + <spacing-2>`
|
|
583
|
+
// suffix in the calc(), so its presence is what we assert (jsdom does not
|
|
584
|
+
// resolve the token values, so we check the structure, not pixels).
|
|
585
|
+
const indentStyleOf = (text: string): string => {
|
|
586
|
+
const li = screen.getByText(text).closest('li')!;
|
|
587
|
+
const styled = li.querySelector('[style*="--_tree-indent"]');
|
|
588
|
+
return styled?.getAttribute('style') ?? '';
|
|
589
|
+
};
|
|
590
|
+
// A reserved chevron column adds two extra terms to the indent calc()
|
|
591
|
+
// beyond the single `level * var(--tree-list-indent)` term.
|
|
592
|
+
const reservesColumn = (text: string): boolean => {
|
|
593
|
+
const style = indentStyleOf(text);
|
|
594
|
+
// count the `var(` occurrences inside --_tree-indent: a flush row has
|
|
595
|
+
// exactly one (the indent step); a reserving leaf adds the chevron
|
|
596
|
+
// width + gap tokens, so it has more.
|
|
597
|
+
const m = /--_tree-indent:\s*calc\(([^;]*)\)/.exec(style);
|
|
598
|
+
const body = m?.[1] ?? '';
|
|
599
|
+
return (body.match(/\bvar\(/g)?.length ?? 0) > 1 || body.includes('+');
|
|
600
|
+
};
|
|
601
|
+
|
|
602
|
+
it('a leaf in a mixed group reserves the chevron column (aligns under its expandable sibling)', () => {
|
|
603
|
+
// Group: [Parent (has children), Sibling (leaf)] → Sibling must line up
|
|
604
|
+
// under Parent's caret, so it keeps the chevron-column offset.
|
|
605
|
+
render(<TreeList items={nestedItems} />);
|
|
606
|
+
expect(reservesColumn('Sibling')).toBe(true);
|
|
607
|
+
});
|
|
608
|
+
|
|
609
|
+
it('a leaf under an expandable ancestor reserves the chevron column even when its own group is all leaves', () => {
|
|
610
|
+
// 'Root' → 'Mid' → 'Leaf'; 'Leaf' is the only item in its immediate
|
|
611
|
+
// group, but the tree has carets (Root, Mid), so Leaf must reserve the
|
|
612
|
+
// chevron column to stay indented past its parent's label. Flushing it
|
|
613
|
+
// here would push it left of Mid's label — the all-leaf-group bug.
|
|
614
|
+
render(<TreeList items={deepItems} variant="noGuides" />);
|
|
615
|
+
expect(reservesColumn('Leaf')).toBe(true);
|
|
616
|
+
});
|
|
617
|
+
|
|
618
|
+
it("an expanded parent's all-leaf children reserve the chevron column (do not flush left of the parent label)", () => {
|
|
619
|
+
// Regression: Parent (caret) → [Child 1, Child 2] is an all-leaf group
|
|
620
|
+
// nested under an expandable parent. Per-group flushing wrongly dropped
|
|
621
|
+
// these children's chevron column, pushing them LEFT of Parent's own
|
|
622
|
+
// label. Because the tree has a caret, they must reserve the column and
|
|
623
|
+
// stay indented past Parent.
|
|
624
|
+
render(<TreeList items={nestedItemsExpanded} />);
|
|
625
|
+
expect(reservesColumn('Child 1')).toBe(true);
|
|
626
|
+
expect(reservesColumn('Child 2')).toBe(true);
|
|
627
|
+
});
|
|
628
|
+
|
|
629
|
+
it('every row in a flat (all-leaf) tree sits flush — no chevron column reserved', () => {
|
|
630
|
+
render(<TreeList items={flatItems} />);
|
|
631
|
+
expect(reservesColumn('Apple')).toBe(false);
|
|
632
|
+
expect(reservesColumn('Banana')).toBe(false);
|
|
633
|
+
expect(reservesColumn('Cherry')).toBe(false);
|
|
634
|
+
});
|
|
635
|
+
|
|
636
|
+
it('leaves flush in an all-leaf group have the same indent structure as a parent at that level', () => {
|
|
637
|
+
// In a mixed group the reserving leaf indent has the extra terms; in an
|
|
638
|
+
// all-leaf group the leaf indent is the bare level step, exactly like a
|
|
639
|
+
// parent row's indent.
|
|
640
|
+
render(<TreeList items={flatItems} />);
|
|
641
|
+
const flush = indentStyleOf('Apple');
|
|
642
|
+
// bare level step: one var(--tree-list-indent), no additive chevron terms
|
|
643
|
+
expect(flush).toContain('var(--tree-list-indent)');
|
|
644
|
+
expect(/--_tree-indent:\s*calc\([^;]*\+[^;]*\)/.test(flush)).toBe(false);
|
|
645
|
+
});
|
|
646
|
+
});
|
|
647
|
+
|
|
648
|
+
// ===========================================================================
|
|
649
|
+
// Inter-row gap lever (--tree-list-row-gap) + guide spanning
|
|
650
|
+
// ===========================================================================
|
|
651
|
+
|
|
652
|
+
describe('row gap lever', () => {
|
|
653
|
+
it('defaults the row gap to a subtle 2px separation', () => {
|
|
654
|
+
// The lever is published on the tree-list root; its default is
|
|
655
|
+
// --spacing-0-5 (2px) so rows have a light separation out of the box. A
|
|
656
|
+
// theme can widen or close it via the tree-list target. jsdom does not
|
|
657
|
+
// resolve token vars, so the declared value is the --spacing-0-5 token.
|
|
658
|
+
render(<TreeList items={simpleItems} data-testid="tree" />);
|
|
659
|
+
const root = screen.getByTestId('tree');
|
|
660
|
+
expect(
|
|
661
|
+
getComputedStyle(root).getPropertyValue('--tree-list-row-gap').trim(),
|
|
662
|
+
).toBe('var(--spacing-0-5)');
|
|
663
|
+
});
|
|
664
|
+
|
|
665
|
+
it('lets a theme open a row gap via the tree-list target', () => {
|
|
666
|
+
// jsdom cannot resolve the @layer cascade, so the generated CSS is what
|
|
667
|
+
// proves the override reaches the lever.
|
|
668
|
+
const theme = defineTheme({
|
|
669
|
+
name: 'tree-list-row-gap-test',
|
|
670
|
+
components: {
|
|
671
|
+
'tree-list': {
|
|
672
|
+
base: {'--tree-list-row-gap': 'var(--spacing-1)'},
|
|
673
|
+
},
|
|
674
|
+
},
|
|
675
|
+
});
|
|
676
|
+
const css = generateThemeTestCSS(theme);
|
|
677
|
+
expect(css).toContain('.astryx-tree-list {');
|
|
678
|
+
expect(css).toContain('--tree-list-row-gap: var(--spacing-1)');
|
|
679
|
+
});
|
|
680
|
+
|
|
681
|
+
it('the guide of a row with a sibling below spans into it (verticalFull)', () => {
|
|
682
|
+
// A row that is NOT last in its group bridges the 1px hairline into the
|
|
683
|
+
// next contiguous sibling so the connector reads as one continuous line.
|
|
684
|
+
// Assert the APPLIED class on that row's own connector — not a global
|
|
685
|
+
// stylesheet regex — so the isLast ? verticalLast : verticalFull branch
|
|
686
|
+
// is actually exercised (Child 1 has Child 2 below it).
|
|
687
|
+
render(<TreeList items={nestedItemsExpanded} />);
|
|
688
|
+
const child1 = screen.getByText('Child 1').closest('li')!;
|
|
689
|
+
const guide = child1.firstElementChild!.querySelector(
|
|
690
|
+
'.astryx-tree-list-guide',
|
|
691
|
+
);
|
|
692
|
+
expect(guide).not.toBeNull();
|
|
693
|
+
expect(guide!.className).toContain('verticalFull');
|
|
694
|
+
expect(guide!.className).not.toContain('verticalLast');
|
|
695
|
+
});
|
|
696
|
+
|
|
697
|
+
it('clamps the last-in-group guide so it does not overhang the gap (verticalLast)', () => {
|
|
698
|
+
// The last row in a group has nothing below it, so its connector must NOT
|
|
699
|
+
// run through the row wrapper's bottom padding into empty space — it uses
|
|
700
|
+
// verticalLast, which subtracts half the row gap. Assert the applied class
|
|
701
|
+
// on the last child's own connector (Child 2 is last in its group), so a
|
|
702
|
+
// reverted branch is caught.
|
|
703
|
+
render(<TreeList items={nestedItemsExpanded} />);
|
|
704
|
+
const child2 = screen.getByText('Child 2').closest('li')!;
|
|
705
|
+
const guide = child2.firstElementChild!.querySelector(
|
|
706
|
+
'.astryx-tree-list-guide',
|
|
707
|
+
);
|
|
708
|
+
expect(guide).not.toBeNull();
|
|
709
|
+
expect(guide!.className).toContain('verticalLast');
|
|
710
|
+
expect(guide!.className).not.toContain('verticalFull');
|
|
711
|
+
});
|
|
712
|
+
|
|
713
|
+
it('carries the inter-row gap as collapse-proof padding on the row wrapper, not the paint target', () => {
|
|
714
|
+
// Finding from review: the gap must be `padding-block` (which cannot
|
|
715
|
+
// collapse) on the row WRAPPER, not `margin-block` on the row box — a
|
|
716
|
+
// margin there collapses through the position:relative wrapper and the
|
|
717
|
+
// <li>, delivering only half the configured gap. It also must not sit on
|
|
718
|
+
// `tree-list-item`, which is a paint seam (per the theming-target
|
|
719
|
+
// guidelines): layout longhands do not belong on a paintable target.
|
|
720
|
+
const {container} = render(<TreeList items={simpleItems} />);
|
|
721
|
+
const item = container.querySelector<HTMLElement>(
|
|
722
|
+
'.astryx-tree-list-item',
|
|
723
|
+
);
|
|
724
|
+
expect(item).not.toBeNull();
|
|
725
|
+
const rowWrapper = item!.parentElement!;
|
|
726
|
+
|
|
727
|
+
const rules = collectCssText();
|
|
728
|
+
// Map the rowWrapper's compiled class to its declaration block and assert
|
|
729
|
+
// it declares padding-block from the row-gap lever (half above/below).
|
|
730
|
+
const rowWrapperClass = Array.from(rowWrapper.classList).find(c =>
|
|
731
|
+
c.includes('rowWrapper'),
|
|
732
|
+
);
|
|
733
|
+
expect(rowWrapperClass).toBeDefined();
|
|
734
|
+
// The gap rides padding-block (collapse-proof), keyed off the lever.
|
|
735
|
+
expect(rules).toMatch(
|
|
736
|
+
/padding-block:\s*calc\(\s*var\(--tree-list-row-gap[^)]*\)\s*\/\s*2\s*\)/,
|
|
737
|
+
);
|
|
738
|
+
// And the paint target (tree-list-item / contentWrapper) must NOT carry a
|
|
739
|
+
// margin-block gap — the layout seam has moved off the paintable element.
|
|
740
|
+
const itemClass = Array.from(item!.classList).find(c =>
|
|
741
|
+
c.includes('contentWrapper'),
|
|
742
|
+
);
|
|
743
|
+
expect(itemClass).toBeDefined();
|
|
744
|
+
expect(rules).not.toMatch(
|
|
745
|
+
/margin-block:\s*calc\([^;]*var\(--tree-list-row-gap/,
|
|
746
|
+
);
|
|
747
|
+
});
|
|
748
|
+
});
|
|
749
|
+
|
|
547
750
|
// ===========================================================================
|
|
548
751
|
// xds class name
|
|
549
752
|
// ===========================================================================
|
|
@@ -609,7 +812,7 @@ describe('TreeList', () => {
|
|
|
609
812
|
},
|
|
610
813
|
},
|
|
611
814
|
});
|
|
612
|
-
const css =
|
|
815
|
+
const css = generateThemeTestCSS(theme);
|
|
613
816
|
expect(css).toContain('.astryx-tree-list-chevron {');
|
|
614
817
|
expect(css).toContain('color: var(--color-accent)');
|
|
615
818
|
expect(css).toContain('.astryx-tree-list-chevron.expanded');
|
|
@@ -667,7 +870,7 @@ describe('TreeList', () => {
|
|
|
667
870
|
},
|
|
668
871
|
},
|
|
669
872
|
});
|
|
670
|
-
const css =
|
|
873
|
+
const css = generateThemeTestCSS(theme);
|
|
671
874
|
expect(css).toContain('.astryx-tree-list-item-label {');
|
|
672
875
|
expect(css).toContain('color: var(--color-text-primary)');
|
|
673
876
|
expect(css).toContain('.astryx-tree-list-item-label.selected');
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* - /packages/core/src/TreeList/TreeList.doc.mjs
|
|
13
13
|
* - /packages/core/src/TreeList/index.ts
|
|
14
14
|
* - /apps/storybook/stories/TreeList.stories.tsx
|
|
15
|
-
* - /packages/cli/templates/blocks/components/TreeList/ (showcase blocks)
|
|
15
|
+
* - /packages/cli/assets/templates/blocks/components/TreeList/ (showcase blocks)
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
import {useId, useState, useMemo, useCallback, type ReactNode} from 'react';
|
|
@@ -88,6 +88,13 @@ const styles = stylex.create({
|
|
|
88
88
|
// on the `tree-list` target, and both the row margins (TreeListItem) and
|
|
89
89
|
// the guide-line offsets (TreeListBranches) read it so they stay aligned.
|
|
90
90
|
'--tree-list-indent': spacingVars['--spacing-4'],
|
|
91
|
+
// Vertical gap between adjacent rows. Public, themeable lever (default
|
|
92
|
+
// `--spacing-0-5` = 2px for a subtle separation between rows). A theme sets
|
|
93
|
+
// it on the `tree-list` target to widen or close the gap; the guide
|
|
94
|
+
// connector spans the gap natively (see TreeListBranches) so the line stays
|
|
95
|
+
// continuous and does not overhang the last row — no consumer-side guide
|
|
96
|
+
// tuning needed.
|
|
97
|
+
'--tree-list-row-gap': spacingVars['--spacing-0-5'],
|
|
91
98
|
},
|
|
92
99
|
list: {
|
|
93
100
|
margin: 0,
|
|
@@ -250,11 +257,25 @@ export function TreeList({
|
|
|
250
257
|
hasRovingTabIndex: true,
|
|
251
258
|
});
|
|
252
259
|
|
|
260
|
+
const hasExpandableItems = items.some(
|
|
261
|
+
item => item.children != null && item.children.length > 0,
|
|
262
|
+
);
|
|
263
|
+
|
|
253
264
|
function renderItems(
|
|
254
265
|
items: TreeListItemData[],
|
|
255
266
|
nestedLevel: number,
|
|
256
267
|
ancestorsIsLast: ReadonlyArray<boolean>,
|
|
257
268
|
): ReactNode {
|
|
269
|
+
// A leaf reserves the chevron column (so its label lines up under a parent's
|
|
270
|
+
// caret) whenever the tree contains ANY expandable item — i.e. whenever a
|
|
271
|
+
// caret exists somewhere to align under. This is a whole-tree property, not
|
|
272
|
+
// a per-group one: a leaf nested under an expandable ancestor must still
|
|
273
|
+
// reserve the column so it stays indented past its parent's label, even if
|
|
274
|
+
// its own immediate group happens to be all leaves. Only a fully flat tree
|
|
275
|
+
// (no expandable items anywhere) has no caret to align under, so its rows
|
|
276
|
+
// sit flush. Because any expandable descendant forces its whole ancestor
|
|
277
|
+
// chain to be expandable, "the tree has an expandable item" is equivalent to
|
|
278
|
+
// "the root group has an expandable item" — checked once at the root.
|
|
258
279
|
return items.map((item, index) => {
|
|
259
280
|
const isLast = index === items.length - 1;
|
|
260
281
|
const isExpanded = expandedKeysOverride.has(item.id)
|
|
@@ -284,6 +305,7 @@ export function TreeList({
|
|
|
284
305
|
startContent={item.startContent}
|
|
285
306
|
endContent={item.endContent}
|
|
286
307
|
hasChildren={hasChildren}
|
|
308
|
+
hasExpandableItems={hasExpandableItems}
|
|
287
309
|
onClick={item.onClick}
|
|
288
310
|
href={item.href}
|
|
289
311
|
target={item.target}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*
|
|
11
11
|
* SYNC: When modified, update these files to stay in sync:
|
|
12
12
|
* - /packages/core/src/TreeList/TreeListItem.tsx
|
|
13
|
-
* - /packages/cli/templates/blocks/components/TreeList/ (showcase blocks)
|
|
13
|
+
* - /packages/cli/assets/templates/blocks/components/TreeList/ (showcase blocks)
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
import * as stylex from '@stylexjs/stylex';
|
|
@@ -46,9 +46,24 @@ const styles = stylex.create({
|
|
|
46
46
|
width: LINE_WIDTH,
|
|
47
47
|
backgroundColor: colorVars['--color-border-emphasized'],
|
|
48
48
|
},
|
|
49
|
+
// Guide segment spanning the full <li>. The row box's inter-row gap now lives
|
|
50
|
+
// INSIDE the <li> (as `padding-block` on the row wrapper), so `height: 100%`
|
|
51
|
+
// already covers it — the segment only needs the original `1px` to bridge the
|
|
52
|
+
// hairline into the next contiguous sibling so the connector reads as one
|
|
53
|
+
// continuous line. Independent of `--tree-list-row-gap`: the gap is absorbed
|
|
54
|
+
// by the <li> height, not added on top here.
|
|
49
55
|
verticalFull: {
|
|
50
56
|
height: 'calc(100% + 1px)',
|
|
51
57
|
},
|
|
58
|
+
// Last-in-group connector: nothing sits below, so the segment must not run
|
|
59
|
+
// through the row wrapper's bottom `padding-block` (`--tree-list-row-gap` / 2)
|
|
60
|
+
// into empty space. Clamp it back by that half-gap so it ends exactly at the
|
|
61
|
+
// row box's bottom edge. At the default `--spacing-0-5` gap this trims the
|
|
62
|
+
// 1px of bottom padding; at `0px` it is exactly `100%` — no overhang at any
|
|
63
|
+
// gap.
|
|
64
|
+
verticalLast: {
|
|
65
|
+
height: 'calc(100% - var(--tree-list-row-gap, 0px) / 2)',
|
|
66
|
+
},
|
|
52
67
|
});
|
|
53
68
|
|
|
54
69
|
// =============================================================================
|
|
@@ -76,7 +91,7 @@ interface TreeListBranchesProps {
|
|
|
76
91
|
*/
|
|
77
92
|
export function TreeListBranches({
|
|
78
93
|
ancestorsIsLast,
|
|
79
|
-
isLast
|
|
94
|
+
isLast,
|
|
80
95
|
nestedLevel,
|
|
81
96
|
}: TreeListBranchesProps) {
|
|
82
97
|
return (
|
|
@@ -117,7 +132,15 @@ export function TreeListBranches({
|
|
|
117
132
|
<div
|
|
118
133
|
{...mergeProps(
|
|
119
134
|
themeProps('tree-list-guide'),
|
|
120
|
-
|
|
135
|
+
// The last item in a group has no sibling below, so its connector
|
|
136
|
+
// is clamped to the row box's bottom edge (verticalLast) instead
|
|
137
|
+
// of bridging into the inter-row gap — no overhang into empty
|
|
138
|
+
// space. Every other row bridges the gap (verticalFull) so the
|
|
139
|
+
// line stays continuous down to the next sibling.
|
|
140
|
+
stylex.props(
|
|
141
|
+
styles.verticalLine,
|
|
142
|
+
isLast ? styles.verticalLast : styles.verticalFull,
|
|
143
|
+
),
|
|
121
144
|
)}
|
|
122
145
|
/>
|
|
123
146
|
</div>
|