@astryxdesign/core 0.4.7 → 0.5.0-canary.009bcb3
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 +161 -1
- package/dist/AlertDialog/AlertDialog.d.ts +1 -1
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +45 -20
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +3 -2
- package/dist/AspectRatio/AspectRatio.d.ts +24 -0
- package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
- package/dist/AspectRatio/AspectRatio.js +23 -4
- package/dist/Avatar/Avatar.d.ts +25 -1
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +58 -19
- package/dist/Avatar/index.d.ts +2 -2
- package/dist/Avatar/index.d.ts.map +1 -1
- package/dist/Avatar/index.js +1 -1
- package/dist/AvatarGroup/AvatarGroup.d.ts +9 -2
- package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroup.js +8 -4
- package/dist/AvatarGroup/AvatarGroupContext.d.ts +2 -1
- package/dist/AvatarGroup/AvatarGroupContext.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +10 -6
- package/dist/Banner/Banner.d.ts +49 -15
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +62 -20
- package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheet.js +17 -4
- package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetSwitcher.js +3 -2
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +11 -10
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +11 -6
- package/dist/ButtonGroup/ButtonGroup.d.ts +5 -1
- package/dist/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/dist/ButtonGroup/ButtonGroup.js +26 -7
- package/dist/Calendar/Calendar.d.ts +7 -3
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +21 -23
- package/dist/Calendar/getInitialFocusDate.d.ts +46 -0
- package/dist/Calendar/getInitialFocusDate.d.ts.map +1 -0
- package/dist/Calendar/getInitialFocusDate.js +62 -0
- package/dist/Calendar/styles.d.ts +5 -14
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +15 -15
- package/dist/Card/Card.d.ts +12 -12
- package/dist/Card/Card.d.ts.map +1 -1
- package/dist/Card/Card.js +17 -9
- package/dist/Card/index.d.ts +35 -1
- package/dist/Card/index.d.ts.map +1 -1
- package/dist/Card/index.js +21 -1
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +3 -3
- package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +2 -3
- package/dist/Chat/ChatLayout.d.ts.map +1 -1
- package/dist/Chat/ChatLayout.js +3 -3
- package/dist/Chat/ChatMessageList.d.ts +22 -3
- package/dist/Chat/ChatMessageList.d.ts.map +1 -1
- package/dist/Chat/ChatMessageList.js +6 -3
- package/dist/Chat/ChatTokenizedText.d.ts +2 -0
- package/dist/Chat/ChatTokenizedText.d.ts.map +1 -1
- package/dist/Chat/ChatTokenizedText.js +11 -6
- package/dist/Chat/useChatComposerTokens.js +1 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +10 -3
- package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
- package/dist/ClickableCard/ClickableCard.js +3 -3
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +15 -4
- package/dist/CodeBlock/highlightRanges.js +1 -1
- package/dist/CodeBlock/highlightStyles.js +13 -13
- package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteInput.js +3 -2
- package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteItem.js +3 -2
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +1 -3
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +4 -3
- package/dist/DateInput/DateInput.d.ts +43 -0
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +22 -2
- package/dist/DateInput/NativeDateField.d.ts +10 -0
- package/dist/DateInput/NativeDateField.d.ts.map +1 -0
- package/dist/DateInput/NativeDateField.js +494 -0
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +82 -23
- package/dist/DateInput/index.d.ts +1 -1
- package/dist/DateInput/index.d.ts.map +1 -1
- package/dist/DateInput/nativeDateSegments.d.ts +22 -0
- package/dist/DateInput/nativeDateSegments.d.ts.map +1 -0
- package/dist/DateInput/nativeDateSegments.js +111 -0
- package/dist/DateRangeInput/DateRangeInput.d.ts +4 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts +21 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +406 -12
- package/dist/DateTimeInput/index.d.ts +1 -1
- package/dist/DateTimeInput/index.d.ts.map +1 -1
- package/dist/Dialog/Dialog.d.ts +21 -1
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +110 -58
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +4 -13
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.js +6 -5
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +9 -1
- package/dist/Field/InputClearButton.d.ts +9 -3
- package/dist/Field/InputClearButton.d.ts.map +1 -1
- package/dist/Field/InputClearButton.js +14 -3
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +3 -2
- package/dist/Heading/Heading.d.ts.map +1 -1
- package/dist/Heading/Heading.js +6 -3
- package/dist/HoverCard/HoverCard.d.ts +6 -0
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +104 -3
- package/dist/HoverCard/useHoverCard.d.ts +19 -2
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +74 -26
- package/dist/Indicator/CheckboxIndicator.d.ts.map +1 -1
- package/dist/Indicator/CheckboxIndicator.js +6 -2
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +4 -2
- package/dist/Kbd/Kbd.d.ts.map +1 -1
- package/dist/Kbd/Kbd.js +2 -19
- package/dist/Layer/LayerDepthContext.d.ts +52 -0
- package/dist/Layer/LayerDepthContext.d.ts.map +1 -0
- package/dist/Layer/LayerDepthContext.js +66 -0
- package/dist/Layer/gestureCounter.d.ts +8 -0
- package/dist/Layer/gestureCounter.d.ts.map +1 -0
- package/dist/Layer/gestureCounter.js +53 -0
- package/dist/Layer/index.d.ts +3 -0
- package/dist/Layer/index.d.ts.map +1 -1
- package/dist/Layer/index.js +4 -0
- package/dist/Layer/layerStack.d.ts +98 -0
- package/dist/Layer/layerStack.d.ts.map +1 -0
- package/dist/Layer/layerStack.js +306 -0
- package/dist/Layer/useLayer.d.ts +23 -13
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +128 -8
- package/dist/Layer/useLayerDismissal.d.ts +93 -0
- package/dist/Layer/useLayerDismissal.d.ts.map +1 -0
- package/dist/Layer/useLayerDismissal.js +91 -0
- package/dist/Lightbox/Lightbox.d.ts +1 -0
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +103 -81
- package/dist/List/List.d.ts +1 -1
- package/dist/List/List.d.ts.map +1 -1
- package/dist/List/List.js +15 -4
- package/dist/Markdown/Markdown.d.ts +1 -1
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +20 -7
- package/dist/Markdown/index.d.ts +1 -1
- package/dist/Markdown/index.d.ts.map +1 -1
- package/dist/Markdown/parser.d.ts +38 -1
- package/dist/Markdown/parser.d.ts.map +1 -1
- package/dist/Markdown/parser.js +182 -32
- package/dist/MetadataList/MetadataListItem.d.ts +1 -1
- package/dist/MetadataList/MetadataListItem.d.ts.map +1 -1
- package/dist/MetadataList/MetadataListItem.js +4 -1
- package/dist/MobileNav/MobileNav.d.ts +6 -1
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +61 -36
- package/dist/MultiSelector/MultiSelector.d.ts +32 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +73 -15
- package/dist/MultiSelector/hooks.d.ts +7 -1
- package/dist/MultiSelector/hooks.d.ts.map +1 -1
- package/dist/MultiSelector/hooks.js +3 -2
- package/dist/MultiSelector/index.d.ts +1 -1
- package/dist/MultiSelector/index.d.ts.map +1 -1
- package/dist/NavIcon/NavIcon.d.ts.map +1 -1
- package/dist/NavIcon/NavIcon.js +5 -1
- package/dist/NavMenu/NavHeadingMenu.d.ts +1 -1
- package/dist/NavMenu/NavHeadingMenu.d.ts.map +1 -1
- package/dist/NavMenu/NavHeadingMenu.js +9 -5
- package/dist/NumberInput/NumberInput.d.ts +6 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +54 -104
- package/dist/NumberInput/numberInputCommit.d.ts +34 -0
- package/dist/NumberInput/numberInputCommit.d.ts.map +1 -0
- package/dist/NumberInput/numberInputCommit.js +71 -0
- package/dist/NumberInput/numberParser.d.ts +64 -0
- package/dist/NumberInput/numberParser.d.ts.map +1 -0
- package/dist/NumberInput/numberParser.js +350 -0
- package/dist/Outline/Outline.d.ts.map +1 -1
- package/dist/Outline/Outline.js +3 -2
- package/dist/OverflowList/OverflowList.d.ts.map +1 -1
- package/dist/OverflowList/OverflowList.js +3 -2
- package/dist/Overlay/Overlay.d.ts.map +1 -1
- package/dist/Overlay/Overlay.js +3 -2
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +1 -9
- package/dist/Popover/usePopover.d.ts +7 -41
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +40 -21
- package/dist/PowerSearch/PowerSearch.d.ts +8 -2
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +19 -6
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts +3 -1
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.js +28 -6
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts +3 -1
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchValueEditor.js +110 -27
- package/dist/PowerSearch/types.d.ts +2 -0
- package/dist/PowerSearch/types.d.ts.map +1 -1
- package/dist/PowerSearch/usePowerSearchSource.d.ts +6 -1
- package/dist/PowerSearch/usePowerSearchSource.d.ts.map +1 -1
- package/dist/PowerSearch/usePowerSearchSource.js +14 -5
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +18 -5
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +3 -2
- package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControl.js +3 -2
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +12 -3
- package/dist/Selector/Selector.d.ts +18 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +91 -18
- package/dist/Selector/hooks.d.ts +7 -1
- package/dist/Selector/hooks.d.ts.map +1 -1
- package/dist/Selector/hooks.js +3 -2
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +4 -3
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +8 -7
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +4 -3
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +37 -5
- package/dist/Spinner/Spinner.d.ts +3 -3
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +130 -78
- package/dist/StatusDot/StatusDot.d.ts.map +1 -1
- package/dist/StatusDot/StatusDot.js +6 -1
- package/dist/Stepper/Step.d.ts +140 -0
- package/dist/Stepper/Step.d.ts.map +1 -0
- package/dist/Stepper/Step.js +1045 -0
- package/dist/Stepper/StepStatus.d.ts +24 -0
- package/dist/Stepper/StepStatus.d.ts.map +1 -0
- package/dist/Stepper/StepStatus.js +1 -0
- package/dist/Stepper/Stepper.d.ts +93 -0
- package/dist/Stepper/Stepper.d.ts.map +1 -0
- package/dist/Stepper/Stepper.js +184 -0
- package/dist/Stepper/StepperContext.d.ts +41 -0
- package/dist/Stepper/StepperContext.d.ts.map +1 -0
- package/dist/Stepper/StepperContext.js +34 -0
- package/dist/Stepper/index.d.ts +8 -0
- package/dist/Stepper/index.d.ts.map +1 -0
- package/dist/Stepper/index.js +7 -0
- package/dist/Stepper/stepper.stylex.d.ts +15 -0
- package/dist/Stepper/stepper.stylex.d.ts.map +1 -0
- package/dist/Stepper/stepper.stylex.js +20 -0
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +8 -3
- package/dist/TabList/Tab.d.ts +15 -2
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +32 -7
- package/dist/TabList/TabList.d.ts +46 -7
- package/dist/TabList/TabList.d.ts.map +1 -1
- package/dist/TabList/TabList.js +353 -23
- package/dist/TabList/TabListContext.d.ts +11 -1
- package/dist/TabList/TabListContext.d.ts.map +1 -1
- package/dist/TabList/TabListContext.js +11 -2
- package/dist/TabList/TabMenu.d.ts.map +1 -1
- package/dist/TabList/TabMenu.js +3 -2
- package/dist/TabList/index.d.ts +2 -2
- package/dist/TabList/index.d.ts.map +1 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +10 -2
- package/dist/Table/Table.d.ts.map +1 -1
- package/dist/Table/Table.js +3 -6
- package/dist/Table/TableRow.d.ts +16 -5
- package/dist/Table/TableRow.d.ts.map +1 -1
- package/dist/Table/TableRow.js +16 -5
- package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
- package/dist/Table/plugins/filtering/useTableFiltering.js +73 -4
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +26 -0
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +54 -11
- package/dist/Table/plugins/pagination/useTablePagination.d.ts +3 -0
- package/dist/Table/plugins/pagination/useTablePagination.d.ts.map +1 -1
- package/dist/Table/plugins/pagination/useTablePagination.js +21 -4
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +7 -2
- package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts.map +1 -1
- package/dist/Table/plugins/rowStatus/useTableRowStatus.js +10 -3
- package/dist/Table/plugins/selection/useTableSelection.d.ts +16 -0
- package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
- package/dist/Table/plugins/selection/useTableSelection.js +43 -5
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +3 -4
- package/dist/Table/types.d.ts +22 -4
- package/dist/Table/types.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.js +5 -0
- package/dist/Text/Text.d.ts.map +1 -1
- package/dist/Text/Text.js +6 -3
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +16 -10
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +3 -2
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +3 -2
- package/dist/Timestamp/Timestamp.d.ts +1 -1
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +15 -21
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +22 -7
- package/dist/Toast/ToastViewport.d.ts +1 -0
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +71 -18
- package/dist/Token/Token.d.ts +1 -1
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +20 -9
- package/dist/Token/TokenLink.d.ts +1 -1
- package/dist/Token/TokenLink.d.ts.map +1 -1
- package/dist/Token/TokenLink.js +7 -4
- package/dist/Tokenizer/Tokenizer.d.ts +14 -1
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +33 -21
- package/dist/Tooltip/Tooltip.d.ts +5 -0
- package/dist/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.d.ts +5 -0
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +39 -24
- package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/TopNav/TopNavHeading.js +5 -4
- package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +31 -11
- package/dist/TopNav/TopNavMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +22 -7
- package/dist/TreeList/TreeList.d.ts +1 -1
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +7 -2
- package/dist/Typeahead/BaseTypeahead.d.ts +35 -0
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +119 -37
- package/dist/Typeahead/Typeahead.d.ts +8 -1
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +5 -2
- package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
- package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
- package/dist/Typeahead/TypeaheadItem.js +7 -2
- package/dist/astryx.css +113 -11
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useFocusTrap.d.ts +7 -4
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +60 -95
- package/dist/hooks/useHotkeys.d.ts.map +1 -1
- package/dist/hooks/useHotkeys.js +3 -18
- package/dist/hooks/useMergedRefs.d.ts +18 -0
- package/dist/hooks/useMergedRefs.d.ts.map +1 -0
- package/dist/hooks/useMergedRefs.js +25 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/theme/Theme.d.ts.map +1 -1
- package/dist/theme/Theme.js +46 -10
- package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +24 -4
- package/dist/theme/generateThemeRules.d.ts +21 -0
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +26 -0
- package/dist/theme/syntax/tokens.d.ts +1 -1
- package/dist/theme/syntax/tokens.d.ts.map +1 -1
- package/dist/theme/syntax/tokens.js +5 -2
- package/dist/utils/groupItems.d.ts +5 -1
- package/dist/utils/groupItems.d.ts.map +1 -1
- package/dist/utils/groupItems.js +9 -9
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/isApplePlatform.d.ts +18 -0
- package/dist/utils/isApplePlatform.d.ts.map +1 -0
- package/dist/utils/isApplePlatform.js +37 -0
- package/dist/utils/sharedResizeObserver.d.ts.map +1 -1
- package/dist/utils/sharedResizeObserver.js +10 -1
- package/dist/utils/timeParser.d.ts +1 -1
- package/dist/utils/timeParser.d.ts.map +1 -1
- package/dist/utils/timeParser.js +26 -12
- package/locales/af-ZA.json +6 -6
- package/locales/ar-SA.json +6 -6
- package/locales/ca-ES.json +5 -5
- package/locales/cs-CZ.json +6 -6
- package/locales/da-DK.json +6 -6
- package/locales/de-DE.json +6 -6
- package/locales/el-GR.json +6 -6
- package/locales/en.json +163 -11
- package/locales/es-ES.json +5 -5
- package/locales/fi-FI.json +6 -6
- package/locales/fr-FR.json +6 -6
- package/locales/he-IL.json +6 -6
- package/locales/hu-HU.json +6 -6
- package/locales/it-IT.json +6 -6
- package/locales/ja-JP.json +6 -6
- package/locales/ko-KR.json +6 -6
- package/locales/nl-NL.json +6 -6
- package/locales/no-NO.json +6 -6
- package/locales/pl-PL.json +6 -6
- package/locales/pseudo.json +114 -0
- package/locales/pt-BR.json +6 -6
- package/locales/pt-PT.json +6 -6
- package/locales/ro-RO.json +6 -6
- package/locales/ru-RU.json +6 -6
- package/locales/sr-SP.json +6 -6
- package/locales/sv-SE.json +6 -6
- package/locales/tr-TR.json +6 -6
- package/locales/uk-UA.json +6 -6
- package/locales/vi-VN.json +6 -6
- package/locales/zh-CN.json +6 -6
- package/locales/zh-TW.json +6 -6
- package/package.json +8 -3
- package/src/AlertDialog/AlertDialog.doc.mjs +114 -30
- package/src/AlertDialog/AlertDialog.test.tsx +211 -2
- package/src/AlertDialog/AlertDialog.tsx +62 -20
- package/src/AppShell/AppShell.tsx +3 -2
- package/src/AspectRatio/AspectRatio.doc.mjs +6 -3
- package/src/AspectRatio/AspectRatio.test.tsx +57 -10
- package/src/AspectRatio/AspectRatio.tsx +40 -1
- package/src/Avatar/Avatar.doc.mjs +14 -3
- package/src/Avatar/Avatar.test.tsx +97 -0
- package/src/Avatar/Avatar.tsx +125 -52
- package/src/Avatar/index.ts +2 -2
- package/src/AvatarGroup/AvatarGroup.doc.mjs +8 -2
- package/src/AvatarGroup/AvatarGroup.test.tsx +24 -0
- package/src/AvatarGroup/AvatarGroup.tsx +15 -6
- package/src/AvatarGroup/AvatarGroupContext.ts +5 -3
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +10 -4
- package/src/Banner/Banner.doc.mjs +22 -11
- package/src/Banner/Banner.test.tsx +177 -25
- package/src/Banner/Banner.tsx +93 -27
- package/src/BottomSheet/BottomSheet.test.tsx +123 -0
- package/src/BottomSheet/BottomSheet.tsx +17 -4
- package/src/BottomSheet/BottomSheetSwitcher.tsx +3 -2
- package/src/Breadcrumbs/BreadcrumbItem.tsx +9 -5
- package/src/Button/Button.doc.mjs +24 -1
- package/src/Button/Button.test.tsx +32 -4
- package/src/Button/Button.tsx +12 -5
- package/src/ButtonGroup/ButtonGroup.doc.mjs +10 -1
- package/src/ButtonGroup/ButtonGroup.test.tsx +404 -1
- package/src/ButtonGroup/ButtonGroup.tsx +23 -5
- package/src/Calendar/Calendar.doc.mjs +7 -6
- package/src/Calendar/Calendar.test.tsx +143 -0
- package/src/Calendar/Calendar.tsx +30 -26
- package/src/Calendar/getInitialFocusDate.test.ts +94 -0
- package/src/Calendar/getInitialFocusDate.ts +93 -0
- package/src/Calendar/styles.ts +49 -31
- package/src/Card/Card.doc.mjs +10 -7
- package/src/Card/Card.test.tsx +113 -19
- package/src/Card/Card.tsx +67 -89
- package/src/Card/index.ts +36 -1
- package/src/Carousel/Carousel.tsx +3 -2
- package/src/Chat/ChatComposerInput.tsx +5 -1
- package/src/Chat/ChatLayout.tsx +3 -2
- package/src/Chat/ChatMessageList.doc.mjs +9 -1
- package/src/Chat/ChatMessageList.test.tsx +46 -0
- package/src/Chat/ChatMessageList.tsx +28 -4
- package/src/Chat/ChatTokenizedText.tsx +17 -10
- package/src/Chat/useChatComposerTokens.ts +1 -1
- package/src/CheckboxInput/CheckboxInput.doc.mjs +2 -0
- package/src/CheckboxInput/CheckboxInput.test.tsx +15 -0
- package/src/CheckboxInput/CheckboxInput.tsx +8 -2
- package/src/ClickableCard/ClickableCard.tsx +3 -2
- package/src/CodeBlock/CodeBlock.doc.mjs +16 -4
- package/src/CodeBlock/CodeBlock.test.tsx +37 -0
- package/src/CodeBlock/CodeBlock.tsx +20 -4
- package/src/CodeBlock/highlightRanges.ts +1 -1
- package/src/CodeBlock/highlightStyles.ts +13 -13
- package/src/CommandPalette/CommandPaletteInput.tsx +3 -2
- package/src/CommandPalette/CommandPaletteItem.tsx +3 -2
- package/src/ComplexSelector/ComplexSelector.test.tsx +32 -0
- package/src/ComplexSelector/ComplexSelector.tsx +1 -3
- package/src/ContextMenu/ContextMenu.doc.mjs +5 -0
- package/src/ContextMenu/ContextMenu.tsx +4 -3
- package/src/DateInput/DateInput.doc.mjs +16 -0
- package/src/DateInput/DateInput.tsx +55 -2
- package/src/DateInput/DateInputTouch.test.tsx +146 -32
- package/src/DateInput/NativeDateField.test.tsx +635 -0
- package/src/DateInput/NativeDateField.tsx +641 -0
- package/src/DateInput/TouchDateField.tsx +108 -24
- package/src/DateInput/index.ts +1 -0
- package/src/DateInput/nativeDateSegments.ts +127 -0
- package/src/DateRangeInput/DateRangeInput.doc.mjs +2 -2
- package/src/DateRangeInput/DateRangeInput.test.tsx +22 -0
- package/src/DateRangeInput/DateRangeInput.tsx +4 -2
- package/src/DateTimeInput/DateTimeInput.doc.mjs +18 -0
- package/src/DateTimeInput/DateTimeInput.test.tsx +1088 -0
- package/src/DateTimeInput/DateTimeInput.tsx +556 -24
- package/src/DateTimeInput/index.ts +1 -0
- package/src/Dialog/Dialog.doc.mjs +8 -3
- package/src/Dialog/Dialog.test.tsx +429 -2
- package/src/Dialog/Dialog.tsx +133 -58
- package/src/DropdownMenu/DropdownMenu.doc.mjs +6 -0
- package/src/DropdownMenu/DropdownMenu.test.tsx +44 -10
- package/src/DropdownMenu/DropdownMenu.tsx +4 -13
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +8 -5
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +8 -11
- package/src/Field/Field.doc.mjs +13 -2
- package/src/Field/FieldLabel.test.tsx +29 -0
- package/src/Field/FieldLabel.tsx +7 -0
- package/src/Field/InputClearButton.test.tsx +15 -1
- package/src/Field/InputClearButton.tsx +28 -4
- package/src/FileInput/FileInput.tsx +3 -2
- package/src/Heading/Heading.test.tsx +23 -1
- package/src/Heading/Heading.tsx +6 -3
- package/src/HoverCard/HoverCard.doc.mjs +13 -2
- package/src/HoverCard/HoverCard.test.tsx +154 -4
- package/src/HoverCard/HoverCard.tsx +143 -3
- package/src/HoverCard/useHoverCard.tsx +104 -33
- package/src/Indicator/CheckboxIndicator.tsx +14 -8
- package/src/Indicator/Indicator.doc.mjs +2 -0
- package/src/Item/Item.tsx +5 -4
- package/src/Kbd/Kbd.tsx +2 -19
- package/src/Layer/LayerDepthContext.tsx +62 -0
- package/src/Layer/gestureCounter.ts +57 -0
- package/src/Layer/index.ts +9 -0
- package/src/Layer/layerDismissalFamilies.test.tsx +359 -0
- package/src/Layer/layerDismissalInvariants.test.tsx +417 -0
- package/src/Layer/layerStack.ts +362 -0
- package/src/Layer/useLayer.test.tsx +324 -15
- package/src/Layer/useLayer.tsx +164 -8
- package/src/Layer/useLayerDismissal.test.tsx +469 -0
- package/src/Layer/useLayerDismissal.ts +173 -0
- package/src/Layout/Layout.doc.mjs +2 -2
- package/src/Layout/__tests__/edgeCompensation.test.tsx +1 -1
- package/src/Lightbox/Lightbox.doc.mjs +12 -0
- package/src/Lightbox/Lightbox.tsx +124 -102
- package/src/Link/Link.doc.mjs +39 -0
- package/src/List/List.test.tsx +38 -0
- package/src/List/List.tsx +8 -1
- package/src/Markdown/Markdown.doc.mjs +5 -0
- package/src/Markdown/Markdown.test.tsx +37 -0
- package/src/Markdown/Markdown.tsx +16 -5
- package/src/Markdown/incremental.test.ts +16 -2
- package/src/Markdown/index.ts +1 -0
- package/src/Markdown/parser.perf.test.ts +96 -1
- package/src/Markdown/parser.test.ts +178 -2
- package/src/Markdown/parser.ts +253 -32
- package/src/MetadataList/MetadataList.test.tsx +75 -2
- package/src/MetadataList/MetadataListItem.tsx +5 -2
- package/src/MobileNav/MobileNav.tsx +62 -36
- package/src/MoreMenu/MoreMenu.doc.mjs +7 -1
- package/src/MultiSelector/MultiSelector.doc.mjs +49 -1
- package/src/MultiSelector/MultiSelector.test.tsx +311 -0
- package/src/MultiSelector/MultiSelector.tsx +151 -15
- package/src/MultiSelector/hooks.ts +9 -2
- package/src/MultiSelector/index.ts +1 -0
- package/src/NavIcon/NavIcon.doc.mjs +8 -2
- package/src/NavIcon/NavIcon.test.tsx +9 -0
- package/src/NavIcon/NavIcon.tsx +5 -1
- package/src/NavMenu/NavHeadingMenu.test.tsx +30 -0
- package/src/NavMenu/NavHeadingMenu.tsx +9 -5
- package/src/NumberInput/NumberInput.doc.mjs +31 -7
- package/src/NumberInput/NumberInput.test.tsx +436 -8
- package/src/NumberInput/NumberInput.tsx +62 -114
- package/src/NumberInput/numberInputCommit.test.ts +72 -0
- package/src/NumberInput/numberInputCommit.ts +103 -0
- package/src/NumberInput/numberParser.docblock.test.ts +234 -0
- package/src/NumberInput/numberParser.test.ts +222 -0
- package/src/NumberInput/numberParser.ts +403 -0
- package/src/Outline/Outline.tsx +3 -2
- package/src/OverflowList/OverflowList.tsx +3 -2
- package/src/Overlay/Overlay.tsx +3 -2
- package/src/Pagination/Pagination.test.tsx +3 -2
- package/src/Popover/Popover.test.tsx +14 -0
- package/src/Popover/Popover.tsx +1 -9
- package/src/Popover/usePopover.tsx +57 -32
- package/src/PowerSearch/PowerSearch.doc.mjs +160 -28
- package/src/PowerSearch/PowerSearch.test.tsx +240 -1
- package/src/PowerSearch/PowerSearch.tsx +34 -5
- package/src/PowerSearch/PowerSearchEditPopover.test.tsx +288 -0
- package/src/PowerSearch/PowerSearchEditPopover.tsx +29 -2
- package/src/PowerSearch/PowerSearchValueEditor.test.tsx +111 -1
- package/src/PowerSearch/PowerSearchValueEditor.tsx +124 -10
- package/src/PowerSearch/types.ts +2 -0
- package/src/PowerSearch/usePowerSearchSource.test.ts +82 -2
- package/src/PowerSearch/usePowerSearchSource.ts +13 -3
- package/src/ProgressBar/ProgressBar.doc.mjs +42 -6
- package/src/ProgressBar/ProgressBar.test.tsx +24 -0
- package/src/ProgressBar/ProgressBar.tsx +28 -8
- package/src/Resizable/ResizeHandle.tsx +3 -2
- package/src/SegmentedControl/SegmentedControl.tsx +3 -2
- package/src/SelectableCard/SelectableCard.doc.mjs +3 -0
- package/src/SelectableCard/SelectableCard.tsx +19 -2
- package/src/Selector/Selector.doc.mjs +26 -1
- package/src/Selector/Selector.test.tsx +346 -1
- package/src/Selector/Selector.tsx +148 -21
- package/src/Selector/hooks.ts +17 -2
- package/src/SideNav/SideNav.doc.mjs +6 -6
- package/src/SideNav/SideNav.tsx +4 -2
- package/src/SideNav/SideNavHeading.tsx +12 -12
- package/src/SideNav/SideNavItem.tsx +4 -2
- package/src/Slider/Slider.test.tsx +106 -1
- package/src/Slider/Slider.tsx +55 -3
- package/src/Spinner/Spinner.test.tsx +147 -1
- package/src/Spinner/Spinner.tsx +120 -101
- package/src/StatusDot/StatusDot.doc.mjs +8 -2
- package/src/StatusDot/StatusDot.test.tsx +9 -0
- package/src/StatusDot/StatusDot.tsx +7 -1
- package/src/Stepper/Step.doc.mjs +98 -0
- package/src/Stepper/Step.tsx +1638 -0
- package/src/Stepper/StepStatus.ts +26 -0
- package/src/Stepper/Stepper.doc.mjs +370 -0
- package/src/Stepper/Stepper.test.tsx +1024 -0
- package/src/Stepper/Stepper.tsx +258 -0
- package/src/Stepper/StepperContext.ts +71 -0
- package/src/Stepper/index.ts +18 -0
- package/src/Stepper/stepper.stylex.ts +19 -0
- package/src/Switch/Switch.doc.mjs +2 -0
- package/src/Switch/Switch.test.tsx +10 -0
- package/src/Switch/Switch.tsx +6 -2
- package/src/TabList/Tab.doc.mjs +13 -1
- package/src/TabList/Tab.tsx +67 -7
- package/src/TabList/TabList.doc.mjs +22 -6
- package/src/TabList/TabList.test.tsx +559 -0
- package/src/TabList/TabList.tsx +490 -22
- package/src/TabList/TabListContext.ts +13 -2
- package/src/TabList/TabMenu.tsx +3 -2
- package/src/TabList/index.ts +6 -2
- package/src/Table/BaseTable.tsx +12 -4
- package/src/Table/Table.doc.mjs +9 -2
- package/src/Table/Table.test.tsx +132 -14
- package/src/Table/Table.tsx +3 -8
- package/src/Table/TableBody.doc.mjs +40 -0
- package/src/Table/TableFooter.doc.mjs +40 -0
- package/src/Table/TableHeader.doc.mjs +40 -0
- package/src/Table/TableRow.tsx +16 -5
- package/src/Table/plugins/filtering/useTableFiltering.test.tsx +44 -6
- package/src/Table/plugins/filtering/useTableFiltering.tsx +100 -4
- package/src/Table/plugins/groupedRows/useTableGroupedRows-perf.test.tsx +112 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.test.tsx +100 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +67 -12
- package/src/Table/plugins/pagination/useTablePagination.test.tsx +34 -4
- package/src/Table/plugins/pagination/useTablePagination.tsx +35 -3
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +9 -2
- package/src/Table/plugins/rowStatus/useTableRowStatus.test.tsx +13 -7
- package/src/Table/plugins/rowStatus/useTableRowStatus.tsx +12 -3
- package/src/Table/plugins/selection/useTableSelection.test.tsx +138 -0
- package/src/Table/plugins/selection/useTableSelection.tsx +63 -7
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +1 -2
- package/src/Table/types.ts +22 -4
- package/src/Table/useBaseTablePlugins.ts +5 -0
- package/src/Table/useTableGroupedRows.doc.mjs +5 -4
- package/src/Table/useTablePagination.doc.mjs +7 -0
- package/src/Table/useTableRowStatus.doc.mjs +1 -1
- package/src/Table/useTableSelection.doc.mjs +31 -0
- package/src/Text/Text.test.tsx +67 -1
- package/src/Text/Text.tsx +6 -3
- package/src/TextArea/TextArea.doc.mjs +12 -2
- package/src/TextArea/TextArea.test.tsx +11 -0
- package/src/TextArea/TextArea.tsx +37 -24
- package/src/TextInput/TextInput.doc.mjs +10 -0
- package/src/TextInput/TextInput.tsx +3 -2
- package/src/Thumbnail/Thumbnail.doc.mjs +1 -1
- package/src/TimeInput/TimeInput.tsx +2 -2
- package/src/Timestamp/Timestamp.test.tsx +58 -0
- package/src/Timestamp/Timestamp.tsx +12 -10
- package/src/Toast/Toast.doc.mjs +26 -12
- package/src/Toast/Toast.tsx +28 -4
- package/src/Toast/ToastViewport.test.tsx +536 -8
- package/src/Toast/ToastViewport.tsx +81 -12
- package/src/Token/Token.test.tsx +95 -0
- package/src/Token/Token.tsx +15 -10
- package/src/Token/TokenLink.tsx +14 -5
- package/src/Tokenizer/Tokenizer.doc.mjs +43 -3
- package/src/Tokenizer/Tokenizer.test.tsx +161 -0
- package/src/Tokenizer/Tokenizer.tsx +53 -24
- package/src/Toolbar/Toolbar.doc.mjs +5 -0
- package/src/Tooltip/Tooltip.doc.mjs +5 -0
- package/src/Tooltip/Tooltip.test.tsx +32 -0
- package/src/Tooltip/Tooltip.tsx +5 -0
- package/src/Tooltip/useTooltip.tsx +47 -24
- package/src/TopNav/TopNavHeading.tsx +5 -4
- package/src/TopNav/TopNavMegaMenu.test.tsx +104 -0
- package/src/TopNav/TopNavMegaMenu.tsx +47 -5
- package/src/TopNav/TopNavMenu.test.tsx +133 -1
- package/src/TopNav/TopNavMenu.tsx +38 -7
- package/src/TreeList/TreeList.test.tsx +49 -0
- package/src/TreeList/TreeList.tsx +7 -2
- package/src/Typeahead/BaseTypeahead.doc.mjs +24 -0
- package/src/Typeahead/BaseTypeahead.tsx +181 -39
- package/src/Typeahead/Typeahead.doc.mjs +11 -0
- package/src/Typeahead/Typeahead.test.tsx +203 -0
- package/src/Typeahead/Typeahead.tsx +12 -2
- package/src/Typeahead/TypeaheadItem.test.tsx +43 -0
- package/src/Typeahead/TypeaheadItem.tsx +8 -1
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useAnnounce.doc.mjs +96 -0
- package/src/hooks/useContainerReveal.doc.mjs +2 -2
- package/src/hooks/useDevWarning.doc.mjs +96 -0
- package/src/hooks/useFocusTrap.test.tsx +14 -0
- package/src/hooks/useFocusTrap.ts +62 -111
- package/src/hooks/useFocusTrapEscapeShim.test.tsx +165 -0
- package/src/hooks/useHotkeys.ts +3 -18
- package/src/hooks/useIndicatorFocusRing.doc.mjs +104 -0
- package/src/hooks/useInputStatusIcon.doc.mjs +142 -0
- package/src/hooks/useInteractiveRole.doc.mjs +119 -0
- package/src/hooks/useLongPress.doc.mjs +123 -0
- package/src/hooks/useMergedRefs.doc.mjs +79 -0
- package/src/hooks/useMergedRefs.test.tsx +62 -0
- package/src/hooks/useMergedRefs.ts +36 -0
- package/src/hooks/useTypeahead.doc.mjs +153 -0
- package/src/index.ts +1 -0
- package/src/raw-import.d.ts +14 -0
- package/src/theme/MediaTheme.doc.mjs +5 -5
- package/src/theme/Theme.test.tsx +104 -2
- package/src/theme/Theme.tsx +49 -14
- package/src/theme/defineTheme.test.ts +23 -0
- package/src/theme/derivedVarRegistry.test.ts +26 -3
- package/src/theme/derivedVarRegistry.ts +23 -4
- package/src/theme/generateThemeRules.test.ts +99 -1
- package/src/theme/generateThemeRules.ts +28 -0
- package/src/theme/syntax/tokens.ts +5 -2
- package/src/utils/groupItems.ts +12 -6
- package/src/utils/index.ts +1 -1
- package/src/utils/isApplePlatform.test.ts +61 -0
- package/src/utils/isApplePlatform.ts +37 -0
- package/src/utils/sharedResizeObserver.ts +10 -2
- package/src/utils/timeParser.test.ts +6 -1
- package/src/utils/timeParser.ts +35 -13
- package/src/__tests__/inputWidthContract.test.tsx +0 -69
|
@@ -31,6 +31,7 @@ import {
|
|
|
31
31
|
type LayerTouchTrigger,
|
|
32
32
|
} from '../Layer/useTouchTrigger';
|
|
33
33
|
import {layerAnimations} from '../Layer/layerAnimations.stylex';
|
|
34
|
+
import {useLayerDismissal} from '../Layer/useLayerDismissal';
|
|
34
35
|
import {
|
|
35
36
|
colorVars,
|
|
36
37
|
shadowVars,
|
|
@@ -135,6 +136,11 @@ export interface HoverCardOptions {
|
|
|
135
136
|
* - `true`: force-show the hover card (hover/focus hide is suppressed)
|
|
136
137
|
* - `false`: force-hide the hover card
|
|
137
138
|
* - `undefined`: uncontrolled — hover/focus triggers manage visibility
|
|
139
|
+
*
|
|
140
|
+
* A controlled hover card still takes Escape when it is the top-most layer,
|
|
141
|
+
* and answers by calling `onHide` without hiding itself — closing is your
|
|
142
|
+
* update's decision, exactly as for a controlled Dialog. Ignore the call and
|
|
143
|
+
* the card stays, and so does the press: nothing underneath dismisses.
|
|
138
144
|
*/
|
|
139
145
|
isOpen?: boolean;
|
|
140
146
|
|
|
@@ -184,11 +190,25 @@ export interface HoverCardReturn {
|
|
|
184
190
|
anchorId: string;
|
|
185
191
|
|
|
186
192
|
/**
|
|
187
|
-
* ID for
|
|
188
|
-
*
|
|
193
|
+
* Unique ID for the hover card container.
|
|
194
|
+
* Useful for `aria-controls` or `aria-owns` on the trigger.
|
|
195
|
+
*/
|
|
196
|
+
id: string;
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Deprecated alias of `id`. Kept for backwards compatibility; prefer `id`.
|
|
189
200
|
*/
|
|
190
201
|
describedBy: string;
|
|
191
202
|
|
|
203
|
+
/**
|
|
204
|
+
* Whether the hover card is currently open.
|
|
205
|
+
* Useful for driving `aria-expanded` on the trigger — but only when the
|
|
206
|
+
* trigger's role permits it (`button`, `link`, `combobox`, …). On a role-less
|
|
207
|
+
* trigger `aria-expanded` is invalid; use `aria-haspopup`/`aria-controls`
|
|
208
|
+
* alone there.
|
|
209
|
+
*/
|
|
210
|
+
isOpen: boolean;
|
|
211
|
+
|
|
192
212
|
/**
|
|
193
213
|
* Render function for hover card content.
|
|
194
214
|
* Returns anchor-positioned popover element.
|
|
@@ -409,19 +429,71 @@ export function useHoverCard(options: HoverCardOptions = {}): HoverCardReturn {
|
|
|
409
429
|
[layer.id, scheduleHide],
|
|
410
430
|
);
|
|
411
431
|
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
432
|
+
// Escape dismissal (WCAG 1.4.13) goes through the shared layer stack: a
|
|
433
|
+
// visible card is the top-most layer, so it takes the press and consumes it.
|
|
434
|
+
//
|
|
435
|
+
// This replaces a keydown listener on the TRIGGER that called
|
|
436
|
+
// stopPropagation() on any Escape while the trigger merely had focus — open
|
|
437
|
+
// card or not — so focusing a HoverCard trigger inside a Dialog silently ate
|
|
438
|
+
// the press that should have closed the Dialog. Presence is now answered from
|
|
439
|
+
// the DOM, so a closed card never claims a press.
|
|
440
|
+
// A controlled hover card stays on the stack and takes the press like any
|
|
441
|
+
// other layer, but answers it by reporting instead of hiding: `isOpen` is
|
|
442
|
+
// the consumer's value, so only their update may change it. Same contract as
|
|
443
|
+
// a controlled Dialog.
|
|
444
|
+
useLayerDismissal({
|
|
445
|
+
// Registered for the hook's lifetime rather than gated on `layer.isOpen`:
|
|
446
|
+
// that state can lag a frame behind the DOM, so a press arriving right after
|
|
447
|
+
// the layer appears would find nothing registered. Because this layer
|
|
448
|
+
// CONSUMES the press, a stale registration would be worse than a missed one
|
|
449
|
+
// — it would silently eat Escapes meant for the dialog underneath — so
|
|
450
|
+
// presence is answered from the DOM at press time instead of from state.
|
|
451
|
+
isActive: true,
|
|
452
|
+
isPresent: () => {
|
|
453
|
+
const el =
|
|
454
|
+
typeof document === 'undefined'
|
|
455
|
+
? null
|
|
456
|
+
: document.getElementById(layer.id);
|
|
457
|
+
if (el == null) {
|
|
458
|
+
return false;
|
|
459
|
+
}
|
|
460
|
+
try {
|
|
461
|
+
return el.matches(':popover-open');
|
|
462
|
+
} catch {
|
|
463
|
+
// Browsers without the Popover API (and some test environments) cannot
|
|
464
|
+
// answer the selector; fall back to the hook's own state.
|
|
465
|
+
return layer.isOpen;
|
|
421
466
|
}
|
|
422
467
|
},
|
|
423
|
-
|
|
424
|
-
|
|
468
|
+
onDismiss: () => {
|
|
469
|
+
clearTimeouts();
|
|
470
|
+
touch.clearTapOpen();
|
|
471
|
+
// Controlled: report and stop. The close — and the focus restore that
|
|
472
|
+
// goes with it — happens in the controlled effect if and when the
|
|
473
|
+
// consumer flips `isOpen`.
|
|
474
|
+
if (isOpen !== undefined) {
|
|
475
|
+
onHide?.();
|
|
476
|
+
return;
|
|
477
|
+
}
|
|
478
|
+
// Only when the card itself held focus, which is the one case the
|
|
479
|
+
// content-level handler this replaced could run in. Refocusing
|
|
480
|
+
// unconditionally would drag the caret out of a field the user was
|
|
481
|
+
// typing in while a hover card happened to be up; arming the re-show
|
|
482
|
+
// guard unconditionally would swallow their next focus on the trigger,
|
|
483
|
+
// because a focus() on the already-focused trigger fires no focusin to
|
|
484
|
+
// clear it.
|
|
485
|
+
const card =
|
|
486
|
+
typeof document === 'undefined'
|
|
487
|
+
? null
|
|
488
|
+
: document.getElementById(layer.id);
|
|
489
|
+
const hadFocus = card?.contains(document.activeElement) ?? false;
|
|
490
|
+
layer.hide();
|
|
491
|
+
if (hadFocus) {
|
|
492
|
+
isEscapeDismissingRef.current = true;
|
|
493
|
+
triggerRef.current?.focus();
|
|
494
|
+
}
|
|
495
|
+
},
|
|
496
|
+
});
|
|
425
497
|
|
|
426
498
|
// Interaction ref that handles event listeners only
|
|
427
499
|
const {handlePointerEnter} = touch;
|
|
@@ -436,7 +508,6 @@ export function useHoverCard(options: HoverCardOptions = {}): HoverCardReturn {
|
|
|
436
508
|
'focusout',
|
|
437
509
|
handleFocusOut as EventListener,
|
|
438
510
|
);
|
|
439
|
-
triggerRef.current.removeEventListener('keydown', handleKeyDown);
|
|
440
511
|
triggerRef.current.removeEventListener(
|
|
441
512
|
'pointerenter',
|
|
442
513
|
handlePointerEnter,
|
|
@@ -465,9 +536,6 @@ export function useHoverCard(options: HoverCardOptions = {}): HoverCardReturn {
|
|
|
465
536
|
el.addEventListener('focusin', handleFocusIn);
|
|
466
537
|
el.addEventListener('focusout', handleFocusOut as EventListener);
|
|
467
538
|
}
|
|
468
|
-
|
|
469
|
-
// Attach keydown for Escape handling
|
|
470
|
-
el.addEventListener('keydown', handleKeyDown);
|
|
471
539
|
}
|
|
472
540
|
|
|
473
541
|
triggerRef.current = el;
|
|
@@ -478,7 +546,6 @@ export function useHoverCard(options: HoverCardOptions = {}): HoverCardReturn {
|
|
|
478
546
|
handleMouseLeave,
|
|
479
547
|
handleFocusIn,
|
|
480
548
|
handleFocusOut,
|
|
481
|
-
handleKeyDown,
|
|
482
549
|
handlePointerEnter,
|
|
483
550
|
handlePointerDown,
|
|
484
551
|
],
|
|
@@ -518,7 +585,19 @@ export function useHoverCard(options: HoverCardOptions = {}): HoverCardReturn {
|
|
|
518
585
|
layer.show();
|
|
519
586
|
} else {
|
|
520
587
|
clearTimeouts();
|
|
588
|
+
// A consumer closing the card while it holds focus would strand focus on
|
|
589
|
+
// <body>. Arming the re-show guard is what keeps the refocus from
|
|
590
|
+
// reopening the card through `handleFocusIn`, which shows on any focusin.
|
|
591
|
+
const card =
|
|
592
|
+
typeof document === 'undefined'
|
|
593
|
+
? null
|
|
594
|
+
: document.getElementById(layer.id);
|
|
595
|
+
const hadFocus = card?.contains(document.activeElement) ?? false;
|
|
521
596
|
layer.hide();
|
|
597
|
+
if (hadFocus) {
|
|
598
|
+
isEscapeDismissingRef.current = true;
|
|
599
|
+
triggerRef.current?.focus();
|
|
600
|
+
}
|
|
522
601
|
}
|
|
523
602
|
}, [isOpen, clearTimeouts, layer]);
|
|
524
603
|
|
|
@@ -529,7 +608,11 @@ export function useHoverCard(options: HoverCardOptions = {}): HoverCardReturn {
|
|
|
529
608
|
props?: Omit<ContextRenderProps, 'positioning'>,
|
|
530
609
|
): ReactNode => {
|
|
531
610
|
const renderPlacement = props?.placement ?? placement;
|
|
532
|
-
const themeClassName = themeProps('
|
|
611
|
+
const themeClassName = themeProps('hover-card', undefined, {
|
|
612
|
+
// `hovercard` ran the compound name together; themes styling it keep
|
|
613
|
+
// working until the next major.
|
|
614
|
+
legacyNames: ['hovercard'],
|
|
615
|
+
}).className;
|
|
533
616
|
const renderProps = {
|
|
534
617
|
placement: renderPlacement,
|
|
535
618
|
alignment: props?.alignment ?? alignment,
|
|
@@ -576,20 +659,6 @@ export function useHoverCard(options: HoverCardOptions = {}): HoverCardReturn {
|
|
|
576
659
|
isHoveringContentRef.current = false;
|
|
577
660
|
scheduleHide();
|
|
578
661
|
}}
|
|
579
|
-
onKeyDown={e => {
|
|
580
|
-
if (e.key === 'Escape') {
|
|
581
|
-
// Stop propagation so parent components don't react to the same Escape
|
|
582
|
-
e.stopPropagation();
|
|
583
|
-
// Set flag to prevent re-show when we refocus trigger
|
|
584
|
-
isEscapeDismissingRef.current = true;
|
|
585
|
-
// Hide immediately
|
|
586
|
-
clearTimeouts();
|
|
587
|
-
touch.clearTapOpen();
|
|
588
|
-
layer.hide();
|
|
589
|
-
// Refocus the trigger
|
|
590
|
-
triggerRef.current?.focus();
|
|
591
|
-
}
|
|
592
|
-
}}
|
|
593
662
|
onBlur={e => {
|
|
594
663
|
// Check if focus is moving back to the trigger or staying within content
|
|
595
664
|
const relatedTarget = e.relatedTarget as HTMLElement | null;
|
|
@@ -630,7 +699,9 @@ export function useHoverCard(options: HoverCardOptions = {}): HoverCardReturn {
|
|
|
630
699
|
positionRef: layer.ref,
|
|
631
700
|
interactionRef,
|
|
632
701
|
anchorId: layer.anchorId,
|
|
702
|
+
id: layer.id,
|
|
633
703
|
describedBy: layer.id,
|
|
704
|
+
isOpen: layer.isOpen,
|
|
634
705
|
renderHoverCard,
|
|
635
706
|
show: layer.show,
|
|
636
707
|
hide: layer.hide,
|
|
@@ -227,10 +227,13 @@ export function CheckboxIndicator({
|
|
|
227
227
|
<>
|
|
228
228
|
<svg
|
|
229
229
|
viewBox="0 0 10 10"
|
|
230
|
-
{...
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
230
|
+
{...mergeProps(
|
|
231
|
+
themeProps('checkbox-indicator-check', {size}),
|
|
232
|
+
stylex.props(
|
|
233
|
+
styles.checkmark,
|
|
234
|
+
checkmarkSizeStyles[size],
|
|
235
|
+
isChecked && styles.checkmarkVisible,
|
|
236
|
+
),
|
|
234
237
|
)}>
|
|
235
238
|
<path
|
|
236
239
|
d="M8.5 2.5L4 7.5L1.5 5"
|
|
@@ -242,10 +245,13 @@ export function CheckboxIndicator({
|
|
|
242
245
|
/>
|
|
243
246
|
</svg>
|
|
244
247
|
<span
|
|
245
|
-
{...
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
248
|
+
{...mergeProps(
|
|
249
|
+
themeProps('checkbox-indicator-dash', {size}),
|
|
250
|
+
stylex.props(
|
|
251
|
+
styles.indeterminateMark,
|
|
252
|
+
indeterminateSizeStyles[size],
|
|
253
|
+
isIndeterminate && styles.indeterminateMarkVisible,
|
|
254
|
+
),
|
|
249
255
|
)}
|
|
250
256
|
/>
|
|
251
257
|
</>
|
|
@@ -132,6 +132,8 @@ export const docs = {
|
|
|
132
132
|
visualProps: ['size'],
|
|
133
133
|
states: ['checked', 'disabled'],
|
|
134
134
|
},
|
|
135
|
+
{className: 'astryx-checkbox-indicator-check', visualProps: ['size']},
|
|
136
|
+
{className: 'astryx-checkbox-indicator-dash', visualProps: ['size']},
|
|
135
137
|
{
|
|
136
138
|
className: 'astryx-radio-indicator',
|
|
137
139
|
visualProps: ['size'],
|
package/src/Item/Item.tsx
CHANGED
|
@@ -27,7 +27,8 @@ import {
|
|
|
27
27
|
typeScaleVars,
|
|
28
28
|
} from '../theme/tokens.stylex';
|
|
29
29
|
import type {BaseProps} from '../BaseProps';
|
|
30
|
-
import {mergeProps
|
|
30
|
+
import {mergeProps} from '../utils';
|
|
31
|
+
import {useMergedRefs} from '../hooks/useMergedRefs';
|
|
31
32
|
import {computeTargetAndRel} from '../Link/computeTargetAndRel';
|
|
32
33
|
import {useLinkComponent} from '../Link/useLinkComponent';
|
|
33
34
|
import {useClickableContainer} from '../hooks/useClickableContainer';
|
|
@@ -579,11 +580,11 @@ export function Item({
|
|
|
579
580
|
</>
|
|
580
581
|
);
|
|
581
582
|
|
|
583
|
+
const mergedRef = useMergedRefs(ref, containerRef);
|
|
584
|
+
|
|
582
585
|
return (
|
|
583
586
|
<Component
|
|
584
|
-
ref={
|
|
585
|
-
(isDelegate ? mergeRefs(ref, containerRef) : ref) as React.Ref<never>
|
|
586
|
-
}
|
|
587
|
+
ref={(isDelegate ? mergedRef : ref) as React.Ref<never>}
|
|
587
588
|
{...restProps}
|
|
588
589
|
aria-selected={(allowsAriaSelected && isSelected) || undefined}
|
|
589
590
|
// aria-selected is invalid on roles that don't permit it (listitem, a
|
package/src/Kbd/Kbd.tsx
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import React, {useSyncExternalStore} from 'react';
|
|
17
17
|
import * as stylex from '@stylexjs/stylex';
|
|
18
18
|
import {mergeProps} from '../utils';
|
|
19
|
+
import {isApplePlatform} from '../utils/isApplePlatform';
|
|
19
20
|
import type {BaseProps} from '../BaseProps';
|
|
20
21
|
import {themeProps} from '../utils/themeProps';
|
|
21
22
|
import {
|
|
@@ -122,24 +123,6 @@ function getServerPlatformSnapshot(): boolean {
|
|
|
122
123
|
return false;
|
|
123
124
|
}
|
|
124
125
|
|
|
125
|
-
/**
|
|
126
|
-
* Detects whether the current platform is macOS/iOS.
|
|
127
|
-
* Prefers the User-Agent Client Hints API when available (modern Chrome/Edge),
|
|
128
|
-
* falls back to navigator.platform (deprecated but universally supported).
|
|
129
|
-
*/
|
|
130
|
-
function detectMac(): boolean {
|
|
131
|
-
if (typeof navigator === 'undefined') {
|
|
132
|
-
return false;
|
|
133
|
-
}
|
|
134
|
-
// Prefer User-Agent Client Hints API (not deprecated)
|
|
135
|
-
const uaData = 'userAgentData' in navigator ? navigator.userAgentData : null;
|
|
136
|
-
if (uaData && typeof uaData === 'object' && 'platform' in uaData) {
|
|
137
|
-
return /mac/i.test((uaData as {platform: string}).platform ?? '');
|
|
138
|
-
}
|
|
139
|
-
// Fallback: navigator.platform (deprecated but still shipped everywhere)
|
|
140
|
-
return /Mac|iPhone|iPad|iPod/.test(navigator.platform ?? '');
|
|
141
|
-
}
|
|
142
|
-
|
|
143
126
|
export interface KbdProps extends BaseProps<HTMLSpanElement> {
|
|
144
127
|
ref?: React.Ref<HTMLSpanElement>;
|
|
145
128
|
/**
|
|
@@ -176,7 +159,7 @@ export interface KbdProps extends BaseProps<HTMLSpanElement> {
|
|
|
176
159
|
export function Kbd({keys, ref, xstyle, className, style, ...rest}: KbdProps) {
|
|
177
160
|
const isMac = useSyncExternalStore(
|
|
178
161
|
subscribeToPlatformChanges,
|
|
179
|
-
|
|
162
|
+
isApplePlatform,
|
|
180
163
|
getServerPlatformSnapshot,
|
|
181
164
|
);
|
|
182
165
|
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file LayerDepthContext.tsx
|
|
7
|
+
* @input React context
|
|
8
|
+
* @output Exports LayerDepthContext, useLayerDepth, LayerDepthProvider
|
|
9
|
+
* @position Layer system; how the dismissal stack learns which layer is nested
|
|
10
|
+
* inside which.
|
|
11
|
+
*
|
|
12
|
+
* SYNC: When modified, update:
|
|
13
|
+
* - /packages/core/src/Layer/index.ts
|
|
14
|
+
* - /packages/core/src/Layer/useLayerDismissal.ts
|
|
15
|
+
*
|
|
16
|
+
* Nesting is read from the React tree rather than the DOM. Two reasons:
|
|
17
|
+
*
|
|
18
|
+
* - **Portals.** A nested overlay routinely renders into `document.body` or the
|
|
19
|
+
* native top layer, so DOM containment reports it as a sibling of the layer
|
|
20
|
+
* it is logically inside. React context flows through `createPortal`, so the
|
|
21
|
+
* tree keeps the relationship the DOM loses.
|
|
22
|
+
* - **Same-commit mounts.** Depth is fixed during render. Effect order is not
|
|
23
|
+
* available then and is misleading anyway: React runs child effects before
|
|
24
|
+
* parent effects, so an inner layer registers first and looks "older" than
|
|
25
|
+
* the outer layer that contains it.
|
|
26
|
+
*
|
|
27
|
+
* There is nothing to mount at the app root: the context defaults to 0, and
|
|
28
|
+
* each layer provides depth for its OWN content, so nesting composes on its own.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
import {createContext, use, type ReactNode} from 'react';
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* How many layers deep the current subtree is. 0 at the app root; each layer
|
|
35
|
+
* increments it for its own content.
|
|
36
|
+
*/
|
|
37
|
+
export const LayerDepthContext = createContext(0);
|
|
38
|
+
LayerDepthContext.displayName = 'LayerDepthContext';
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Read the current nesting depth. A layer calls this to learn its OWN depth —
|
|
42
|
+
* the depth of the subtree it is rendered into, before it pushes its content
|
|
43
|
+
* one level deeper.
|
|
44
|
+
*/
|
|
45
|
+
export function useLayerDepth(): number {
|
|
46
|
+
return use(LayerDepthContext);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Wrap a layer's content so any layer opened from inside it registers as
|
|
51
|
+
* nested. Takes no depth prop on purpose: it reads the ambient depth and adds
|
|
52
|
+
* one, so nesting composes without anyone tracking absolute numbers.
|
|
53
|
+
*
|
|
54
|
+
* Renders no DOM element — it is a context boundary only, which is why it takes
|
|
55
|
+
* no `xstyle`/`ref` and exposes no props interface.
|
|
56
|
+
*/
|
|
57
|
+
export function LayerDepthProvider({children}: {children: ReactNode}) {
|
|
58
|
+
const depth = use(LayerDepthContext);
|
|
59
|
+
return <LayerDepthContext value={depth + 1}>{children}</LayerDepthContext>;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
LayerDepthProvider.displayName = 'LayerDepthProvider';
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file gestureCounter.ts
|
|
7
|
+
* @input Listens for pointerdown, keydown, and click on the document
|
|
8
|
+
* @output Exports the current gesture identity and whether its click has run
|
|
9
|
+
* @position Internal to Layer; used by useLayer to tell a click that belongs
|
|
10
|
+
* to a dismissing press from a fresh one
|
|
11
|
+
*
|
|
12
|
+
* A browser light-dismiss and the trigger's own click come from ONE press, and
|
|
13
|
+
* which of them React sees first is a race. Comparing timestamps against a
|
|
14
|
+
* window guesses; counting gestures does not. The counter advances on every
|
|
15
|
+
* new press or keystroke, so "the click from the gesture that dismissed the
|
|
16
|
+
* layer" is exactly "the click while the counter still reads what it read at
|
|
17
|
+
* the dismissal", no matter how long the main thread was blocked in between.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
let gesture = 0;
|
|
21
|
+
let clickedGesture: number | null = null;
|
|
22
|
+
let isListening = false;
|
|
23
|
+
|
|
24
|
+
function advance() {
|
|
25
|
+
gesture += 1;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function markClicked() {
|
|
29
|
+
clickedGesture = gesture;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function listen() {
|
|
33
|
+
if (isListening || typeof document === 'undefined') {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
isListening = true;
|
|
37
|
+
// Capture phase: the count must advance before any handler reads it.
|
|
38
|
+
document.addEventListener('pointerdown', advance, true);
|
|
39
|
+
document.addEventListener('keydown', advance, true);
|
|
40
|
+
// Capture phase observes the click even when a consumer stops propagation.
|
|
41
|
+
document.addEventListener('click', markClicked, true);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Identifies the user gesture in flight. Two reads returning the same value
|
|
46
|
+
* happened within one press (or one keystroke).
|
|
47
|
+
*/
|
|
48
|
+
export function currentGesture(): number {
|
|
49
|
+
listen();
|
|
50
|
+
return gesture;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** Whether the click belonging to the current gesture already bubbled. */
|
|
54
|
+
export function currentGestureHasClicked(): boolean {
|
|
55
|
+
listen();
|
|
56
|
+
return clickedGesture === gesture;
|
|
57
|
+
}
|
package/src/Layer/index.ts
CHANGED
|
@@ -29,6 +29,15 @@ export type {
|
|
|
29
29
|
FixedLayerReturn,
|
|
30
30
|
} from './useLayer';
|
|
31
31
|
|
|
32
|
+
// Layer dismissal stack — one Escape owner for every overlay family
|
|
33
|
+
export {useLayerDismissal} from './useLayerDismissal';
|
|
34
|
+
export type {
|
|
35
|
+
LayerEscapeBehavior,
|
|
36
|
+
UseLayerDismissalOptions,
|
|
37
|
+
UseLayerDismissalReturn,
|
|
38
|
+
} from './useLayerDismissal';
|
|
39
|
+
export {LayerDepthProvider} from './LayerDepthContext';
|
|
40
|
+
|
|
32
41
|
// Shared touch behavior for the hover layers
|
|
33
42
|
export {useTouchTrigger, isActionTrigger} from './useTouchTrigger';
|
|
34
43
|
export type {
|