@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/Avatar/Avatar.tsx
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* @file Avatar.tsx
|
|
7
7
|
* @input Uses React, HTMLAttributes, ReactNode, useState; useTooltip
|
|
8
|
-
* (Tooltip hook) for the optional name-on-hover tooltip
|
|
8
|
+
* (Tooltip hook) for the optional name-on-hover tooltip; useTranslator (i18n)
|
|
9
9
|
* @output Exports Avatar component, AvatarProps, AvatarSize types
|
|
10
10
|
* @position Core implementation; consumed by index.ts
|
|
11
11
|
*
|
|
@@ -13,10 +13,12 @@
|
|
|
13
13
|
* - /packages/core/src/Avatar/Avatar.doc.mjs (props table, features, implementation notes)
|
|
14
14
|
* - /packages/core/src/Avatar/index.ts (exports if types change)
|
|
15
15
|
* - /apps/storybook/stories/Avatar.stories.tsx (storybook stories)
|
|
16
|
-
* - /packages/cli/templates/blocks/components/Avatar/ (showcase blocks)
|
|
16
|
+
* - /packages/cli/assets/templates/blocks/components/Avatar/ (showcase blocks)
|
|
17
|
+
*
|
|
18
|
+
* Last synced props: alt, fallbackSrc, name, size, src, status, href, as, target, rel, onClick
|
|
17
19
|
*/
|
|
18
20
|
|
|
19
|
-
import {useMemo, useState, type ReactNode} from 'react';
|
|
21
|
+
import {isValidElement, useMemo, useState, type ReactNode} from 'react';
|
|
20
22
|
import type {BaseProps} from '../BaseProps';
|
|
21
23
|
import * as stylex from '@stylexjs/stylex';
|
|
22
24
|
import {
|
|
@@ -30,6 +32,9 @@ import {useAvatarGroup} from '../AvatarGroup/AvatarGroupContext';
|
|
|
30
32
|
import {mergeProps, mergeRefs} from '../utils';
|
|
31
33
|
import {themeProps} from '../utils/themeProps';
|
|
32
34
|
import {useTooltip} from '../Tooltip/useTooltip';
|
|
35
|
+
import {useLinkComponent} from '../Link/useLinkComponent';
|
|
36
|
+
import type {LinkComponentType} from '../Link/types';
|
|
37
|
+
import {useTranslator} from '../i18n';
|
|
33
38
|
|
|
34
39
|
/**
|
|
35
40
|
* The offset ratio for positioning elements on a circle's edge at 45°.
|
|
@@ -61,7 +66,7 @@ const INITIALS_FONT_SIZE_RATIO = 0.4;
|
|
|
61
66
|
*
|
|
62
67
|
* Avatar uses the same abbreviated scale as Icon (`xsm`/`sm`/`md`/`lg`/`xl`),
|
|
63
68
|
* but the values are larger because avatars align with media rather than
|
|
64
|
-
* glyphs. The tiers
|
|
69
|
+
* glyphs. The tiers follow the standard avatar size scale.
|
|
65
70
|
*/
|
|
66
71
|
type AvatarNamedSize = 'xsm' | 'sm' | 'md' | 'lg' | 'xl';
|
|
67
72
|
|
|
@@ -106,6 +111,11 @@ const styles = stylex.create({
|
|
|
106
111
|
position: 'relative',
|
|
107
112
|
display: 'inline-flex',
|
|
108
113
|
flexShrink: 0,
|
|
114
|
+
// The wrapper is not clipped (so the status dot can overflow), so it must be
|
|
115
|
+
// rounded itself: a themed fallback background lands on `.astryx-avatar` (the
|
|
116
|
+
// class-bearing wrapper) as well as the internal var, and an unrounded
|
|
117
|
+
// wrapper would show that fill as square corners behind the circular content.
|
|
118
|
+
borderRadius: radiusVars['--radius-full'],
|
|
109
119
|
},
|
|
110
120
|
content: {
|
|
111
121
|
display: 'flex',
|
|
@@ -126,10 +136,14 @@ const styles = stylex.create({
|
|
|
126
136
|
justifyContent: 'center',
|
|
127
137
|
width: '100%',
|
|
128
138
|
height: '100%',
|
|
129
|
-
|
|
130
|
-
|
|
139
|
+
// Fallback surface (initials + default icon). Each property reads an
|
|
140
|
+
// Avatar-scoped internal var so a theme can re-scope the fallback wash and
|
|
141
|
+
// initials weight/color without forking; the defaults reproduce today's
|
|
142
|
+
// exact output. See derivedVarRegistry (avatar) + Avatar.doc.mjs theming.
|
|
143
|
+
backgroundColor: `var(--_avatar-fallback-background, ${colorVars['--color-neutral']})`,
|
|
144
|
+
color: `var(--_avatar-fallback-color, ${colorVars['--color-text-secondary']})`,
|
|
131
145
|
fontFamily: typographyVars['--font-family-body'],
|
|
132
|
-
fontWeight: fontWeightVars['--font-weight-medium']
|
|
146
|
+
fontWeight: `var(--_avatar-fallback-font-weight, ${fontWeightVars['--font-weight-medium']})`,
|
|
133
147
|
textTransform: 'uppercase',
|
|
134
148
|
},
|
|
135
149
|
status: {
|
|
@@ -148,6 +162,39 @@ const styles = stylex.create({
|
|
|
148
162
|
':focus-visible': '2px',
|
|
149
163
|
},
|
|
150
164
|
},
|
|
165
|
+
// Reset the intrinsic styling of the interactive element (<a>/<button>) so it
|
|
166
|
+
// is a transparent, correctly-sized wrapper around the avatar visuals. The
|
|
167
|
+
// element carries the focus-visible accent ring for keyboard users.
|
|
168
|
+
interactive: {
|
|
169
|
+
appearance: 'none',
|
|
170
|
+
padding: 0,
|
|
171
|
+
margin: 0,
|
|
172
|
+
borderWidth: 0,
|
|
173
|
+
borderStyle: 'none',
|
|
174
|
+
backgroundColor: 'transparent',
|
|
175
|
+
color: 'inherit',
|
|
176
|
+
font: 'inherit',
|
|
177
|
+
textDecoration: 'none',
|
|
178
|
+
cursor: 'pointer',
|
|
179
|
+
// Match the avatar's circular shape so the focus ring hugs it.
|
|
180
|
+
borderRadius: radiusVars['--radius-full'],
|
|
181
|
+
outlineWidth: {
|
|
182
|
+
default: 0,
|
|
183
|
+
':focus-visible': 2,
|
|
184
|
+
},
|
|
185
|
+
outlineStyle: {
|
|
186
|
+
default: 'none',
|
|
187
|
+
':focus-visible': 'solid',
|
|
188
|
+
},
|
|
189
|
+
outlineColor: {
|
|
190
|
+
default: null,
|
|
191
|
+
':focus-visible': colorVars['--color-accent'],
|
|
192
|
+
},
|
|
193
|
+
outlineOffset: {
|
|
194
|
+
default: 0,
|
|
195
|
+
':focus-visible': 2,
|
|
196
|
+
},
|
|
197
|
+
},
|
|
151
198
|
});
|
|
152
199
|
|
|
153
200
|
/**
|
|
@@ -158,13 +205,23 @@ const dynamicStyles = stylex.create({
|
|
|
158
205
|
width: size,
|
|
159
206
|
height: size,
|
|
160
207
|
}),
|
|
208
|
+
// Initials font size defaults to the proportional `size × ratio` scale but is
|
|
209
|
+
// reachable via the `--_avatar-fallback-font-size` derived var, so a theme can
|
|
210
|
+
// set a per-size type scale (e.g. `components.avatar['size:sm']`).
|
|
161
211
|
fontSize: (size: number) => ({
|
|
162
|
-
fontSize: size
|
|
212
|
+
fontSize: `var(--_avatar-fallback-font-size, ${
|
|
213
|
+
size * INITIALS_FONT_SIZE_RATIO
|
|
214
|
+
}px)`,
|
|
163
215
|
}),
|
|
164
216
|
statusPosition: (size: number) => ({
|
|
165
217
|
bottom: size * CIRCLE_EDGE_OFFSET_RATIO,
|
|
166
|
-
|
|
167
|
-
|
|
218
|
+
insetInlineEnd: size * CIRCLE_EDGE_OFFSET_RATIO,
|
|
219
|
+
// `insetInlineEnd` anchors to the right edge in LTR / left in RTL, so the
|
|
220
|
+
// outward push must mirror too: +X in LTR, −X in RTL (Y is unaffected).
|
|
221
|
+
transform: {
|
|
222
|
+
default: 'translate(50%, 50%)',
|
|
223
|
+
':is([dir="rtl"] *)': 'translate(-50%, 50%)',
|
|
224
|
+
},
|
|
168
225
|
}),
|
|
169
226
|
});
|
|
170
227
|
|
|
@@ -229,6 +286,11 @@ export interface AvatarProps extends BaseProps<HTMLDivElement> {
|
|
|
229
286
|
/**
|
|
230
287
|
* Content displayed in the corner of the avatar.
|
|
231
288
|
* Typically used for status indicators or badges.
|
|
289
|
+
*
|
|
290
|
+
* When the element carries a string `label` prop (as `AvatarStatusDot`
|
|
291
|
+
* does), the label is composed into the avatar's accessible name
|
|
292
|
+
* (e.g. "Jane Doe, Online") so assistive tech can reach the status —
|
|
293
|
+
* the `role="img"` root prunes descendant semantics (WCAG 4.1.2).
|
|
232
294
|
*/
|
|
233
295
|
status?: ReactNode;
|
|
234
296
|
/**
|
|
@@ -244,6 +306,35 @@ export interface AvatarProps extends BaseProps<HTMLDivElement> {
|
|
|
244
306
|
* @default true
|
|
245
307
|
*/
|
|
246
308
|
tooltip?: string | boolean;
|
|
309
|
+
/**
|
|
310
|
+
* When provided, the avatar becomes an interactive link (`<a>` or custom
|
|
311
|
+
* link component) pointing at `href`. Follows the same element-swap rules as
|
|
312
|
+
* Button: `href` renders a link, otherwise `onClick` renders a
|
|
313
|
+
* `<button type="button">`, otherwise the avatar stays a static (non-focusable)
|
|
314
|
+
* element. An interactive avatar requires a meaningful accessible name via
|
|
315
|
+
* `alt` or `name`.
|
|
316
|
+
*/
|
|
317
|
+
href?: string;
|
|
318
|
+
/**
|
|
319
|
+
* Custom link component to use when `href` is provided. Overrides the
|
|
320
|
+
* provider-level default set by LinkProvider. Useful for Next.js `<Link>` or
|
|
321
|
+
* other router-aware components. Only applies when `href` is provided.
|
|
322
|
+
*/
|
|
323
|
+
as?: LinkComponentType;
|
|
324
|
+
/**
|
|
325
|
+
* HTML target attribute for the link. Only applies when `href` is provided.
|
|
326
|
+
*/
|
|
327
|
+
target?: string;
|
|
328
|
+
/**
|
|
329
|
+
* HTML rel attribute for the link. Only applies when `href` is provided.
|
|
330
|
+
*/
|
|
331
|
+
rel?: string;
|
|
332
|
+
/**
|
|
333
|
+
* Click handler. When provided without `href`, renders the avatar as a
|
|
334
|
+
* focusable `<button type="button">`. An interactive avatar requires a
|
|
335
|
+
* meaningful accessible name via `alt` or `name`.
|
|
336
|
+
*/
|
|
337
|
+
onClick?: React.MouseEventHandler<HTMLElement>;
|
|
247
338
|
}
|
|
248
339
|
|
|
249
340
|
/**
|
|
@@ -266,6 +357,24 @@ function getInitials(name: string): string {
|
|
|
266
357
|
return (words[0].charAt(0) + words[words.length - 1].charAt(0)).toUpperCase();
|
|
267
358
|
}
|
|
268
359
|
|
|
360
|
+
/**
|
|
361
|
+
* Reads the accessible status label off the `status` element, when it
|
|
362
|
+
* exposes one. `AvatarStatusDot`'s `label` prop is the canonical source,
|
|
363
|
+
* but any custom status element with a string `label` prop participates.
|
|
364
|
+
*
|
|
365
|
+
* The avatar root is `role="img"`, which prunes ALL descendant semantics
|
|
366
|
+
* from the accessibility tree — a label inside the status subtree is never
|
|
367
|
+
* announced on its own. Composing it into the avatar's own accessible name
|
|
368
|
+
* is the only way the status reaches assistive tech (WCAG 4.1.2).
|
|
369
|
+
*/
|
|
370
|
+
function getStatusLabel(status: ReactNode): string | undefined {
|
|
371
|
+
if (!isValidElement(status)) {
|
|
372
|
+
return undefined;
|
|
373
|
+
}
|
|
374
|
+
const {label} = status.props as {label?: unknown};
|
|
375
|
+
return typeof label === 'string' && label !== '' ? label : undefined;
|
|
376
|
+
}
|
|
377
|
+
|
|
269
378
|
/**
|
|
270
379
|
* Default person icon SVG for when no image or name is provided
|
|
271
380
|
*/
|
|
@@ -295,6 +404,8 @@ function DefaultIcon({size}: {size: number}) {
|
|
|
295
404
|
* <Avatar src="/user.jpg" status={<OnlineIndicator />} />
|
|
296
405
|
* <Avatar name="jsmith" tooltip="Jane Smith, Staff Engineer" />
|
|
297
406
|
* <Avatar name="Jane" tooltip={false} />
|
|
407
|
+
* <Avatar src="/user.jpg" name="John Doe" href="/users/john" />
|
|
408
|
+
* <Avatar src="/user.jpg" name="John Doe" onClick={() => openProfile()} />
|
|
298
409
|
* ```
|
|
299
410
|
*/
|
|
300
411
|
export function Avatar({
|
|
@@ -306,6 +417,11 @@ export function Avatar({
|
|
|
306
417
|
src,
|
|
307
418
|
status,
|
|
308
419
|
tooltip = true,
|
|
420
|
+
href,
|
|
421
|
+
as,
|
|
422
|
+
target,
|
|
423
|
+
rel,
|
|
424
|
+
onClick,
|
|
309
425
|
xstyle,
|
|
310
426
|
className,
|
|
311
427
|
style,
|
|
@@ -325,10 +441,24 @@ export function Avatar({
|
|
|
325
441
|
const showInitials = !showImage && !showFallbackImage && name;
|
|
326
442
|
const showIcon = !showImage && !showFallbackImage && !name;
|
|
327
443
|
|
|
328
|
-
// A meaningful accessible name comes from `alt
|
|
329
|
-
//
|
|
330
|
-
//
|
|
331
|
-
|
|
444
|
+
// A meaningful accessible name comes from `alt`/`name`, composed with the
|
|
445
|
+
// status element's `label` when one is present ("Jane Doe, Online") — the
|
|
446
|
+
// `role="img"` root prunes descendant semantics, so surfacing the label in
|
|
447
|
+
// the avatar's own name is the only way assistive tech can reach the
|
|
448
|
+
// status (WCAG 4.1.2). A labelled status alone is also meaningful. With
|
|
449
|
+
// neither a name nor a labelled status, the avatar is decorative — expose
|
|
450
|
+
// it as `presentation`/`aria-hidden` rather than announcing a meaningless
|
|
451
|
+
// generic "Avatar" (obs-9).
|
|
452
|
+
const t = useTranslator();
|
|
453
|
+
const nameLabel = alt || name;
|
|
454
|
+
const statusLabel = getStatusLabel(status);
|
|
455
|
+
const accessibleName =
|
|
456
|
+
nameLabel && statusLabel
|
|
457
|
+
? t('@astryx.avatar.nameWithStatus', {
|
|
458
|
+
name: nameLabel,
|
|
459
|
+
status: statusLabel,
|
|
460
|
+
})
|
|
461
|
+
: nameLabel || statusLabel;
|
|
332
462
|
const isDecorative = !accessibleName;
|
|
333
463
|
const avatarGroup = useAvatarGroup();
|
|
334
464
|
const resolvedSize = avatarGroup?.size ?? size;
|
|
@@ -359,11 +489,14 @@ export function Avatar({
|
|
|
359
489
|
// returns `describedBy` as a value we choose whether to apply — the only way
|
|
360
490
|
// to satisfy the per-case aria-describedby rule (default name: none; custom
|
|
361
491
|
// string: describe) without editing Tooltip. `focusTrigger: 'auto'` shows the
|
|
362
|
-
// tooltip on keyboard focus once the root is
|
|
492
|
+
// tooltip on keyboard focus once the root is focusable (natively for the
|
|
493
|
+
// interactive <a>/<button>, or via an explicit tab stop on the static div).
|
|
363
494
|
const tooltipHook = useTooltip({
|
|
364
495
|
placement: 'above',
|
|
365
496
|
isEnabled: showTooltip,
|
|
366
497
|
});
|
|
498
|
+
// The tooltip ref attaches to whichever root element renders (static or
|
|
499
|
+
// interactive), so the tooltip works for link/button avatars too.
|
|
367
500
|
const rootRef = mergeRefs(ref, showTooltip ? tooltipHook.ref : undefined);
|
|
368
501
|
const describedByProp =
|
|
369
502
|
showTooltip && isCustomTooltip
|
|
@@ -375,8 +508,136 @@ export function Avatar({
|
|
|
375
508
|
}
|
|
376
509
|
: null;
|
|
377
510
|
|
|
378
|
-
|
|
379
|
-
|
|
511
|
+
// Element-swap trichotomy, copied from Button: `href` renders a link,
|
|
512
|
+
// otherwise `onClick` renders a `<button>`, otherwise today's static element
|
|
513
|
+
// is unchanged (the non-breaking default).
|
|
514
|
+
const renderAsLink = href != null;
|
|
515
|
+
const renderAsButton = !renderAsLink && onClick != null;
|
|
516
|
+
const isInteractive = renderAsLink || renderAsButton;
|
|
517
|
+
const LinkComponent = useLinkComponent(as);
|
|
518
|
+
|
|
519
|
+
// An interactive control with no accessible name is an unacceptable control
|
|
520
|
+
// name. Warn in the same client-safe way sibling components do (Field,
|
|
521
|
+
// Timestamp, Popover) — a plain `console.warn`, never gated on `process.env`
|
|
522
|
+
// (which is not available on the client in this codebase).
|
|
523
|
+
if (isInteractive && !accessibleName) {
|
|
524
|
+
console.warn(
|
|
525
|
+
'Avatar: an interactive avatar (with `href` or `onClick`) needs a ' +
|
|
526
|
+
'meaningful accessible name. Pass `alt` or `name`.',
|
|
527
|
+
);
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
// The inner visuals are identical across the static and interactive variants.
|
|
531
|
+
const visualContent = (
|
|
532
|
+
<>
|
|
533
|
+
<div {...stylex.props(styles.content, dynamicStyles.size(numericSize))}>
|
|
534
|
+
{showImage && (
|
|
535
|
+
<img
|
|
536
|
+
src={src}
|
|
537
|
+
alt=""
|
|
538
|
+
onError={() => setErroredSrc(src)}
|
|
539
|
+
{...stylex.props(styles.image)}
|
|
540
|
+
/>
|
|
541
|
+
)}
|
|
542
|
+
{showFallbackImage && (
|
|
543
|
+
<img
|
|
544
|
+
src={fallbackSrc}
|
|
545
|
+
alt=""
|
|
546
|
+
onError={() => setErroredFallbackSrc(fallbackSrc)}
|
|
547
|
+
{...stylex.props(styles.image)}
|
|
548
|
+
/>
|
|
549
|
+
)}
|
|
550
|
+
{showInitials && (
|
|
551
|
+
<div
|
|
552
|
+
{...stylex.props(
|
|
553
|
+
styles.fallback,
|
|
554
|
+
dynamicStyles.fontSize(numericSize),
|
|
555
|
+
)}>
|
|
556
|
+
{getInitials(name)}
|
|
557
|
+
</div>
|
|
558
|
+
)}
|
|
559
|
+
{showIcon && (
|
|
560
|
+
<div {...stylex.props(styles.fallback)}>
|
|
561
|
+
<DefaultIcon size={numericSize} />
|
|
562
|
+
</div>
|
|
563
|
+
)}
|
|
564
|
+
</div>
|
|
565
|
+
{status && (
|
|
566
|
+
<div
|
|
567
|
+
{...stylex.props(
|
|
568
|
+
styles.status,
|
|
569
|
+
dynamicStyles.statusPosition(numericSize),
|
|
570
|
+
)}>
|
|
571
|
+
{status}
|
|
572
|
+
</div>
|
|
573
|
+
)}
|
|
574
|
+
</>
|
|
575
|
+
);
|
|
576
|
+
|
|
577
|
+
// Shared StyleX + theme props for the root element in every variant. The
|
|
578
|
+
// group ring/overlap, the interactive focus-visible ring, and the
|
|
579
|
+
// tooltip tab-stop focus ring all live here so the interactive
|
|
580
|
+
// `<a>`/`<button>` and the static `<div>` carry the exact same box.
|
|
581
|
+
const rootStylexProps = mergeProps(
|
|
582
|
+
themeProps('avatar', {size: resolvedSize}),
|
|
583
|
+
stylex.props(
|
|
584
|
+
styles.wrapper,
|
|
585
|
+
isInteractive && styles.interactive,
|
|
586
|
+
!isInteractive && showTooltip && !avatarGroup && styles.focusable,
|
|
587
|
+
avatarGroup && groupStyles.ring,
|
|
588
|
+
avatarGroup && groupStyles.overlap,
|
|
589
|
+
avatarGroup && groupDynamicStyles.overlap(-avatarGroup.overlap),
|
|
590
|
+
xstyle,
|
|
591
|
+
),
|
|
592
|
+
className,
|
|
593
|
+
style,
|
|
594
|
+
);
|
|
595
|
+
|
|
596
|
+
let rootElement: ReactNode;
|
|
597
|
+
|
|
598
|
+
// `props` is typed for the default `<div>` root (its event handlers are
|
|
599
|
+
// HTMLDivElement-typed). The interactive branches render an `<a>`/`<button>`,
|
|
600
|
+
// so the passthrough props are re-typed to the generic element here — the
|
|
601
|
+
// avatar's own handlers (onClick) are declared on HTMLElement and stay typed.
|
|
602
|
+
const interactivePassthrough = props as React.HTMLAttributes<HTMLElement>;
|
|
603
|
+
|
|
604
|
+
if (renderAsLink) {
|
|
605
|
+
// The rendered link carries the `data-avatar-item` marker so AvatarGroup's
|
|
606
|
+
// roving focus (which selects on `[data-avatar-item]`, not a tag/role) picks
|
|
607
|
+
// it up while ignoring nested buttons in a custom status/badge slot.
|
|
608
|
+
rootElement = (
|
|
609
|
+
<LinkComponent
|
|
610
|
+
{...interactivePassthrough}
|
|
611
|
+
{...describedByProp}
|
|
612
|
+
ref={rootRef as React.Ref<HTMLAnchorElement>}
|
|
613
|
+
href={href}
|
|
614
|
+
target={target}
|
|
615
|
+
rel={rel}
|
|
616
|
+
aria-label={accessibleName}
|
|
617
|
+
data-avatar-item=""
|
|
618
|
+
data-testid={testId}
|
|
619
|
+
onClick={onClick}
|
|
620
|
+
{...rootStylexProps}>
|
|
621
|
+
{visualContent}
|
|
622
|
+
</LinkComponent>
|
|
623
|
+
);
|
|
624
|
+
} else if (renderAsButton) {
|
|
625
|
+
rootElement = (
|
|
626
|
+
<button
|
|
627
|
+
{...interactivePassthrough}
|
|
628
|
+
{...describedByProp}
|
|
629
|
+
ref={rootRef}
|
|
630
|
+
type="button"
|
|
631
|
+
aria-label={accessibleName}
|
|
632
|
+
data-avatar-item=""
|
|
633
|
+
data-testid={testId}
|
|
634
|
+
onClick={onClick}
|
|
635
|
+
{...rootStylexProps}>
|
|
636
|
+
{visualContent}
|
|
637
|
+
</button>
|
|
638
|
+
);
|
|
639
|
+
} else {
|
|
640
|
+
rootElement = (
|
|
380
641
|
<div
|
|
381
642
|
{...props}
|
|
382
643
|
ref={rootRef}
|
|
@@ -385,79 +646,29 @@ export function Avatar({
|
|
|
385
646
|
aria-hidden={isDecorative || undefined}
|
|
386
647
|
// The root is a div[role="img"], not natively focusable. When a name
|
|
387
648
|
// tooltip is active, add a tab stop so keyboard users can reveal it
|
|
388
|
-
// (WCAG 1.4.13 / 2.1.1) — matching Timestamp/Button.
|
|
389
|
-
|
|
649
|
+
// (WCAG 1.4.13 / 2.1.1) — matching Timestamp/Button. Suppressed inside
|
|
650
|
+
// an AvatarGroup, which owns a single roving tab stop for its members.
|
|
651
|
+
tabIndex={showTooltip && !avatarGroup ? 0 : undefined}
|
|
390
652
|
data-testid={testId}
|
|
391
653
|
{...describedByProp}
|
|
392
|
-
{...
|
|
393
|
-
|
|
394
|
-
stylex.props(
|
|
395
|
-
styles.wrapper,
|
|
396
|
-
showTooltip && styles.focusable,
|
|
397
|
-
avatarGroup && groupStyles.ring,
|
|
398
|
-
avatarGroup && groupStyles.overlap,
|
|
399
|
-
avatarGroup && groupDynamicStyles.overlap(-avatarGroup.overlap),
|
|
400
|
-
xstyle,
|
|
401
|
-
),
|
|
402
|
-
className,
|
|
403
|
-
style,
|
|
404
|
-
)}>
|
|
405
|
-
<div {...stylex.props(styles.content, dynamicStyles.size(numericSize))}>
|
|
406
|
-
{showImage && (
|
|
407
|
-
<img
|
|
408
|
-
src={src}
|
|
409
|
-
alt=""
|
|
410
|
-
onError={() => setErroredSrc(src)}
|
|
411
|
-
{...stylex.props(styles.image)}
|
|
412
|
-
/>
|
|
413
|
-
)}
|
|
414
|
-
{showFallbackImage && (
|
|
415
|
-
<img
|
|
416
|
-
src={fallbackSrc}
|
|
417
|
-
alt=""
|
|
418
|
-
onError={() => setErroredFallbackSrc(fallbackSrc)}
|
|
419
|
-
{...stylex.props(styles.image)}
|
|
420
|
-
/>
|
|
421
|
-
)}
|
|
422
|
-
{showInitials && (
|
|
423
|
-
<div
|
|
424
|
-
{...stylex.props(
|
|
425
|
-
styles.fallback,
|
|
426
|
-
dynamicStyles.fontSize(numericSize),
|
|
427
|
-
)}>
|
|
428
|
-
{getInitials(name)}
|
|
429
|
-
</div>
|
|
430
|
-
)}
|
|
431
|
-
{showIcon && (
|
|
432
|
-
<div {...stylex.props(styles.fallback)}>
|
|
433
|
-
<DefaultIcon size={numericSize} />
|
|
434
|
-
</div>
|
|
435
|
-
)}
|
|
436
|
-
</div>
|
|
437
|
-
{status && (
|
|
438
|
-
<div
|
|
439
|
-
{...stylex.props(
|
|
440
|
-
styles.status,
|
|
441
|
-
dynamicStyles.statusPosition(numericSize),
|
|
442
|
-
)}>
|
|
443
|
-
{status}
|
|
444
|
-
</div>
|
|
445
|
-
)}
|
|
654
|
+
{...rootStylexProps}>
|
|
655
|
+
{visualContent}
|
|
446
656
|
</div>
|
|
447
|
-
|
|
448
|
-
);
|
|
449
|
-
|
|
450
|
-
if (!showTooltip) {
|
|
451
|
-
return avatarElement;
|
|
657
|
+
);
|
|
452
658
|
}
|
|
453
659
|
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
660
|
+
const avatarElement = (
|
|
661
|
+
<AvatarSizeContext value={numericSize}>{rootElement}</AvatarSizeContext>
|
|
662
|
+
);
|
|
663
|
+
|
|
664
|
+
// Always return the same structure so the avatar keeps its position in the
|
|
665
|
+
// React tree regardless of the tooltip flag — toggling it must not remount
|
|
666
|
+
// the avatar subtree (and lose image-load state). The tooltip is a sibling
|
|
667
|
+
// (no wrapper DOM); the hook's ref is already on the root via `rootRef`.
|
|
457
668
|
return (
|
|
458
669
|
<>
|
|
459
670
|
{avatarElement}
|
|
460
|
-
{tooltipHook.renderTooltip(trimmedTooltip)}
|
|
671
|
+
{showTooltip ? tooltipHook.renderTooltip(trimmedTooltip) : null}
|
|
461
672
|
</>
|
|
462
673
|
);
|
|
463
674
|
}
|
|
@@ -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: 'AvatarStatusDot',
|
|
@@ -21,7 +21,7 @@ export const docs = {
|
|
|
21
21
|
name: 'label',
|
|
22
22
|
type: 'string',
|
|
23
23
|
description:
|
|
24
|
-
'Accessible label describing the status.
|
|
24
|
+
'Accessible label describing the status. Inside an Avatar it is composed into the avatar\'s accessible name (e.g. "Jane Doe, Online"); the Avatar root is role="img", which prunes child semantics, so the composed name is how the status reaches assistive tech. Standalone dots expose role="img" with this label directly.',
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
name: 'icon',
|
|
@@ -59,7 +59,7 @@ export const docsZh = {
|
|
|
59
59
|
name: 'label',
|
|
60
60
|
type: 'string',
|
|
61
61
|
description:
|
|
62
|
-
'
|
|
62
|
+
'描述状态的无障碍标签。在 Avatar 内会被合成进头像自身的无障碍名称(如 "Jane Doe, Online")——Avatar 根元素为 role="img",会裁剪子元素语义,因此合成名称是辅助技术获知状态的途径。独立使用时状态点直接以 role="img" 暴露该标签。',
|
|
63
63
|
},
|
|
64
64
|
{
|
|
65
65
|
name: 'icon',
|
|
@@ -80,7 +80,7 @@ export const docsDense = {
|
|
|
80
80
|
variant:
|
|
81
81
|
'colour + shape variant: success filled, neutral ring, error minus',
|
|
82
82
|
label:
|
|
83
|
-
'accessible status label (
|
|
84
|
-
icon: 'icon centered in dot (hidden at tiny sizes); replaces the built-in shape glyph
|
|
83
|
+
'accessible status label; composed into the Avatar accessible name ("Jane Doe, Online"); standalone dots expose role="img" with it directly',
|
|
84
|
+
icon: 'icon centered in dot (hidden at tiny sizes); replaces the built-in shape glyph, so differ it per status',
|
|
85
85
|
},
|
|
86
86
|
};
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* - /packages/core/src/Avatar/Avatar.doc.mjs (features, files table)
|
|
13
13
|
* - /packages/core/src/Avatar/index.ts (exports)
|
|
14
14
|
* - /apps/storybook/stories/Avatar.stories.tsx (storybook stories)
|
|
15
|
-
* - /packages/cli/templates/blocks/components/Avatar/ (showcase blocks)
|
|
15
|
+
* - /packages/cli/assets/templates/blocks/components/Avatar/ (showcase blocks)
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
import React, {use, type ReactNode} from 'react';
|
|
@@ -22,6 +22,7 @@ import {colorVars, radiusVars} from '../theme/tokens.stylex';
|
|
|
22
22
|
import {AvatarSizeContext} from './AvatarSizeContext';
|
|
23
23
|
import {isRenderable, mergeProps} from '../utils';
|
|
24
24
|
import {themeProps} from '../utils/themeProps';
|
|
25
|
+
import type {AvatarStatusDotVariantMap} from './index';
|
|
25
26
|
|
|
26
27
|
/**
|
|
27
28
|
* Discrete size tier of the status dot, derived from the avatar size.
|
|
@@ -65,32 +66,6 @@ function resolveStatusDotSize(avatarSize: number): {
|
|
|
65
66
|
return {dotSize: 32, borderWidth: 4, iconSize: 18, tier: 'large'};
|
|
66
67
|
}
|
|
67
68
|
|
|
68
|
-
/**
|
|
69
|
-
* Extensible variant map for AvatarStatusDot.
|
|
70
|
-
*
|
|
71
|
-
* Theme packages can add custom variants via TypeScript module augmentation:
|
|
72
|
-
* @example
|
|
73
|
-
* ```
|
|
74
|
-
* declare module '@astryxdesign/core/Avatar' {
|
|
75
|
-
* interface AvatarStatusDotVariantMap {
|
|
76
|
-
* 'away': true;
|
|
77
|
-
* }
|
|
78
|
-
* }
|
|
79
|
-
* ```
|
|
80
|
-
*
|
|
81
|
-
* Custom variants render no background fill, no ink colour, and no built-in
|
|
82
|
-
* shape glyph — the theme must supply the fill and, if it passes an `icon`,
|
|
83
|
-
* a `color` for it to paint with. It should also supply a non-colour mark
|
|
84
|
-
* so the status is not distinguishable by colour alone (a WCAG 1.4.1
|
|
85
|
-
* failure): pass `icon`, or theme a glyph onto the dot via
|
|
86
|
-
* `.astryx-avatar-status-dot[data-variant="..."]` (e.g. a `::before` mark).
|
|
87
|
-
*/
|
|
88
|
-
export interface AvatarStatusDotVariantMap {
|
|
89
|
-
success: true;
|
|
90
|
-
neutral: true;
|
|
91
|
-
error: true;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
69
|
/**
|
|
95
70
|
* AvatarStatusDot variant type. Extensible via module augmentation of AvatarStatusDotVariantMap.
|
|
96
71
|
*/
|
|
@@ -115,10 +90,12 @@ export interface AvatarStatusDotProps extends BaseProps<HTMLDivElement> {
|
|
|
115
90
|
* Describes the meaning of the indicator for screen readers
|
|
116
91
|
* (e.g. "Online", "Accepted", "John Doe is busy").
|
|
117
92
|
*
|
|
118
|
-
* Note: inside an Avatar the
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
93
|
+
* Note: inside an Avatar the dot sits in the avatar's `role="img"`
|
|
94
|
+
* subtree, where descendant semantics are pruned — the dot is never its
|
|
95
|
+
* own stop there. Instead, Avatar reads this `label` and composes it into
|
|
96
|
+
* its own accessible name (e.g. "Jane Doe, Online"), which is how the
|
|
97
|
+
* status reaches assistive tech (WCAG 4.1.2). Standalone dots (outside an
|
|
98
|
+
* Avatar) expose `role="img"` with this label directly.
|
|
122
99
|
*/
|
|
123
100
|
label?: string;
|
|
124
101
|
/**
|
package/src/Avatar/index.ts
CHANGED
|
@@ -11,11 +11,36 @@
|
|
|
11
11
|
* SYNC: When modified, update this header and /packages/core/src/Avatar/Avatar.doc.mjs
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Extensible variant map for AvatarStatusDot.
|
|
16
|
+
*
|
|
17
|
+
* Theme packages can add custom variants via TypeScript module augmentation:
|
|
18
|
+
* @example
|
|
19
|
+
* ```
|
|
20
|
+
* declare module '@astryxdesign/core/Avatar' {
|
|
21
|
+
* interface AvatarStatusDotVariantMap {
|
|
22
|
+
* 'away': true;
|
|
23
|
+
* }
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* Custom variants render no background fill, no ink colour, and no built-in
|
|
28
|
+
* shape glyph — the theme must supply the fill and, if it passes an `icon`,
|
|
29
|
+
* a `color` for it to paint with. It should also supply a non-colour mark
|
|
30
|
+
* so the status is not distinguishable by colour alone (a WCAG 1.4.1
|
|
31
|
+
* failure): pass `icon`, or theme a glyph onto the dot via
|
|
32
|
+
* `.astryx-avatar-status-dot[data-variant="..."]` (e.g. a `::before` mark).
|
|
33
|
+
*/
|
|
34
|
+
export interface AvatarStatusDotVariantMap {
|
|
35
|
+
success: true;
|
|
36
|
+
neutral: true;
|
|
37
|
+
error: true;
|
|
38
|
+
}
|
|
39
|
+
|
|
14
40
|
export {Avatar, resolveSize} from './Avatar';
|
|
15
41
|
export type {AvatarProps, AvatarSize} from './Avatar';
|
|
16
42
|
export {AvatarStatusDot} from './AvatarStatusDot';
|
|
17
43
|
export type {
|
|
18
44
|
AvatarStatusDotProps,
|
|
19
45
|
AvatarStatusDotVariant,
|
|
20
|
-
AvatarStatusDotVariantMap,
|
|
21
46
|
} from './AvatarStatusDot';
|