@astryxdesign/core 0.3.0 → 0.4.0
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 +156 -0
- package/dist/AlertDialog/AlertDialog.d.ts +10 -2
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +22 -3
- package/dist/AppShell/AppShell.d.ts +2 -2
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +40 -9
- package/dist/AspectRatio/AspectRatio.d.ts +13 -0
- package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
- package/dist/AspectRatio/AspectRatio.js +9 -0
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +33 -20
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +2 -3
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +15 -14
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +21 -8
- package/dist/Breadcrumbs/index.d.ts +2 -1
- package/dist/Breadcrumbs/index.d.ts.map +1 -1
- package/dist/Breadcrumbs/index.js +1 -0
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +11 -15
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +2 -1
- package/dist/Calendar/styles.d.ts +0 -2
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +0 -2
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +8 -12
- package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
- package/dist/Chat/ChatDictationButton.js +2 -1
- package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
- package/dist/Chat/ChatLayoutScrollButton.js +3 -1
- package/dist/Chat/ChatSendButton.d.ts.map +1 -1
- package/dist/Chat/ChatSendButton.js +4 -3
- package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
- package/dist/Chat/ChatToolCalls.js +17 -17
- package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
- package/dist/Chat/useTriggerMenu.js +2 -6
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +36 -125
- package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
- package/dist/ClickableCard/ClickableCard.js +3 -11
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +84 -67
- package/dist/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible/Collapsible.js +35 -15
- package/dist/CommandPalette/CommandPaletteItem.d.ts +1 -1
- package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteItem.js +6 -3
- package/dist/CommandPalette/CommandPaletteList.js +1 -1
- package/dist/ComplexSelector/ComplexSelector.d.ts +1 -1
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +35 -33
- package/dist/ContextMenu/ContextMenu.d.ts +2 -2
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +1 -1
- package/dist/ContextMenu/index.d.ts +2 -1
- package/dist/ContextMenu/index.d.ts.map +1 -1
- package/dist/ContextMenu/index.js +1 -0
- package/dist/DateInput/DateInput.d.ts +9 -2
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +24 -23
- package/dist/DateRangeInput/DateRangeInput.d.ts +9 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +11 -16
- package/dist/DateTimeInput/DateTimeInput.d.ts +9 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +22 -17
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +4 -4
- package/dist/DropdownMenu/DropdownMenu.d.ts +33 -8
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +62 -20
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +8 -11
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +32 -31
- package/dist/DropdownMenu/DropdownMenuDivider.d.ts +25 -0
- package/dist/DropdownMenu/DropdownMenuDivider.d.ts.map +1 -0
- package/dist/DropdownMenu/DropdownMenuDivider.js +66 -0
- package/dist/DropdownMenu/DropdownMenuItem.d.ts +15 -2
- package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuItem.js +20 -8
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts +5 -5
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.js +24 -67
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.js +2 -8
- package/dist/DropdownMenu/index.d.ts +2 -1
- package/dist/DropdownMenu/index.d.ts.map +1 -1
- package/dist/DropdownMenu/index.js +4 -0
- package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
- package/dist/DropdownMenu/renderDropdownItems.js +35 -27
- package/dist/EmptyState/EmptyState.d.ts.map +1 -1
- package/dist/EmptyState/EmptyState.js +9 -5
- package/dist/Field/InputClearButton.d.ts +16 -3
- package/dist/Field/InputClearButton.d.ts.map +1 -1
- package/dist/Field/InputClearButton.js +15 -4
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +3 -19
- package/dist/Indicator/CheckIndicator.d.ts +25 -0
- package/dist/Indicator/CheckIndicator.d.ts.map +1 -0
- package/dist/Indicator/CheckIndicator.js +155 -0
- package/dist/Indicator/CheckboxIndicator.d.ts +22 -0
- package/dist/Indicator/CheckboxIndicator.d.ts.map +1 -0
- package/dist/Indicator/CheckboxIndicator.js +173 -0
- package/dist/Indicator/RadioIndicator.d.ts +23 -0
- package/dist/Indicator/RadioIndicator.d.ts.map +1 -0
- package/dist/Indicator/RadioIndicator.js +137 -0
- package/dist/Indicator/index.d.ts +24 -0
- package/dist/Indicator/index.d.ts.map +1 -0
- package/dist/Indicator/index.js +26 -0
- package/dist/Indicator/indicator.markers.stylex.d.ts +16 -0
- package/dist/Indicator/indicator.markers.stylex.d.ts.map +1 -0
- package/dist/Indicator/indicator.markers.stylex.js +21 -0
- package/dist/Indicator/indicatorRegistry.d.ts +71 -0
- package/dist/Indicator/indicatorRegistry.d.ts.map +1 -0
- package/dist/Indicator/indicatorRegistry.js +93 -0
- package/dist/Indicator/types.d.ts +167 -0
- package/dist/Indicator/types.d.ts.map +1 -0
- package/dist/Indicator/types.js +1 -0
- package/dist/Indicator/useIndicator.d.ts +18 -0
- package/dist/Indicator/useIndicator.d.ts.map +1 -0
- package/dist/Indicator/useIndicator.js +30 -0
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +4 -8
- package/dist/Layer/useLayer.d.ts +14 -0
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +25 -2
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +56 -53
- package/dist/Link/Link.d.ts.map +1 -1
- package/dist/Link/Link.js +4 -5
- package/dist/MobileNav/MobileNav.js +8 -8
- package/dist/MoreMenu/MoreMenu.d.ts +14 -1
- package/dist/MoreMenu/MoreMenu.d.ts.map +1 -1
- package/dist/MoreMenu/MoreMenu.js +4 -0
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +78 -75
- package/dist/NumberInput/NumberInput.d.ts +27 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +230 -42
- package/dist/Outline/Outline.d.ts.map +1 -1
- package/dist/Outline/Outline.js +2 -3
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +61 -63
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +6 -8
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.js +7 -0
- package/dist/ProgressBar/ProgressBar.d.ts +11 -4
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +96 -6
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +29 -84
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +2 -3
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +2 -3
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +3 -11
- package/dist/Selector/Selector.d.ts +2 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +164 -94
- package/dist/Selector/hooks.d.ts +18 -6
- package/dist/Selector/hooks.d.ts.map +1 -1
- package/dist/Selector/hooks.js +57 -40
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +1 -1
- package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseButton.js +29 -14
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +56 -20
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +28 -22
- package/dist/Stack/stack.stylex.d.ts +3 -3
- package/dist/Switch/Switch.js +11 -10
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +2 -3
- package/dist/TabList/TabMenu.d.ts.map +1 -1
- package/dist/TabList/TabMenu.js +41 -19
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +8 -0
- package/dist/Table/index.d.ts +1 -1
- package/dist/Table/index.d.ts.map +1 -1
- package/dist/Table/index.js +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +22 -18
- package/dist/Table/plugins/rowExpansion/index.d.ts +1 -1
- package/dist/Table/plugins/rowExpansion/index.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/index.js +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +41 -76
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +94 -345
- package/dist/Table/plugins/sortable/useTableSortable.d.ts.map +1 -1
- package/dist/Table/plugins/sortable/useTableSortable.js +23 -4
- package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
- package/dist/Table/plugins/tree/useTableTreeData.js +29 -33
- package/dist/Table/tableContextMenu.d.ts.map +1 -1
- package/dist/Table/tableContextMenu.js +2 -1
- package/dist/Table/types.d.ts +11 -0
- package/dist/Table/types.d.ts.map +1 -1
- package/dist/TextArea/TextArea.d.ts +10 -1
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +16 -6
- package/dist/TextInput/TextInput.d.ts +10 -1
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +13 -19
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +32 -26
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +7 -15
- package/dist/Timestamp/TimestampHoverCard.d.ts.map +1 -1
- package/dist/Timestamp/TimestampHoverCard.js +16 -34
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +20 -11
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +4 -2
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +3 -19
- package/dist/TopNav/TopNav.d.ts.map +1 -1
- package/dist/TopNav/TopNav.js +6 -5
- package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/TopNav/TopNavHeading.js +54 -16
- package/dist/TopNav/TopNavItem.d.ts.map +1 -1
- package/dist/TopNav/TopNavItem.js +3 -9
- package/dist/TopNav/TopNavMegaMenu.d.ts +7 -0
- package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +146 -60
- package/dist/TopNav/TopNavMegaMenuItem.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenuItem.js +22 -3
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +83 -38
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +13 -0
- package/dist/TreeList/TreeListBranches.d.ts +1 -1
- package/dist/TreeList/TreeListBranches.d.ts.map +1 -1
- package/dist/TreeList/TreeListBranches.js +14 -4
- package/dist/TreeList/TreeListItem.d.ts +11 -1
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +57 -30
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +16 -8
- package/dist/astryx.css +74 -85
- package/dist/astryx.umd.js +56 -56
- package/dist/astryx.umd.js.map +4 -4
- package/dist/hooks/containerReveal.stylex.d.ts +61 -0
- package/dist/hooks/containerReveal.stylex.d.ts.map +1 -0
- package/dist/hooks/containerReveal.stylex.js +63 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/useClipboard.d.ts +59 -0
- package/dist/hooks/useClipboard.d.ts.map +1 -0
- package/dist/hooks/useClipboard.js +106 -0
- package/dist/hooks/useContainerReveal.d.ts +14 -8
- package/dist/hooks/useContainerReveal.d.ts.map +1 -1
- package/dist/hooks/useContainerReveal.js +28 -69
- package/dist/hooks/useIndicatorFocusRing.d.ts +28 -0
- package/dist/hooks/useIndicatorFocusRing.d.ts.map +1 -0
- package/dist/hooks/useIndicatorFocusRing.js +96 -0
- package/dist/hooks/useLongPress.d.ts.map +1 -1
- package/dist/hooks/useLongPress.js +12 -2
- package/dist/hooks/useScrollLock.d.ts.map +1 -1
- package/dist/hooks/useScrollLock.js +33 -18
- package/dist/hooks/useStreamingText.d.ts +18 -3
- package/dist/hooks/useStreamingText.d.ts.map +1 -1
- package/dist/hooks/useStreamingText.js +47 -7
- package/dist/hooks/useTreeFocus.d.ts.map +1 -1
- package/dist/hooks/useTreeFocus.js +9 -3
- package/dist/hooks/useTypeahead.d.ts +3 -2
- package/dist/hooks/useTypeahead.d.ts.map +1 -1
- package/dist/hooks/useTypeahead.js +19 -7
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/theme/defineTheme.d.ts +16 -0
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/defineTheme.js +8 -0
- package/dist/theme/derivedVarRegistry.d.ts +8 -0
- package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +14 -13
- package/dist/theme/expandColorScale.d.ts +3 -1
- package/dist/theme/expandColorScale.d.ts.map +1 -1
- package/dist/theme/expandColorScale.js +17 -7
- package/dist/theme/expandTypeScale.d.ts.map +1 -1
- package/dist/theme/expandTypeScale.js +17 -0
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +11 -0
- package/dist/theme/index.d.ts +1 -0
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/utils/focusOutline.stylex.d.ts +107 -0
- package/dist/utils/focusOutline.stylex.d.ts.map +1 -0
- package/dist/utils/focusOutline.stylex.js +130 -0
- package/dist/utils/focusReturn.d.ts +24 -0
- package/dist/utils/focusReturn.d.ts.map +1 -0
- package/dist/utils/focusReturn.js +29 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/mergeRefs.d.ts.map +1 -1
- package/dist/utils/mergeRefs.js +7 -5
- package/dist/utils/rtlStyles.d.ts +2 -2
- package/dist/utils/rtlStyles.js +2 -2
- package/dist/utils/themeProps.d.ts +20 -1
- package/dist/utils/themeProps.d.ts.map +1 -1
- package/dist/utils/themeProps.js +8 -2
- package/locales/en.json +12 -0
- package/locales/pseudo.json +9 -0
- package/package.json +7 -2
- package/src/AlertDialog/AlertDialog.doc.mjs +16 -3
- package/src/AlertDialog/AlertDialog.test.tsx +208 -1
- package/src/AlertDialog/AlertDialog.tsx +21 -3
- package/src/AppShell/AppShell.doc.mjs +11 -0
- package/src/AppShell/AppShell.test.tsx +139 -0
- package/src/AppShell/AppShell.tsx +32 -22
- package/src/AspectRatio/AspectRatio.doc.mjs +27 -3
- package/src/AspectRatio/AspectRatio.test.tsx +30 -0
- package/src/AspectRatio/AspectRatio.tsx +13 -0
- package/src/Avatar/Avatar.doc.mjs +2 -13
- package/src/Avatar/Avatar.test.tsx +33 -8
- package/src/Avatar/Avatar.tsx +52 -50
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +2 -9
- package/src/Banner/Banner.tsx +9 -6
- package/src/Breadcrumbs/BreadcrumbItem.tsx +16 -6
- package/src/Breadcrumbs/index.ts +5 -1
- package/src/Button/Button.tsx +21 -41
- package/src/Calendar/Calendar.tsx +2 -1
- package/src/Calendar/styles.ts +0 -8
- package/src/Carousel/Carousel.doc.mjs +3 -0
- package/src/Carousel/Carousel.tsx +10 -6
- package/src/Chat/Chat.doc.mjs +2 -0
- package/src/Chat/ChatDictationButton.tsx +7 -1
- package/src/Chat/ChatLayoutScrollButton.test.tsx +22 -0
- package/src/Chat/ChatLayoutScrollButton.tsx +8 -1
- package/src/Chat/ChatSendButton.tsx +2 -3
- package/src/Chat/ChatToolCalls.test.tsx +35 -0
- package/src/Chat/ChatToolCalls.tsx +36 -16
- package/src/Chat/useTriggerMenu.tsx +2 -5
- package/src/CheckboxInput/CheckboxInput.doc.mjs +4 -2
- package/src/CheckboxInput/CheckboxInput.test.tsx +115 -0
- package/src/CheckboxInput/CheckboxInput.tsx +45 -202
- package/src/ClickableCard/ClickableCard.tsx +6 -11
- package/src/CodeBlock/CodeBlock.doc.mjs +3 -0
- package/src/CodeBlock/CodeBlock.test.tsx +91 -0
- package/src/CodeBlock/CodeBlock.tsx +57 -80
- package/src/Collapsible/Collapsible.tsx +22 -18
- package/src/CommandPalette/CommandPalette.test.tsx +29 -0
- package/src/CommandPalette/CommandPaletteItem.tsx +7 -4
- package/src/CommandPalette/CommandPaletteList.tsx +2 -2
- package/src/ComplexSelector/ComplexSelector.doc.mjs +42 -0
- package/src/ComplexSelector/ComplexSelector.test.tsx +64 -0
- package/src/ComplexSelector/ComplexSelector.tsx +46 -29
- package/src/ContextMenu/ContextMenu.doc.mjs +1 -1
- package/src/ContextMenu/ContextMenu.test.tsx +41 -0
- package/src/ContextMenu/ContextMenu.tsx +3 -3
- package/src/ContextMenu/index.ts +5 -1
- package/src/DateInput/DateInput.doc.mjs +18 -3
- package/src/DateInput/DateInput.test.tsx +93 -11
- package/src/DateInput/DateInput.tsx +41 -19
- package/src/DateRangeInput/DateRangeInput.doc.mjs +10 -2
- package/src/DateRangeInput/DateRangeInput.test.tsx +110 -14
- package/src/DateRangeInput/DateRangeInput.tsx +24 -12
- package/src/DateTimeInput/DateTimeInput.doc.mjs +16 -2
- package/src/DateTimeInput/DateTimeInput.test.tsx +75 -0
- package/src/DateTimeInput/DateTimeInput.tsx +35 -8
- package/src/Dialog/Dialog.tsx +2 -9
- package/src/DropdownMenu/DropdownMenu.doc.mjs +5 -9
- package/src/DropdownMenu/DropdownMenu.test.tsx +534 -4
- package/src/DropdownMenu/DropdownMenu.tsx +113 -52
- package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +27 -30
- package/src/DropdownMenu/DropdownMenuDivider.doc.mjs +34 -0
- package/src/DropdownMenu/DropdownMenuDivider.tsx +81 -0
- package/src/DropdownMenu/DropdownMenuItem.doc.mjs +39 -4
- package/src/DropdownMenu/DropdownMenuItem.tsx +48 -10
- package/src/DropdownMenu/DropdownMenuRadioItem.tsx +30 -76
- package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +25 -19
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +44 -14
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +1 -5
- package/src/DropdownMenu/index.ts +8 -1
- package/src/DropdownMenu/renderDropdownItems.tsx +33 -34
- package/src/EmptyState/EmptyState.doc.mjs +4 -0
- package/src/EmptyState/EmptyState.test.tsx +62 -0
- package/src/EmptyState/EmptyState.tsx +16 -6
- package/src/Field/Field.doc.mjs +1 -0
- package/src/Field/InputClearButton.test.tsx +117 -0
- package/src/Field/InputClearButton.tsx +30 -3
- package/src/HoverCard/useHoverCard.tsx +2 -23
- package/src/Icon/Icon.doc.mjs +2 -1
- package/src/Indicator/CheckIndicator.tsx +174 -0
- package/src/Indicator/CheckboxIndicator.tsx +257 -0
- package/src/Indicator/Indicator.doc.mjs +344 -0
- package/src/Indicator/Indicator.test.tsx +393 -0
- package/src/Indicator/RadioIndicator.tsx +206 -0
- package/src/Indicator/index.ts +45 -0
- package/src/Indicator/indicator.markers.stylex.ts +19 -0
- package/src/Indicator/indicatorRegistry.test.tsx +106 -0
- package/src/Indicator/indicatorRegistry.ts +120 -0
- package/src/Indicator/types.ts +186 -0
- package/src/Indicator/useIndicator.ts +39 -0
- package/src/Item/Item.doc.mjs +1 -1
- package/src/Item/Item.tsx +7 -14
- package/src/Layer/useLayer.doc.mjs +2 -2
- package/src/Layer/useLayer.test.tsx +85 -0
- package/src/Layer/useLayer.tsx +39 -1
- package/src/Lightbox/Lightbox.doc.mjs +1 -1
- package/src/Lightbox/Lightbox.tsx +43 -38
- package/src/Link/Link.tsx +4 -11
- package/src/MobileNav/MobileNav.tsx +3 -3
- package/src/MoreMenu/MoreMenu.doc.mjs +31 -0
- package/src/MoreMenu/MoreMenu.test.tsx +68 -1
- package/src/MoreMenu/MoreMenu.tsx +19 -0
- package/src/MultiSelector/MultiSelector.doc.mjs +9 -1
- package/src/MultiSelector/MultiSelector.test.tsx +255 -16
- package/src/MultiSelector/MultiSelector.tsx +103 -99
- package/src/NumberInput/NumberInput.doc.mjs +265 -50
- package/src/NumberInput/NumberInput.test.tsx +726 -21
- package/src/NumberInput/NumberInput.tsx +353 -59
- package/src/Outline/Outline.tsx +2 -5
- package/src/Pagination/Pagination.doc.mjs +1 -1
- package/src/Pagination/Pagination.test.tsx +22 -7
- package/src/Pagination/Pagination.tsx +38 -35
- package/src/Popover/Popover.tsx +6 -7
- package/src/PowerSearch/PowerSearch.tsx +1 -1
- package/src/PowerSearch/PowerSearchEditPopover.test.tsx +42 -0
- package/src/PowerSearch/PowerSearchEditPopover.tsx +7 -0
- package/src/ProgressBar/ProgressBar.doc.mjs +27 -5
- package/src/ProgressBar/ProgressBar.test.tsx +224 -1
- package/src/ProgressBar/ProgressBar.tsx +124 -22
- package/src/RadioList/RadioList.doc.mjs +4 -2
- package/src/RadioList/RadioListItem.tsx +31 -130
- package/src/Resizable/ResizeHandle.tsx +2 -9
- package/src/SegmentedControl/SegmentedControlItem.tsx +2 -9
- package/src/SelectableCard/SelectableCard.tsx +4 -9
- package/src/Selector/Selector.doc.mjs +7 -4
- package/src/Selector/Selector.test.tsx +935 -25
- package/src/Selector/Selector.tsx +189 -106
- package/src/Selector/hooks.ts +77 -50
- package/src/SideNav/SideNav.test.tsx +46 -0
- package/src/SideNav/SideNav.tsx +1 -0
- package/src/SideNav/SideNavCollapseButton.tsx +15 -10
- package/src/SideNav/SideNavHeading.tsx +48 -10
- package/src/SideNav/SideNavItem.tsx +20 -12
- package/src/Stack/Stack.doc.mjs +110 -0
- package/src/StatusDot/StatusDot.doc.mjs +12 -3
- package/src/Switch/Switch.test.tsx +32 -0
- package/src/Switch/Switch.tsx +8 -8
- package/src/TabList/Tab.tsx +2 -9
- package/src/TabList/TabMenu.tsx +14 -21
- package/src/Table/BaseTable.tsx +11 -0
- package/src/Table/index.ts +1 -4
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +30 -14
- package/src/Table/plugins/rowExpansion/index.ts +1 -4
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +125 -175
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +115 -458
- package/src/Table/plugins/sortable/useTableSortable.tsx +2 -6
- package/src/Table/plugins/tree/useTableTreeData.tsx +43 -24
- package/src/Table/tableContextMenu.test.tsx +27 -0
- package/src/Table/tableContextMenu.tsx +1 -0
- package/src/Table/types.ts +11 -0
- package/src/Table/useTableGroupedRows.doc.mjs +1 -1
- package/src/Table/useTableRowExpansion.doc.mjs +43 -66
- package/src/TextArea/TextArea.doc.mjs +42 -2
- package/src/TextArea/TextArea.test.tsx +219 -0
- package/src/TextArea/TextArea.tsx +34 -7
- package/src/TextInput/TextInput.doc.mjs +18 -2
- package/src/TextInput/TextInput.test.tsx +189 -0
- package/src/TextInput/TextInput.tsx +25 -31
- package/src/Thumbnail/Thumbnail.tsx +2 -9
- package/src/TimeInput/TimeInput.doc.mjs +2 -2
- package/src/TimeInput/TimeInput.test.tsx +30 -3
- package/src/TimeInput/TimeInput.tsx +9 -26
- package/src/Timestamp/Timestamp.doc.mjs +4 -3
- package/src/Timestamp/TimestampHoverCard.tsx +13 -35
- package/src/Token/Token.tsx +5 -28
- package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
- package/src/Tokenizer/Tokenizer.test.tsx +45 -3
- package/src/Tokenizer/Tokenizer.tsx +10 -2
- package/src/Tooltip/useTooltip.tsx +2 -23
- package/src/TopNav/TopNav.tsx +1 -3
- package/src/TopNav/TopNavHeading.tsx +42 -13
- package/src/TopNav/TopNavItem.tsx +3 -21
- package/src/TopNav/TopNavMegaMenu.test.tsx +433 -33
- package/src/TopNav/TopNavMegaMenu.tsx +118 -53
- package/src/TopNav/TopNavMegaMenuItem.tsx +2 -9
- package/src/TopNav/TopNavMenu.tsx +34 -37
- package/src/TreeList/TreeList.doc.mjs +5 -0
- package/src/TreeList/TreeList.test.tsx +206 -7
- package/src/TreeList/TreeList.tsx +22 -0
- package/src/TreeList/TreeListBranches.tsx +25 -2
- package/src/TreeList/TreeListItem.tsx +89 -52
- package/src/Typeahead/BaseTypeahead.tsx +19 -6
- package/src/Typeahead/Typeahead.doc.mjs +1 -0
- package/src/Typeahead/Typeahead.test.tsx +76 -3
- package/src/hooks/containerReveal.stylex.ts +102 -0
- package/src/hooks/index.ts +4 -0
- package/src/hooks/useClipboard.doc.mjs +87 -0
- package/src/hooks/useClipboard.test.tsx +151 -0
- package/src/hooks/useClipboard.ts +135 -0
- package/src/hooks/useContainerReveal.doc.mjs +7 -7
- package/src/hooks/useContainerReveal.test.tsx +42 -62
- package/src/hooks/useContainerReveal.ts +36 -91
- package/src/hooks/useImageMode.test.ts +1 -1
- package/src/hooks/useIndicatorFocusRing.tsx +120 -0
- package/src/hooks/useLongPress.test.tsx +18 -0
- package/src/hooks/useLongPress.ts +12 -2
- package/src/hooks/useScrollLock.test.ts +72 -0
- package/src/hooks/useScrollLock.ts +51 -19
- package/src/hooks/useStreamingText.test.ts +46 -1
- package/src/hooks/useStreamingText.ts +49 -7
- package/src/hooks/useTreeFocus.test.tsx +50 -0
- package/src/hooks/useTreeFocus.ts +14 -3
- package/src/hooks/useTypeahead.test.tsx +150 -0
- package/src/hooks/useTypeahead.ts +24 -9
- package/src/i18n/InternationalizationProvider.doc.mjs +7 -2
- package/src/index.ts +1 -0
- package/src/theme/defineTheme.ts +24 -0
- package/src/theme/derivedVarRegistry.test.ts +21 -1
- package/src/theme/derivedVarRegistry.ts +19 -6
- package/src/theme/expandColorScale.test.ts +14 -0
- package/src/theme/expandColorScale.ts +24 -9
- package/src/theme/expandTypeScale.test.ts +43 -0
- package/src/theme/expandTypeScale.ts +17 -0
- package/src/theme/generateThemeRules.test.ts +61 -20
- package/src/theme/generateThemeRules.ts +11 -0
- package/src/theme/index.ts +13 -0
- package/src/utils/focusOutline.stylex.ts +163 -0
- package/src/utils/focusReturn.test.ts +42 -0
- package/src/utils/focusReturn.ts +31 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/mergeRefs.test.ts +48 -0
- package/src/utils/mergeRefs.ts +12 -6
- package/src/utils/rtlStyles.ts +2 -2
- package/src/utils/themeProps.ts +26 -4
- package/dist/CheckboxInput/checkbox.markers.stylex.d.ts +0 -9
- package/dist/CheckboxInput/checkbox.markers.stylex.d.ts.map +0 -1
- package/dist/CheckboxInput/checkbox.markers.stylex.js +0 -14
- package/dist/RadioList/radio.markers.stylex.d.ts +0 -7
- package/dist/RadioList/radio.markers.stylex.d.ts.map +0 -1
- package/dist/RadioList/radio.markers.stylex.js +0 -12
- package/dist/hooks/containerReveal.pool.stylex.d.ts +0 -303
- package/dist/hooks/containerReveal.pool.stylex.d.ts.map +0 -1
- package/dist/hooks/containerReveal.pool.stylex.js +0 -292
- package/src/CheckboxInput/checkbox.markers.stylex.ts +0 -12
- package/src/RadioList/radio.markers.stylex.ts +0 -10
- package/src/hooks/containerReveal.pool.stylex.ts +0 -571
|
@@ -12,6 +12,13 @@
|
|
|
12
12
|
* eliminating z-index stacking. CSS anchor positioning places the panel below
|
|
13
13
|
* the nav wrapper.
|
|
14
14
|
*
|
|
15
|
+
* The default (desktop) trigger opens on hover and click. Hover opens are
|
|
16
|
+
* transient; click/keyboard opens are pinned. A click shortly after hover-open
|
|
17
|
+
* confirms and pins the panel instead of closing it. The panel remains an auto
|
|
18
|
+
* popover for native dismissal and sibling exclusivity; `popoverTarget`
|
|
19
|
+
* registers the trigger as its native invoker so the guard runs before any
|
|
20
|
+
* dismiss.
|
|
21
|
+
*
|
|
15
22
|
* Supports three render modes via TopNavRenderContext:
|
|
16
23
|
* - 'default': desktop popover mega menu (hover/click triggered)
|
|
17
24
|
* - 'mobile-bar': returns null (hidden in compact mobile bar)
|
|
@@ -28,18 +35,59 @@ import "../theme/tokens.stylex.js";
|
|
|
28
35
|
import { colorVars, spacingVars, radiusVars, durationVars, easeVars, fontWeightVars, shadowVars, typeScaleVars, borderVars } from "../theme/tokens.stylex.js";
|
|
29
36
|
import { usePopover } from "../Popover/usePopover.js";
|
|
30
37
|
import { Grid } from "../Grid/Grid.js";
|
|
31
|
-
import {
|
|
38
|
+
import { Icon } from "../Icon/index.js";
|
|
32
39
|
import { mergeProps, mergeRefs } from "../utils/index.js";
|
|
33
40
|
import { navItemStyles } from "../NavItem/navItemStyles.stylex.js";
|
|
34
41
|
import { useTopNavSlot } from "./TopNavContext.js";
|
|
35
42
|
import { useTopNavRenderMode } from "./TopNavRenderContext.js";
|
|
36
43
|
import { themeProps } from "../utils/themeProps.js";
|
|
44
|
+
import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
|
|
37
45
|
|
|
38
46
|
// =============================================================================
|
|
39
47
|
// Styles
|
|
40
48
|
// =============================================================================
|
|
41
49
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
42
50
|
const styles = {
|
|
51
|
+
trigger: {
|
|
52
|
+
k1xSpc: "x3nfvp2",
|
|
53
|
+
kGNEyG: "x6s0dn4",
|
|
54
|
+
kOIVth: "x1txdalj",
|
|
55
|
+
k8WAf4: "x1vofgu7",
|
|
56
|
+
kg3NbH: "xrrkdod",
|
|
57
|
+
kaIpWk: "xh6dtrn",
|
|
58
|
+
kGuDYH: "xcr08ib",
|
|
59
|
+
kLWn49: "x1kq96og",
|
|
60
|
+
k63SB2: "x1e4wzip",
|
|
61
|
+
kMwMTN: "xv1l7n4",
|
|
62
|
+
kybGjl: "x1hl2dhg",
|
|
63
|
+
kkrTdU: "x1ypdohk",
|
|
64
|
+
k1ekBW: "xs2xxs2",
|
|
65
|
+
kIyJzY: "xuedmi6",
|
|
66
|
+
kAMwcw: "xlr8y92",
|
|
67
|
+
kWkggS: "xjbqb8w xe9uy6x",
|
|
68
|
+
kMv6JI: "xjb2p0i",
|
|
69
|
+
$$css: true
|
|
70
|
+
},
|
|
71
|
+
triggerOpen: {
|
|
72
|
+
kMwMTN: "x1tgivj0",
|
|
73
|
+
kWkggS: "x1lmrjuc",
|
|
74
|
+
$$css: true
|
|
75
|
+
},
|
|
76
|
+
chevron: {
|
|
77
|
+
k1xSpc: "x3nfvp2",
|
|
78
|
+
kGNEyG: "x6s0dn4",
|
|
79
|
+
kzqmXN: "x15vhz18",
|
|
80
|
+
kZKoxP: "xlzyvqe",
|
|
81
|
+
kGuDYH: "x1qlqyl8",
|
|
82
|
+
k1ekBW: "x11xpdln",
|
|
83
|
+
kIyJzY: "xuedmi6",
|
|
84
|
+
kAMwcw: "xlr8y92",
|
|
85
|
+
$$css: true
|
|
86
|
+
},
|
|
87
|
+
chevronOpen: {
|
|
88
|
+
k3aq6I: "x19jd1h0",
|
|
89
|
+
$$css: true
|
|
90
|
+
},
|
|
43
91
|
panelAnimation: {
|
|
44
92
|
kSiTet: "xg01cxk xofkqq2",
|
|
45
93
|
k3aq6I: "x1bvilyr x9cjr8z",
|
|
@@ -52,14 +100,35 @@ const styles = {
|
|
|
52
100
|
$$css: true
|
|
53
101
|
},
|
|
54
102
|
panelViewportFit: {
|
|
55
|
-
k1xSpc: "
|
|
103
|
+
k1xSpc: "x1s85apg x1y40yee",
|
|
56
104
|
kXwgrk: "xdt5ytf",
|
|
57
105
|
kskxy: "xbhvqqn",
|
|
58
106
|
$$css: true
|
|
59
107
|
},
|
|
108
|
+
menuWrapper: {
|
|
109
|
+
kzQI83: "xgyuaek",
|
|
110
|
+
kmuXW: "xs83m0k",
|
|
111
|
+
kCS8Yb: "xchdapg",
|
|
112
|
+
k7Eaqz: "xeuugli",
|
|
113
|
+
$$css: true
|
|
114
|
+
},
|
|
60
115
|
drawerHeader: {
|
|
61
116
|
kjj79g: "x1qughib",
|
|
62
117
|
$$css: true
|
|
118
|
+
},
|
|
119
|
+
drawerChevron: {
|
|
120
|
+
k1xSpc: "x3nfvp2",
|
|
121
|
+
kzqmXN: "x15vhz18",
|
|
122
|
+
kZKoxP: "xlzyvqe",
|
|
123
|
+
kGuDYH: "x1qlqyl8",
|
|
124
|
+
k1ekBW: "x11xpdln",
|
|
125
|
+
kIyJzY: "xuedmi6",
|
|
126
|
+
kAMwcw: "xlr8y92",
|
|
127
|
+
$$css: true
|
|
128
|
+
},
|
|
129
|
+
drawerChevronExpanded: {
|
|
130
|
+
k3aq6I: "x19jd1h0",
|
|
131
|
+
$$css: true
|
|
63
132
|
}
|
|
64
133
|
};
|
|
65
134
|
|
|
@@ -164,6 +233,7 @@ TopNavMegaMenu.displayName = 'TopNavMegaMenu';
|
|
|
164
233
|
// DefaultMegaMenu — desktop popover mode
|
|
165
234
|
// =============================================================================
|
|
166
235
|
|
|
236
|
+
const CLICK_GUARD_MS = 500;
|
|
167
237
|
function DefaultMegaMenu({
|
|
168
238
|
ref,
|
|
169
239
|
label,
|
|
@@ -174,27 +244,36 @@ function DefaultMegaMenu({
|
|
|
174
244
|
onOpenChange
|
|
175
245
|
}) {
|
|
176
246
|
const slot = useTopNavSlot();
|
|
177
|
-
const chevronDownIcon = useIcon('chevronDown');
|
|
178
247
|
const showTimeoutRef = useRef(null);
|
|
179
248
|
const hideTimeoutRef = useRef(null);
|
|
180
249
|
const triggerButtonRef = useRef(null);
|
|
181
|
-
const
|
|
250
|
+
const hoverOpenedAtRef = useRef(0);
|
|
251
|
+
const stickyRef = useRef(false);
|
|
182
252
|
const handlePopoverShow = useCallback(() => {
|
|
183
253
|
onOpenChange?.(true);
|
|
184
254
|
}, [onOpenChange]);
|
|
185
255
|
const handlePopoverHide = useCallback(() => {
|
|
256
|
+
hoverOpenedAtRef.current = 0;
|
|
257
|
+
stickyRef.current = false;
|
|
186
258
|
onOpenChange?.(false);
|
|
187
259
|
}, [onOpenChange]);
|
|
188
260
|
const popover = usePopover({
|
|
189
261
|
// role: 'none' — the panel exposes its own role="group" labeled by
|
|
190
|
-
// `label`.
|
|
191
|
-
//
|
|
192
|
-
//
|
|
262
|
+
// `label`. Pointer/hover opens keep focus on the trigger; keyboard and
|
|
263
|
+
// assistive-tech opens move focus into the panel (a labeled group you exit
|
|
264
|
+
// with Escape or by tabbing out). Either way role="dialog"
|
|
265
|
+
// aria-modal="true" would be wrong: it announces an unnamed modal dialog
|
|
266
|
+
// around a grid of links (and, when focus stays on the trigger, marks the
|
|
267
|
+
// focused control inert).
|
|
193
268
|
role: 'none',
|
|
194
269
|
// hasSurface: false — mega menu provides its own surface (panelContainer)
|
|
195
270
|
// with border-top and custom overflow. Animation is applied via the
|
|
196
271
|
// render() call's xstyle prop (panelAnimation), not the hook options.
|
|
197
272
|
hasSurface: false,
|
|
273
|
+
// Keep native outside-click/Escape dismissal and sibling exclusivity.
|
|
274
|
+
// The trigger's popoverTarget association prevents its activation from
|
|
275
|
+
// being treated as an ordinary outside interaction.
|
|
276
|
+
hasLightDismiss: true,
|
|
198
277
|
onShow: handlePopoverShow,
|
|
199
278
|
onHide: handlePopoverHide
|
|
200
279
|
});
|
|
@@ -222,38 +301,65 @@ function DefaultMegaMenu({
|
|
|
222
301
|
const scheduleShow = useCallback(() => {
|
|
223
302
|
clearTimeouts();
|
|
224
303
|
showTimeoutRef.current = setTimeout(() => {
|
|
304
|
+
hoverOpenedAtRef.current = Date.now();
|
|
225
305
|
popover.show({
|
|
226
306
|
skipAutoFocus: true
|
|
227
307
|
});
|
|
228
308
|
}, delay);
|
|
229
|
-
}, [clearTimeouts,
|
|
309
|
+
}, [clearTimeouts, delay, popover]);
|
|
230
310
|
const scheduleHide = useCallback(() => {
|
|
231
311
|
clearTimeouts();
|
|
232
312
|
hideTimeoutRef.current = setTimeout(() => {
|
|
233
313
|
popover.hide();
|
|
234
314
|
}, hideDelay);
|
|
235
|
-
}, [clearTimeouts,
|
|
236
|
-
const
|
|
237
|
-
|
|
315
|
+
}, [clearTimeouts, hideDelay, popover]);
|
|
316
|
+
const focusFirstPanelItem = useCallback(() => {
|
|
317
|
+
popover.contentRef.current?.querySelector('a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])')?.focus();
|
|
318
|
+
}, [popover.contentRef]);
|
|
319
|
+
const handleTriggerMouseEnter = useCallback(() => {
|
|
320
|
+
clearTimeouts();
|
|
321
|
+
if (!popover.isOpen) {
|
|
238
322
|
scheduleShow();
|
|
239
323
|
}
|
|
240
|
-
}, [scheduleShow]);
|
|
324
|
+
}, [clearTimeouts, popover.isOpen, scheduleShow]);
|
|
325
|
+
const handlePanelMouseEnter = useCallback(() => {
|
|
326
|
+
clearTimeouts();
|
|
327
|
+
}, [clearTimeouts]);
|
|
241
328
|
const handleMouseLeave = useCallback(() => {
|
|
242
|
-
if (!
|
|
329
|
+
if (!stickyRef.current) {
|
|
243
330
|
scheduleHide();
|
|
244
331
|
}
|
|
245
332
|
}, [scheduleHide]);
|
|
246
|
-
const handleClick = useCallback(
|
|
333
|
+
const handleClick = useCallback(event => {
|
|
334
|
+
// Cancel the native invoker toggle so this guard is the single source of
|
|
335
|
+
// truth for trigger activation. popoverTarget still establishes the
|
|
336
|
+
// invoker relationship used by native light-dismiss and stacking.
|
|
337
|
+
event.preventDefault();
|
|
247
338
|
clearTimeouts();
|
|
248
|
-
if (
|
|
249
|
-
|
|
339
|
+
if (event.detail === 0) {
|
|
340
|
+
stickyRef.current = true;
|
|
341
|
+
hoverOpenedAtRef.current = 0;
|
|
342
|
+
if (popover.isOpen) {
|
|
343
|
+
focusFirstPanelItem();
|
|
344
|
+
} else {
|
|
345
|
+
popover.show();
|
|
346
|
+
}
|
|
347
|
+
} else if (!popover.isOpen) {
|
|
348
|
+
stickyRef.current = true;
|
|
349
|
+
popover.show({
|
|
350
|
+
skipAutoFocus: true
|
|
351
|
+
});
|
|
352
|
+
} else if (Date.now() - hoverOpenedAtRef.current < CLICK_GUARD_MS) {
|
|
353
|
+
// A click that naturally follows a hover-open confirms the open state
|
|
354
|
+
// instead of toggling the panel shut. From here it behaves like any
|
|
355
|
+
// other click-open and stays pinned until explicit dismissal.
|
|
356
|
+
stickyRef.current = true;
|
|
357
|
+
hoverOpenedAtRef.current = 0;
|
|
358
|
+
} else {
|
|
250
359
|
popover.hide();
|
|
251
360
|
triggerButtonRef.current?.focus();
|
|
252
|
-
} else {
|
|
253
|
-
clickLockedRef.current = true;
|
|
254
|
-
popover.show();
|
|
255
361
|
}
|
|
256
|
-
}, [
|
|
362
|
+
}, [clearTimeouts, focusFirstPanelItem, popover]);
|
|
257
363
|
useEffect(() => {
|
|
258
364
|
return () => {
|
|
259
365
|
clearTimeouts();
|
|
@@ -264,27 +370,17 @@ function DefaultMegaMenu({
|
|
|
264
370
|
ref: mergeRefs(triggerButtonRef, ref),
|
|
265
371
|
type: "button",
|
|
266
372
|
...popover.triggerProps,
|
|
373
|
+
// Native invoker prevents trigger light-dismiss.
|
|
374
|
+
popoverTarget: popover.id,
|
|
267
375
|
onClick: handleClick,
|
|
268
|
-
onMouseEnter:
|
|
376
|
+
onMouseEnter: handleTriggerMouseEnter,
|
|
269
377
|
onMouseLeave: handleMouseLeave,
|
|
270
|
-
...mergeProps(themeProps('top-nav-mega-menu'),
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
}
|
|
277
|
-
}[!!popover.isOpen << 0]),
|
|
278
|
-
children: [label, /*#__PURE__*/_jsx("span", {
|
|
279
|
-
...{
|
|
280
|
-
0: {
|
|
281
|
-
className: "x3nfvp2 x6s0dn4 x11xpdln xuedmi6 xlr8y92"
|
|
282
|
-
},
|
|
283
|
-
1: {
|
|
284
|
-
className: "x3nfvp2 x6s0dn4 x11xpdln xuedmi6 xlr8y92 x19jd1h0"
|
|
285
|
-
}
|
|
286
|
-
}[!!popover.isOpen << 0],
|
|
287
|
-
children: chevronDownIcon
|
|
378
|
+
...mergeProps(themeProps('top-nav-mega-menu'), focusOutlineProps.focusVisible(styles.trigger, popover.isOpen && styles.triggerOpen)),
|
|
379
|
+
children: [label, /*#__PURE__*/_jsx(Icon, {
|
|
380
|
+
icon: "chevronDown",
|
|
381
|
+
size: "sm",
|
|
382
|
+
color: "inherit",
|
|
383
|
+
xstyle: [styles.chevron, popover.isOpen && styles.chevronOpen]
|
|
288
384
|
})]
|
|
289
385
|
}), popover.render(/*#__PURE__*/_jsx("div", {
|
|
290
386
|
// role="group" — a mega menu is a browsing grid of links, not an
|
|
@@ -292,7 +388,7 @@ function DefaultMegaMenu({
|
|
|
292
388
|
// for action menus; link mega menus are the documented anti-case).
|
|
293
389
|
role: "group",
|
|
294
390
|
"aria-label": label,
|
|
295
|
-
onMouseEnter:
|
|
391
|
+
onMouseEnter: handlePanelMouseEnter,
|
|
296
392
|
onMouseLeave: handleMouseLeave,
|
|
297
393
|
...{
|
|
298
394
|
className: "x1prclbq x11xkdxz x13fuv20 x1pc3f07 x1hviunn x1i5ehqx xb3r6kr x78zum5 xdt5ytf x2lwn1j"
|
|
@@ -301,15 +397,11 @@ function DefaultMegaMenu({
|
|
|
301
397
|
...{
|
|
302
398
|
className: "x78zum5 x1a02dak x1qh66ti x8o8v82 xrrkdod x1m1aaou x9f619 x1odjw0f xish69e"
|
|
303
399
|
},
|
|
304
|
-
children: [items != null && /*#__PURE__*/_jsx(
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
children:
|
|
309
|
-
columns: 2,
|
|
310
|
-
gap: 2,
|
|
311
|
-
children: items
|
|
312
|
-
})
|
|
400
|
+
children: [items != null && /*#__PURE__*/_jsx(Grid, {
|
|
401
|
+
columns: 2,
|
|
402
|
+
gap: 2,
|
|
403
|
+
xstyle: styles.menuWrapper,
|
|
404
|
+
children: items
|
|
313
405
|
}), featured != null && /*#__PURE__*/_jsx("div", {
|
|
314
406
|
...{
|
|
315
407
|
className: "x1iyjqo2 xs83m0k xjpgo6f x1hviunn xwmxj5m xb3r6kr x78zum5 xdt5ytf"
|
|
@@ -335,7 +427,6 @@ function DrawerMegaMenu({
|
|
|
335
427
|
featured
|
|
336
428
|
}) {
|
|
337
429
|
const [isExpanded, setIsExpanded] = useState(false);
|
|
338
|
-
const chevronDownIcon = useIcon('chevronDown');
|
|
339
430
|
const menuId = `mega-menu-${label.toLowerCase().replace(/\s+/g, '-')}`;
|
|
340
431
|
return /*#__PURE__*/_jsxs("div", {
|
|
341
432
|
...{
|
|
@@ -349,16 +440,11 @@ function DrawerMegaMenu({
|
|
|
349
440
|
...mergeProps(themeProps('top-nav-mega-menu', {
|
|
350
441
|
mode: 'drawer'
|
|
351
442
|
}), stylex.props(navItemStyles.item, styles.drawerHeader)),
|
|
352
|
-
children: [label, /*#__PURE__*/_jsx(
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
1: {
|
|
358
|
-
className: "x3nfvp2 x11xpdln xuedmi6 xlr8y92 x19jd1h0"
|
|
359
|
-
}
|
|
360
|
-
}[!!isExpanded << 0],
|
|
361
|
-
children: chevronDownIcon
|
|
443
|
+
children: [label, /*#__PURE__*/_jsx(Icon, {
|
|
444
|
+
icon: "chevronDown",
|
|
445
|
+
size: "sm",
|
|
446
|
+
color: "inherit",
|
|
447
|
+
xstyle: [styles.drawerChevron, isExpanded && styles.drawerChevronExpanded]
|
|
362
448
|
})]
|
|
363
449
|
}), /*#__PURE__*/_jsx("div", {
|
|
364
450
|
id: `${menuId}-items`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopNavMegaMenuItem.d.ts","sourceRoot":"","sources":["../../src/TopNav/TopNavMegaMenuItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAa5C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAGrD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"TopNavMegaMenuItem.d.ts","sourceRoot":"","sources":["../../src/TopNav/TopNavMegaMenuItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAa5C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAGrD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAsG5C,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CACnD,SAAS,CAAC,WAAW,CAAC,EACtB,SAAS,CACV;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;OAGG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;CACxB;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,GAAG,EACH,KAAK,EACL,WAAW,EACX,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,EAAE,EACF,QAAQ,GACT,EAAE,uBAAuB,qBA+DzB;yBAxEe,kBAAkB"}
|
|
@@ -24,12 +24,33 @@ import { useTopNavRenderMode } from "./TopNavRenderContext.js";
|
|
|
24
24
|
import { mergeProps } from "../utils/index.js";
|
|
25
25
|
import { useAppShellMobile } from "../AppShell/AppShellMobileContext.js";
|
|
26
26
|
import { themeProps } from "../utils/themeProps.js";
|
|
27
|
+
import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
|
|
27
28
|
|
|
28
29
|
// =============================================================================
|
|
29
30
|
// Styles
|
|
30
31
|
// =============================================================================
|
|
31
32
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
32
33
|
const styles = {
|
|
34
|
+
desktop: {
|
|
35
|
+
k1xSpc: "x78zum5",
|
|
36
|
+
kGNEyG: "x1cy8zhl",
|
|
37
|
+
kOIVth: "xjcht0a",
|
|
38
|
+
k8WAf4: "x8o8v82",
|
|
39
|
+
kg3NbH: "xrrkdod",
|
|
40
|
+
kaIpWk: "xh6dtrn",
|
|
41
|
+
kybGjl: "x1hl2dhg",
|
|
42
|
+
kkrTdU: "x1ypdohk",
|
|
43
|
+
k1ekBW: "x15406qy",
|
|
44
|
+
kIyJzY: "xuedmi6",
|
|
45
|
+
kAMwcw: "xlr8y92",
|
|
46
|
+
kWkggS: "xjbqb8w xe9uy6x xyxi2l3",
|
|
47
|
+
kMwMTN: "x1heor9g",
|
|
48
|
+
kMv6JI: "xjb2p0i",
|
|
49
|
+
k9WMMc: "x1yc453h",
|
|
50
|
+
kB7OPa: "x9f619",
|
|
51
|
+
kzqmXN: "xh8yej3",
|
|
52
|
+
$$css: true
|
|
53
|
+
},
|
|
33
54
|
drawerItem: {
|
|
34
55
|
kZCmMZ: "x31w388",
|
|
35
56
|
kGNEyG: "x1cy8zhl",
|
|
@@ -134,9 +155,7 @@ export function TopNavMegaMenuItem({
|
|
|
134
155
|
href: href,
|
|
135
156
|
onClick: onClick,
|
|
136
157
|
tabIndex: tabIndex,
|
|
137
|
-
...mergeProps(themeProps('top-nav-mega-menu-item'),
|
|
138
|
-
className: "x78zum5 x1cy8zhl xjcht0a x8o8v82 xrrkdod xh6dtrn x1hl2dhg x1ypdohk x15406qy xuedmi6 xlr8y92 xjbqb8w xe9uy6x xyxi2l3 x17nn4n9 x1wfwxd8 x7s97pk x1heor9g xjb2p0i x1yc453h x9f619 xh8yej3"
|
|
139
|
-
}),
|
|
158
|
+
...mergeProps(themeProps('top-nav-mega-menu-item'), focusOutlineProps.focusVisible(styles.desktop)),
|
|
140
159
|
children: [icon && /*#__PURE__*/_jsx("div", {
|
|
141
160
|
...{
|
|
142
161
|
className: "x78zum5 x6s0dn4 xl56j7k x100vrsf x1vqgdyp xh6dtrn x17x4s8c x2lah0s xv9yike"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopNavMenu.d.ts","sourceRoot":"","sources":["../../src/TopNav/TopNavMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,EAKZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAQf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"TopNavMenu.d.ts","sourceRoot":"","sources":["../../src/TopNav/TopNavMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,EAKZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAQf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA8L5C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAMD,MAAM,WAAW,eAAgB,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IACnE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAE5B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,wBAAgB,UAAU,CAAC,EACzB,GAAG,EACH,KAAK,EACL,KAAK,EACL,KAAW,EACX,SAAe,GAChB,EAAE,eAAe,4BAkOjB;yBAxOe,UAAU"}
|
|
@@ -21,7 +21,7 @@ import { usePopover } from "../Popover/usePopover.js";
|
|
|
21
21
|
import { useMenuHover } from "../hooks/useMenuHover.js";
|
|
22
22
|
import { useListFocus } from "../hooks/useListFocus.js";
|
|
23
23
|
import { useTypeahead } from "../hooks/useTypeahead.js";
|
|
24
|
-
import {
|
|
24
|
+
import { Icon } from "../Icon/index.js";
|
|
25
25
|
import { mergeProps, mergeRefs } from "../utils/index.js";
|
|
26
26
|
import { navItemStyles } from "../NavItem/navItemStyles.stylex.js";
|
|
27
27
|
import { useTopNavSlot } from "./TopNavContext.js";
|
|
@@ -29,6 +29,7 @@ import { useTopNavRenderMode } from "./TopNavRenderContext.js";
|
|
|
29
29
|
import { useAppShellMobile } from "../AppShell/AppShellMobileContext.js";
|
|
30
30
|
import { useLinkComponent } from "../Link/useLinkComponent.js";
|
|
31
31
|
import { themeProps } from "../utils/themeProps.js";
|
|
32
|
+
import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
|
|
32
33
|
import "../theme/tokens.stylex.js";
|
|
33
34
|
import { colorVars, spacingVars, radiusVars, durationVars, easeVars, fontWeightVars, typeScaleVars } from "../theme/tokens.stylex.js";
|
|
34
35
|
|
|
@@ -37,8 +38,59 @@ import { colorVars, spacingVars, radiusVars, durationVars, easeVars, fontWeightV
|
|
|
37
38
|
// =============================================================================
|
|
38
39
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
39
40
|
const styles = {
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
trigger: {
|
|
42
|
+
k1xSpc: "x3nfvp2",
|
|
43
|
+
kGNEyG: "x6s0dn4",
|
|
44
|
+
kOIVth: "x1txdalj",
|
|
45
|
+
k8WAf4: "x1vofgu7",
|
|
46
|
+
kg3NbH: "xrrkdod",
|
|
47
|
+
kaIpWk: "xh6dtrn",
|
|
48
|
+
kGuDYH: "xcr08ib",
|
|
49
|
+
kLWn49: "x1kq96og",
|
|
50
|
+
k63SB2: "x1e4wzip",
|
|
51
|
+
kMwMTN: "xv1l7n4",
|
|
52
|
+
kybGjl: "x1hl2dhg",
|
|
53
|
+
kkrTdU: "x1ypdohk",
|
|
54
|
+
k1ekBW: "xs2xxs2",
|
|
55
|
+
kIyJzY: "xuedmi6",
|
|
56
|
+
kAMwcw: "xlr8y92",
|
|
57
|
+
kWkggS: "xjbqb8w xe9uy6x",
|
|
58
|
+
kMv6JI: "xjb2p0i",
|
|
59
|
+
$$css: true
|
|
60
|
+
},
|
|
61
|
+
triggerOpen: {
|
|
62
|
+
kMwMTN: "x1tgivj0",
|
|
63
|
+
kWkggS: "x1lmrjuc",
|
|
64
|
+
$$css: true
|
|
65
|
+
},
|
|
66
|
+
chevron: {
|
|
67
|
+
k1xSpc: "x3nfvp2",
|
|
68
|
+
kGNEyG: "x6s0dn4",
|
|
69
|
+
kzqmXN: "x15vhz18",
|
|
70
|
+
kZKoxP: "xlzyvqe",
|
|
71
|
+
kGuDYH: "x1qlqyl8",
|
|
72
|
+
k1ekBW: "x11xpdln",
|
|
73
|
+
kIyJzY: "xuedmi6",
|
|
74
|
+
kAMwcw: "xlr8y92",
|
|
75
|
+
$$css: true
|
|
76
|
+
},
|
|
77
|
+
chevronOpen: {
|
|
78
|
+
k3aq6I: "x19jd1h0",
|
|
79
|
+
$$css: true
|
|
80
|
+
},
|
|
81
|
+
menuItem: {
|
|
82
|
+
k1xSpc: "x78zum5",
|
|
83
|
+
kGNEyG: "x6s0dn4",
|
|
84
|
+
kOIVth: "xjcht0a",
|
|
85
|
+
k8WAf4: "x8o8v82",
|
|
86
|
+
kg3NbH: "xrrkdod",
|
|
87
|
+
kaIpWk: "xh6dtrn",
|
|
88
|
+
kybGjl: "x1hl2dhg",
|
|
89
|
+
kkrTdU: "x1ypdohk",
|
|
90
|
+
k1ekBW: "x15406qy",
|
|
91
|
+
kIyJzY: "xuedmi6",
|
|
92
|
+
kAMwcw: "xlr8y92",
|
|
93
|
+
kWkggS: "xjbqb8w xe9uy6x",
|
|
42
94
|
$$css: true
|
|
43
95
|
}
|
|
44
96
|
};
|
|
@@ -47,6 +99,20 @@ const drawerStyles = {
|
|
|
47
99
|
kjj79g: "x1qughib",
|
|
48
100
|
$$css: true
|
|
49
101
|
},
|
|
102
|
+
chevron: {
|
|
103
|
+
k1xSpc: "x3nfvp2",
|
|
104
|
+
kzqmXN: "x15vhz18",
|
|
105
|
+
kZKoxP: "xlzyvqe",
|
|
106
|
+
kGuDYH: "x1qlqyl8",
|
|
107
|
+
k1ekBW: "x11xpdln",
|
|
108
|
+
kIyJzY: "xuedmi6",
|
|
109
|
+
kAMwcw: "xlr8y92",
|
|
110
|
+
$$css: true
|
|
111
|
+
},
|
|
112
|
+
chevronExpanded: {
|
|
113
|
+
k3aq6I: "x19jd1h0",
|
|
114
|
+
$$css: true
|
|
115
|
+
},
|
|
50
116
|
item: {
|
|
51
117
|
kZCmMZ: "x31w388",
|
|
52
118
|
kybGjl: "x1hl2dhg",
|
|
@@ -113,7 +179,6 @@ export function TopNavMenu({
|
|
|
113
179
|
hideDelay = 200
|
|
114
180
|
}) {
|
|
115
181
|
const renderMode = useTopNavRenderMode();
|
|
116
|
-
const chevronDownIcon = useIcon('chevronDown');
|
|
117
182
|
const {
|
|
118
183
|
closeMobileNav
|
|
119
184
|
} = useAppShellMobile();
|
|
@@ -126,8 +191,7 @@ export function TopNavMenu({
|
|
|
126
191
|
// The popup's own role="menu" is the exposed semantics; a modal dialog
|
|
127
192
|
// wrapper would announce an unnamed dialog around the menu and make the
|
|
128
193
|
// trigger claim aria-haspopup="dialog" for menu content (see TabMenu).
|
|
129
|
-
role: 'none'
|
|
130
|
-
xstyle: styles.menuOffset
|
|
194
|
+
role: 'none'
|
|
131
195
|
});
|
|
132
196
|
const {
|
|
133
197
|
triggerProps,
|
|
@@ -209,16 +273,11 @@ export function TopNavMenu({
|
|
|
209
273
|
"aria-expanded": drawerExpanded,
|
|
210
274
|
"aria-controls": `${menuId}-items`,
|
|
211
275
|
...stylex.props(navItemStyles.item, drawerStyles.header),
|
|
212
|
-
children: [label, /*#__PURE__*/_jsx(
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
1: {
|
|
218
|
-
className: "x3nfvp2 x11xpdln xuedmi6 xlr8y92 x19jd1h0"
|
|
219
|
-
}
|
|
220
|
-
}[!!drawerExpanded << 0],
|
|
221
|
-
children: chevronDownIcon
|
|
276
|
+
children: [label, /*#__PURE__*/_jsx(Icon, {
|
|
277
|
+
icon: "chevronDown",
|
|
278
|
+
size: "sm",
|
|
279
|
+
color: "inherit",
|
|
280
|
+
xstyle: [drawerStyles.chevron, drawerExpanded && drawerStyles.chevronExpanded]
|
|
222
281
|
})]
|
|
223
282
|
}), /*#__PURE__*/_jsx("div", {
|
|
224
283
|
id: `${menuId}-items`,
|
|
@@ -270,24 +329,12 @@ export function TopNavMenu({
|
|
|
270
329
|
type: "button",
|
|
271
330
|
...popover.triggerProps,
|
|
272
331
|
...triggerProps,
|
|
273
|
-
...mergeProps(themeProps('top-nav-menu'),
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
}
|
|
280
|
-
}[!!popover.isOpen << 0]),
|
|
281
|
-
children: [label, /*#__PURE__*/_jsx("span", {
|
|
282
|
-
...{
|
|
283
|
-
0: {
|
|
284
|
-
className: "x3nfvp2 x6s0dn4 x11xpdln xuedmi6 xlr8y92"
|
|
285
|
-
},
|
|
286
|
-
1: {
|
|
287
|
-
className: "x3nfvp2 x6s0dn4 x11xpdln xuedmi6 xlr8y92 x19jd1h0"
|
|
288
|
-
}
|
|
289
|
-
}[!!popover.isOpen << 0],
|
|
290
|
-
children: chevronDownIcon
|
|
332
|
+
...mergeProps(themeProps('top-nav-menu'), focusOutlineProps.focusVisible(styles.trigger, popover.isOpen && styles.triggerOpen)),
|
|
333
|
+
children: [label, /*#__PURE__*/_jsx(Icon, {
|
|
334
|
+
icon: "chevronDown",
|
|
335
|
+
size: "sm",
|
|
336
|
+
color: "inherit",
|
|
337
|
+
xstyle: [styles.chevron, popover.isOpen && styles.chevronOpen]
|
|
291
338
|
})]
|
|
292
339
|
}), popover.render(/*#__PURE__*/_jsx("div", {
|
|
293
340
|
ref: setMenuRef,
|
|
@@ -312,9 +359,7 @@ export function TopNavMenu({
|
|
|
312
359
|
tabIndex: -1,
|
|
313
360
|
href: item.href,
|
|
314
361
|
onClick: item.onClick,
|
|
315
|
-
...
|
|
316
|
-
className: "x78zum5 x6s0dn4 xjcht0a x8o8v82 xrrkdod xh6dtrn x1hl2dhg x1ypdohk x15406qy xuedmi6 xlr8y92 xjbqb8w xe9uy6x x17nn4n9 x1wfwxd8 x7s97pk"
|
|
317
|
-
},
|
|
362
|
+
...focusOutlineProps.focusVisible(styles.menuItem),
|
|
318
363
|
children: [/*#__PURE__*/_jsx("div", {
|
|
319
364
|
...{
|
|
320
365
|
className: "x78zum5 x6s0dn4 xl56j7k x100vrsf x1vqgdyp xh6dtrn x17x4s8c x2lah0s"
|
|
@@ -341,7 +386,7 @@ export function TopNavMenu({
|
|
|
341
386
|
}), {
|
|
342
387
|
placement: 'below',
|
|
343
388
|
alignment: slot,
|
|
344
|
-
|
|
389
|
+
offset: spacingVars['--spacing-1']
|
|
345
390
|
})]
|
|
346
391
|
});
|
|
347
392
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeList.d.ts","sourceRoot":"","sources":["../../src/TreeList/TreeList.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAwC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAI5E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAQzB,OAAO,EAAC,KAAK,eAAe,EAAE,KAAK,eAAe,EAAC,MAAM,iBAAiB,CAAC;AAE3E,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC9D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;;OAGG;IACH,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAE1B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;IAE1B;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;IAE1B;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"TreeList.d.ts","sourceRoot":"","sources":["../../src/TreeList/TreeList.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAwC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAI5E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAQzB,OAAO,EAAC,KAAK,eAAe,EAAE,KAAK,eAAe,EAAC,MAAM,iBAAiB,CAAC;AAE3E,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC9D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;;OAGG;IACH,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAE1B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;IAE1B;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;IAE1B;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAmFD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,OAAoB,EACpB,OAAsB,EACtB,MAAM,EACN,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,GACJ,EAAE,aAAa,+BAoKf;yBA9Ke,QAAQ"}
|
|
@@ -35,6 +35,7 @@ const styles = {
|
|
|
35
35
|
root: {
|
|
36
36
|
kVAEAm: "x1n2onr6",
|
|
37
37
|
"--tree-list-indent": "xpa4xmd",
|
|
38
|
+
"--tree-list-row-gap": "x1xbi2jf",
|
|
38
39
|
$$css: true
|
|
39
40
|
}
|
|
40
41
|
};
|
|
@@ -176,7 +177,18 @@ export function TreeList({
|
|
|
176
177
|
onActivate: activateItem,
|
|
177
178
|
hasRovingTabIndex: true
|
|
178
179
|
});
|
|
180
|
+
const hasExpandableItems = items.some(item => item.children != null && item.children.length > 0);
|
|
179
181
|
function renderItems(items, nestedLevel, ancestorsIsLast) {
|
|
182
|
+
// A leaf reserves the chevron column (so its label lines up under a parent's
|
|
183
|
+
// caret) whenever the tree contains ANY expandable item — i.e. whenever a
|
|
184
|
+
// caret exists somewhere to align under. This is a whole-tree property, not
|
|
185
|
+
// a per-group one: a leaf nested under an expandable ancestor must still
|
|
186
|
+
// reserve the column so it stays indented past its parent's label, even if
|
|
187
|
+
// its own immediate group happens to be all leaves. Only a fully flat tree
|
|
188
|
+
// (no expandable items anywhere) has no caret to align under, so its rows
|
|
189
|
+
// sit flush. Because any expandable descendant forces its whole ancestor
|
|
190
|
+
// chain to be expandable, "the tree has an expandable item" is equivalent to
|
|
191
|
+
// "the root group has an expandable item" — checked once at the root.
|
|
180
192
|
return items.map((item, index) => {
|
|
181
193
|
const isLast = index === items.length - 1;
|
|
182
194
|
const isExpanded = expandedKeysOverride.has(item.id) ? expandedKeysOverride.get(item.id) ?? false : expandedKeysFromProps.has(item.id);
|
|
@@ -190,6 +202,7 @@ export function TreeList({
|
|
|
190
202
|
startContent: item.startContent,
|
|
191
203
|
endContent: item.endContent,
|
|
192
204
|
hasChildren: hasChildren,
|
|
205
|
+
hasExpandableItems: hasExpandableItems,
|
|
193
206
|
onClick: item.onClick,
|
|
194
207
|
href: item.href,
|
|
195
208
|
target: item.target,
|
|
@@ -12,7 +12,7 @@ interface TreeListBranchesProps {
|
|
|
12
12
|
* `backgroundColor` or `display: 'none'`) instead of hiding the built-in guides
|
|
13
13
|
* and reimplementing them.
|
|
14
14
|
*/
|
|
15
|
-
export declare function TreeListBranches({ ancestorsIsLast, isLast
|
|
15
|
+
export declare function TreeListBranches({ ancestorsIsLast, isLast, nestedLevel, }: TreeListBranchesProps): import("react").JSX.Element;
|
|
16
16
|
export declare namespace TreeListBranches {
|
|
17
17
|
var displayName: string;
|
|
18
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeListBranches.d.ts","sourceRoot":"","sources":["../../src/TreeList/TreeListBranches.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TreeListBranches.d.ts","sourceRoot":"","sources":["../../src/TreeList/TreeListBranches.tsx"],"names":[],"mappings":"AAwEA,UAAU,qBAAqB;IAC7B,eAAe,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,eAAe,EACf,MAAM,EACN,WAAW,GACZ,EAAE,qBAAqB,+BAsDvB;yBA1De,gBAAgB"}
|