@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
|
@@ -4,26 +4,28 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file CodeBlock.tsx
|
|
7
|
-
* @input Uses React, StyleX, theme tokens, CSS Custom Highlight API
|
|
7
|
+
* @input Uses React, StyleX, theme tokens, CSS Custom Highlight API, SyntaxTheme provider
|
|
8
8
|
* @output Exports CodeBlock component and CodeBlockProps
|
|
9
9
|
* @position Core implementation; read-only syntax-highlighted code display
|
|
10
10
|
*/
|
|
11
|
-
import { useInsertionEffect, useEffect, useRef, useState, useCallback, useMemo } from 'react';
|
|
11
|
+
import { useInsertionEffect, useEffect, useId, useRef, useState, useCallback, useMemo } from 'react';
|
|
12
12
|
import * as React from 'react';
|
|
13
13
|
import * as stylex from '@stylexjs/stylex';
|
|
14
14
|
import "../theme/tokens.stylex.js";
|
|
15
15
|
import { colorVars, spacingVars, radiusVars, typographyVars, fontWeightVars, typeScaleVars, borderVars, durationVars, easeVars } from "../theme/tokens.stylex.js";
|
|
16
16
|
import { mergeProps } from "../utils/index.js";
|
|
17
|
+
import { useAnnounce } from "../hooks/useAnnounce.js";
|
|
17
18
|
import { Icon } from "../Icon/index.js";
|
|
18
19
|
import { tokenize, tokenizeAsync, flatTokensToLines, SYNC_TOKENIZE_THRESHOLD } from "./tokenizer.js";
|
|
19
20
|
import { ensureHighlightStyles } from "./highlightStyles.js";
|
|
20
21
|
import { applyHighlightRangesChunked } from "./highlightRanges.js";
|
|
21
22
|
import { themeProps } from "../utils/themeProps.js";
|
|
23
|
+
import { SyntaxTheme } from "../theme/syntax/index.js";
|
|
22
24
|
|
|
23
25
|
// ---------------------------------------------------------------------------
|
|
24
26
|
// Styles
|
|
25
27
|
// ---------------------------------------------------------------------------
|
|
26
|
-
import {
|
|
28
|
+
import { jsxDEV as _jsxDEV, Fragment as _Fragment } from "react/jsx-dev-runtime";
|
|
27
29
|
const containerStyles = {
|
|
28
30
|
card: {
|
|
29
31
|
kaIpWk: "xh6dtrn",
|
|
@@ -131,10 +133,10 @@ const CodeChunk = /*#__PURE__*/React.memo(function CodeChunk({
|
|
|
131
133
|
highlightSet,
|
|
132
134
|
renderLineContent
|
|
133
135
|
}) {
|
|
134
|
-
return /*#__PURE__*/
|
|
136
|
+
return /*#__PURE__*/_jsxDEV(_Fragment, {
|
|
135
137
|
children: lines.map((line, j) => {
|
|
136
138
|
const i = startIndex + j;
|
|
137
|
-
return /*#__PURE__*/
|
|
139
|
+
return /*#__PURE__*/_jsxDEV("div", {
|
|
138
140
|
"data-line": i + 1,
|
|
139
141
|
...{
|
|
140
142
|
0: {
|
|
@@ -145,26 +147,26 @@ const CodeChunk = /*#__PURE__*/React.memo(function CodeChunk({
|
|
|
145
147
|
}
|
|
146
148
|
}[!!(highlightSet?.has(i + 1) ?? false) << 0],
|
|
147
149
|
children: renderLineContent(line, i)
|
|
148
|
-
}, i);
|
|
150
|
+
}, i, false);
|
|
149
151
|
})
|
|
150
|
-
});
|
|
152
|
+
}, void 0, false);
|
|
151
153
|
});
|
|
152
154
|
function renderLines(lines, highlightSet, renderLineContent, chunkSize = LINE_CHUNK_SIZE) {
|
|
153
155
|
chunkSize = Math.max(1, Math.floor(chunkSize));
|
|
154
156
|
if (lines.length < LINE_CHUNK_THRESHOLD) {
|
|
155
|
-
return /*#__PURE__*/
|
|
157
|
+
return /*#__PURE__*/_jsxDEV(CodeChunk, {
|
|
156
158
|
lines: lines,
|
|
157
159
|
startIndex: 0,
|
|
158
160
|
highlightSet: highlightSet,
|
|
159
161
|
renderLineContent: renderLineContent
|
|
160
|
-
});
|
|
162
|
+
}, void 0, false);
|
|
161
163
|
}
|
|
162
164
|
const chunks = [];
|
|
163
165
|
for (let start = 0; start < lines.length; start += chunkSize) {
|
|
164
166
|
const end = Math.min(start + chunkSize, lines.length);
|
|
165
167
|
const chunkLines = lines.slice(start, end);
|
|
166
168
|
const estimatedHeight = `${chunkLines.length}lh`;
|
|
167
|
-
chunks.push(/*#__PURE__*/
|
|
169
|
+
chunks.push(/*#__PURE__*/_jsxDEV("div", {
|
|
168
170
|
...mergeProps({
|
|
169
171
|
className: "xb5mbof"
|
|
170
172
|
}, {
|
|
@@ -172,13 +174,13 @@ function renderLines(lines, highlightSet, renderLineContent, chunkSize = LINE_CH
|
|
|
172
174
|
containIntrinsicBlockSize: `auto ${estimatedHeight}`
|
|
173
175
|
}
|
|
174
176
|
}),
|
|
175
|
-
children: /*#__PURE__*/
|
|
177
|
+
children: /*#__PURE__*/_jsxDEV(CodeChunk, {
|
|
176
178
|
lines: chunkLines,
|
|
177
179
|
startIndex: start,
|
|
178
180
|
highlightSet: highlightSet,
|
|
179
181
|
renderLineContent: renderLineContent
|
|
180
|
-
})
|
|
181
|
-
}, start));
|
|
182
|
+
}, void 0, false)
|
|
183
|
+
}, start, false));
|
|
182
184
|
}
|
|
183
185
|
return chunks;
|
|
184
186
|
}
|
|
@@ -276,10 +278,10 @@ function buildSpanLine(lineText, tokens) {
|
|
|
276
278
|
parts.push(lineText.slice(cursor, token.start));
|
|
277
279
|
}
|
|
278
280
|
const end = Math.min(token.end, lineText.length);
|
|
279
|
-
parts.push(/*#__PURE__*/
|
|
281
|
+
parts.push(/*#__PURE__*/_jsxDEV("span", {
|
|
280
282
|
className: `astryx-token-${token.type} xds-token-${token.type}`,
|
|
281
283
|
children: lineText.slice(token.start, end)
|
|
282
|
-
}, `${token.start}-${token.type}
|
|
284
|
+
}, `${token.start}-${token.type}`, false));
|
|
283
285
|
cursor = end;
|
|
284
286
|
}
|
|
285
287
|
if (cursor < lineText.length) {
|
|
@@ -301,10 +303,10 @@ function SpanCodeContent({
|
|
|
301
303
|
const tokens = tokenLines[lineIndex] ?? [];
|
|
302
304
|
return buildSpanLine(line, tokens);
|
|
303
305
|
}, [tokenLines]);
|
|
304
|
-
return /*#__PURE__*/
|
|
306
|
+
return /*#__PURE__*/_jsxDEV("code", {
|
|
305
307
|
...stylex.props(styles.code, sizeStyle, isWrapped && styles.codeWrapped),
|
|
306
308
|
children: renderLines(lines, highlightSet, renderLineContent)
|
|
307
|
-
});
|
|
309
|
+
}, void 0, false);
|
|
308
310
|
}
|
|
309
311
|
|
|
310
312
|
// ---------------------------------------------------------------------------
|
|
@@ -331,11 +333,11 @@ function RangeCodeContent({
|
|
|
331
333
|
return applyHighlightRangesChunked(codeEl, tokenLines);
|
|
332
334
|
}, [tokenLines]);
|
|
333
335
|
const renderLineContent = useCallback(line => line || '\u200b', []);
|
|
334
|
-
return /*#__PURE__*/
|
|
336
|
+
return /*#__PURE__*/_jsxDEV("code", {
|
|
335
337
|
ref: codeRef,
|
|
336
338
|
...stylex.props(styles.code, sizeStyle, isWrapped && styles.codeWrapped),
|
|
337
339
|
children: renderLines(lines, highlightSet, renderLineContent)
|
|
338
|
-
});
|
|
340
|
+
}, void 0, false);
|
|
339
341
|
}
|
|
340
342
|
|
|
341
343
|
// ---------------------------------------------------------------------------
|
|
@@ -369,6 +371,7 @@ export function CodeBlock({
|
|
|
369
371
|
container = 'card',
|
|
370
372
|
tokenizer: customTokenizer,
|
|
371
373
|
highlightMode = 'auto',
|
|
374
|
+
syntaxTheme,
|
|
372
375
|
xstyle,
|
|
373
376
|
className,
|
|
374
377
|
style,
|
|
@@ -376,6 +379,17 @@ export function CodeBlock({
|
|
|
376
379
|
...props
|
|
377
380
|
}) {
|
|
378
381
|
const [copied, setCopied] = useState(false);
|
|
382
|
+
const copyResetTimerRef = useRef(null);
|
|
383
|
+
const announce = useAnnounce();
|
|
384
|
+
|
|
385
|
+
// Clear a pending "copied" reset when the block unmounts.
|
|
386
|
+
useEffect(() => {
|
|
387
|
+
return () => {
|
|
388
|
+
if (copyResetTimerRef.current != null) {
|
|
389
|
+
clearTimeout(copyResetTimerRef.current);
|
|
390
|
+
}
|
|
391
|
+
};
|
|
392
|
+
}, []);
|
|
379
393
|
const useSpans = highlightMode === 'spans' || highlightMode === 'auto' && !hasHighlightAPI() || highlightMode === 'auto' && isSafari();
|
|
380
394
|
const lines = useMemo(() => {
|
|
381
395
|
const l = code.split('\n');
|
|
@@ -390,28 +404,44 @@ export function CodeBlock({
|
|
|
390
404
|
try {
|
|
391
405
|
await navigator.clipboard.writeText(code);
|
|
392
406
|
setCopied(true);
|
|
407
|
+
// Swapping the button's aria-label alone isn't reliably announced by
|
|
408
|
+
// screen readers, so confirm the copy via a polite live region.
|
|
409
|
+
announce('Copied');
|
|
393
410
|
onCopy?.();
|
|
394
|
-
|
|
411
|
+
// Restart the reset timer on every copy — otherwise a rapid re-copy
|
|
412
|
+
// is reverted early by the previous click's timer.
|
|
413
|
+
if (copyResetTimerRef.current != null) {
|
|
414
|
+
clearTimeout(copyResetTimerRef.current);
|
|
415
|
+
}
|
|
416
|
+
copyResetTimerRef.current = setTimeout(() => {
|
|
417
|
+
copyResetTimerRef.current = null;
|
|
418
|
+
setCopied(false);
|
|
419
|
+
}, 2000);
|
|
395
420
|
} catch {
|
|
396
421
|
// Clipboard failures leave the copied state unchanged.
|
|
397
422
|
}
|
|
398
|
-
}, [code, onCopy]);
|
|
423
|
+
}, [code, onCopy, announce]);
|
|
399
424
|
const sizeStyle = size === 'sm' ? styles.sizeSm : styles.sizeMd;
|
|
400
425
|
const gutterSizeStyle = size === 'sm' ? styles.gutterSm : styles.gutterMd;
|
|
401
426
|
const languageLabel = hasLanguageLabel && language !== 'plaintext' ? language : null;
|
|
402
427
|
const showHeader = title != null || languageLabel != null;
|
|
403
428
|
const canCollapse = isCollapsible && lines.length >= collapsibleThreshold;
|
|
404
429
|
const [isCollapsed, setIsCollapsed] = useState(false);
|
|
430
|
+
// Links the collapsible header to the code region it shows/hides so assistive
|
|
431
|
+
// tech can move from the button to its controlled content (disclosure
|
|
432
|
+
// pattern). The region stays mounted when collapsed (CSS grid animation), so
|
|
433
|
+
// this is always a resolvable reference — aria-controls can be unconditional.
|
|
434
|
+
const regionId = useId();
|
|
405
435
|
const scrollContainerRef = useRef(null);
|
|
406
436
|
const scrollStyle = maxHeight ? {
|
|
407
437
|
maxHeight: typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight
|
|
408
438
|
} : undefined;
|
|
409
|
-
const copyIcon = /*#__PURE__*/
|
|
439
|
+
const copyIcon = /*#__PURE__*/_jsxDEV(Icon, {
|
|
410
440
|
icon: copied ? 'check' : 'copy',
|
|
411
441
|
size: "sm",
|
|
412
442
|
color: "inherit"
|
|
413
|
-
});
|
|
414
|
-
const copyButtonEl = hasCopyButton ? /*#__PURE__*/
|
|
443
|
+
}, void 0, false);
|
|
444
|
+
const copyButtonEl = hasCopyButton ? /*#__PURE__*/_jsxDEV("button", {
|
|
415
445
|
type: "button",
|
|
416
446
|
onClick: e => {
|
|
417
447
|
// Stop propagation so copying does not toggle the collapsible header.
|
|
@@ -428,8 +458,8 @@ export function CodeBlock({
|
|
|
428
458
|
}
|
|
429
459
|
}[!!!showHeader << 0],
|
|
430
460
|
children: copyIcon
|
|
431
|
-
}) : null;
|
|
432
|
-
const headerEl = showHeader ? /*#__PURE__*/
|
|
461
|
+
}, void 0, false) : null;
|
|
462
|
+
const headerEl = showHeader ? /*#__PURE__*/_jsxDEV("div", {
|
|
433
463
|
...{
|
|
434
464
|
0: {
|
|
435
465
|
className: "x78zum5 x6s0dn4 x1qughib x1pzlopt xzyc27v x7wzq59 x13vifvy x1vjfegm xce4md1"
|
|
@@ -438,10 +468,11 @@ export function CodeBlock({
|
|
|
438
468
|
className: "x78zum5 x6s0dn4 x1qughib x1pzlopt xzyc27v x7wzq59 x13vifvy x1vjfegm xce4md1 x92x3c3 x1q0q8m5 xw8gpjh"
|
|
439
469
|
}
|
|
440
470
|
}[!!hasLineNumbers << 0],
|
|
441
|
-
children: [/*#__PURE__*/
|
|
471
|
+
children: [/*#__PURE__*/_jsxDEV("div", {
|
|
442
472
|
role: canCollapse ? 'button' : undefined,
|
|
443
473
|
tabIndex: canCollapse ? 0 : undefined,
|
|
444
474
|
"aria-expanded": canCollapse ? !isCollapsed : undefined,
|
|
475
|
+
"aria-controls": canCollapse ? regionId : undefined,
|
|
445
476
|
onClick: canCollapse ? () => setIsCollapsed(prev => !prev) : undefined,
|
|
446
477
|
onKeyDown: canCollapse ? e => {
|
|
447
478
|
if (e.key === 'Enter' || e.key === ' ') {
|
|
@@ -454,14 +485,14 @@ export function CodeBlock({
|
|
|
454
485
|
className: "x78zum5 x6s0dn4 x98rzlu xeuugli x1717udv xjbqb8w x1heor9g xln7xf2 x1yc453h"
|
|
455
486
|
},
|
|
456
487
|
1: {
|
|
457
|
-
className: "x78zum5 x6s0dn4 x98rzlu xeuugli x1717udv xjbqb8w x1heor9g xln7xf2 x1yc453h x1ypdohk x87ps6o"
|
|
488
|
+
className: "x78zum5 x6s0dn4 x98rzlu xeuugli x1717udv xjbqb8w x1heor9g xln7xf2 x1yc453h x1ypdohk x87ps6o x17nn4n9 x1wfwxd8 x7s97pk"
|
|
458
489
|
}
|
|
459
490
|
}[!!canCollapse << 0],
|
|
460
|
-
children: /*#__PURE__*/
|
|
491
|
+
children: /*#__PURE__*/_jsxDEV("span", {
|
|
461
492
|
...{
|
|
462
493
|
className: "x78zum5 x6s0dn4 xzye2dw x141an7d x9m5x89 x1e4wzip x1mjzq1q x1ghz6dp x1ltkj2j"
|
|
463
494
|
},
|
|
464
|
-
children: [title, title && languageLabel ? ' — ' : '', languageLabel, canCollapse && /*#__PURE__*/
|
|
495
|
+
children: [title, title && languageLabel ? ' — ' : '', languageLabel, canCollapse && /*#__PURE__*/_jsxDEV("span", {
|
|
465
496
|
...{
|
|
466
497
|
0: {
|
|
467
498
|
className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg x1mjzq1q x11xpdln xuedmi6 xlr8y92"
|
|
@@ -470,16 +501,16 @@ export function CodeBlock({
|
|
|
470
501
|
className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg x1mjzq1q x11xpdln xuedmi6 xlr8y92 x19jd1h0"
|
|
471
502
|
}
|
|
472
503
|
}[!!isCollapsed << 0],
|
|
473
|
-
children: /*#__PURE__*/
|
|
504
|
+
children: /*#__PURE__*/_jsxDEV(Icon, {
|
|
474
505
|
icon: "chevronDown",
|
|
475
506
|
size: "xsm",
|
|
476
507
|
color: "inherit"
|
|
477
|
-
})
|
|
478
|
-
})]
|
|
479
|
-
})
|
|
480
|
-
}), copyButtonEl]
|
|
481
|
-
}) : null;
|
|
482
|
-
const codeBody = /*#__PURE__*/
|
|
508
|
+
}, void 0, false)
|
|
509
|
+
}, void 0, false)]
|
|
510
|
+
}, void 0, true)
|
|
511
|
+
}, void 0, false), copyButtonEl]
|
|
512
|
+
}, void 0, true) : null;
|
|
513
|
+
const codeBody = /*#__PURE__*/_jsxDEV("div", {
|
|
483
514
|
ref: scrollContainerRef
|
|
484
515
|
// The scroll container is keyboard-focusable so keyboard users can
|
|
485
516
|
// scroll long or wide code that overflows the viewport. Uses
|
|
@@ -494,7 +525,7 @@ export function CodeBlock({
|
|
|
494
525
|
}, {
|
|
495
526
|
style: scrollStyle
|
|
496
527
|
}),
|
|
497
|
-
children: /*#__PURE__*/
|
|
528
|
+
children: /*#__PURE__*/_jsxDEV("div", {
|
|
498
529
|
...{
|
|
499
530
|
0: {
|
|
500
531
|
className: "x78zum5 x1pshirs"
|
|
@@ -503,34 +534,34 @@ export function CodeBlock({
|
|
|
503
534
|
className: "x78zum5 x1pshirs x1ajqlyv"
|
|
504
535
|
}
|
|
505
536
|
}[!!(showHeader && !hasLineNumbers) << 0],
|
|
506
|
-
children: [hasLineNumbers && /*#__PURE__*/
|
|
537
|
+
children: [hasLineNumbers && /*#__PURE__*/_jsxDEV("div", {
|
|
507
538
|
...stylex.props(styles.gutter, gutterSizeStyle),
|
|
508
539
|
"aria-hidden": "true",
|
|
509
540
|
children: lines.map((_, i) =>
|
|
510
541
|
/*#__PURE__*/
|
|
511
542
|
// eslint-disable-next-line @eslint-react/no-array-index-key -- gutter line numbers are positional by definition
|
|
512
|
-
|
|
543
|
+
_jsxDEV("div", {
|
|
513
544
|
...{
|
|
514
545
|
className: "x9m5x89 x17iicif"
|
|
515
546
|
},
|
|
516
547
|
children: i + 1
|
|
517
|
-
}, i))
|
|
518
|
-
}), useSpans ? /*#__PURE__*/
|
|
548
|
+
}, i, false))
|
|
549
|
+
}, void 0, false), useSpans ? /*#__PURE__*/_jsxDEV(SpanCodeContent, {
|
|
519
550
|
lines: lines,
|
|
520
551
|
tokenLines: tokenLines,
|
|
521
552
|
highlightSet: highlightSet,
|
|
522
553
|
isWrapped: isWrapped,
|
|
523
554
|
sizeStyle: sizeStyle
|
|
524
|
-
}) : /*#__PURE__*/
|
|
555
|
+
}, void 0, false) : /*#__PURE__*/_jsxDEV(RangeCodeContent, {
|
|
525
556
|
lines: lines,
|
|
526
557
|
tokenLines: tokenLines,
|
|
527
558
|
highlightSet: highlightSet,
|
|
528
559
|
isWrapped: isWrapped,
|
|
529
560
|
sizeStyle: sizeStyle
|
|
530
|
-
})]
|
|
531
|
-
})
|
|
532
|
-
});
|
|
533
|
-
|
|
561
|
+
}, void 0, false)]
|
|
562
|
+
}, void 0, true)
|
|
563
|
+
}, void 0, false);
|
|
564
|
+
const block = /*#__PURE__*/_jsxDEV("pre", {
|
|
534
565
|
ref: ref,
|
|
535
566
|
...mergeProps(themeProps('codeblock', {
|
|
536
567
|
size,
|
|
@@ -538,7 +569,8 @@ export function CodeBlock({
|
|
|
538
569
|
container
|
|
539
570
|
}), stylex.props(styles.root, dynamicStyles.width(widthProp), containerStyles[container], xstyle), className, style),
|
|
540
571
|
...props,
|
|
541
|
-
children: [headerEl, canCollapse ? /*#__PURE__*/
|
|
572
|
+
children: [headerEl, canCollapse ? /*#__PURE__*/_jsxDEV("div", {
|
|
573
|
+
id: regionId,
|
|
542
574
|
...{
|
|
543
575
|
0: {
|
|
544
576
|
className: "xrvj5dj x1tu4anv x1qn9uv2 x80gvsz xlr8y92"
|
|
@@ -547,13 +579,17 @@ export function CodeBlock({
|
|
|
547
579
|
className: "xrvj5dj x1qn9uv2 x80gvsz xlr8y92 xihq33y"
|
|
548
580
|
}
|
|
549
581
|
}[!!isCollapsed << 0],
|
|
550
|
-
children: /*#__PURE__*/
|
|
582
|
+
children: /*#__PURE__*/_jsxDEV("div", {
|
|
551
583
|
...{
|
|
552
584
|
className: "xb3r6kr x2lwn1j"
|
|
553
585
|
},
|
|
554
586
|
children: codeBody
|
|
555
|
-
})
|
|
556
|
-
}) : codeBody, !showHeader && copyButtonEl]
|
|
557
|
-
});
|
|
587
|
+
}, void 0, false)
|
|
588
|
+
}, void 0, false) : codeBody, !showHeader && copyButtonEl]
|
|
589
|
+
}, void 0, true);
|
|
590
|
+
return syntaxTheme ? /*#__PURE__*/_jsxDEV(SyntaxTheme, {
|
|
591
|
+
theme: syntaxTheme,
|
|
592
|
+
children: block
|
|
593
|
+
}, void 0, false) : block;
|
|
558
594
|
}
|
|
559
595
|
CodeBlock.displayName = 'CodeBlock';
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file Collapsible.tsx
|
|
3
|
-
* @input Uses React, StyleX, useCollapsible hook, getIcon, theme tokens
|
|
3
|
+
* @input Uses React, StyleX, useCollapsible hook, CollapsibleGroupPresentationContext, getIcon, theme tokens
|
|
4
4
|
* @output Exports Collapsible component and CollapsibleProps
|
|
5
5
|
* @position Collapsible content primitive — trigger toggles visibility of children
|
|
6
6
|
*
|
|
7
7
|
* Collapsible is a standalone primitive that makes any content collapsible.
|
|
8
8
|
* It renders a trigger area (always visible) and a content area that toggles.
|
|
9
|
-
* Handles state management, accessibility (aria-expanded
|
|
9
|
+
* Handles state management, accessibility (aria-expanded + aria-controls linking
|
|
10
|
+
* the trigger to its content region), and chevron indicator.
|
|
10
11
|
*
|
|
11
12
|
* Works standalone or coordinated by CollapsibleGroup via the `value` prop.
|
|
13
|
+
* When the surrounding CollapsibleGroup sets `hasDividers`, each Collapsible
|
|
14
|
+
* draws its own row chrome (borderBlockStart suppressed on :first-child, plus
|
|
15
|
+
* density padding) from CollapsibleGroupPresentationContext — StyleX has no
|
|
16
|
+
* child selectors, so the group cannot draw it from outside. The presentation
|
|
17
|
+
* context is reset around children so nested collapsibles stay chrome-free.
|
|
12
18
|
*
|
|
13
19
|
* SYNC: When modified, update these files to stay in sync:
|
|
14
20
|
* - /packages/core/src/Collapsible/index.ts (exports)
|
|
@@ -16,7 +22,7 @@
|
|
|
16
22
|
* - /apps/storybook/stories/Collapsible.stories.tsx
|
|
17
23
|
* - /packages/cli/templates/blocks/components/Collapsible/ (showcase blocks)
|
|
18
24
|
*/
|
|
19
|
-
import type
|
|
25
|
+
import { type ReactNode } from 'react';
|
|
20
26
|
import type { BaseProps } from '../BaseProps';
|
|
21
27
|
export interface CollapsibleProps extends BaseProps {
|
|
22
28
|
/** Ref forwarded to the root element */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../../src/Collapsible/Collapsible.tsx"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../../src/Collapsible/Collapsible.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAa,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAgBjD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAkG5C,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,OAAO,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,QAAQ,EACR,aAAa,EACb,MAAM,EAAE,gBAAgB,EACxB,YAAY,EACZ,KAAK,EACL,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAqElB;yBAjFe,WAAW"}
|
|
@@ -4,15 +4,21 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file Collapsible.tsx
|
|
7
|
-
* @input Uses React, StyleX, useCollapsible hook, getIcon, theme tokens
|
|
7
|
+
* @input Uses React, StyleX, useCollapsible hook, CollapsibleGroupPresentationContext, getIcon, theme tokens
|
|
8
8
|
* @output Exports Collapsible component and CollapsibleProps
|
|
9
9
|
* @position Collapsible content primitive — trigger toggles visibility of children
|
|
10
10
|
*
|
|
11
11
|
* Collapsible is a standalone primitive that makes any content collapsible.
|
|
12
12
|
* It renders a trigger area (always visible) and a content area that toggles.
|
|
13
|
-
* Handles state management, accessibility (aria-expanded
|
|
13
|
+
* Handles state management, accessibility (aria-expanded + aria-controls linking
|
|
14
|
+
* the trigger to its content region), and chevron indicator.
|
|
14
15
|
*
|
|
15
16
|
* Works standalone or coordinated by CollapsibleGroup via the `value` prop.
|
|
17
|
+
* When the surrounding CollapsibleGroup sets `hasDividers`, each Collapsible
|
|
18
|
+
* draws its own row chrome (borderBlockStart suppressed on :first-child, plus
|
|
19
|
+
* density padding) from CollapsibleGroupPresentationContext — StyleX has no
|
|
20
|
+
* child selectors, so the group cannot draw it from outside. The presentation
|
|
21
|
+
* context is reset around children so nested collapsibles stay chrome-free.
|
|
16
22
|
*
|
|
17
23
|
* SYNC: When modified, update these files to stay in sync:
|
|
18
24
|
* - /packages/core/src/Collapsible/index.ts (exports)
|
|
@@ -20,20 +26,93 @@
|
|
|
20
26
|
* - /apps/storybook/stories/Collapsible.stories.tsx
|
|
21
27
|
* - /packages/cli/templates/blocks/components/Collapsible/ (showcase blocks)
|
|
22
28
|
*/
|
|
29
|
+
import { use, useId } from 'react';
|
|
23
30
|
import * as stylex from '@stylexjs/stylex';
|
|
24
31
|
import "../theme/tokens.stylex.js";
|
|
25
|
-
import { colorVars, typographyVars, fontWeightVars, spacingVars, typeScaleVars, durationVars, easeVars } from "../theme/tokens.stylex.js";
|
|
32
|
+
import { borderVars, colorVars, typographyVars, fontWeightVars, spacingVars, typeScaleVars, durationVars, easeVars } from "../theme/tokens.stylex.js";
|
|
26
33
|
import { useCollapsible } from "./useCollapsible.js";
|
|
34
|
+
import { CollapsibleGroupPresentationContext } from "./CollapsibleGroupContext.js";
|
|
27
35
|
import { getIcon } from "../Icon/globalIconRegistry.js";
|
|
28
36
|
import { mergeProps } from "../utils/index.js";
|
|
29
37
|
import { themeProps } from "../utils/themeProps.js";
|
|
30
|
-
import {
|
|
38
|
+
import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
|
|
31
39
|
const styles = {
|
|
32
40
|
root: {
|
|
33
41
|
kzqmXN: "xh8yej3",
|
|
34
42
|
$$css: true
|
|
43
|
+
},
|
|
44
|
+
trigger: {
|
|
45
|
+
kB7OPa: "x9f619",
|
|
46
|
+
k1xSpc: "x78zum5",
|
|
47
|
+
kGNEyG: "x6s0dn4",
|
|
48
|
+
kjj79g: "x1qughib",
|
|
49
|
+
kzqmXN: "xh8yej3",
|
|
50
|
+
kkrTdU: "x1ypdohk",
|
|
51
|
+
kMv6JI: "x9ynric",
|
|
52
|
+
kGuDYH: "x18juvz8",
|
|
53
|
+
k63SB2: "x2mo6ok",
|
|
54
|
+
kMwMTN: "x1tgivj0",
|
|
55
|
+
k9WMMc: "x1yc453h",
|
|
56
|
+
k8WAf4: "xt970qd",
|
|
57
|
+
kI3sdo: "x17nn4n9",
|
|
58
|
+
kInvED: "x1wfwxd8 x7s97pk",
|
|
59
|
+
$$css: true
|
|
60
|
+
},
|
|
61
|
+
contentHidden: {
|
|
62
|
+
k1xSpc: "x1s85apg",
|
|
63
|
+
$$css: true
|
|
64
|
+
},
|
|
65
|
+
content: {
|
|
66
|
+
kLKAdn: "xfsso4q",
|
|
67
|
+
$$css: true
|
|
68
|
+
},
|
|
69
|
+
divided: {
|
|
70
|
+
kEafiO: "x11xkdxz x1g31smg",
|
|
71
|
+
kPef9Z: "x13fuv20",
|
|
72
|
+
kLZC3w: "x1pc3f07",
|
|
73
|
+
$$css: true
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
// Density padding for divided/padded accordion rows. paddingBlock mapping
|
|
78
|
+
// follows Table's density scale (spacing-1/2/3); content only pads its end
|
|
79
|
+
// so text doesn't sit on the divider below (block-start stays spacing-1).
|
|
80
|
+
const densityStyles = {
|
|
81
|
+
triggerCompact: {
|
|
82
|
+
k8WAf4: "xu0wf1k",
|
|
83
|
+
$$css: true
|
|
84
|
+
},
|
|
85
|
+
triggerBalanced: {
|
|
86
|
+
k8WAf4: "xce4md1",
|
|
87
|
+
$$css: true
|
|
88
|
+
},
|
|
89
|
+
triggerSpacious: {
|
|
90
|
+
k8WAf4: "x8o8v82",
|
|
91
|
+
$$css: true
|
|
92
|
+
},
|
|
93
|
+
contentCompact: {
|
|
94
|
+
kGO01o: "xy143xn",
|
|
95
|
+
$$css: true
|
|
96
|
+
},
|
|
97
|
+
contentBalanced: {
|
|
98
|
+
kGO01o: "x1wesfrj",
|
|
99
|
+
$$css: true
|
|
100
|
+
},
|
|
101
|
+
contentSpacious: {
|
|
102
|
+
kGO01o: "xvmdzux",
|
|
103
|
+
$$css: true
|
|
35
104
|
}
|
|
36
105
|
};
|
|
106
|
+
const triggerDensity = {
|
|
107
|
+
compact: densityStyles.triggerCompact,
|
|
108
|
+
balanced: densityStyles.triggerBalanced,
|
|
109
|
+
spacious: densityStyles.triggerSpacious
|
|
110
|
+
};
|
|
111
|
+
const contentDensity = {
|
|
112
|
+
compact: densityStyles.contentCompact,
|
|
113
|
+
balanced: densityStyles.contentBalanced,
|
|
114
|
+
spacious: densityStyles.contentSpacious
|
|
115
|
+
};
|
|
37
116
|
/**
|
|
38
117
|
* A primitive that makes any content collapsible.
|
|
39
118
|
*
|
|
@@ -99,24 +178,32 @@ export function Collapsible({
|
|
|
99
178
|
isCollapsible: collapsibleConfig,
|
|
100
179
|
value
|
|
101
180
|
});
|
|
181
|
+
const presentation = use(CollapsibleGroupPresentationContext);
|
|
182
|
+
const isDivided = presentation?.hasDividers ?? false;
|
|
183
|
+
const density = presentation?.density ?? null;
|
|
102
184
|
const chevronIcon = getIcon('chevronDown');
|
|
103
|
-
|
|
185
|
+
|
|
186
|
+
// Links the trigger to the region it shows/hides so assistive tech can move
|
|
187
|
+
// from the button to its controlled content (disclosure pattern).
|
|
188
|
+
const contentId = useId();
|
|
189
|
+
return /*#__PURE__*/_jsxDEV("div", {
|
|
104
190
|
ref: ref,
|
|
105
|
-
...mergeProps(themeProps('collapsible'
|
|
191
|
+
...mergeProps(themeProps('collapsible', {
|
|
192
|
+
density: density ?? undefined
|
|
193
|
+
}), stylex.props(styles.root, isDivided && styles.divided, xstyle), className, style),
|
|
106
194
|
...props,
|
|
107
|
-
children: [/*#__PURE__*/
|
|
195
|
+
children: [/*#__PURE__*/_jsxDEV("button", {
|
|
108
196
|
type: "button",
|
|
109
197
|
onClick: toggle,
|
|
110
198
|
"aria-expanded": isOpen,
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
children: [/*#__PURE__*/_jsx("span", {
|
|
199
|
+
"aria-controls": contentId,
|
|
200
|
+
...stylex.props(styles.trigger, density != null && triggerDensity[density]),
|
|
201
|
+
children: [/*#__PURE__*/_jsxDEV("span", {
|
|
115
202
|
...{
|
|
116
203
|
className: "x1b2iylo xwgcxoh"
|
|
117
204
|
},
|
|
118
205
|
children: trigger
|
|
119
|
-
}), /*#__PURE__*/
|
|
206
|
+
}, void 0, false), /*#__PURE__*/_jsxDEV("span", {
|
|
120
207
|
...{
|
|
121
208
|
0: {
|
|
122
209
|
className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x11xpdln xuedmi6 xlr8y92 xv9yike x7p49u4"
|
|
@@ -126,15 +213,15 @@ export function Collapsible({
|
|
|
126
213
|
}
|
|
127
214
|
}[!!isOpen << 0],
|
|
128
215
|
children: chevronIcon
|
|
129
|
-
})]
|
|
130
|
-
}), /*#__PURE__*/
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
})]
|
|
138
|
-
});
|
|
216
|
+
}, void 0, false)]
|
|
217
|
+
}, void 0, true), /*#__PURE__*/_jsxDEV("div", {
|
|
218
|
+
id: contentId,
|
|
219
|
+
...stylex.props(styles.content, density != null && contentDensity[density], !isOpen && styles.contentHidden),
|
|
220
|
+
children: presentation != null ? /*#__PURE__*/_jsxDEV(CollapsibleGroupPresentationContext, {
|
|
221
|
+
value: null,
|
|
222
|
+
children: children
|
|
223
|
+
}, void 0, false) : children
|
|
224
|
+
}, void 0, false)]
|
|
225
|
+
}, void 0, true);
|
|
139
226
|
}
|
|
140
227
|
Collapsible.displayName = 'Collapsible';
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file CollapsibleGroup.tsx
|
|
3
|
-
* @input Uses React useState, useCallback, CollapsibleGroupContext
|
|
3
|
+
* @input Uses React useState, useCallback, CollapsibleGroupContext, StyleX, theme tokens
|
|
4
4
|
* @output Exports CollapsibleGroup component and CollapsibleGroupProps
|
|
5
|
-
* @position Core collapsible group coordination provider — renders no wrapper
|
|
5
|
+
* @position Core collapsible group coordination provider — renders no wrapper
|
|
6
|
+
* DOM unless `hasDividers` is set
|
|
6
7
|
*
|
|
7
8
|
* CollapsibleGroup groups collapsible components (Card, etc.) with
|
|
8
|
-
* coordinated open/close behavior.
|
|
9
|
-
* DOM element.
|
|
9
|
+
* coordinated open/close behavior. By default it renders only `{children}` —
|
|
10
|
+
* no wrapper DOM element. When `hasDividers` is set it renders a wrapper div
|
|
11
|
+
* that anchors reliable :first-child divider suppression and provides
|
|
12
|
+
* hasDividers/density to items via CollapsibleGroupPresentationContext — each
|
|
13
|
+
* Collapsible draws its own borders since StyleX has no child selectors.
|
|
10
14
|
*
|
|
11
15
|
* In "single" mode (default), only one item can be open at a time.
|
|
12
16
|
* In "multiple" mode, any number of items can be open simultaneously.
|
|
@@ -19,6 +23,7 @@
|
|
|
19
23
|
* - /packages/cli/templates/blocks/components/Collapsible/ (showcase blocks)
|
|
20
24
|
*/
|
|
21
25
|
import React, { type ReactNode } from 'react';
|
|
26
|
+
import type { CollapsibleGroupDensity } from './CollapsibleGroupContext';
|
|
22
27
|
import type { BaseProps } from '../BaseProps';
|
|
23
28
|
export interface CollapsibleGroupProps extends Omit<BaseProps<HTMLElement>, 'onChange'> {
|
|
24
29
|
ref?: React.Ref<HTMLElement>;
|
|
@@ -41,6 +46,21 @@ export interface CollapsibleGroupProps extends Omit<BaseProps<HTMLElement>, 'onC
|
|
|
41
46
|
* Callback when the open item(s) change.
|
|
42
47
|
*/
|
|
43
48
|
onChange?: (value: string | string[]) => void;
|
|
49
|
+
/**
|
|
50
|
+
* Whether to draw hairline dividers between the group's items — the
|
|
51
|
+
* accordion row chrome. When set, the group renders a wrapper div (it
|
|
52
|
+
* otherwise renders no DOM) and items get 'balanced' density unless
|
|
53
|
+
* `density` says otherwise. Pair with bare Collapsible children; Card-wrapped
|
|
54
|
+
* items provide their own separation.
|
|
55
|
+
* @default false
|
|
56
|
+
*/
|
|
57
|
+
hasDividers?: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Row density controlling trigger and content block padding on the group's
|
|
60
|
+
* items. Defaults to 'balanced' when dividers are shown; otherwise items
|
|
61
|
+
* keep their default unpadded look.
|
|
62
|
+
*/
|
|
63
|
+
density?: CollapsibleGroupDensity;
|
|
44
64
|
/**
|
|
45
65
|
* Children — any components that support isCollapsible + value.
|
|
46
66
|
*
|
|
@@ -69,16 +89,26 @@ export interface CollapsibleGroupProps extends Omit<BaseProps<HTMLElement>, 'onC
|
|
|
69
89
|
}
|
|
70
90
|
/**
|
|
71
91
|
* Groups collapsible components with coordinated open/close behavior.
|
|
72
|
-
* Renders no wrapper DOM.
|
|
92
|
+
* Renders no wrapper DOM unless `hasDividers` is set.
|
|
73
93
|
*
|
|
74
94
|
* In "single" mode (default), opening one item closes the others.
|
|
75
95
|
* In "multiple" mode, items toggle independently.
|
|
76
96
|
*
|
|
77
97
|
* @compositionHint Wrap Collapsible instances to coordinate their open/close state.
|
|
78
|
-
* Each Collapsible needs a `value` prop to participate.
|
|
98
|
+
* Each Collapsible needs a `value` prop to participate. For FAQ-style lists,
|
|
99
|
+
* use `hasDividers` with bare Collapsible children instead of wrapping each
|
|
100
|
+
* item in Card.
|
|
79
101
|
*
|
|
80
102
|
* @example
|
|
81
103
|
* ```
|
|
104
|
+
* <CollapsibleGroup type="single" hasDividers defaultValue="faq1">
|
|
105
|
+
* <Collapsible trigger="What is Astryx?" value="faq1">
|
|
106
|
+
* Astryx is a design system for building internal tools.
|
|
107
|
+
* </Collapsible>
|
|
108
|
+
* <Collapsible trigger="How do I start?" value="faq2">
|
|
109
|
+
* Install the package and import components.
|
|
110
|
+
* </Collapsible>
|
|
111
|
+
* </CollapsibleGroup>
|
|
82
112
|
* <CollapsibleGroup type="single" defaultValue="faq1">
|
|
83
113
|
* <VStack gap={2}>
|
|
84
114
|
* <Card>
|
|
@@ -95,7 +125,7 @@ export interface CollapsibleGroupProps extends Omit<BaseProps<HTMLElement>, 'onC
|
|
|
95
125
|
* </CollapsibleGroup>
|
|
96
126
|
* ```
|
|
97
127
|
*/
|
|
98
|
-
export declare function CollapsibleGroup({ type, defaultValue, value: controlledValue, onChange, children, }: CollapsibleGroupProps): React.JSX.Element;
|
|
128
|
+
export declare function CollapsibleGroup({ type, defaultValue, value: controlledValue, onChange, hasDividers, density, children, ref, xstyle, className, style, ...props }: CollapsibleGroupProps): React.JSX.Element;
|
|
99
129
|
export declare namespace CollapsibleGroup {
|
|
100
130
|
var displayName: string;
|
|
101
131
|
}
|