@astryxdesign/core 0.1.9 → 0.2.0-canary.068bda9
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/Avatar/Avatar.d.ts +42 -3
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +190 -59
- package/dist/Avatar/AvatarStatusDot.d.ts +6 -4
- package/dist/Avatar/AvatarStatusDot.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroup.d.ts +7 -1
- package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroup.js +58 -6
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +7 -2
- package/dist/Banner/Banner.js +2 -2
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +11 -4
- package/dist/Breadcrumbs/index.d.ts +1 -0
- package/dist/Breadcrumbs/index.d.ts.map +1 -1
- package/dist/Breadcrumbs/index.js +2 -1
- package/dist/Button/Button.d.ts +1 -1
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +6 -4
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +50 -9
- package/dist/Calendar/dayCellUtils.d.ts +4 -4
- package/dist/Calendar/dayCellUtils.js +2 -2
- package/dist/Calendar/styles.d.ts +30 -31
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +30 -31
- package/dist/Card/Card.js +1 -1
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +22 -12
- package/dist/Chat/ChatComposerInput.js +1 -1
- package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
- package/dist/Chat/ChatDictationButton.js +3 -1
- package/dist/Chat/ChatLayout.js +4 -4
- package/dist/Chat/ChatMessageBubble.d.ts.map +1 -1
- package/dist/Chat/ChatMessageBubble.js +8 -8
- 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.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +6 -6
- package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +19 -4
- package/dist/Citation/Citation.d.ts +22 -1
- package/dist/Citation/Citation.d.ts.map +1 -1
- package/dist/Citation/Citation.js +20 -6
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +16 -10
- package/dist/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible/Collapsible.js +3 -1
- package/dist/CommandPalette/CommandPalette.d.ts +1 -1
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +42 -3
- package/dist/CommandPalette/CommandPaletteItem.js +1 -1
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +23 -5
- 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 +33 -19
- package/dist/DateRangeInput/DateRangeInput.d.ts +10 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +23 -20
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +23 -18
- package/dist/Divider/Divider.d.ts +2 -2
- package/dist/Divider/Divider.d.ts.map +1 -1
- package/dist/Divider/Divider.js +13 -0
- package/dist/DropdownMenu/DropdownMenu.d.ts +6 -0
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +22 -5
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +4 -1
- package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuItem.js +5 -2
- 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 +5 -2
- 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 +21 -6
- package/dist/Field/Field.d.ts +3 -1
- package/dist/Field/Field.d.ts.map +1 -1
- package/dist/Field/Field.js +4 -1
- package/dist/Field/FieldLabel.d.ts +2 -1
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +9 -5
- 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 -0
- package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
- package/dist/FieldStatus/FieldStatus.js +51 -5
- package/dist/FileInput/FileInput.d.ts +10 -2
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +93 -65
- package/dist/Heading/Heading.d.ts.map +1 -1
- package/dist/Heading/Heading.js +3 -2
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +10 -4
- package/dist/Icon/Icon.d.ts +15 -1
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +19 -3
- package/dist/Item/Item.d.ts +16 -3
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +31 -6
- package/dist/Layer/layerAnimations.stylex.d.ts.map +1 -1
- package/dist/Layer/layerAnimations.stylex.js +10 -2
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +34 -15
- package/dist/List/List.d.ts.map +1 -1
- package/dist/List/List.js +6 -3
- package/dist/List/ListItem.d.ts +11 -1
- package/dist/List/ListItem.d.ts.map +1 -1
- package/dist/List/ListItem.js +2 -0
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +7 -0
- package/dist/MetadataList/MetadataList.d.ts +1 -1
- package/dist/MetadataList/MetadataList.d.ts.map +1 -1
- package/dist/MetadataList/MetadataList.js +4 -2
- package/dist/MultiSelector/MultiSelector.d.ts +9 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +81 -43
- package/dist/NavMenu/NavHeadingMenuItem.js +1 -1
- package/dist/NumberInput/NumberInput.d.ts +10 -2
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +22 -17
- package/dist/Outline/Outline.js +2 -2
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +11 -3
- package/dist/PowerSearch/PowerSearch.d.ts +9 -2
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +2 -0
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +6 -1
- package/dist/RadioList/RadioList.d.ts +2 -2
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +5 -5
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +49 -19
- package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +5 -3
- package/dist/Selector/Selector.d.ts +8 -0
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +66 -17
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +5 -5
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseButton.js +13 -10
- package/dist/SideNav/SideNavItem.d.ts +1 -1
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +12 -10
- package/dist/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/Skeleton/Skeleton.js +2 -2
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +87 -34
- package/dist/Spinner/Spinner.d.ts +3 -2
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +11 -2
- package/dist/Switch/Switch.d.ts +8 -1
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +171 -91
- package/dist/TabList/Tab.js +2 -2
- package/dist/TabList/TabList.d.ts +2 -11
- package/dist/TabList/TabList.d.ts.map +1 -1
- package/dist/TabList/TabList.js +5 -9
- 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.js +1 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +30 -4
- package/dist/Table/TableCell.js +3 -3
- package/dist/Table/TableHeaderCell.js +3 -3
- 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.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +37 -27
- 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.map +1 -1
- package/dist/Table/plugins/tree/useTableTreeData.js +29 -23
- package/dist/Table/types.d.ts +32 -0
- package/dist/Table/types.d.ts.map +1 -1
- package/dist/Text/Text.d.ts +10 -1
- package/dist/Text/Text.d.ts.map +1 -1
- package/dist/Text/Text.js +25 -2
- package/dist/Text/index.d.ts +2 -2
- package/dist/Text/index.d.ts.map +1 -1
- package/dist/TextArea/TextArea.d.ts +10 -1
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +119 -52
- package/dist/TextInput/TextInput.d.ts +10 -2
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +20 -17
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +51 -45
- package/dist/TimeInput/TimeInput.d.ts +10 -2
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +17 -17
- package/dist/Timestamp/Timestamp.d.ts +31 -3
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +48 -77
- 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.map +1 -1
- package/dist/ToggleButton/ToggleButton.js +3 -1
- package/dist/Token/Token.d.ts +34 -4
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +85 -45
- 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 +1 -1
- package/dist/Token/index.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.d.ts +9 -2
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +4 -2
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +17 -1
- package/dist/TopNav/TopNavItem.d.ts +3 -1
- package/dist/TopNav/TopNavItem.d.ts.map +1 -1
- package/dist/TopNav/TopNavItem.js +30 -3
- package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +9 -3
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +1 -0
- package/dist/TreeList/TreeListBranches.d.ts.map +1 -1
- package/dist/TreeList/TreeListBranches.js +8 -6
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +32 -14
- package/dist/Typeahead/BaseTypeahead.d.ts +9 -0
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +22 -11
- package/dist/Typeahead/Typeahead.d.ts +9 -2
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +11 -2
- package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
- package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
- package/dist/Typeahead/TypeaheadItem.js +20 -10
- package/dist/astryx.css +114 -35
- package/dist/astryx.umd.js +50 -50
- package/dist/astryx.umd.js.map +4 -4
- package/dist/hooks/containerReveal.pool.stylex.d.ts +281 -0
- package/dist/hooks/containerReveal.pool.stylex.d.ts.map +1 -0
- package/dist/hooks/containerReveal.pool.stylex.js +281 -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/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 +1 -1
- package/dist/hooks/useKeyboardHint.d.ts.map +1 -1
- package/dist/hooks/useKeyboardHint.js +4 -2
- 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/theme/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +13 -0
- package/dist/theme/index.d.ts +3 -3
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/types.d.ts +39 -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 +24 -0
- package/dist/utils/rtlStyles.d.ts.map +1 -0
- package/dist/utils/rtlStyles.js +27 -0
- package/locales/en.json +120 -0
- package/locales/pseudo.json +90 -0
- package/package.json +7 -2
- package/src/Avatar/Avatar.doc.mjs +50 -3
- package/src/Avatar/Avatar.test.tsx +218 -0
- package/src/Avatar/Avatar.tsx +285 -79
- package/src/Avatar/AvatarStatusDot.doc.mjs +4 -4
- package/src/Avatar/AvatarStatusDot.tsx +6 -4
- package/src/AvatarGroup/AvatarGroup.doc.mjs +2 -0
- package/src/AvatarGroup/AvatarGroup.test.tsx +162 -2
- package/src/AvatarGroup/AvatarGroup.tsx +58 -3
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +5 -2
- package/src/Banner/Banner.tsx +6 -6
- package/src/Breadcrumbs/BreadcrumbItem.tsx +10 -10
- package/src/Breadcrumbs/Breadcrumbs.test.tsx +52 -1
- package/src/Breadcrumbs/index.ts +4 -0
- package/src/Button/Button.doc.mjs +0 -4
- package/src/Button/Button.test.tsx +16 -0
- package/src/Button/Button.tsx +6 -4
- package/src/Calendar/Calendar.test.tsx +170 -20
- package/src/Calendar/Calendar.tsx +73 -16
- package/src/Calendar/dayCellUtils.test.ts +18 -18
- package/src/Calendar/dayCellUtils.ts +2 -2
- package/src/Calendar/styles.ts +33 -39
- package/src/Card/Card.tsx +1 -1
- package/src/Carousel/Carousel.tsx +25 -6
- package/src/Chat/ChatComposer.doc.mjs +2 -2
- package/src/Chat/ChatComposerInput.doc.mjs +1 -1
- package/src/Chat/ChatComposerInput.tsx +2 -2
- package/src/Chat/ChatDictationButton.tsx +7 -1
- package/src/Chat/ChatLayout.tsx +4 -4
- package/src/Chat/ChatMessageBubble.tsx +15 -10
- package/src/Chat/ChatSystemMessage.test.tsx +5 -0
- package/src/Chat/ChatToolCalls.tsx +9 -2
- package/src/Chat/useTriggerMenu.tsx +1 -1
- package/src/CheckboxInput/CheckboxInput.doc.mjs +6 -0
- package/src/CheckboxInput/CheckboxInput.test.tsx +23 -0
- package/src/CheckboxInput/CheckboxInput.tsx +21 -6
- package/src/CheckboxList/CheckboxList.doc.mjs +6 -0
- package/src/CheckboxList/CheckboxList.test.tsx +94 -3
- package/src/CheckboxList/CheckboxListItem.tsx +17 -10
- package/src/Citation/Citation.doc.mjs +4 -3
- package/src/Citation/Citation.test.tsx +97 -0
- package/src/Citation/Citation.tsx +43 -11
- package/src/CodeBlock/CodeBlock.test.tsx +17 -0
- package/src/CodeBlock/CodeBlock.tsx +38 -11
- package/src/Collapsible/Collapsible.doc.mjs +1 -0
- package/src/Collapsible/Collapsible.test.tsx +7 -0
- package/src/Collapsible/Collapsible.tsx +16 -6
- package/src/CommandPalette/CommandPalette.test.tsx +95 -1
- package/src/CommandPalette/CommandPalette.tsx +41 -2
- package/src/CommandPalette/CommandPaletteItem.tsx +1 -1
- package/src/ContextMenu/ContextMenu.test.tsx +59 -2
- package/src/ContextMenu/ContextMenu.tsx +22 -11
- package/src/ContextMenu/index.ts +5 -0
- package/src/DateInput/DateInput.doc.mjs +25 -0
- package/src/DateInput/DateInput.test.tsx +230 -0
- package/src/DateInput/DateInput.tsx +51 -29
- package/src/DateRangeInput/DateRangeInput.doc.mjs +16 -0
- package/src/DateRangeInput/DateRangeInput.test.tsx +140 -0
- package/src/DateRangeInput/DateRangeInput.tsx +42 -30
- package/src/DateTimeInput/DateTimeInput.doc.mjs +22 -1
- package/src/DateTimeInput/DateTimeInput.test.tsx +112 -0
- package/src/DateTimeInput/DateTimeInput.tsx +44 -39
- package/src/Divider/Divider.test.tsx +32 -8
- package/src/Divider/Divider.tsx +14 -1
- package/src/DropdownMenu/DropdownMenu.test.tsx +60 -0
- package/src/DropdownMenu/DropdownMenu.tsx +31 -12
- package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +8 -2
- package/src/DropdownMenu/DropdownMenuItem.tsx +9 -3
- package/src/DropdownMenu/DropdownMenuRadioGroup.doc.mjs +4 -12
- package/src/DropdownMenu/DropdownMenuRadioGroup.tsx +9 -10
- package/src/DropdownMenu/DropdownMenuRadioItem.tsx +9 -3
- package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +20 -2
- package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +88 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +663 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +561 -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 +29 -15
- package/src/Field/Field.doc.mjs +4 -0
- package/src/Field/Field.tsx +14 -9
- package/src/Field/FieldLabel.test.tsx +25 -0
- package/src/Field/FieldLabel.tsx +12 -3
- package/src/Field/inputStyles.stylex.ts +2 -0
- package/src/FieldStatus/FieldStatus.doc.mjs +1 -0
- package/src/FieldStatus/FieldStatus.test.tsx +133 -0
- package/src/FieldStatus/FieldStatus.tsx +61 -4
- package/src/FileInput/FileInput.doc.mjs +23 -2
- package/src/FileInput/FileInput.test.tsx +104 -13
- package/src/FileInput/FileInput.tsx +106 -79
- package/src/Heading/Heading.tsx +2 -1
- package/src/HoverCard/useHoverCard.tsx +15 -3
- package/src/Icon/Icon.doc.mjs +13 -0
- package/src/Icon/Icon.test.tsx +89 -0
- package/src/Icon/Icon.tsx +51 -3
- package/src/Item/Item.doc.mjs +5 -0
- package/src/Item/Item.test.tsx +88 -0
- package/src/Item/Item.tsx +57 -11
- package/src/Layer/layerAnimations.stylex.ts +23 -0
- package/src/Lightbox/Lightbox.test.tsx +33 -0
- package/src/Lightbox/Lightbox.tsx +30 -10
- package/src/List/List.test.tsx +17 -29
- package/src/List/List.tsx +6 -1
- package/src/List/ListItem.doc.mjs +12 -0
- package/src/List/ListItem.tsx +13 -0
- package/src/Markdown/Markdown.test.tsx +21 -0
- package/src/Markdown/Markdown.tsx +4 -0
- package/src/MetadataList/MetadataList.test.tsx +24 -0
- package/src/MetadataList/MetadataList.tsx +6 -2
- package/src/MultiSelector/MultiSelector.doc.mjs +20 -0
- package/src/MultiSelector/MultiSelector.test.tsx +402 -0
- package/src/MultiSelector/MultiSelector.tsx +126 -64
- package/src/NavMenu/NavHeadingMenuItem.tsx +1 -1
- package/src/NumberInput/NumberInput.doc.mjs +21 -0
- package/src/NumberInput/NumberInput.test.tsx +71 -0
- package/src/NumberInput/NumberInput.tsx +35 -26
- package/src/Outline/Outline.test.tsx +12 -12
- package/src/Outline/Outline.tsx +2 -2
- package/src/Pagination/Pagination.tsx +11 -3
- package/src/PowerSearch/PowerSearch.doc.mjs +15 -0
- package/src/PowerSearch/PowerSearch.test.tsx +23 -0
- package/src/PowerSearch/PowerSearch.tsx +10 -1
- package/src/ProgressBar/ProgressBar.test.tsx +34 -0
- package/src/ProgressBar/ProgressBar.tsx +16 -1
- package/src/RadioList/RadioList.doc.mjs +6 -0
- package/src/RadioList/RadioList.test.tsx +26 -4
- package/src/RadioList/RadioList.tsx +2 -2
- package/src/RadioList/RadioListItem.tsx +12 -5
- package/src/Resizable/ResizeHandle.test.tsx +94 -0
- package/src/Resizable/ResizeHandle.tsx +70 -20
- package/src/SegmentedControl/SegmentedControl.test.tsx +28 -0
- package/src/SegmentedControl/SegmentedControlItem.tsx +22 -2
- package/src/Selector/Selector.doc.mjs +15 -0
- package/src/Selector/Selector.test.tsx +370 -0
- package/src/Selector/Selector.tsx +88 -20
- package/src/SideNav/SideNav.tsx +1 -8
- package/src/SideNav/SideNavCollapseButton.tsx +9 -7
- package/src/SideNav/SideNavItem.tsx +5 -3
- package/src/Skeleton/Skeleton.test.tsx +16 -0
- package/src/Skeleton/Skeleton.tsx +13 -1
- package/src/Slider/Slider.doc.mjs +6 -0
- package/src/Slider/Slider.test.tsx +240 -12
- package/src/Slider/Slider.tsx +96 -23
- package/src/Spinner/Spinner.test.tsx +10 -8
- package/src/Spinner/Spinner.tsx +15 -5
- package/src/Switch/Switch.doc.mjs +142 -42
- package/src/Switch/Switch.test.tsx +111 -0
- package/src/Switch/Switch.tsx +149 -32
- package/src/TabList/Tab.tsx +2 -2
- package/src/TabList/TabList.doc.mjs +0 -6
- package/src/TabList/TabList.test.tsx +3 -15
- package/src/TabList/TabList.tsx +6 -17
- package/src/TabList/TabListContext.ts +0 -6
- package/src/TabList/TabMenu.tsx +2 -2
- package/src/Table/BaseTable.tsx +34 -2
- package/src/Table/Table.doc.mjs +11 -0
- package/src/Table/Table.test.tsx +85 -0
- package/src/Table/TableCell.tsx +3 -3
- package/src/Table/TableHeaderCell.tsx +3 -3
- 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 +27 -18
- 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.tsx +17 -13
- package/src/Table/types.ts +33 -0
- package/src/Table/useTableRowStatus.doc.mjs +1 -1
- package/src/Text/Heading.doc.mjs +3 -3
- package/src/Text/Text.doc.mjs +1 -1
- package/src/Text/Text.test.tsx +42 -0
- package/src/Text/Text.tsx +25 -1
- package/src/Text/index.ts +2 -6
- package/src/TextArea/TextArea.doc.mjs +23 -2
- package/src/TextArea/TextArea.test.tsx +132 -4
- package/src/TextArea/TextArea.tsx +161 -67
- package/src/TextInput/TextInput.doc.mjs +21 -0
- package/src/TextInput/TextInput.test.tsx +150 -0
- package/src/TextInput/TextInput.tsx +28 -25
- package/src/Thumbnail/Thumbnail.doc.mjs +1 -1
- package/src/Thumbnail/Thumbnail.test.tsx +24 -1
- package/src/Thumbnail/Thumbnail.tsx +28 -35
- package/src/TimeInput/TimeInput.doc.mjs +21 -0
- package/src/TimeInput/TimeInput.test.tsx +23 -0
- package/src/TimeInput/TimeInput.tsx +24 -25
- package/src/Timestamp/Timestamp.doc.mjs +32 -6
- package/src/Timestamp/Timestamp.test.tsx +371 -0
- package/src/Timestamp/Timestamp.tsx +96 -93
- 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/ToastViewport.test.tsx +218 -8
- package/src/Toast/ToastViewport.tsx +71 -12
- package/src/ToggleButton/ToggleButton.test.tsx +24 -0
- package/src/ToggleButton/ToggleButton.tsx +19 -1
- package/src/Token/Token.test.tsx +166 -15
- package/src/Token/Token.tsx +104 -47
- package/src/Token/TokenLink.tsx +107 -0
- package/src/Token/index.ts +1 -1
- package/src/Tokenizer/Tokenizer.doc.mjs +23 -1
- package/src/Tokenizer/Tokenizer.test.tsx +23 -0
- package/src/Tokenizer/Tokenizer.tsx +14 -2
- package/src/Tooltip/Tooltip.test.tsx +46 -0
- package/src/Tooltip/useTooltip.tsx +20 -0
- package/src/TopNav/TopNav.test.tsx +93 -2
- package/src/TopNav/TopNavItem.doc.mjs +3 -3
- package/src/TopNav/TopNavItem.tsx +35 -6
- package/src/TopNav/TopNavMegaMenu.tsx +26 -2
- package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +1 -1
- package/src/TreeList/TreeList.doc.mjs +6 -0
- package/src/TreeList/TreeList.test.tsx +50 -10
- package/src/TreeList/TreeList.tsx +5 -0
- package/src/TreeList/TreeListBranches.tsx +8 -6
- package/src/TreeList/TreeListItem.tsx +33 -11
- package/src/Typeahead/BaseTypeahead.tsx +42 -15
- package/src/Typeahead/Typeahead.doc.mjs +13 -0
- package/src/Typeahead/Typeahead.test.tsx +112 -0
- package/src/Typeahead/Typeahead.tsx +17 -1
- package/src/Typeahead/TypeaheadItem.tsx +2 -1
- package/src/__tests__/babelPluginAddExtensions.test.ts +190 -0
- package/src/__tests__/forcedColors.ts +60 -0
- package/src/__tests__/inputWidthContract.test.tsx +62 -0
- package/src/doc-mjs.d.ts +19 -0
- package/src/hooks/containerReveal.pool.stylex.ts +464 -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/useContainerReveal.test.tsx +116 -0
- package/src/hooks/useContainerReveal.ts +180 -0
- package/src/hooks/useFocusTrap.test.tsx +104 -0
- package/src/hooks/useFocusTrap.ts +61 -12
- package/src/hooks/useGridFocus.doc.mjs +3 -3
- package/src/hooks/useGridFocus.test.tsx +41 -0
- package/src/hooks/useGridFocus.ts +21 -10
- package/src/hooks/useHotkeys.ts +9 -0
- package/src/hooks/useInputStatusIcon.test.tsx +221 -0
- package/src/hooks/useInputStatusIcon.tsx +235 -0
- package/src/hooks/useKeyboardHint.test.tsx +22 -0
- package/src/hooks/useKeyboardHint.tsx +6 -2
- package/src/hooks/useListFocus.doc.mjs +25 -3
- package/src/hooks/useListFocus.test.tsx +153 -1
- package/src/hooks/useListFocus.ts +102 -9
- package/src/i18n/InternationalizationContext.ts +4 -0
- 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/reset.css +0 -26
- package/src/reset.test.ts +60 -0
- package/src/theme/derivedVarRegistry.test.ts +1 -0
- package/src/theme/derivedVarRegistry.ts +6 -0
- package/src/theme/generateThemeRules.test.ts +42 -0
- package/src/theme/index.ts +4 -8
- package/src/theme/types.ts +43 -13
- 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 +27 -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/src/Thumbnail/thumbnail.markers.stylex.ts +0 -12
package/locales/pseudo.json
CHANGED
|
@@ -176,9 +176,18 @@
|
|
|
176
176
|
"@astryx.appShell.mobileNavigation": {
|
|
177
177
|
"defaultMessage": "⟦Ṁóƀíłé ñàṽíĝàţíóñ⟧"
|
|
178
178
|
},
|
|
179
|
+
"@astryx.avatar.nameWithStatus": {
|
|
180
|
+
"defaultMessage": "⟦{name}, {status}⟧"
|
|
181
|
+
},
|
|
179
182
|
"@astryx.avatarGroup.label": {
|
|
180
183
|
"defaultMessage": "⟦Àṽàţàřš⟧"
|
|
181
184
|
},
|
|
185
|
+
"@astryx.avatarGroup.keyboardHint": {
|
|
186
|
+
"defaultMessage": "⟦Úšé àřřóŵ ķéýš ţó ɱóṽé ƀéţŵééñ àṽàţàřš⟧"
|
|
187
|
+
},
|
|
188
|
+
"@astryx.avatarGroup.overflow": {
|
|
189
|
+
"defaultMessage": "⟦{count, number} ɱóřé⟧"
|
|
190
|
+
},
|
|
182
191
|
"@astryx.banner.dismiss": {
|
|
183
192
|
"defaultMessage": "⟦Ðíšɱíšš⟧"
|
|
184
193
|
},
|
|
@@ -188,6 +197,27 @@
|
|
|
188
197
|
"@astryx.calendar.nextMonth": {
|
|
189
198
|
"defaultMessage": "⟦Ñéẋţ ɱóñţĥ⟧"
|
|
190
199
|
},
|
|
200
|
+
"@astryx.calendar.daySelected": {
|
|
201
|
+
"defaultMessage": "⟦{date}, šéłéçţéð⟧"
|
|
202
|
+
},
|
|
203
|
+
"@astryx.calendar.dayRangeStart": {
|
|
204
|
+
"defaultMessage": "⟦{date}, řàñĝé šţàřţ⟧"
|
|
205
|
+
},
|
|
206
|
+
"@astryx.calendar.dayRangeEnd": {
|
|
207
|
+
"defaultMessage": "⟦{date}, řàñĝé éñð⟧"
|
|
208
|
+
},
|
|
209
|
+
"@astryx.calendar.dayRangeStartAndEnd": {
|
|
210
|
+
"defaultMessage": "⟦{date}, řàñĝé šţàřţ àñð řàñĝé éñð⟧"
|
|
211
|
+
},
|
|
212
|
+
"@astryx.calendar.dayInRange": {
|
|
213
|
+
"defaultMessage": "⟦{date}, íñ řàñĝé⟧"
|
|
214
|
+
},
|
|
215
|
+
"@astryx.calendar.rangeStartAnnounce": {
|
|
216
|
+
"defaultMessage": "⟦Šţàřţ ðàţé {date}. Šéłéçţ àñ éñð ðàţé.⟧"
|
|
217
|
+
},
|
|
218
|
+
"@astryx.calendar.rangeCompleteAnnounce": {
|
|
219
|
+
"defaultMessage": "⟦Šéłéçţéð řàñĝé: {start} ţó {end}.⟧"
|
|
220
|
+
},
|
|
191
221
|
"@astryx.carousel.label": {
|
|
192
222
|
"defaultMessage": "⟦Çàřóúšéł⟧"
|
|
193
223
|
},
|
|
@@ -230,6 +260,15 @@
|
|
|
230
260
|
"@astryx.commandPalette.emptyBootstrap": {
|
|
231
261
|
"defaultMessage": "⟦Ţýþé ţó šéàřçĥ⟧"
|
|
232
262
|
},
|
|
263
|
+
"@astryx.commandPalette.resultCount": {
|
|
264
|
+
"defaultMessage": "⟦{count, number} {count, plural, one {result} other {results}}⟧"
|
|
265
|
+
},
|
|
266
|
+
"@astryx.commandPalette.noResultsFor": {
|
|
267
|
+
"defaultMessage": "⟦Ñó řéšúłţš ƒóř {query}⟧"
|
|
268
|
+
},
|
|
269
|
+
"@astryx.commandPalette.loading": {
|
|
270
|
+
"defaultMessage": "⟦Łóàðíñĝ⟧"
|
|
271
|
+
},
|
|
233
272
|
"@astryx.dateRangeInput.presetDateRanges": {
|
|
234
273
|
"defaultMessage": "⟦Þřéšéţ ðàţé řàñĝéš⟧"
|
|
235
274
|
},
|
|
@@ -269,6 +308,9 @@
|
|
|
269
308
|
"@astryx.multiSelector.searchOptions": {
|
|
270
309
|
"defaultMessage": "⟦Šéàřçĥ óþţíóñš⟧"
|
|
271
310
|
},
|
|
311
|
+
"@astryx.multiSelector.selectAllPartiallySelected": {
|
|
312
|
+
"defaultMessage": "⟦{label}, þàřţíàłłý šéłéçţéð⟧"
|
|
313
|
+
},
|
|
272
314
|
"@astryx.popover.close": {
|
|
273
315
|
"defaultMessage": "⟦Çłóšé þóþóṽéř⟧"
|
|
274
316
|
},
|
|
@@ -476,12 +518,21 @@
|
|
|
476
518
|
"@astryx.banner.expand": {
|
|
477
519
|
"defaultMessage": "⟦Éẋþàñð⟧"
|
|
478
520
|
},
|
|
521
|
+
"@astryx.button.loading": {
|
|
522
|
+
"defaultMessage": "⟦Łóàðíñĝ⟧"
|
|
523
|
+
},
|
|
479
524
|
"@astryx.chatComposerDrawer.expand": {
|
|
480
525
|
"defaultMessage": "⟦Éẋþàñð {label}⟧"
|
|
481
526
|
},
|
|
482
527
|
"@astryx.chatComposerDrawer.collapse": {
|
|
483
528
|
"defaultMessage": "⟦Çółłàþšé {label}⟧"
|
|
484
529
|
},
|
|
530
|
+
"@astryx.chatDictationButton.startDictation": {
|
|
531
|
+
"defaultMessage": "⟦Šţàřţ ðíçţàţíóñ⟧"
|
|
532
|
+
},
|
|
533
|
+
"@astryx.chatDictationButton.stopDictation": {
|
|
534
|
+
"defaultMessage": "⟦Šţóþ ðíçţàţíóñ⟧"
|
|
535
|
+
},
|
|
485
536
|
"@astryx.chatLayout.newMessages": {
|
|
486
537
|
"defaultMessage": "⟦Ñéŵ ɱéššàĝéš⟧"
|
|
487
538
|
},
|
|
@@ -497,6 +548,12 @@
|
|
|
497
548
|
"@astryx.chatSendButton.send": {
|
|
498
549
|
"defaultMessage": "⟦Šéñð⟧"
|
|
499
550
|
},
|
|
551
|
+
"@astryx.chatToolCalls.error": {
|
|
552
|
+
"defaultMessage": "⟦Éřřóř: {message}⟧"
|
|
553
|
+
},
|
|
554
|
+
"@astryx.chatToolCalls.groupLabel": {
|
|
555
|
+
"defaultMessage": "⟦{count} ţóół çàłłš⟧"
|
|
556
|
+
},
|
|
500
557
|
"@astryx.chatTriggerMenu.suggestions": {
|
|
501
558
|
"defaultMessage": "⟦Šúĝĝéšţíóñš⟧"
|
|
502
559
|
},
|
|
@@ -512,21 +569,48 @@
|
|
|
512
569
|
"@astryx.codeBlock.code": {
|
|
513
570
|
"defaultMessage": "⟦Çóðé⟧"
|
|
514
571
|
},
|
|
572
|
+
"@astryx.field.optional": {
|
|
573
|
+
"defaultMessage": "⟦Óþţíóñàł⟧"
|
|
574
|
+
},
|
|
575
|
+
"@astryx.field.required": {
|
|
576
|
+
"defaultMessage": "⟦Řéɋúířéð⟧"
|
|
577
|
+
},
|
|
515
578
|
"@astryx.fileInput.clearLabel": {
|
|
516
579
|
"defaultMessage": "⟦Çłéàř {label}⟧"
|
|
517
580
|
},
|
|
581
|
+
"@astryx.fileInput.required": {
|
|
582
|
+
"defaultMessage": "⟦Řéɋúířéð⟧"
|
|
583
|
+
},
|
|
518
584
|
"@astryx.fileInput.triggerWithFiles": {
|
|
519
585
|
"defaultMessage": "⟦{label}, {fileNames}⟧"
|
|
520
586
|
},
|
|
587
|
+
"@astryx.keyboardHint.toNavigate": {
|
|
588
|
+
"defaultMessage": "⟦ţó ñàṽíĝàţé⟧"
|
|
589
|
+
},
|
|
521
590
|
"@astryx.lightbox.mediaViewer": {
|
|
522
591
|
"defaultMessage": "⟦Ṁéðíà ṽíéŵéř⟧"
|
|
523
592
|
},
|
|
593
|
+
"@astryx.metadataList.showMore": {
|
|
594
|
+
"defaultMessage": "⟦Šĥóŵ ɱóřé⟧"
|
|
595
|
+
},
|
|
596
|
+
"@astryx.metadataList.showLess": {
|
|
597
|
+
"defaultMessage": "⟦Šĥóŵ łéšš⟧"
|
|
598
|
+
},
|
|
524
599
|
"@astryx.mobileNav.navigation": {
|
|
525
600
|
"defaultMessage": "⟦Ñàṽíĝàţíóñ⟧"
|
|
526
601
|
},
|
|
527
602
|
"@astryx.multiSelector.clearAll": {
|
|
528
603
|
"defaultMessage": "⟦Çłéàř àłł {label}⟧"
|
|
529
604
|
},
|
|
605
|
+
"@astryx.input.statusButton.error": {
|
|
606
|
+
"defaultMessage": "⟦Éřřóř ðéţàíłš⟧"
|
|
607
|
+
},
|
|
608
|
+
"@astryx.input.statusButton.warning": {
|
|
609
|
+
"defaultMessage": "⟦Ŵàřñíñĝ ðéţàíłš⟧"
|
|
610
|
+
},
|
|
611
|
+
"@astryx.input.statusButton.success": {
|
|
612
|
+
"defaultMessage": "⟦Šúççéšš ðéţàíłš⟧"
|
|
613
|
+
},
|
|
530
614
|
"@astryx.numberInput.clearLabel": {
|
|
531
615
|
"defaultMessage": "⟦Çłéàř {label}⟧"
|
|
532
616
|
},
|
|
@@ -578,6 +662,12 @@
|
|
|
578
662
|
"@astryx.tableTree.expandAllRows": {
|
|
579
663
|
"defaultMessage": "⟦Éẋþàñð àłł řóŵš⟧"
|
|
580
664
|
},
|
|
665
|
+
"@astryx.textArea.charactersRemaining": {
|
|
666
|
+
"defaultMessage": "⟦{count, number} {count, plural, one {character} other {characters}} řéɱàíñíñĝ⟧"
|
|
667
|
+
},
|
|
668
|
+
"@astryx.textArea.charactersOverLimit": {
|
|
669
|
+
"defaultMessage": "⟦{count, number} {count, plural, one {character} other {characters}} óṽéř ţĥé łíɱíţ⟧"
|
|
670
|
+
},
|
|
581
671
|
"@astryx.textInput.clearLabel": {
|
|
582
672
|
"defaultMessage": "⟦Çłéàř {label}⟧"
|
|
583
673
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astryxdesign/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0-canary.068bda9",
|
|
4
4
|
"displayName": "Astryx Core",
|
|
5
5
|
"description": "The component library. Accessible, themeable React components with built-in spacing, dark mode, and StyleX styling.",
|
|
6
6
|
"author": "Meta Open Source",
|
|
@@ -54,6 +54,11 @@
|
|
|
54
54
|
"types": "./src/tailwind-theme.css.d.ts",
|
|
55
55
|
"default": "./src/tailwind-theme.css"
|
|
56
56
|
},
|
|
57
|
+
"./BaseProps": {
|
|
58
|
+
"source": "./src/BaseProps.ts",
|
|
59
|
+
"types": "./dist/BaseProps.d.ts",
|
|
60
|
+
"default": "./dist/BaseProps.js"
|
|
61
|
+
},
|
|
57
62
|
"./naming": {
|
|
58
63
|
"source": "./src/naming.ts",
|
|
59
64
|
"types": "./dist/naming.d.ts",
|
|
@@ -664,7 +669,7 @@
|
|
|
664
669
|
},
|
|
665
670
|
"scripts": {
|
|
666
671
|
"postinstall": "node scripts/postinstall.mjs",
|
|
667
|
-
"build": "rimraf dist && pnpm build:i18n && pnpm build:esm && tsc --project tsconfig.build.json && pnpm build:css && pnpm build:umd && node ../../scripts/check-no-dev-jsx.mjs",
|
|
672
|
+
"build": "rimraf dist && pnpm build:i18n && pnpm build:esm && tsc --project tsconfig.build.json && pnpm build:css && pnpm build:umd && node ../../scripts/check-no-dev-jsx.mjs && node ../../scripts/check-fully-specified.mjs",
|
|
668
673
|
"build:i18n": "node scripts/build-pseudo-locale.mjs",
|
|
669
674
|
"build:esm": "babel src --out-dir dist --extensions .ts,.tsx --out-file-extension .js --ignore \"**/*.test.ts,**/*.test.tsx,**/__tests__/**,**/*.perf.test.*,**/*.doc.mjs,**/*.d.ts,**/*.css,**/*.css.d.ts\" --config-file ./babel.config.json",
|
|
670
675
|
"build:css": "node ../../scripts/build-css.mjs",
|
|
@@ -32,6 +32,18 @@ export const docs = {
|
|
|
32
32
|
{className: 'astryx-avatar-status-dot', visualProps: ['variant']},
|
|
33
33
|
{className: 'astryx-avatar-status-dot-glyph', visualProps: ['shape']},
|
|
34
34
|
],
|
|
35
|
+
vars: [
|
|
36
|
+
{name: '--_avatar-fallback-font-size', description: 'Initials font size; default is proportional to the avatar size (size × 0.4). Override per size tier (e.g. size:sm) for a custom type scale.', default: 'calc(avatar-size × 0.4)', private: true},
|
|
37
|
+
{name: '--_avatar-fallback-font-weight', description: 'Initials font weight', default: 'var(--font-weight-medium)', private: true},
|
|
38
|
+
{name: '--_avatar-fallback-color', description: 'Fallback text and default-icon color', default: 'var(--color-text-secondary)', private: true},
|
|
39
|
+
{name: '--_avatar-fallback-background', description: 'Fallback wash background fill', default: 'var(--color-neutral)', private: true},
|
|
40
|
+
],
|
|
41
|
+
derived: [
|
|
42
|
+
{property: 'fontSize', vars: ['--_avatar-fallback-font-size']},
|
|
43
|
+
{property: 'fontWeight', vars: ['--_avatar-fallback-font-weight']},
|
|
44
|
+
{property: 'color', vars: ['--_avatar-fallback-color']},
|
|
45
|
+
{property: 'backgroundColor', vars: ['--_avatar-fallback-background']},
|
|
46
|
+
],
|
|
35
47
|
},
|
|
36
48
|
description: 'Displays a user avatar with image, initials fallback, and optional status indicator.',
|
|
37
49
|
props: [
|
|
@@ -64,7 +76,7 @@ export const docs = {
|
|
|
64
76
|
{
|
|
65
77
|
name: 'status',
|
|
66
78
|
type: 'ReactNode',
|
|
67
|
-
description: 'Corner content for status indicators.',
|
|
79
|
+
description: 'Corner content for status indicators. A string `label` on the element (as on AvatarStatusDot) is composed into the avatar\'s accessible name (e.g. "Jane Doe, Online") so screen readers announce the status.',
|
|
68
80
|
slotElements: [
|
|
69
81
|
{
|
|
70
82
|
__element: 'AvatarStatusDot',
|
|
@@ -79,9 +91,37 @@ export const docs = {
|
|
|
79
91
|
name: 'tooltip',
|
|
80
92
|
type: 'string | boolean',
|
|
81
93
|
description:
|
|
82
|
-
"Tooltip shown on hover and keyboard focus. Omitted or true shows the avatar's name; a string shows that text instead; false shows no tooltip. Not auto-disabled when wrapped in your own Tooltip/HoverCard
|
|
94
|
+
"Tooltip shown on hover and keyboard focus. Omitted or true shows the avatar's name; a string shows that text instead; false shows no tooltip. Not auto-disabled when wrapped in your own Tooltip/HoverCard. Set tooltip={false} if you supply your own overlay. No tooltip is shown when tooltip is true/omitted and there is no name.",
|
|
83
95
|
default: 'true',
|
|
84
96
|
},
|
|
97
|
+
{
|
|
98
|
+
name: 'href',
|
|
99
|
+
type: 'string',
|
|
100
|
+
description:
|
|
101
|
+
'When set, the avatar renders as an interactive link (`<a>` or a custom link component) pointing here. This follows the same element-swap rule as Button. Requires a meaningful accessible name via `alt` or `name`. Inside an AvatarGroup, interactive avatars share a single Tab stop and are reached with arrow keys.',
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: 'as',
|
|
105
|
+
type: 'ElementType',
|
|
106
|
+
description:
|
|
107
|
+
'Custom link component used when `href` is set (e.g. Next.js `Link`). Overrides the provider-level LinkProvider default. Only applies with `href`.',
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
name: 'target',
|
|
111
|
+
type: 'string',
|
|
112
|
+
description: 'Link target attribute. Only applies with `href`.',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: 'rel',
|
|
116
|
+
type: 'string',
|
|
117
|
+
description: 'Link rel attribute. Only applies with `href`.',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
name: 'onClick',
|
|
121
|
+
type: '(e: MouseEvent) => void',
|
|
122
|
+
description:
|
|
123
|
+
'Click handler. When set without `href`, the avatar renders as a focusable `<button type="button">`. Requires a meaningful accessible name via `alt` or `name`.',
|
|
124
|
+
},
|
|
85
125
|
],
|
|
86
126
|
components: [
|
|
87
127
|
{name: 'AvatarStatusDot'},
|
|
@@ -112,6 +152,7 @@ export const docsDense = {
|
|
|
112
152
|
{guidance: true, description: 'Always pass a name for initials fallback and screen reader alt text.'},
|
|
113
153
|
{guidance: true, description: 'Match size to context: xsm/sm inline, md/lg in lists, xl for profiles.'},
|
|
114
154
|
{guidance: true, description: 'Add a status dot in chat or team views where availability matters.'},
|
|
155
|
+
{guidance: true, description: 'When wrapping Avatar in your own Tooltip or HoverCard, set tooltip={false} so the built-in name tooltip does not overlap yours.'},
|
|
115
156
|
{guidance: false, description: 'Use for logos or product images. Use an image or icon instead.'},
|
|
116
157
|
{guidance: false, description: 'Force a square or custom shape. Avatars are always circular.'},
|
|
117
158
|
],
|
|
@@ -122,9 +163,15 @@ export const docsDense = {
|
|
|
122
163
|
name: 'user name for initials and alt text',
|
|
123
164
|
alt: 'alt text; falls back to name',
|
|
124
165
|
size: "avatar size. Named ('xsm' 20px, 'sm' 24px, 'md' 36px, 'lg' 48px, 'xl' 128px) or numeric px.",
|
|
125
|
-
status:
|
|
166
|
+
status:
|
|
167
|
+
'corner content for status indicators; its `label` is composed into the avatar accessible name ("Jane Doe, Online")',
|
|
126
168
|
tooltip:
|
|
127
169
|
"hover/focus tooltip. true/omitted → name; string → that text; false → none. Owns its tooltip; set false when wrapping in your own Tooltip/HoverCard. Default true.",
|
|
170
|
+
href: 'renders avatar as a link (<a>/custom). Needs alt/name. Button-style element swap.',
|
|
171
|
+
as: 'custom link component for href (e.g. Next Link). Only with href.',
|
|
172
|
+
target: 'link target. Only with href.',
|
|
173
|
+
rel: 'link rel. Only with href.',
|
|
174
|
+
onClick: 'click handler → renders <button> when no href. Needs alt/name.',
|
|
128
175
|
},
|
|
129
176
|
components: [
|
|
130
177
|
{name: 'AvatarStatusDot', description: 'size-aware status indicator rendered in the Avatar corner'},
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
import {describe, it, expect, beforeEach, afterEach, vi} from 'vitest';
|
|
4
4
|
import {render, screen, fireEvent} from '@testing-library/react';
|
|
5
|
+
import userEvent from '@testing-library/user-event';
|
|
5
6
|
import {Avatar} from './Avatar';
|
|
7
|
+
import {AvatarStatusDot} from './AvatarStatusDot';
|
|
6
8
|
|
|
7
9
|
describe('Avatar', () => {
|
|
8
10
|
it('exposes role="img" with the name as accessible name', () => {
|
|
@@ -35,6 +37,19 @@ describe('Avatar', () => {
|
|
|
35
37
|
expect(innerImg).toHaveAttribute('alt', '');
|
|
36
38
|
});
|
|
37
39
|
|
|
40
|
+
it('renders fallback initials through the themeable font-size var, not a bare px literal', () => {
|
|
41
|
+
render(<Avatar name="Ada Lovelace" size="sm" data-testid="a" />);
|
|
42
|
+
const initials = screen.getByText('AL');
|
|
43
|
+
// The seam: the dynamic font size resolves to the Avatar-scoped var (with
|
|
44
|
+
// the proportional `size × 0.4` default baked in as the fallback), so a
|
|
45
|
+
// theme can re-scope it per size. A regression to a bare px literal would
|
|
46
|
+
// break theming.
|
|
47
|
+
const style = initials.getAttribute('style') ?? '';
|
|
48
|
+
expect(style).toContain('var(--_avatar-fallback-font-size,');
|
|
49
|
+
// Default still reproduces the proportional scale (sm = 24 × 0.4 = 9.6px).
|
|
50
|
+
expect(style).toMatch(/var\(--_avatar-fallback-font-size,\s*9\.6\d*px\)/);
|
|
51
|
+
});
|
|
52
|
+
|
|
38
53
|
it('retries a new src after a previous src failed to load', () => {
|
|
39
54
|
const {rerender} = render(
|
|
40
55
|
<Avatar name="Ada" src="https://example.com/broken.jpg" />,
|
|
@@ -52,6 +67,98 @@ describe('Avatar', () => {
|
|
|
52
67
|
expect(img).toHaveAttribute('src', 'https://example.com/ada.jpg');
|
|
53
68
|
});
|
|
54
69
|
|
|
70
|
+
describe('status in the accessible name (WCAG 4.1.2)', () => {
|
|
71
|
+
// The avatar root is role="img", which prunes descendant semantics —
|
|
72
|
+
// a label inside the status subtree is never announced on its own.
|
|
73
|
+
// Avatar composes the status element's `label` into its own name.
|
|
74
|
+
it('composes the status label into the accessible name for image avatars', () => {
|
|
75
|
+
render(
|
|
76
|
+
<Avatar
|
|
77
|
+
name="Ada Lovelace"
|
|
78
|
+
src="https://example.com/ada.jpg"
|
|
79
|
+
status={<AvatarStatusDot variant="success" label="Online" />}
|
|
80
|
+
/>,
|
|
81
|
+
);
|
|
82
|
+
expect(
|
|
83
|
+
screen.getByRole('img', {name: 'Ada Lovelace, Online'}),
|
|
84
|
+
).toBeInTheDocument();
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
it('composes the status label into the accessible name for initials avatars', () => {
|
|
88
|
+
render(
|
|
89
|
+
<Avatar
|
|
90
|
+
name="Ada Lovelace"
|
|
91
|
+
status={<AvatarStatusDot variant="error" label="Busy" />}
|
|
92
|
+
/>,
|
|
93
|
+
);
|
|
94
|
+
const avatar = screen.getByRole('img', {name: 'Ada Lovelace, Busy'});
|
|
95
|
+
expect(avatar).toBeInTheDocument();
|
|
96
|
+
expect(avatar).toHaveTextContent('AL');
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
it('composes the status label with alt when alt overrides name', () => {
|
|
100
|
+
render(
|
|
101
|
+
<Avatar
|
|
102
|
+
name="Ada"
|
|
103
|
+
alt="Ada Lovelace, profile photo"
|
|
104
|
+
status={<AvatarStatusDot label="Online" />}
|
|
105
|
+
/>,
|
|
106
|
+
);
|
|
107
|
+
expect(
|
|
108
|
+
screen.getByRole('img', {name: 'Ada Lovelace, profile photo, Online'}),
|
|
109
|
+
).toBeInTheDocument();
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
it('keeps the plain name when there is no status', () => {
|
|
113
|
+
render(<Avatar name="Ada Lovelace" data-testid="a" />);
|
|
114
|
+
expect(screen.getByTestId('a')).toHaveAttribute(
|
|
115
|
+
'aria-label',
|
|
116
|
+
'Ada Lovelace',
|
|
117
|
+
);
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
it('keeps the plain name when the status dot has no label', () => {
|
|
121
|
+
render(
|
|
122
|
+
<Avatar
|
|
123
|
+
name="Ada Lovelace"
|
|
124
|
+
data-testid="a"
|
|
125
|
+
status={<AvatarStatusDot variant="success" />}
|
|
126
|
+
/>,
|
|
127
|
+
);
|
|
128
|
+
expect(screen.getByTestId('a')).toHaveAttribute(
|
|
129
|
+
'aria-label',
|
|
130
|
+
'Ada Lovelace',
|
|
131
|
+
);
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
it('keeps the plain name for custom status nodes without a label prop', () => {
|
|
135
|
+
render(<Avatar name="Ada Lovelace" data-testid="a" status={<span />} />);
|
|
136
|
+
expect(screen.getByTestId('a')).toHaveAttribute(
|
|
137
|
+
'aria-label',
|
|
138
|
+
'Ada Lovelace',
|
|
139
|
+
);
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
it('announces a labelled status even on an otherwise decorative avatar', () => {
|
|
143
|
+
// A labelled status is meaningful information on its own — the avatar
|
|
144
|
+
// must not stay aria-hidden and swallow it.
|
|
145
|
+
render(
|
|
146
|
+
<Avatar data-testid="a" status={<AvatarStatusDot label="Online" />} />,
|
|
147
|
+
);
|
|
148
|
+
const el = screen.getByTestId('a');
|
|
149
|
+
expect(el).toHaveAttribute('role', 'img');
|
|
150
|
+
expect(el).toHaveAttribute('aria-label', 'Online');
|
|
151
|
+
expect(el).not.toHaveAttribute('aria-hidden');
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
it('stays decorative with an unlabelled status and no name', () => {
|
|
155
|
+
render(<Avatar data-testid="a" status={<AvatarStatusDot />} />);
|
|
156
|
+
const el = screen.getByTestId('a');
|
|
157
|
+
expect(el).toHaveAttribute('aria-hidden', 'true');
|
|
158
|
+
expect(el).not.toHaveAttribute('aria-label');
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
|
|
55
162
|
it('retries a new fallbackSrc after a previous fallbackSrc failed to load', () => {
|
|
56
163
|
const {rerender} = render(
|
|
57
164
|
<Avatar name="Ada" fallbackSrc="https://example.com/broken.jpg" />,
|
|
@@ -221,3 +328,114 @@ describe('Avatar', () => {
|
|
|
221
328
|
});
|
|
222
329
|
});
|
|
223
330
|
});
|
|
331
|
+
|
|
332
|
+
describe('Avatar — interactivity (Button trichotomy)', () => {
|
|
333
|
+
afterEach(() => {
|
|
334
|
+
vi.restoreAllMocks();
|
|
335
|
+
});
|
|
336
|
+
|
|
337
|
+
it('renders a link when `href` is set (default LinkComponent is <a>)', () => {
|
|
338
|
+
render(<Avatar name="Ada Lovelace" href="/users/ada" />);
|
|
339
|
+
const link = screen.getByRole('link', {name: 'Ada Lovelace'});
|
|
340
|
+
expect(link.tagName).toBe('A');
|
|
341
|
+
expect(link).toHaveAttribute('href', '/users/ada');
|
|
342
|
+
// The static img semantics are gone — it's a control now.
|
|
343
|
+
expect(screen.queryByRole('img')).not.toBeInTheDocument();
|
|
344
|
+
});
|
|
345
|
+
|
|
346
|
+
it('forwards target/rel on the link', () => {
|
|
347
|
+
render(
|
|
348
|
+
<Avatar
|
|
349
|
+
name="Ada"
|
|
350
|
+
href="https://example.com"
|
|
351
|
+
target="_blank"
|
|
352
|
+
rel="noopener noreferrer"
|
|
353
|
+
/>,
|
|
354
|
+
);
|
|
355
|
+
const link = screen.getByRole('link', {name: 'Ada'});
|
|
356
|
+
expect(link).toHaveAttribute('target', '_blank');
|
|
357
|
+
expect(link).toHaveAttribute('rel', 'noopener noreferrer');
|
|
358
|
+
});
|
|
359
|
+
|
|
360
|
+
it('renders a <button type="button"> when `onClick` is set (no href)', async () => {
|
|
361
|
+
const user = userEvent.setup();
|
|
362
|
+
const handleClick = vi.fn();
|
|
363
|
+
render(<Avatar name="Ada" onClick={handleClick} />);
|
|
364
|
+
const button = screen.getByRole('button', {name: 'Ada'});
|
|
365
|
+
expect(button.tagName).toBe('BUTTON');
|
|
366
|
+
expect(button).toHaveAttribute('type', 'button');
|
|
367
|
+
await user.click(button);
|
|
368
|
+
expect(handleClick).toHaveBeenCalledOnce();
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
it('href wins over onClick (link, not button)', () => {
|
|
372
|
+
render(<Avatar name="Ada" href="/ada" onClick={() => {}} />);
|
|
373
|
+
expect(screen.getByRole('link', {name: 'Ada'})).toBeInTheDocument();
|
|
374
|
+
expect(screen.queryByRole('button')).not.toBeInTheDocument();
|
|
375
|
+
});
|
|
376
|
+
|
|
377
|
+
it('stays a static element (no href, no onClick) — non-breaking default', () => {
|
|
378
|
+
render(<Avatar name="Ada" />);
|
|
379
|
+
expect(screen.getByRole('img', {name: 'Ada'})).toBeInTheDocument();
|
|
380
|
+
expect(screen.queryByRole('link')).not.toBeInTheDocument();
|
|
381
|
+
expect(screen.queryByRole('button')).not.toBeInTheDocument();
|
|
382
|
+
});
|
|
383
|
+
|
|
384
|
+
it('stamps the data-avatar-item marker on the interactive link', () => {
|
|
385
|
+
render(<Avatar name="Ada" href="/ada" />);
|
|
386
|
+
expect(screen.getByRole('link', {name: 'Ada'})).toHaveAttribute(
|
|
387
|
+
'data-avatar-item',
|
|
388
|
+
);
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
it('stamps the data-avatar-item marker on the interactive button', () => {
|
|
392
|
+
render(<Avatar name="Ada" onClick={() => {}} />);
|
|
393
|
+
expect(screen.getByRole('button', {name: 'Ada'})).toHaveAttribute(
|
|
394
|
+
'data-avatar-item',
|
|
395
|
+
);
|
|
396
|
+
});
|
|
397
|
+
|
|
398
|
+
it('does not stamp data-avatar-item on a static avatar', () => {
|
|
399
|
+
render(<Avatar name="Ada" data-testid="a" />);
|
|
400
|
+
expect(screen.getByTestId('a')).not.toHaveAttribute('data-avatar-item');
|
|
401
|
+
});
|
|
402
|
+
|
|
403
|
+
it('carries a focus-visible ring class on the interactive element', () => {
|
|
404
|
+
// The interactive element applies the shared focus-visible accent ring via
|
|
405
|
+
// its StyleX class. We assert the element is focusable and receives focus.
|
|
406
|
+
render(<Avatar name="Ada" onClick={() => {}} />);
|
|
407
|
+
const button = screen.getByRole('button', {name: 'Ada'});
|
|
408
|
+
button.focus();
|
|
409
|
+
expect(button).toHaveFocus();
|
|
410
|
+
// className carries the avatar theming target so themes can style it.
|
|
411
|
+
expect(button.className).toContain('astryx-avatar');
|
|
412
|
+
});
|
|
413
|
+
|
|
414
|
+
it('warns in dev when interactive without an accessible name (href)', () => {
|
|
415
|
+
const warn = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
|
416
|
+
render(<Avatar href="/somewhere" />);
|
|
417
|
+
expect(warn).toHaveBeenCalledWith(
|
|
418
|
+
expect.stringContaining('interactive avatar'),
|
|
419
|
+
);
|
|
420
|
+
});
|
|
421
|
+
|
|
422
|
+
it('warns in dev when interactive without an accessible name (onClick)', () => {
|
|
423
|
+
const warn = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
|
424
|
+
render(<Avatar onClick={() => {}} />);
|
|
425
|
+
expect(warn).toHaveBeenCalledWith(
|
|
426
|
+
expect.stringContaining('interactive avatar'),
|
|
427
|
+
);
|
|
428
|
+
});
|
|
429
|
+
|
|
430
|
+
it('does not warn when interactive with a name', () => {
|
|
431
|
+
const warn = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
|
432
|
+
render(<Avatar name="Ada" href="/ada" />);
|
|
433
|
+
expect(warn).not.toHaveBeenCalled();
|
|
434
|
+
});
|
|
435
|
+
|
|
436
|
+
it('does not warn for a static avatar without a name (decorative is fine)', () => {
|
|
437
|
+
const warn = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
|
438
|
+
render(<Avatar data-testid="a" />);
|
|
439
|
+
expect(warn).not.toHaveBeenCalled();
|
|
440
|
+
});
|
|
441
|
+
});
|