@astryxdesign/core 0.1.4 → 0.1.5-canary.76e6697
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/CHANGELOG.md +141 -0
- package/dist/AlertDialog/AlertDialog.d.ts +1 -1
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +20 -18
- package/dist/AlertDialog/useImperativeAlertDialog.d.ts +0 -2
- package/dist/AlertDialog/useImperativeAlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/useImperativeAlertDialog.js +3 -5
- package/dist/AppShell/AppShell.d.ts +1 -1
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +55 -53
- package/dist/AspectRatio/AspectRatio.d.ts +48 -10
- package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
- package/dist/AspectRatio/AspectRatio.js +33 -12
- 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 +28 -26
- package/dist/Avatar/AvatarStatusDot.js +6 -6
- package/dist/AvatarGroup/AvatarGroup.js +6 -6
- package/dist/AvatarGroup/AvatarGroupOverflow.js +7 -7
- package/dist/Badge/Badge.js +3 -3
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +32 -25
- 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 +68 -48
- 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 +4 -2
- package/dist/Card/Card.d.ts.map +1 -1
- package/dist/Card/Card.js +18 -10
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +24 -21
- 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 +27 -15
- package/dist/Chat/ChatDictationButton.d.ts +1 -1
- package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
- package/dist/Chat/ChatDictationButton.js +13 -11
- 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 +12 -10
- 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 +14 -12
- 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 +24 -15
- package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
- package/dist/Chat/ChatToolCalls.js +81 -74
- 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 +25 -23
- 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 +8 -6
- package/dist/Citation/Citation.js +10 -10
- package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
- package/dist/ClickableCard/ClickableCard.js +32 -9
- package/dist/Code/Code.js +3 -3
- package/dist/CodeBlock/CodeBlock.d.ts +10 -1
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +88 -52
- package/dist/Collapsible/Collapsible.d.ts +9 -3
- package/dist/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible/Collapsible.js +109 -22
- package/dist/Collapsible/CollapsibleGroup.d.ts +37 -7
- package/dist/Collapsible/CollapsibleGroup.d.ts.map +1 -1
- package/dist/Collapsible/CollapsibleGroup.js +64 -12
- package/dist/Collapsible/CollapsibleGroupContext.d.ts +24 -0
- package/dist/Collapsible/CollapsibleGroupContext.d.ts.map +1 -1
- package/dist/Collapsible/CollapsibleGroupContext.js +26 -3
- package/dist/Collapsible/index.d.ts +1 -0
- package/dist/Collapsible/index.d.ts.map +1 -1
- package/dist/Collapsible/useCollapsible.d.ts +4 -1
- package/dist/Collapsible/useCollapsible.d.ts.map +1 -1
- package/dist/Collapsible/useCollapsible.js +20 -6
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +36 -34
- 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 +7 -2
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +76 -43
- package/dist/DateInput/DateInput.js +18 -18
- package/dist/DateRangeInput/DateRangeInput.js +21 -21
- package/dist/DateTimeInput/DateTimeInput.d.ts +5 -2
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +30 -26
- 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 +2 -17
- 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 +4 -3
- package/dist/Grid/Grid.d.ts.map +1 -1
- package/dist/Grid/Grid.js +29 -12
- 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 +5 -1
- 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 +16 -12
- 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 +29 -2
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +44 -31
- 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 +55 -31
- package/dist/Lightbox/useLightbox.d.ts +0 -1
- package/dist/Lightbox/useLightbox.d.ts.map +1 -1
- package/dist/Lightbox/useLightbox.js +3 -4
- package/dist/Link/Link.d.ts +0 -2
- package/dist/Link/Link.d.ts.map +1 -1
- package/dist/Link/Link.js +15 -17
- package/dist/Link/LinkProvider.js +3 -3
- package/dist/Link/useLinkify.js +3 -3
- package/dist/List/List.js +11 -11
- package/dist/List/ListItem.js +11 -11
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +102 -102
- package/dist/MetadataList/MetadataList.js +10 -10
- package/dist/MetadataList/MetadataListItem.js +15 -15
- package/dist/MobileNav/MobileNav.d.ts +1 -1
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +26 -23
- 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 +48 -32
- 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.d.ts +0 -3
- package/dist/Overlay/useOverlay.d.ts.map +1 -1
- package/dist/Overlay/useOverlay.js +3 -6
- package/dist/Pagination/Pagination.d.ts +1 -1
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +125 -72
- 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 +110 -92
- 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 +25 -18
- 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 +24 -21
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +28 -10
- 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 +32 -10
- package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +18 -12
- 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 +38 -34
- package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseButton.js +8 -6
- 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 +18 -16
- 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 +8 -4
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +34 -29
- 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 +57 -30
- package/dist/TabList/tab.markers.stylex.d.ts +1 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +50 -39
- 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 +9 -5
- 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 +9 -5
- package/dist/Table/TableHeader.d.ts +1 -1
- package/dist/Table/TableHeader.d.ts.map +1 -1
- package/dist/Table/TableHeader.js +9 -5
- package/dist/Table/TableHeaderCell.js +3 -3
- package/dist/Table/TableRow.js +5 -5
- package/dist/Table/index.d.ts +2 -0
- package/dist/Table/index.d.ts.map +1 -1
- package/dist/Table/index.js +1 -0
- package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
- package/dist/Table/plugins/columnResize/useTableColumnResize.js +14 -11
- package/dist/Table/plugins/filtering/useTableFiltering.js +71 -71
- package/dist/Table/plugins/groupedRows/index.d.ts +3 -0
- package/dist/Table/plugins/groupedRows/index.d.ts.map +1 -0
- package/dist/Table/plugins/groupedRows/index.js +3 -0
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +78 -0
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -0
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +250 -0
- package/dist/Table/plugins/pagination/paginateData.d.ts.map +1 -1
- package/dist/Table/plugins/pagination/paginateData.js +5 -1
- package/dist/Table/plugins/pagination/useTablePagination.js +7 -7
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +23 -23
- 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 +11 -1
- 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 +8 -4
- 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 +3 -2
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +30 -29
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +26 -21
- package/dist/Timestamp/Timestamp.d.ts +1 -1
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +37 -26
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +25 -17
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +23 -11
- package/dist/Toast/useToast.d.ts.map +1 -1
- package/dist/Toast/useToast.js +44 -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 +36 -34
- package/dist/Toolbar/Toolbar.js +18 -18
- package/dist/Tooltip/Tooltip.js +11 -11
- package/dist/Tooltip/useTooltip.d.ts +5 -1
- 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 +25 -14
- 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 +23 -20
- package/dist/Typeahead/Typeahead.js +12 -12
- package/dist/Typeahead/TypeaheadItem.js +10 -10
- package/dist/VStack/VStack.js +3 -3
- package/dist/VisuallyHidden/VisuallyHidden.d.ts +0 -3
- package/dist/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
- package/dist/VisuallyHidden/VisuallyHidden.js +0 -3
- package/dist/astryx.css +7 -0
- package/dist/astryx.umd.js +63 -63
- package/dist/astryx.umd.js.map +4 -4
- package/dist/docs-types.d.ts +8 -2
- 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 +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useFocusTrap.d.ts +3 -0
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +38 -1
- package/dist/hooks/useHotkeys.d.ts +51 -0
- package/dist/hooks/useHotkeys.d.ts.map +1 -0
- package/dist/hooks/useHotkeys.js +160 -0
- package/dist/hooks/useInteractiveRole.d.ts +6 -2
- package/dist/hooks/useInteractiveRole.d.ts.map +1 -1
- package/dist/hooks/useInteractiveRole.js +6 -2
- package/dist/hooks/useKeyboardHint.js +9 -9
- package/dist/hooks/useStreamingText.d.ts +3 -1
- package/dist/hooks/useStreamingText.d.ts.map +1 -1
- package/dist/hooks/useStreamingText.js +14 -5
- 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 +10 -3
- package/dist/theme/hct.d.ts +0 -15
- 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 +10 -2
- package/dist/theme/tokens.d.ts.map +1 -1
- package/dist/theme/tokens.js +220 -4
- package/dist/theme/useTheme.d.ts +3 -2
- package/dist/theme/useTheme.d.ts.map +1 -1
- package/dist/theme/useTheme.js +73 -6
- package/dist/utils/color.d.ts +42 -0
- package/dist/utils/color.d.ts.map +1 -0
- package/dist/utils/color.js +150 -0
- package/dist/utils/composeEventHandlers.d.ts +30 -0
- package/dist/utils/composeEventHandlers.d.ts.map +1 -0
- package/dist/utils/composeEventHandlers.js +40 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -1
- package/dist/utils/timeParser.d.ts.map +1 -1
- package/dist/utils/timeParser.js +8 -5
- package/package.json +4 -4
- package/src/AlertDialog/AlertDialog.doc.mjs +4 -0
- package/src/AlertDialog/AlertDialog.tsx +2 -0
- package/src/AlertDialog/useImperativeAlertDialog.tsx +0 -2
- package/src/AppShell/AppShell.tsx +2 -0
- package/src/AspectRatio/AspectRatio.doc.mjs +28 -1
- package/src/AspectRatio/AspectRatio.test.tsx +142 -1
- package/src/AspectRatio/AspectRatio.tsx +70 -10
- package/src/AspectRatio/index.ts +5 -1
- package/src/Avatar/Avatar.doc.mjs +11 -0
- package/src/Avatar/Avatar.test.tsx +32 -1
- package/src/Avatar/Avatar.tsx +14 -22
- package/src/Avatar/AvatarStatusDot.tsx +2 -2
- package/src/AvatarGroup/AvatarGroup.doc.mjs +1 -0
- package/src/AvatarGroup/AvatarGroup.tsx +2 -2
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +2 -2
- package/src/Banner/Banner.doc.mjs +8 -0
- package/src/Banner/Banner.test.tsx +38 -0
- package/src/Banner/Banner.tsx +8 -1
- package/src/Calendar/Calendar.doc.mjs +1 -1
- package/src/Calendar/Calendar.test.tsx +122 -17
- package/src/Calendar/Calendar.tsx +26 -5
- package/src/Calendar/dayCellUtils.ts +3 -1
- package/src/Calendar/styles.ts +12 -2
- package/src/Card/Card.doc.mjs +1 -1
- package/src/Card/Card.tsx +16 -6
- package/src/Carousel/Carousel.doc.mjs +12 -12
- package/src/Carousel/Carousel.test.tsx +13 -0
- package/src/Carousel/Carousel.tsx +4 -2
- package/src/Chat/Chat.doc.mjs +1 -1
- package/src/Chat/ChatComposerInput.test.tsx +27 -1
- package/src/Chat/ChatComposerInput.tsx +20 -15
- package/src/Chat/ChatDictationButton.test.tsx +43 -0
- package/src/Chat/ChatDictationButton.tsx +4 -4
- package/src/Chat/ChatLayoutScrollButton.test.tsx +33 -0
- package/src/Chat/ChatLayoutScrollButton.tsx +3 -1
- package/src/Chat/ChatMessageMetadata.test.tsx +32 -0
- package/src/Chat/ChatMessageMetadata.tsx +4 -6
- package/src/Chat/ChatSystemMessage.test.tsx +26 -11
- package/src/Chat/ChatSystemMessage.tsx +7 -7
- package/src/Chat/ChatTokenizedText.test.tsx +29 -16
- package/src/Chat/ChatTokenizedText.tsx +15 -8
- package/src/Chat/ChatToolCalls.test.tsx +55 -0
- package/src/Chat/ChatToolCalls.tsx +10 -12
- package/src/Chat/index.ts +1 -4
- package/src/Chat/useTriggerMenu.tsx +1 -4
- package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
- package/src/CheckboxInput/CheckboxInput.test.tsx +71 -4
- package/src/CheckboxInput/CheckboxInput.tsx +2 -0
- package/src/CheckboxList/CheckboxList.test.tsx +19 -0
- package/src/CheckboxList/CheckboxListItem.tsx +11 -2
- package/src/Citation/Citation.doc.mjs +5 -0
- package/src/ClickableCard/ClickableCard.tsx +45 -2
- package/src/CodeBlock/CodeBlock.doc.mjs +7 -2
- package/src/CodeBlock/CodeBlock.test.tsx +122 -3
- package/src/CodeBlock/CodeBlock.tsx +62 -4
- package/src/Collapsible/Collapsible.doc.mjs +8 -4
- package/src/Collapsible/Collapsible.test.tsx +403 -0
- package/src/Collapsible/Collapsible.tsx +85 -10
- package/src/Collapsible/CollapsibleGroup.doc.mjs +27 -3
- package/src/Collapsible/CollapsibleGroup.test.tsx +314 -0
- package/src/Collapsible/CollapsibleGroup.tsx +97 -9
- package/src/Collapsible/CollapsibleGroupContext.tsx +34 -2
- package/src/Collapsible/index.ts +1 -0
- package/src/Collapsible/useCollapsible.ts +20 -6
- package/src/CommandPalette/CommandPalette.doc.mjs +5 -0
- package/src/CommandPalette/CommandPalette.tsx +5 -3
- package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +5 -0
- package/src/CommandPalette/CommandPaletteGroup.doc.mjs +10 -0
- package/src/CommandPalette/CommandPaletteInput.doc.mjs +6 -0
- package/src/CommandPalette/CommandPaletteItem.doc.mjs +6 -0
- package/src/CommandPalette/CommandPaletteList.doc.mjs +9 -0
- package/src/ContextMenu/ContextMenu.doc.mjs +15 -0
- package/src/ContextMenu/ContextMenu.test.tsx +87 -0
- package/src/ContextMenu/ContextMenu.tsx +87 -28
- package/src/ContextMenu/ContextMenuItem.doc.mjs +6 -0
- package/src/DateInput/DateInput.test.tsx +11 -20
- package/src/DateRangeInput/DateRangeInput.doc.mjs +9 -6
- package/src/DateRangeInput/DateRangeInput.test.tsx +31 -44
- package/src/DateTimeInput/DateTimeInput.doc.mjs +3 -2
- package/src/DateTimeInput/DateTimeInput.test.tsx +118 -16
- package/src/DateTimeInput/DateTimeInput.tsx +8 -2
- package/src/DateTimeInput/index.ts +1 -0
- package/src/Dialog/Dialog.doc.mjs +4 -0
- package/src/Dialog/DialogHeader.doc.mjs +45 -0
- package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenu.test.tsx +22 -2
- package/src/DropdownMenu/DropdownMenuItem.tsx +5 -17
- package/src/EmptyState/EmptyState.doc.mjs +1 -1
- package/src/Field/Field.test.tsx +1 -4
- package/src/Field/FieldLabel.test.tsx +2 -2
- package/src/FieldStatus/FieldStatus.test.tsx +282 -0
- package/src/FormLayout/__snapshots__/FormLayout.test.tsx.snap +0 -3
- package/src/Grid/Grid.test.tsx +43 -18
- package/src/Grid/Grid.tsx +26 -9
- package/src/HoverCard/HoverCard.doc.mjs +6 -6
- package/src/HoverCard/useHoverCard.doc.mjs +5 -5
- package/src/HoverCard/useHoverCard.tsx +9 -2
- package/src/Icon/Icon.test.tsx +41 -29
- package/src/Icon/Icon.tsx +6 -2
- package/src/InputGroup/InputGroup.doc.mjs +1 -0
- package/src/InputGroup/InputGroup.tsx +2 -2
- package/src/InteractiveRoleContext/InteractiveRoleContext.test.tsx +185 -0
- package/src/Item/Item.tsx +1 -1
- package/src/Layer/useLayer.doc.mjs +2 -2
- package/src/Layer/useLayer.test.tsx +221 -2
- package/src/Layer/useLayer.tsx +69 -30
- package/src/Layout/Layout.test.tsx +285 -0
- package/src/Layout/LayoutContent.doc.mjs +12 -0
- package/src/Layout/LayoutPanel.doc.mjs +40 -0
- package/src/Layout/LayoutSlots.test.tsx +364 -0
- package/src/Lightbox/Lightbox.doc.mjs +5 -0
- package/src/Lightbox/Lightbox.test.tsx +123 -2
- package/src/Lightbox/Lightbox.tsx +29 -1
- package/src/Lightbox/useLightbox.tsx +0 -1
- package/src/Link/Link.tsx +0 -2
- package/src/Markdown/Markdown.tsx +9 -7
- package/src/Markdown/parser.perf.test.ts +34 -12
- package/src/MobileNav/MobileNav.test.tsx +56 -0
- package/src/MobileNav/MobileNav.tsx +13 -8
- package/src/NavMenu/NavMenu.doc.mjs +15 -0
- package/src/NumberInput/NumberInput.test.tsx +48 -3
- package/src/NumberInput/NumberInput.tsx +32 -15
- package/src/Outline/Outline.doc.mjs +2 -0
- package/src/Outline/parseOutlineFromMarkdown.test.ts +80 -0
- package/src/OverflowList/OverflowList.test.tsx +416 -0
- package/src/Overlay/Overlay.doc.mjs +6 -0
- package/src/Overlay/Overlay.test.tsx +356 -0
- package/src/Overlay/useOverlay.tsx +0 -3
- package/src/Pagination/Pagination.test.tsx +162 -0
- package/src/Pagination/Pagination.tsx +80 -26
- package/src/Popover/Popover.doc.mjs +6 -6
- package/src/Popover/Popover.test.tsx +65 -0
- package/src/Popover/usePopover.doc.mjs +1 -1
- package/src/PowerSearch/PowerSearch.doc.mjs +2 -2
- package/src/PowerSearch/PowerSearch.test.tsx +109 -1
- package/src/PowerSearch/PowerSearch.tsx +37 -16
- package/src/ProgressBar/ProgressBar.doc.mjs +2 -0
- package/src/ProgressBar/ProgressBar.test.tsx +30 -0
- package/src/ProgressBar/ProgressBar.tsx +12 -5
- package/src/RadioList/RadioList.test.tsx +19 -0
- package/src/RadioList/RadioListItem.tsx +9 -4
- package/src/Resizable/ResizeHandle.test.tsx +218 -0
- package/src/Resizable/ResizeHandle.tsx +22 -4
- package/src/SegmentedControl/SegmentedControl.doc.mjs +1 -1
- package/src/SegmentedControl/SegmentedControl.test.tsx +192 -0
- package/src/SegmentedControl/SegmentedControl.tsx +27 -5
- package/src/SegmentedControl/SegmentedControlItem.tsx +9 -4
- package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
- package/src/Selector/Selector.test.tsx +27 -1
- package/src/SideNav/SideNav.doc.mjs +7 -1
- package/src/SideNav/SideNav.test.tsx +66 -0
- package/src/SideNav/SideNav.tsx +6 -2
- package/src/SideNav/SideNavCollapseButton.tsx +4 -3
- package/src/SideNav/SideNavSection.tsx +6 -4
- package/src/SizeContext/SizeContext.test.tsx +226 -0
- package/src/Switch/Switch.doc.mjs +7 -7
- package/src/Switch/Switch.test.tsx +102 -3
- package/src/Switch/Switch.tsx +20 -7
- package/src/TabList/TabList.test.tsx +185 -1
- package/src/TabList/TabMenu.tsx +45 -9
- package/src/Table/BaseTable.tsx +13 -2
- package/src/Table/Table.doc.mjs +6 -1
- package/src/Table/Table.test.tsx +87 -0
- package/src/Table/TableBody.tsx +15 -2
- package/src/Table/TableFooter.tsx +15 -2
- package/src/Table/TableHeader.tsx +15 -2
- package/src/Table/index.ts +5 -0
- package/src/Table/plugins/columnResize/useTableColumnResize.test.tsx +13 -0
- package/src/Table/plugins/columnResize/useTableColumnResize.tsx +3 -1
- package/src/Table/plugins/groupedRows/index.ts +7 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.test.tsx +231 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +349 -0
- package/src/Table/plugins/pagination/paginateData.ts +5 -1
- package/src/Table/plugins/pagination/useTablePagination.test.tsx +13 -0
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +1 -1
- package/src/Table/plugins/selection/useTableSelectionState.test.tsx +23 -0
- package/src/Table/plugins/selection/useTableSelectionState.tsx +11 -6
- package/src/Table/plugins/sortable/useTableSortableState.test.tsx +35 -1
- package/src/Table/plugins/sortable/useTableSortableState.tsx +8 -4
- package/src/Table/useTableGroupedRows.doc.mjs +71 -0
- package/src/TextArea/TextArea.test.tsx +3 -3
- package/src/TextInput/TextInput.test.tsx +3 -3
- package/src/Thumbnail/Thumbnail.test.tsx +36 -2
- package/src/Thumbnail/Thumbnail.tsx +4 -2
- package/src/TimeInput/TimeInput.test.tsx +37 -0
- package/src/TimeInput/TimeInput.tsx +11 -1
- package/src/Timestamp/Timestamp.doc.mjs +1 -1
- package/src/Timestamp/Timestamp.test.tsx +52 -0
- package/src/Timestamp/Timestamp.tsx +30 -16
- package/src/Toast/Toast.tsx +11 -3
- package/src/Toast/ToastViewport.test.tsx +64 -0
- package/src/Toast/ToastViewport.tsx +12 -0
- package/src/Toast/useToast.test.tsx +258 -0
- package/src/Toast/useToast.tsx +41 -0
- package/src/ToggleButton/ToggleButton.doc.mjs +1 -0
- package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
- package/src/Tokenizer/Tokenizer.test.tsx +54 -0
- package/src/Tokenizer/Tokenizer.tsx +5 -4
- package/src/Tooltip/Tooltip.doc.mjs +6 -6
- package/src/Tooltip/useTooltip.doc.mjs +5 -5
- package/src/Tooltip/useTooltip.tsx +12 -2
- package/src/TopNav/TopNav.doc.mjs +1 -1
- package/src/TopNav/TopNav.test.tsx +23 -7
- package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +9 -2
- package/src/TreeList/TreeList.doc.mjs +2 -2
- package/src/Typeahead/BaseTypeahead.doc.mjs +19 -0
- package/src/Typeahead/BaseTypeahead.tsx +5 -2
- package/src/Typeahead/Typeahead.doc.mjs +1 -1
- package/src/Typeahead/Typeahead.test.tsx +45 -1
- package/src/VisuallyHidden/VisuallyHidden.tsx +0 -3
- package/src/__tests__/TestIcon.tsx +26 -0
- package/src/__tests__/fastRoleQueries.ts +66 -0
- package/src/docPropReferences.test.ts +178 -0
- package/src/docs-types.ts +9 -1
- package/src/hooks/focusableSelector.ts +1 -1
- package/src/hooks/index.ts +3 -0
- package/src/hooks/useFocusTrap.doc.mjs +4 -2
- package/src/hooks/useFocusTrap.test.tsx +149 -1
- package/src/hooks/useFocusTrap.ts +50 -1
- package/src/hooks/useHotkeys.doc.mjs +52 -0
- package/src/hooks/useHotkeys.test.ts +245 -0
- package/src/hooks/useHotkeys.ts +203 -0
- package/src/hooks/useInteractiveRole.ts +12 -4
- package/src/hooks/useStreamingText.test.ts +54 -19
- package/src/hooks/useStreamingText.ts +16 -5
- package/src/hooks/useTreeFocus.test.tsx +1 -3
- package/src/reset.css +29 -0
- package/src/theme/SyntaxTheme.doc.mjs +4 -4
- package/src/theme/defineTheme.ts +4 -13
- package/src/theme/derivedVarRegistry.test.ts +2 -2
- package/src/theme/expandColorScale.test.ts +29 -0
- package/src/theme/expandColorScale.ts +11 -6
- package/src/theme/hct.ts +9 -17
- package/src/theme/themingTargets.test.ts +353 -0
- package/src/theme/tokens.test.ts +182 -9
- package/src/theme/tokens.ts +239 -4
- package/src/theme/useTheme.test.tsx +126 -2
- package/src/theme/useTheme.ts +87 -6
- package/src/utils/color.test.ts +133 -0
- package/src/utils/color.ts +148 -0
- package/src/utils/composeEventHandlers.test.ts +71 -0
- package/src/utils/composeEventHandlers.ts +44 -0
- package/src/utils/index.ts +4 -0
- package/src/utils/mergeProps.test.ts +166 -0
- package/src/utils/sharedResizeObserver.test.ts +2 -2
- package/src/utils/timeParser.test.ts +13 -0
- package/src/utils/timeParser.ts +8 -5
- package/dist/Carousel/carousel.markers.stylex.d.ts +0 -7
- package/dist/Carousel/carousel.markers.stylex.d.ts.map +0 -1
- package/dist/Carousel/carousel.markers.stylex.js +0 -12
- package/src/Carousel/carousel.markers.stylex.ts +0 -10
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
import {describe, it, expect} from 'vitest';
|
|
4
|
+
import {render, screen} from '@testing-library/react';
|
|
5
|
+
import {ChatDictationButton} from './ChatDictationButton';
|
|
6
|
+
import type {UseSpeechRecognitionReturn} from './useSpeechRecognition';
|
|
7
|
+
|
|
8
|
+
const dictation: UseSpeechRecognitionReturn = {
|
|
9
|
+
isSupported: true,
|
|
10
|
+
isListening: false,
|
|
11
|
+
isSpeaking: false,
|
|
12
|
+
volume: 0,
|
|
13
|
+
bands: [0, 0, 0, 0, 0],
|
|
14
|
+
rawBands: [0, 0, 0, 0, 0],
|
|
15
|
+
interimTranscript: '',
|
|
16
|
+
start: () => {},
|
|
17
|
+
stop: () => {},
|
|
18
|
+
abort: () => {},
|
|
19
|
+
toggle: () => {},
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
describe('ChatDictationButton', () => {
|
|
23
|
+
it('renders a dictation button', () => {
|
|
24
|
+
render(
|
|
25
|
+
<ChatDictationButton dictation={dictation} data-testid="dictation" />,
|
|
26
|
+
);
|
|
27
|
+
expect(screen.getByTestId('dictation')).toBeTruthy();
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('forwards rest props (data-*, aria-*, id) to the root element', () => {
|
|
31
|
+
render(
|
|
32
|
+
<ChatDictationButton
|
|
33
|
+
dictation={dictation}
|
|
34
|
+
data-testid="dictation"
|
|
35
|
+
data-custom="x"
|
|
36
|
+
id="dictate-1"
|
|
37
|
+
/>,
|
|
38
|
+
);
|
|
39
|
+
const root = screen.getByTestId('dictation');
|
|
40
|
+
expect(root).toHaveAttribute('data-custom', 'x');
|
|
41
|
+
expect(root).toHaveAttribute('id', 'dictate-1');
|
|
42
|
+
});
|
|
43
|
+
});
|
|
@@ -105,6 +105,7 @@ export function ChatDictationButton({
|
|
|
105
105
|
xstyle,
|
|
106
106
|
className,
|
|
107
107
|
style,
|
|
108
|
+
...rest
|
|
108
109
|
}: ChatDictationButtonProps) {
|
|
109
110
|
if (isHiddenWhenUnsupported && !dictation.isSupported) {
|
|
110
111
|
return null;
|
|
@@ -130,7 +131,8 @@ export function ChatDictationButton({
|
|
|
130
131
|
return (
|
|
131
132
|
<span
|
|
132
133
|
ref={ref}
|
|
133
|
-
{...mergeProps(stylex.props(styles.wrapper, xstyle), className, style)}
|
|
134
|
+
{...mergeProps(stylex.props(styles.wrapper, xstyle), className, style)}
|
|
135
|
+
{...rest}>
|
|
134
136
|
{isListening && (
|
|
135
137
|
<span
|
|
136
138
|
aria-hidden
|
|
@@ -161,9 +163,7 @@ export function ChatDictationButton({
|
|
|
161
163
|
aria-label={accessibleLabel}
|
|
162
164
|
variant="ghost"
|
|
163
165
|
size={size}
|
|
164
|
-
icon={
|
|
165
|
-
isListening ? undefined : <Icon icon="microphone" size={size} />
|
|
166
|
-
}
|
|
166
|
+
icon={isListening ? undefined : <Icon icon="microphone" size={size} />}
|
|
167
167
|
isIconOnly
|
|
168
168
|
onClick={dictation.toggle}
|
|
169
169
|
/>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
import {describe, it, expect} from 'vitest';
|
|
4
|
+
import {render, screen} from '@testing-library/react';
|
|
5
|
+
import {ChatLayoutScrollButton} from './ChatLayoutScrollButton';
|
|
6
|
+
|
|
7
|
+
describe('ChatLayoutScrollButton', () => {
|
|
8
|
+
it('renders a scroll button', () => {
|
|
9
|
+
render(
|
|
10
|
+
<ChatLayoutScrollButton
|
|
11
|
+
isVisible
|
|
12
|
+
onClick={() => {}}
|
|
13
|
+
data-testid="scroll"
|
|
14
|
+
/>,
|
|
15
|
+
);
|
|
16
|
+
expect(screen.getByTestId('scroll')).toBeTruthy();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('forwards rest props (data-*, aria-*, id) to the root element', () => {
|
|
20
|
+
render(
|
|
21
|
+
<ChatLayoutScrollButton
|
|
22
|
+
isVisible
|
|
23
|
+
onClick={() => {}}
|
|
24
|
+
data-testid="scroll"
|
|
25
|
+
data-custom="x"
|
|
26
|
+
id="scroll-1"
|
|
27
|
+
/>,
|
|
28
|
+
);
|
|
29
|
+
const root = screen.getByTestId('scroll');
|
|
30
|
+
expect(root).toHaveAttribute('data-custom', 'x');
|
|
31
|
+
expect(root).toHaveAttribute('id', 'scroll-1');
|
|
32
|
+
});
|
|
33
|
+
});
|
|
@@ -118,11 +118,13 @@ export function ChatLayoutScrollButton({
|
|
|
118
118
|
xstyle,
|
|
119
119
|
className,
|
|
120
120
|
style,
|
|
121
|
+
...rest
|
|
121
122
|
}: ChatLayoutScrollButtonProps) {
|
|
122
123
|
return (
|
|
123
124
|
<div
|
|
124
125
|
ref={ref}
|
|
125
|
-
{...mergeProps(stylex.props(styles.wrapper, xstyle), className, style)}
|
|
126
|
+
{...mergeProps(stylex.props(styles.wrapper, xstyle), className, style)}
|
|
127
|
+
{...rest}>
|
|
126
128
|
<div
|
|
127
129
|
{...stylex.props(
|
|
128
130
|
styles.container,
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
import {describe, it, expect} from 'vitest';
|
|
4
|
+
import {render, screen} from '@testing-library/react';
|
|
5
|
+
import {ChatMessageMetadata} from './ChatMessageMetadata';
|
|
6
|
+
|
|
7
|
+
describe('ChatMessageMetadata', () => {
|
|
8
|
+
it('renders metadata content', () => {
|
|
9
|
+
render(
|
|
10
|
+
<ChatMessageMetadata
|
|
11
|
+
timestamp="12:00"
|
|
12
|
+
status="read"
|
|
13
|
+
data-testid="meta"
|
|
14
|
+
/>,
|
|
15
|
+
);
|
|
16
|
+
expect(screen.getByTestId('meta')).toBeTruthy();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('forwards rest props (data-*, aria-*, id) to the root element', () => {
|
|
20
|
+
render(
|
|
21
|
+
<ChatMessageMetadata
|
|
22
|
+
timestamp="12:00"
|
|
23
|
+
data-testid="meta"
|
|
24
|
+
data-custom="x"
|
|
25
|
+
id="meta-1"
|
|
26
|
+
/>,
|
|
27
|
+
);
|
|
28
|
+
const root = screen.getByTestId('meta');
|
|
29
|
+
expect(root).toHaveAttribute('data-custom', 'x');
|
|
30
|
+
expect(root).toHaveAttribute('id', 'meta-1');
|
|
31
|
+
});
|
|
32
|
+
});
|
|
@@ -28,11 +28,7 @@ import type {BaseProps} from '../BaseProps';
|
|
|
28
28
|
import {themeProps} from '../utils/themeProps';
|
|
29
29
|
|
|
30
30
|
export type ChatMessageStatus =
|
|
31
|
-
| '
|
|
32
|
-
| 'sent'
|
|
33
|
-
| 'delivered'
|
|
34
|
-
| 'read'
|
|
35
|
-
| 'error';
|
|
31
|
+
'sending' | 'sent' | 'delivered' | 'read' | 'error';
|
|
36
32
|
|
|
37
33
|
const STATUS_CONFIG: Record<
|
|
38
34
|
ChatMessageStatus,
|
|
@@ -118,6 +114,7 @@ export function ChatMessageMetadata({
|
|
|
118
114
|
xstyle,
|
|
119
115
|
className,
|
|
120
116
|
style,
|
|
117
|
+
...rest
|
|
121
118
|
}: ChatMessageMetadataProps) {
|
|
122
119
|
const msgContext = useChatMessageContext();
|
|
123
120
|
const sender = msgContext?.sender ?? 'assistant';
|
|
@@ -142,7 +139,8 @@ export function ChatMessageMetadata({
|
|
|
142
139
|
),
|
|
143
140
|
className,
|
|
144
141
|
style,
|
|
145
|
-
)}
|
|
142
|
+
)}
|
|
143
|
+
{...rest}>
|
|
146
144
|
{timestamp != null && <span>{timestamp}</span>}
|
|
147
145
|
{timestamp != null && (footer != null || statusConfig != null) && (
|
|
148
146
|
<span>·</span>
|
|
@@ -11,26 +11,20 @@ describe('ChatSystemMessage', () => {
|
|
|
11
11
|
});
|
|
12
12
|
|
|
13
13
|
it('has role="status"', () => {
|
|
14
|
-
render(
|
|
15
|
-
<ChatSystemMessage data-testid="sys">Notice</ChatSystemMessage>,
|
|
16
|
-
);
|
|
14
|
+
render(<ChatSystemMessage data-testid="sys">Notice</ChatSystemMessage>);
|
|
17
15
|
const el = screen.getByTestId('sys');
|
|
18
16
|
expect(el.getAttribute('role')).toBe('status');
|
|
19
17
|
});
|
|
20
18
|
|
|
21
19
|
it('renders default variant without divider lines', () => {
|
|
22
|
-
const {container} = render(
|
|
23
|
-
<ChatSystemMessage>Hello</ChatSystemMessage>,
|
|
24
|
-
);
|
|
20
|
+
const {container} = render(<ChatSystemMessage>Hello</ChatSystemMessage>);
|
|
25
21
|
// Divider lines have aria-hidden, so check there are none
|
|
26
22
|
const hiddenElements = container.querySelectorAll('[aria-hidden]');
|
|
27
23
|
expect(hiddenElements.length).toBe(0);
|
|
28
24
|
});
|
|
29
25
|
|
|
30
26
|
it('renders divider variant with Divider', () => {
|
|
31
|
-
render(
|
|
32
|
-
<ChatSystemMessage variant="divider">Today</ChatSystemMessage>,
|
|
33
|
-
);
|
|
27
|
+
render(<ChatSystemMessage variant="divider">Today</ChatSystemMessage>);
|
|
34
28
|
expect(screen.getByText('Today')).toBeTruthy();
|
|
35
29
|
});
|
|
36
30
|
|
|
@@ -54,9 +48,30 @@ describe('ChatSystemMessage', () => {
|
|
|
54
48
|
});
|
|
55
49
|
|
|
56
50
|
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', () => {
|
|
57
56
|
render(
|
|
58
|
-
<ChatSystemMessage data-testid="
|
|
57
|
+
<ChatSystemMessage data-testid="sys" data-custom="x" id="sys-1">
|
|
58
|
+
Hello
|
|
59
|
+
</ChatSystemMessage>,
|
|
59
60
|
);
|
|
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
|
+
render(
|
|
69
|
+
<ChatSystemMessage variant="divider" data-testid="sys" data-custom="x">
|
|
70
|
+
Today
|
|
71
|
+
</ChatSystemMessage>,
|
|
72
|
+
);
|
|
73
|
+
const el = screen.getByTestId('sys');
|
|
74
|
+
expect(el).toHaveAttribute('data-custom', 'x');
|
|
75
|
+
expect(el.getAttribute('role')).toBe('status');
|
|
61
76
|
});
|
|
62
77
|
});
|
|
@@ -120,21 +120,21 @@ export function ChatSystemMessage({
|
|
|
120
120
|
xstyle,
|
|
121
121
|
className,
|
|
122
122
|
style: styleProp,
|
|
123
|
-
'data-testid': testId,
|
|
124
123
|
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}
|
|
132
130
|
{...mergeProps(
|
|
133
131
|
themeProps('chat-system-message', {variant}),
|
|
134
132
|
stylex.props(styles.dividerWrap, xstyle),
|
|
135
133
|
className,
|
|
136
134
|
styleProp,
|
|
137
|
-
)}
|
|
135
|
+
)}
|
|
136
|
+
{...rest}
|
|
137
|
+
role="status">
|
|
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}
|
|
148
146
|
{...mergeProps(
|
|
149
147
|
themeProps('chat-system-message', {variant}),
|
|
150
148
|
stylex.props(styles.root, xstyle),
|
|
151
149
|
className,
|
|
152
150
|
styleProp,
|
|
153
|
-
)}
|
|
151
|
+
)}
|
|
152
|
+
{...rest}
|
|
153
|
+
role="status">
|
|
154
154
|
<span {...stylex.props(styles.content)}>
|
|
155
155
|
{icon != null && <span {...stylex.props(styles.icon)}>{icon}</span>}
|
|
156
156
|
{children}
|
|
@@ -6,18 +6,12 @@ import {ChatTokenizedText} from './ChatTokenizedText';
|
|
|
6
6
|
|
|
7
7
|
describe('ChatTokenizedText', () => {
|
|
8
8
|
it('renders plain text when no tokens provided', () => {
|
|
9
|
-
render(
|
|
10
|
-
<ChatTokenizedText>Hello world</ChatTokenizedText>,
|
|
11
|
-
);
|
|
9
|
+
render(<ChatTokenizedText>Hello world</ChatTokenizedText>);
|
|
12
10
|
expect(screen.getByText('Hello world')).toBeInTheDocument();
|
|
13
11
|
});
|
|
14
12
|
|
|
15
13
|
it('renders plain text when tokens array is empty', () => {
|
|
16
|
-
render(
|
|
17
|
-
<ChatTokenizedText tokens={[]}>
|
|
18
|
-
Hello world
|
|
19
|
-
</ChatTokenizedText>,
|
|
20
|
-
);
|
|
14
|
+
render(<ChatTokenizedText tokens={[]}>Hello world</ChatTokenizedText>);
|
|
21
15
|
expect(screen.getByText('Hello world')).toBeInTheDocument();
|
|
22
16
|
});
|
|
23
17
|
|
|
@@ -48,8 +42,7 @@ describe('ChatTokenizedText', () => {
|
|
|
48
42
|
|
|
49
43
|
it('handles repeated occurrences of the same token', () => {
|
|
50
44
|
render(
|
|
51
|
-
<ChatTokenizedText
|
|
52
|
-
tokens={[{value: '@cindy', label: '@Cindy Zhang'}]}>
|
|
45
|
+
<ChatTokenizedText tokens={[{value: '@cindy', label: '@Cindy Zhang'}]}>
|
|
53
46
|
@cindy and @cindy again
|
|
54
47
|
</ChatTokenizedText>,
|
|
55
48
|
);
|
|
@@ -58,8 +51,7 @@ describe('ChatTokenizedText', () => {
|
|
|
58
51
|
|
|
59
52
|
it('renders text with no matching tokens as plain text', () => {
|
|
60
53
|
render(
|
|
61
|
-
<ChatTokenizedText
|
|
62
|
-
tokens={[{value: '@cindy', label: '@Cindy Zhang'}]}>
|
|
54
|
+
<ChatTokenizedText tokens={[{value: '@cindy', label: '@Cindy Zhang'}]}>
|
|
63
55
|
Hello world
|
|
64
56
|
</ChatTokenizedText>,
|
|
65
57
|
);
|
|
@@ -68,8 +60,7 @@ describe('ChatTokenizedText', () => {
|
|
|
68
60
|
|
|
69
61
|
it('handles tokens with special regex characters in pattern', () => {
|
|
70
62
|
render(
|
|
71
|
-
<ChatTokenizedText
|
|
72
|
-
tokens={[{value: '/search', label: '/search'}]}>
|
|
63
|
+
<ChatTokenizedText tokens={[{value: '/search', label: '/search'}]}>
|
|
73
64
|
Run /search now
|
|
74
65
|
</ChatTokenizedText>,
|
|
75
66
|
);
|
|
@@ -79,8 +70,7 @@ describe('ChatTokenizedText', () => {
|
|
|
79
70
|
|
|
80
71
|
it('preserves surrounding text', () => {
|
|
81
72
|
const {container} = render(
|
|
82
|
-
<ChatTokenizedText
|
|
83
|
-
tokens={[{value: '@cindy', label: '@Cindy Zhang'}]}>
|
|
73
|
+
<ChatTokenizedText tokens={[{value: '@cindy', label: '@Cindy Zhang'}]}>
|
|
84
74
|
Before @cindy after
|
|
85
75
|
</ChatTokenizedText>,
|
|
86
76
|
);
|
|
@@ -88,4 +78,27 @@ describe('ChatTokenizedText', () => {
|
|
|
88
78
|
expect(container.textContent).toContain('after');
|
|
89
79
|
expect(container.textContent).toContain('@Cindy Zhang');
|
|
90
80
|
});
|
|
81
|
+
|
|
82
|
+
it('forwards rest props (data-*, id) to the root element', () => {
|
|
83
|
+
render(
|
|
84
|
+
<ChatTokenizedText data-testid="tokenized" data-custom="x" id="tok-1">
|
|
85
|
+
Plain text
|
|
86
|
+
</ChatTokenizedText>,
|
|
87
|
+
);
|
|
88
|
+
const root = screen.getByTestId('tokenized');
|
|
89
|
+
expect(root).toHaveAttribute('data-custom', 'x');
|
|
90
|
+
expect(root).toHaveAttribute('id', 'tok-1');
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it('forwards rest props when rendering tokens', () => {
|
|
94
|
+
render(
|
|
95
|
+
<ChatTokenizedText
|
|
96
|
+
tokens={[{value: '@cindy', label: '@Cindy Zhang'}]}
|
|
97
|
+
data-testid="tokenized"
|
|
98
|
+
data-custom="x">
|
|
99
|
+
Hi @cindy
|
|
100
|
+
</ChatTokenizedText>,
|
|
101
|
+
);
|
|
102
|
+
expect(screen.getByTestId('tokenized')).toHaveAttribute('data-custom', 'x');
|
|
103
|
+
});
|
|
91
104
|
});
|
|
@@ -91,6 +91,10 @@ export function ChatTokenizedText({
|
|
|
91
91
|
ref,
|
|
92
92
|
children,
|
|
93
93
|
tokens,
|
|
94
|
+
xstyle,
|
|
95
|
+
className,
|
|
96
|
+
style,
|
|
97
|
+
...rest
|
|
94
98
|
}: ChatTokenizedTextProps) {
|
|
95
99
|
if (!children || !tokens || tokens.length === 0) {
|
|
96
100
|
return (
|
|
@@ -98,8 +102,11 @@ export function ChatTokenizedText({
|
|
|
98
102
|
ref={ref}
|
|
99
103
|
{...mergeProps(
|
|
100
104
|
themeProps('chat-tokenized-text'),
|
|
101
|
-
stylex.props(styles.root),
|
|
102
|
-
|
|
105
|
+
stylex.props(styles.root, xstyle),
|
|
106
|
+
className,
|
|
107
|
+
style,
|
|
108
|
+
)}
|
|
109
|
+
{...rest}>
|
|
103
110
|
{children ?? ''}
|
|
104
111
|
</span>
|
|
105
112
|
);
|
|
@@ -111,8 +118,11 @@ export function ChatTokenizedText({
|
|
|
111
118
|
ref={ref}
|
|
112
119
|
{...mergeProps(
|
|
113
120
|
themeProps('chat-tokenized-text'),
|
|
114
|
-
stylex.props(styles.root),
|
|
115
|
-
|
|
121
|
+
stylex.props(styles.root, xstyle),
|
|
122
|
+
className,
|
|
123
|
+
style,
|
|
124
|
+
)}
|
|
125
|
+
{...rest}>
|
|
116
126
|
{parts}
|
|
117
127
|
</span>
|
|
118
128
|
);
|
|
@@ -124,10 +134,7 @@ ChatTokenizedText.displayName = 'ChatTokenizedText';
|
|
|
124
134
|
// Render
|
|
125
135
|
// =============================================================================
|
|
126
136
|
|
|
127
|
-
function renderTokens(
|
|
128
|
-
text: string,
|
|
129
|
-
tokens: ChatComposerToken[],
|
|
130
|
-
): ReactNode[] {
|
|
137
|
+
function renderTokens(text: string, tokens: ChatComposerToken[]): ReactNode[] {
|
|
131
138
|
const pattern = tokens.map(t => escapeRegExp(t.value)).join('|');
|
|
132
139
|
const regex = new RegExp(`(${pattern})`, 'g');
|
|
133
140
|
|
|
@@ -97,4 +97,59 @@ describe('ChatToolCalls', () => {
|
|
|
97
97
|
);
|
|
98
98
|
expect(screen.getByText('git status')).toBeInTheDocument();
|
|
99
99
|
});
|
|
100
|
+
|
|
101
|
+
it('exposes no aria-expanded on a call row without resultDetail', () => {
|
|
102
|
+
const {container} = render(
|
|
103
|
+
<ChatToolCalls calls={[{name: 'bash', status: 'complete'}]} />,
|
|
104
|
+
);
|
|
105
|
+
expect(container.querySelector('[aria-expanded]')).toBeNull();
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
it('wires disclosure semantics on an expandable call row', () => {
|
|
109
|
+
render(
|
|
110
|
+
<ChatToolCalls
|
|
111
|
+
calls={[
|
|
112
|
+
{
|
|
113
|
+
name: 'readFile',
|
|
114
|
+
status: 'complete',
|
|
115
|
+
resultDetail: <div>file contents here</div>,
|
|
116
|
+
},
|
|
117
|
+
]}
|
|
118
|
+
/>,
|
|
119
|
+
);
|
|
120
|
+
const row = screen.getByRole('button');
|
|
121
|
+
expect(row).toHaveAttribute('aria-expanded', 'false');
|
|
122
|
+
// Detail panel is conditionally mounted, so no aria-controls while closed.
|
|
123
|
+
expect(row).not.toHaveAttribute('aria-controls');
|
|
124
|
+
expect(screen.queryByText('file contents here')).not.toBeInTheDocument();
|
|
125
|
+
|
|
126
|
+
fireEvent.click(row);
|
|
127
|
+
|
|
128
|
+
expect(row).toHaveAttribute('aria-expanded', 'true');
|
|
129
|
+
const detailId = row.getAttribute('aria-controls');
|
|
130
|
+
expect(detailId).toBeTruthy();
|
|
131
|
+
const panel = document.getElementById(detailId as string);
|
|
132
|
+
expect(panel).not.toBeNull();
|
|
133
|
+
expect(panel).toHaveTextContent('file contents here');
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
it('points the group header aria-controls at the content region', () => {
|
|
137
|
+
render(
|
|
138
|
+
<ChatToolCalls
|
|
139
|
+
defaultIsExpanded={true}
|
|
140
|
+
calls={[
|
|
141
|
+
{name: 'searchCode', status: 'complete'},
|
|
142
|
+
{name: 'readFile', status: 'complete'},
|
|
143
|
+
]}
|
|
144
|
+
/>,
|
|
145
|
+
);
|
|
146
|
+
const header = screen.getByRole('button');
|
|
147
|
+
expect(header).toHaveAttribute('aria-expanded', 'true');
|
|
148
|
+
const regionId = header.getAttribute('aria-controls');
|
|
149
|
+
expect(regionId).toBeTruthy();
|
|
150
|
+
const region = document.getElementById(regionId as string);
|
|
151
|
+
expect(region).not.toBeNull();
|
|
152
|
+
expect(region).toHaveTextContent('searchCode');
|
|
153
|
+
expect(region).toHaveTextContent('readFile');
|
|
154
|
+
});
|
|
100
155
|
});
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* for builders to wire up.
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
|
-
import React, {useState, useCallback, type ReactNode} from 'react';
|
|
21
|
+
import React, {useState, useCallback, useId, type ReactNode} from 'react';
|
|
22
22
|
import type {BaseProps} from '../BaseProps';
|
|
23
23
|
import * as stylex from '@stylexjs/stylex';
|
|
24
24
|
import {
|
|
@@ -41,11 +41,7 @@ import {themeProps} from '../utils/themeProps';
|
|
|
41
41
|
// Types
|
|
42
42
|
// =============================================================================
|
|
43
43
|
|
|
44
|
-
export type ChatToolCallStatus =
|
|
45
|
-
| 'pending'
|
|
46
|
-
| 'running'
|
|
47
|
-
| 'complete'
|
|
48
|
-
| 'error';
|
|
44
|
+
export type ChatToolCallStatus = 'pending' | 'running' | 'complete' | 'error';
|
|
49
45
|
|
|
50
46
|
export interface ChatToolCallItem {
|
|
51
47
|
/** Tool/function name. */
|
|
@@ -356,6 +352,7 @@ function CallRow({call}: {call: ChatToolCallItem}) {
|
|
|
356
352
|
const status = call.status ?? 'complete';
|
|
357
353
|
const hasDetail = call.resultDetail != null;
|
|
358
354
|
const [isDetailOpen, setIsDetailOpen] = useState(false);
|
|
355
|
+
const detailId = useId();
|
|
359
356
|
|
|
360
357
|
const toggleDetail = hasDetail
|
|
361
358
|
? () => setIsDetailOpen(prev => !prev)
|
|
@@ -365,6 +362,8 @@ function CallRow({call}: {call: ChatToolCallItem}) {
|
|
|
365
362
|
<div
|
|
366
363
|
role={hasDetail ? 'button' : undefined}
|
|
367
364
|
tabIndex={hasDetail ? 0 : undefined}
|
|
365
|
+
aria-expanded={hasDetail ? isDetailOpen : undefined}
|
|
366
|
+
aria-controls={hasDetail && isDetailOpen ? detailId : undefined}
|
|
368
367
|
onClick={toggleDetail}
|
|
369
368
|
onKeyDown={
|
|
370
369
|
hasDetail
|
|
@@ -399,11 +398,7 @@ function CallRow({call}: {call: ChatToolCallItem}) {
|
|
|
399
398
|
</span>
|
|
400
399
|
<span {...stylex.props(styles.callName)}>{call.name}</span>
|
|
401
400
|
{call.node != null && (
|
|
402
|
-
<Badge
|
|
403
|
-
label={call.node}
|
|
404
|
-
variant="neutral"
|
|
405
|
-
xstyle={styles.nodePill}
|
|
406
|
-
/>
|
|
401
|
+
<Badge label={call.node} variant="neutral" xstyle={styles.nodePill} />
|
|
407
402
|
)}
|
|
408
403
|
{call.target != null && (
|
|
409
404
|
<span {...stylex.props(styles.callLabel)}>{call.target}</span>
|
|
@@ -448,7 +443,7 @@ function CallRow({call}: {call: ChatToolCallItem}) {
|
|
|
448
443
|
<div>
|
|
449
444
|
{row}
|
|
450
445
|
{isDetailOpen && (
|
|
451
|
-
<div {...stylex.props(styles.callDetailContent)}>
|
|
446
|
+
<div id={detailId} {...stylex.props(styles.callDetailContent)}>
|
|
452
447
|
{call.resultDetail}
|
|
453
448
|
</div>
|
|
454
449
|
)}
|
|
@@ -497,6 +492,7 @@ export function ChatToolCalls(props: ChatToolCallsProps) {
|
|
|
497
492
|
|
|
498
493
|
const autoDefault = defaultIsExpanded ?? false;
|
|
499
494
|
const [internalExpanded, setInternalExpanded] = useState(autoDefault);
|
|
495
|
+
const contentId = useId();
|
|
500
496
|
const isControlled = controlledExpanded !== undefined;
|
|
501
497
|
const isExpanded = isControlled ? controlledExpanded : internalExpanded;
|
|
502
498
|
|
|
@@ -548,6 +544,7 @@ export function ChatToolCalls(props: ChatToolCallsProps) {
|
|
|
548
544
|
role="button"
|
|
549
545
|
tabIndex={0}
|
|
550
546
|
aria-expanded={isExpanded}
|
|
547
|
+
aria-controls={contentId}
|
|
551
548
|
onClick={toggle}
|
|
552
549
|
onKeyDown={e => {
|
|
553
550
|
if (e.key === 'Enter' || e.key === ' ') {
|
|
@@ -613,6 +610,7 @@ export function ChatToolCalls(props: ChatToolCallsProps) {
|
|
|
613
610
|
|
|
614
611
|
{/* Expanded: all calls with full metadata */}
|
|
615
612
|
<div
|
|
613
|
+
id={contentId}
|
|
616
614
|
{...stylex.props(
|
|
617
615
|
styles.groupContent,
|
|
618
616
|
isExpanded && styles.groupContentExpanded,
|
package/src/Chat/index.ts
CHANGED
|
@@ -21,10 +21,7 @@ export type {ChatSendButtonProps} from './ChatSendButton';
|
|
|
21
21
|
export {ChatComposerDrawer} from './ChatComposerDrawer';
|
|
22
22
|
export type {ChatComposerDrawerProps} from './ChatComposerDrawer';
|
|
23
23
|
|
|
24
|
-
export {
|
|
25
|
-
ChatComposerInput,
|
|
26
|
-
ChatComposerTokenElement,
|
|
27
|
-
} from './ChatComposerInput';
|
|
24
|
+
export {ChatComposerInput, ChatComposerTokenElement} from './ChatComposerInput';
|
|
28
25
|
export type {
|
|
29
26
|
ChatComposerInputProps,
|
|
30
27
|
ChatComposerInputHandle,
|
|
@@ -40,10 +40,7 @@ import {
|
|
|
40
40
|
import {mergeProps, groupItems} from '../utils';
|
|
41
41
|
import type {SearchableItem} from '../Typeahead/types';
|
|
42
42
|
import {themeProps} from '../utils/themeProps';
|
|
43
|
-
import type {
|
|
44
|
-
ChatComposerTrigger,
|
|
45
|
-
ChatComposerToken,
|
|
46
|
-
} from './ChatComposerInput';
|
|
43
|
+
import type {ChatComposerTrigger, ChatComposerToken} from './ChatComposerInput';
|
|
47
44
|
|
|
48
45
|
// =============================================================================
|
|
49
46
|
// Types
|
|
@@ -125,7 +125,7 @@ export const docs = {
|
|
|
125
125
|
theming: {
|
|
126
126
|
targets: [
|
|
127
127
|
{className: 'astryx-checkbox-input', visualProps: ['size']},
|
|
128
|
-
{className: 'astryx-checkbox'},
|
|
128
|
+
{className: 'astryx-checkbox', visualProps: ['size'], states: ['checked', 'disabled']},
|
|
129
129
|
],
|
|
130
130
|
},
|
|
131
131
|
usage: {
|
|
@@ -178,7 +178,7 @@ export const docsZh = {
|
|
|
178
178
|
{name: 'isLoading', type: 'boolean', description: '复选框是否处于加载状态。显示旋转器并阻止交互。', default: 'false'},
|
|
179
179
|
{name: 'isDisabled', type: 'boolean', description: '复选框是否禁用。', default: 'false'},
|
|
180
180
|
{name: 'htmlName', type: 'string', description: '底层复选框输入的 HTML name 属性,用于表单提交(勾选时提交 "on")。'},
|
|
181
|
-
{name: 'disabledMessage', type: 'string', description: 'Explains why the checkbox is disabled. With isDisabled, shows a tooltip on hover/keyboard focus and keeps the checkbox focusable via aria-disabled (toggling stays blocked). Use this instead of wrapping a disabled CheckboxInput in Tooltip
|
|
181
|
+
{name: 'disabledMessage', type: 'string', description: 'Explains why the checkbox is disabled. With isDisabled, shows a tooltip on hover/keyboard focus and keeps the checkbox focusable via aria-disabled (toggling stays blocked). Use this instead of wrapping a disabled CheckboxInput in Tooltip: disabled controls swallow the hover events an external Tooltip needs.'},
|
|
182
182
|
{name: 'isReadOnly', type: 'boolean', description: '复选框是否为只读。以完整不透明度显示当前状态但阻止交互。与 isDisabled 不同,只读复选框不会变暗。', default: 'false'},
|
|
183
183
|
{name: 'isOptional', type: 'boolean', description: '字段是否可选。与 isRequired 互斥。', default: 'false'},
|
|
184
184
|
{name: 'isRequired', type: 'boolean', description: '复选框是否必填。与 isOptional 互斥。', default: 'false'},
|
|
@@ -200,7 +200,7 @@ export const docsZh = {
|
|
|
200
200
|
'size',
|
|
201
201
|
],
|
|
202
202
|
},
|
|
203
|
-
{className: 'astryx-checkbox'},
|
|
203
|
+
{className: 'astryx-checkbox', visualProps: ['size'], states: ['checked', 'disabled']},
|
|
204
204
|
],
|
|
205
205
|
},
|
|
206
206
|
};
|