@astryxdesign/core 0.1.9 → 0.2.0-canary.0b7a99e
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 +107 -0
- 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 +1 -14
- 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 +43 -4
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +194 -63
- package/dist/Avatar/AvatarStatusDot.d.ts +8 -30
- 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 +8 -2
- package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroup.js +59 -7
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts +2 -2
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +8 -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 +7 -35
- 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 +12 -5
- 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 +19 -1
- package/dist/Breadcrumbs/index.d.ts.map +1 -1
- package/dist/Breadcrumbs/index.js +16 -1
- package/dist/Button/Button.d.ts +3 -21
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +8 -21
- 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 +51 -10
- package/dist/Calendar/dayCellUtils.d.ts +4 -4
- package/dist/Calendar/dayCellUtils.js +2 -2
- package/dist/Calendar/styles.d.ts +32 -33
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +32 -33
- package/dist/Card/Card.d.ts +1 -1
- package/dist/Card/Card.js +2 -2
- package/dist/Carousel/Carousel.d.ts +1 -1
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +23 -13
- 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 +3 -3
- package/dist/Chat/ChatComposerInput.d.ts +1 -1
- package/dist/Chat/ChatComposerInput.js +2 -2
- package/dist/Chat/ChatDictationButton.d.ts +1 -1
- package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
- package/dist/Chat/ChatDictationButton.js +4 -2
- package/dist/Chat/ChatLayout.d.ts +8 -1
- package/dist/Chat/ChatLayout.d.ts.map +1 -1
- package/dist/Chat/ChatLayout.js +17 -6
- 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.d.ts.map +1 -1
- package/dist/Chat/ChatMessageBubble.js +9 -9
- package/dist/Chat/ChatMessageList.d.ts +1 -1
- package/dist/Chat/ChatMessageList.js +1 -1
- 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 +10 -3
- package/dist/Chat/useTriggerMenu.js +2 -2
- package/dist/CheckboxInput/CheckboxInput.d.ts +1 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +7 -7
- 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 +23 -2
- package/dist/Citation/Citation.d.ts.map +1 -1
- package/dist/Citation/Citation.js +21 -7
- 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.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +16 -10
- package/dist/Collapsible/Collapsible.d.ts +1 -1
- package/dist/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible/Collapsible.js +4 -2
- 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 +2 -2
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +43 -4
- 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 +1 -1
- package/dist/CommandPalette/CommandPaletteInput.js +1 -1
- package/dist/CommandPalette/CommandPaletteItem.d.ts +1 -1
- package/dist/CommandPalette/CommandPaletteItem.js +2 -2
- package/dist/CommandPalette/CommandPaletteList.js +1 -1
- package/dist/ContextMenu/ContextMenu.d.ts +1 -1
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +24 -6
- package/dist/ContextMenu/index.d.ts +1 -0
- package/dist/ContextMenu/index.d.ts.map +1 -1
- package/dist/ContextMenu/index.js +3 -1
- package/dist/DateInput/DateInput.d.ts +10 -2
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +34 -20
- package/dist/DateRangeInput/DateRangeInput.d.ts +10 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +24 -21
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +24 -19
- package/dist/Dialog/Dialog.d.ts +46 -23
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +59 -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 +4 -20
- package/dist/Divider/Divider.d.ts.map +1 -1
- package/dist/Divider/Divider.js +14 -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 +7 -1
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +23 -6
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +18 -12
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +42 -64
- package/dist/DropdownMenu/DropdownMenuItem.d.ts +1 -1
- package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuItem.js +6 -3
- 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 +10 -3
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +104 -0
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -0
- package/dist/DropdownMenu/DropdownMenuSubMenu.js +435 -0
- package/dist/DropdownMenu/index.d.ts +10 -0
- package/dist/DropdownMenu/index.d.ts.map +1 -1
- package/dist/DropdownMenu/index.js +13 -0
- package/dist/DropdownMenu/menuItemHover.d.ts +24 -0
- package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -0
- package/dist/DropdownMenu/menuItemHover.js +34 -0
- package/dist/DropdownMenu/menuItemRoles.d.ts +8 -0
- package/dist/DropdownMenu/menuItemRoles.d.ts.map +1 -1
- package/dist/DropdownMenu/menuItemRoles.js +10 -1
- package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
- package/dist/DropdownMenu/renderDropdownItems.js +27 -10
- package/dist/EmptyState/EmptyState.d.ts +1 -1
- package/dist/EmptyState/EmptyState.js +1 -1
- package/dist/Field/Field.d.ts +4 -2
- package/dist/Field/Field.d.ts.map +1 -1
- package/dist/Field/Field.js +5 -2
- package/dist/Field/FieldLabel.d.ts +4 -3
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +50 -7
- package/dist/Field/inputStyles.stylex.d.ts +1 -0
- package/dist/Field/inputStyles.stylex.d.ts.map +1 -1
- package/dist/Field/inputStyles.stylex.js +1 -0
- package/dist/FieldStatus/FieldStatus.d.ts +10 -17
- package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
- package/dist/FieldStatus/FieldStatus.js +52 -20
- 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.d.ts +10 -2
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +94 -66
- 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 +1 -1
- package/dist/Grid/Grid.js +1 -1
- 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/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +10 -4
- package/dist/Icon/Icon.d.ts +16 -2
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +20 -4
- package/dist/Icon/globalIconRegistry.js +1 -1
- 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/Layer/layerAnimations.stylex.d.ts.map +1 -1
- package/dist/Layer/layerAnimations.stylex.js +10 -2
- 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 +1 -1
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +35 -16
- 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.d.ts.map +1 -1
- package/dist/List/List.js +7 -4
- 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 +11 -4
- package/dist/MetadataList/MetadataList.d.ts +2 -2
- package/dist/MetadataList/MetadataList.d.ts.map +1 -1
- package/dist/MetadataList/MetadataList.js +5 -3
- package/dist/MetadataList/MetadataListItem.d.ts +1 -1
- package/dist/MetadataList/MetadataListItem.js +1 -1
- package/dist/MobileNav/MobileNav.d.ts +1 -1
- package/dist/MobileNav/MobileNav.js +1 -1
- package/dist/MoreMenu/MoreMenu.d.ts +1 -1
- package/dist/MoreMenu/MoreMenu.js +1 -1
- package/dist/MultiSelector/MultiSelector.d.ts +10 -2
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +88 -46
- package/dist/NavIcon/NavIcon.d.ts +1 -1
- package/dist/NavIcon/NavIcon.js +1 -1
- package/dist/NavMenu/NavHeadingMenuItem.js +1 -1
- package/dist/NumberInput/NumberInput.d.ts +11 -3
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +23 -18
- package/dist/Outline/Outline.js +3 -3
- package/dist/OverflowList/OverflowList.d.ts +1 -1
- package/dist/OverflowList/OverflowList.js +1 -1
- package/dist/Pagination/Pagination.d.ts +1 -20
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +12 -18
- package/dist/Pagination/index.d.ts +21 -1
- package/dist/Pagination/index.d.ts.map +1 -1
- package/dist/Pagination/index.js +14 -0
- package/dist/Popover/Popover.d.ts +1 -1
- package/dist/Popover/Popover.js +1 -1
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +14 -3
- package/dist/PowerSearch/PowerSearch.d.ts +10 -3
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +3 -1
- package/dist/ProgressBar/ProgressBar.d.ts +1 -20
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +7 -16
- 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 +3 -3
- 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 +6 -6
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +45 -22
- 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 +2 -2
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +6 -4
- 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 +9 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +73 -20
- package/dist/SideNav/SideNav.d.ts +1 -1
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +6 -6
- package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseButton.js +14 -11
- package/dist/SideNav/SideNavHeading.d.ts +1 -1
- package/dist/SideNav/SideNavHeading.js +1 -1
- package/dist/SideNav/SideNavItem.d.ts +2 -2
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +13 -11
- 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 +146 -83
- package/dist/Spinner/Spinner.d.ts +4 -3
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +12 -3
- package/dist/Stack/Stack.d.ts +1 -1
- package/dist/Stack/Stack.js +1 -1
- package/dist/Stack/StackItem.d.ts +1 -1
- package/dist/Stack/StackItem.js +1 -1
- package/dist/StatusDot/StatusDot.d.ts +1 -20
- package/dist/StatusDot/StatusDot.d.ts.map +1 -1
- package/dist/StatusDot/StatusDot.js +2 -17
- package/dist/StatusDot/index.d.ts +21 -1
- package/dist/StatusDot/index.d.ts.map +1 -1
- package/dist/StatusDot/index.js +14 -0
- package/dist/Switch/Switch.d.ts +9 -2
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +172 -92
- package/dist/TabList/Tab.d.ts +1 -1
- package/dist/TabList/Tab.js +3 -3
- package/dist/TabList/TabList.d.ts +3 -12
- package/dist/TabList/TabList.d.ts.map +1 -1
- package/dist/TabList/TabList.js +6 -10
- package/dist/TabList/TabListContext.d.ts +0 -5
- package/dist/TabList/TabListContext.d.ts.map +1 -1
- package/dist/TabList/TabListContext.js +0 -5
- package/dist/TabList/TabMenu.d.ts +1 -1
- package/dist/TabList/TabMenu.js +2 -2
- package/dist/Table/BaseTable.d.ts +1 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +31 -5
- 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 -4
- package/dist/Table/TableHeaderCell.d.ts +1 -1
- package/dist/Table/TableHeaderCell.js +4 -4
- package/dist/Table/TableRow.d.ts +1 -1
- package/dist/Table/TableRow.js +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +15 -11
- 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 +58 -30
- package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
- package/dist/Table/plugins/selection/useTableSelection.js +3 -0
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +15 -7
- 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 -25
- package/dist/Table/types.d.ts +32 -0
- 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 +11 -2
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +120 -53
- package/dist/TextInput/TextInput.d.ts +11 -3
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +21 -18
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +52 -46
- package/dist/TimeInput/TimeInput.d.ts +10 -2
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +18 -18
- package/dist/Timestamp/Timestamp.d.ts +31 -3
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +49 -78
- package/dist/Timestamp/formatInstant.d.ts +41 -0
- package/dist/Timestamp/formatInstant.d.ts.map +1 -0
- package/dist/Timestamp/formatInstant.js +177 -0
- package/dist/Timestamp/index.d.ts +1 -0
- package/dist/Timestamp/index.d.ts.map +1 -1
- package/dist/Timestamp/tooltipEntries.d.ts +56 -0
- package/dist/Timestamp/tooltipEntries.d.ts.map +1 -0
- package/dist/Timestamp/tooltipEntries.js +163 -0
- 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 +10 -5
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +72 -46
- 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 +26 -0
- package/dist/Token/index.d.ts.map +1 -1
- package/dist/Token/index.js +14 -0
- package/dist/Tokenizer/Tokenizer.d.ts +10 -3
- 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/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +17 -1
- package/dist/TopNav/TopNav.d.ts +1 -1
- package/dist/TopNav/TopNav.js +1 -1
- package/dist/TopNav/TopNavHeading.d.ts +1 -1
- package/dist/TopNav/TopNavHeading.js +1 -1
- package/dist/TopNav/TopNavItem.d.ts +4 -2
- package/dist/TopNav/TopNavItem.d.ts.map +1 -1
- package/dist/TopNav/TopNavItem.js +31 -4
- package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +10 -4
- 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.js +1 -1
- package/dist/TreeList/TreeList.d.ts +1 -1
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +2 -1
- package/dist/TreeList/TreeListBranches.d.ts.map +1 -1
- package/dist/TreeList/TreeListBranches.js +9 -7
- package/dist/TreeList/TreeListItem.d.ts +1 -1
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +33 -15
- 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 +23 -12
- package/dist/Typeahead/Typeahead.d.ts +10 -3
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +12 -3
- package/dist/Typeahead/TypeaheadItem.d.ts +2 -2
- package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
- package/dist/Typeahead/TypeaheadItem.js +21 -11
- 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 +150 -51
- package/dist/astryx.umd.js +51 -51
- 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 +4 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +3 -1
- package/dist/hooks/isRtlElement.d.ts +18 -0
- package/dist/hooks/isRtlElement.d.ts.map +1 -0
- package/dist/hooks/isRtlElement.js +27 -0
- package/dist/hooks/useAnnounce.d.ts +3 -0
- package/dist/hooks/useAnnounce.d.ts.map +1 -1
- package/dist/hooks/useAnnounce.js +39 -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/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +52 -11
- package/dist/hooks/useGridFocus.d.ts +6 -1
- package/dist/hooks/useGridFocus.d.ts.map +1 -1
- package/dist/hooks/useGridFocus.js +12 -9
- package/dist/hooks/useHotkeys.d.ts +9 -0
- package/dist/hooks/useHotkeys.d.ts.map +1 -1
- package/dist/hooks/useHotkeys.js +9 -0
- package/dist/hooks/useInputContainer.d.ts.map +1 -1
- package/dist/hooks/useInputContainer.js +29 -1
- package/dist/hooks/useInputStatusIcon.d.ts +38 -0
- package/dist/hooks/useInputStatusIcon.d.ts.map +1 -0
- package/dist/hooks/useInputStatusIcon.js +169 -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 +39 -1
- package/dist/hooks/useListFocus.d.ts.map +1 -1
- package/dist/hooks/useListFocus.js +54 -9
- package/dist/i18n/InternationalizationContext.d.ts +1 -0
- package/dist/i18n/InternationalizationContext.d.ts.map +1 -1
- package/dist/i18n/InternationalizationContext.js +3 -0
- package/dist/i18n/InternationalizationProvider.d.ts +8 -1
- package/dist/i18n/InternationalizationProvider.d.ts.map +1 -1
- package/dist/i18n/InternationalizationProvider.js +5 -1
- package/dist/i18n/getLocaleDirection.d.ts +18 -0
- package/dist/i18n/getLocaleDirection.d.ts.map +1 -0
- package/dist/i18n/getLocaleDirection.js +29 -0
- package/dist/i18n/index.d.ts +6 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +7 -1
- package/dist/i18n/useDirection.d.ts +2 -0
- package/dist/i18n/useDirection.d.ts.map +1 -0
- package/dist/i18n/useDirection.js +27 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/theme/defineTheme.d.ts +6 -0
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +13 -0
- package/dist/theme/expandColorScale.d.ts +19 -2
- package/dist/theme/expandColorScale.d.ts.map +1 -1
- package/dist/theme/expandColorScale.js +38 -10
- package/dist/theme/index.d.ts +4 -3
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/types.d.ts +10 -2
- package/dist/theme/types.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -1
- package/dist/utils/plainDate.d.ts +17 -0
- package/dist/utils/plainDate.d.ts.map +1 -1
- package/dist/utils/plainDate.js +23 -4
- package/dist/utils/rtlStyles.d.ts +45 -0
- package/dist/utils/rtlStyles.d.ts.map +1 -0
- package/dist/utils/rtlStyles.js +52 -0
- package/groups.doc.mjs +2 -2
- package/locales/en.json +120 -0
- package/locales/pseudo.json +90 -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.tsx +2 -20
- 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 +53 -6
- package/src/Avatar/Avatar.test.tsx +218 -0
- package/src/Avatar/Avatar.tsx +293 -82
- package/src/Avatar/AvatarStatusDot.doc.mjs +5 -5
- package/src/Avatar/AvatarStatusDot.tsx +8 -31
- package/src/Avatar/index.ts +26 -1
- package/src/AvatarGroup/AvatarGroup.doc.mjs +5 -3
- package/src/AvatarGroup/AvatarGroup.test.tsx +162 -2
- package/src/AvatarGroup/AvatarGroup.tsx +59 -4
- package/src/AvatarGroup/AvatarGroupOverflow.doc.mjs +1 -1
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +6 -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 +14 -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 +11 -11
- package/src/Breadcrumbs/Breadcrumbs.doc.mjs +3 -3
- package/src/Breadcrumbs/Breadcrumbs.test.tsx +52 -1
- package/src/Breadcrumbs/Breadcrumbs.tsx +2 -19
- package/src/Breadcrumbs/index.ts +23 -5
- package/src/Button/Button.doc.mjs +3 -7
- package/src/Button/Button.test.tsx +16 -0
- package/src/Button/Button.tsx +8 -25
- 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 +185 -23
- package/src/Calendar/Calendar.tsx +74 -17
- package/src/Calendar/dayCellUtils.test.ts +18 -18
- package/src/Calendar/dayCellUtils.ts +2 -2
- package/src/Calendar/styles.ts +35 -41
- package/src/Card/Card.doc.mjs +3 -3
- package/src/Card/Card.tsx +2 -2
- package/src/Carousel/Carousel.doc.mjs +3 -3
- package/src/Carousel/Carousel.tsx +26 -7
- 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 +3 -3
- package/src/Chat/ChatComposer.tsx +5 -5
- package/src/Chat/ChatComposerDrawer.doc.mjs +1 -1
- package/src/Chat/ChatComposerDrawer.tsx +3 -3
- package/src/Chat/ChatComposerInput.doc.mjs +2 -2
- package/src/Chat/ChatComposerInput.tsx +3 -3
- package/src/Chat/ChatComposerTokenElement.doc.mjs +1 -1
- package/src/Chat/ChatDictationButton.doc.mjs +3 -3
- package/src/Chat/ChatDictationButton.tsx +8 -2
- package/src/Chat/ChatLayout.doc.mjs +1 -1
- package/src/Chat/ChatLayout.test.tsx +57 -0
- package/src/Chat/ChatLayout.tsx +27 -6
- 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 +16 -11
- 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/ChatSystemMessage.doc.mjs +1 -1
- package/src/Chat/ChatSystemMessage.test.tsx +5 -0
- 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.tsx +9 -2
- package/src/Chat/useTriggerMenu.tsx +1 -1
- package/src/CheckboxInput/CheckboxInput.doc.mjs +9 -3
- package/src/CheckboxInput/CheckboxInput.test.tsx +56 -0
- package/src/CheckboxInput/CheckboxInput.tsx +22 -7
- package/src/CheckboxList/CheckboxList.doc.mjs +9 -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 +6 -5
- package/src/Citation/Citation.test.tsx +97 -0
- package/src/Citation/Citation.tsx +44 -12
- 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 +38 -11
- package/src/Collapsible/Collapsible.doc.mjs +4 -3
- package/src/Collapsible/Collapsible.test.tsx +7 -0
- package/src/Collapsible/Collapsible.tsx +17 -7
- 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 +95 -1
- package/src/CommandPalette/CommandPalette.tsx +42 -3
- 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.tsx +1 -1
- package/src/CommandPalette/CommandPaletteInput.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteInput.tsx +1 -1
- package/src/CommandPalette/CommandPaletteItem.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteItem.tsx +2 -2
- package/src/CommandPalette/CommandPaletteList.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteList.tsx +1 -1
- package/src/ContextMenu/ContextMenu.doc.mjs +3 -3
- package/src/ContextMenu/ContextMenu.test.tsx +59 -2
- package/src/ContextMenu/ContextMenu.tsx +23 -12
- package/src/ContextMenu/ContextMenuItem.doc.mjs +1 -1
- package/src/ContextMenu/index.ts +5 -0
- package/src/DateInput/DateInput.doc.mjs +28 -3
- package/src/DateInput/DateInput.test.tsx +230 -0
- package/src/DateInput/DateInput.tsx +52 -30
- package/src/DateRangeInput/DateRangeInput.doc.mjs +18 -2
- package/src/DateRangeInput/DateRangeInput.test.tsx +140 -0
- package/src/DateRangeInput/DateRangeInput.tsx +43 -31
- package/src/DateTimeInput/DateTimeInput.doc.mjs +25 -4
- package/src/DateTimeInput/DateTimeInput.test.tsx +112 -0
- package/src/DateTimeInput/DateTimeInput.tsx +45 -40
- package/src/Dialog/Dialog.doc.mjs +9 -5
- package/src/Dialog/Dialog.test.tsx +84 -1
- package/src/Dialog/Dialog.tsx +87 -45
- 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.test.tsx +32 -8
- package/src/Divider/Divider.tsx +16 -20
- package/src/Divider/index.ts +19 -5
- package/src/DropdownMenu/DropdownMenu.doc.mjs +8 -5
- package/src/DropdownMenu/DropdownMenu.test.tsx +95 -0
- package/src/DropdownMenu/DropdownMenu.tsx +32 -13
- package/src/DropdownMenu/DropdownMenuCheckboxItem.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +49 -66
- package/src/DropdownMenu/DropdownMenuItem.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuItem.tsx +10 -4
- 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 +19 -4
- package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +84 -2
- package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +88 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +680 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +569 -0
- package/src/DropdownMenu/index.ts +16 -0
- package/src/DropdownMenu/menuItemHover.ts +40 -0
- package/src/DropdownMenu/menuItemRoles.ts +9 -0
- package/src/DropdownMenu/renderDropdownItems.tsx +40 -14
- 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 +15 -10
- package/src/Field/FieldLabel.doc.mjs +1 -1
- package/src/Field/FieldLabel.test.tsx +103 -0
- package/src/Field/FieldLabel.tsx +62 -6
- package/src/Field/inputStyles.stylex.ts +2 -0
- package/src/FieldStatus/FieldStatus.doc.mjs +3 -2
- package/src/FieldStatus/FieldStatus.test.tsx +133 -0
- package/src/FieldStatus/FieldStatus.tsx +62 -23
- package/src/FieldStatus/index.ts +20 -5
- package/src/FileInput/FileInput.doc.mjs +26 -5
- package/src/FileInput/FileInput.test.tsx +104 -13
- package/src/FileInput/FileInput.tsx +107 -80
- package/src/FormLayout/FormLayout.doc.mjs +3 -3
- package/src/FormLayout/FormLayout.tsx +2 -5
- package/src/Grid/Grid.doc.mjs +3 -3
- package/src/Grid/Grid.tsx +1 -1
- 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/HoverCard/useHoverCard.tsx +15 -3
- package/src/Icon/Icon.doc.mjs +16 -3
- package/src/Icon/Icon.test.tsx +89 -0
- package/src/Icon/Icon.tsx +52 -4
- package/src/Icon/globalIconRegistry.tsx +1 -1
- 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/layerAnimations.stylex.ts +23 -0
- 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 +3 -3
- package/src/Lightbox/Lightbox.test.tsx +33 -0
- package/src/Lightbox/Lightbox.tsx +31 -11
- 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.test.tsx +17 -29
- package/src/List/List.tsx +7 -2
- package/src/List/ListItem.doc.mjs +13 -1
- package/src/List/ListItem.tsx +14 -1
- package/src/Markdown/Markdown.doc.mjs +1 -1
- package/src/Markdown/Markdown.test.tsx +21 -0
- package/src/Markdown/Markdown.tsx +7 -3
- package/src/MetadataList/MetadataList.doc.mjs +3 -3
- package/src/MetadataList/MetadataList.test.tsx +24 -0
- package/src/MetadataList/MetadataList.tsx +7 -3
- package/src/MetadataList/MetadataListItem.doc.mjs +1 -1
- package/src/MetadataList/MetadataListItem.tsx +1 -1
- package/src/MobileNav/MobileNav.doc.mjs +3 -3
- package/src/MobileNav/MobileNav.tsx +1 -1
- package/src/MoreMenu/MoreMenu.doc.mjs +3 -3
- package/src/MoreMenu/MoreMenu.tsx +1 -1
- package/src/MultiSelector/MultiSelector.doc.mjs +23 -3
- package/src/MultiSelector/MultiSelector.test.tsx +436 -0
- package/src/MultiSelector/MultiSelector.tsx +134 -68
- package/src/NavIcon/NavIcon.doc.mjs +3 -3
- package/src/NavIcon/NavIcon.tsx +1 -1
- package/src/NavMenu/NavHeadingMenuItem.tsx +1 -1
- package/src/NavMenu/NavMenu.doc.mjs +2 -2
- package/src/NumberInput/NumberInput.doc.mjs +24 -3
- package/src/NumberInput/NumberInput.test.tsx +71 -0
- package/src/NumberInput/NumberInput.tsx +36 -27
- package/src/Outline/Outline.doc.mjs +3 -3
- package/src/Outline/Outline.test.tsx +12 -12
- package/src/Outline/Outline.tsx +3 -3
- 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 +3 -3
- package/src/Pagination/Pagination.tsx +13 -25
- package/src/Pagination/index.ts +21 -1
- package/src/Popover/Popover.doc.mjs +3 -3
- package/src/Popover/Popover.tsx +1 -1
- package/src/Popover/usePopover.doc.mjs +2 -2
- package/src/Popover/usePopover.tsx +10 -4
- package/src/PowerSearch/PowerSearch.doc.mjs +18 -3
- package/src/PowerSearch/PowerSearch.test.tsx +23 -0
- package/src/PowerSearch/PowerSearch.tsx +11 -2
- package/src/ProgressBar/ProgressBar.doc.mjs +3 -3
- package/src/ProgressBar/ProgressBar.test.tsx +34 -0
- package/src/ProgressBar/ProgressBar.tsx +18 -23
- package/src/ProgressBar/index.ts +22 -5
- package/src/RadioList/RadioList.doc.mjs +9 -3
- package/src/RadioList/RadioList.test.tsx +26 -4
- package/src/RadioList/RadioList.tsx +3 -3
- package/src/RadioList/RadioListItem.doc.mjs +1 -1
- package/src/RadioList/RadioListItem.tsx +13 -6
- package/src/Resizable/Resizable.doc.mjs +2 -2
- package/src/Resizable/ResizeHandle.test.tsx +95 -0
- package/src/Resizable/ResizeHandle.tsx +71 -25
- 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 -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 +18 -3
- package/src/Selector/Selector.test.tsx +400 -0
- package/src/Selector/Selector.tsx +96 -24
- package/src/Selector/SelectorOption.doc.mjs +1 -1
- package/src/SideNav/SideNav.doc.mjs +3 -3
- package/src/SideNav/SideNav.tsx +2 -9
- package/src/SideNav/SideNavCollapseButton.doc.mjs +1 -1
- package/src/SideNav/SideNavCollapseButton.tsx +10 -8
- package/src/SideNav/SideNavHeading.doc.mjs +1 -1
- package/src/SideNav/SideNavHeading.tsx +1 -1
- package/src/SideNav/SideNavItem.doc.mjs +1 -1
- package/src/SideNav/SideNavItem.tsx +6 -4
- 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 +9 -3
- package/src/Slider/Slider.test.tsx +240 -12
- package/src/Slider/Slider.tsx +102 -33
- package/src/Spinner/Spinner.doc.mjs +3 -3
- package/src/Spinner/Spinner.test.tsx +10 -8
- package/src/Spinner/Spinner.tsx +16 -6
- package/src/Stack/Stack.doc.mjs +3 -3
- package/src/Stack/Stack.tsx +1 -1
- package/src/Stack/StackItem.tsx +1 -1
- package/src/StatusDot/StatusDot.doc.mjs +3 -3
- package/src/StatusDot/StatusDot.tsx +2 -22
- package/src/StatusDot/index.ts +22 -5
- package/src/Switch/Switch.doc.mjs +145 -45
- package/src/Switch/Switch.test.tsx +145 -0
- package/src/Switch/Switch.tsx +150 -33
- package/src/TabList/Tab.doc.mjs +1 -1
- package/src/TabList/Tab.tsx +3 -3
- package/src/TabList/TabList.doc.mjs +3 -9
- package/src/TabList/TabList.test.tsx +3 -15
- package/src/TabList/TabList.tsx +7 -18
- package/src/TabList/TabListContext.ts +0 -6
- package/src/TabList/TabMenu.doc.mjs +1 -1
- package/src/TabList/TabMenu.tsx +3 -3
- package/src/Table/BaseTable.tsx +35 -3
- package/src/Table/Table.doc.mjs +14 -3
- package/src/Table/Table.test.tsx +85 -0
- package/src/Table/Table.tsx +1 -1
- package/src/Table/TableCell.doc.mjs +1 -1
- package/src/Table/TableCell.tsx +4 -4
- package/src/Table/TableHeaderCell.doc.mjs +1 -1
- package/src/Table/TableHeaderCell.tsx +4 -4
- package/src/Table/TableRow.doc.mjs +1 -1
- package/src/Table/TableRow.tsx +1 -1
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +9 -6
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +19 -0
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +48 -21
- package/src/Table/plugins/selection/useTableSelection.test.tsx +61 -3
- package/src/Table/plugins/selection/useTableSelection.tsx +3 -0
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +38 -9
- package/src/Table/plugins/tree/useTableTreeData.test.tsx +161 -2
- package/src/Table/plugins/tree/useTableTreeData.tsx +71 -14
- package/src/Table/types.ts +33 -0
- 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 +26 -5
- package/src/TextArea/TextArea.test.tsx +132 -4
- package/src/TextArea/TextArea.tsx +162 -68
- package/src/TextInput/TextInput.doc.mjs +24 -3
- package/src/TextInput/TextInput.test.tsx +150 -0
- package/src/TextInput/TextInput.tsx +29 -26
- package/src/Thumbnail/Thumbnail.doc.mjs +3 -3
- package/src/Thumbnail/Thumbnail.test.tsx +24 -1
- package/src/Thumbnail/Thumbnail.tsx +29 -36
- package/src/TimeInput/TimeInput.doc.mjs +24 -3
- package/src/TimeInput/TimeInput.test.tsx +23 -0
- package/src/TimeInput/TimeInput.tsx +25 -26
- package/src/Timestamp/Timestamp.doc.mjs +35 -9
- package/src/Timestamp/Timestamp.test.tsx +371 -0
- package/src/Timestamp/Timestamp.tsx +97 -94
- package/src/Timestamp/formatInstant.ts +218 -0
- package/src/Timestamp/index.ts +4 -0
- package/src/Timestamp/tooltipEntries.test.ts +552 -0
- package/src/Timestamp/tooltipEntries.ts +210 -0
- 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 +166 -15
- package/src/Token/Token.tsx +79 -48
- package/src/Token/TokenLink.tsx +107 -0
- package/src/Token/index.ts +27 -0
- package/src/Tokenizer/Tokenizer.doc.mjs +26 -4
- package/src/Tokenizer/Tokenizer.test.tsx +23 -0
- package/src/Tokenizer/Tokenizer.tsx +15 -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.test.tsx +46 -0
- package/src/Tooltip/Tooltip.tsx +1 -1
- package/src/Tooltip/useTooltip.doc.mjs +2 -2
- package/src/Tooltip/useTooltip.tsx +20 -0
- package/src/TopNav/TopNav.doc.mjs +3 -3
- package/src/TopNav/TopNav.test.tsx +93 -2
- package/src/TopNav/TopNav.tsx +1 -1
- package/src/TopNav/TopNavHeading.doc.mjs +1 -1
- package/src/TopNav/TopNavHeading.tsx +1 -1
- package/src/TopNav/TopNavItem.doc.mjs +4 -4
- package/src/TopNav/TopNavItem.tsx +36 -7
- package/src/TopNav/TopNavMegaMenu.doc.mjs +1 -1
- package/src/TopNav/TopNavMegaMenu.tsx +27 -3
- package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +2 -2
- 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 +1 -1
- package/src/TreeList/TreeList.doc.mjs +9 -3
- package/src/TreeList/TreeList.test.tsx +50 -10
- package/src/TreeList/TreeList.tsx +6 -1
- package/src/TreeList/TreeListBranches.tsx +9 -7
- package/src/TreeList/TreeListItem.tsx +34 -12
- 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 +43 -16
- package/src/Typeahead/Typeahead.doc.mjs +16 -3
- package/src/Typeahead/Typeahead.test.tsx +112 -0
- package/src/Typeahead/Typeahead.tsx +18 -2
- package/src/Typeahead/TypeaheadItem.doc.mjs +1 -1
- package/src/Typeahead/TypeaheadItem.tsx +3 -2
- 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 +69 -0
- package/src/doc-mjs.d.ts +22 -0
- 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 +13 -0
- package/src/hooks/isRtlElement.ts +27 -0
- package/src/hooks/useAnnounce.test.tsx +75 -2
- package/src/hooks/useAnnounce.ts +47 -1
- 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/useFocusTrap.test.tsx +104 -0
- package/src/hooks/useFocusTrap.ts +61 -12
- package/src/hooks/useGridFocus.doc.mjs +5 -5
- package/src/hooks/useGridFocus.test.tsx +41 -0
- package/src/hooks/useGridFocus.ts +21 -10
- package/src/hooks/useHotkeys.doc.mjs +2 -2
- package/src/hooks/useHotkeys.ts +9 -0
- package/src/hooks/useImageMode.doc.mjs +2 -2
- package/src/hooks/useInputContainer.doc.mjs +2 -2
- package/src/hooks/useInputContainer.test.tsx +180 -0
- package/src/hooks/useInputContainer.ts +36 -1
- package/src/hooks/useInputStatusIcon.test.tsx +221 -0
- package/src/hooks/useInputStatusIcon.tsx +235 -0
- 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 +27 -5
- package/src/hooks/useListFocus.test.tsx +153 -1
- package/src/hooks/useListFocus.ts +102 -9
- 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/i18n/InternationalizationContext.ts +4 -0
- package/src/i18n/InternationalizationProvider.doc.mjs +2 -2
- package/src/i18n/InternationalizationProvider.tsx +12 -2
- package/src/i18n/__tests__/getLocaleDirection.test.ts +40 -0
- package/src/i18n/__tests__/useDirection.test.tsx +66 -0
- package/src/i18n/getLocaleDirection.ts +29 -0
- package/src/i18n/index.ts +6 -0
- package/src/i18n/useDirection.ts +29 -0
- package/src/i18n/useTranslator.doc.mjs +2 -2
- package/src/index.ts +14 -10
- package/src/reset.css +0 -26
- package/src/reset.test.ts +60 -0
- 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/defineTheme.ts +6 -0
- package/src/theme/derivedVarRegistry.test.ts +1 -0
- package/src/theme/derivedVarRegistry.ts +6 -0
- package/src/theme/expandColorScale.test.ts +144 -0
- package/src/theme/expandColorScale.ts +53 -15
- package/src/theme/generateThemeRules.test.ts +42 -0
- package/src/theme/index.ts +4 -8
- package/src/theme/types.ts +14 -13
- package/src/theme/useTheme.doc.mjs +2 -2
- package/src/utils/index.ts +2 -0
- package/src/utils/plainDate.test.ts +24 -6
- package/src/utils/plainDate.ts +18 -4
- package/src/utils/rtlStyles.ts +49 -0
- 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/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
|
@@ -14,6 +14,10 @@ import userEvent from '@testing-library/user-event';
|
|
|
14
14
|
import {useState, type MouseEvent} from 'react';
|
|
15
15
|
import {ToggleButton} from './ToggleButton';
|
|
16
16
|
import {ToggleButtonGroup} from './ToggleButtonGroup';
|
|
17
|
+
import {
|
|
18
|
+
getAllInjectedCss,
|
|
19
|
+
getForcedColorsRules,
|
|
20
|
+
} from '../__tests__/forcedColors';
|
|
17
21
|
|
|
18
22
|
// =============================================================================
|
|
19
23
|
// ToggleButton — Standalone
|
|
@@ -517,3 +521,23 @@ describe('ToggleButtonGroup (multiple)', () => {
|
|
|
517
521
|
);
|
|
518
522
|
});
|
|
519
523
|
});
|
|
524
|
+
|
|
525
|
+
// jsdom cannot emulate forced-colors rendering, so these assert that the
|
|
526
|
+
// compiled output includes the forced-colors rules; visual behavior needs
|
|
527
|
+
// manual verification under Windows High Contrast.
|
|
528
|
+
describe('forced colors (WCAG 1.4.11)', () => {
|
|
529
|
+
it('compiles forced-colors overrides so the pressed state survives Windows High Contrast', () => {
|
|
530
|
+
render(<ToggleButton label="Bold" isPressed onPressedChange={() => {}} />);
|
|
531
|
+
const css = getForcedColorsRules();
|
|
532
|
+
// The painted pressed overlay is stripped; Highlight/HighlightText marks
|
|
533
|
+
// the pressed toggle (critical for icon-only toggles, which otherwise
|
|
534
|
+
// lose all pressed indication).
|
|
535
|
+
expect(css).toContain('background-color: highlight;');
|
|
536
|
+
expect(css).toContain('color: highlighttext;');
|
|
537
|
+
// ToggleButton renders a <button>; without opting out of UA remapping it
|
|
538
|
+
// keeps the native ButtonFace surface and ignores the Highlight fill,
|
|
539
|
+
// leaving HighlightText text on a white surface. forced-color-adjust: none
|
|
540
|
+
// makes both render as authored.
|
|
541
|
+
expect(getAllInjectedCss()).toContain('forced-color-adjust: none;');
|
|
542
|
+
});
|
|
543
|
+
});
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* SYNC: When modified, update these files to stay in sync:
|
|
18
18
|
* - /packages/core/src/ToggleButton/index.ts (exports if types change)
|
|
19
19
|
* - /apps/storybook/stories/ToggleButton.stories.tsx
|
|
20
|
-
* - /packages/cli/templates/blocks/components/ToggleButton/ (showcase blocks)
|
|
20
|
+
* - /packages/cli/assets/templates/blocks/components/ToggleButton/ (showcase blocks)
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
23
|
import React, {useOptimistic, type ReactNode} from 'react';
|
|
@@ -40,7 +40,25 @@ import {themeProps} from '../utils/themeProps';
|
|
|
40
40
|
*/
|
|
41
41
|
const pressedStyles = stylex.create({
|
|
42
42
|
background: {
|
|
43
|
-
|
|
43
|
+
// forced-color-adjust must be `none` here: ToggleButton renders a <button>,
|
|
44
|
+
// and the UA keeps native form-control colors (ButtonFace surface) for it
|
|
45
|
+
// under forced colors, ignoring the authored Highlight fill — the label kept
|
|
46
|
+
// its HighlightText color, giving white text on a white surface. Opting the
|
|
47
|
+
// pressed button out of UA remapping makes both the Highlight surface and
|
|
48
|
+
// the HighlightText label render as authored, restoring figure-ground.
|
|
49
|
+
forcedColorAdjust: 'none',
|
|
50
|
+
backgroundColor: {
|
|
51
|
+
default: colorVars['--color-overlay-pressed'],
|
|
52
|
+
// Forced colors (Windows High Contrast) strips the painted pressed
|
|
53
|
+
// overlay, which would leave icon-only toggles with no pressed
|
|
54
|
+
// indication at all. Highlight/HighlightText is the platform convention
|
|
55
|
+
// for a selected/pressed control (WCAG 1.4.11).
|
|
56
|
+
'@media (forced-colors: active)': 'Highlight',
|
|
57
|
+
},
|
|
58
|
+
color: {
|
|
59
|
+
default: null,
|
|
60
|
+
'@media (forced-colors: active)': 'HighlightText',
|
|
61
|
+
},
|
|
44
62
|
},
|
|
45
63
|
});
|
|
46
64
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* SYNC: When modified, update these files to stay in sync:
|
|
16
16
|
* - /packages/core/src/ToggleButton/index.ts
|
|
17
17
|
* - /apps/storybook/stories/ToggleButton.stories.tsx
|
|
18
|
-
* - /packages/cli/templates/blocks/components/ToggleButton/ (showcase blocks)
|
|
18
|
+
* - /packages/cli/assets/templates/blocks/components/ToggleButton/ (showcase blocks)
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
21
|
import {createContext, useCallback, use, useMemo, type ReactNode} from 'react';
|
|
@@ -153,8 +153,7 @@ export interface ToggleButtonGroupMultipleProps extends ToggleButtonGroupBasePro
|
|
|
153
153
|
|
|
154
154
|
/** Discriminated union of single and multiple group props. */
|
|
155
155
|
export type ToggleButtonGroupProps =
|
|
156
|
-
|
|
|
157
|
-
| ToggleButtonGroupMultipleProps;
|
|
156
|
+
ToggleButtonGroupSingleProps | ToggleButtonGroupMultipleProps;
|
|
158
157
|
|
|
159
158
|
// =============================================================================
|
|
160
159
|
// Component
|
|
@@ -176,9 +175,7 @@ export type ToggleButtonGroupProps =
|
|
|
176
175
|
* </ToggleButtonGroup>
|
|
177
176
|
* ```
|
|
178
177
|
*/
|
|
179
|
-
export function ToggleButtonGroup(
|
|
180
|
-
props: ToggleButtonGroupProps,
|
|
181
|
-
): ReactNode {
|
|
178
|
+
export function ToggleButtonGroup(props: ToggleButtonGroupProps): ReactNode {
|
|
182
179
|
const {
|
|
183
180
|
children,
|
|
184
181
|
label,
|
package/src/Token/Token.doc.mjs
CHANGED
|
@@ -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: 'Token',
|
|
@@ -112,7 +112,7 @@ export const docs = {
|
|
|
112
112
|
},
|
|
113
113
|
};
|
|
114
114
|
|
|
115
|
-
/** @type {import('
|
|
115
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
|
|
116
116
|
export const docsZh = {
|
|
117
117
|
name: 'Token',
|
|
118
118
|
displayName: 'Token',
|
|
@@ -217,7 +217,7 @@ export const docsZh = {
|
|
|
217
217
|
},
|
|
218
218
|
};
|
|
219
219
|
|
|
220
|
-
/** @type {import('
|
|
220
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
|
|
221
221
|
export const docsDense = {
|
|
222
222
|
description: 'compact chip/tag for inline metadata, filters, selections. 11 colors, 3 sizes, removable, clickable, linkable.',
|
|
223
223
|
usage: {
|
package/src/Token/Token.test.tsx
CHANGED
|
@@ -13,6 +13,7 @@ import {describe, it, expect, vi} from 'vitest';
|
|
|
13
13
|
import {render, screen, fireEvent} from '@testing-library/react';
|
|
14
14
|
import userEvent from '@testing-library/user-event';
|
|
15
15
|
import {Token} from './Token';
|
|
16
|
+
import type {TokenColor} from './Token';
|
|
16
17
|
|
|
17
18
|
describe('Token', () => {
|
|
18
19
|
it('renders with label', () => {
|
|
@@ -51,6 +52,23 @@ describe('Token', () => {
|
|
|
51
52
|
}
|
|
52
53
|
});
|
|
53
54
|
|
|
55
|
+
it('reflects a custom (theme-augmented) color as a class and data attribute', () => {
|
|
56
|
+
// Themes extend TokenColorMap via module augmentation and supply the
|
|
57
|
+
// styling through generated theme CSS; the runtime just forwards the
|
|
58
|
+
// value as the stable class + data-color reflection so the theme
|
|
59
|
+
// selector can match. Cast simulates a consumer-augmented color.
|
|
60
|
+
render(
|
|
61
|
+
<Token
|
|
62
|
+
label="Brand"
|
|
63
|
+
color={'brand' as TokenColor}
|
|
64
|
+
data-testid="token-custom"
|
|
65
|
+
/>,
|
|
66
|
+
);
|
|
67
|
+
const token = screen.getByTestId('token-custom');
|
|
68
|
+
expect(token).toHaveClass('astryx-token', 'brand');
|
|
69
|
+
expect(token).toHaveAttribute('data-color', 'brand');
|
|
70
|
+
});
|
|
71
|
+
|
|
54
72
|
it('renders as a span with invisible button when onClick is provided', () => {
|
|
55
73
|
const handleClick = vi.fn();
|
|
56
74
|
render(
|
|
@@ -135,10 +153,7 @@ describe('Token', () => {
|
|
|
135
153
|
|
|
136
154
|
it('renders endContent', () => {
|
|
137
155
|
render(
|
|
138
|
-
<Token
|
|
139
|
-
label="Token"
|
|
140
|
-
endContent={<span data-testid="end">End</span>}
|
|
141
|
-
/>,
|
|
156
|
+
<Token label="Token" endContent={<span data-testid="end">End</span>} />,
|
|
142
157
|
);
|
|
143
158
|
expect(screen.getByTestId('end')).toBeInTheDocument();
|
|
144
159
|
expect(screen.getByText('End')).toBeInTheDocument();
|
|
@@ -241,12 +256,7 @@ describe('Token accessibility', () => {
|
|
|
241
256
|
|
|
242
257
|
it('disables both buttons when isDisabled is true', () => {
|
|
243
258
|
render(
|
|
244
|
-
<Token
|
|
245
|
-
label="Token"
|
|
246
|
-
onClick={() => {}}
|
|
247
|
-
onRemove={() => {}}
|
|
248
|
-
isDisabled
|
|
249
|
-
/>,
|
|
259
|
+
<Token label="Token" onClick={() => {}} onRemove={() => {}} isDisabled />,
|
|
250
260
|
);
|
|
251
261
|
const buttons = screen.getAllByRole('button');
|
|
252
262
|
for (const button of buttons) {
|
|
@@ -320,6 +330,151 @@ describe('Token accessibility', () => {
|
|
|
320
330
|
});
|
|
321
331
|
});
|
|
322
332
|
|
|
333
|
+
describe('Token link with remove button', () => {
|
|
334
|
+
it('does not nest the remove button inside the link', () => {
|
|
335
|
+
render(<Token label="Tag" href="/test" onRemove={() => {}} />);
|
|
336
|
+
const link = screen.getByRole('link', {name: 'Tag'});
|
|
337
|
+
const removeButton = screen.getByRole('button', {name: 'Remove Tag'});
|
|
338
|
+
expect(link.contains(removeButton)).toBe(false);
|
|
339
|
+
});
|
|
340
|
+
|
|
341
|
+
it('keeps the link keyboard-focusable and fires onRemove from the sibling button', async () => {
|
|
342
|
+
const user = userEvent.setup();
|
|
343
|
+
const handleRemove = vi.fn();
|
|
344
|
+
render(<Token label="Tag" href="/test" onRemove={handleRemove} />);
|
|
345
|
+
|
|
346
|
+
const link = screen.getByRole('link', {name: 'Tag'});
|
|
347
|
+
expect(link.tagName).toBe('A');
|
|
348
|
+
expect(link).toHaveAttribute('href', '/test');
|
|
349
|
+
|
|
350
|
+
// Tab reaches the link first, then the remove button
|
|
351
|
+
await user.tab();
|
|
352
|
+
expect(link).toHaveFocus();
|
|
353
|
+
await user.tab();
|
|
354
|
+
const removeButton = screen.getByRole('button', {name: 'Remove Tag'});
|
|
355
|
+
expect(removeButton).toHaveFocus();
|
|
356
|
+
|
|
357
|
+
// Activating the remove button fires onRemove without involving the link
|
|
358
|
+
await user.keyboard('{Enter}');
|
|
359
|
+
expect(handleRemove).toHaveBeenCalledTimes(1);
|
|
360
|
+
});
|
|
361
|
+
|
|
362
|
+
it('wrapper structure matches the onClick branch pattern', () => {
|
|
363
|
+
render(
|
|
364
|
+
<Token
|
|
365
|
+
label="Tag"
|
|
366
|
+
href="/test"
|
|
367
|
+
onRemove={() => {}}
|
|
368
|
+
data-testid="link-token"
|
|
369
|
+
/>,
|
|
370
|
+
);
|
|
371
|
+
render(
|
|
372
|
+
<Token
|
|
373
|
+
label="Tag"
|
|
374
|
+
onClick={() => {}}
|
|
375
|
+
onRemove={() => {}}
|
|
376
|
+
data-testid="click-token"
|
|
377
|
+
/>,
|
|
378
|
+
);
|
|
379
|
+
|
|
380
|
+
const linkRoot = screen.getByTestId('link-token');
|
|
381
|
+
const clickRoot = screen.getByTestId('click-token');
|
|
382
|
+
|
|
383
|
+
// Both render a <span> container with the same visual classes
|
|
384
|
+
expect(linkRoot.tagName).toBe('SPAN');
|
|
385
|
+
expect(linkRoot.className).toBe(clickRoot.className);
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
it('clicking the container activates the link', () => {
|
|
389
|
+
render(
|
|
390
|
+
<Token
|
|
391
|
+
label="Tag"
|
|
392
|
+
href="/test"
|
|
393
|
+
onRemove={() => {}}
|
|
394
|
+
icon={<span data-testid="icon">★</span>}
|
|
395
|
+
data-testid="link-token"
|
|
396
|
+
/>,
|
|
397
|
+
);
|
|
398
|
+
const link = screen.getByRole('link', {name: 'Tag'});
|
|
399
|
+
const handleLinkClick = vi.fn((e: MouseEvent) => e.preventDefault());
|
|
400
|
+
link.addEventListener('click', handleLinkClick);
|
|
401
|
+
|
|
402
|
+
// Clicking outside the anchor (e.g. the icon) still activates the link
|
|
403
|
+
fireEvent.click(screen.getByTestId('icon'));
|
|
404
|
+
expect(handleLinkClick).toHaveBeenCalledTimes(1);
|
|
405
|
+
});
|
|
406
|
+
|
|
407
|
+
it('clicking the remove button does not activate the link', () => {
|
|
408
|
+
const handleRemove = vi.fn();
|
|
409
|
+
render(<Token label="Tag" href="/test" onRemove={handleRemove} />);
|
|
410
|
+
const link = screen.getByRole('link', {name: 'Tag'});
|
|
411
|
+
const handleLinkClick = vi.fn((e: MouseEvent) => e.preventDefault());
|
|
412
|
+
link.addEventListener('click', handleLinkClick);
|
|
413
|
+
|
|
414
|
+
fireEvent.click(screen.getByRole('button', {name: 'Remove Tag'}));
|
|
415
|
+
expect(handleRemove).toHaveBeenCalledTimes(1);
|
|
416
|
+
expect(handleLinkClick).not.toHaveBeenCalled();
|
|
417
|
+
});
|
|
418
|
+
|
|
419
|
+
it('cmd/ctrl+click on the container opens the link in a new tab', () => {
|
|
420
|
+
const openSpy = vi.spyOn(window, 'open').mockImplementation(() => null);
|
|
421
|
+
render(
|
|
422
|
+
<Token
|
|
423
|
+
label="Tag"
|
|
424
|
+
href="/test"
|
|
425
|
+
onRemove={() => {}}
|
|
426
|
+
icon={<span data-testid="icon">★</span>}
|
|
427
|
+
/>,
|
|
428
|
+
);
|
|
429
|
+
|
|
430
|
+
// Clicking the surface (not the anchor) with a modifier opens a new tab
|
|
431
|
+
// rather than navigating in place — provided by useClickableContainer.
|
|
432
|
+
fireEvent.click(screen.getByTestId('icon'), {metaKey: true});
|
|
433
|
+
expect(openSpy).toHaveBeenCalledWith('/test', '_blank', 'noopener');
|
|
434
|
+
openSpy.mockRestore();
|
|
435
|
+
});
|
|
436
|
+
|
|
437
|
+
it('middle-click on the container opens the link in a new tab', () => {
|
|
438
|
+
const openSpy = vi.spyOn(window, 'open').mockImplementation(() => null);
|
|
439
|
+
render(
|
|
440
|
+
<Token
|
|
441
|
+
label="Tag"
|
|
442
|
+
href="/test"
|
|
443
|
+
onRemove={() => {}}
|
|
444
|
+
icon={<span data-testid="icon">★</span>}
|
|
445
|
+
/>,
|
|
446
|
+
);
|
|
447
|
+
|
|
448
|
+
fireEvent.mouseUp(screen.getByTestId('icon'), {button: 1});
|
|
449
|
+
expect(openSpy).toHaveBeenCalledWith('/test', '_blank', 'noopener');
|
|
450
|
+
openSpy.mockRestore();
|
|
451
|
+
});
|
|
452
|
+
|
|
453
|
+
it('a modified click that opens a new tab does not fire onRemove', () => {
|
|
454
|
+
const openSpy = vi.spyOn(window, 'open').mockImplementation(() => null);
|
|
455
|
+
const handleRemove = vi.fn();
|
|
456
|
+
render(
|
|
457
|
+
<Token
|
|
458
|
+
label="Tag"
|
|
459
|
+
href="/test"
|
|
460
|
+
onRemove={handleRemove}
|
|
461
|
+
icon={<span data-testid="icon">★</span>}
|
|
462
|
+
/>,
|
|
463
|
+
);
|
|
464
|
+
|
|
465
|
+
fireEvent.click(screen.getByTestId('icon'), {metaKey: true});
|
|
466
|
+
fireEvent.mouseUp(screen.getByTestId('icon'), {button: 1});
|
|
467
|
+
expect(handleRemove).not.toHaveBeenCalled();
|
|
468
|
+
expect(openSpy).toHaveBeenCalledTimes(2);
|
|
469
|
+
openSpy.mockRestore();
|
|
470
|
+
});
|
|
471
|
+
|
|
472
|
+
it('link without onRemove still renders the anchor as the root', () => {
|
|
473
|
+
const {container} = render(<Token label="Link" href="/test" />);
|
|
474
|
+
expect(container.firstElementChild?.tagName).toBe('A');
|
|
475
|
+
});
|
|
476
|
+
});
|
|
477
|
+
|
|
323
478
|
describe('Token text overflow', () => {
|
|
324
479
|
it('label element has overflow hidden and text-overflow ellipsis styles', () => {
|
|
325
480
|
const {container} = render(<Token label="A very long label text" />);
|
|
@@ -355,11 +510,7 @@ describe('Token focus outline', () => {
|
|
|
355
510
|
it('invisible button does not show its own focus outline', async () => {
|
|
356
511
|
const user = userEvent.setup();
|
|
357
512
|
render(
|
|
358
|
-
<Token
|
|
359
|
-
label="Focusable"
|
|
360
|
-
onClick={() => {}}
|
|
361
|
-
data-testid="focus-token"
|
|
362
|
-
/>,
|
|
513
|
+
<Token label="Focusable" onClick={() => {}} data-testid="focus-token" />,
|
|
363
514
|
);
|
|
364
515
|
const button = screen.getByRole('button', {name: 'Focusable'});
|
|
365
516
|
await user.tab();
|
package/src/Token/Token.tsx
CHANGED
|
@@ -5,15 +5,16 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* @file Token.tsx
|
|
7
7
|
* @input Uses React, ReactNode, StyleXStyles
|
|
8
|
-
* @output Exports Token component, TokenProps, TokenColor types
|
|
8
|
+
* @output Exports Token component, TokenProps, TokenColor, TokenColorMap types
|
|
9
9
|
* @position Core implementation; consumed by index.ts, tested by Token.test.tsx
|
|
10
10
|
*
|
|
11
11
|
* SYNC: When modified, update these files to stay in sync:
|
|
12
|
+
* - /packages/core/src/Token/TokenLink.tsx (interactive wrapper for href+onRemove)
|
|
12
13
|
* - /packages/core/src/Token/Token.doc.mjs (props table, features, implementation notes)
|
|
13
14
|
* - /packages/core/src/Token/Token.test.tsx (tests for new/changed behavior)
|
|
14
15
|
* - /packages/core/src/Token/index.ts (exports if types change)
|
|
15
16
|
* - /apps/storybook/stories/Token.stories.tsx (storybook stories)
|
|
16
|
-
* - /packages/cli/templates/blocks/components/Token/ (showcase blocks)
|
|
17
|
+
* - /packages/cli/assets/templates/blocks/components/Token/ (showcase blocks)
|
|
17
18
|
*/
|
|
18
19
|
|
|
19
20
|
import type {ReactNode} from 'react';
|
|
@@ -32,29 +33,21 @@ import {Icon} from '../Icon';
|
|
|
32
33
|
import {mergeProps} from '../utils';
|
|
33
34
|
import {useLinkComponent} from '../Link/useLinkComponent';
|
|
34
35
|
import {useInteractiveRole} from '../hooks/useInteractiveRole';
|
|
36
|
+
import {TokenLink} from './TokenLink';
|
|
35
37
|
import type {BaseProps} from '../BaseProps';
|
|
36
38
|
import {themeProps} from '../utils/themeProps';
|
|
37
39
|
import {useTranslator} from '../i18n';
|
|
40
|
+
import type {TokenColorMap} from './index';
|
|
38
41
|
|
|
39
42
|
// =============================================================================
|
|
40
43
|
// Types
|
|
41
44
|
// =============================================================================
|
|
42
45
|
|
|
43
46
|
/**
|
|
44
|
-
*
|
|
47
|
+
* Token color type derived from TokenColorMap.
|
|
48
|
+
* Extensible via module augmentation of TokenColorMap.
|
|
45
49
|
*/
|
|
46
|
-
export type TokenColor =
|
|
47
|
-
| 'default'
|
|
48
|
-
| 'red'
|
|
49
|
-
| 'orange'
|
|
50
|
-
| 'yellow'
|
|
51
|
-
| 'green'
|
|
52
|
-
| 'teal'
|
|
53
|
-
| 'cyan'
|
|
54
|
-
| 'blue'
|
|
55
|
-
| 'purple'
|
|
56
|
-
| 'pink'
|
|
57
|
-
| 'gray';
|
|
50
|
+
export type TokenColor = keyof TokenColorMap;
|
|
58
51
|
|
|
59
52
|
export type TokenSize = 'sm' | 'md' | 'lg';
|
|
60
53
|
|
|
@@ -296,7 +289,9 @@ const colorStyles = stylex.create({
|
|
|
296
289
|
* `<span>` container with an invisible `<button>` when `onClick` is provided.
|
|
297
290
|
* The invisible button pattern provides real button semantics for accessibility
|
|
298
291
|
* while the container uses `:focus-within` to show focus outlines around the
|
|
299
|
-
* entire token.
|
|
292
|
+
* entire token. When both `href` and `onRemove` are provided, the same
|
|
293
|
+
* container pattern is used with an invisible `<a>` so the remove `<button>`
|
|
294
|
+
* renders as a sibling of the link rather than nested inside it.
|
|
300
295
|
*
|
|
301
296
|
* @example
|
|
302
297
|
* ```
|
|
@@ -333,6 +328,20 @@ export function Token({
|
|
|
333
328
|
// if onClick was provided — the popover attaches its own handler.
|
|
334
329
|
const effectiveOnClick = onClick ?? (role === 'button' ? () => {} : null);
|
|
335
330
|
|
|
331
|
+
const removeButton = onRemove != null && (
|
|
332
|
+
<button
|
|
333
|
+
type="button"
|
|
334
|
+
aria-label={t('@astryx.token.remove', {label})}
|
|
335
|
+
onClick={e => {
|
|
336
|
+
e.stopPropagation();
|
|
337
|
+
onRemove(e);
|
|
338
|
+
}}
|
|
339
|
+
disabled={isDisabled}
|
|
340
|
+
{...stylex.props(styles.removeButton)}>
|
|
341
|
+
<Icon icon="close" size="xsm" color="inherit" />
|
|
342
|
+
</button>
|
|
343
|
+
);
|
|
344
|
+
|
|
336
345
|
const content = (
|
|
337
346
|
<>
|
|
338
347
|
{icon}
|
|
@@ -341,19 +350,7 @@ export function Token({
|
|
|
341
350
|
{label}
|
|
342
351
|
</span>
|
|
343
352
|
{endContent}
|
|
344
|
-
{
|
|
345
|
-
<button
|
|
346
|
-
type="button"
|
|
347
|
-
aria-label={t('@astryx.token.remove', {label})}
|
|
348
|
-
onClick={e => {
|
|
349
|
-
e.stopPropagation();
|
|
350
|
-
onRemove(e);
|
|
351
|
-
}}
|
|
352
|
-
disabled={isDisabled}
|
|
353
|
-
{...stylex.props(styles.removeButton)}>
|
|
354
|
-
<Icon icon="close" size="xsm" color="inherit" />
|
|
355
|
-
</button>
|
|
356
|
-
)}
|
|
353
|
+
{removeButton}
|
|
357
354
|
</>
|
|
358
355
|
);
|
|
359
356
|
|
|
@@ -364,11 +361,57 @@ export function Token({
|
|
|
364
361
|
};
|
|
365
362
|
|
|
366
363
|
if (role === 'link') {
|
|
364
|
+
if (onRemove == null) {
|
|
365
|
+
return (
|
|
366
|
+
<LinkComponent
|
|
367
|
+
ref={ref as React.Ref<HTMLAnchorElement>}
|
|
368
|
+
href={href as string}
|
|
369
|
+
aria-disabled={isDisabled || undefined}
|
|
370
|
+
{...sharedProps}
|
|
371
|
+
{...mergeProps(
|
|
372
|
+
themeProps('token', {color, size}),
|
|
373
|
+
stylex.props(
|
|
374
|
+
styles.base,
|
|
375
|
+
sizeStyles[size],
|
|
376
|
+
colorStyles[color],
|
|
377
|
+
styles.interactive,
|
|
378
|
+
isDisabled && styles.disabled,
|
|
379
|
+
xstyle,
|
|
380
|
+
),
|
|
381
|
+
className,
|
|
382
|
+
style,
|
|
383
|
+
)}>
|
|
384
|
+
{content}
|
|
385
|
+
</LinkComponent>
|
|
386
|
+
);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
// With a remove button, the link cannot be the root — nesting a <button>
|
|
390
|
+
// inside an <a> is invalid HTML (WCAG 4.1.2). Delegate to TokenLink, a
|
|
391
|
+
// non-presentational wrapper that renders a <span> container with the link
|
|
392
|
+
// and the remove button as siblings and wires up useClickableContainer so
|
|
393
|
+
// the whole token surface activates the link (including middle-click and
|
|
394
|
+
// cmd/ctrl-click to open in a new tab). Token itself stays presentational
|
|
395
|
+
// (no refs/effects) per the @astryx/presentational-component rule.
|
|
367
396
|
return (
|
|
368
|
-
<
|
|
369
|
-
ref={ref
|
|
397
|
+
<TokenLink
|
|
398
|
+
ref={ref}
|
|
370
399
|
href={href as string}
|
|
371
|
-
|
|
400
|
+
isDisabled={isDisabled}
|
|
401
|
+
LinkComponent={LinkComponent}
|
|
402
|
+
icon={icon}
|
|
403
|
+
endContent={endContent}
|
|
404
|
+
removeButton={removeButton}
|
|
405
|
+
linkStyleProps={stylex.props(styles.invisibleButton)}
|
|
406
|
+
labelContent={
|
|
407
|
+
<span
|
|
408
|
+
{...stylex.props(
|
|
409
|
+
styles.label,
|
|
410
|
+
isLabelHidden && styles.labelHidden,
|
|
411
|
+
)}>
|
|
412
|
+
{label}
|
|
413
|
+
</span>
|
|
414
|
+
}
|
|
372
415
|
{...sharedProps}
|
|
373
416
|
{...mergeProps(
|
|
374
417
|
themeProps('token', {color, size}),
|
|
@@ -377,14 +420,14 @@ export function Token({
|
|
|
377
420
|
sizeStyles[size],
|
|
378
421
|
colorStyles[color],
|
|
379
422
|
styles.interactive,
|
|
423
|
+
styles.focusVisibleOutline,
|
|
380
424
|
isDisabled && styles.disabled,
|
|
381
425
|
xstyle,
|
|
382
426
|
),
|
|
383
427
|
className,
|
|
384
428
|
style,
|
|
385
|
-
)}
|
|
386
|
-
|
|
387
|
-
</LinkComponent>
|
|
429
|
+
)}
|
|
430
|
+
/>
|
|
388
431
|
);
|
|
389
432
|
}
|
|
390
433
|
|
|
@@ -431,19 +474,7 @@ export function Token({
|
|
|
431
474
|
</span>
|
|
432
475
|
</button>
|
|
433
476
|
{endContent}
|
|
434
|
-
{
|
|
435
|
-
<button
|
|
436
|
-
type="button"
|
|
437
|
-
aria-label={t('@astryx.token.remove', {label})}
|
|
438
|
-
onClick={e => {
|
|
439
|
-
e.stopPropagation();
|
|
440
|
-
onRemove(e);
|
|
441
|
-
}}
|
|
442
|
-
disabled={isDisabled}
|
|
443
|
-
{...stylex.props(styles.removeButton)}>
|
|
444
|
-
<Icon icon="close" size="xsm" color="inherit" />
|
|
445
|
-
</button>
|
|
446
|
-
)}
|
|
477
|
+
{removeButton}
|
|
447
478
|
</span>
|
|
448
479
|
);
|
|
449
480
|
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file TokenLink.tsx
|
|
7
|
+
* @input Rendered token pieces (icon, label, endContent, remove button) plus
|
|
8
|
+
* container/link styling props and the resolved LinkComponent
|
|
9
|
+
* @output Exports TokenLink, the interactive container for the href+onRemove Token variant
|
|
10
|
+
* @position Internal to Token; keeps Token.tsx presentational
|
|
11
|
+
*
|
|
12
|
+
* Token is a presentational component (see
|
|
13
|
+
* /internal/eslint-plugin-astryx/presentational-component.js) and must not use
|
|
14
|
+
* refs or effects. When a Token has both `href` and `onRemove`, the remove
|
|
15
|
+
* <button> must be a sibling of the link (nesting a button inside an anchor is
|
|
16
|
+
* invalid HTML — WCAG 4.1.2), so the surface becomes a clickable container that
|
|
17
|
+
* delegates to an inner link. That delegation needs refs, so it lives here.
|
|
18
|
+
*
|
|
19
|
+
* useClickableContainer gives the container middle-click and cmd/ctrl-click
|
|
20
|
+
* open-in-new-tab behavior for the link, ignores clicks on nested interactive
|
|
21
|
+
* elements (the remove button), and skips activation during text selection.
|
|
22
|
+
*
|
|
23
|
+
* SYNC: When modified, update these files to stay in sync:
|
|
24
|
+
* - /packages/core/src/Token/Token.tsx (renders TokenLink for the href+onRemove case)
|
|
25
|
+
* - /packages/core/src/Token/Token.test.tsx (tests for delegated behavior)
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
import type {ReactNode, CSSProperties, Ref, HTMLAttributes} from 'react';
|
|
29
|
+
import {useRef} from 'react';
|
|
30
|
+
import {mergeRefs} from '../utils';
|
|
31
|
+
import {useClickableContainer} from '../hooks/useClickableContainer';
|
|
32
|
+
import type {LinkComponentType} from '../Link/types';
|
|
33
|
+
|
|
34
|
+
export interface TokenLinkProps extends HTMLAttributes<HTMLElement> {
|
|
35
|
+
/** Ref forwarded to the container element. */
|
|
36
|
+
ref?: Ref<HTMLElement>;
|
|
37
|
+
/** Link URL. */
|
|
38
|
+
href: string;
|
|
39
|
+
/** Whether the token is disabled. */
|
|
40
|
+
isDisabled: boolean;
|
|
41
|
+
/** Resolved link component (native `<a>` or a router link). */
|
|
42
|
+
LinkComponent: LinkComponentType;
|
|
43
|
+
/** `stylex.props()` output applied to the invisible inner link. */
|
|
44
|
+
linkStyleProps: {className?: string; style?: CSSProperties};
|
|
45
|
+
/** Visible (or visually hidden) label node rendered inside the link. */
|
|
46
|
+
labelContent: ReactNode;
|
|
47
|
+
/** Optional leading icon. */
|
|
48
|
+
icon?: ReactNode;
|
|
49
|
+
/** Content rendered after the label, before the remove button. */
|
|
50
|
+
endContent?: ReactNode;
|
|
51
|
+
/** The remove button node, rendered as a sibling of the link. */
|
|
52
|
+
removeButton: ReactNode;
|
|
53
|
+
/** Allow data-* attributes (e.g. data-testid, theme targets) on the container. */
|
|
54
|
+
[dataAttr: `data-${string}`]: unknown;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Interactive container for a Token that is both a link and removable.
|
|
59
|
+
*
|
|
60
|
+
* Renders a `<span>` wrapping an invisible inner link and the remove button as
|
|
61
|
+
* siblings. useClickableContainer delegates clicks on the surface to the link
|
|
62
|
+
* (including middle-click / cmd+click to open in a new tab) while the remove
|
|
63
|
+
* button keeps handling its own clicks.
|
|
64
|
+
*/
|
|
65
|
+
export function TokenLink({
|
|
66
|
+
ref,
|
|
67
|
+
href,
|
|
68
|
+
isDisabled,
|
|
69
|
+
LinkComponent,
|
|
70
|
+
linkStyleProps,
|
|
71
|
+
labelContent,
|
|
72
|
+
icon,
|
|
73
|
+
endContent,
|
|
74
|
+
removeButton,
|
|
75
|
+
...containerProps
|
|
76
|
+
}: TokenLinkProps) {
|
|
77
|
+
const containerRef = useRef<HTMLElement | null>(null);
|
|
78
|
+
const linkRef = useRef<HTMLElement | null>(null);
|
|
79
|
+
|
|
80
|
+
const {onClick, onMouseUp} = useClickableContainer({
|
|
81
|
+
containerRef,
|
|
82
|
+
interactiveRef: linkRef,
|
|
83
|
+
href,
|
|
84
|
+
disabled: isDisabled,
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
return (
|
|
88
|
+
<span
|
|
89
|
+
ref={mergeRefs(ref, containerRef)}
|
|
90
|
+
onClick={isDisabled ? undefined : onClick}
|
|
91
|
+
onMouseUp={isDisabled ? undefined : onMouseUp}
|
|
92
|
+
{...containerProps}>
|
|
93
|
+
{icon}
|
|
94
|
+
<LinkComponent
|
|
95
|
+
ref={linkRef as Ref<HTMLAnchorElement>}
|
|
96
|
+
href={href}
|
|
97
|
+
aria-disabled={isDisabled || undefined}
|
|
98
|
+
{...linkStyleProps}>
|
|
99
|
+
{labelContent}
|
|
100
|
+
</LinkComponent>
|
|
101
|
+
{endContent}
|
|
102
|
+
{removeButton}
|
|
103
|
+
</span>
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
TokenLink.displayName = 'TokenLink';
|