@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
|
@@ -203,7 +203,7 @@ export function Calendar({ref, ...props}: CalendarProps) {
|
|
|
203
203
|
value,
|
|
204
204
|
defaultValue,
|
|
205
205
|
onChange,
|
|
206
|
-
numberOfMonths
|
|
206
|
+
numberOfMonths = 1,
|
|
207
207
|
min,
|
|
208
208
|
max,
|
|
209
209
|
dateConstraints,
|
|
@@ -223,11 +223,6 @@ export function Calendar({ref, ...props}: CalendarProps) {
|
|
|
223
223
|
// DayOfWeek so all downstream date math keeps working with an index.
|
|
224
224
|
const weekStartsOn = normalizeDayOfWeek(weekStartsOnProp);
|
|
225
225
|
|
|
226
|
-
// `numberOfMonths` is typed `1 | 2`; defensively clamp anything else that
|
|
227
|
-
// slips through at runtime to 1 so `Array.from({length})` can't render an
|
|
228
|
-
// absurd number of month grids (e.g. `numberOfMonths={1000}`).
|
|
229
|
-
const numberOfMonths = numberOfMonthsProp === 2 ? 2 : 1;
|
|
230
|
-
|
|
231
226
|
// Today's date (memoized)
|
|
232
227
|
const today = useMemo(() => plainDateToday(), []);
|
|
233
228
|
|
|
@@ -431,14 +426,7 @@ export function Calendar({ref, ...props}: CalendarProps) {
|
|
|
431
426
|
<Button
|
|
432
427
|
label="Previous month"
|
|
433
428
|
variant="ghost"
|
|
434
|
-
icon={
|
|
435
|
-
// Wrapper span (not Icon props): Icon's string mode clobbers
|
|
436
|
-
// caller classNames, so the RTL mirror must live on its own
|
|
437
|
-
// element.
|
|
438
|
-
<span {...stylex.props(calendarStyles.navIcon)}>
|
|
439
|
-
<Icon icon="chevronLeft" size="sm" color="inherit" />
|
|
440
|
-
</span>
|
|
441
|
-
}
|
|
429
|
+
icon={<Icon icon="chevronLeft" size="sm" color="inherit" />}
|
|
442
430
|
onClick={() => navigateMonth(-1)}
|
|
443
431
|
isDisabled={!canNavigatePrevious}
|
|
444
432
|
isIconOnly
|
|
@@ -451,11 +439,7 @@ export function Calendar({ref, ...props}: CalendarProps) {
|
|
|
451
439
|
<Button
|
|
452
440
|
label="Next month"
|
|
453
441
|
variant="ghost"
|
|
454
|
-
icon={
|
|
455
|
-
<span {...stylex.props(calendarStyles.navIcon)}>
|
|
456
|
-
<Icon icon="chevronRight" size="sm" color="inherit" />
|
|
457
|
-
</span>
|
|
458
|
-
}
|
|
442
|
+
icon={<Icon icon="chevronRight" size="sm" color="inherit" />}
|
|
459
443
|
onClick={() => navigateMonth(1)}
|
|
460
444
|
isDisabled={!canNavigateNext}
|
|
461
445
|
isIconOnly
|
|
@@ -928,10 +912,7 @@ function DayCell({
|
|
|
928
912
|
});
|
|
929
913
|
|
|
930
914
|
return (
|
|
931
|
-
<div
|
|
932
|
-
role="gridcell"
|
|
933
|
-
aria-selected={state.isSelected || state.isInRange || undefined}
|
|
934
|
-
{...stylex.props(dayCellStyles.cell)}>
|
|
915
|
+
<div role="gridcell" {...stylex.props(dayCellStyles.cell)}>
|
|
935
916
|
{/* Range background */}
|
|
936
917
|
{state.isInRange && (
|
|
937
918
|
<div
|
|
@@ -971,10 +952,8 @@ function DayCell({
|
|
|
971
952
|
type="button"
|
|
972
953
|
data-date={day.iso}
|
|
973
954
|
aria-label={plainDateFormat(date, DATE_FORMAT_WITH_WEEKDAY)}
|
|
955
|
+
aria-selected={state.isSelected || state.isInRange || undefined}
|
|
974
956
|
aria-disabled={state.effectivelyDisabled || undefined}
|
|
975
|
-
// Mark today's cell programmatically (APG date-picker pattern), not just
|
|
976
|
-
// visually, so screen-reader users can identify the current date.
|
|
977
|
-
aria-current={state.isToday ? 'date' : undefined}
|
|
978
957
|
disabled={isDisabled}
|
|
979
958
|
// Initial roving tab-stop seed; useGridFocus owns it after mount.
|
|
980
959
|
tabIndex={isTabbableDay ? 0 : -1}
|
|
@@ -193,9 +193,7 @@ export function isRangeHighlighted(input: {
|
|
|
193
193
|
isDisabled: boolean;
|
|
194
194
|
isOutside: boolean;
|
|
195
195
|
}): boolean {
|
|
196
|
-
if (input.mode !== 'range') {
|
|
197
|
-
return false;
|
|
198
|
-
}
|
|
196
|
+
if (input.mode !== 'range') {return false;}
|
|
199
197
|
return isSpanHighlighted({
|
|
200
198
|
date: input.date,
|
|
201
199
|
spanStart: input.rangeStart,
|
package/src/Calendar/styles.ts
CHANGED
|
@@ -64,19 +64,9 @@ export const calendarStyles = stylex.create({
|
|
|
64
64
|
whiteSpace: 'nowrap',
|
|
65
65
|
borderWidth: 0,
|
|
66
66
|
},
|
|
67
|
-
/**
|
|
68
|
-
* Wrapper for the month nav chevrons. In RTL the flex header already
|
|
69
|
-
* swaps the buttons' visual sides; the glyphs must mirror with them so
|
|
70
|
-
* "Previous month" points outward (visually right) instead of inward.
|
|
71
|
-
* Keyed on the dir attribute (dir="rtl"), same as MobileNav's drawer
|
|
72
|
-
* transform — bare CSS `direction: rtl` alone won't trigger it.
|
|
73
|
-
*/
|
|
74
67
|
navIcon: {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
default: null,
|
|
78
|
-
':is([dir="rtl"] *)': 'scaleX(-1)',
|
|
79
|
-
},
|
|
68
|
+
width: spacingVars['--spacing-4'],
|
|
69
|
+
height: spacingVars['--spacing-4'],
|
|
80
70
|
},
|
|
81
71
|
});
|
|
82
72
|
|
package/src/Card/Card.tsx
CHANGED
|
@@ -44,10 +44,8 @@ import {themeProps} from '../utils/themeProps';
|
|
|
44
44
|
* - Non-semantic palette: `blue | cyan | gray | green | orange | pink | purple | red | teal | yellow`
|
|
45
45
|
* Each uses the corresponding `--color-background-<name>` token (20% opacity tint).
|
|
46
46
|
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
* keeping content geometry faithful to the spacing scale and identical to the
|
|
50
|
-
* borderless variants. Themes can override borderWidth/borderColor.
|
|
47
|
+
* All variants include a transparent border to prevent layout jitter
|
|
48
|
+
* when switching variants. Themes can override borderWidth/borderColor.
|
|
51
49
|
*/
|
|
52
50
|
export type CardVariant =
|
|
53
51
|
| 'default'
|
|
@@ -73,18 +71,12 @@ const styles = stylex.create({
|
|
|
73
71
|
'--_card-radius': radiusVars['--radius-container'],
|
|
74
72
|
borderRadius: 'var(--_card-radius)',
|
|
75
73
|
overflow: 'clip',
|
|
76
|
-
},
|
|
77
|
-
// The border is drawn *inside* the padding — its width is subtracted from
|
|
78
|
-
// each side — so total inset (border + padding) equals the padding token
|
|
79
|
-
// rather than exceeding it by the border width.
|
|
80
|
-
withBorder: {
|
|
81
74
|
borderWidth: borderVars['--border-width'],
|
|
82
75
|
borderStyle: 'solid',
|
|
76
|
+
borderColor: 'transparent',
|
|
77
|
+
},
|
|
78
|
+
withBorder: {
|
|
83
79
|
borderColor: colorVars['--color-border-emphasized'],
|
|
84
|
-
paddingInlineStart: `calc(var(--container-padding-inline-start) - ${borderVars['--border-width']})`,
|
|
85
|
-
paddingInlineEnd: `calc(var(--container-padding-inline-end) - ${borderVars['--border-width']})`,
|
|
86
|
-
paddingBlockStart: `calc(var(--container-padding-block-start) - ${borderVars['--border-width']})`,
|
|
87
|
-
paddingBlockEnd: `calc(var(--container-padding-block-end) - ${borderVars['--border-width']})`,
|
|
88
80
|
},
|
|
89
81
|
// Fixed-height cards scroll content; overflow: auto also clips to border-radius
|
|
90
82
|
scrollable: {
|
|
@@ -274,6 +266,7 @@ export function Card({
|
|
|
274
266
|
stylex.props(
|
|
275
267
|
styles.card,
|
|
276
268
|
variantStyles[variant],
|
|
269
|
+
variant === 'default' && styles.withBorder,
|
|
277
270
|
hasFixedHeight && styles.scrollable,
|
|
278
271
|
dynamicStyles.sizing(
|
|
279
272
|
width ?? null,
|
|
@@ -303,9 +296,6 @@ export function Card({
|
|
|
303
296
|
!useThemeDefault &&
|
|
304
297
|
effectivePadding !== 4 &&
|
|
305
298
|
containerPaddingBlockEndVarStyles[effectivePadding],
|
|
306
|
-
// Applied after the container padding so the border-inset calc wins;
|
|
307
|
-
// it reads the --container-padding-* vars set above.
|
|
308
|
-
variant === 'default' && styles.withBorder,
|
|
309
299
|
xstyle,
|
|
310
300
|
),
|
|
311
301
|
className,
|
|
@@ -20,15 +20,15 @@ export const docs = {
|
|
|
20
20
|
],
|
|
21
21
|
anatomy: [
|
|
22
22
|
{name: 'Scroll container', required: true, description: 'The horizontal overflow area that holds all items.'},
|
|
23
|
-
{name: 'Items', required: true, description: 'The children rendered in a row
|
|
23
|
+
{name: 'Items', required: true, description: 'The children rendered in a row. Each item is animated with a scroll-driven scale effect.'},
|
|
24
24
|
{name: 'Fade edges', required: false, description: 'Gradient fades on the left and right edges that indicate more content is available. Enabled by default, disable with hasEdgeFade={false}.'},
|
|
25
|
-
{name: 'Navigation buttons', required: false, description: 'Prev/next buttons that appear
|
|
25
|
+
{name: 'Navigation buttons', required: false, description: 'Prev/next buttons that appear on hover. Enabled by default, disable with hasButtons={false}.'},
|
|
26
26
|
],
|
|
27
27
|
},
|
|
28
28
|
props: [
|
|
29
29
|
{name: 'children', type: 'ReactNode', description: 'Carousel items rendered in a horizontal scroll container.', required: true},
|
|
30
30
|
{name: 'gap', type: "0 | 0.5 | 1 | 1.5 | 2 | 3 | 4", description: 'Gap between items using the spacing token scale.', default: '1'},
|
|
31
|
-
{name: 'hasButtons', type: 'boolean', description: 'Show prev/next navigation buttons
|
|
31
|
+
{name: 'hasButtons', type: 'boolean', description: 'Show prev/next navigation buttons on hover (desktop only).', default: 'true'},
|
|
32
32
|
{name: 'hasEdgeFade', type: 'boolean', description: 'Show a gradient edge-fade mask when content overflows, signalling that more items exist off-screen.', default: 'true'},
|
|
33
33
|
{name: 'hasSnap', type: 'boolean', description: 'Enable scroll-snap so each child snaps to the start edge.', default: 'false'},
|
|
34
34
|
{name: 'padding', type: '0 | 0.5 | 1 | 1.5 | 2 | 3 | 4 | 5 | 6 | 8 | 10', description: 'Inline padding inside the scroll container, with matching scroll-padding so snap points align to the content edge.'},
|
|
@@ -59,20 +59,20 @@ export const docs = {
|
|
|
59
59
|
export const docsZh = {
|
|
60
60
|
usage: {
|
|
61
61
|
description:
|
|
62
|
-
'Carousel
|
|
62
|
+
'Carousel scrolls a row of items horizontally when they overflow the available width. Use it for card grids, image galleries, product lists, or any set of items that should be browsable without taking up the full page.',
|
|
63
63
|
bestPractices: [
|
|
64
|
-
{guidance: true, description: '
|
|
65
|
-
{guidance: true, description: '
|
|
66
|
-
{guidance: true, description: '
|
|
67
|
-
{guidance: false, description: '
|
|
68
|
-
{guidance: false, description: '
|
|
69
|
-
{guidance: false, description: '
|
|
64
|
+
{guidance: true, description: 'Enable scroll-snap when each item should land precisely at the start edge, like a gallery or product list.'},
|
|
65
|
+
{guidance: true, description: 'Always provide an aria-label that describes what the carousel contains, like "Featured products" or "Team members".'},
|
|
66
|
+
{guidance: true, description: 'Use a consistent gap and item width so the carousel looks intentional, not like content overflowing by accident.'},
|
|
67
|
+
{guidance: false, description: 'Use a carousel for content every user must see. Not everyone scrolls horizontally, so put critical content above the fold.'},
|
|
68
|
+
{guidance: false, description: 'Auto-advance items. Let the user scroll at their own pace.'},
|
|
69
|
+
{guidance: false, description: 'Nest carousels. A carousel inside a carousel is confusing and breaks keyboard navigation.'},
|
|
70
70
|
],
|
|
71
71
|
},
|
|
72
72
|
propDescriptions: {
|
|
73
73
|
children: '在水平滚动容器中渲染的轮播项目。',
|
|
74
74
|
gap: '使用间距令牌比例的项目间距。',
|
|
75
|
-
hasButtons: '
|
|
75
|
+
hasButtons: '悬停时显示上一个/下一个导航按钮(仅桌面端)。',
|
|
76
76
|
hasEdgeFade: '内容溢出时显示渐变边缘遮罩,提示屏幕外还有更多项目。',
|
|
77
77
|
hasSnap: '启用滚动吸附,使每个子元素吸附到起始边缘。',
|
|
78
78
|
padding: '滚动容器内的内联内边距,并设置匹配的 scroll-padding,使吸附点与内容边缘对齐。',
|
|
@@ -98,7 +98,7 @@ export const docsDense = {
|
|
|
98
98
|
propDescriptions: {
|
|
99
99
|
children: 'carousel items in horizontal scroll',
|
|
100
100
|
gap: 'item spacing via spacing token scale',
|
|
101
|
-
hasButtons: 'prev/next buttons
|
|
101
|
+
hasButtons: 'prev/next buttons on hover (desktop)',
|
|
102
102
|
hasEdgeFade: 'gradient edge-fade mask on overflow',
|
|
103
103
|
hasSnap: 'scroll-snap; children snap to start edge',
|
|
104
104
|
padding: 'inline padding; scroll-padding keeps snap points on content edge',
|
|
@@ -38,19 +38,6 @@ describe('Carousel', () => {
|
|
|
38
38
|
expect(region).toHaveAttribute('aria-roledescription', 'carousel');
|
|
39
39
|
});
|
|
40
40
|
|
|
41
|
-
it('makes the scroll container keyboard-focusable', () => {
|
|
42
|
-
render(
|
|
43
|
-
<Carousel aria-label="Photos">
|
|
44
|
-
<div>Item</div>
|
|
45
|
-
</Carousel>,
|
|
46
|
-
);
|
|
47
|
-
// The inner scroll container overflows, so it must be reachable by
|
|
48
|
-
// keyboard (axe: scrollable-region-focusable).
|
|
49
|
-
const region = screen.getByRole('region', {name: 'Photos'});
|
|
50
|
-
const scroller = region.firstElementChild;
|
|
51
|
-
expect(scroller).toHaveAttribute('tabindex', '0');
|
|
52
|
-
});
|
|
53
|
-
|
|
54
41
|
it('applies data-testid', () => {
|
|
55
42
|
render(
|
|
56
43
|
<Carousel data-testid="my-carousel">
|
|
@@ -318,8 +318,6 @@ export function Carousel({
|
|
|
318
318
|
: null
|
|
319
319
|
: null;
|
|
320
320
|
|
|
321
|
-
// Self-authored position styles (positioning: 'custom' below): a cover
|
|
322
|
-
// centered on the anchor, sized to it — direction-neutral by construction.
|
|
323
321
|
const coverStyle: React.CSSProperties = {
|
|
324
322
|
positionArea: 'center',
|
|
325
323
|
width: 'anchor-size(width)',
|
|
@@ -342,7 +340,6 @@ export function Carousel({
|
|
|
342
340
|
{...htmlProps}>
|
|
343
341
|
<div
|
|
344
342
|
ref={composedRef}
|
|
345
|
-
tabIndex={0}
|
|
346
343
|
{...stylex.props(
|
|
347
344
|
styles.scroller,
|
|
348
345
|
gapStyles[gap],
|
|
@@ -400,7 +397,8 @@ export function Carousel({
|
|
|
400
397
|
</div>
|
|
401
398
|
</>,
|
|
402
399
|
{
|
|
403
|
-
|
|
400
|
+
placement: 'below',
|
|
401
|
+
alignment: 'center',
|
|
404
402
|
style: coverStyle,
|
|
405
403
|
xstyle: styles.buttonOverlay,
|
|
406
404
|
},
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
import * as stylex from '@stylexjs/stylex';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Scoped marker for Carousel ancestor selectors.
|
|
7
|
+
* Prevents hover styles from leaking from parent containers.
|
|
8
|
+
*/
|
|
9
|
+
export const carouselScope: ReturnType<typeof stylex.defineMarker> =
|
|
10
|
+
stylex.defineMarker();
|
package/src/Chat/Chat.doc.mjs
CHANGED
|
@@ -17,7 +17,7 @@ export const docs = {
|
|
|
17
17
|
{className: 'astryx-chat-composer', visualProps: ['density']},
|
|
18
18
|
{className: 'astryx-chat-composer-input'},
|
|
19
19
|
{className: 'astryx-chat-composer-drawer', visualProps: ['collapsed']},
|
|
20
|
-
{className: 'astryx-chat-message', visualProps: ['sender'
|
|
20
|
+
{className: 'astryx-chat-message', visualProps: ['sender']},
|
|
21
21
|
{
|
|
22
22
|
className: 'astryx-chat-message-bubble',
|
|
23
23
|
visualProps: ['sender', 'variant', 'density'],
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
import {describe, it, expect, vi, afterEach} from 'vitest';
|
|
4
4
|
import {render, screen, fireEvent} from '@testing-library/react';
|
|
5
|
-
import {ChatComposer} from './ChatComposer';
|
|
6
5
|
import {ChatComposerInput} from './ChatComposerInput';
|
|
7
6
|
import type {
|
|
8
7
|
ChatComposerTrigger,
|
|
@@ -130,29 +129,6 @@ describe('ChatComposerInput', () => {
|
|
|
130
129
|
fireEvent.keyDown(textbox, {key: 'Enter'});
|
|
131
130
|
expect(onSubmit).not.toHaveBeenCalled();
|
|
132
131
|
});
|
|
133
|
-
|
|
134
|
-
it('keeps parent submit flow when child onChange observes input changes', () => {
|
|
135
|
-
const onSubmit = vi.fn();
|
|
136
|
-
const onInputChange = vi.fn();
|
|
137
|
-
render(
|
|
138
|
-
<ChatComposer
|
|
139
|
-
onSubmit={onSubmit}
|
|
140
|
-
input={<ChatComposerInput onChange={onInputChange} />}
|
|
141
|
-
/>,
|
|
142
|
-
);
|
|
143
|
-
|
|
144
|
-
const textbox = screen.getByRole('textbox');
|
|
145
|
-
textbox.textContent = 'hello world';
|
|
146
|
-
fireEvent.input(textbox);
|
|
147
|
-
|
|
148
|
-
expect(onInputChange).toHaveBeenLastCalledWith('hello world');
|
|
149
|
-
|
|
150
|
-
fireEvent.keyDown(textbox, {key: 'Enter'});
|
|
151
|
-
|
|
152
|
-
expect(onSubmit).toHaveBeenCalledWith('hello world');
|
|
153
|
-
expect(onInputChange).toHaveBeenLastCalledWith('');
|
|
154
|
-
expect(textbox.textContent).toBe('');
|
|
155
|
-
});
|
|
156
132
|
});
|
|
157
133
|
|
|
158
134
|
// Controlled-value sync used to overwrite `textContent` on every
|
|
@@ -369,9 +345,7 @@ describe('ChatComposerInput', () => {
|
|
|
369
345
|
},
|
|
370
346
|
});
|
|
371
347
|
|
|
372
|
-
expect(
|
|
373
|
-
textbox.querySelector('[data-astryx-token]'),
|
|
374
|
-
).not.toBeInTheDocument();
|
|
348
|
+
expect(textbox.querySelector('[data-astryx-token]')).not.toBeInTheDocument();
|
|
375
349
|
expect(textbox.textContent).toBe(long);
|
|
376
350
|
});
|
|
377
351
|
});
|
|
@@ -43,7 +43,10 @@ import {
|
|
|
43
43
|
} from '../theme/tokens.stylex';
|
|
44
44
|
import {mergeProps} from '../utils';
|
|
45
45
|
import {useTriggerMenu} from './useTriggerMenu';
|
|
46
|
-
import {
|
|
46
|
+
import {
|
|
47
|
+
useChatComposerTokens,
|
|
48
|
+
isCustomToken,
|
|
49
|
+
} from './useChatComposerTokens';
|
|
47
50
|
import {ensureCaretInside, insertTextAtCursor} from './chatComposerSelection';
|
|
48
51
|
import {ChatPastedTextToken} from './ChatPastedTextToken';
|
|
49
52
|
import {
|
|
@@ -280,13 +283,12 @@ function serialize(node: Node): string {
|
|
|
280
283
|
|
|
281
284
|
export function ChatComposerInput(props: ChatComposerInputProps) {
|
|
282
285
|
const composerCtx = useChatComposerContext();
|
|
283
|
-
const hasControlledValueProp = props.value !== undefined;
|
|
284
286
|
|
|
285
287
|
const {
|
|
286
288
|
ref,
|
|
287
289
|
handleRef,
|
|
288
290
|
value: controlledValue = composerCtx?.value,
|
|
289
|
-
onChange
|
|
291
|
+
onChange = composerCtx?.onChange,
|
|
290
292
|
placeholder = composerCtx?.placeholder ?? 'Type a message\u2026',
|
|
291
293
|
maxRows = 8,
|
|
292
294
|
triggers,
|
|
@@ -304,21 +306,6 @@ export function ChatComposerInput(props: ChatComposerInputProps) {
|
|
|
304
306
|
...rest
|
|
305
307
|
} = props;
|
|
306
308
|
|
|
307
|
-
const composerOnChange = composerCtx?.onChange;
|
|
308
|
-
const onChange = useCallback(
|
|
309
|
-
(nextValue: string) => {
|
|
310
|
-
if (hasControlledValueProp) {
|
|
311
|
-
onChangeProp?.(nextValue);
|
|
312
|
-
return;
|
|
313
|
-
}
|
|
314
|
-
composerOnChange?.(nextValue);
|
|
315
|
-
if (onChangeProp !== composerOnChange) {
|
|
316
|
-
onChangeProp?.(nextValue);
|
|
317
|
-
}
|
|
318
|
-
},
|
|
319
|
-
[composerOnChange, hasControlledValueProp, onChangeProp],
|
|
320
|
-
);
|
|
321
|
-
|
|
322
309
|
const editableRef = useRef<HTMLDivElement>(null);
|
|
323
310
|
const selfRef = useRef<ChatComposerInputHandle>(null);
|
|
324
311
|
const [isEmpty, setIsEmpty] = useState(true);
|
|
@@ -692,7 +679,11 @@ ChatComposerInput.displayName = 'ChatComposerInput';
|
|
|
692
679
|
// Token element helper (for custom rendering in stories/consumers)
|
|
693
680
|
// =============================================================================
|
|
694
681
|
|
|
695
|
-
export function ChatComposerTokenElement({
|
|
682
|
+
export function ChatComposerTokenElement({
|
|
683
|
+
token,
|
|
684
|
+
}: {
|
|
685
|
+
token: ChatComposerToken;
|
|
686
|
+
}) {
|
|
696
687
|
return (
|
|
697
688
|
<span
|
|
698
689
|
data-astryx-token=""
|
|
@@ -702,7 +693,11 @@ export function ChatComposerTokenElement({token}: {token: ChatComposerToken}) {
|
|
|
702
693
|
{isCustomToken(token) ? (
|
|
703
694
|
token.render()
|
|
704
695
|
) : (
|
|
705
|
-
<Badge
|
|
696
|
+
<Badge
|
|
697
|
+
label={token.label}
|
|
698
|
+
variant={token.variant}
|
|
699
|
+
icon={token.icon}
|
|
700
|
+
/>
|
|
706
701
|
)}
|
|
707
702
|
</span>
|
|
708
703
|
);
|
|
@@ -105,7 +105,6 @@ export function ChatDictationButton({
|
|
|
105
105
|
xstyle,
|
|
106
106
|
className,
|
|
107
107
|
style,
|
|
108
|
-
...rest
|
|
109
108
|
}: ChatDictationButtonProps) {
|
|
110
109
|
if (isHiddenWhenUnsupported && !dictation.isSupported) {
|
|
111
110
|
return null;
|
|
@@ -131,8 +130,7 @@ export function ChatDictationButton({
|
|
|
131
130
|
return (
|
|
132
131
|
<span
|
|
133
132
|
ref={ref}
|
|
134
|
-
{...mergeProps(stylex.props(styles.wrapper, xstyle), className, style)}
|
|
135
|
-
{...rest}>
|
|
133
|
+
{...mergeProps(stylex.props(styles.wrapper, xstyle), className, style)}>
|
|
136
134
|
{isListening && (
|
|
137
135
|
<span
|
|
138
136
|
aria-hidden
|
|
@@ -163,7 +161,9 @@ export function ChatDictationButton({
|
|
|
163
161
|
aria-label={accessibleLabel}
|
|
164
162
|
variant="ghost"
|
|
165
163
|
size={size}
|
|
166
|
-
icon={
|
|
164
|
+
icon={
|
|
165
|
+
isListening ? undefined : <Icon icon="microphone" size={size} />
|
|
166
|
+
}
|
|
167
167
|
isIconOnly
|
|
168
168
|
onClick={dictation.toggle}
|
|
169
169
|
/>
|
|
@@ -118,13 +118,11 @@ export function ChatLayoutScrollButton({
|
|
|
118
118
|
xstyle,
|
|
119
119
|
className,
|
|
120
120
|
style,
|
|
121
|
-
...rest
|
|
122
121
|
}: ChatLayoutScrollButtonProps) {
|
|
123
122
|
return (
|
|
124
123
|
<div
|
|
125
124
|
ref={ref}
|
|
126
|
-
{...mergeProps(stylex.props(styles.wrapper, xstyle), className, style)}
|
|
127
|
-
{...rest}>
|
|
125
|
+
{...mergeProps(stylex.props(styles.wrapper, xstyle), className, style)}>
|
|
128
126
|
<div
|
|
129
127
|
{...stylex.props(
|
|
130
128
|
styles.container,
|
|
@@ -28,7 +28,11 @@ import type {BaseProps} from '../BaseProps';
|
|
|
28
28
|
import {themeProps} from '../utils/themeProps';
|
|
29
29
|
|
|
30
30
|
export type ChatMessageStatus =
|
|
31
|
-
|
|
31
|
+
| 'sending'
|
|
32
|
+
| 'sent'
|
|
33
|
+
| 'delivered'
|
|
34
|
+
| 'read'
|
|
35
|
+
| 'error';
|
|
32
36
|
|
|
33
37
|
const STATUS_CONFIG: Record<
|
|
34
38
|
ChatMessageStatus,
|
|
@@ -114,7 +118,6 @@ export function ChatMessageMetadata({
|
|
|
114
118
|
xstyle,
|
|
115
119
|
className,
|
|
116
120
|
style,
|
|
117
|
-
...rest
|
|
118
121
|
}: ChatMessageMetadataProps) {
|
|
119
122
|
const msgContext = useChatMessageContext();
|
|
120
123
|
const sender = msgContext?.sender ?? 'assistant';
|
|
@@ -139,8 +142,7 @@ export function ChatMessageMetadata({
|
|
|
139
142
|
),
|
|
140
143
|
className,
|
|
141
144
|
style,
|
|
142
|
-
)}
|
|
143
|
-
{...rest}>
|
|
145
|
+
)}>
|
|
144
146
|
{timestamp != null && <span>{timestamp}</span>}
|
|
145
147
|
{timestamp != null && (footer != null || statusConfig != null) && (
|
|
146
148
|
<span>·</span>
|
|
@@ -11,20 +11,26 @@ describe('ChatSystemMessage', () => {
|
|
|
11
11
|
});
|
|
12
12
|
|
|
13
13
|
it('has role="status"', () => {
|
|
14
|
-
render(
|
|
14
|
+
render(
|
|
15
|
+
<ChatSystemMessage data-testid="sys">Notice</ChatSystemMessage>,
|
|
16
|
+
);
|
|
15
17
|
const el = screen.getByTestId('sys');
|
|
16
18
|
expect(el.getAttribute('role')).toBe('status');
|
|
17
19
|
});
|
|
18
20
|
|
|
19
21
|
it('renders default variant without divider lines', () => {
|
|
20
|
-
const {container} = render(
|
|
22
|
+
const {container} = render(
|
|
23
|
+
<ChatSystemMessage>Hello</ChatSystemMessage>,
|
|
24
|
+
);
|
|
21
25
|
// Divider lines have aria-hidden, so check there are none
|
|
22
26
|
const hiddenElements = container.querySelectorAll('[aria-hidden]');
|
|
23
27
|
expect(hiddenElements.length).toBe(0);
|
|
24
28
|
});
|
|
25
29
|
|
|
26
30
|
it('renders divider variant with Divider', () => {
|
|
27
|
-
render(
|
|
31
|
+
render(
|
|
32
|
+
<ChatSystemMessage variant="divider">Today</ChatSystemMessage>,
|
|
33
|
+
);
|
|
28
34
|
expect(screen.getByText('Today')).toBeTruthy();
|
|
29
35
|
});
|
|
30
36
|
|
|
@@ -48,30 +54,9 @@ describe('ChatSystemMessage', () => {
|
|
|
48
54
|
});
|
|
49
55
|
|
|
50
56
|
it('applies data-testid', () => {
|
|
51
|
-
render(<ChatSystemMessage data-testid="my-sys">Hello</ChatSystemMessage>);
|
|
52
|
-
expect(screen.getByTestId('my-sys')).toBeTruthy();
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
it('forwards rest props (data-*, id) while keeping its own role', () => {
|
|
56
|
-
render(
|
|
57
|
-
<ChatSystemMessage data-testid="sys" data-custom="x" id="sys-1">
|
|
58
|
-
Hello
|
|
59
|
-
</ChatSystemMessage>,
|
|
60
|
-
);
|
|
61
|
-
const el = screen.getByTestId('sys');
|
|
62
|
-
expect(el).toHaveAttribute('data-custom', 'x');
|
|
63
|
-
expect(el).toHaveAttribute('id', 'sys-1');
|
|
64
|
-
expect(el.getAttribute('role')).toBe('status');
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
it('forwards rest props in the divider variant', () => {
|
|
68
57
|
render(
|
|
69
|
-
<ChatSystemMessage
|
|
70
|
-
Today
|
|
71
|
-
</ChatSystemMessage>,
|
|
58
|
+
<ChatSystemMessage data-testid="my-sys">Hello</ChatSystemMessage>,
|
|
72
59
|
);
|
|
73
|
-
|
|
74
|
-
expect(el).toHaveAttribute('data-custom', 'x');
|
|
75
|
-
expect(el.getAttribute('role')).toBe('status');
|
|
60
|
+
expect(screen.getByTestId('my-sys')).toBeTruthy();
|
|
76
61
|
});
|
|
77
62
|
});
|
|
@@ -120,21 +120,21 @@ export function ChatSystemMessage({
|
|
|
120
120
|
xstyle,
|
|
121
121
|
className,
|
|
122
122
|
style: styleProp,
|
|
123
|
+
'data-testid': testId,
|
|
123
124
|
ref,
|
|
124
|
-
...rest
|
|
125
125
|
}: ChatSystemMessageProps) {
|
|
126
126
|
if (variant === 'divider') {
|
|
127
127
|
return (
|
|
128
128
|
<div
|
|
129
129
|
ref={ref}
|
|
130
|
+
role="status"
|
|
131
|
+
data-testid={testId}
|
|
130
132
|
{...mergeProps(
|
|
131
133
|
themeProps('chat-system-message', {variant}),
|
|
132
134
|
stylex.props(styles.dividerWrap, xstyle),
|
|
133
135
|
className,
|
|
134
136
|
styleProp,
|
|
135
|
-
)}
|
|
136
|
-
{...rest}
|
|
137
|
-
role="status">
|
|
137
|
+
)}>
|
|
138
138
|
<Divider label={children} />
|
|
139
139
|
</div>
|
|
140
140
|
);
|
|
@@ -143,14 +143,14 @@ export function ChatSystemMessage({
|
|
|
143
143
|
return (
|
|
144
144
|
<div
|
|
145
145
|
ref={ref}
|
|
146
|
+
role="status"
|
|
147
|
+
data-testid={testId}
|
|
146
148
|
{...mergeProps(
|
|
147
149
|
themeProps('chat-system-message', {variant}),
|
|
148
150
|
stylex.props(styles.root, xstyle),
|
|
149
151
|
className,
|
|
150
152
|
styleProp,
|
|
151
|
-
)}
|
|
152
|
-
{...rest}
|
|
153
|
-
role="status">
|
|
153
|
+
)}>
|
|
154
154
|
<span {...stylex.props(styles.content)}>
|
|
155
155
|
{icon != null && <span {...stylex.props(styles.icon)}>{icon}</span>}
|
|
156
156
|
{children}
|