@astryxdesign/core 0.1.4-canary.ff77e1c → 0.1.4
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/dist/AlertDialog/AlertDialog.d.ts +1 -1
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +18 -20
- package/dist/AlertDialog/useImperativeAlertDialog.js +3 -3
- package/dist/AppShell/AppShell.d.ts +1 -1
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +53 -55
- package/dist/AspectRatio/AspectRatio.d.ts +10 -48
- package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
- package/dist/AspectRatio/AspectRatio.js +12 -33
- package/dist/AspectRatio/index.d.ts +1 -1
- package/dist/AspectRatio/index.d.ts.map +1 -1
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +25 -27
- package/dist/Avatar/AvatarStatusDot.js +5 -5
- package/dist/AvatarGroup/AvatarGroup.js +5 -5
- package/dist/AvatarGroup/AvatarGroupOverflow.js +5 -5
- package/dist/Badge/Badge.js +3 -3
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +25 -32
- package/dist/Blockquote/Blockquote.js +7 -7
- package/dist/Breadcrumbs/BreadcrumbItem.js +17 -17
- package/dist/Breadcrumbs/Breadcrumbs.js +7 -7
- package/dist/Button/Button.js +19 -19
- package/dist/ButtonGroup/ButtonGroup.js +7 -7
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +48 -68
- package/dist/Calendar/dayCellUtils.d.ts.map +1 -1
- package/dist/Calendar/styles.d.ts +2 -2
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +2 -2
- package/dist/Card/Card.d.ts +2 -4
- package/dist/Card/Card.d.ts.map +1 -1
- package/dist/Card/Card.js +10 -18
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +21 -24
- package/dist/Carousel/carousel.markers.stylex.d.ts +7 -0
- package/dist/Carousel/carousel.markers.stylex.d.ts.map +1 -0
- package/dist/Carousel/carousel.markers.stylex.js +12 -0
- package/dist/Center/Center.js +3 -3
- package/dist/Chat/ChatComposer.js +23 -23
- package/dist/Chat/ChatComposerDrawer.js +14 -14
- package/dist/Chat/ChatComposerInput.d.ts +1 -1
- package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +15 -27
- package/dist/Chat/ChatDictationButton.d.ts +1 -1
- package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
- package/dist/Chat/ChatDictationButton.js +11 -13
- package/dist/Chat/ChatLayout.js +17 -17
- package/dist/Chat/ChatLayoutScrollButton.d.ts +1 -1
- package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
- package/dist/Chat/ChatLayoutScrollButton.js +10 -12
- package/dist/Chat/ChatMessage.js +12 -12
- package/dist/Chat/ChatMessageBubble.js +7 -7
- package/dist/Chat/ChatMessageList.js +14 -14
- package/dist/Chat/ChatMessageMetadata.d.ts +1 -1
- package/dist/Chat/ChatMessageMetadata.d.ts.map +1 -1
- package/dist/Chat/ChatMessageMetadata.js +12 -14
- package/dist/Chat/ChatPastedTextToken.js +13 -13
- package/dist/Chat/ChatSendButton.js +3 -3
- package/dist/Chat/ChatSystemMessage.d.ts +1 -1
- package/dist/Chat/ChatSystemMessage.d.ts.map +1 -1
- package/dist/Chat/ChatSystemMessage.js +17 -17
- package/dist/Chat/ChatTokenizedText.d.ts +1 -1
- package/dist/Chat/ChatTokenizedText.d.ts.map +1 -1
- package/dist/Chat/ChatTokenizedText.js +15 -24
- package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
- package/dist/Chat/ChatToolCalls.js +74 -81
- package/dist/Chat/index.d.ts +1 -1
- package/dist/Chat/index.d.ts.map +1 -1
- package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
- package/dist/Chat/useTriggerMenu.js +15 -15
- package/dist/CheckboxInput/CheckboxInput.d.ts +1 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +23 -25
- package/dist/CheckboxList/CheckboxList.js +9 -9
- package/dist/CheckboxList/CheckboxListItem.d.ts +1 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +6 -8
- package/dist/Citation/Citation.js +10 -10
- package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
- package/dist/ClickableCard/ClickableCard.js +9 -32
- package/dist/Code/Code.js +3 -3
- package/dist/CodeBlock/CodeBlock.d.ts +1 -10
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +52 -88
- package/dist/Collapsible/Collapsible.d.ts +3 -9
- package/dist/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible/Collapsible.js +22 -110
- package/dist/Collapsible/CollapsibleGroup.d.ts +7 -39
- package/dist/Collapsible/CollapsibleGroup.d.ts.map +1 -1
- package/dist/Collapsible/CollapsibleGroup.js +12 -73
- package/dist/Collapsible/CollapsibleGroupContext.d.ts +0 -31
- package/dist/Collapsible/CollapsibleGroupContext.d.ts.map +1 -1
- package/dist/Collapsible/CollapsibleGroupContext.js +3 -33
- package/dist/Collapsible/index.d.ts +0 -1
- package/dist/Collapsible/index.d.ts.map +1 -1
- package/dist/Collapsible/useCollapsible.d.ts +1 -4
- package/dist/Collapsible/useCollapsible.d.ts.map +1 -1
- package/dist/Collapsible/useCollapsible.js +6 -20
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +34 -36
- package/dist/CommandPalette/CommandPaletteEmpty.js +3 -3
- package/dist/CommandPalette/CommandPaletteFooter.js +16 -16
- package/dist/CommandPalette/CommandPaletteGroup.js +5 -5
- package/dist/CommandPalette/CommandPaletteInput.js +13 -13
- package/dist/CommandPalette/CommandPaletteItem.js +3 -3
- package/dist/CommandPalette/CommandPaletteList.js +3 -3
- package/dist/ContextMenu/ContextMenu.d.ts +2 -7
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +43 -76
- package/dist/DateInput/DateInput.js +18 -18
- package/dist/DateRangeInput/DateRangeInput.js +21 -21
- package/dist/DateTimeInput/DateTimeInput.d.ts +2 -5
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +26 -30
- package/dist/DateTimeInput/index.d.ts +1 -1
- package/dist/DateTimeInput/index.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +9 -9
- package/dist/Dialog/DialogHeader.js +16 -16
- package/dist/Dialog/useImperativeDialog.js +3 -3
- package/dist/Divider/Divider.js +7 -7
- package/dist/DropdownMenu/DropdownMenu.js +10 -10
- package/dist/DropdownMenu/DropdownMenuItem.d.ts +17 -2
- package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuItem.js +3 -3
- package/dist/DropdownMenu/renderDropdownItems.js +10 -10
- package/dist/EmptyState/EmptyState.js +9 -9
- package/dist/Field/Field.js +17 -17
- package/dist/Field/FieldLabel.js +15 -15
- package/dist/Field/InputClearButton.js +5 -5
- package/dist/FieldStatus/FieldStatus.js +3 -3
- package/dist/FileInput/FileInput.js +29 -29
- package/dist/FormLayout/FormLayout.js +5 -5
- package/dist/Grid/Grid.d.ts +3 -4
- package/dist/Grid/Grid.d.ts.map +1 -1
- package/dist/Grid/Grid.js +12 -29
- package/dist/Grid/GridSpan.js +3 -3
- package/dist/HStack/HStack.js +3 -3
- package/dist/Heading/Heading.js +10 -10
- package/dist/HoverCard/HoverCard.js +9 -9
- package/dist/HoverCard/useHoverCard.d.ts +1 -5
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +3 -3
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +12 -16
- package/dist/Icon/defaultIcons.js +116 -116
- package/dist/IconButton/IconButton.js +3 -3
- package/dist/InputGroup/InputGroup.js +11 -11
- package/dist/InputGroup/InputGroupText.js +3 -3
- package/dist/Item/Item.js +18 -18
- package/dist/Kbd/Kbd.js +5 -5
- package/dist/Layer/LayerProvider.js +7 -7
- package/dist/Layer/useLayer.d.ts +2 -29
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +31 -44
- package/dist/Layout/Layout.js +21 -21
- package/dist/Layout/LayoutContent.js +3 -3
- package/dist/Layout/LayoutFooter.js +5 -5
- package/dist/Layout/LayoutHeader.js +5 -5
- package/dist/Layout/LayoutPanel.js +3 -3
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +31 -55
- package/dist/Lightbox/useLightbox.js +3 -3
- package/dist/Link/Link.js +15 -15
- package/dist/Link/LinkProvider.js +3 -3
- package/dist/Link/useLinkify.js +3 -3
- package/dist/List/List.js +11 -11
- package/dist/List/ListItem.js +11 -11
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +102 -102
- package/dist/MetadataList/MetadataList.js +10 -10
- package/dist/MetadataList/MetadataListItem.js +15 -15
- package/dist/MobileNav/MobileNav.d.ts +1 -1
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +23 -26
- package/dist/MobileNav/MobileNavToggle.js +5 -5
- package/dist/MoreMenu/MoreMenu.js +3 -3
- package/dist/MultiSelector/MultiSelector.js +56 -56
- package/dist/NavIcon/NavIcon.js +3 -3
- package/dist/NavMenu/NavHeadingMenu.js +5 -5
- package/dist/NavMenu/NavHeadingMenuItem.js +8 -8
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +32 -48
- package/dist/Outline/Outline.js +15 -15
- package/dist/OverflowList/OverflowList.js +8 -8
- package/dist/Overlay/Overlay.js +3 -3
- package/dist/Overlay/OverlayScrim.js +5 -5
- package/dist/Overlay/useOverlay.js +3 -3
- package/dist/Pagination/Pagination.d.ts +1 -1
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +72 -125
- package/dist/Popover/Popover.js +16 -16
- package/dist/Popover/usePopover.js +7 -7
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +92 -110
- package/dist/PowerSearch/PowerSearchEditPopover.js +84 -84
- package/dist/PowerSearch/PowerSearchFilterEditor.js +3 -3
- package/dist/PowerSearch/PowerSearchToken.js +5 -5
- package/dist/PowerSearch/PowerSearchValueEditor.js +54 -54
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +18 -25
- package/dist/RadioList/RadioList.js +7 -7
- package/dist/RadioList/RadioListItem.d.ts +1 -1
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +21 -24
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +10 -28
- package/dist/Section/Section.js +5 -5
- package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControl.js +10 -32
- package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +12 -18
- package/dist/SelectableCard/SelectableCard.js +5 -5
- package/dist/Selector/Selector.js +46 -46
- package/dist/Selector/SelectorOption.js +3 -3
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +34 -38
- package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseButton.js +6 -8
- package/dist/SideNav/SideNavHeading.js +87 -87
- package/dist/SideNav/SideNavItem.js +42 -42
- package/dist/SideNav/SideNavSection.d.ts +1 -1
- package/dist/SideNav/SideNavSection.d.ts.map +1 -1
- package/dist/SideNav/SideNavSection.js +16 -18
- package/dist/Skeleton/Skeleton.js +3 -3
- package/dist/Slider/Slider.js +23 -23
- package/dist/Spinner/Spinner.js +9 -9
- package/dist/StatusDot/StatusDot.js +5 -5
- package/dist/Switch/Switch.d.ts +4 -8
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +29 -34
- package/dist/TabList/Tab.js +18 -18
- package/dist/TabList/TabList.js +5 -5
- package/dist/TabList/TabMenu.d.ts.map +1 -1
- package/dist/TabList/TabMenu.js +30 -57
- package/dist/TabList/tab.markers.stylex.d.ts +1 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +39 -50
- package/dist/Table/Table.js +7 -7
- package/dist/Table/TableBody.d.ts +1 -1
- package/dist/Table/TableBody.d.ts.map +1 -1
- package/dist/Table/TableBody.js +5 -9
- package/dist/Table/TableCell.js +3 -3
- package/dist/Table/TableFooter.d.ts +1 -1
- package/dist/Table/TableFooter.d.ts.map +1 -1
- package/dist/Table/TableFooter.js +5 -9
- package/dist/Table/TableHeader.d.ts +1 -1
- package/dist/Table/TableHeader.d.ts.map +1 -1
- package/dist/Table/TableHeader.js +5 -9
- package/dist/Table/TableHeaderCell.js +3 -3
- package/dist/Table/TableRow.js +5 -5
- package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
- package/dist/Table/plugins/columnResize/useTableColumnResize.js +11 -14
- package/dist/Table/plugins/filtering/useTableFiltering.js +71 -71
- package/dist/Table/plugins/pagination/paginateData.d.ts.map +1 -1
- package/dist/Table/plugins/pagination/paginateData.js +1 -5
- package/dist/Table/plugins/pagination/useTablePagination.js +7 -7
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +22 -22
- package/dist/Table/plugins/selection/useTableSelection.js +18 -18
- package/dist/Table/plugins/selection/useTableSelectionState.d.ts.map +1 -1
- package/dist/Table/plugins/selection/useTableSelectionState.js +1 -11
- package/dist/Table/plugins/sortable/useTableSortable.js +17 -17
- package/dist/Table/plugins/sortable/useTableSortableState.d.ts.map +1 -1
- package/dist/Table/plugins/sortable/useTableSortableState.js +4 -8
- package/dist/Table/tableContextMenu.js +9 -9
- package/dist/Text/Text.js +10 -10
- package/dist/TextArea/TextArea.js +14 -14
- package/dist/TextInput/TextInput.js +15 -15
- package/dist/Thumbnail/Thumbnail.d.ts +2 -3
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +29 -30
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +21 -26
- package/dist/Timestamp/Timestamp.d.ts +1 -1
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +26 -37
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +17 -25
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +11 -23
- package/dist/Toast/useToast.d.ts.map +1 -1
- package/dist/Toast/useToast.js +4 -44
- package/dist/ToggleButton/ToggleButton.js +12 -12
- package/dist/ToggleButton/ToggleButtonGroup.js +5 -5
- package/dist/Token/Token.js +21 -21
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +34 -36
- package/dist/Toolbar/Toolbar.js +18 -18
- package/dist/Tooltip/Tooltip.js +11 -11
- package/dist/Tooltip/useTooltip.d.ts +1 -5
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +3 -3
- package/dist/TopNav/TopNav.js +32 -32
- package/dist/TopNav/TopNavHeading.js +67 -67
- package/dist/TopNav/TopNavItem.js +5 -5
- package/dist/TopNav/TopNavMegaMenu.js +30 -30
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +14 -25
- package/dist/TopNav/TopNavMegaMenuItem.js +16 -16
- package/dist/TopNav/TopNavMenu.js +32 -32
- package/dist/TreeList/TreeList.js +8 -8
- package/dist/TreeList/TreeListBranches.js +11 -11
- package/dist/TreeList/TreeListItem.js +30 -30
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +20 -23
- package/dist/Typeahead/Typeahead.js +12 -12
- package/dist/Typeahead/TypeaheadItem.js +10 -10
- package/dist/VStack/VStack.js +3 -3
- package/dist/astryx.css +0 -7
- package/dist/astryx.umd.js +59 -59
- package/dist/astryx.umd.js.map +4 -4
- package/dist/docs-types.d.ts +2 -8
- package/dist/docs-types.d.ts.map +1 -1
- package/dist/hooks/focusableSelector.d.ts +1 -1
- package/dist/hooks/focusableSelector.d.ts.map +1 -1
- package/dist/hooks/focusableSelector.js +1 -1
- package/dist/hooks/index.d.ts +0 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +0 -1
- package/dist/hooks/useFocusTrap.d.ts +0 -3
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +1 -38
- package/dist/hooks/useInteractiveRole.d.ts +2 -6
- package/dist/hooks/useInteractiveRole.d.ts.map +1 -1
- package/dist/hooks/useInteractiveRole.js +2 -6
- package/dist/hooks/useKeyboardHint.js +9 -9
- package/dist/hooks/useStreamingText.d.ts +1 -3
- package/dist/hooks/useStreamingText.d.ts.map +1 -1
- package/dist/hooks/useStreamingText.js +5 -14
- package/dist/theme/MediaTheme.js +3 -3
- package/dist/theme/Theme.js +7 -7
- package/dist/theme/defineTheme.d.ts +1 -1
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/expandColorScale.d.ts.map +1 -1
- package/dist/theme/expandColorScale.js +3 -10
- package/dist/theme/hct.d.ts +15 -0
- package/dist/theme/hct.d.ts.map +1 -1
- package/dist/theme/hct.js +9 -9
- package/dist/theme/syntax/SyntaxTheme.js +5 -5
- package/dist/theme/tokens.d.ts +2 -10
- package/dist/theme/tokens.d.ts.map +1 -1
- package/dist/theme/tokens.js +4 -220
- package/dist/theme/useTheme.d.ts +2 -3
- package/dist/theme/useTheme.d.ts.map +1 -1
- package/dist/theme/useTheme.js +6 -73
- package/dist/utils/index.d.ts +0 -3
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -3
- package/dist/utils/timeParser.d.ts.map +1 -1
- package/dist/utils/timeParser.js +5 -8
- package/package.json +3 -3
- package/src/AlertDialog/AlertDialog.doc.mjs +0 -4
- package/src/AlertDialog/AlertDialog.tsx +0 -2
- package/src/AppShell/AppShell.tsx +0 -2
- package/src/AspectRatio/AspectRatio.doc.mjs +1 -28
- package/src/AspectRatio/AspectRatio.test.tsx +1 -142
- package/src/AspectRatio/AspectRatio.tsx +10 -70
- package/src/AspectRatio/index.ts +1 -5
- package/src/Avatar/Avatar.doc.mjs +0 -11
- package/src/Avatar/Avatar.test.tsx +1 -32
- package/src/Avatar/Avatar.tsx +20 -12
- package/src/AvatarGroup/AvatarGroup.doc.mjs +0 -1
- package/src/Banner/Banner.doc.mjs +0 -8
- package/src/Banner/Banner.test.tsx +0 -38
- package/src/Banner/Banner.tsx +1 -8
- package/src/Calendar/Calendar.doc.mjs +1 -1
- package/src/Calendar/Calendar.test.tsx +17 -122
- package/src/Calendar/Calendar.tsx +5 -26
- package/src/Calendar/dayCellUtils.ts +1 -3
- package/src/Calendar/styles.ts +2 -12
- package/src/Card/Card.doc.mjs +1 -1
- package/src/Card/Card.tsx +6 -16
- package/src/Carousel/Carousel.doc.mjs +12 -12
- package/src/Carousel/Carousel.test.tsx +0 -13
- package/src/Carousel/Carousel.tsx +2 -4
- package/src/Carousel/carousel.markers.stylex.ts +10 -0
- package/src/Chat/Chat.doc.mjs +1 -1
- package/src/Chat/ChatComposerInput.test.tsx +1 -27
- package/src/Chat/ChatComposerInput.tsx +15 -20
- package/src/Chat/ChatDictationButton.tsx +4 -4
- package/src/Chat/ChatLayoutScrollButton.tsx +1 -3
- package/src/Chat/ChatMessageMetadata.tsx +6 -4
- package/src/Chat/ChatSystemMessage.test.tsx +11 -26
- package/src/Chat/ChatSystemMessage.tsx +7 -7
- package/src/Chat/ChatTokenizedText.test.tsx +16 -29
- package/src/Chat/ChatTokenizedText.tsx +8 -15
- package/src/Chat/ChatToolCalls.test.tsx +0 -55
- package/src/Chat/ChatToolCalls.tsx +12 -10
- package/src/Chat/index.ts +4 -1
- package/src/Chat/useTriggerMenu.tsx +4 -1
- package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
- package/src/CheckboxInput/CheckboxInput.test.tsx +4 -71
- package/src/CheckboxInput/CheckboxInput.tsx +0 -2
- package/src/CheckboxList/CheckboxList.test.tsx +0 -19
- package/src/CheckboxList/CheckboxListItem.tsx +2 -11
- package/src/Citation/Citation.doc.mjs +0 -5
- package/src/ClickableCard/ClickableCard.tsx +2 -45
- package/src/CodeBlock/CodeBlock.doc.mjs +2 -7
- package/src/CodeBlock/CodeBlock.test.tsx +3 -122
- package/src/CodeBlock/CodeBlock.tsx +4 -62
- package/src/Collapsible/Collapsible.doc.mjs +4 -8
- package/src/Collapsible/Collapsible.tsx +10 -86
- package/src/Collapsible/CollapsibleGroup.doc.mjs +3 -27
- package/src/Collapsible/CollapsibleGroup.test.tsx +0 -318
- package/src/Collapsible/CollapsibleGroup.tsx +9 -107
- package/src/Collapsible/CollapsibleGroupContext.tsx +2 -42
- package/src/Collapsible/index.ts +0 -4
- package/src/Collapsible/useCollapsible.ts +6 -20
- package/src/CommandPalette/CommandPalette.doc.mjs +0 -5
- package/src/CommandPalette/CommandPalette.tsx +3 -5
- package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +0 -5
- package/src/CommandPalette/CommandPaletteGroup.doc.mjs +0 -10
- package/src/CommandPalette/CommandPaletteInput.doc.mjs +0 -6
- package/src/CommandPalette/CommandPaletteItem.doc.mjs +0 -6
- package/src/CommandPalette/CommandPaletteList.doc.mjs +0 -9
- package/src/ContextMenu/ContextMenu.doc.mjs +0 -15
- package/src/ContextMenu/ContextMenu.test.tsx +0 -87
- package/src/ContextMenu/ContextMenu.tsx +28 -87
- package/src/ContextMenu/ContextMenuItem.doc.mjs +0 -6
- package/src/DateInput/DateInput.test.tsx +20 -11
- package/src/DateRangeInput/DateRangeInput.test.tsx +44 -31
- package/src/DateTimeInput/DateTimeInput.doc.mjs +2 -3
- package/src/DateTimeInput/DateTimeInput.test.tsx +16 -118
- package/src/DateTimeInput/DateTimeInput.tsx +2 -8
- package/src/DateTimeInput/index.ts +0 -1
- package/src/Dialog/Dialog.doc.mjs +0 -4
- package/src/Dialog/DialogHeader.doc.mjs +0 -45
- package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenu.test.tsx +2 -22
- package/src/DropdownMenu/DropdownMenuItem.tsx +17 -5
- package/src/EmptyState/EmptyState.doc.mjs +1 -1
- package/src/Field/Field.test.tsx +4 -1
- package/src/Field/FieldLabel.test.tsx +2 -2
- package/src/FormLayout/__snapshots__/FormLayout.test.tsx.snap +3 -0
- package/src/Grid/Grid.test.tsx +18 -43
- package/src/Grid/Grid.tsx +9 -26
- package/src/HoverCard/HoverCard.doc.mjs +6 -6
- package/src/HoverCard/useHoverCard.doc.mjs +5 -5
- package/src/HoverCard/useHoverCard.tsx +2 -9
- package/src/Icon/Icon.test.tsx +29 -41
- package/src/Icon/Icon.tsx +2 -6
- package/src/InputGroup/InputGroup.doc.mjs +0 -1
- package/src/InputGroup/InputGroup.tsx +2 -2
- package/src/Item/Item.tsx +1 -1
- package/src/Layer/useLayer.doc.mjs +2 -2
- package/src/Layer/useLayer.test.tsx +2 -221
- package/src/Layer/useLayer.tsx +30 -69
- package/src/Layout/LayoutContent.doc.mjs +0 -12
- package/src/Layout/LayoutPanel.doc.mjs +0 -40
- package/src/Lightbox/Lightbox.doc.mjs +0 -5
- package/src/Lightbox/Lightbox.test.tsx +2 -123
- package/src/Lightbox/Lightbox.tsx +1 -29
- package/src/Markdown/Markdown.tsx +7 -9
- package/src/Markdown/parser.perf.test.ts +12 -34
- package/src/MobileNav/MobileNav.test.tsx +0 -56
- package/src/MobileNav/MobileNav.tsx +8 -13
- package/src/NavMenu/NavMenu.doc.mjs +0 -15
- package/src/NumberInput/NumberInput.test.tsx +3 -48
- package/src/NumberInput/NumberInput.tsx +15 -32
- package/src/Outline/Outline.doc.mjs +0 -2
- package/src/Overlay/Overlay.doc.mjs +0 -6
- package/src/Pagination/Pagination.test.tsx +0 -162
- package/src/Pagination/Pagination.tsx +26 -80
- package/src/Popover/Popover.doc.mjs +6 -6
- package/src/Popover/Popover.test.tsx +0 -65
- package/src/Popover/usePopover.doc.mjs +1 -1
- package/src/PowerSearch/PowerSearch.doc.mjs +2 -2
- package/src/PowerSearch/PowerSearch.test.tsx +1 -109
- package/src/PowerSearch/PowerSearch.tsx +16 -37
- package/src/ProgressBar/ProgressBar.doc.mjs +0 -2
- package/src/ProgressBar/ProgressBar.test.tsx +0 -30
- package/src/ProgressBar/ProgressBar.tsx +5 -12
- package/src/RadioList/RadioList.test.tsx +0 -19
- package/src/RadioList/RadioListItem.tsx +4 -9
- package/src/Resizable/ResizeHandle.tsx +4 -22
- package/src/SegmentedControl/SegmentedControl.doc.mjs +1 -1
- package/src/SegmentedControl/SegmentedControl.test.tsx +0 -192
- package/src/SegmentedControl/SegmentedControl.tsx +5 -27
- package/src/SegmentedControl/SegmentedControlItem.tsx +4 -9
- package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
- package/src/Selector/Selector.test.tsx +1 -27
- package/src/SideNav/SideNav.doc.mjs +1 -7
- package/src/SideNav/SideNav.test.tsx +0 -66
- package/src/SideNav/SideNav.tsx +2 -6
- package/src/SideNav/SideNavCollapseButton.tsx +3 -4
- package/src/SideNav/SideNavSection.tsx +4 -6
- package/src/Switch/Switch.doc.mjs +7 -7
- package/src/Switch/Switch.test.tsx +3 -102
- package/src/Switch/Switch.tsx +7 -20
- package/src/TabList/TabList.test.tsx +1 -185
- package/src/TabList/TabMenu.tsx +9 -45
- package/src/Table/BaseTable.tsx +2 -13
- package/src/Table/Table.doc.mjs +0 -5
- package/src/Table/Table.test.tsx +0 -87
- package/src/Table/TableBody.tsx +2 -15
- package/src/Table/TableFooter.tsx +2 -15
- package/src/Table/TableHeader.tsx +2 -15
- package/src/Table/plugins/columnResize/useTableColumnResize.test.tsx +0 -13
- package/src/Table/plugins/columnResize/useTableColumnResize.tsx +1 -3
- package/src/Table/plugins/pagination/paginateData.ts +1 -5
- package/src/Table/plugins/pagination/useTablePagination.test.tsx +0 -13
- package/src/Table/plugins/selection/useTableSelectionState.test.tsx +0 -23
- package/src/Table/plugins/selection/useTableSelectionState.tsx +6 -11
- package/src/Table/plugins/sortable/useTableSortableState.test.tsx +1 -35
- package/src/Table/plugins/sortable/useTableSortableState.tsx +4 -8
- package/src/TextArea/TextArea.test.tsx +3 -3
- package/src/TextInput/TextInput.test.tsx +3 -3
- package/src/Thumbnail/Thumbnail.test.tsx +2 -36
- package/src/Thumbnail/Thumbnail.tsx +2 -4
- package/src/TimeInput/TimeInput.test.tsx +0 -37
- package/src/TimeInput/TimeInput.tsx +1 -11
- package/src/Timestamp/Timestamp.doc.mjs +1 -1
- package/src/Timestamp/Timestamp.test.tsx +0 -52
- package/src/Timestamp/Timestamp.tsx +16 -30
- package/src/Toast/Toast.tsx +3 -11
- package/src/Toast/ToastViewport.test.tsx +0 -64
- package/src/Toast/ToastViewport.tsx +0 -12
- package/src/Toast/useToast.tsx +0 -41
- package/src/ToggleButton/ToggleButton.doc.mjs +0 -1
- package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
- package/src/Tokenizer/Tokenizer.test.tsx +0 -54
- package/src/Tokenizer/Tokenizer.tsx +4 -5
- package/src/Tooltip/Tooltip.doc.mjs +6 -6
- package/src/Tooltip/useTooltip.doc.mjs +5 -5
- package/src/Tooltip/useTooltip.tsx +2 -12
- package/src/TopNav/TopNav.doc.mjs +1 -1
- package/src/TopNav/TopNav.test.tsx +7 -23
- package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +2 -9
- package/src/TreeList/TreeList.doc.mjs +2 -2
- package/src/Typeahead/BaseTypeahead.doc.mjs +0 -19
- package/src/Typeahead/BaseTypeahead.tsx +2 -5
- package/src/Typeahead/Typeahead.doc.mjs +1 -1
- package/src/Typeahead/Typeahead.test.tsx +1 -45
- package/src/docs-types.ts +1 -9
- package/src/hooks/focusableSelector.ts +1 -1
- package/src/hooks/index.ts +0 -3
- package/src/hooks/useFocusTrap.doc.mjs +2 -4
- package/src/hooks/useFocusTrap.test.tsx +1 -149
- package/src/hooks/useFocusTrap.ts +1 -50
- package/src/hooks/useInteractiveRole.ts +4 -12
- package/src/hooks/useStreamingText.test.ts +19 -54
- package/src/hooks/useStreamingText.ts +5 -16
- package/src/hooks/useTreeFocus.test.tsx +3 -1
- package/src/reset.css +0 -29
- package/src/theme/SyntaxTheme.doc.mjs +4 -4
- package/src/theme/defineTheme.ts +13 -4
- package/src/theme/derivedVarRegistry.test.ts +2 -2
- package/src/theme/expandColorScale.test.ts +0 -29
- package/src/theme/expandColorScale.ts +6 -11
- package/src/theme/hct.ts +17 -9
- package/src/theme/tokens.test.ts +9 -182
- package/src/theme/tokens.ts +4 -239
- package/src/theme/useTheme.test.tsx +2 -126
- package/src/theme/useTheme.ts +6 -87
- package/src/utils/index.ts +0 -4
- package/src/utils/sharedResizeObserver.test.ts +2 -2
- package/src/utils/timeParser.test.ts +0 -13
- package/src/utils/timeParser.ts +5 -8
- package/dist/hooks/useHotkeys.d.ts +0 -51
- package/dist/hooks/useHotkeys.d.ts.map +0 -1
- package/dist/hooks/useHotkeys.js +0 -160
- package/dist/utils/color.d.ts +0 -42
- package/dist/utils/color.d.ts.map +0 -1
- package/dist/utils/color.js +0 -150
- package/dist/utils/composeEventHandlers.d.ts +0 -30
- package/dist/utils/composeEventHandlers.d.ts.map +0 -1
- package/dist/utils/composeEventHandlers.js +0 -40
- package/src/Chat/ChatDictationButton.test.tsx +0 -43
- package/src/Chat/ChatLayoutScrollButton.test.tsx +0 -33
- package/src/Chat/ChatMessageMetadata.test.tsx +0 -32
- package/src/Collapsible/Collapsible.test.tsx +0 -405
- package/src/FieldStatus/FieldStatus.test.tsx +0 -282
- package/src/InteractiveRoleContext/InteractiveRoleContext.test.tsx +0 -185
- package/src/Layout/Layout.test.tsx +0 -285
- package/src/Layout/LayoutSlots.test.tsx +0 -364
- package/src/Outline/parseOutlineFromMarkdown.test.ts +0 -80
- package/src/OverflowList/OverflowList.test.tsx +0 -416
- package/src/Overlay/Overlay.test.tsx +0 -356
- package/src/Resizable/ResizeHandle.test.tsx +0 -218
- package/src/SizeContext/SizeContext.test.tsx +0 -226
- package/src/Toast/useToast.test.tsx +0 -258
- package/src/__tests__/TestIcon.tsx +0 -26
- package/src/__tests__/fastRoleQueries.ts +0 -66
- package/src/docPropReferences.test.ts +0 -178
- package/src/hooks/useHotkeys.doc.mjs +0 -52
- package/src/hooks/useHotkeys.test.ts +0 -245
- package/src/hooks/useHotkeys.ts +0 -203
- package/src/theme/themingTargets.test.ts +0 -353
- package/src/utils/color.test.ts +0 -133
- package/src/utils/color.ts +0 -148
- package/src/utils/composeEventHandlers.test.ts +0 -71
- package/src/utils/composeEventHandlers.ts +0 -44
- package/src/utils/mergeProps.test.ts +0 -166
|
@@ -354,69 +354,4 @@ describe('Popover', () => {
|
|
|
354
354
|
expect(trigger).toHaveAttribute('aria-expanded', 'true');
|
|
355
355
|
});
|
|
356
356
|
});
|
|
357
|
-
|
|
358
|
-
describe('focus restoration', () => {
|
|
359
|
-
it('returns focus to the trigger when closed via Escape', () => {
|
|
360
|
-
render(
|
|
361
|
-
<Popover
|
|
362
|
-
content={
|
|
363
|
-
<button type="button" data-testid="inside-content">
|
|
364
|
-
Inside
|
|
365
|
-
</button>
|
|
366
|
-
}
|
|
367
|
-
label="Test">
|
|
368
|
-
<button type="button">Open</button>
|
|
369
|
-
</Popover>,
|
|
370
|
-
);
|
|
371
|
-
const trigger = screen.getByRole('button', {name: 'Open'});
|
|
372
|
-
trigger.focus();
|
|
373
|
-
expect(trigger).toHaveFocus();
|
|
374
|
-
|
|
375
|
-
fireEvent.click(trigger);
|
|
376
|
-
expect(trigger).toHaveAttribute('aria-expanded', 'true');
|
|
377
|
-
|
|
378
|
-
// Move focus into the open popover, as a keyboard user would.
|
|
379
|
-
const inside = screen.getByTestId('inside-content');
|
|
380
|
-
inside.focus();
|
|
381
|
-
expect(inside).toHaveFocus();
|
|
382
|
-
|
|
383
|
-
fireEvent.keyDown(document, {key: 'Escape'});
|
|
384
|
-
expect(trigger).toHaveAttribute('aria-expanded', 'false');
|
|
385
|
-
expect(trigger).toHaveFocus();
|
|
386
|
-
});
|
|
387
|
-
|
|
388
|
-
it('returns focus to the trigger on light dismiss', () => {
|
|
389
|
-
render(
|
|
390
|
-
<Popover
|
|
391
|
-
content={
|
|
392
|
-
<button type="button" data-testid="inside-content">
|
|
393
|
-
Inside
|
|
394
|
-
</button>
|
|
395
|
-
}
|
|
396
|
-
label="Test">
|
|
397
|
-
<button type="button">Open</button>
|
|
398
|
-
</Popover>,
|
|
399
|
-
);
|
|
400
|
-
const trigger = screen.getByRole('button', {name: 'Open'});
|
|
401
|
-
trigger.focus();
|
|
402
|
-
|
|
403
|
-
fireEvent.click(trigger);
|
|
404
|
-
expect(trigger).toHaveAttribute('aria-expanded', 'true');
|
|
405
|
-
|
|
406
|
-
const inside = screen.getByTestId('inside-content');
|
|
407
|
-
inside.focus();
|
|
408
|
-
expect(inside).toHaveFocus();
|
|
409
|
-
|
|
410
|
-
// Simulate the browser's light dismiss for popover="auto": clicking
|
|
411
|
-
// outside fires a `toggle` event with newState "closed".
|
|
412
|
-
const popoverEl = document.querySelector('[popover]');
|
|
413
|
-
expect(popoverEl).not.toBeNull();
|
|
414
|
-
const toggleEvent = new Event('toggle');
|
|
415
|
-
Object.defineProperty(toggleEvent, 'newState', {value: 'closed'});
|
|
416
|
-
fireEvent(popoverEl as HTMLElement, toggleEvent);
|
|
417
|
-
|
|
418
|
-
expect(trigger).toHaveAttribute('aria-expanded', 'false');
|
|
419
|
-
expect(trigger).toHaveFocus();
|
|
420
|
-
});
|
|
421
|
-
});
|
|
422
357
|
});
|
|
@@ -29,7 +29,7 @@ export const docs = {
|
|
|
29
29
|
{name: 'toggle', type: '() => void', description: 'Toggle the popover open or closed.'},
|
|
30
30
|
{name: 'isOpen', type: 'boolean', description: 'Whether the popover is currently open.'},
|
|
31
31
|
{name: 'id', type: 'string', description: 'Unique ID for aria-describedby or aria-controls.'},
|
|
32
|
-
{name: 'render', type: '(children: ReactNode, props?: ContextRenderProps) => ReactNode', description: 'Render function for anchor-positioned popover content. Pass placement and alignment here.
|
|
32
|
+
{name: 'render', type: '(children: ReactNode, props?: ContextRenderProps) => ReactNode', description: 'Render function for anchor-positioned popover content. Pass placement and alignment here.'},
|
|
33
33
|
{name: 'triggerProps', type: '{aria-haspopup: "dialog" | "true"; aria-expanded: boolean; aria-controls: string}', description: 'ARIA attributes to spread onto the trigger element. aria-haspopup reflects the popover role.'},
|
|
34
34
|
],
|
|
35
35
|
usage: {
|
|
@@ -120,7 +120,7 @@ export const docs = {
|
|
|
120
120
|
name: 'resultCount',
|
|
121
121
|
type: 'number | string',
|
|
122
122
|
description:
|
|
123
|
-
'Number of results matching the current filters. When a number, formatted as "N results". When a string, displayed as-is.
|
|
123
|
+
'Number of results matching the current filters. When a number, formatted as "N results". When a string, displayed as-is.',
|
|
124
124
|
},
|
|
125
125
|
{
|
|
126
126
|
name: 'size',
|
|
@@ -261,7 +261,7 @@ export const docsZh = {
|
|
|
261
261
|
name: 'resultCount',
|
|
262
262
|
type: 'number | string',
|
|
263
263
|
description:
|
|
264
|
-
'匹配当前过滤器的结果数量。数字类型时格式化为"N results"
|
|
264
|
+
'匹配当前过滤器的结果数量。数字类型时格式化为"N results"。字符串类型时按原样显示。',
|
|
265
265
|
},
|
|
266
266
|
{
|
|
267
267
|
name: 'size',
|
|
@@ -10,11 +10,10 @@
|
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
import {useState} from 'react';
|
|
13
|
-
import {describe, it, expect, vi, beforeAll, afterAll
|
|
13
|
+
import {describe, it, expect, vi, beforeAll, afterAll} from 'vitest';
|
|
14
14
|
import {render, screen, act, fireEvent, waitFor} from '@testing-library/react';
|
|
15
15
|
import userEvent from '@testing-library/user-event';
|
|
16
16
|
import {PowerSearch} from './PowerSearch';
|
|
17
|
-
import {__resetLiveRegionsForTest} from '../hooks/useAnnounce';
|
|
18
17
|
import type {PowerSearchConfig, PowerSearchFilter} from './types';
|
|
19
18
|
|
|
20
19
|
// =============================================================================
|
|
@@ -60,12 +59,6 @@ afterAll(() => {
|
|
|
60
59
|
(HTMLElement.prototype as any).matches = originalMatches;
|
|
61
60
|
});
|
|
62
61
|
|
|
63
|
-
// Reset the singleton live regions between tests so result-count
|
|
64
|
-
// announcements from one test don't leak into the next.
|
|
65
|
-
afterEach(() => {
|
|
66
|
-
__resetLiveRegionsForTest();
|
|
67
|
-
});
|
|
68
|
-
|
|
69
62
|
// =============================================================================
|
|
70
63
|
// Fixtures
|
|
71
64
|
// =============================================================================
|
|
@@ -302,105 +295,4 @@ describe('PowerSearch', () => {
|
|
|
302
295
|
expect(screen.getByRole('combobox')).toBeDisabled();
|
|
303
296
|
});
|
|
304
297
|
});
|
|
305
|
-
|
|
306
|
-
describe('result count announcements', () => {
|
|
307
|
-
const politeRegion = () =>
|
|
308
|
-
document.querySelector('[data-astryx-live-region="polite"]');
|
|
309
|
-
|
|
310
|
-
it('announces the result count to a polite live region when it changes', async () => {
|
|
311
|
-
const {rerender} = render(
|
|
312
|
-
<PowerSearch
|
|
313
|
-
config={config}
|
|
314
|
-
filters={[]}
|
|
315
|
-
onChange={() => {}}
|
|
316
|
-
resultCount={0}
|
|
317
|
-
/>,
|
|
318
|
-
);
|
|
319
|
-
rerender(
|
|
320
|
-
<PowerSearch
|
|
321
|
-
config={config}
|
|
322
|
-
filters={[]}
|
|
323
|
-
onChange={() => {}}
|
|
324
|
-
resultCount={5}
|
|
325
|
-
/>,
|
|
326
|
-
);
|
|
327
|
-
await waitFor(() => {
|
|
328
|
-
expect(politeRegion()).toHaveTextContent('5 results');
|
|
329
|
-
});
|
|
330
|
-
});
|
|
331
|
-
|
|
332
|
-
it('announces "1 result" (singular) for a single match', async () => {
|
|
333
|
-
const {rerender} = render(
|
|
334
|
-
<PowerSearch
|
|
335
|
-
config={config}
|
|
336
|
-
filters={[]}
|
|
337
|
-
onChange={() => {}}
|
|
338
|
-
resultCount={0}
|
|
339
|
-
/>,
|
|
340
|
-
);
|
|
341
|
-
rerender(
|
|
342
|
-
<PowerSearch
|
|
343
|
-
config={config}
|
|
344
|
-
filters={[]}
|
|
345
|
-
onChange={() => {}}
|
|
346
|
-
resultCount={1}
|
|
347
|
-
/>,
|
|
348
|
-
);
|
|
349
|
-
await waitFor(() => {
|
|
350
|
-
expect(politeRegion()).toHaveTextContent('1 result');
|
|
351
|
-
});
|
|
352
|
-
expect(politeRegion()?.textContent).not.toMatch(/results/);
|
|
353
|
-
});
|
|
354
|
-
|
|
355
|
-
it('announces a string result count verbatim', async () => {
|
|
356
|
-
const {rerender} = render(
|
|
357
|
-
<PowerSearch
|
|
358
|
-
config={config}
|
|
359
|
-
filters={[]}
|
|
360
|
-
onChange={() => {}}
|
|
361
|
-
resultCount="0 items"
|
|
362
|
-
/>,
|
|
363
|
-
);
|
|
364
|
-
rerender(
|
|
365
|
-
<PowerSearch
|
|
366
|
-
config={config}
|
|
367
|
-
filters={[]}
|
|
368
|
-
onChange={() => {}}
|
|
369
|
-
resultCount="Showing 1.2k matches"
|
|
370
|
-
/>,
|
|
371
|
-
);
|
|
372
|
-
await waitFor(() => {
|
|
373
|
-
expect(politeRegion()).toHaveTextContent('Showing 1.2k matches');
|
|
374
|
-
});
|
|
375
|
-
});
|
|
376
|
-
|
|
377
|
-
it('does not announce the result count present on initial mount', async () => {
|
|
378
|
-
render(
|
|
379
|
-
<PowerSearch
|
|
380
|
-
config={config}
|
|
381
|
-
filters={[]}
|
|
382
|
-
onChange={() => {}}
|
|
383
|
-
resultCount={42}
|
|
384
|
-
/>,
|
|
385
|
-
);
|
|
386
|
-
// Flush effects and any pending live-region rAF writes.
|
|
387
|
-
await act(async () => {
|
|
388
|
-
await new Promise(resolve => setTimeout(resolve, 50));
|
|
389
|
-
});
|
|
390
|
-
expect(politeRegion()?.textContent ?? '').not.toContain('42');
|
|
391
|
-
});
|
|
392
|
-
|
|
393
|
-
it('leaves Typeahead dropdown announcements intact and stays silent when no resultCount is set', async () => {
|
|
394
|
-
const user = userEvent.setup();
|
|
395
|
-
render(<PowerSearchWrapper config={config} />);
|
|
396
|
-
const input = screen.getByRole('combobox');
|
|
397
|
-
await user.click(input);
|
|
398
|
-
await user.type(input, 'Status');
|
|
399
|
-
// BaseTypeahead announces the dropdown suggestion count; PowerSearch adds
|
|
400
|
-
// no result-count announcement because resultCount is unset.
|
|
401
|
-
await waitFor(() => {
|
|
402
|
-
expect(politeRegion()?.textContent).toMatch(/\d+ results?/);
|
|
403
|
-
});
|
|
404
|
-
});
|
|
405
|
-
});
|
|
406
298
|
});
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
|
|
17
17
|
import React, {
|
|
18
18
|
useCallback,
|
|
19
|
-
useEffect,
|
|
20
19
|
useImperativeHandle,
|
|
21
20
|
useMemo,
|
|
22
21
|
useRef,
|
|
@@ -39,7 +38,6 @@ import type {IconType} from '../Icon';
|
|
|
39
38
|
import type {IconName} from '../Icon/globalIconRegistry';
|
|
40
39
|
import type {InputStatus} from '../Field';
|
|
41
40
|
import {usePopover} from '../Popover/usePopover';
|
|
42
|
-
import {useAnnounce} from '../hooks/useAnnounce';
|
|
43
41
|
import {
|
|
44
42
|
spacingVars,
|
|
45
43
|
colorVars,
|
|
@@ -947,42 +945,23 @@ export function PowerSearch({
|
|
|
947
945
|
isReadOnly,
|
|
948
946
|
]);
|
|
949
947
|
|
|
950
|
-
// Plain-text form of the result count, shared by the visible label and the
|
|
951
|
-
// screen-reader announcement so the two never drift.
|
|
952
|
-
const resultCountText = useMemo((): string | null => {
|
|
953
|
-
if (resultCount == null) {
|
|
954
|
-
return null;
|
|
955
|
-
}
|
|
956
|
-
if (typeof resultCount === 'number') {
|
|
957
|
-
const formatted = new Intl.NumberFormat().format(resultCount);
|
|
958
|
-
return `${formatted} ${resultCount === 1 ? 'result' : 'results'}`;
|
|
959
|
-
}
|
|
960
|
-
return resultCount;
|
|
961
|
-
}, [resultCount]);
|
|
962
|
-
|
|
963
|
-
// Announce result-count changes to screen readers through a polite live
|
|
964
|
-
// region, mirroring the way Typeahead announces its dropdown result count.
|
|
965
|
-
// The count is otherwise only shown visually and stays silent to assistive
|
|
966
|
-
// tech. Skip the first run so the count already present on mount isn't
|
|
967
|
-
// announced unprompted — only user-driven changes are spoken.
|
|
968
|
-
const announce = useAnnounce();
|
|
969
|
-
const hasMountedRef = useRef(false);
|
|
970
|
-
useEffect(() => {
|
|
971
|
-
if (!hasMountedRef.current) {
|
|
972
|
-
hasMountedRef.current = true;
|
|
973
|
-
return;
|
|
974
|
-
}
|
|
975
|
-
if (resultCountText != null) {
|
|
976
|
-
announce(resultCountText);
|
|
977
|
-
}
|
|
978
|
-
}, [resultCountText, announce]);
|
|
979
|
-
|
|
980
948
|
// Build combined endContent from resultCount + endContent props
|
|
981
949
|
const combinedEndContent = useMemo((): React.ReactNode => {
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
950
|
+
let resultCountNode: React.ReactNode = null;
|
|
951
|
+
if (resultCount != null) {
|
|
952
|
+
if (typeof resultCount === 'number') {
|
|
953
|
+
const formatted = new Intl.NumberFormat().format(resultCount);
|
|
954
|
+
resultCountNode = (
|
|
955
|
+
<span {...stylex.props(resultCountStyles.text)}>
|
|
956
|
+
{formatted} {resultCount === 1 ? 'result' : 'results'}
|
|
957
|
+
</span>
|
|
958
|
+
);
|
|
959
|
+
} else {
|
|
960
|
+
resultCountNode = (
|
|
961
|
+
<span {...stylex.props(resultCountStyles.text)}>{resultCount}</span>
|
|
962
|
+
);
|
|
963
|
+
}
|
|
964
|
+
}
|
|
986
965
|
|
|
987
966
|
if (resultCountNode && endContent) {
|
|
988
967
|
return (
|
|
@@ -993,7 +972,7 @@ export function PowerSearch({
|
|
|
993
972
|
);
|
|
994
973
|
}
|
|
995
974
|
return resultCountNode || endContent || undefined;
|
|
996
|
-
}, [
|
|
975
|
+
}, [resultCount, endContent]);
|
|
997
976
|
|
|
998
977
|
return (
|
|
999
978
|
<>
|
|
@@ -73,7 +73,6 @@ export const docs = {
|
|
|
73
73
|
targets: [
|
|
74
74
|
{className: 'astryx-progressbar', visualProps: ['variant']},
|
|
75
75
|
{className: 'astryx-progressbar-fill', visualProps: ['variant']},
|
|
76
|
-
{className: 'astryx-progressbar-track'},
|
|
77
76
|
],
|
|
78
77
|
},
|
|
79
78
|
usage: {
|
|
@@ -160,7 +159,6 @@ export const docsZh = {
|
|
|
160
159
|
targets: [
|
|
161
160
|
{className: 'astryx-progressbar', visualProps: ['variant']},
|
|
162
161
|
{className: 'astryx-progressbar-fill', visualProps: ['variant']},
|
|
163
|
-
{className: 'astryx-progressbar-track'},
|
|
164
162
|
],
|
|
165
163
|
},
|
|
166
164
|
usage: {
|
|
@@ -140,36 +140,6 @@ describe('ProgressBar', () => {
|
|
|
140
140
|
expect(progressbar).toHaveAttribute('aria-valuemax', '0');
|
|
141
141
|
});
|
|
142
142
|
|
|
143
|
-
it('treats a NaN value as empty progress instead of leaking "NaN"', () => {
|
|
144
|
-
// e.g. an upstream `loaded / total * 100` where total is still 0.
|
|
145
|
-
render(<ProgressBar value={NaN} label="Upload" hasValueLabel />);
|
|
146
|
-
const progressbar = screen.getByRole('progressbar');
|
|
147
|
-
expect(progressbar).toHaveAttribute('aria-valuenow', '0');
|
|
148
|
-
expect(progressbar.getAttribute('aria-valuetext')).toBe('0%');
|
|
149
|
-
expect(screen.queryByText(/NaN/)).not.toBeInTheDocument();
|
|
150
|
-
// The fill width must be a real percentage, not "NaN%".
|
|
151
|
-
const fill = progressbar.firstElementChild as HTMLElement;
|
|
152
|
-
expect(fill.style.width).toBe('0%');
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
it('treats a NaN max as an empty range instead of leaking "NaN"', () => {
|
|
156
|
-
render(<ProgressBar value={5} max={NaN} label="Steps" hasValueLabel />);
|
|
157
|
-
const progressbar = screen.getByRole('progressbar');
|
|
158
|
-
expect(progressbar).toHaveAttribute('aria-valuenow', '0');
|
|
159
|
-
expect(progressbar).toHaveAttribute('aria-valuemax', '0');
|
|
160
|
-
expect(screen.queryByText(/NaN/)).not.toBeInTheDocument();
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
it('does not render NaN in the value label when max is zero', () => {
|
|
164
|
-
render(<ProgressBar value={0} max={0} label="Empty" hasValueLabel />);
|
|
165
|
-
expect(screen.queryByText(/NaN|Infinity/)).not.toBeInTheDocument();
|
|
166
|
-
const progressbar = screen.getByRole('progressbar');
|
|
167
|
-
expect(progressbar.getAttribute('aria-valuetext') ?? '').not.toMatch(
|
|
168
|
-
/NaN|Infinity/,
|
|
169
|
-
);
|
|
170
|
-
expect(screen.getByText('0%')).toBeInTheDocument();
|
|
171
|
-
});
|
|
172
|
-
|
|
173
143
|
// Disabled state
|
|
174
144
|
describe('disabled state', () => {
|
|
175
145
|
it('renders with isDisabled', () => {
|
|
@@ -228,8 +228,7 @@ const variantStyles = stylex.create({
|
|
|
228
228
|
});
|
|
229
229
|
|
|
230
230
|
function defaultFormatValueLabel(value: number, max: number): string {
|
|
231
|
-
|
|
232
|
-
return `${pct}%`;
|
|
231
|
+
return `${Math.round((value / max) * 100)}%`;
|
|
233
232
|
}
|
|
234
233
|
|
|
235
234
|
/**
|
|
@@ -273,15 +272,9 @@ export function ProgressBar({
|
|
|
273
272
|
...rest
|
|
274
273
|
}: ProgressBarProps) {
|
|
275
274
|
const labelId = useId();
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
// matching the max=0 handling below.
|
|
280
|
-
const safeValue = Number.isFinite(value) ? value : 0;
|
|
281
|
-
const safeMax = Number.isFinite(max) ? max : 0;
|
|
282
|
-
const clampedValue = Math.min(Math.max(0, safeValue), safeMax);
|
|
283
|
-
const percentage = safeMax > 0 ? (clampedValue / safeMax) * 100 : 0;
|
|
284
|
-
const valueText = formatValueLabel(clampedValue, safeMax);
|
|
275
|
+
const clampedValue = Math.min(Math.max(0, value), max);
|
|
276
|
+
const percentage = max > 0 ? (clampedValue / max) * 100 : 0;
|
|
277
|
+
const valueText = formatValueLabel(clampedValue, max);
|
|
285
278
|
|
|
286
279
|
const showValueLabel = hasValueLabel && !isIndeterminate;
|
|
287
280
|
|
|
@@ -329,7 +322,7 @@ export function ProgressBar({
|
|
|
329
322
|
role="progressbar"
|
|
330
323
|
aria-valuenow={isIndeterminate ? undefined : clampedValue}
|
|
331
324
|
aria-valuemin={isIndeterminate ? undefined : 0}
|
|
332
|
-
aria-valuemax={isIndeterminate ? undefined :
|
|
325
|
+
aria-valuemax={isIndeterminate ? undefined : max}
|
|
333
326
|
aria-labelledby={labelId}
|
|
334
327
|
aria-valuetext={isIndeterminate ? undefined : valueText}
|
|
335
328
|
{...mergeProps(
|
|
@@ -622,23 +622,4 @@ describe('RadioList', () => {
|
|
|
622
622
|
expect(input.getAttribute('name')).toBeTruthy();
|
|
623
623
|
});
|
|
624
624
|
});
|
|
625
|
-
|
|
626
|
-
describe('RadioListItem rest forwarding', () => {
|
|
627
|
-
it('forwards data-testid, id, and aria-* to the item root element', () => {
|
|
628
|
-
render(
|
|
629
|
-
<RadioList label="Preference" value="" onChange={() => {}}>
|
|
630
|
-
<RadioListItem
|
|
631
|
-
label="Option A"
|
|
632
|
-
value="a"
|
|
633
|
-
data-testid="item-a"
|
|
634
|
-
id="item-a-id"
|
|
635
|
-
aria-label="First option"
|
|
636
|
-
/>
|
|
637
|
-
</RadioList>,
|
|
638
|
-
);
|
|
639
|
-
const item = screen.getByTestId('item-a');
|
|
640
|
-
expect(item).toHaveAttribute('id', 'item-a-id');
|
|
641
|
-
expect(item).toHaveAttribute('aria-label', 'First option');
|
|
642
|
-
});
|
|
643
|
-
});
|
|
644
625
|
});
|
|
@@ -220,10 +220,7 @@ export function RadioListItem({
|
|
|
220
220
|
isDisabled: isItemDisabled = false,
|
|
221
221
|
startContent,
|
|
222
222
|
endContent,
|
|
223
|
-
|
|
224
|
-
className,
|
|
225
|
-
style,
|
|
226
|
-
...rest
|
|
223
|
+
'data-testid': dataTestId,
|
|
227
224
|
}: RadioListItemProps) {
|
|
228
225
|
const context = use(RadioListContext);
|
|
229
226
|
if (!context) {
|
|
@@ -316,13 +313,11 @@ export function RadioListItem({
|
|
|
316
313
|
return (
|
|
317
314
|
<div
|
|
318
315
|
ref={ref}
|
|
316
|
+
data-testid={dataTestId}
|
|
319
317
|
{...mergeProps(
|
|
320
318
|
themeProps('radio-list-item'),
|
|
321
|
-
stylex.props(styles.container, !isDisabled && radioScope
|
|
322
|
-
|
|
323
|
-
style,
|
|
324
|
-
)}
|
|
325
|
-
{...rest}>
|
|
319
|
+
stylex.props(styles.container, !isDisabled && radioScope),
|
|
320
|
+
)}>
|
|
326
321
|
<Item
|
|
327
322
|
startContent={mediaContent}
|
|
328
323
|
label={
|
|
@@ -316,9 +316,6 @@ export function ResizeHandle({
|
|
|
316
316
|
...props
|
|
317
317
|
}: ResizeHandleProps) {
|
|
318
318
|
const handleRef = useRef<HTMLDivElement>(null);
|
|
319
|
-
// Removes the in-flight drag's window listeners (and resets body styles).
|
|
320
|
-
// Held in a ref so unmount can tear down a drag that never got a pointerup.
|
|
321
|
-
const dragCleanupRef = useRef<(() => void) | null>(null);
|
|
322
319
|
const [isDragging, setIsDragging] = useState(false);
|
|
323
320
|
const [isHovered, setIsHovered] = useState(false);
|
|
324
321
|
const [isFocused, setIsFocused] = useState(false);
|
|
@@ -378,12 +375,10 @@ export function ResizeHandle({
|
|
|
378
375
|
window.removeEventListener('pointermove', onMove);
|
|
379
376
|
window.removeEventListener('pointerup', onUp);
|
|
380
377
|
window.removeEventListener('pointercancel', onCancel);
|
|
381
|
-
dragCleanupRef.current = null;
|
|
382
378
|
}
|
|
383
379
|
window.addEventListener('pointermove', onMove);
|
|
384
380
|
window.addEventListener('pointerup', onUp);
|
|
385
381
|
window.addEventListener('pointercancel', onCancel);
|
|
386
|
-
dragCleanupRef.current = cleanup;
|
|
387
382
|
},
|
|
388
383
|
[isDisabled, resizable, isHorizontal, getRTLMultiplier, sign],
|
|
389
384
|
);
|
|
@@ -459,19 +454,14 @@ export function ResizeHandle({
|
|
|
459
454
|
}, [isDisabled, resizable]);
|
|
460
455
|
|
|
461
456
|
// --- Cleanup on unmount ---
|
|
462
|
-
// A drag in flight when the handle unmounts never gets its pointerup, so
|
|
463
|
-
// tear down the window listeners here too — otherwise every pointermove
|
|
464
|
-
// keeps driving the (still-mounted) region's resize state after the handle
|
|
465
|
-
// is gone, and the body cursor/user-select overrides stick.
|
|
466
457
|
useEffect(() => {
|
|
467
458
|
return () => {
|
|
468
|
-
if (
|
|
469
|
-
dragCleanupRef.current();
|
|
459
|
+
if (isDragging) {
|
|
470
460
|
document.body.style.cursor = '';
|
|
471
461
|
document.body.style.userSelect = '';
|
|
472
462
|
}
|
|
473
463
|
};
|
|
474
|
-
}, []);
|
|
464
|
+
}, [isDragging]);
|
|
475
465
|
|
|
476
466
|
// --- ARIA ---
|
|
477
467
|
const ariaValueNow = resizable ? resizable._size : undefined;
|
|
@@ -520,16 +510,7 @@ export function ResizeHandle({
|
|
|
520
510
|
),
|
|
521
511
|
className,
|
|
522
512
|
)}
|
|
523
|
-
{...props}
|
|
524
|
-
// Keyboard resizing must fire from the focusable separator, not a child:
|
|
525
|
-
// keydown fires on the focused element and bubbles up, so a handler on a
|
|
526
|
-
// descendant never runs (per the WAI-ARIA window-splitter pattern).
|
|
527
|
-
// Placed after {...props} and composed with any consumer onKeyDown so
|
|
528
|
-
// this accessibility-critical handler can't be clobbered by a passed prop.
|
|
529
|
-
onKeyDown={e => {
|
|
530
|
-
props.onKeyDown?.(e);
|
|
531
|
-
handleKeyDown(e);
|
|
532
|
-
}}>
|
|
513
|
+
{...props}>
|
|
533
514
|
{/* Wider invisible hit area for pointer interaction */}
|
|
534
515
|
<div
|
|
535
516
|
{...stylex.props(
|
|
@@ -547,6 +528,7 @@ export function ResizeHandle({
|
|
|
547
528
|
setIsHovered(false);
|
|
548
529
|
}
|
|
549
530
|
}}
|
|
531
|
+
onKeyDown={handleKeyDown}
|
|
550
532
|
/>
|
|
551
533
|
{/* Pill grip indicator — themed via .astryx-resize-handle-pill */}
|
|
552
534
|
{children ?? (
|
|
@@ -16,7 +16,7 @@ export const docs = {
|
|
|
16
16
|
theming: {
|
|
17
17
|
targets: [
|
|
18
18
|
{className: 'astryx-segmented-control', visualProps: ['size']},
|
|
19
|
-
{className: 'astryx-segmented-control-item'
|
|
19
|
+
{className: 'astryx-segmented-control-item'},
|
|
20
20
|
],
|
|
21
21
|
vars: [
|
|
22
22
|
{name: '--_segmented-control-radius', description: 'Border radius of the segmented control', default: 'var(--radius-element)', private: true},
|