@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
package/src/Icon/Icon.test.tsx
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
import {describe, it, expect, vi} from 'vitest';
|
|
13
13
|
import {render, screen} from '@testing-library/react';
|
|
14
|
+
import * as stylex from '@stylexjs/stylex';
|
|
14
15
|
import {TestIcon} from '../__tests__/TestIcon';
|
|
15
16
|
import {Icon} from './Icon';
|
|
16
17
|
|
|
@@ -279,4 +280,92 @@ describe('Icon', () => {
|
|
|
279
280
|
);
|
|
280
281
|
});
|
|
281
282
|
});
|
|
283
|
+
|
|
284
|
+
describe('styling prop handling', () => {
|
|
285
|
+
it('composes a consumer className with the internal classes (string mode)', () => {
|
|
286
|
+
render(
|
|
287
|
+
<Icon icon="check" className="consumer-target" data-testid="icon" />,
|
|
288
|
+
);
|
|
289
|
+
const icon = screen.getByTestId('icon');
|
|
290
|
+
// Consumer className must survive alongside the stable astryx-icon class
|
|
291
|
+
// and the StyleX classes — previously it was clobbered by the later
|
|
292
|
+
// internal spread.
|
|
293
|
+
expect(icon).toHaveClass('consumer-target');
|
|
294
|
+
expect(icon).toHaveClass('astryx-icon');
|
|
295
|
+
// At least one StyleX-generated class is still present.
|
|
296
|
+
expect(icon.className.split(' ').length).toBeGreaterThan(2);
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
it('forwards a consumer className in component (SVG) mode', () => {
|
|
300
|
+
render(
|
|
301
|
+
<Icon icon={TestIcon} className="consumer-target" data-testid="icon" />,
|
|
302
|
+
);
|
|
303
|
+
const icon = screen.getByTestId('icon');
|
|
304
|
+
expect(icon).toHaveClass('consumer-target');
|
|
305
|
+
expect(icon).toHaveClass('astryx-icon');
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
it('merges a consumer style onto the rendered element (string mode)', () => {
|
|
309
|
+
render(<Icon icon="check" style={{opacity: 0.5}} data-testid="icon" />);
|
|
310
|
+
expect(screen.getByTestId('icon')).toHaveStyle({opacity: '0.5'});
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
it('merges a consumer style onto the rendered element (component mode)', () => {
|
|
314
|
+
render(
|
|
315
|
+
<Icon icon={TestIcon} style={{opacity: 0.5}} data-testid="icon" />,
|
|
316
|
+
);
|
|
317
|
+
expect(screen.getByTestId('icon')).toHaveStyle({opacity: '0.5'});
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
it('applies xstyle to the rendered element (string mode)', () => {
|
|
321
|
+
const overrides = stylex.create({root: {opacity: 0.25}});
|
|
322
|
+
render(<Icon icon="check" xstyle={overrides.root} data-testid="icon" />);
|
|
323
|
+
const icon = screen.getByTestId('icon');
|
|
324
|
+
// xstyle is folded into stylex.props, so it contributes a StyleX class
|
|
325
|
+
// (and, in jsdom's stylex runtime, an inline style) alongside the base
|
|
326
|
+
// color/size classes rather than clobbering them.
|
|
327
|
+
expect(icon).toHaveClass('astryx-icon');
|
|
328
|
+
expect(icon).toHaveStyle({opacity: '0.25'});
|
|
329
|
+
});
|
|
330
|
+
|
|
331
|
+
it('applies xstyle to the rendered element (component mode)', () => {
|
|
332
|
+
const overrides = stylex.create({root: {opacity: 0.25}});
|
|
333
|
+
render(
|
|
334
|
+
<Icon icon={TestIcon} xstyle={overrides.root} data-testid="icon" />,
|
|
335
|
+
);
|
|
336
|
+
const icon = screen.getByTestId('icon');
|
|
337
|
+
expect(icon).toHaveClass('astryx-icon');
|
|
338
|
+
expect(icon).toHaveStyle({opacity: '0.25'});
|
|
339
|
+
});
|
|
340
|
+
|
|
341
|
+
it('leaves default rendering unchanged when no styling props are passed (string mode)', () => {
|
|
342
|
+
const {container} = render(
|
|
343
|
+
<Icon icon="check" size="sm" color="secondary" />,
|
|
344
|
+
);
|
|
345
|
+
const icon = container.querySelector('.astryx-icon') as HTMLElement;
|
|
346
|
+
const {container: refContainer} = render(
|
|
347
|
+
<Icon icon="check" size="sm" color="secondary" />,
|
|
348
|
+
);
|
|
349
|
+
const refIcon = refContainer.querySelector('.astryx-icon') as HTMLElement;
|
|
350
|
+
// Default output is identical to itself — the styling-prop handling adds
|
|
351
|
+
// nothing (no extra class, no inline style) unless a prop is passed.
|
|
352
|
+
expect(icon.className).toBe(refIcon.className);
|
|
353
|
+
expect(icon.getAttribute('style')).toBe(refIcon.getAttribute('style'));
|
|
354
|
+
});
|
|
355
|
+
|
|
356
|
+
it('leaves default rendering unchanged when no styling props are passed (component mode)', () => {
|
|
357
|
+
const {container} = render(
|
|
358
|
+
<Icon icon={TestIcon} size="sm" color="secondary" />,
|
|
359
|
+
);
|
|
360
|
+
const icon = container.querySelector('.astryx-icon') as HTMLElement;
|
|
361
|
+
const {container: refContainer} = render(
|
|
362
|
+
<Icon icon={TestIcon} size="sm" color="secondary" />,
|
|
363
|
+
);
|
|
364
|
+
const refIcon = refContainer.querySelector('.astryx-icon') as HTMLElement;
|
|
365
|
+
// SVGElement.className is an SVGAnimatedString, so compare the class
|
|
366
|
+
// attribute string rather than the property object.
|
|
367
|
+
expect(icon.getAttribute('class')).toBe(refIcon.getAttribute('class'));
|
|
368
|
+
expect(icon.getAttribute('style')).toBe(refIcon.getAttribute('style'));
|
|
369
|
+
});
|
|
370
|
+
});
|
|
282
371
|
});
|
package/src/Icon/Icon.tsx
CHANGED
|
@@ -19,11 +19,12 @@
|
|
|
19
19
|
* - /packages/core/src/Icon/Icon.test.tsx (tests for new/changed behavior)
|
|
20
20
|
* - /packages/core/src/Icon/index.ts (exports if types change)
|
|
21
21
|
* - /apps/storybook/stories/Icon.stories.tsx (storybook stories)
|
|
22
|
-
* - /packages/cli/templates/blocks/components/Icon/ (showcase blocks)
|
|
22
|
+
* - /packages/cli/assets/templates/blocks/components/Icon/ (showcase blocks)
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
25
|
import React, {type ComponentType, type SVGProps} from 'react';
|
|
26
26
|
import * as stylex from '@stylexjs/stylex';
|
|
27
|
+
import type {StyleXStyles} from '@stylexjs/stylex';
|
|
27
28
|
import {colorVars} from '../theme/tokens.stylex';
|
|
28
29
|
import {getIcon} from './globalIconRegistry';
|
|
29
30
|
import type {IconName} from './globalIconRegistry';
|
|
@@ -244,6 +245,19 @@ export interface IconProps extends Omit<
|
|
|
244
245
|
* ```
|
|
245
246
|
*/
|
|
246
247
|
label?: string;
|
|
248
|
+
/**
|
|
249
|
+
* StyleX styles created via `stylex.create()`. Folded into the icon's own
|
|
250
|
+
* `stylex.props()` call (as the last argument) so it merges with the base
|
|
251
|
+
* color/size styles for optimal deduplication, matching how other Astryx
|
|
252
|
+
* components accept `xstyle`.
|
|
253
|
+
*
|
|
254
|
+
* @example
|
|
255
|
+
* ```
|
|
256
|
+
* const overrides = stylex.create({ root: { opacity: 0.5 } });
|
|
257
|
+
* <Icon icon="search" xstyle={overrides.root} />
|
|
258
|
+
* ```
|
|
259
|
+
*/
|
|
260
|
+
xstyle?: StyleXStyles;
|
|
247
261
|
}
|
|
248
262
|
|
|
249
263
|
/**
|
|
@@ -283,6 +297,9 @@ export function Icon({
|
|
|
283
297
|
size = 'md',
|
|
284
298
|
label,
|
|
285
299
|
ref,
|
|
300
|
+
className,
|
|
301
|
+
style,
|
|
302
|
+
xstyle,
|
|
286
303
|
...props
|
|
287
304
|
}: IconProps) {
|
|
288
305
|
// Derive ARIA from `label`: decorative (aria-hidden) by default, or a
|
|
@@ -297,6 +314,9 @@ export function Icon({
|
|
|
297
314
|
color={color}
|
|
298
315
|
size={size}
|
|
299
316
|
a11yProps={a11yProps}
|
|
317
|
+
className={className}
|
|
318
|
+
style={style}
|
|
319
|
+
xstyle={xstyle}
|
|
300
320
|
spanProps={props}
|
|
301
321
|
/>
|
|
302
322
|
);
|
|
@@ -311,9 +331,16 @@ export function Icon({
|
|
|
311
331
|
// BEFORE {...props} so an explicit aria-hidden/role/aria-label from the
|
|
312
332
|
// consumer still wins as an escape hatch.
|
|
313
333
|
{...a11yProps}
|
|
334
|
+
// The styling props (className, style, xstyle) are handled here so they
|
|
335
|
+
// COMPOSE with the internal classes/styles instead of clobbering them:
|
|
336
|
+
// xstyle folds into stylex.props, and className/style merge via
|
|
337
|
+
// mergeProps. The remaining rest props keep their prior last-spread
|
|
338
|
+
// precedence as escape hatches.
|
|
314
339
|
{...mergeProps(
|
|
315
340
|
themeProps('icon', {size, color}),
|
|
316
|
-
stylex.props(styles.root, colorStyles[color], sizeStyles[size]),
|
|
341
|
+
stylex.props(styles.root, colorStyles[color], sizeStyles[size], xstyle),
|
|
342
|
+
className ?? undefined,
|
|
343
|
+
style,
|
|
317
344
|
)}
|
|
318
345
|
{...props}
|
|
319
346
|
/>
|
|
@@ -338,12 +365,18 @@ function IconFromRegistry({
|
|
|
338
365
|
color,
|
|
339
366
|
size,
|
|
340
367
|
a11yProps,
|
|
368
|
+
className,
|
|
369
|
+
style,
|
|
370
|
+
xstyle,
|
|
341
371
|
spanProps,
|
|
342
372
|
}: {
|
|
343
373
|
name: IconName;
|
|
344
374
|
color: IconColor;
|
|
345
375
|
size: IconSize;
|
|
346
376
|
a11yProps: {role: 'img'; 'aria-label': string} | {'aria-hidden': 'true'};
|
|
377
|
+
className?: string;
|
|
378
|
+
style?: React.CSSProperties;
|
|
379
|
+
xstyle?: StyleXStyles;
|
|
347
380
|
spanProps?: Omit<SVGProps<SVGSVGElement>, 'ref' | 'color'>;
|
|
348
381
|
}) {
|
|
349
382
|
const resolvedIcon = getIcon(name);
|
|
@@ -352,6 +385,14 @@ function IconFromRegistry({
|
|
|
352
385
|
return null;
|
|
353
386
|
}
|
|
354
387
|
|
|
388
|
+
// The styling props (className, style, xstyle) are handled here so they
|
|
389
|
+
// COMPOSE with the internal astryx-icon + StyleX classes/styles instead of
|
|
390
|
+
// being shadowed by the later spread: xstyle folds into stylex.props, and
|
|
391
|
+
// className/style merge via mergeProps. Other span props keep their prior
|
|
392
|
+
// precedence (spread before the internal merge).
|
|
393
|
+
const restSpanProps =
|
|
394
|
+
(spanProps as React.HTMLAttributes<HTMLSpanElement>) ?? {};
|
|
395
|
+
|
|
355
396
|
return (
|
|
356
397
|
<span
|
|
357
398
|
// Derived a11y — decorative (aria-hidden) by default, or a meaningful
|
|
@@ -359,10 +400,17 @@ function IconFromRegistry({
|
|
|
359
400
|
// prop spread so consumers can still override it with explicit
|
|
360
401
|
// aria-hidden/role/aria-label. This mirrors component-mode Icon.
|
|
361
402
|
{...a11yProps}
|
|
362
|
-
{...
|
|
403
|
+
{...restSpanProps}
|
|
363
404
|
{...mergeProps(
|
|
364
405
|
themeProps('icon', {size, color}),
|
|
365
|
-
stylex.props(
|
|
406
|
+
stylex.props(
|
|
407
|
+
styles.span,
|
|
408
|
+
colorStyles[color],
|
|
409
|
+
spanSizeStyles[size],
|
|
410
|
+
xstyle,
|
|
411
|
+
),
|
|
412
|
+
className ?? undefined,
|
|
413
|
+
style,
|
|
366
414
|
)}>
|
|
367
415
|
{resolvedIcon}
|
|
368
416
|
</span>
|
|
@@ -23,7 +23,7 @@ import {defaultIcons} from './defaultIcons';
|
|
|
23
23
|
* These represent the functional purpose of each icon, not a specific
|
|
24
24
|
* visual representation. Themes provide the actual icon components.
|
|
25
25
|
*/
|
|
26
|
-
// SYNC: packages/cli/docs/icons.doc.mjs — update USAGE_HINTS when adding names
|
|
26
|
+
// SYNC: packages/cli/assets/docs/icons.doc.mjs — update USAGE_HINTS when adding names
|
|
27
27
|
export type IconName =
|
|
28
28
|
| 'close'
|
|
29
29
|
| 'chevronDown'
|
|
@@ -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: 'IconButton',
|
|
@@ -84,7 +84,7 @@ export const docs = {
|
|
|
84
84
|
},
|
|
85
85
|
};
|
|
86
86
|
|
|
87
|
-
/** @type {import('
|
|
87
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
|
|
88
88
|
export const docsDense = {
|
|
89
89
|
description: 'Button showing only an icon, no visible text. Use in toolbars, table rows, compact UI where space is tight + icon universally understood.',
|
|
90
90
|
usage: {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* - /packages/core/src/IconButton/IconButton.test.tsx (tests)
|
|
14
14
|
* - /packages/core/src/IconButton/index.ts (exports if types change)
|
|
15
15
|
* - /apps/storybook/stories/IconButton.stories.tsx (storybook stories)
|
|
16
|
-
* - /packages/cli/templates/blocks/components/IconButton/ (showcase blocks)
|
|
16
|
+
* - /packages/cli/assets/templates/blocks/components/IconButton/ (showcase blocks)
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
import type {ReactNode} from 'react';
|
|
@@ -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: 'InputGroup',
|
|
@@ -163,7 +163,7 @@ export const docs = {
|
|
|
163
163
|
},
|
|
164
164
|
};
|
|
165
165
|
|
|
166
|
-
/** @type {import('
|
|
166
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
|
|
167
167
|
export const docsDense = {
|
|
168
168
|
description:
|
|
169
169
|
'groups input with prefix/suffix addons in a connected container',
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* - /packages/core/src/InputGroup/InputGroup.test.tsx
|
|
19
19
|
* - /packages/core/src/InputGroup/index.ts
|
|
20
20
|
* - /apps/storybook/stories/InputGroup.stories.tsx
|
|
21
|
-
* - /packages/cli/templates/blocks/components/InputGroup/
|
|
21
|
+
* - /packages/cli/assets/templates/blocks/components/InputGroup/
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
24
|
import {useId, useMemo, type ReactNode} from 'react';
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* SYNC: When modified, update these files to stay in sync:
|
|
12
12
|
* - /packages/core/src/InputGroup/InputGroup.doc.mjs
|
|
13
13
|
* - /packages/core/src/InputGroup/index.ts
|
|
14
|
-
* - /packages/cli/templates/blocks/components/InputGroup/
|
|
14
|
+
* - /packages/cli/assets/templates/blocks/components/InputGroup/
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import React, {type ReactNode} from 'react';
|
package/src/Item/Item.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: 'Item',
|
|
@@ -37,6 +37,7 @@ export const docs = {
|
|
|
37
37
|
{name: 'labelLines', type: 'number', description: 'Max lines before label truncates with ellipsis.'},
|
|
38
38
|
{name: 'descriptionLines', type: 'number', description: 'Max lines before description truncates with ellipsis.'},
|
|
39
39
|
{name: 'onClick', type: '(event: MouseEvent) => void', description: 'Click handler. Makes the item clickable with button semantics.'},
|
|
40
|
+
{name: 'interactiveRef', type: 'RefObject<HTMLElement | null>', description: 'Ref to a nested control (e.g. a checkbox in startContent) that owns the item\'s keyboard access and action. The row becomes an enlarged click/tap target that delegates surface clicks to it (useClickableContainer) and renders no invisible button/anchor, so the row adds no second tab stop (WCAG 4.1.2). Mutually exclusive with onClick/href — those are ignored when set.'},
|
|
40
41
|
{name: 'href', type: 'string', description: 'Link URL. Makes the item a link via an invisible anchor element.'},
|
|
41
42
|
{name: 'target', type: "'_blank' | '_self'", description: 'Link target. Only used with href. target="_blank" automatically adds noopener noreferrer.'},
|
|
42
43
|
{name: 'rel', type: 'string', description: 'Link relationship tokens. noopener noreferrer are merged automatically for target="_blank".'},
|
|
@@ -71,7 +72,7 @@ export const docs = {
|
|
|
71
72
|
},
|
|
72
73
|
};
|
|
73
74
|
|
|
74
|
-
/** @type {import('
|
|
75
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
|
|
75
76
|
export const docsZh = {
|
|
76
77
|
components: [
|
|
77
78
|
{
|
|
@@ -90,6 +91,8 @@ export const docsZh = {
|
|
|
90
91
|
labelLines: '标签截断前的最大行数。',
|
|
91
92
|
descriptionLines: '描述截断前的最大行数。',
|
|
92
93
|
onClick: '点击处理函数。使项目可点击,具有按钮语义。',
|
|
94
|
+
interactiveRef:
|
|
95
|
+
'指向嵌套控件(如 startContent 中的复选框)的 ref,该控件承载项目的键盘访问和操作。行成为更大的点击/触摸目标,将表面点击委托给该控件(useClickableContainer),且不渲染不可见按钮/锚点,因此行不会增加第二个 Tab 停留点(WCAG 4.1.2)。与 onClick/href 互斥——设置后二者将被忽略。',
|
|
93
96
|
href: '链接 URL。通过不可见锚点元素使项目成为链接。',
|
|
94
97
|
target: '链接目标。仅与 href 一起使用。target="_blank" 会自动添加 noopener noreferrer。',
|
|
95
98
|
rel: '链接关系标记。target="_blank" 会自动合并 noopener noreferrer。',
|
|
@@ -124,7 +127,7 @@ export const docsZh = {
|
|
|
124
127
|
},
|
|
125
128
|
};
|
|
126
129
|
|
|
127
|
-
/** @type {import('
|
|
130
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
|
|
128
131
|
export const docsDense = {
|
|
129
132
|
description: 'universal item primitive w/ startContent+label+description+endContent layout. building block for list items, menu items, contacts, notifications',
|
|
130
133
|
usage: {
|
|
@@ -157,6 +160,8 @@ export const docsDense = {
|
|
|
157
160
|
labelLines: 'Max label lines before truncation.',
|
|
158
161
|
descriptionLines: 'Max description lines before truncation.',
|
|
159
162
|
onClick: 'Click handler; enables button semantics.',
|
|
163
|
+
interactiveRef:
|
|
164
|
+
'Ref to a nested control that owns the item\'s keyboard access/action; row delegates surface clicks to it (useClickableContainer), no invisible button/anchor, no second tab stop (WCAG 4.1.2). Mutually exclusive with onClick/href.',
|
|
160
165
|
href: 'Link URL; enables anchor semantics.',
|
|
161
166
|
target:
|
|
162
167
|
'Link target, only with href. target="_blank" auto-adds noopener noreferrer.',
|
package/src/Item/Item.test.tsx
CHANGED
|
@@ -9,11 +9,35 @@
|
|
|
9
9
|
* SYNC: When Item component changes, update tests to match new behavior
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
+
import {useRef} from 'react';
|
|
12
13
|
import {describe, it, expect, vi} from 'vitest';
|
|
13
14
|
import {render, screen} from '@testing-library/react';
|
|
14
15
|
import userEvent from '@testing-library/user-event';
|
|
15
16
|
import {Item} from './Item';
|
|
16
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Item in delegation mode: `interactiveRef` points at a nested control that
|
|
20
|
+
* owns the row's keyboard access and action. The row is an enlarged tap target
|
|
21
|
+
* that forwards surface clicks to that control (useClickableContainer).
|
|
22
|
+
*/
|
|
23
|
+
function DelegatingItem({onToggle}: {onToggle?: () => void}) {
|
|
24
|
+
const ref = useRef<HTMLInputElement>(null);
|
|
25
|
+
return (
|
|
26
|
+
<Item
|
|
27
|
+
label="Row"
|
|
28
|
+
interactiveRef={ref}
|
|
29
|
+
startContent={
|
|
30
|
+
<input
|
|
31
|
+
ref={ref}
|
|
32
|
+
type="checkbox"
|
|
33
|
+
aria-label="Pick row"
|
|
34
|
+
onChange={onToggle}
|
|
35
|
+
/>
|
|
36
|
+
}
|
|
37
|
+
/>
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
17
41
|
describe('Item', () => {
|
|
18
42
|
// ===========================================================================
|
|
19
43
|
// Basic rendering
|
|
@@ -190,6 +214,70 @@ describe('Item', () => {
|
|
|
190
214
|
expect(buttons).toHaveLength(1);
|
|
191
215
|
});
|
|
192
216
|
|
|
217
|
+
// ===========================================================================
|
|
218
|
+
// Interactive — interactiveRef (delegation to a nested control)
|
|
219
|
+
// ===========================================================================
|
|
220
|
+
|
|
221
|
+
it('renders no invisible button in interactiveRef (delegation) mode', () => {
|
|
222
|
+
const {container} = render(<DelegatingItem />);
|
|
223
|
+
// The nested control provides keyboard access — the row must not add a
|
|
224
|
+
// second focusable control for the same action (WCAG 4.1.2).
|
|
225
|
+
expect(container.querySelector('button')).not.toBeInTheDocument();
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
it('keeps the nested control as the only tab stop in interactiveRef mode', async () => {
|
|
229
|
+
const user = userEvent.setup();
|
|
230
|
+
render(<DelegatingItem />);
|
|
231
|
+
await user.tab();
|
|
232
|
+
expect(screen.getByRole('checkbox')).toHaveFocus();
|
|
233
|
+
// Next tab leaves the item entirely — the row itself is not focusable.
|
|
234
|
+
await user.tab();
|
|
235
|
+
expect(screen.getByRole('checkbox')).not.toHaveFocus();
|
|
236
|
+
expect(document.body).toHaveFocus();
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
it('delegates a row-surface click to the interactive control', async () => {
|
|
240
|
+
const user = userEvent.setup();
|
|
241
|
+
const onToggle = vi.fn();
|
|
242
|
+
render(<DelegatingItem onToggle={onToggle} />);
|
|
243
|
+
// Clicking the label (row surface) is forwarded to the checkbox.
|
|
244
|
+
await user.click(screen.getByText('Row'));
|
|
245
|
+
expect(onToggle).toHaveBeenCalledTimes(1);
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
it('does not double-fire when the interactive control itself is clicked', async () => {
|
|
249
|
+
const user = userEvent.setup();
|
|
250
|
+
const onToggle = vi.fn();
|
|
251
|
+
render(<DelegatingItem onToggle={onToggle} />);
|
|
252
|
+
await user.click(screen.getByRole('checkbox'));
|
|
253
|
+
// The row must not re-forward the control's own click back to it.
|
|
254
|
+
expect(onToggle).toHaveBeenCalledTimes(1);
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
it('ignores onClick when interactiveRef is set (delegation wins, single tab stop)', async () => {
|
|
258
|
+
const user = userEvent.setup();
|
|
259
|
+
const onClick = vi.fn();
|
|
260
|
+
function ItemWithBoth() {
|
|
261
|
+
const ref = useRef<HTMLInputElement>(null);
|
|
262
|
+
return (
|
|
263
|
+
<Item
|
|
264
|
+
label="Row"
|
|
265
|
+
onClick={onClick}
|
|
266
|
+
interactiveRef={ref}
|
|
267
|
+
startContent={
|
|
268
|
+
<input ref={ref} type="checkbox" aria-label="Pick row" />
|
|
269
|
+
}
|
|
270
|
+
/>
|
|
271
|
+
);
|
|
272
|
+
}
|
|
273
|
+
const {container} = render(<ItemWithBoth />);
|
|
274
|
+
// No invisible button (onClick is ignored in delegation mode)...
|
|
275
|
+
expect(container.querySelector('button')).not.toBeInTheDocument();
|
|
276
|
+
// ...and the checkbox is still the sole tab stop.
|
|
277
|
+
await user.tab();
|
|
278
|
+
expect(screen.getByRole('checkbox')).toHaveFocus();
|
|
279
|
+
});
|
|
280
|
+
|
|
193
281
|
// ===========================================================================
|
|
194
282
|
// Interactive — href (invisible anchor pattern)
|
|
195
283
|
// ===========================================================================
|
package/src/Item/Item.tsx
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file Item.tsx
|
|
7
|
-
* @input Uses React, ReactNode, StyleXStyles, theme tokens
|
|
7
|
+
* @input Uses React, ReactNode, StyleXStyles, theme tokens, useClickableContainer
|
|
8
8
|
* @output Exports Item component, ItemProps type
|
|
9
9
|
* @position Core layout primitive; consumed by index.ts, tested by Item.test.tsx
|
|
10
10
|
*
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
* - /packages/core/src/Item/Item.test.tsx
|
|
14
14
|
* - /packages/core/src/Item/index.ts
|
|
15
15
|
* - /apps/storybook/stories/Item.stories.tsx
|
|
16
|
-
* - /packages/cli/templates/blocks/components/Item/ (showcase blocks)
|
|
16
|
+
* - /packages/cli/assets/templates/blocks/components/Item/ (showcase blocks)
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
|
-
import type
|
|
19
|
+
import {useRef, type ReactNode} from 'react';
|
|
20
20
|
import * as stylex from '@stylexjs/stylex';
|
|
21
21
|
import {
|
|
22
22
|
colorVars,
|
|
@@ -27,9 +27,11 @@ import {
|
|
|
27
27
|
typeScaleVars,
|
|
28
28
|
} from '../theme/tokens.stylex';
|
|
29
29
|
import type {BaseProps} from '../BaseProps';
|
|
30
|
-
import {mergeProps} from '../utils';
|
|
30
|
+
import {mergeProps, mergeRefs} from '../utils';
|
|
31
31
|
import {computeTargetAndRel} from '../Link/computeTargetAndRel';
|
|
32
32
|
import {useLinkComponent} from '../Link/useLinkComponent';
|
|
33
|
+
import {useClickableContainer} from '../hooks/useClickableContainer';
|
|
34
|
+
import {useDevWarning} from '../hooks/useDevWarning';
|
|
33
35
|
import {themeProps} from '../utils/themeProps';
|
|
34
36
|
|
|
35
37
|
// =============================================================================
|
|
@@ -108,6 +110,20 @@ export interface ItemProps extends BaseProps<HTMLElement> {
|
|
|
108
110
|
*/
|
|
109
111
|
onClick?: (event: React.MouseEvent) => void;
|
|
110
112
|
|
|
113
|
+
/**
|
|
114
|
+
* Ref to a nested control inside the item (e.g. a checkbox in
|
|
115
|
+
* `startContent`) that already provides the item's keyboard access and
|
|
116
|
+
* action. When set, the item becomes an enlarged click/tap target that
|
|
117
|
+
* delegates surface clicks to that control via the `useClickableContainer`
|
|
118
|
+
* pattern: it renders no invisible button/anchor, so the row adds no second
|
|
119
|
+
* tab stop (WCAG 4.1.2 — one focusable control per option). Clicks on the
|
|
120
|
+
* control itself, and on any other nested interactive element, are left to
|
|
121
|
+
* that element. Mutually exclusive with `onClick`/`href` — when
|
|
122
|
+
* `interactiveRef` is set those are ignored (the nested control is the sole
|
|
123
|
+
* action).
|
|
124
|
+
*/
|
|
125
|
+
interactiveRef?: React.RefObject<HTMLElement | null>;
|
|
126
|
+
|
|
111
127
|
/**
|
|
112
128
|
* Link URL. Makes the item a link via an invisible anchor element.
|
|
113
129
|
*/
|
|
@@ -349,6 +365,7 @@ export function Item({
|
|
|
349
365
|
labelLines,
|
|
350
366
|
descriptionLines,
|
|
351
367
|
onClick,
|
|
368
|
+
interactiveRef,
|
|
352
369
|
href,
|
|
353
370
|
target: targetFromProps,
|
|
354
371
|
rel: relFromProps,
|
|
@@ -363,7 +380,29 @@ export function Item({
|
|
|
363
380
|
...restProps
|
|
364
381
|
}: ItemProps) {
|
|
365
382
|
const LinkComponent = useLinkComponent();
|
|
366
|
-
|
|
383
|
+
|
|
384
|
+
// Delegation mode: the row is an enlarged click/tap target for a nested
|
|
385
|
+
// control (e.g. a checkbox) that owns the keyboard access and action. The
|
|
386
|
+
// control is the row's only tab stop; the row proxies surface clicks to it.
|
|
387
|
+
const isDelegate = interactiveRef != null;
|
|
388
|
+
const containerRef = useRef<HTMLElement | null>(null);
|
|
389
|
+
// Only onClick is needed: onMouseUp handles middle-click href navigation,
|
|
390
|
+
// which delegation mode never has (href is ignored here).
|
|
391
|
+
const {onClick: delegatedOnClick} = useClickableContainer({
|
|
392
|
+
containerRef,
|
|
393
|
+
interactiveRef: interactiveRef ?? undefined,
|
|
394
|
+
disabled: isDisabled,
|
|
395
|
+
});
|
|
396
|
+
|
|
397
|
+
useDevWarning(
|
|
398
|
+
'Item',
|
|
399
|
+
'`interactiveRef` is mutually exclusive with `onClick`/`href`. In ' +
|
|
400
|
+
'delegation mode the row only forwards clicks to the referenced control, ' +
|
|
401
|
+
'so `onClick`/`href` are ignored. Drop one of them.',
|
|
402
|
+
isDelegate && (onClick != null || href != null),
|
|
403
|
+
);
|
|
404
|
+
|
|
405
|
+
const isInteractive = onClick != null || href != null || isDelegate;
|
|
367
406
|
const {target, rel} = computeTargetAndRel(targetFromProps, relFromProps);
|
|
368
407
|
// When a semantic role is provided (e.g. "menuitem"), a parent component
|
|
369
408
|
// handles keyboard access. Skip the invisible button/anchor and put
|
|
@@ -441,7 +480,10 @@ export function Item({
|
|
|
441
480
|
<span {...stylex.props(styles.startContent)}>{startContent}</span>
|
|
442
481
|
)}
|
|
443
482
|
|
|
444
|
-
{hasParentRole ? (
|
|
483
|
+
{hasParentRole || isDelegate ? (
|
|
484
|
+
// Delegation mode (and parent-role mode) put the label in a plain span:
|
|
485
|
+
// keyboard access lives on the nested control, so no invisible
|
|
486
|
+
// button/anchor is rendered and the row adds no second tab stop.
|
|
445
487
|
<span
|
|
446
488
|
{...stylex.props(
|
|
447
489
|
styles.content,
|
|
@@ -497,7 +539,9 @@ export function Item({
|
|
|
497
539
|
|
|
498
540
|
return (
|
|
499
541
|
<Component
|
|
500
|
-
ref={
|
|
542
|
+
ref={
|
|
543
|
+
(isDelegate ? mergeRefs(ref, containerRef) : ref) as React.Ref<never>
|
|
544
|
+
}
|
|
501
545
|
{...restProps}
|
|
502
546
|
aria-selected={(allowsAriaSelected && isSelected) || undefined}
|
|
503
547
|
// aria-selected is invalid on roles that don't permit it (listitem, a
|
|
@@ -527,11 +571,13 @@ export function Item({
|
|
|
527
571
|
)}
|
|
528
572
|
role={role}
|
|
529
573
|
onClick={
|
|
530
|
-
|
|
531
|
-
?
|
|
532
|
-
:
|
|
533
|
-
?
|
|
534
|
-
:
|
|
574
|
+
isDelegate
|
|
575
|
+
? delegatedOnClick
|
|
576
|
+
: hasParentRole
|
|
577
|
+
? onClick
|
|
578
|
+
: isInteractive
|
|
579
|
+
? handleContainerClick
|
|
580
|
+
: undefined
|
|
535
581
|
}>
|
|
536
582
|
{innerContent}
|
|
537
583
|
</Component>
|
package/src/Kbd/Kbd.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: 'Kbd',
|
|
@@ -47,7 +47,7 @@ export const docs = {
|
|
|
47
47
|
},
|
|
48
48
|
};
|
|
49
49
|
|
|
50
|
-
/** @type {import('
|
|
50
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
|
|
51
51
|
export const docsZh = {
|
|
52
52
|
name: 'Kbd',
|
|
53
53
|
displayName: 'Kbd',
|
|
@@ -91,7 +91,7 @@ export const docsZh = {
|
|
|
91
91
|
},
|
|
92
92
|
};
|
|
93
93
|
|
|
94
|
-
/** @type {import('
|
|
94
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
|
|
95
95
|
export const docsDense = {
|
|
96
96
|
description:
|
|
97
97
|
'Renders keyboard shortcut as styled key badges. Use in tooltips, menus + help text to show key combinations.',
|
package/src/Kbd/Kbd.tsx
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*
|
|
11
11
|
* SYNC: When modified, update:
|
|
12
12
|
* - /packages/core/src/Kbd/index.ts
|
|
13
|
-
* - /packages/cli/templates/blocks/components/Kbd/ (showcase blocks)
|
|
13
|
+
* - /packages/cli/assets/templates/blocks/components/Kbd/ (showcase blocks)
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
import React, {useSyncExternalStore} from 'react';
|
package/src/Layer/Layer.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
|
export const docs = {
|
|
5
5
|
name: 'Layer',
|
|
6
6
|
displayName: 'Layer',
|
|
@@ -63,7 +63,7 @@ export const docs = {
|
|
|
63
63
|
],
|
|
64
64
|
};
|
|
65
65
|
|
|
66
|
-
/** @type {import('
|
|
66
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
|
|
67
67
|
export const docsDense = {
|
|
68
68
|
usage: {
|
|
69
69
|
description:
|