@astryxdesign/core 0.1.4-canary.fd7ab46 → 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.js +15 -15
- 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.js +4 -4
- 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 +60 -60
- 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/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/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.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 -4
- 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/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.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/NavMenu/NavMenu.doc.mjs +0 -15
- package/src/NumberInput/NumberInput.test.tsx +3 -48
- package/src/NumberInput/NumberInput.tsx +15 -32
- 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.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.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/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 +0 -20
- 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/__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/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
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
|
|
26
26
|
import {useCallback, type ReactNode} from 'react';
|
|
27
27
|
import * as stylex from '@stylexjs/stylex';
|
|
28
|
+
import type {StyleXStyles} from '@stylexjs/stylex';
|
|
28
29
|
import {renderIconSlot, type IconType} from '../Icon';
|
|
29
30
|
import {Item} from '../Item';
|
|
30
31
|
import {
|
|
@@ -34,7 +35,6 @@ import {
|
|
|
34
35
|
typeScaleVars,
|
|
35
36
|
} from '../theme/tokens.stylex';
|
|
36
37
|
import {mergeProps} from '../utils';
|
|
37
|
-
import type {BaseProps} from '../BaseProps';
|
|
38
38
|
import {useDropdownMenuContext} from './DropdownMenuContext';
|
|
39
39
|
import {themeProps} from '../utils/themeProps';
|
|
40
40
|
|
|
@@ -75,10 +75,7 @@ const itemSizeStyles = stylex.create({
|
|
|
75
75
|
lg: {},
|
|
76
76
|
});
|
|
77
77
|
|
|
78
|
-
export interface DropdownMenuItemProps
|
|
79
|
-
BaseProps,
|
|
80
|
-
'xstyle' | 'className' | 'style'
|
|
81
|
-
> {
|
|
78
|
+
export interface DropdownMenuItemProps {
|
|
82
79
|
/** Icon to display before the label. */
|
|
83
80
|
icon?: ReactNode | IconType;
|
|
84
81
|
/** Primary label text. */
|
|
@@ -91,6 +88,21 @@ export interface DropdownMenuItemProps extends Pick<
|
|
|
91
88
|
isDisabled?: boolean;
|
|
92
89
|
/** Additional content to render after the label/description. */
|
|
93
90
|
endContent?: ReactNode;
|
|
91
|
+
/**
|
|
92
|
+
* StyleX styles for layout customization (margins, positioning, sizing).
|
|
93
|
+
* Must be a `stylex.create()` value — not an inline style object.
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```
|
|
97
|
+
* const styles = stylex.create({ wrapper: { marginTop: 8 } });
|
|
98
|
+
* <DropdownMenuItem xstyle={styles.wrapper} />
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
xstyle?: StyleXStyles;
|
|
102
|
+
/** CSS class name(s) appended to the root element. */
|
|
103
|
+
className?: string;
|
|
104
|
+
/** Inline styles applied to the root element. */
|
|
105
|
+
style?: React.CSSProperties;
|
|
94
106
|
}
|
|
95
107
|
|
|
96
108
|
/**
|
package/src/Field/Field.test.tsx
CHANGED
|
@@ -137,7 +137,10 @@ describe('Field', () => {
|
|
|
137
137
|
|
|
138
138
|
it('renders description without ID attribute when descriptionID is not provided', () => {
|
|
139
139
|
render(
|
|
140
|
-
<Field
|
|
140
|
+
<Field
|
|
141
|
+
label="Email"
|
|
142
|
+
inputID="email-input"
|
|
143
|
+
description="Description text">
|
|
141
144
|
<input id="email-input" />
|
|
142
145
|
</Field>,
|
|
143
146
|
);
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
import {describe, it, expect, vi} from 'vitest';
|
|
13
13
|
import {render, screen} from '@testing-library/react';
|
|
14
|
-
import {
|
|
14
|
+
import {StarIcon} from '@heroicons/react/24/outline';
|
|
15
15
|
import {FieldLabel} from './FieldLabel';
|
|
16
16
|
|
|
17
17
|
describe('FieldLabel', () => {
|
|
@@ -49,7 +49,7 @@ describe('FieldLabel', () => {
|
|
|
49
49
|
<FieldLabel
|
|
50
50
|
label="Starred"
|
|
51
51
|
inputID="starred-input"
|
|
52
|
-
labelIcon={
|
|
52
|
+
labelIcon={StarIcon}
|
|
53
53
|
/>,
|
|
54
54
|
);
|
|
55
55
|
const svg = document.querySelector('svg');
|
|
@@ -4,6 +4,7 @@ exports[`FormLayout > matches snapshot for horizontal direction 1`] = `
|
|
|
4
4
|
<div
|
|
5
5
|
class="astryx-form-layout horizontal FormLayout__styles.base xdt5ytf x18g69wz FormLayout__styles.horizontal xrvj5dj x1mt1orb xu6a5m6"
|
|
6
6
|
data-direction="horizontal"
|
|
7
|
+
data-style-src="@astryxdesign/core:src/FormLayout/FormLayout.tsx:40; @astryxdesign/core:src/FormLayout/FormLayout.tsx:45"
|
|
7
8
|
data-testid="layout"
|
|
8
9
|
>
|
|
9
10
|
<input
|
|
@@ -19,6 +20,7 @@ exports[`FormLayout > matches snapshot for horizontal-labels direction 1`] = `
|
|
|
19
20
|
<div
|
|
20
21
|
class="astryx-form-layout horizontal-labels FormLayout__styles.base xdt5ytf FormLayout__styles.horizontalLabels xrvj5dj x1pmbctz xlaq8a2 x7a106z xedohl4 x1rpgqan x1a1jff"
|
|
21
22
|
data-direction="horizontal-labels"
|
|
23
|
+
data-style-src="@astryxdesign/core:src/FormLayout/FormLayout.tsx:40; @astryxdesign/core:src/FormLayout/FormLayout.tsx:50"
|
|
22
24
|
data-testid="layout"
|
|
23
25
|
>
|
|
24
26
|
<label>
|
|
@@ -34,6 +36,7 @@ exports[`FormLayout > matches snapshot for vertical direction 1`] = `
|
|
|
34
36
|
<div
|
|
35
37
|
class="astryx-form-layout vertical FormLayout__styles.base x78zum5 xdt5ytf x18g69wz"
|
|
36
38
|
data-direction="vertical"
|
|
39
|
+
data-style-src="@astryxdesign/core:src/FormLayout/FormLayout.tsx:40"
|
|
37
40
|
data-testid="layout"
|
|
38
41
|
>
|
|
39
42
|
<input
|
package/src/Grid/Grid.test.tsx
CHANGED
|
@@ -65,7 +65,7 @@ describe('Grid', () => {
|
|
|
65
65
|
expect(templateColumns(grid)).toBe('repeat(auto-fill, minmax(250px, 1fr))');
|
|
66
66
|
});
|
|
67
67
|
|
|
68
|
-
it('renders with columns object max (
|
|
68
|
+
it('renders with columns object max (capped via track-max)', () => {
|
|
69
69
|
render(
|
|
70
70
|
<Grid columns={{minWidth: 250, max: 3}} gap={4} data-testid="grid">
|
|
71
71
|
<div>Item 1</div>
|
|
@@ -74,37 +74,13 @@ describe('Grid', () => {
|
|
|
74
74
|
</Grid>,
|
|
75
75
|
);
|
|
76
76
|
const grid = screen.getByTestId('grid');
|
|
77
|
-
//
|
|
78
|
-
// track MAX stays 1fr so present columns fill the row (a lone column on
|
|
79
|
-
// mobile stretches to 100% instead of leaving dead space).
|
|
77
|
+
// Track max caps at (100% - 2 * gap) / 3 — no maxWidth on container
|
|
80
78
|
expect(templateColumns(grid)).toBe(
|
|
81
|
-
'repeat(auto-fill, minmax(
|
|
79
|
+
'repeat(auto-fill, minmax(250px, calc((100% - 2 * var(--spacing-4)) / 3)))',
|
|
82
80
|
);
|
|
83
81
|
expect(grid.style.maxWidth).toBe('');
|
|
84
82
|
});
|
|
85
83
|
|
|
86
|
-
it('keeps track max at 1fr with a max cap so a lone column can fill (#3391)', () => {
|
|
87
|
-
// Regression: previously the cap was applied to the track MAX
|
|
88
|
-
// (minmax(minWidth, 100%/max)), so when fewer than `max` columns fit —
|
|
89
|
-
// e.g. a single column on mobile — the lone column was pinned to ~100%/max
|
|
90
|
-
// and left dead space on the right. The cap now lives on the track MIN and
|
|
91
|
-
// the track MAX stays 1fr, so present columns always stretch to fill.
|
|
92
|
-
render(
|
|
93
|
-
<Grid columns={{minWidth: 360, max: 2}} gap={4} data-testid="grid">
|
|
94
|
-
<div>Left</div>
|
|
95
|
-
<div>Right</div>
|
|
96
|
-
</Grid>,
|
|
97
|
-
);
|
|
98
|
-
const grid = screen.getByTestId('grid');
|
|
99
|
-
const template = templateColumns(grid);
|
|
100
|
-
// Track max must be 1fr (fills), not a fraction-of-container cap.
|
|
101
|
-
expect(template).toMatch(/, 1fr\)\)$/);
|
|
102
|
-
expect(template).not.toMatch(/, calc\([^)]*\/ 2\)\)\)$/);
|
|
103
|
-
expect(template).toBe(
|
|
104
|
-
'repeat(auto-fill, minmax(min(100%, max(360px, calc((100% - 1 * var(--spacing-4)) / 2))), 1fr))',
|
|
105
|
-
);
|
|
106
|
-
});
|
|
107
|
-
|
|
108
84
|
it('renders with columns object max using columnGap', () => {
|
|
109
85
|
render(
|
|
110
86
|
<Grid columns={{minWidth: 200, max: 4}} columnGap={6} data-testid="grid">
|
|
@@ -113,9 +89,9 @@ describe('Grid', () => {
|
|
|
113
89
|
</Grid>,
|
|
114
90
|
);
|
|
115
91
|
const grid = screen.getByTestId('grid');
|
|
116
|
-
// columnGap takes precedence
|
|
92
|
+
// columnGap takes precedence for track-max calculation
|
|
117
93
|
expect(templateColumns(grid)).toBe(
|
|
118
|
-
'repeat(auto-fill, minmax(
|
|
94
|
+
'repeat(auto-fill, minmax(200px, calc((100% - 3 * var(--spacing-6)) / 4)))',
|
|
119
95
|
);
|
|
120
96
|
expect(grid.style.maxWidth).toBe('');
|
|
121
97
|
});
|
|
@@ -189,7 +165,7 @@ describe('Grid', () => {
|
|
|
189
165
|
expect(templateColumns(grid)).toBe('1fr');
|
|
190
166
|
});
|
|
191
167
|
|
|
192
|
-
it('uses auto-fill
|
|
168
|
+
it('uses auto-fill without track-max cap when no max specified', () => {
|
|
193
169
|
render(
|
|
194
170
|
<Grid columns={{minWidth: 200}} data-testid="grid">
|
|
195
171
|
<div>Item</div>
|
|
@@ -244,7 +220,7 @@ describe('Grid', () => {
|
|
|
244
220
|
|
|
245
221
|
// --- P2: columns object + columnGap interaction (hardening #719) ---
|
|
246
222
|
|
|
247
|
-
it('uses columnGap var in
|
|
223
|
+
it('uses columnGap var in track-max when both columnGap and gap are set', () => {
|
|
248
224
|
render(
|
|
249
225
|
<Grid
|
|
250
226
|
columns={{minWidth: 200, max: 3}}
|
|
@@ -255,14 +231,14 @@ describe('Grid', () => {
|
|
|
255
231
|
</Grid>,
|
|
256
232
|
);
|
|
257
233
|
const grid = screen.getByTestId('grid');
|
|
258
|
-
// columnGap takes precedence over gap in
|
|
234
|
+
// columnGap takes precedence over gap in track-max
|
|
259
235
|
expect(templateColumns(grid)).toBe(
|
|
260
|
-
'repeat(auto-fill, minmax(
|
|
236
|
+
'repeat(auto-fill, minmax(200px, calc((100% - 2 * var(--spacing-6)) / 3)))',
|
|
261
237
|
);
|
|
262
238
|
expect(grid.style.maxWidth).toBe('');
|
|
263
239
|
});
|
|
264
240
|
|
|
265
|
-
it('uses gap var in
|
|
241
|
+
it('uses gap var in track-max when columnGap is not set', () => {
|
|
266
242
|
render(
|
|
267
243
|
<Grid columns={{minWidth: 150, max: 2}} gap={3} data-testid="grid">
|
|
268
244
|
<div>Item</div>
|
|
@@ -270,12 +246,12 @@ describe('Grid', () => {
|
|
|
270
246
|
);
|
|
271
247
|
const grid = screen.getByTestId('grid');
|
|
272
248
|
expect(templateColumns(grid)).toBe(
|
|
273
|
-
'repeat(auto-fill, minmax(
|
|
249
|
+
'repeat(auto-fill, minmax(150px, calc((100% - 1 * var(--spacing-3)) / 2)))',
|
|
274
250
|
);
|
|
275
251
|
expect(grid.style.maxWidth).toBe('');
|
|
276
252
|
});
|
|
277
253
|
|
|
278
|
-
it('uses simple fraction in
|
|
254
|
+
it('uses simple fraction in track-max when no gap is set', () => {
|
|
279
255
|
render(
|
|
280
256
|
<Grid columns={{minWidth: 100, max: 3}} data-testid="grid">
|
|
281
257
|
<div>Item</div>
|
|
@@ -283,7 +259,7 @@ describe('Grid', () => {
|
|
|
283
259
|
);
|
|
284
260
|
const grid = screen.getByTestId('grid');
|
|
285
261
|
expect(templateColumns(grid)).toBe(
|
|
286
|
-
'repeat(auto-fill, minmax(
|
|
262
|
+
'repeat(auto-fill, minmax(100px, calc(100% / 3)))',
|
|
287
263
|
);
|
|
288
264
|
expect(grid.style.maxWidth).toBe('');
|
|
289
265
|
});
|
|
@@ -356,7 +332,7 @@ describe('Grid', () => {
|
|
|
356
332
|
expect(templateColumns(grid)).toBe('repeat(auto-fill, minmax(280px, 1fr))');
|
|
357
333
|
});
|
|
358
334
|
|
|
359
|
-
it('renders with columns={{minWidth, max}} capping
|
|
335
|
+
it('renders with columns={{minWidth, max}} capping via track-max', () => {
|
|
360
336
|
render(
|
|
361
337
|
<Grid columns={{minWidth: 280, max: 3}} gap={4} data-testid="grid">
|
|
362
338
|
<div>Item 1</div>
|
|
@@ -364,15 +340,14 @@ describe('Grid', () => {
|
|
|
364
340
|
</Grid>,
|
|
365
341
|
);
|
|
366
342
|
const grid = screen.getByTestId('grid');
|
|
367
|
-
//
|
|
368
|
-
// columns fill the row (grid stays full width).
|
|
343
|
+
// Track-max limits columns — grid stays full width
|
|
369
344
|
expect(templateColumns(grid)).toBe(
|
|
370
|
-
'repeat(auto-fill, minmax(
|
|
345
|
+
'repeat(auto-fill, minmax(280px, calc((100% - 2 * var(--spacing-4)) / 3)))',
|
|
371
346
|
);
|
|
372
347
|
expect(grid.style.maxWidth).toBe('');
|
|
373
348
|
});
|
|
374
349
|
|
|
375
|
-
it('renders with columns={{minWidth, max, repeat: "fit"}} using auto-fit +
|
|
350
|
+
it('renders with columns={{minWidth, max, repeat: "fit"}} using auto-fit + track-max', () => {
|
|
376
351
|
render(
|
|
377
352
|
<Grid
|
|
378
353
|
columns={{minWidth: 280, max: 3, repeat: 'fit'}}
|
|
@@ -384,7 +359,7 @@ describe('Grid', () => {
|
|
|
384
359
|
);
|
|
385
360
|
const grid = screen.getByTestId('grid');
|
|
386
361
|
expect(templateColumns(grid)).toBe(
|
|
387
|
-
'repeat(auto-fit, minmax(
|
|
362
|
+
'repeat(auto-fit, minmax(280px, calc((100% - 2 * var(--spacing-4)) / 3)))',
|
|
388
363
|
);
|
|
389
364
|
expect(grid.style.maxWidth).toBe('');
|
|
390
365
|
});
|
package/src/Grid/Grid.tsx
CHANGED
|
@@ -38,10 +38,9 @@ export type GridAlignment = 'start' | 'center' | 'end' | 'stretch';
|
|
|
38
38
|
* - `minWidth` — minimum width (px) for each column track
|
|
39
39
|
* - `repeat` — `'fill'` (default) preserves empty tracks for consistent widths;
|
|
40
40
|
* `'fit'` collapses empty tracks so items stretch to fill
|
|
41
|
-
* - `max` — caps the maximum number of columns
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* (no dead space on the right).
|
|
41
|
+
* - `max` — caps the maximum number of columns by limiting track max size.
|
|
42
|
+
* The grid stretches to 100% of its parent; `max` only limits how many
|
|
43
|
+
* columns appear.
|
|
45
44
|
*/
|
|
46
45
|
export type GridColumns =
|
|
47
46
|
| number
|
|
@@ -322,20 +321,9 @@ const spacingVarNames: Record<SpacingStep, string> = {
|
|
|
322
321
|
};
|
|
323
322
|
|
|
324
323
|
/**
|
|
325
|
-
* Build a grid-template-columns value that caps
|
|
326
|
-
*
|
|
327
|
-
* the
|
|
328
|
-
*
|
|
329
|
-
* The cap lives on the track's **min** size, not its max: each track is at
|
|
330
|
-
* least `perColumn = (100% - (max-1) * gap) / max`, so more than `max` columns
|
|
331
|
-
* can never fit. The track **max** stays `1fr`, so whenever fewer than `max`
|
|
332
|
-
* columns fit (most importantly a lone column on mobile) they still grow to
|
|
333
|
-
* fill the whole row — no dead space on the right.
|
|
334
|
-
*
|
|
335
|
-
* The track min is `max(minWidth, perColumn)` so an explicit `minWidth` is
|
|
336
|
-
* still honored, wrapped in `min(100%, …)` so a single column on a viewport
|
|
337
|
-
* narrower than `minWidth`/`perColumn` shrinks to the container instead of
|
|
338
|
-
* overflowing it.
|
|
324
|
+
* Build a grid-template-columns value that caps columns at `max` by
|
|
325
|
+
* limiting each track's max size to `(100% - (max-1) * gap) / max`.
|
|
326
|
+
* The grid stays 100% width; the track-max prevents more than `max` columns.
|
|
339
327
|
*/
|
|
340
328
|
function buildCappedTemplate(
|
|
341
329
|
minWidth: number,
|
|
@@ -351,17 +339,12 @@ function buildCappedTemplate(
|
|
|
351
339
|
? spacingVarNames[gap]
|
|
352
340
|
: null;
|
|
353
341
|
|
|
354
|
-
//
|
|
355
|
-
|
|
356
|
-
// the grid never fits more than `maxCols` columns.
|
|
357
|
-
const perColumn = gapVar
|
|
342
|
+
// trackMax = (100% - (maxCols - 1) * gap) / maxCols
|
|
343
|
+
const trackMax = gapVar
|
|
358
344
|
? `calc((100% - ${maxCols - 1} * var(${gapVar})) / ${maxCols})`
|
|
359
345
|
: `calc(100% / ${maxCols})`;
|
|
360
346
|
|
|
361
|
-
|
|
362
|
-
const trackMin = `min(100%, max(${minWidth}px, ${perColumn}))`;
|
|
363
|
-
|
|
364
|
-
return `repeat(${repeatMode}, minmax(${trackMin}, 1fr))`;
|
|
347
|
+
return `repeat(${repeatMode}, minmax(${minWidth}px, ${trackMax}))`;
|
|
365
348
|
}
|
|
366
349
|
|
|
367
350
|
/**
|
|
@@ -46,13 +46,13 @@ export const docs = {
|
|
|
46
46
|
{
|
|
47
47
|
name: 'placement',
|
|
48
48
|
type: "'above' | 'below' | 'start' | 'end'",
|
|
49
|
-
description:
|
|
49
|
+
description: 'Position relative to the anchor element.',
|
|
50
50
|
default: "'above'",
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
53
|
name: 'alignment',
|
|
54
54
|
type: "'start' | 'center' | 'end'",
|
|
55
|
-
description:
|
|
55
|
+
description: 'Alignment along the placement axis.',
|
|
56
56
|
default: "'center'",
|
|
57
57
|
},
|
|
58
58
|
{
|
|
@@ -155,13 +155,13 @@ export const docsZh = {
|
|
|
155
155
|
{
|
|
156
156
|
name: 'placement',
|
|
157
157
|
type: "'above' | 'below' | 'start' | 'end'",
|
|
158
|
-
description: '
|
|
158
|
+
description: '相对于锚点元素的位置。',
|
|
159
159
|
default: "'above'",
|
|
160
160
|
},
|
|
161
161
|
{
|
|
162
162
|
name: 'alignment',
|
|
163
163
|
type: "'start' | 'center' | 'end'",
|
|
164
|
-
description: '
|
|
164
|
+
description: '沿放置轴的对齐方式。',
|
|
165
165
|
default: "'center'",
|
|
166
166
|
},
|
|
167
167
|
{
|
|
@@ -246,8 +246,8 @@ export const docsDense = {
|
|
|
246
246
|
propDescriptions: {
|
|
247
247
|
children: 'Trigger element; must accept ref.',
|
|
248
248
|
content: 'Hover card content.',
|
|
249
|
-
placement: 'Position relative to anchor element.
|
|
250
|
-
alignment: 'Alignment along placement axis.
|
|
249
|
+
placement: 'Position relative to anchor element.',
|
|
250
|
+
alignment: 'Alignment along placement axis.',
|
|
251
251
|
delay: 'Show delay in ms.',
|
|
252
252
|
hideDelay: 'Hide delay in ms.',
|
|
253
253
|
focusTrigger: 'Controls when focus events trigger hover card.',
|
|
@@ -7,8 +7,8 @@ export const docs = {
|
|
|
7
7
|
group: 'HoverCard',
|
|
8
8
|
keywords: ['hovercard', 'hover', 'preview', 'card', 'tooltip', 'popup', 'floating', 'anchor'],
|
|
9
9
|
params: [
|
|
10
|
-
{name: 'placement', type: "'above' | 'below' | 'start' | 'end'", description:
|
|
11
|
-
{name: 'alignment', type: "'start' | 'center' | 'end'", description:
|
|
10
|
+
{name: 'placement', type: "'above' | 'below' | 'start' | 'end'", description: 'Position relative to the trigger.', default: "'above'"},
|
|
11
|
+
{name: 'alignment', type: "'start' | 'center' | 'end'", description: 'Alignment along the placement axis.', default: "'center'"},
|
|
12
12
|
{name: 'delay', type: 'number', description: 'Delay before showing the hover card on hover, in milliseconds.', default: '300'},
|
|
13
13
|
{name: 'hideDelay', type: 'number', description: 'Delay before hiding after mouse or focus leaves, in milliseconds.', default: '200'},
|
|
14
14
|
{name: 'focusTrigger', type: "'auto' | 'always' | 'never'", description: 'When focus should open the hover card. auto only attaches focus listeners to naturally focusable elements.', default: "'auto'"},
|
|
@@ -24,7 +24,7 @@ export const docs = {
|
|
|
24
24
|
{name: 'interactionRef', type: 'RefCallback<HTMLElement>', description: 'Ref for the hover/focus interaction element. Use with positionRef for split trigger patterns.'},
|
|
25
25
|
{name: 'anchorId', type: 'string', description: 'CSS anchor name for advanced positioning cases.'},
|
|
26
26
|
{name: 'describedBy', type: 'string', description: 'ID to compose into aria-describedby on the trigger.'},
|
|
27
|
-
{name: 'renderHoverCard', type:
|
|
27
|
+
{name: 'renderHoverCard', type: '(children: ReactNode, props?: ContextRenderProps) => ReactNode', description: 'Render function for the anchor-positioned hover card content.'},
|
|
28
28
|
{name: 'show', type: '() => void', description: 'Imperatively show the hover card immediately.'},
|
|
29
29
|
{name: 'hide', type: '() => void', description: 'Imperatively hide the hover card immediately.'},
|
|
30
30
|
],
|
|
@@ -46,8 +46,8 @@ export const docs = {
|
|
|
46
46
|
export const docsDense = {
|
|
47
47
|
description: 'Headless hover-triggered floating cards. Builds on useLayer w/ hover/focus intent, delays, safe hover behavior, aria-describedby. Use for rich previews when trigger/content rendering needs full control.',
|
|
48
48
|
paramDescriptions: {
|
|
49
|
-
placement: 'position relative to trigger.
|
|
50
|
-
alignment: 'alignment along placement axis.
|
|
49
|
+
placement: 'position relative to trigger.',
|
|
50
|
+
alignment: 'alignment along placement axis.',
|
|
51
51
|
delay: 'show delay in ms.',
|
|
52
52
|
hideDelay: 'hide delay after mouse/focus leave in ms.',
|
|
53
53
|
focusTrigger: 'when focus opens hover card; auto = naturally focusable elements only.',
|
|
@@ -181,14 +181,10 @@ export interface HoverCardReturn {
|
|
|
181
181
|
/**
|
|
182
182
|
* Render function for hover card content.
|
|
183
183
|
* Returns anchor-positioned popover element.
|
|
184
|
-
*
|
|
185
|
-
* `positioning` is excluded: the hover card always derives its position
|
|
186
|
-
* from placement/alignment, so accepting the custom opt-out here would be
|
|
187
|
-
* a silent no-op.
|
|
188
184
|
*/
|
|
189
185
|
renderHoverCard: (
|
|
190
186
|
children: ReactNode,
|
|
191
|
-
props?:
|
|
187
|
+
props?: ContextRenderProps,
|
|
192
188
|
) => ReactNode;
|
|
193
189
|
|
|
194
190
|
/**
|
|
@@ -454,10 +450,7 @@ export function useHoverCard(options: HoverCardOptions = {}): HoverCardReturn {
|
|
|
454
450
|
|
|
455
451
|
// Render function that wraps layer.render with hover card behavior
|
|
456
452
|
const renderHoverCard = useCallback(
|
|
457
|
-
(
|
|
458
|
-
children: ReactNode,
|
|
459
|
-
props?: Omit<ContextRenderProps, 'positioning'>,
|
|
460
|
-
): ReactNode => {
|
|
453
|
+
(children: ReactNode, props?: ContextRenderProps): ReactNode => {
|
|
461
454
|
const renderPlacement = props?.placement ?? placement;
|
|
462
455
|
const renderProps = {
|
|
463
456
|
placement: renderPlacement,
|
package/src/Icon/Icon.test.tsx
CHANGED
|
@@ -11,48 +11,48 @@
|
|
|
11
11
|
|
|
12
12
|
import {describe, it, expect, vi} from 'vitest';
|
|
13
13
|
import {render, screen} from '@testing-library/react';
|
|
14
|
-
import {
|
|
14
|
+
import {HomeIcon} from '@heroicons/react/24/outline';
|
|
15
15
|
import {Icon} from './Icon';
|
|
16
16
|
|
|
17
17
|
describe('Icon', () => {
|
|
18
18
|
it('renders the icon component', () => {
|
|
19
|
-
render(<Icon icon={
|
|
19
|
+
render(<Icon icon={HomeIcon} data-testid="icon" />);
|
|
20
20
|
expect(screen.getByTestId('icon')).toBeInTheDocument();
|
|
21
21
|
});
|
|
22
22
|
|
|
23
23
|
it('renders as an SVG element', () => {
|
|
24
|
-
render(<Icon icon={
|
|
24
|
+
render(<Icon icon={HomeIcon} data-testid="icon" />);
|
|
25
25
|
const icon = screen.getByTestId('icon');
|
|
26
26
|
expect(icon.tagName.toLowerCase()).toBe('svg');
|
|
27
27
|
});
|
|
28
28
|
|
|
29
29
|
it('applies aria-hidden by default', () => {
|
|
30
|
-
render(<Icon icon={
|
|
30
|
+
render(<Icon icon={HomeIcon} data-testid="icon" />);
|
|
31
31
|
expect(screen.getByTestId('icon')).toHaveAttribute('aria-hidden', 'true');
|
|
32
32
|
});
|
|
33
33
|
|
|
34
34
|
it('renders with different color variants', () => {
|
|
35
35
|
const {rerender} = render(
|
|
36
|
-
<Icon icon={
|
|
36
|
+
<Icon icon={HomeIcon} color="primary" data-testid="icon" />,
|
|
37
37
|
);
|
|
38
38
|
expect(screen.getByTestId('icon')).toBeInTheDocument();
|
|
39
39
|
|
|
40
|
-
rerender(<Icon icon={
|
|
40
|
+
rerender(<Icon icon={HomeIcon} color="secondary" data-testid="icon" />);
|
|
41
41
|
expect(screen.getByTestId('icon')).toBeInTheDocument();
|
|
42
42
|
|
|
43
|
-
rerender(<Icon icon={
|
|
43
|
+
rerender(<Icon icon={HomeIcon} color="accent" data-testid="icon" />);
|
|
44
44
|
expect(screen.getByTestId('icon')).toBeInTheDocument();
|
|
45
45
|
|
|
46
|
-
rerender(<Icon icon={
|
|
46
|
+
rerender(<Icon icon={HomeIcon} color="success" data-testid="icon" />);
|
|
47
47
|
expect(screen.getByTestId('icon')).toBeInTheDocument();
|
|
48
48
|
|
|
49
|
-
rerender(<Icon icon={
|
|
49
|
+
rerender(<Icon icon={HomeIcon} color="error" data-testid="icon" />);
|
|
50
50
|
expect(screen.getByTestId('icon')).toBeInTheDocument();
|
|
51
51
|
|
|
52
|
-
rerender(<Icon icon={
|
|
52
|
+
rerender(<Icon icon={HomeIcon} color="warning" data-testid="icon" />);
|
|
53
53
|
expect(screen.getByTestId('icon')).toBeInTheDocument();
|
|
54
54
|
|
|
55
|
-
rerender(<Icon icon={
|
|
55
|
+
rerender(<Icon icon={HomeIcon} color="inherit" data-testid="icon" />);
|
|
56
56
|
expect(screen.getByTestId('icon')).toBeInTheDocument();
|
|
57
57
|
});
|
|
58
58
|
|
|
@@ -70,41 +70,50 @@ describe('Icon', () => {
|
|
|
70
70
|
'purple',
|
|
71
71
|
] as const;
|
|
72
72
|
const {rerender} = render(
|
|
73
|
-
<Icon
|
|
73
|
+
<Icon
|
|
74
|
+
icon={HomeIcon}
|
|
75
|
+
color={nonSemanticColors[0]}
|
|
76
|
+
data-testid="icon"
|
|
77
|
+
/>,
|
|
74
78
|
);
|
|
75
79
|
expect(screen.getByTestId('icon')).toBeInTheDocument();
|
|
76
80
|
|
|
77
81
|
for (const c of nonSemanticColors.slice(1)) {
|
|
78
|
-
rerender(<Icon icon={
|
|
82
|
+
rerender(<Icon icon={HomeIcon} color={c} data-testid="icon" />);
|
|
79
83
|
expect(screen.getByTestId('icon')).toBeInTheDocument();
|
|
80
84
|
}
|
|
81
85
|
});
|
|
82
86
|
|
|
83
87
|
it('renders with different size variants', () => {
|
|
84
88
|
const {rerender} = render(
|
|
85
|
-
<Icon icon={
|
|
89
|
+
<Icon icon={HomeIcon} size="xsm" data-testid="icon" />,
|
|
86
90
|
);
|
|
87
91
|
expect(screen.getByTestId('icon')).toBeInTheDocument();
|
|
88
92
|
|
|
89
|
-
rerender(<Icon icon={
|
|
93
|
+
rerender(<Icon icon={HomeIcon} size="sm" data-testid="icon" />);
|
|
90
94
|
expect(screen.getByTestId('icon')).toBeInTheDocument();
|
|
91
95
|
|
|
92
|
-
rerender(<Icon icon={
|
|
96
|
+
rerender(<Icon icon={HomeIcon} size="md" data-testid="icon" />);
|
|
93
97
|
expect(screen.getByTestId('icon')).toBeInTheDocument();
|
|
94
98
|
|
|
95
|
-
rerender(<Icon icon={
|
|
99
|
+
rerender(<Icon icon={HomeIcon} size="lg" data-testid="icon" />);
|
|
96
100
|
expect(screen.getByTestId('icon')).toBeInTheDocument();
|
|
97
101
|
});
|
|
98
102
|
|
|
99
103
|
it('forwards ref correctly', () => {
|
|
100
104
|
const ref = vi.fn();
|
|
101
|
-
render(<Icon icon={
|
|
105
|
+
render(<Icon icon={HomeIcon} ref={ref} />);
|
|
102
106
|
expect(ref).toHaveBeenCalledWith(expect.any(SVGSVGElement));
|
|
103
107
|
});
|
|
104
108
|
|
|
105
109
|
it('passes additional SVG props', () => {
|
|
106
110
|
render(
|
|
107
|
-
<Icon
|
|
111
|
+
<Icon
|
|
112
|
+
icon={HomeIcon}
|
|
113
|
+
data-testid="icon"
|
|
114
|
+
role="img"
|
|
115
|
+
aria-label="Home"
|
|
116
|
+
/>,
|
|
108
117
|
);
|
|
109
118
|
const icon = screen.getByTestId('icon');
|
|
110
119
|
expect(icon).toHaveAttribute('role', 'img');
|
|
@@ -112,29 +121,8 @@ describe('Icon', () => {
|
|
|
112
121
|
});
|
|
113
122
|
|
|
114
123
|
it('uses default color and size when not specified', () => {
|
|
115
|
-
render(<Icon icon={
|
|
124
|
+
render(<Icon icon={HomeIcon} data-testid="icon" />);
|
|
116
125
|
// The component should render without errors with defaults
|
|
117
126
|
expect(screen.getByTestId('icon')).toBeInTheDocument();
|
|
118
127
|
});
|
|
119
|
-
|
|
120
|
-
it('applies aria-hidden by default in string (registry) mode', () => {
|
|
121
|
-
render(<Icon icon="check" data-testid="icon" />);
|
|
122
|
-
expect(screen.getByTestId('icon')).toHaveAttribute('aria-hidden', 'true');
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
it('lets a string-mode icon be made meaningful by overriding aria-hidden', () => {
|
|
126
|
-
render(
|
|
127
|
-
<Icon
|
|
128
|
-
icon="check"
|
|
129
|
-
data-testid="icon"
|
|
130
|
-
role="img"
|
|
131
|
-
aria-label="Done"
|
|
132
|
-
aria-hidden={false}
|
|
133
|
-
/>,
|
|
134
|
-
);
|
|
135
|
-
const icon = screen.getByTestId('icon');
|
|
136
|
-
expect(icon).toHaveAttribute('role', 'img');
|
|
137
|
-
expect(icon).toHaveAttribute('aria-label', 'Done');
|
|
138
|
-
expect(icon).toHaveAttribute('aria-hidden', 'false');
|
|
139
|
-
});
|
|
140
128
|
});
|
package/src/Icon/Icon.tsx
CHANGED
|
@@ -281,16 +281,12 @@ function IconFromRegistry({
|
|
|
281
281
|
|
|
282
282
|
return (
|
|
283
283
|
<span
|
|
284
|
-
// Decorative by default, but placed BEFORE the prop spread so consumers
|
|
285
|
-
// can override it (e.g. `aria-hidden={false}` + `role="img"` +
|
|
286
|
-
// `aria-label`) to expose a meaningful standalone icon. This matches
|
|
287
|
-
// component-mode Icon, which already sets aria-hidden before its spread.
|
|
288
|
-
aria-hidden="true"
|
|
289
284
|
{...(spanProps as React.HTMLAttributes<HTMLSpanElement>)}
|
|
290
285
|
{...mergeProps(
|
|
291
286
|
themeProps('icon', {size, color}),
|
|
292
287
|
stylex.props(styles.span, colorStyles[color], spanSizeStyles[size]),
|
|
293
|
-
)}
|
|
288
|
+
)}
|
|
289
|
+
aria-hidden="true">
|
|
294
290
|
{resolvedIcon}
|
|
295
291
|
</span>
|
|
296
292
|
);
|
|
@@ -201,11 +201,11 @@ export function InputGroup({
|
|
|
201
201
|
labelTooltip={labelTooltip}>
|
|
202
202
|
<div
|
|
203
203
|
ref={ref}
|
|
204
|
-
data-testid={testId}
|
|
205
|
-
{...rest}
|
|
206
204
|
role="group"
|
|
207
205
|
aria-labelledby={labelID}
|
|
208
206
|
aria-describedby={describedByIDs}
|
|
207
|
+
data-testid={testId}
|
|
208
|
+
{...rest}
|
|
209
209
|
{...mergeProps(
|
|
210
210
|
themeProps('input-group', {
|
|
211
211
|
size,
|
package/src/Item/Item.tsx
CHANGED
|
@@ -470,9 +470,9 @@ export function Item({
|
|
|
470
470
|
return (
|
|
471
471
|
<Component
|
|
472
472
|
ref={ref as React.Ref<never>}
|
|
473
|
-
{...restProps}
|
|
474
473
|
aria-selected={isSelected || undefined}
|
|
475
474
|
aria-disabled={isDisabled || undefined}
|
|
475
|
+
{...restProps}
|
|
476
476
|
{...mergeProps(
|
|
477
477
|
themeProps('item', {density, align}),
|
|
478
478
|
stylex.props(
|
|
@@ -78,7 +78,7 @@ export const docs = {
|
|
|
78
78
|
name: 'render',
|
|
79
79
|
type: '(children: ReactNode, props: ContextRenderProps | FixedRenderProps) => ReactNode',
|
|
80
80
|
description:
|
|
81
|
-
'Render function for the popover element. Pass placement/alignment in context mode or x/y in fixed mode.
|
|
81
|
+
'Render function for the popover element. Pass placement/alignment in context mode or x/y in fixed mode. In context mode, pass `as: "span"` to render an inline-safe layer (e.g. inside a paragraph). The layer renders inline in the React tree; the Popover API promotes it to the top layer when shown, so it escapes ancestor clipping and stacking without a portal.',
|
|
82
82
|
},
|
|
83
83
|
],
|
|
84
84
|
usage: {
|
|
@@ -130,7 +130,7 @@ export const docsDense = {
|
|
|
130
130
|
hide: 'hide layer.',
|
|
131
131
|
isOpen: 'whether layer is open.',
|
|
132
132
|
id: 'unique ARIA id.',
|
|
133
|
-
render: 'renders popover element; pass placement/alignment or x/y.
|
|
133
|
+
render: 'renders popover element; pass placement/alignment or x/y. Context mode accepts `as: "span"` for inline-safe layers. Renders inline; the Popover API top layer escapes clipping/stacking without a portal.',
|
|
134
134
|
},
|
|
135
135
|
usage: {
|
|
136
136
|
description:
|