@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
|
@@ -259,56 +259,6 @@ describe('SegmentedControl', () => {
|
|
|
259
259
|
});
|
|
260
260
|
|
|
261
261
|
describe('SegmentedControl keyboard navigation', () => {
|
|
262
|
-
describe('tab-through is a pure focus move (#3597)', () => {
|
|
263
|
-
it('does not fire onChange when tabbing in with an unmatched value', async () => {
|
|
264
|
-
const user = userEvent.setup();
|
|
265
|
-
const onChange = vi.fn();
|
|
266
|
-
render(
|
|
267
|
-
<>
|
|
268
|
-
<button type="button">before</button>
|
|
269
|
-
<SegmentedControl label="View" value="archived" onChange={onChange}>
|
|
270
|
-
<SegmentedControlItem value="grid" label="Grid" />
|
|
271
|
-
<SegmentedControlItem value="list" label="List" />
|
|
272
|
-
</SegmentedControl>
|
|
273
|
-
</>,
|
|
274
|
-
);
|
|
275
|
-
screen.getByText('before').focus();
|
|
276
|
-
await user.tab();
|
|
277
|
-
expect(onChange).not.toHaveBeenCalled();
|
|
278
|
-
});
|
|
279
|
-
|
|
280
|
-
it('does not fire onChange when tabbing in while the selected item is disabled', async () => {
|
|
281
|
-
const user = userEvent.setup();
|
|
282
|
-
const onChange = vi.fn();
|
|
283
|
-
render(
|
|
284
|
-
<>
|
|
285
|
-
<button type="button">before</button>
|
|
286
|
-
<SegmentedControl label="View" value="list" onChange={onChange}>
|
|
287
|
-
<SegmentedControlItem value="grid" label="Grid" />
|
|
288
|
-
<SegmentedControlItem value="list" label="List" isDisabled />
|
|
289
|
-
</SegmentedControl>
|
|
290
|
-
</>,
|
|
291
|
-
);
|
|
292
|
-
screen.getByText('before').focus();
|
|
293
|
-
await user.tab();
|
|
294
|
-
expect(onChange).not.toHaveBeenCalled();
|
|
295
|
-
});
|
|
296
|
-
|
|
297
|
-
it('still selects on arrow-key navigation within the group', async () => {
|
|
298
|
-
const user = userEvent.setup();
|
|
299
|
-
const onChange = vi.fn();
|
|
300
|
-
render(
|
|
301
|
-
<SegmentedControl label="View" value="grid" onChange={onChange}>
|
|
302
|
-
<SegmentedControlItem value="grid" label="Grid" />
|
|
303
|
-
<SegmentedControlItem value="list" label="List" />
|
|
304
|
-
</SegmentedControl>,
|
|
305
|
-
);
|
|
306
|
-
screen.getByRole('radio', {name: 'Grid'}).focus();
|
|
307
|
-
await user.keyboard('{ArrowRight}');
|
|
308
|
-
expect(onChange).toHaveBeenCalledWith('list');
|
|
309
|
-
});
|
|
310
|
-
});
|
|
311
|
-
|
|
312
262
|
it('navigates with ArrowRight and selects', async () => {
|
|
313
263
|
const user = userEvent.setup();
|
|
314
264
|
const handleChange = vi.fn();
|
|
@@ -638,145 +588,3 @@ describe('SegmentedControl disabled state', () => {
|
|
|
638
588
|
});
|
|
639
589
|
});
|
|
640
590
|
});
|
|
641
|
-
|
|
642
|
-
describe('SegmentedControl data-testid forwarding', () => {
|
|
643
|
-
it('forwards data-testid to the radiogroup', () => {
|
|
644
|
-
render(
|
|
645
|
-
<SegmentedControl
|
|
646
|
-
value="grid"
|
|
647
|
-
onChange={() => {}}
|
|
648
|
-
label="View mode"
|
|
649
|
-
data-testid="view-toggle">
|
|
650
|
-
<SegmentedControlItem value="grid" label="Grid" />
|
|
651
|
-
<SegmentedControlItem value="list" label="List" />
|
|
652
|
-
</SegmentedControl>,
|
|
653
|
-
);
|
|
654
|
-
|
|
655
|
-
expect(screen.getByTestId('view-toggle')).toBe(
|
|
656
|
-
screen.getByRole('radiogroup'),
|
|
657
|
-
);
|
|
658
|
-
});
|
|
659
|
-
|
|
660
|
-
it('forwards data-testid to an individual item button', () => {
|
|
661
|
-
render(
|
|
662
|
-
<SegmentedControl value="grid" onChange={() => {}} label="View mode">
|
|
663
|
-
<SegmentedControlItem
|
|
664
|
-
value="grid"
|
|
665
|
-
label="Grid"
|
|
666
|
-
data-testid="opt-grid"
|
|
667
|
-
/>
|
|
668
|
-
<SegmentedControlItem
|
|
669
|
-
value="list"
|
|
670
|
-
label="List"
|
|
671
|
-
data-testid="opt-list"
|
|
672
|
-
/>
|
|
673
|
-
</SegmentedControl>,
|
|
674
|
-
);
|
|
675
|
-
|
|
676
|
-
expect(screen.getByTestId('opt-grid')).toBe(
|
|
677
|
-
screen.getByRole('radio', {name: 'Grid'}),
|
|
678
|
-
);
|
|
679
|
-
expect(screen.getByTestId('opt-list')).toBe(
|
|
680
|
-
screen.getByRole('radio', {name: 'List'}),
|
|
681
|
-
);
|
|
682
|
-
});
|
|
683
|
-
|
|
684
|
-
it('does not let a forwarded prop override the computed role', () => {
|
|
685
|
-
render(
|
|
686
|
-
// A consumer-supplied role must not clobber the component's own
|
|
687
|
-
// radiogroup role (the computed role is applied after {...rest}).
|
|
688
|
-
<SegmentedControl
|
|
689
|
-
value="grid"
|
|
690
|
-
onChange={() => {}}
|
|
691
|
-
label="View mode"
|
|
692
|
-
role="tablist"
|
|
693
|
-
data-testid="view-toggle">
|
|
694
|
-
<SegmentedControlItem value="grid" label="Grid" />
|
|
695
|
-
</SegmentedControl>,
|
|
696
|
-
);
|
|
697
|
-
|
|
698
|
-
expect(screen.getByTestId('view-toggle')).toHaveAttribute(
|
|
699
|
-
'role',
|
|
700
|
-
'radiogroup',
|
|
701
|
-
);
|
|
702
|
-
});
|
|
703
|
-
});
|
|
704
|
-
|
|
705
|
-
describe('SegmentedControlItem onClick composition', () => {
|
|
706
|
-
it('calls a consumer onClick in addition to selecting the item', () => {
|
|
707
|
-
const onChange = vi.fn();
|
|
708
|
-
const onClick = vi.fn();
|
|
709
|
-
render(
|
|
710
|
-
<SegmentedControl value="grid" onChange={onChange} label="View mode">
|
|
711
|
-
<SegmentedControlItem value="list" label="List" onClick={onClick} />
|
|
712
|
-
</SegmentedControl>,
|
|
713
|
-
);
|
|
714
|
-
|
|
715
|
-
fireEvent.click(screen.getByRole('radio', {name: 'List'}));
|
|
716
|
-
|
|
717
|
-
expect(onClick).toHaveBeenCalledTimes(1);
|
|
718
|
-
expect(onChange).toHaveBeenCalledWith('list');
|
|
719
|
-
});
|
|
720
|
-
|
|
721
|
-
it('lets a consumer onClick opt out of selection via preventDefault', () => {
|
|
722
|
-
const onChange = vi.fn();
|
|
723
|
-
render(
|
|
724
|
-
<SegmentedControl value="grid" onChange={onChange} label="View mode">
|
|
725
|
-
<SegmentedControlItem
|
|
726
|
-
value="list"
|
|
727
|
-
label="List"
|
|
728
|
-
onClick={e => e.preventDefault()}
|
|
729
|
-
/>
|
|
730
|
-
</SegmentedControl>,
|
|
731
|
-
);
|
|
732
|
-
|
|
733
|
-
fireEvent.click(screen.getByRole('radio', {name: 'List'}));
|
|
734
|
-
|
|
735
|
-
expect(onChange).not.toHaveBeenCalled();
|
|
736
|
-
});
|
|
737
|
-
});
|
|
738
|
-
|
|
739
|
-
describe('SegmentedControl container handler forwarding', () => {
|
|
740
|
-
it('forwards a consumer onKeyDown while keeping arrow-key navigation', async () => {
|
|
741
|
-
const user = userEvent.setup();
|
|
742
|
-
const onKeyDown = vi.fn();
|
|
743
|
-
const onChange = vi.fn();
|
|
744
|
-
render(
|
|
745
|
-
<SegmentedControl
|
|
746
|
-
value="grid"
|
|
747
|
-
onChange={onChange}
|
|
748
|
-
label="View mode"
|
|
749
|
-
onKeyDown={onKeyDown}>
|
|
750
|
-
<SegmentedControlItem value="grid" label="Grid" />
|
|
751
|
-
<SegmentedControlItem value="list" label="List" />
|
|
752
|
-
</SegmentedControl>,
|
|
753
|
-
);
|
|
754
|
-
|
|
755
|
-
screen.getByRole('radio', {name: 'Grid'}).focus();
|
|
756
|
-
await user.keyboard('{ArrowRight}');
|
|
757
|
-
|
|
758
|
-
expect(onKeyDown).toHaveBeenCalled();
|
|
759
|
-
// Built-in navigation still ran.
|
|
760
|
-
expect(onChange).toHaveBeenCalledWith('list');
|
|
761
|
-
});
|
|
762
|
-
|
|
763
|
-
it('lets a consumer onKeyDown opt out of built-in navigation via preventDefault', async () => {
|
|
764
|
-
const user = userEvent.setup();
|
|
765
|
-
const onChange = vi.fn();
|
|
766
|
-
render(
|
|
767
|
-
<SegmentedControl
|
|
768
|
-
value="grid"
|
|
769
|
-
onChange={onChange}
|
|
770
|
-
label="View mode"
|
|
771
|
-
onKeyDown={e => e.preventDefault()}>
|
|
772
|
-
<SegmentedControlItem value="grid" label="Grid" />
|
|
773
|
-
<SegmentedControlItem value="list" label="List" />
|
|
774
|
-
</SegmentedControl>,
|
|
775
|
-
);
|
|
776
|
-
|
|
777
|
-
screen.getByRole('radio', {name: 'Grid'}).focus();
|
|
778
|
-
await user.keyboard('{ArrowRight}');
|
|
779
|
-
|
|
780
|
-
expect(onChange).not.toHaveBeenCalled();
|
|
781
|
-
});
|
|
782
|
-
});
|
|
@@ -26,7 +26,7 @@ import type {
|
|
|
26
26
|
SegmentedControlSize,
|
|
27
27
|
SegmentedControlLayout,
|
|
28
28
|
} from './SegmentedControlContext';
|
|
29
|
-
import {mergeProps, mergeRefs
|
|
29
|
+
import {mergeProps, mergeRefs} from '../utils';
|
|
30
30
|
import {useSize} from '../SizeContext/SizeContext';
|
|
31
31
|
import type {BaseProps} from '../BaseProps';
|
|
32
32
|
import {themeProps} from '../utils/themeProps';
|
|
@@ -152,10 +152,6 @@ export function SegmentedControl({
|
|
|
152
152
|
xstyle,
|
|
153
153
|
className,
|
|
154
154
|
style,
|
|
155
|
-
onKeyDown: onKeyDownProp,
|
|
156
|
-
onFocus: onFocusProp,
|
|
157
|
-
onBlur: onBlurProp,
|
|
158
|
-
...rest
|
|
159
155
|
}: SegmentedControlProps) {
|
|
160
156
|
const size = useSize(sizeProp, 'md');
|
|
161
157
|
|
|
@@ -192,14 +188,10 @@ export function SegmentedControl({
|
|
|
192
188
|
|
|
193
189
|
const handleContainerKeyDown = useCallback(
|
|
194
190
|
(e: React.KeyboardEvent<HTMLDivElement>) => {
|
|
195
|
-
onKeyDownProp?.(e);
|
|
196
|
-
if (e.defaultPrevented) {
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
191
|
hint.onKeyDown(e);
|
|
200
192
|
handleKeyDown(e);
|
|
201
193
|
},
|
|
202
|
-
[
|
|
194
|
+
[hint, handleKeyDown],
|
|
203
195
|
);
|
|
204
196
|
|
|
205
197
|
// Selection-follows-focus (APG radiogroup): useListFocus only *moves* focus,
|
|
@@ -210,25 +202,12 @@ export function SegmentedControl({
|
|
|
210
202
|
// and the already-selected value is skipped so an initial Tab-in (or a click
|
|
211
203
|
// on the current segment) is a no-op, matching click behavior.
|
|
212
204
|
const handleContainerFocus = useCallback(
|
|
213
|
-
(e: React.FocusEvent
|
|
214
|
-
onFocusProp?.(e);
|
|
215
|
-
if (e.defaultPrevented) {
|
|
216
|
-
return;
|
|
217
|
-
}
|
|
205
|
+
(e: React.FocusEvent) => {
|
|
218
206
|
hint.onFocus(e);
|
|
219
207
|
handleFocus(e);
|
|
220
208
|
if (isDisabled) {
|
|
221
209
|
return;
|
|
222
210
|
}
|
|
223
|
-
// Only select when focus moved WITHIN the group (arrow/Home/End — APG
|
|
224
|
-
// selection-follows-focus). When focus is entering from outside, Tab
|
|
225
|
-
// must stay a pure focus move: with an unmatched or disabled-selected
|
|
226
|
-
// value the roving tab stop falls back to the first enabled radio, and
|
|
227
|
-
// selecting it here would rewrite the form value on mere traversal.
|
|
228
|
-
// Clicks are unaffected: the item's own handleClick selects.
|
|
229
|
-
if (!e.currentTarget.contains(e.relatedTarget)) {
|
|
230
|
-
return;
|
|
231
|
-
}
|
|
232
211
|
const focused = (e.target as HTMLElement | null)?.closest<HTMLElement>(
|
|
233
212
|
'[role="radio"][data-value]',
|
|
234
213
|
);
|
|
@@ -240,7 +219,7 @@ export function SegmentedControl({
|
|
|
240
219
|
onChange(nextValue);
|
|
241
220
|
}
|
|
242
221
|
},
|
|
243
|
-
[
|
|
222
|
+
[hint, handleFocus, isDisabled, onChange, value],
|
|
244
223
|
);
|
|
245
224
|
|
|
246
225
|
const contextValue = useMemo(
|
|
@@ -259,7 +238,6 @@ export function SegmentedControl({
|
|
|
259
238
|
<SegmentedControlContext value={contextValue}>
|
|
260
239
|
<div
|
|
261
240
|
ref={mergeRefs(ref, listRef, disabledMessageTooltip.ref)}
|
|
262
|
-
{...rest}
|
|
263
241
|
role="radiogroup"
|
|
264
242
|
aria-label={label}
|
|
265
243
|
aria-disabled={isDisabled || undefined}
|
|
@@ -268,7 +246,7 @@ export function SegmentedControl({
|
|
|
268
246
|
}
|
|
269
247
|
onKeyDown={handleContainerKeyDown}
|
|
270
248
|
onFocus={handleContainerFocus}
|
|
271
|
-
onBlur={
|
|
249
|
+
onBlur={hint.onBlur}
|
|
272
250
|
{...mergeProps(
|
|
273
251
|
themeProps('segmented-control', {size}),
|
|
274
252
|
stylex.props(
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* - /packages/cli/templates/blocks/components/SegmentedControl/ (showcase blocks)
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import React, {type ReactNode} from 'react';
|
|
18
|
+
import React, {useCallback, type ReactNode} from 'react';
|
|
19
19
|
import * as stylex from '@stylexjs/stylex';
|
|
20
20
|
import {
|
|
21
21
|
colorVars,
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
} from '../theme/tokens.stylex';
|
|
30
30
|
import {useSegmentedControlContext} from './SegmentedControlContext';
|
|
31
31
|
import type {SegmentedControlSize} from './SegmentedControlContext';
|
|
32
|
-
import {mergeProps
|
|
32
|
+
import {mergeProps} from '../utils';
|
|
33
33
|
import type {BaseProps} from '../BaseProps';
|
|
34
34
|
import {themeProps} from '../utils/themeProps';
|
|
35
35
|
|
|
@@ -168,8 +168,6 @@ export function SegmentedControlItem({
|
|
|
168
168
|
isLabelHidden = false,
|
|
169
169
|
icon,
|
|
170
170
|
isDisabled = false,
|
|
171
|
-
onClick: onClickProp,
|
|
172
|
-
...rest
|
|
173
171
|
}: SegmentedControlItemProps) {
|
|
174
172
|
const ctx = useSegmentedControlContext();
|
|
175
173
|
|
|
@@ -184,13 +182,11 @@ export function SegmentedControlItem({
|
|
|
184
182
|
const size: SegmentedControlSize = ctx.size;
|
|
185
183
|
const isFill = ctx.layout === 'fill';
|
|
186
184
|
|
|
187
|
-
|
|
188
|
-
// selection; otherwise selection proceeds when enabled and not selected.
|
|
189
|
-
const handleClick = composeEventHandlers(onClickProp, () => {
|
|
185
|
+
const handleClick = useCallback(() => {
|
|
190
186
|
if (!isItemDisabled && !isSelected) {
|
|
191
187
|
ctx.onChange(value);
|
|
192
188
|
}
|
|
193
|
-
});
|
|
189
|
+
}, [ctx, value, isItemDisabled, isSelected]);
|
|
194
190
|
|
|
195
191
|
const iconElement = icon ? (
|
|
196
192
|
<span {...stylex.props(styles.icon, iconSizeStyles[size])}>{icon}</span>
|
|
@@ -199,7 +195,6 @@ export function SegmentedControlItem({
|
|
|
199
195
|
return (
|
|
200
196
|
<button
|
|
201
197
|
ref={ref}
|
|
202
|
-
{...rest}
|
|
203
198
|
type="button"
|
|
204
199
|
role="radio"
|
|
205
200
|
aria-checked={isSelected}
|
|
@@ -34,7 +34,7 @@ export const docs = {
|
|
|
34
34
|
],
|
|
35
35
|
theming: {
|
|
36
36
|
container: true,
|
|
37
|
-
targets: [{className: 'astryx-selectable-card', visualProps: ['selected'
|
|
37
|
+
targets: [{className: 'astryx-selectable-card', visualProps: ['selected']}],
|
|
38
38
|
},
|
|
39
39
|
playground: {
|
|
40
40
|
defaults: {
|
|
@@ -186,33 +186,7 @@ describe('Selector', () => {
|
|
|
186
186
|
.getByRole('listbox', {hidden: true})
|
|
187
187
|
.closest('[popover]');
|
|
188
188
|
expect(popover?.getAttribute('style')).toContain(
|
|
189
|
-
'position-area:
|
|
190
|
-
);
|
|
191
|
-
});
|
|
192
|
-
|
|
193
|
-
it('emits the direction-independent logical mapping under an RTL ancestor (#3389)', async () => {
|
|
194
|
-
// The self-* position-area keywords resolve against the popover's own
|
|
195
|
-
// inherited direction in the browser, so RTL emits the same string as
|
|
196
|
-
// LTR and the mirroring is pure CSS — jsdom can only assert the string.
|
|
197
|
-
const user = userEvent.setup();
|
|
198
|
-
render(
|
|
199
|
-
<div style={{direction: 'rtl'}}>
|
|
200
|
-
<Selector
|
|
201
|
-
label="Fruit"
|
|
202
|
-
options={OPTIONS}
|
|
203
|
-
value="Banana"
|
|
204
|
-
onChange={() => {}}
|
|
205
|
-
/>
|
|
206
|
-
</div>,
|
|
207
|
-
);
|
|
208
|
-
|
|
209
|
-
await user.click(screen.getByRole('combobox'));
|
|
210
|
-
|
|
211
|
-
const popover = screen
|
|
212
|
-
.getByRole('listbox', {hidden: true})
|
|
213
|
-
.closest('[popover]');
|
|
214
|
-
expect(popover?.getAttribute('style')).toContain(
|
|
215
|
-
'position-area: self-block-end span-self-inline-end',
|
|
189
|
+
'position-area: top span-right',
|
|
216
190
|
);
|
|
217
191
|
});
|
|
218
192
|
|
|
@@ -21,7 +21,7 @@ export const docs = {
|
|
|
21
21
|
targets: [
|
|
22
22
|
{className: 'astryx-side-nav', visualProps: ['mode']},
|
|
23
23
|
{className: 'astryx-side-nav-heading'},
|
|
24
|
-
{className: 'astryx-side-nav-item'
|
|
24
|
+
{className: 'astryx-side-nav-item'},
|
|
25
25
|
{className: 'astryx-side-nav-section'},
|
|
26
26
|
],
|
|
27
27
|
},
|
|
@@ -102,12 +102,6 @@ export const docs = {
|
|
|
102
102
|
description: 'Enables collapse behavior. true for uncontrolled with default toggle button, or an object for controlled mode and advanced config (defaultIsCollapsed, isCollapsed + onCollapsedChange, hasButton, buttonLabel).',
|
|
103
103
|
default: 'false',
|
|
104
104
|
},
|
|
105
|
-
{
|
|
106
|
-
name: 'resizable',
|
|
107
|
-
type: 'boolean | { defaultWidth?: number; minWidth?: number; maxWidth?: number; autoSaveId?: string; onWidthChange?: (width: number) => void }',
|
|
108
|
-
description: 'Enables a resize handle at the inline-end edge. true for defaults (260px initial, 180-480px range), or a ResizableConfig object (defaultWidth, minWidth, maxWidth, autoSaveId for localStorage persistence, onWidthChange). The handle is hidden while collapsed.',
|
|
109
|
-
default: 'false',
|
|
110
|
-
},
|
|
111
105
|
{
|
|
112
106
|
name: 'handleRef',
|
|
113
107
|
type: 'Ref<SideNavImperativeCollapseHandle>',
|
|
@@ -162,61 +162,6 @@ describe('SideNav', () => {
|
|
|
162
162
|
screen.getByRole('button', {name: 'Expand sidebar'}),
|
|
163
163
|
).toBeInTheDocument();
|
|
164
164
|
});
|
|
165
|
-
|
|
166
|
-
it('does not render an empty footer container when collapsible.hasButton is false', () => {
|
|
167
|
-
render(
|
|
168
|
-
<SideNav data-testid="nav" collapsible={{hasButton: false}}>
|
|
169
|
-
Content
|
|
170
|
-
</SideNav>,
|
|
171
|
-
);
|
|
172
|
-
|
|
173
|
-
// The built-in collapse button is opted out (consumers render their own
|
|
174
|
-
// SideNavCollapseButton in the header), so it must not appear...
|
|
175
|
-
expect(
|
|
176
|
-
screen.queryByRole('button', {name: 'Collapse sidebar'}),
|
|
177
|
-
).not.toBeInTheDocument();
|
|
178
|
-
|
|
179
|
-
// ...and no empty sticky-bottom container should be left behind. With no
|
|
180
|
-
// footer/footerIcons and no built-in button, the scrollable content region
|
|
181
|
-
// is the nav's only child.
|
|
182
|
-
const nav = screen.getByTestId('nav');
|
|
183
|
-
expect(nav.children).toHaveLength(1);
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
it('fires a consumer onClick on the collapse button in addition to toggling', async () => {
|
|
187
|
-
const user = userEvent.setup();
|
|
188
|
-
const onClick = vi.fn();
|
|
189
|
-
|
|
190
|
-
function Example() {
|
|
191
|
-
const [isCollapsed, setIsCollapsed] = useState(false);
|
|
192
|
-
const handleRef = useRef<SideNavImperativeCollapseHandle>(null);
|
|
193
|
-
return (
|
|
194
|
-
<>
|
|
195
|
-
<SideNavCollapseButton handleRef={handleRef} onClick={onClick} />
|
|
196
|
-
<SideNav
|
|
197
|
-
handleRef={handleRef}
|
|
198
|
-
collapsible={{
|
|
199
|
-
isCollapsed,
|
|
200
|
-
onCollapsedChange: setIsCollapsed,
|
|
201
|
-
hasButton: false,
|
|
202
|
-
}}>
|
|
203
|
-
<SideNavSection title="Main">
|
|
204
|
-
<SideNavItem label="Dashboard" icon={StubIcon} />
|
|
205
|
-
</SideNavSection>
|
|
206
|
-
</SideNav>
|
|
207
|
-
</>
|
|
208
|
-
);
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
render(<Example />);
|
|
212
|
-
await user.click(screen.getByRole('button', {name: 'Collapse sidebar'}));
|
|
213
|
-
|
|
214
|
-
expect(onClick).toHaveBeenCalledTimes(1);
|
|
215
|
-
// Toggle still ran: the label flipped to "Expand sidebar".
|
|
216
|
-
expect(
|
|
217
|
-
screen.getByRole('button', {name: 'Expand sidebar'}),
|
|
218
|
-
).toBeInTheDocument();
|
|
219
|
-
});
|
|
220
165
|
});
|
|
221
166
|
|
|
222
167
|
// =============================================================================
|
|
@@ -789,17 +734,6 @@ describe('SideNavSection', () => {
|
|
|
789
734
|
const group = screen.getByRole('group');
|
|
790
735
|
expect(group.style.marginTop).toBe('16px');
|
|
791
736
|
});
|
|
792
|
-
|
|
793
|
-
it('forwards arbitrary pass-through attributes (id, aria-*) to root element', () => {
|
|
794
|
-
render(
|
|
795
|
-
<SideNavSection title="Main" id="section-1" aria-describedby="hint">
|
|
796
|
-
<SideNavItem label="Dashboard" />
|
|
797
|
-
</SideNavSection>,
|
|
798
|
-
);
|
|
799
|
-
const group = screen.getByRole('group');
|
|
800
|
-
expect(group).toHaveAttribute('id', 'section-1');
|
|
801
|
-
expect(group).toHaveAttribute('aria-describedby', 'hint');
|
|
802
|
-
});
|
|
803
737
|
});
|
|
804
738
|
|
|
805
739
|
// =============================================================================
|
package/src/SideNav/SideNav.tsx
CHANGED
|
@@ -490,10 +490,6 @@ export function SideNav({
|
|
|
490
490
|
// =========================================================================
|
|
491
491
|
const hasStickyTop = !!(header || topContent);
|
|
492
492
|
const hasStickyBottom = !!(footer || footerIcons);
|
|
493
|
-
// The built-in collapse button only renders when collapse is enabled and it
|
|
494
|
-
// hasn't been opted out via `collapsible.hasButton: false` (e.g. when the
|
|
495
|
-
// consumer places a SideNavCollapseButton in the header instead).
|
|
496
|
-
const showCollapseButton = isCollapsible && hasCollapseButton;
|
|
497
493
|
|
|
498
494
|
// When resizable, override the nav width via inline style
|
|
499
495
|
const resizableNavStyle: React.CSSProperties | undefined = isResizable
|
|
@@ -536,7 +532,7 @@ export function SideNav({
|
|
|
536
532
|
)}>
|
|
537
533
|
{children}
|
|
538
534
|
</div>
|
|
539
|
-
{(hasStickyBottom ||
|
|
535
|
+
{(hasStickyBottom || isCollapsible) && (
|
|
540
536
|
<div
|
|
541
537
|
{...stylex.props(
|
|
542
538
|
styles.stickyBottom,
|
|
@@ -548,7 +544,7 @@ export function SideNav({
|
|
|
548
544
|
styles.footerRow,
|
|
549
545
|
collapsed && styles.footerRowCollapsed,
|
|
550
546
|
)}>
|
|
551
|
-
{
|
|
547
|
+
{isCollapsible && hasCollapseButton && <SideNavCollapseButton />}
|
|
552
548
|
{footerIcons}
|
|
553
549
|
</div>
|
|
554
550
|
</div>
|
|
@@ -23,7 +23,6 @@ import {durationVars, easeVars} from '../theme/tokens.stylex';
|
|
|
23
23
|
import {getIcon} from '../Icon/globalIconRegistry';
|
|
24
24
|
import {Button} from '../Button';
|
|
25
25
|
import type {BaseProps} from '../BaseProps';
|
|
26
|
-
import {composeEventHandlers} from '../utils';
|
|
27
26
|
import {
|
|
28
27
|
useSideNavCollapse,
|
|
29
28
|
type SideNavCollapseState,
|
|
@@ -102,7 +101,6 @@ export function SideNavCollapseButton({
|
|
|
102
101
|
handleRef,
|
|
103
102
|
label,
|
|
104
103
|
children,
|
|
105
|
-
onClick: onClickProp,
|
|
106
104
|
...props
|
|
107
105
|
}: SideNavCollapseButtonProps) {
|
|
108
106
|
const {isCollapsed, toggle, isCollapsible} =
|
|
@@ -121,7 +119,7 @@ export function SideNavCollapseButton({
|
|
|
121
119
|
label={label ?? (isCollapsed ? 'Expand sidebar' : 'Collapse sidebar')}
|
|
122
120
|
variant="ghost"
|
|
123
121
|
{...props}
|
|
124
|
-
onClick={
|
|
122
|
+
onClick={toggle}
|
|
125
123
|
icon={
|
|
126
124
|
children ?? (
|
|
127
125
|
<span
|
|
@@ -142,7 +140,8 @@ SideNavCollapseButton.displayName = 'SideNavCollapseButton';
|
|
|
142
140
|
|
|
143
141
|
function useSideNavCollapseState(
|
|
144
142
|
handleRef:
|
|
145
|
-
React.RefObject<SideNavImperativeCollapseHandle | null>
|
|
143
|
+
| React.RefObject<SideNavImperativeCollapseHandle | null>
|
|
144
|
+
| undefined,
|
|
146
145
|
): SideNavCollapseState {
|
|
147
146
|
const contextCollapseState = useSideNavCollapse();
|
|
148
147
|
|
|
@@ -145,7 +145,6 @@ export function SideNavSection({
|
|
|
145
145
|
className,
|
|
146
146
|
style,
|
|
147
147
|
'data-testid': testId,
|
|
148
|
-
...rest
|
|
149
148
|
}: SideNavSectionProps) {
|
|
150
149
|
const {isCollapsed} = useSideNavCollapse();
|
|
151
150
|
const id = useId();
|
|
@@ -184,16 +183,15 @@ export function SideNavSection({
|
|
|
184
183
|
return (
|
|
185
184
|
<div
|
|
186
185
|
ref={ref}
|
|
186
|
+
role="group"
|
|
187
|
+
aria-labelledby={titleId}
|
|
188
|
+
data-testid={testId}
|
|
187
189
|
{...mergeProps(
|
|
188
190
|
themeProps('side-nav-section'),
|
|
189
191
|
stylex.props(styles.root, xstyle),
|
|
190
192
|
className,
|
|
191
193
|
style,
|
|
192
|
-
)}
|
|
193
|
-
{...rest}
|
|
194
|
-
role="group"
|
|
195
|
-
aria-labelledby={titleId}
|
|
196
|
-
data-testid={testId}>
|
|
194
|
+
)}>
|
|
197
195
|
<div
|
|
198
196
|
{...mergeProps(stylex.props(styles.header), {
|
|
199
197
|
style: shouldHideHeader ? visuallyHiddenStyle : undefined,
|
|
@@ -124,10 +124,10 @@ export const docs = {
|
|
|
124
124
|
},
|
|
125
125
|
{
|
|
126
126
|
name: 'labelSpacing',
|
|
127
|
-
type: "'
|
|
127
|
+
type: "'default' | 'spread'",
|
|
128
128
|
description:
|
|
129
|
-
'Spacing behavior between label and switch. "
|
|
130
|
-
default: "'
|
|
129
|
+
'Spacing behavior between label and switch. "spread" pushes them to opposite ends of the container (full width).',
|
|
130
|
+
default: "'default'",
|
|
131
131
|
},
|
|
132
132
|
],
|
|
133
133
|
theming: {
|
|
@@ -270,10 +270,10 @@ export const docsZh = {
|
|
|
270
270
|
},
|
|
271
271
|
{
|
|
272
272
|
name: 'labelSpacing',
|
|
273
|
-
type: "'
|
|
273
|
+
type: "'default' | 'spread'",
|
|
274
274
|
description:
|
|
275
|
-
'标签和开关之间的间距行为。"
|
|
276
|
-
default: "'
|
|
275
|
+
'标签和开关之间的间距行为。"spread" 将它们推到容器的两端(全宽)。',
|
|
276
|
+
default: "'default'",
|
|
277
277
|
},
|
|
278
278
|
],
|
|
279
279
|
theming: {
|
|
@@ -329,6 +329,6 @@ export const docsDense = {
|
|
|
329
329
|
labelIcon: 'Icon before label text.',
|
|
330
330
|
labelTooltip: 'Tooltip text in info icon at label end.',
|
|
331
331
|
labelPosition: 'Which side label appears; "start" places before switch.',
|
|
332
|
-
labelSpacing: 'Spacing behavior; "
|
|
332
|
+
labelSpacing: 'Spacing behavior; "spread" pushes to opposite ends (full width).',
|
|
333
333
|
},
|
|
334
334
|
};
|