@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
|
@@ -4,21 +4,15 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file Collapsible.tsx
|
|
7
|
-
* @input Uses React, StyleX, useCollapsible hook,
|
|
7
|
+
* @input Uses React, StyleX, useCollapsible hook, getIcon, theme tokens
|
|
8
8
|
* @output Exports Collapsible component and CollapsibleProps
|
|
9
9
|
* @position Collapsible content primitive — trigger toggles visibility of children
|
|
10
10
|
*
|
|
11
11
|
* Collapsible is a standalone primitive that makes any content collapsible.
|
|
12
12
|
* It renders a trigger area (always visible) and a content area that toggles.
|
|
13
|
-
* Handles state management, accessibility (aria-expanded
|
|
14
|
-
* the trigger to its content region), and chevron indicator.
|
|
13
|
+
* Handles state management, accessibility (aria-expanded), and chevron indicator.
|
|
15
14
|
*
|
|
16
15
|
* Works standalone or coordinated by CollapsibleGroup via the `value` prop.
|
|
17
|
-
* When the surrounding CollapsibleGroup enables `dividers`, each Collapsible
|
|
18
|
-
* draws its own row chrome (borderBlockStart suppressed on :first-child, plus
|
|
19
|
-
* density padding) from CollapsibleGroupPresentationContext — StyleX has no
|
|
20
|
-
* child selectors, so the group cannot draw it from outside. The presentation
|
|
21
|
-
* context is reset around children so nested collapsibles stay chrome-free.
|
|
22
16
|
*
|
|
23
17
|
* SYNC: When modified, update these files to stay in sync:
|
|
24
18
|
* - /packages/core/src/Collapsible/index.ts (exports)
|
|
@@ -27,10 +21,9 @@
|
|
|
27
21
|
* - /packages/cli/templates/blocks/components/Collapsible/ (showcase blocks)
|
|
28
22
|
*/
|
|
29
23
|
|
|
30
|
-
import
|
|
24
|
+
import type {ReactNode} from 'react';
|
|
31
25
|
import * as stylex from '@stylexjs/stylex';
|
|
32
26
|
import {
|
|
33
|
-
borderVars,
|
|
34
27
|
colorVars,
|
|
35
28
|
typographyVars,
|
|
36
29
|
fontWeightVars,
|
|
@@ -40,7 +33,6 @@ import {
|
|
|
40
33
|
easeVars,
|
|
41
34
|
} from '../theme/tokens.stylex';
|
|
42
35
|
import {useCollapsible} from './useCollapsible';
|
|
43
|
-
import {CollapsibleGroupPresentationContext} from './CollapsibleGroupContext';
|
|
44
36
|
import {getIcon} from '../Icon/globalIconRegistry';
|
|
45
37
|
import {mergeProps} from '../utils';
|
|
46
38
|
import type {BaseProps} from '../BaseProps';
|
|
@@ -65,16 +57,6 @@ const styles = stylex.create({
|
|
|
65
57
|
color: colorVars['--color-text-primary'],
|
|
66
58
|
textAlign: 'start',
|
|
67
59
|
paddingBlock: 0,
|
|
68
|
-
// `all: unset` above wipes the UA focus outline; restore a keyboard-only
|
|
69
|
-
// focus ring using the standard token/offset (WCAG 2.4.7).
|
|
70
|
-
outline: {
|
|
71
|
-
default: null,
|
|
72
|
-
':focus-visible': `2px solid ${colorVars['--color-accent']}`,
|
|
73
|
-
},
|
|
74
|
-
outlineOffset: {
|
|
75
|
-
default: '0',
|
|
76
|
-
':focus-visible': '2px',
|
|
77
|
-
},
|
|
78
60
|
},
|
|
79
61
|
// Capsize: trim leading from text triggers
|
|
80
62
|
triggerLabel: {
|
|
@@ -105,42 +87,8 @@ const styles = stylex.create({
|
|
|
105
87
|
content: {
|
|
106
88
|
paddingBlockStart: spacingVars['--spacing-1'],
|
|
107
89
|
},
|
|
108
|
-
// Group divider chrome — a hairline above every item except the first.
|
|
109
|
-
// The group's wrapper (or 'all' mode) owns the outer edges.
|
|
110
|
-
divided: {
|
|
111
|
-
borderBlockStartWidth: {
|
|
112
|
-
default: borderVars['--border-width'],
|
|
113
|
-
':first-child': '0',
|
|
114
|
-
},
|
|
115
|
-
borderBlockStartStyle: 'solid',
|
|
116
|
-
borderBlockStartColor: colorVars['--color-border'],
|
|
117
|
-
},
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
// Density padding for divided/padded accordion rows. paddingBlock mapping
|
|
121
|
-
// follows Table's density scale (spacing-1/2/3); content only pads its end
|
|
122
|
-
// so text doesn't sit on the divider below (block-start stays spacing-1).
|
|
123
|
-
const densityStyles = stylex.create({
|
|
124
|
-
triggerCompact: {paddingBlock: spacingVars['--spacing-1']},
|
|
125
|
-
triggerBalanced: {paddingBlock: spacingVars['--spacing-2']},
|
|
126
|
-
triggerSpacious: {paddingBlock: spacingVars['--spacing-3']},
|
|
127
|
-
contentCompact: {paddingBlockEnd: spacingVars['--spacing-1']},
|
|
128
|
-
contentBalanced: {paddingBlockEnd: spacingVars['--spacing-2']},
|
|
129
|
-
contentSpacious: {paddingBlockEnd: spacingVars['--spacing-3']},
|
|
130
90
|
});
|
|
131
91
|
|
|
132
|
-
const triggerDensity = {
|
|
133
|
-
compact: densityStyles.triggerCompact,
|
|
134
|
-
balanced: densityStyles.triggerBalanced,
|
|
135
|
-
spacious: densityStyles.triggerSpacious,
|
|
136
|
-
} as const;
|
|
137
|
-
|
|
138
|
-
const contentDensity = {
|
|
139
|
-
compact: densityStyles.contentCompact,
|
|
140
|
-
balanced: densityStyles.contentBalanced,
|
|
141
|
-
spacious: densityStyles.contentSpacious,
|
|
142
|
-
} as const;
|
|
143
|
-
|
|
144
92
|
export interface CollapsibleProps extends BaseProps {
|
|
145
93
|
/** Ref forwarded to the root element */
|
|
146
94
|
ref?: React.Ref<HTMLDivElement>;
|
|
@@ -244,25 +192,14 @@ export function Collapsible({
|
|
|
244
192
|
value,
|
|
245
193
|
});
|
|
246
194
|
|
|
247
|
-
const presentation = use(CollapsibleGroupPresentationContext);
|
|
248
|
-
const isDivided = presentation != null && presentation.dividers !== 'none';
|
|
249
|
-
const density = presentation?.density ?? null;
|
|
250
|
-
|
|
251
195
|
const chevronIcon = getIcon('chevronDown');
|
|
252
196
|
|
|
253
|
-
// Links the trigger to the region it shows/hides so assistive tech can move
|
|
254
|
-
// from the button to its controlled content (disclosure pattern).
|
|
255
|
-
const contentId = useId();
|
|
256
|
-
|
|
257
197
|
return (
|
|
258
198
|
<div
|
|
259
199
|
ref={ref}
|
|
260
200
|
{...mergeProps(
|
|
261
|
-
themeProps('collapsible',
|
|
262
|
-
|
|
263
|
-
density: density ?? undefined,
|
|
264
|
-
}),
|
|
265
|
-
stylex.props(styles.root, isDivided && styles.divided, xstyle),
|
|
201
|
+
themeProps('collapsible'),
|
|
202
|
+
stylex.props(styles.root, xstyle),
|
|
266
203
|
className,
|
|
267
204
|
style,
|
|
268
205
|
)}
|
|
@@ -271,11 +208,7 @@ export function Collapsible({
|
|
|
271
208
|
type="button"
|
|
272
209
|
onClick={toggle}
|
|
273
210
|
aria-expanded={isOpen}
|
|
274
|
-
|
|
275
|
-
{...stylex.props(
|
|
276
|
-
styles.trigger,
|
|
277
|
-
density != null && triggerDensity[density],
|
|
278
|
-
)}>
|
|
211
|
+
{...stylex.props(styles.trigger)}>
|
|
279
212
|
<span {...stylex.props(styles.triggerLabel)}>{trigger}</span>
|
|
280
213
|
<span
|
|
281
214
|
{...stylex.props(
|
|
@@ -286,19 +219,10 @@ export function Collapsible({
|
|
|
286
219
|
</span>
|
|
287
220
|
</button>
|
|
288
221
|
<div
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
styles.content,
|
|
292
|
-
|
|
293
|
-
!isOpen && styles.contentHidden,
|
|
294
|
-
)}>
|
|
295
|
-
{presentation != null ? (
|
|
296
|
-
<CollapsibleGroupPresentationContext value={null}>
|
|
297
|
-
{children}
|
|
298
|
-
</CollapsibleGroupPresentationContext>
|
|
299
|
-
) : (
|
|
300
|
-
children
|
|
301
|
-
)}
|
|
222
|
+
{...(isOpen
|
|
223
|
+
? stylex.props(styles.content)
|
|
224
|
+
: stylex.props(styles.content, styles.contentHidden))}>
|
|
225
|
+
{children}
|
|
302
226
|
</div>
|
|
303
227
|
</div>
|
|
304
228
|
);
|
|
@@ -7,7 +7,7 @@ export const docs = {
|
|
|
7
7
|
subComponentOf: 'Collapsible',
|
|
8
8
|
displayName: 'Collapsible Group',
|
|
9
9
|
isHiddenFromOverview: true,
|
|
10
|
-
description: 'Coordinates multiple Collapsible instances so only one (single mode) or any number (multiple mode) can be open at a time. Renders no wrapper DOM element
|
|
10
|
+
description: 'Coordinates multiple Collapsible instances so only one (single mode) or any number (multiple mode) can be open at a time. Renders no wrapper DOM element.',
|
|
11
11
|
props: [
|
|
12
12
|
{
|
|
13
13
|
name: 'type',
|
|
@@ -30,17 +30,6 @@ export const docs = {
|
|
|
30
30
|
type: '(value: string | string[]) => void',
|
|
31
31
|
description: 'Callback invoked when the set of open items changes.',
|
|
32
32
|
},
|
|
33
|
-
{
|
|
34
|
-
name: 'dividers',
|
|
35
|
-
type: "'between' | 'all' | 'none'",
|
|
36
|
-
description: "Divider style rendered around the group's items. 'between' draws hairlines between adjacent items; 'all' adds the group's top and bottom edges. When enabled, the group renders a wrapper div and items default to 'balanced' density. Pair with bare Collapsible children; Card-wrapped items provide their own separation.",
|
|
37
|
-
default: "'none'",
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
name: 'density',
|
|
41
|
-
type: "'compact' | 'balanced' | 'spacious'",
|
|
42
|
-
description: "Row density controlling trigger and content block padding on the group's items. Defaults to 'balanced' when dividers are shown; otherwise items keep their default unpadded look.",
|
|
43
|
-
},
|
|
44
33
|
{
|
|
45
34
|
name: 'children',
|
|
46
35
|
type: 'ReactNode',
|
|
@@ -63,7 +52,7 @@ export const docsZh = {
|
|
|
63
52
|
name: 'CollapsibleGroup',
|
|
64
53
|
isHiddenFromOverview: true,
|
|
65
54
|
displayName: 'Collapsible Group',
|
|
66
|
-
description: '协调多个 Collapsible 实例,使同一时间只有一个(single 模式)或任意数量(multiple
|
|
55
|
+
description: '协调多个 Collapsible 实例,使同一时间只有一个(single 模式)或任意数量(multiple 模式)可以展开。不渲染包裹 DOM 元素。',
|
|
67
56
|
props: [
|
|
68
57
|
{
|
|
69
58
|
name: 'type',
|
|
@@ -86,17 +75,6 @@ export const docsZh = {
|
|
|
86
75
|
type: '(value: string | string[]) => void',
|
|
87
76
|
description: '展开项目集合变更时调用的回调。',
|
|
88
77
|
},
|
|
89
|
-
{
|
|
90
|
-
name: 'dividers',
|
|
91
|
-
type: "'between' | 'all' | 'none'",
|
|
92
|
-
description: "渲染在组项目周围的分隔线样式。'between' 仅在相邻项目之间绘制细线;'all' 额外绘制组的顶部和底部边缘。启用后组会渲染一个包裹 div,且项目默认使用 'balanced' 密度。适合搭配裸 Collapsible 子项使用;用 Card 包裹的项目自带视觉分隔。",
|
|
93
|
-
default: "'none'",
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
name: 'density',
|
|
97
|
-
type: "'compact' | 'balanced' | 'spacious'",
|
|
98
|
-
description: "控制组内项目触发器和内容块内边距的行密度。显示分隔线时默认为 'balanced';否则项目保持默认的无内边距外观。",
|
|
99
|
-
},
|
|
100
78
|
{
|
|
101
79
|
name: 'children',
|
|
102
80
|
type: 'ReactNode',
|
|
@@ -110,14 +88,12 @@ export const docsDense = {
|
|
|
110
88
|
name: 'CollapsibleGroup',
|
|
111
89
|
isHiddenFromOverview: true,
|
|
112
90
|
displayName: 'Collapsible Group',
|
|
113
|
-
description: 'coordinates multiple Collapsible instances; single or multiple open. no wrapper DOM
|
|
91
|
+
description: 'coordinates multiple Collapsible instances; single or multiple open. no wrapper DOM.',
|
|
114
92
|
propDescriptions: {
|
|
115
93
|
type: 'one or many items open simultaneously',
|
|
116
94
|
defaultValue: 'default open item(s) (uncontrolled); string for single, array for multiple',
|
|
117
95
|
value: 'controlled open item(s)',
|
|
118
96
|
onChange: 'callback on open items change',
|
|
119
|
-
dividers: "row hairlines: 'between' items only, 'all' adds outer edges, 'none' (default); enables wrapper div + 'balanced' density; use bare Collapsible children",
|
|
120
|
-
density: "row padding 'compact' | 'balanced' | 'spacious'; defaults 'balanced' with dividers, else unpadded",
|
|
121
97
|
children: 'Collapsible instances to coordinate',
|
|
122
98
|
},
|
|
123
99
|
};
|
|
@@ -77,22 +77,6 @@ describe('Collapsible', () => {
|
|
|
77
77
|
expect(screen.getByText('Hidden content')).not.toBeVisible();
|
|
78
78
|
});
|
|
79
79
|
|
|
80
|
-
it('links the trigger to its content region via aria-controls', () => {
|
|
81
|
-
render(
|
|
82
|
-
<Collapsible trigger="Details">
|
|
83
|
-
<p>Region content</p>
|
|
84
|
-
</Collapsible>,
|
|
85
|
-
);
|
|
86
|
-
|
|
87
|
-
const trigger = screen.getByRole('button', {name: /Details/});
|
|
88
|
-
const controlsId = trigger.getAttribute('aria-controls');
|
|
89
|
-
// aria-controls must be present and point at the real content region.
|
|
90
|
-
expect(controlsId).toBeTruthy();
|
|
91
|
-
const region = document.getElementById(controlsId as string);
|
|
92
|
-
expect(region).not.toBeNull();
|
|
93
|
-
expect(region).toContainElement(screen.getByText('Region content'));
|
|
94
|
-
});
|
|
95
|
-
|
|
96
80
|
it('respects controlled isOpen/onOpenChange', async () => {
|
|
97
81
|
const onOpenChange = vi.fn();
|
|
98
82
|
const user = userEvent.setup();
|
|
@@ -127,36 +111,6 @@ describe('Collapsible', () => {
|
|
|
127
111
|
expect(screen.getByText('Controlled content')).not.toBeVisible();
|
|
128
112
|
});
|
|
129
113
|
|
|
130
|
-
it('self-toggles in uncontrolled mode even when onOpenChange is supplied', async () => {
|
|
131
|
-
// Regression: passing onOpenChange without isOpen must NOT make the
|
|
132
|
-
// component behave as controlled. Internal state should still drive
|
|
133
|
-
// visibility, and the callback should fire in addition.
|
|
134
|
-
const onOpenChange = vi.fn();
|
|
135
|
-
const user = userEvent.setup();
|
|
136
|
-
render(
|
|
137
|
-
<Collapsible trigger="Uncontrolled" onOpenChange={onOpenChange}>
|
|
138
|
-
<p>Uncontrolled content</p>
|
|
139
|
-
</Collapsible>,
|
|
140
|
-
);
|
|
141
|
-
|
|
142
|
-
const trigger = screen.getByRole('button', {name: /Uncontrolled/});
|
|
143
|
-
// Starts open (defaultIsOpen defaults to true).
|
|
144
|
-
expect(trigger).toHaveAttribute('aria-expanded', 'true');
|
|
145
|
-
expect(screen.getByText('Uncontrolled content')).toBeVisible();
|
|
146
|
-
|
|
147
|
-
// Click collapses via internal state AND notifies.
|
|
148
|
-
await user.click(trigger);
|
|
149
|
-
expect(trigger).toHaveAttribute('aria-expanded', 'false');
|
|
150
|
-
expect(screen.getByText('Uncontrolled content')).not.toBeVisible();
|
|
151
|
-
expect(onOpenChange).toHaveBeenNthCalledWith(1, false);
|
|
152
|
-
|
|
153
|
-
// Click again re-expands — proving the component isn't stuck.
|
|
154
|
-
await user.click(trigger);
|
|
155
|
-
expect(trigger).toHaveAttribute('aria-expanded', 'true');
|
|
156
|
-
expect(screen.getByText('Uncontrolled content')).toBeVisible();
|
|
157
|
-
expect(onOpenChange).toHaveBeenNthCalledWith(2, true);
|
|
158
|
-
});
|
|
159
|
-
|
|
160
114
|
it('renders chevron indicator', () => {
|
|
161
115
|
render(
|
|
162
116
|
<Collapsible trigger="With Chevron">
|
|
@@ -443,276 +397,4 @@ describe('CollapsibleGroup', () => {
|
|
|
443
397
|
expect(trigger).toHaveAttribute('aria-expanded', 'true');
|
|
444
398
|
});
|
|
445
399
|
});
|
|
446
|
-
|
|
447
|
-
describe('dividers', () => {
|
|
448
|
-
function getItem(name: RegExp): HTMLElement {
|
|
449
|
-
const root = screen
|
|
450
|
-
.getByRole('button', {name})
|
|
451
|
-
.closest('.astryx-collapsible');
|
|
452
|
-
expect(root).not.toBeNull();
|
|
453
|
-
return root as HTMLElement;
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
it('renders no wrapper DOM by default and with dividers="none"', () => {
|
|
457
|
-
const {container, rerender} = render(
|
|
458
|
-
<CollapsibleGroup>
|
|
459
|
-
<Collapsible trigger="Item A" value="a">
|
|
460
|
-
<p>Content A</p>
|
|
461
|
-
</Collapsible>
|
|
462
|
-
</CollapsibleGroup>,
|
|
463
|
-
);
|
|
464
|
-
expect(container.querySelector('.astryx-collapsible-group')).toBeNull();
|
|
465
|
-
|
|
466
|
-
rerender(
|
|
467
|
-
<CollapsibleGroup dividers="none">
|
|
468
|
-
<Collapsible trigger="Item A" value="a">
|
|
469
|
-
<p>Content A</p>
|
|
470
|
-
</Collapsible>
|
|
471
|
-
</CollapsibleGroup>,
|
|
472
|
-
);
|
|
473
|
-
expect(container.querySelector('.astryx-collapsible-group')).toBeNull();
|
|
474
|
-
});
|
|
475
|
-
|
|
476
|
-
it('renders a wrapper with data attributes when dividers are enabled', () => {
|
|
477
|
-
const {container} = render(
|
|
478
|
-
<CollapsibleGroup dividers="between">
|
|
479
|
-
<Collapsible trigger="Item A" value="a">
|
|
480
|
-
<p>Content A</p>
|
|
481
|
-
</Collapsible>
|
|
482
|
-
<Collapsible trigger="Item B" value="b">
|
|
483
|
-
<p>Content B</p>
|
|
484
|
-
</Collapsible>
|
|
485
|
-
</CollapsibleGroup>,
|
|
486
|
-
);
|
|
487
|
-
|
|
488
|
-
const wrapper = container.querySelector('.astryx-collapsible-group');
|
|
489
|
-
expect(wrapper).not.toBeNull();
|
|
490
|
-
expect(wrapper).toHaveAttribute('data-dividers', 'between');
|
|
491
|
-
// Divided groups default to balanced density
|
|
492
|
-
expect(wrapper).toHaveAttribute('data-density', 'balanced');
|
|
493
|
-
expect(wrapper).toContainElement(getItem(/Item A/));
|
|
494
|
-
expect(wrapper).toContainElement(getItem(/Item B/));
|
|
495
|
-
});
|
|
496
|
-
|
|
497
|
-
it('reflects dividers and density on each item', () => {
|
|
498
|
-
render(
|
|
499
|
-
<CollapsibleGroup dividers="all" density="compact">
|
|
500
|
-
<Collapsible trigger="Item A" value="a">
|
|
501
|
-
<p>Content A</p>
|
|
502
|
-
</Collapsible>
|
|
503
|
-
</CollapsibleGroup>,
|
|
504
|
-
);
|
|
505
|
-
|
|
506
|
-
const item = getItem(/Item A/);
|
|
507
|
-
expect(item).toHaveAttribute('data-dividers', 'all');
|
|
508
|
-
expect(item).toHaveAttribute('data-density', 'compact');
|
|
509
|
-
});
|
|
510
|
-
|
|
511
|
-
it('does not reflect divider chrome on items without dividers', () => {
|
|
512
|
-
render(
|
|
513
|
-
<CollapsibleGroup>
|
|
514
|
-
<Collapsible trigger="Item A" value="a">
|
|
515
|
-
<p>Content A</p>
|
|
516
|
-
</Collapsible>
|
|
517
|
-
</CollapsibleGroup>,
|
|
518
|
-
);
|
|
519
|
-
|
|
520
|
-
const item = getItem(/Item A/);
|
|
521
|
-
expect(item).not.toHaveAttribute('data-dividers');
|
|
522
|
-
expect(item).not.toHaveAttribute('data-density');
|
|
523
|
-
});
|
|
524
|
-
|
|
525
|
-
it('applies density without dividers (and without a wrapper)', () => {
|
|
526
|
-
const {container} = render(
|
|
527
|
-
<CollapsibleGroup density="spacious">
|
|
528
|
-
<Collapsible trigger="Item A" value="a">
|
|
529
|
-
<p>Content A</p>
|
|
530
|
-
</Collapsible>
|
|
531
|
-
</CollapsibleGroup>,
|
|
532
|
-
);
|
|
533
|
-
|
|
534
|
-
expect(container.querySelector('.astryx-collapsible-group')).toBeNull();
|
|
535
|
-
expect(getItem(/Item A/)).toHaveAttribute('data-density', 'spacious');
|
|
536
|
-
});
|
|
537
|
-
|
|
538
|
-
it('does not leak divider chrome into nested collapsibles', () => {
|
|
539
|
-
render(
|
|
540
|
-
<CollapsibleGroup dividers="between" defaultValue="outer">
|
|
541
|
-
<Collapsible trigger="Outer" value="outer">
|
|
542
|
-
<Collapsible trigger="Nested">
|
|
543
|
-
<p>Nested content</p>
|
|
544
|
-
</Collapsible>
|
|
545
|
-
</Collapsible>
|
|
546
|
-
</CollapsibleGroup>,
|
|
547
|
-
);
|
|
548
|
-
|
|
549
|
-
expect(getItem(/Outer/)).toHaveAttribute('data-dividers', 'between');
|
|
550
|
-
expect(getItem(/Nested/)).not.toHaveAttribute('data-dividers');
|
|
551
|
-
expect(getItem(/Nested/)).not.toHaveAttribute('data-density');
|
|
552
|
-
});
|
|
553
|
-
|
|
554
|
-
it('keeps group coordination working with dividers enabled', async () => {
|
|
555
|
-
const user = userEvent.setup();
|
|
556
|
-
render(
|
|
557
|
-
<CollapsibleGroup type="single" dividers="between" defaultValue="a">
|
|
558
|
-
<Collapsible trigger="Item A" value="a">
|
|
559
|
-
<p>Content A</p>
|
|
560
|
-
</Collapsible>
|
|
561
|
-
<Collapsible trigger="Item B" value="b">
|
|
562
|
-
<p>Content B</p>
|
|
563
|
-
</Collapsible>
|
|
564
|
-
</CollapsibleGroup>,
|
|
565
|
-
);
|
|
566
|
-
|
|
567
|
-
expect(screen.getByText('Content A')).toBeVisible();
|
|
568
|
-
await user.click(screen.getByRole('button', {name: /Item B/}));
|
|
569
|
-
expect(screen.getByText('Content A')).not.toBeVisible();
|
|
570
|
-
expect(screen.getByText('Content B')).toBeVisible();
|
|
571
|
-
});
|
|
572
|
-
|
|
573
|
-
it('applies xstyle/className/style to the wrapper in divider mode', () => {
|
|
574
|
-
const {container} = render(
|
|
575
|
-
<CollapsibleGroup
|
|
576
|
-
dividers="between"
|
|
577
|
-
className="custom-class"
|
|
578
|
-
data-testid="group">
|
|
579
|
-
<Collapsible trigger="Item A" value="a">
|
|
580
|
-
<p>Content A</p>
|
|
581
|
-
</Collapsible>
|
|
582
|
-
</CollapsibleGroup>,
|
|
583
|
-
);
|
|
584
|
-
|
|
585
|
-
const wrapper = container.querySelector('.astryx-collapsible-group');
|
|
586
|
-
expect(wrapper).toHaveClass('custom-class');
|
|
587
|
-
expect(wrapper).toHaveAttribute('data-testid', 'group');
|
|
588
|
-
});
|
|
589
|
-
|
|
590
|
-
it('forwards ref to the wrapper in divider mode', () => {
|
|
591
|
-
const ref = {current: null as HTMLElement | null};
|
|
592
|
-
const {container} = render(
|
|
593
|
-
<CollapsibleGroup dividers="between" ref={ref}>
|
|
594
|
-
<Collapsible trigger="Item A" value="a">
|
|
595
|
-
<p>Content A</p>
|
|
596
|
-
</Collapsible>
|
|
597
|
-
</CollapsibleGroup>,
|
|
598
|
-
);
|
|
599
|
-
|
|
600
|
-
expect(ref.current).toBe(
|
|
601
|
-
container.querySelector('.astryx-collapsible-group'),
|
|
602
|
-
);
|
|
603
|
-
});
|
|
604
|
-
|
|
605
|
-
it('explicit density overrides the divider default', () => {
|
|
606
|
-
const {container} = render(
|
|
607
|
-
<CollapsibleGroup dividers="between" density="spacious">
|
|
608
|
-
<Collapsible trigger="Item A" value="a">
|
|
609
|
-
<p>Content A</p>
|
|
610
|
-
</Collapsible>
|
|
611
|
-
</CollapsibleGroup>,
|
|
612
|
-
);
|
|
613
|
-
|
|
614
|
-
const wrapper = container.querySelector('.astryx-collapsible-group');
|
|
615
|
-
expect(wrapper).toHaveAttribute('data-density', 'spacious');
|
|
616
|
-
expect(getItem(/Item A/)).toHaveAttribute('data-density', 'spacious');
|
|
617
|
-
});
|
|
618
|
-
|
|
619
|
-
it('tolerates interleaved non-Collapsible children', async () => {
|
|
620
|
-
const user = userEvent.setup();
|
|
621
|
-
render(
|
|
622
|
-
<CollapsibleGroup type="single" dividers="between" defaultValue="a">
|
|
623
|
-
<Collapsible trigger="Item A" value="a">
|
|
624
|
-
<p>Content A</p>
|
|
625
|
-
</Collapsible>
|
|
626
|
-
<hr data-testid="separator" />
|
|
627
|
-
<Collapsible trigger="Item B" value="b">
|
|
628
|
-
<p>Content B</p>
|
|
629
|
-
</Collapsible>
|
|
630
|
-
</CollapsibleGroup>,
|
|
631
|
-
);
|
|
632
|
-
|
|
633
|
-
expect(screen.getByTestId('separator')).toBeInTheDocument();
|
|
634
|
-
expect(getItem(/Item A/)).toHaveAttribute('data-dividers', 'between');
|
|
635
|
-
expect(getItem(/Item B/)).toHaveAttribute('data-dividers', 'between');
|
|
636
|
-
await user.click(screen.getByRole('button', {name: /Item B/}));
|
|
637
|
-
expect(screen.getByText('Content A')).not.toBeVisible();
|
|
638
|
-
expect(screen.getByText('Content B')).toBeVisible();
|
|
639
|
-
});
|
|
640
|
-
|
|
641
|
-
it('lets a nested group define its own chrome instead of inheriting', () => {
|
|
642
|
-
render(
|
|
643
|
-
<CollapsibleGroup dividers="between" defaultValue="outer">
|
|
644
|
-
<Collapsible trigger="Outer" value="outer">
|
|
645
|
-
<CollapsibleGroup type="multiple" dividers="all">
|
|
646
|
-
<Collapsible trigger="Inner divided" value="in-a">
|
|
647
|
-
<p>Inner content</p>
|
|
648
|
-
</Collapsible>
|
|
649
|
-
</CollapsibleGroup>
|
|
650
|
-
<CollapsibleGroup type="multiple">
|
|
651
|
-
<Collapsible trigger="Inner plain" value="in-b">
|
|
652
|
-
<p>Inner content</p>
|
|
653
|
-
</Collapsible>
|
|
654
|
-
</CollapsibleGroup>
|
|
655
|
-
</Collapsible>
|
|
656
|
-
</CollapsibleGroup>,
|
|
657
|
-
);
|
|
658
|
-
|
|
659
|
-
expect(getItem(/Outer/)).toHaveAttribute('data-dividers', 'between');
|
|
660
|
-
expect(getItem(/Inner divided/)).toHaveAttribute('data-dividers', 'all');
|
|
661
|
-
expect(getItem(/Inner plain/)).not.toHaveAttribute('data-dividers');
|
|
662
|
-
});
|
|
663
|
-
|
|
664
|
-
it('keeps controlled coordination and onChange shape with dividers', async () => {
|
|
665
|
-
const user = userEvent.setup();
|
|
666
|
-
const onChange = vi.fn();
|
|
667
|
-
const {rerender} = render(
|
|
668
|
-
<CollapsibleGroup
|
|
669
|
-
type="single"
|
|
670
|
-
dividers="all"
|
|
671
|
-
value="a"
|
|
672
|
-
onChange={onChange}>
|
|
673
|
-
<Collapsible trigger="Item A" value="a">
|
|
674
|
-
<p>Content A</p>
|
|
675
|
-
</Collapsible>
|
|
676
|
-
<Collapsible trigger="Item B" value="b">
|
|
677
|
-
<p>Content B</p>
|
|
678
|
-
</Collapsible>
|
|
679
|
-
</CollapsibleGroup>,
|
|
680
|
-
);
|
|
681
|
-
|
|
682
|
-
await user.click(screen.getByRole('button', {name: /Item B/}));
|
|
683
|
-
expect(onChange).toHaveBeenCalledWith('b');
|
|
684
|
-
// Controlled: nothing opens until the parent passes the new value
|
|
685
|
-
expect(screen.getByText('Content B')).not.toBeVisible();
|
|
686
|
-
|
|
687
|
-
rerender(
|
|
688
|
-
<CollapsibleGroup
|
|
689
|
-
type="single"
|
|
690
|
-
dividers="all"
|
|
691
|
-
value="b"
|
|
692
|
-
onChange={onChange}>
|
|
693
|
-
<Collapsible trigger="Item A" value="a">
|
|
694
|
-
<p>Content A</p>
|
|
695
|
-
</Collapsible>
|
|
696
|
-
<Collapsible trigger="Item B" value="b">
|
|
697
|
-
<p>Content B</p>
|
|
698
|
-
</Collapsible>
|
|
699
|
-
</CollapsibleGroup>,
|
|
700
|
-
);
|
|
701
|
-
expect(screen.getByText('Content A')).not.toBeVisible();
|
|
702
|
-
expect(screen.getByText('Content B')).toBeVisible();
|
|
703
|
-
});
|
|
704
|
-
|
|
705
|
-
it('renders standalone Collapsible without any group chrome', () => {
|
|
706
|
-
render(
|
|
707
|
-
<Collapsible trigger="Alone">
|
|
708
|
-
<p>Standalone content</p>
|
|
709
|
-
</Collapsible>,
|
|
710
|
-
);
|
|
711
|
-
|
|
712
|
-
const item = getItem(/Alone/);
|
|
713
|
-
expect(item).not.toHaveAttribute('data-dividers');
|
|
714
|
-
expect(item).not.toHaveAttribute('data-density');
|
|
715
|
-
expect(item.querySelector('.astryx-collapsible-group')).toBeNull();
|
|
716
|
-
});
|
|
717
|
-
});
|
|
718
400
|
});
|