@astryxdesign/core 0.7.5-canary.fccd771 → 0.7.5
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 +211 -10
- package/README.md +15 -12
- package/dist/AlertDialog/AlertDialog.js +1 -1
- package/dist/AppShell/AppShell.d.ts +0 -22
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +155 -1
- package/dist/Avatar/AvatarStatusDot.js +2 -2
- package/dist/Badge/Badge.d.ts.map +1 -1
- package/dist/Badge/Badge.js +18 -2
- package/dist/Banner/Banner.d.ts +1 -0
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +64 -9
- package/dist/BottomSheet/BottomSheet.d.ts +53 -5
- package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheet.js +435 -198
- package/dist/BottomSheet/BottomSheetHostContext.d.ts +8 -0
- package/dist/BottomSheet/BottomSheetHostContext.d.ts.map +1 -0
- package/dist/BottomSheet/BottomSheetHostContext.js +35 -0
- package/dist/BottomSheet/BottomSheetPanel.d.ts +9 -1
- package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetPanel.js +77 -23
- package/dist/BottomSheet/BottomSheetSwitcher.d.ts +53 -14
- package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetSwitcher.js +229 -27
- package/dist/BottomSheet/BottomSheetSwitcherContext.d.ts +6 -0
- package/dist/BottomSheet/BottomSheetSwitcherContext.d.ts.map +1 -1
- package/dist/BottomSheet/bottomSheetEscape.d.ts +3 -0
- package/dist/BottomSheet/bottomSheetEscape.d.ts.map +1 -0
- package/dist/BottomSheet/bottomSheetEscape.js +20 -0
- package/dist/BottomSheet/bottomSheetStack.d.ts +262 -0
- package/dist/BottomSheet/bottomSheetStack.d.ts.map +1 -0
- package/dist/BottomSheet/bottomSheetStack.js +1675 -0
- package/dist/BottomSheet/useSheetGestures.d.ts +19 -3
- package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
- package/dist/BottomSheet/useSheetGestures.js +43 -14
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +36 -3
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +18 -7
- package/dist/Chat/ChatComposer.d.ts.map +1 -1
- package/dist/Chat/ChatComposer.js +25 -32
- package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +55 -16
- package/dist/Chat/ChatMessageMetadata.js +2 -2
- package/dist/Chat/ChatPastedTextToken.d.ts.map +1 -1
- package/dist/Chat/ChatPastedTextToken.js +7 -6
- package/dist/Chat/ChatToolCalls.js +4 -4
- package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
- package/dist/ClickableCard/ClickableCard.js +10 -6
- package/dist/CodeBlock/CodeBlock.d.ts +25 -2
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +58 -19
- package/dist/CodeBlock/grammar.d.ts +134 -0
- package/dist/CodeBlock/grammar.d.ts.map +1 -0
- package/dist/CodeBlock/grammar.js +219 -0
- package/dist/CodeBlock/index.d.ts +2 -0
- package/dist/CodeBlock/index.d.ts.map +1 -1
- package/dist/CodeBlock/index.js +1 -0
- package/dist/CodeBlock/languages/dockerfile.d.ts +3 -0
- package/dist/CodeBlock/languages/dockerfile.d.ts.map +1 -0
- package/dist/CodeBlock/languages/dockerfile.js +45 -0
- package/dist/CodeBlock/languages/graphql.d.ts +3 -0
- package/dist/CodeBlock/languages/graphql.d.ts.map +1 -0
- package/dist/CodeBlock/languages/graphql.js +27 -0
- package/dist/CodeBlock/languages/java.d.ts +3 -0
- package/dist/CodeBlock/languages/java.d.ts.map +1 -0
- package/dist/CodeBlock/languages/java.js +24 -0
- package/dist/CodeBlock/languages/lua.d.ts +3 -0
- package/dist/CodeBlock/languages/lua.d.ts.map +1 -0
- package/dist/CodeBlock/languages/lua.js +21 -0
- package/dist/CodeBlock/languages/objective-c.d.ts +3 -0
- package/dist/CodeBlock/languages/objective-c.d.ts.map +1 -0
- package/dist/CodeBlock/languages/objective-c.js +27 -0
- package/dist/CodeBlock/languages/powershell.d.ts +3 -0
- package/dist/CodeBlock/languages/powershell.d.ts.map +1 -0
- package/dist/CodeBlock/languages/powershell.js +30 -0
- package/dist/CodeBlock/languages/ruby.d.ts +3 -0
- package/dist/CodeBlock/languages/ruby.d.ts.map +1 -0
- package/dist/CodeBlock/languages/ruby.js +24 -0
- package/dist/CodeBlock/languages/thrift.d.ts +3 -0
- package/dist/CodeBlock/languages/thrift.d.ts.map +1 -0
- package/dist/CodeBlock/languages/thrift.js +18 -0
- package/dist/CodeBlock/languages/toml.d.ts +3 -0
- package/dist/CodeBlock/languages/toml.d.ts.map +1 -0
- package/dist/CodeBlock/languages/toml.js +53 -0
- package/dist/CodeBlock/tokenizer.d.ts +8 -4
- package/dist/CodeBlock/tokenizer.d.ts.map +1 -1
- package/dist/CodeBlock/tokenizer.js +158 -8
- package/dist/Collapsible/Collapsible.d.ts +8 -1
- package/dist/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible/Collapsible.js +84 -2
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +15 -1
- package/dist/CommandPalette/CommandPaletteEmpty.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteEmpty.js +1 -0
- package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteInput.js +14 -2
- package/dist/CommandPalette/busyStartSettle.d.ts +4 -0
- package/dist/CommandPalette/busyStartSettle.d.ts.map +1 -0
- package/dist/CommandPalette/busyStartSettle.js +23 -0
- package/dist/ComplexSelector/ComplexSelector.d.ts +20 -2
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +42 -7
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +48 -13
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +12 -5
- package/dist/DateInput/NativeDateField.d.ts.map +1 -1
- package/dist/DateInput/NativeDateField.js +2 -1
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +2 -1
- package/dist/DateInput/Wheel.d.ts.map +1 -1
- package/dist/DateInput/Wheel.js +1 -1
- package/dist/Dialog/Dialog.d.ts +4 -0
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +20 -8
- package/dist/Drawer/Drawer.d.ts.map +1 -1
- package/dist/Drawer/Drawer.js +18 -13
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +34 -30
- package/dist/DropdownMenu/DropdownMenuGroup.d.ts +7 -4
- package/dist/DropdownMenu/DropdownMenuGroup.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuGroup.js +10 -4
- package/dist/DropdownMenu/DropdownMenuItem.js +3 -3
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts +10 -5
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.js +13 -5
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +6 -6
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.js +0 -3
- package/dist/DropdownMenu/MenuBottomSheet.d.ts +11 -4
- package/dist/DropdownMenu/MenuBottomSheet.d.ts.map +1 -1
- package/dist/DropdownMenu/MenuBottomSheet.js +35 -9
- package/dist/DropdownMenu/MenuBottomSheetActionList.js +3 -3
- package/dist/DropdownMenu/lazyMenuBottomSheet.d.ts +2 -0
- package/dist/DropdownMenu/lazyMenuBottomSheet.d.ts.map +1 -1
- package/dist/DropdownMenu/lazyMenuBottomSheet.js +25 -3
- package/dist/DropdownMenu/menuBottomSheet.stylex.d.ts +23 -0
- package/dist/DropdownMenu/menuBottomSheet.stylex.d.ts.map +1 -0
- package/dist/DropdownMenu/menuBottomSheet.stylex.js +29 -0
- package/dist/DropdownMenu/menuItemHover.d.ts +3 -0
- package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -1
- package/dist/DropdownMenu/menuItemHover.js +14 -1
- package/dist/DropdownMenu/menuTouchAction.stylex.d.ts +25 -0
- package/dist/DropdownMenu/menuTouchAction.stylex.d.ts.map +1 -0
- package/dist/DropdownMenu/menuTouchAction.stylex.js +29 -0
- package/dist/DropdownMenu/useMenuDrillIn.d.ts.map +1 -1
- package/dist/DropdownMenu/useMenuDrillIn.js +7 -5
- package/dist/EmptyState/EmptyState.d.ts +4 -2
- package/dist/EmptyState/EmptyState.d.ts.map +1 -1
- package/dist/EmptyState/EmptyState.js +6 -4
- package/dist/Field/Field.js +1 -1
- package/dist/Field/FieldLabel.js +1 -1
- package/dist/Field/PanelSearchInput.d.ts +9 -1
- package/dist/Field/PanelSearchInput.d.ts.map +1 -1
- package/dist/Field/PanelSearchInput.js +31 -22
- package/dist/Field/inputDisabledFocus.d.ts +14 -0
- package/dist/Field/inputDisabledFocus.d.ts.map +1 -0
- package/dist/Field/inputDisabledFocus.js +19 -0
- package/dist/Field/inputStyles.stylex.d.ts +9 -9
- package/dist/Field/inputStyles.stylex.js +9 -9
- package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
- package/dist/FieldStatus/FieldStatus.js +7 -3
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +22 -12
- package/dist/Icon/Icon.d.ts +37 -5
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +65 -11
- package/dist/Icon/IconSize.stylex.d.ts +16 -11
- package/dist/Icon/IconSize.stylex.d.ts.map +1 -1
- package/dist/Icon/IconSize.stylex.js +27 -11
- package/dist/Icon/globalIconRegistry.d.ts +71 -4
- package/dist/Icon/globalIconRegistry.d.ts.map +1 -1
- package/dist/Icon/globalIconRegistry.js +163 -23
- package/dist/Icon/index.d.ts +26 -2
- package/dist/Icon/index.d.ts.map +1 -1
- package/dist/Icon/index.js +24 -1
- package/dist/Icon/useIcon.d.ts +5 -1
- package/dist/Icon/useIcon.d.ts.map +1 -1
- package/dist/Icon/useIcon.js +5 -1
- package/dist/InputGroup/InputGroup.d.ts +1 -1
- package/dist/InputGroup/InputGroup.d.ts.map +1 -1
- package/dist/InputGroup/InputGroup.js +46 -36
- package/dist/InputGroup/InputGroupInternalContext.d.ts +4 -0
- package/dist/InputGroup/InputGroupInternalContext.d.ts.map +1 -0
- package/dist/InputGroup/InputGroupInternalContext.js +15 -0
- package/dist/InputGroup/InputGroupText.d.ts.map +1 -1
- package/dist/InputGroup/InputGroupText.js +2 -0
- package/dist/InputGroup/groupStyles.d.ts +9 -0
- package/dist/InputGroup/groupStyles.d.ts.map +1 -1
- package/dist/InputGroup/groupStyles.js +28 -14
- package/dist/Item/Item.d.ts +5 -1
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +23 -7
- package/dist/Item/ItemMarkerColumns.a11y.chromium.spec.d.ts +2 -0
- package/dist/Item/ItemMarkerColumns.a11y.chromium.spec.d.ts.map +1 -0
- package/dist/Item/ItemMarkerColumns.a11y.chromium.spec.js +132 -0
- package/dist/Item/ItemMarkerColumnsContext.d.ts +14 -0
- package/dist/Item/ItemMarkerColumnsContext.d.ts.map +1 -0
- package/dist/Item/ItemMarkerColumnsContext.js +18 -0
- package/dist/Item/ItemSwipeLayer.d.ts.map +1 -1
- package/dist/Item/ItemSwipeLayer.js +3 -0
- package/dist/Item/useSwipeAction.d.ts.map +1 -1
- package/dist/Item/useSwipeAction.js +60 -5
- package/dist/Kbd/Kbd.d.ts +2 -2
- package/dist/Kbd/Kbd.d.ts.map +1 -1
- package/dist/Kbd/Kbd.js +18 -11
- package/dist/Layer/layerAnimations.stylex.d.ts +9 -5
- package/dist/Layer/layerAnimations.stylex.d.ts.map +1 -1
- package/dist/Layer/layerAnimations.stylex.js +23 -10
- package/dist/Layer/layerSlideRules.d.ts +62 -2
- package/dist/Layer/layerSlideRules.d.ts.map +1 -1
- package/dist/Layer/layerSlideRules.js +124 -3
- package/dist/Layer/layerStack.d.ts +12 -9
- package/dist/Layer/layerStack.d.ts.map +1 -1
- package/dist/Layer/layerStack.js +116 -53
- package/dist/Layer/modalOutlet.d.ts +44 -6
- package/dist/Layer/modalOutlet.d.ts.map +1 -1
- package/dist/Layer/modalOutlet.js +150 -14
- package/dist/Layer/preserveAnimations.d.ts +11 -0
- package/dist/Layer/preserveAnimations.d.ts.map +1 -0
- package/dist/Layer/preserveAnimations.js +245 -0
- package/dist/Layer/useLayer.d.ts +19 -2
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +531 -44
- package/dist/Layer/useLayerDismissal.d.ts +10 -7
- package/dist/Layer/useLayerDismissal.d.ts.map +1 -1
- package/dist/Layer/useLayerDismissal.js +8 -8
- package/dist/Layer/useTouchTrigger.d.ts +14 -1
- package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
- package/dist/Layer/useTouchTrigger.js +72 -17
- package/dist/Layout/Layout.d.ts.map +1 -1
- package/dist/Layout/Layout.js +4 -0
- package/dist/Layout/LayoutContent.d.ts.map +1 -1
- package/dist/Layout/LayoutContent.js +2 -2
- package/dist/Layout/LayoutFooter.d.ts.map +1 -1
- package/dist/Layout/LayoutFooter.js +2 -1
- package/dist/Layout/LayoutHeader.d.ts.map +1 -1
- package/dist/Layout/LayoutHeader.js +2 -1
- package/dist/Layout/layoutEdges.stylex.d.ts +20 -0
- package/dist/Layout/layoutEdges.stylex.d.ts.map +1 -0
- package/dist/Layout/layoutEdges.stylex.js +28 -0
- package/dist/Lightbox/Lightbox.d.ts +5 -2
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +111 -89
- package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.d.ts +2 -0
- package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.d.ts.map +1 -0
- package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.js +78 -0
- package/dist/Lightbox/LightboxViewport.a11y.browser.spec.d.ts +2 -0
- package/dist/Lightbox/LightboxViewport.a11y.browser.spec.d.ts.map +1 -0
- package/dist/Lightbox/LightboxViewport.a11y.browser.spec.js +65 -0
- package/dist/List/List.d.ts +2 -1
- package/dist/List/List.d.ts.map +1 -1
- package/dist/List/List.js +9 -2
- package/dist/List/ListContext.d.ts +16 -4
- package/dist/List/ListContext.d.ts.map +1 -1
- package/dist/List/ListContext.js +10 -5
- package/dist/List/ListItem.d.ts +7 -1
- package/dist/List/ListItem.d.ts.map +1 -1
- package/dist/List/ListItem.js +52 -8
- package/dist/List/ListMarkers.a11y.chromium.spec.d.ts +2 -0
- package/dist/List/ListMarkers.a11y.chromium.spec.d.ts.map +1 -0
- package/dist/List/ListMarkers.a11y.chromium.spec.js +677 -0
- package/dist/Markdown/Markdown.d.ts +11 -1
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.fr23.bench.js +3 -1
- package/dist/Markdown/Markdown.fr23.sampling.d.ts +16 -0
- package/dist/Markdown/Markdown.fr23.sampling.d.ts.map +1 -1
- package/dist/Markdown/Markdown.fr23.sampling.js +13 -4
- package/dist/Markdown/Markdown.js +41 -14
- package/dist/Markdown/MarkdownTable.a11y.chromium.spec.js +1 -0
- package/dist/MobileNav/MobileNav.d.ts +2 -1
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +46 -37
- package/dist/MobileNav/MobileNavPinchZoom.a11y.chromium.spec.js +1 -0
- package/dist/MobileNav/MobileNavToggle.d.ts +7 -3
- package/dist/MobileNav/MobileNavToggle.d.ts.map +1 -1
- package/dist/MobileNav/MobileNavToggle.js +11 -3
- package/dist/MultiSelector/CreateRow.a11y.chromium.spec.js +53 -6
- package/dist/MultiSelector/MultiSelector.d.ts +1 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.js +1 -0
- package/dist/MultiSelector/MultiSelector.js +21 -5
- package/dist/MultiSelector/OptionActions.a11y.chromium.spec.js +1 -0
- package/dist/NavMenu/NavHeadingMenu.d.ts +1 -1
- package/dist/NavMenu/NavHeadingMenu.d.ts.map +1 -1
- package/dist/NavMenu/NavHeadingMenu.js +29 -5
- package/dist/NavMenu/NavHeadingMenuItem.d.ts.map +1 -1
- package/dist/NavMenu/NavHeadingMenuItem.js +51 -7
- package/dist/NavMenu/NavMenuContext.d.ts +9 -0
- package/dist/NavMenu/NavMenuContext.d.ts.map +1 -1
- package/dist/NavMenu/NavMenuContext.js +9 -0
- package/dist/NumberInput/NumberInput.d.ts +4 -4
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +61 -24
- package/dist/Overlay/Overlay.d.ts +3 -3
- package/dist/Overlay/Overlay.d.ts.map +1 -1
- package/dist/Overlay/Overlay.js +12 -5
- package/dist/Popover/Popover.d.ts +41 -2
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +276 -44
- package/dist/Popover/index.d.ts +1 -1
- package/dist/Popover/index.d.ts.map +1 -1
- package/dist/Popover/lazyPopoverBottomSheet.d.ts +23 -0
- package/dist/Popover/lazyPopoverBottomSheet.d.ts.map +1 -0
- package/dist/Popover/lazyPopoverBottomSheet.js +40 -0
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +11 -5
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +7 -5
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +8 -0
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +10 -2
- package/dist/ScrollableArea/ScrollableArea.d.ts.map +1 -1
- package/dist/ScrollableArea/ScrollableArea.js +1 -1
- package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControl.js +6 -2
- package/dist/SelectableCard/SelectableCard.d.ts +5 -5
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +15 -11
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +27 -8
- package/dist/Selector/hooks.d.ts +52 -6
- package/dist/Selector/hooks.d.ts.map +1 -1
- package/dist/Selector/hooks.js +145 -2
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +58 -2
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +79 -3
- package/dist/SideNav/SideNavItem.d.ts +5 -1
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +36 -13
- package/dist/SideNav/railMotion.d.ts +54 -0
- package/dist/SideNav/railMotion.d.ts.map +1 -0
- package/dist/SideNav/railMotion.js +253 -0
- package/dist/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/Skeleton/Skeleton.js +12 -3
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +52 -15
- package/dist/StatusDot/StatusDot.d.ts.map +1 -1
- package/dist/StatusDot/StatusDot.js +12 -0
- package/dist/Stepper/Step.d.ts.map +1 -1
- package/dist/Stepper/Step.js +10 -6
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +5 -5
- package/dist/Switch/switch.markers.stylex.d.ts +7 -2
- package/dist/Switch/switch.markers.stylex.d.ts.map +1 -1
- package/dist/Switch/switch.markers.stylex.js +8 -3
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +5 -1
- package/dist/TabList/TabMenu.d.ts.map +1 -1
- package/dist/TabList/TabMenu.js +25 -3
- package/dist/Table/TableCell.d.ts.map +1 -1
- package/dist/Table/TableCell.js +5 -1
- package/dist/Table/TableHeaderCell.d.ts.map +1 -1
- package/dist/Table/TableHeaderCell.js +1 -0
- package/dist/Table/TableRow.d.ts.map +1 -1
- package/dist/Table/TableRow.js +3 -0
- package/dist/Table/glidingDivider.d.ts +96 -0
- package/dist/Table/glidingDivider.d.ts.map +1 -0
- package/dist/Table/glidingDivider.js +275 -0
- package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
- package/dist/Table/plugins/columnResize/useTableColumnResize.js +11 -2
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +8 -0
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +374 -13
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +244 -6
- package/dist/Table/rowDivider.d.ts +34 -0
- package/dist/Table/rowDivider.d.ts.map +1 -0
- package/dist/Table/rowDivider.js +118 -0
- package/dist/TextArea/TextArea.d.ts +6 -4
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +15 -12
- package/dist/TextInput/TextInput.d.ts +7 -5
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +43 -22
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +45 -11
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +12 -4
- package/dist/TimeInput/TouchTimeField.d.ts.map +1 -1
- package/dist/TimeInput/TouchTimeField.js +2 -1
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +62 -6
- package/dist/Tokenizer/Tokenizer.d.ts +71 -4
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +430 -45
- package/dist/Tokenizer/TokenizerBottomSheet.d.ts +98 -0
- package/dist/Tokenizer/TokenizerBottomSheet.d.ts.map +1 -0
- package/dist/Tokenizer/TokenizerBottomSheet.js +721 -0
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +9 -3
- package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/TopNav/TopNavHeading.js +26 -0
- package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +4 -4
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +32 -4
- package/dist/TreeList/TreeList.d.ts +8 -23
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +175 -3
- package/dist/TreeList/TreeListBranches.d.ts.map +1 -1
- package/dist/TreeList/TreeListBranches.js +7 -5
- package/dist/TreeList/TreeListItem.d.ts +7 -1
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +5 -3
- package/dist/Typeahead/BaseTypeahead.d.ts +1 -1
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.emptyState.a11y.chromium.spec.d.ts +2 -0
- package/dist/Typeahead/BaseTypeahead.emptyState.a11y.chromium.spec.d.ts.map +1 -0
- package/dist/Typeahead/BaseTypeahead.emptyState.a11y.chromium.spec.js +118 -0
- package/dist/Typeahead/BaseTypeahead.js +27 -11
- package/dist/Typeahead/Typeahead.d.ts +1 -1
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +31 -14
- package/dist/astryx.css +164 -41
- package/dist/gestures/GestureArena.d.ts +175 -0
- package/dist/gestures/GestureArena.d.ts.map +1 -0
- package/dist/gestures/GestureArena.js +816 -0
- package/dist/gestures/GestureRecognizer.d.ts +239 -0
- package/dist/gestures/GestureRecognizer.d.ts.map +1 -0
- package/dist/gestures/GestureRecognizer.js +487 -0
- package/dist/gestures/LongPressGestureRecognizer.d.ts +32 -0
- package/dist/gestures/LongPressGestureRecognizer.d.ts.map +1 -0
- package/dist/gestures/LongPressGestureRecognizer.js +135 -0
- package/dist/gestures/PanGestureRecognizer.d.ts +117 -0
- package/dist/gestures/PanGestureRecognizer.d.ts.map +1 -0
- package/dist/gestures/PanGestureRecognizer.js +349 -0
- package/dist/gestures/TapGestureRecognizer.d.ts +39 -0
- package/dist/gestures/TapGestureRecognizer.d.ts.map +1 -0
- package/dist/gestures/TapGestureRecognizer.js +151 -0
- package/dist/gestures/VelocityTracker.d.ts +51 -0
- package/dist/gestures/VelocityTracker.d.ts.map +1 -0
- package/dist/gestures/VelocityTracker.js +186 -0
- package/dist/gestures/geometry.d.ts +17 -0
- package/dist/gestures/geometry.d.ts.map +1 -0
- package/dist/gestures/geometry.js +55 -0
- package/dist/gestures/types.d.ts +139 -0
- package/dist/gestures/types.d.ts.map +1 -0
- package/dist/gestures/types.js +67 -0
- package/dist/hooks/AnnounceRenderedText.d.ts +17 -0
- package/dist/hooks/AnnounceRenderedText.d.ts.map +1 -0
- package/dist/hooks/AnnounceRenderedText.js +32 -0
- package/dist/hooks/ModalAnnounceProvider.d.ts +41 -0
- package/dist/hooks/ModalAnnounceProvider.d.ts.map +1 -0
- package/dist/hooks/ModalAnnounceProvider.js +133 -0
- package/dist/hooks/actionGroupTracker.d.ts +98 -0
- package/dist/hooks/actionGroupTracker.d.ts.map +1 -0
- package/dist/hooks/actionGroupTracker.js +338 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/menuPressOnItems.d.ts +19 -0
- package/dist/hooks/menuPressOnItems.d.ts.map +1 -0
- package/dist/hooks/menuPressOnItems.js +32 -0
- package/dist/hooks/modalAnnounce.d.ts +18 -0
- package/dist/hooks/modalAnnounce.d.ts.map +1 -0
- package/dist/hooks/modalAnnounce.js +382 -0
- package/dist/hooks/scrollGeometry.d.ts +28 -0
- package/dist/hooks/scrollGeometry.d.ts.map +1 -1
- package/dist/hooks/scrollGeometry.js +36 -2
- package/dist/hooks/useAdaptivePresentation.d.ts +9 -1
- package/dist/hooks/useAdaptivePresentation.d.ts.map +1 -1
- package/dist/hooks/useAdaptivePresentation.js +33 -8
- package/dist/hooks/useAnimatedLayout.d.ts +42 -0
- package/dist/hooks/useAnimatedLayout.d.ts.map +1 -0
- package/dist/hooks/useAnimatedLayout.js +46 -0
- package/dist/hooks/useAnnounce.d.ts +132 -1
- package/dist/hooks/useAnnounce.d.ts.map +1 -1
- package/dist/hooks/useAnnounce.js +356 -27
- package/dist/hooks/useAnnounceRenderedText.d.ts +19 -2
- package/dist/hooks/useAnnounceRenderedText.d.ts.map +1 -1
- package/dist/hooks/useAnnounceRenderedText.js +52 -11
- package/dist/hooks/useBusyAnnouncement.d.ts +9 -5
- package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
- package/dist/hooks/useBusyAnnouncement.js +58 -46
- package/dist/hooks/useFocusTrap.d.ts +1 -1
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +57 -26
- package/dist/hooks/useMenuHover.d.ts.map +1 -1
- package/dist/hooks/useMenuHover.js +6 -2
- package/dist/hooks/useMenuPress.d.ts +4 -2
- package/dist/hooks/useMenuPress.d.ts.map +1 -1
- package/dist/hooks/useMenuPress.js +58 -33
- package/dist/hooks/usePressFeedback.d.ts +5 -2
- package/dist/hooks/usePressFeedback.d.ts.map +1 -1
- package/dist/hooks/usePressFeedback.js +5 -2
- package/dist/hooks/useScrollableArea.d.ts +5 -0
- package/dist/hooks/useScrollableArea.d.ts.map +1 -1
- package/dist/hooks/useScrollableArea.js +104 -11
- package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/en.generated.js +33 -0
- package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/pseudo.generated.js +33 -0
- package/dist/internal/tokenizer-presentation.d.ts +21 -0
- package/dist/internal/tokenizer-presentation.d.ts.map +1 -0
- package/dist/internal/tokenizer-presentation.js +21 -0
- package/dist/internal/touch.d.ts +26 -0
- package/dist/internal/touch.d.ts.map +1 -0
- package/dist/internal/touch.js +28 -0
- package/dist/motion/LayoutChangeSnapshot.d.ts +33 -0
- package/dist/motion/LayoutChangeSnapshot.d.ts.map +1 -0
- package/dist/motion/LayoutChangeSnapshot.js +37 -0
- package/dist/motion/animatedLayout.d.ts +190 -0
- package/dist/motion/animatedLayout.d.ts.map +1 -0
- package/dist/motion/animatedLayout.js +1502 -0
- package/dist/motion/animator.d.ts +240 -0
- package/dist/motion/animator.d.ts.map +1 -0
- package/dist/motion/animator.js +2203 -0
- package/dist/motion/bezier.d.ts +18 -0
- package/dist/motion/bezier.d.ts.map +1 -0
- package/dist/motion/bezier.js +60 -0
- package/dist/motion/coast.d.ts +61 -0
- package/dist/motion/coast.d.ts.map +1 -0
- package/dist/motion/coast.js +107 -0
- package/dist/motion/decay.d.ts +41 -0
- package/dist/motion/decay.d.ts.map +1 -0
- package/dist/motion/decay.js +90 -0
- package/dist/motion/projection.d.ts +36 -0
- package/dist/motion/projection.d.ts.map +1 -0
- package/dist/motion/projection.js +92 -0
- package/dist/motion/reducedMotion.d.ts +25 -0
- package/dist/motion/reducedMotion.d.ts.map +1 -0
- package/dist/motion/reducedMotion.js +85 -0
- package/dist/motion/reducedMotion.stylex.d.ts +19 -0
- package/dist/motion/reducedMotion.stylex.d.ts.map +1 -0
- package/dist/motion/reducedMotion.stylex.js +37 -0
- package/dist/motion/reducedMotionPlan.d.ts +89 -0
- package/dist/motion/reducedMotionPlan.d.ts.map +1 -0
- package/dist/motion/reducedMotionPlan.js +194 -0
- package/dist/motion/resolveSnapPoint.d.ts +52 -0
- package/dist/motion/resolveSnapPoint.d.ts.map +1 -0
- package/dist/motion/resolveSnapPoint.js +135 -0
- package/dist/motion/roleValue.d.ts +33 -0
- package/dist/motion/roleValue.d.ts.map +1 -0
- package/dist/motion/roleValue.js +84 -0
- package/dist/motion/roles.d.ts +79 -0
- package/dist/motion/roles.d.ts.map +1 -0
- package/dist/motion/roles.js +199 -0
- package/dist/motion/rubberBand.d.ts +20 -0
- package/dist/motion/rubberBand.d.ts.map +1 -0
- package/dist/motion/rubberBand.js +91 -0
- package/dist/motion/selectPage.d.ts +26 -0
- package/dist/motion/selectPage.d.ts.map +1 -0
- package/dist/motion/selectPage.js +55 -0
- package/dist/motion/spring.d.ts +193 -0
- package/dist/motion/spring.d.ts.map +1 -0
- package/dist/motion/spring.js +442 -0
- package/dist/motion/transientCopy.d.ts +33 -0
- package/dist/motion/transientCopy.d.ts.map +1 -0
- package/dist/motion/transientCopy.js +314 -0
- package/dist/motion/uikit/gestures.d.ts +642 -0
- package/dist/motion/uikit/gestures.d.ts.map +1 -0
- package/dist/motion/uikit/gestures.js +428 -0
- package/dist/motion/uikit/index.d.ts +24 -0
- package/dist/motion/uikit/index.d.ts.map +1 -0
- package/dist/motion/uikit/index.js +26 -0
- package/dist/motion/uikit/navigation.d.ts +54 -0
- package/dist/motion/uikit/navigation.d.ts.map +1 -0
- package/dist/motion/uikit/navigation.js +83 -0
- package/dist/motion/uikit/scroll.d.ts +116 -0
- package/dist/motion/uikit/scroll.d.ts.map +1 -0
- package/dist/motion/uikit/scroll.js +146 -0
- package/dist/motion/uikit/springs.d.ts +545 -0
- package/dist/motion/uikit/springs.d.ts.map +1 -0
- package/dist/motion/uikit/springs.js +548 -0
- package/dist/motion/uikit/timing.d.ts +202 -0
- package/dist/motion/uikit/timing.d.ts.map +1 -0
- package/dist/motion/uikit/timing.js +201 -0
- package/dist/reset.a11y.chromium.spec.js +1 -0
- package/dist/reset.until-found.a11y.browser.spec.js +1 -0
- package/dist/theme/declarationBoundary.d.ts +13 -0
- package/dist/theme/declarationBoundary.d.ts.map +1 -1
- package/dist/theme/declarationBoundary.js +264 -1
- package/dist/theme/defineTheme.d.ts +111 -11
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/defineTheme.js +97 -7
- package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +9 -0
- package/dist/theme/generateThemeRules.d.ts +6 -2
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +468 -24
- package/dist/theme/index.d.ts +2 -2
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +1 -1
- package/dist/theme/statusColor.d.ts +48 -0
- package/dist/theme/statusColor.d.ts.map +1 -0
- package/dist/theme/statusColor.js +203 -0
- package/dist/theme/statusRoleDerivation.d.ts +11 -0
- package/dist/theme/statusRoleDerivation.d.ts.map +1 -0
- package/dist/theme/statusRoleDerivation.js +236 -0
- package/dist/theme/syntax/SyntaxTheme.d.ts +1 -1
- package/dist/theme/syntax/SyntaxTheme.js +1 -1
- package/dist/theme/syntax/defineSyntaxTheme.js +1 -1
- package/dist/theme/syntax/presets.d.ts +1 -1
- package/dist/theme/syntax/presets.js +1 -1
- package/dist/theme/syntax/tokens.d.ts +1 -1
- package/dist/theme/syntax/tokens.js +1 -1
- package/dist/theme/themeAdaptations.d.ts +25 -1
- package/dist/theme/themeAdaptations.d.ts.map +1 -1
- package/dist/theme/themeAdaptations.js +30 -1
- package/dist/theme/tokens.d.ts.map +1 -1
- package/dist/theme/tokens.js +16 -1
- package/dist/theme/tokens.stylex.d.ts +42 -2
- package/dist/theme/tokens.stylex.d.ts.map +1 -1
- package/dist/theme/tokens.stylex.js +54 -3
- package/dist/theme/useTheme.d.ts +4 -2
- package/dist/theme/useTheme.d.ts.map +1 -1
- package/dist/theme/useTheme.js +10 -4
- package/dist/utils/edgeAutoscroll.d.ts +53 -0
- package/dist/utils/edgeAutoscroll.d.ts.map +1 -0
- package/dist/utils/edgeAutoscroll.js +81 -0
- package/dist/utils/hitArea.d.ts +72 -0
- package/dist/utils/hitArea.d.ts.map +1 -0
- package/dist/utils/hitArea.js +681 -0
- package/dist/utils/interactionOverlay.stylex.d.ts +4 -1
- package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
- package/dist/utils/interactionOverlay.stylex.js +4 -1
- package/dist/utils/pressFeedback.d.ts +5 -1
- package/dist/utils/pressFeedback.d.ts.map +1 -1
- package/dist/utils/pressFeedback.js +285 -54
- package/dist/utils/pressGesture.d.ts +13 -1
- package/dist/utils/pressGesture.d.ts.map +1 -1
- package/dist/utils/pressGesture.js +40 -1
- package/dist/utils/touchPresentation.d.ts +48 -0
- package/dist/utils/touchPresentation.d.ts.map +1 -0
- package/dist/utils/touchPresentation.js +133 -0
- package/locales/af-ZA.json +1 -1
- package/locales/ar-SA.json +1 -1
- package/locales/ca-ES.json +1 -1
- package/locales/cs-CZ.json +1 -1
- package/locales/da-DK.json +1 -1
- package/locales/de-DE.json +1 -1
- package/locales/el-GR.json +1 -1
- package/locales/en.json +132 -0
- package/locales/es-ES.json +1 -1
- package/locales/fi-FI.json +1 -1
- package/locales/fr-FR.json +1 -1
- package/locales/he-IL.json +1 -1
- package/locales/hu-HU.json +1 -1
- package/locales/it-IT.json +1 -1
- package/locales/ja-JP.json +1 -1
- package/locales/ko-KR.json +1 -1
- package/locales/nl-NL.json +1 -1
- package/locales/no-NO.json +1 -1
- package/locales/pl-PL.json +1 -1
- package/locales/pseudo.json +99 -0
- package/locales/pt-BR.json +1 -1
- package/locales/pt-PT.json +1 -1
- package/locales/ro-RO.json +1 -1
- package/locales/ru-RU.json +1 -1
- package/locales/sr-SP.json +1 -1
- package/locales/sv-SE.json +1 -1
- package/locales/tr-TR.json +1 -1
- package/locales/uk-UA.json +1 -1
- package/locales/vi-VN.json +1 -1
- package/locales/zh-CN.json +1 -1
- package/locales/zh-TW.json +1 -1
- package/package.json +63 -8
- package/src/AlertDialog/AlertDialog.spec.md +85 -31
- package/src/AlertDialog/AlertDialog.tsx +1 -1
- package/src/AlertDialog/__tests__/AlertDialog.a11y.chromium.spec.ts +1 -0
- package/src/AppShell/AppShell.spec.md +334 -0
- package/src/AppShell/AppShell.tsx +170 -2
- package/src/AspectRatio/AspectRatio.spec.md +179 -0
- package/src/AspectRatio/__tests__/AspectRatioFitLayers.a11y.browser.spec.ts +1 -0
- package/src/Avatar/Avatar.spec.md +253 -0
- package/src/Avatar/AvatarStatusDot.spec.md +93 -79
- package/src/Avatar/AvatarStatusDot.test.tsx +22 -0
- package/src/Avatar/AvatarStatusDot.tsx +2 -2
- package/src/AvatarGroup/AvatarGroup.spec.md +205 -0
- package/src/AvatarGroup/AvatarGroupOverflow.spec.md +123 -120
- package/src/Badge/Badge.spec.md +207 -0
- package/src/Badge/Badge.test.tsx +13 -0
- package/src/Badge/Badge.tsx +38 -2
- package/src/Banner/Banner.spec.md +41 -28
- package/src/Banner/Banner.test.tsx +118 -16
- package/src/Banner/Banner.tsx +94 -7
- package/src/Blockquote/Blockquote.spec.md +171 -0
- package/src/BottomSheet/BottomSheet.doc.mjs +106 -24
- package/src/BottomSheet/BottomSheet.spec.md +271 -40
- package/src/BottomSheet/BottomSheet.test.tsx +491 -5
- package/src/BottomSheet/BottomSheet.tsx +544 -145
- package/src/BottomSheet/BottomSheetHostContext.ts +44 -0
- package/src/BottomSheet/BottomSheetPanel.test.tsx +73 -19
- package/src/BottomSheet/BottomSheetPanel.tsx +178 -63
- package/src/BottomSheet/BottomSheetReplace.test.tsx +1638 -0
- package/src/BottomSheet/BottomSheetStacking.announce.test.tsx +246 -0
- package/src/BottomSheet/BottomSheetStacking.test.tsx +3184 -0
- package/src/BottomSheet/BottomSheetSwitcher.doc.mjs +27 -31
- package/src/BottomSheet/BottomSheetSwitcher.spec.md +138 -43
- package/src/BottomSheet/BottomSheetSwitcher.tsx +275 -26
- package/src/BottomSheet/BottomSheetSwitcherContext.ts +6 -0
- package/src/BottomSheet/__tests__/BottomSheetDrag.a11y.chromium.spec.ts +1 -0
- package/src/BottomSheet/__tests__/BottomSheetFocusReturn.a11y.browser.spec.ts +1 -0
- package/src/BottomSheet/__tests__/BottomSheetKeyboard.a11y.browser.spec.ts +4 -1
- package/src/BottomSheet/__tests__/BottomSheetNativeModal.a11y.browser.spec.ts +1 -0
- package/src/BottomSheet/__tests__/BottomSheetPinchZoom.a11y.chromium.spec.ts +1 -0
- package/src/BottomSheet/__tests__/BottomSheetToastOutlet.a11y.chromium.spec.ts +83 -0
- package/src/BottomSheet/bottomSheetEscape.ts +21 -0
- package/src/BottomSheet/bottomSheetStack.ts +2054 -0
- package/src/BottomSheet/useSheetGestures.ts +68 -12
- package/src/Breadcrumbs/BreadcrumbItem.spec.md +104 -60
- package/src/Breadcrumbs/BreadcrumbItem.tsx +30 -1
- package/src/Breadcrumbs/Breadcrumbs.spec.md +165 -0
- package/src/Breadcrumbs/Breadcrumbs.test.tsx +90 -0
- package/src/Breadcrumbs/__tests__/Breadcrumbs.a11y.chromium.spec.ts +1 -0
- package/src/Button/Button.spec.md +322 -0
- package/src/Button/Button.test.tsx +8 -1
- package/src/Button/Button.tsx +36 -7
- package/src/Button/__tests__/Button.a11y.chromium.spec.ts +1 -0
- package/src/ButtonGroup/ButtonGroup.spec.md +220 -0
- package/src/Calendar/__tests__/Calendar.a11y.chromium.spec.ts +1 -0
- package/src/Card/Card.spec.md +205 -0
- package/src/Carousel/__tests__/Carousel.a11y.chromium.spec.ts +1 -0
- package/src/Center/Center.spec.md +104 -124
- package/src/Chat/ChatComposer.test.tsx +54 -0
- package/src/Chat/ChatComposer.tsx +41 -27
- package/src/Chat/ChatComposerInput.test.tsx +165 -21
- package/src/Chat/ChatComposerInput.tsx +73 -16
- package/src/Chat/ChatMessageMetadata.tsx +1 -1
- package/src/Chat/ChatPastedTextToken.test.tsx +71 -0
- package/src/Chat/ChatPastedTextToken.tsx +8 -7
- package/src/Chat/ChatToolCalls.tsx +5 -5
- package/src/Chat/__tests__/ChatLayoutScrollButton.a11y.chromium.spec.ts +22 -4
- package/src/Chat/__tests__/ChatLayoutScrollButtonSurface.a11y.chromium.spec.ts +1 -0
- package/src/Chat/__tests__/ChatMessageList.a11y.chromium.spec.ts +1 -0
- package/src/Chat/__tests__/ChatMessageMetadata.a11y.chromium.spec.ts +1 -0
- package/src/Chat/__tests__/ChatSendButton.a11y.chromium.spec.ts +1 -0
- package/src/Chat/__tests__/ChatSystemMessage.a11y.chromium.spec.ts +1 -0
- package/src/Chat/__tests__/ChatTokenizedText.a11y.chromium.spec.ts +1 -0
- package/src/Chat/__tests__/useChatStreamScroll.a11y.chromium.spec.ts +1 -0
- package/src/CheckboxInput/CheckboxInput.spec.md +97 -66
- package/src/CheckboxInput/__tests__/Checkbox.a11y.chromium.spec.ts +1 -0
- package/src/CheckboxList/CheckboxList.spec.md +92 -78
- package/src/CheckboxList/CheckboxListItem.spec.md +86 -60
- package/src/CheckboxList/__tests__/CheckboxList.a11y.chromium.spec.ts +1 -0
- package/src/ClickableCard/ClickableCard.doc.mjs +1 -2
- package/src/ClickableCard/ClickableCard.spec.md +124 -128
- package/src/ClickableCard/ClickableCard.test.tsx +14 -3
- package/src/ClickableCard/ClickableCard.tsx +44 -28
- package/src/Code/Code.spec.md +30 -32
- package/src/CodeBlock/CodeBlock.doc.mjs +21 -4
- package/src/CodeBlock/CodeBlock.spec.md +96 -61
- package/src/CodeBlock/CodeBlock.test.tsx +97 -1
- package/src/CodeBlock/CodeBlock.tsx +132 -22
- package/src/CodeBlock/CodeLanguage.test.tsx +173 -0
- package/src/CodeBlock/__tests__/CodeBlockCopyClearance.a11y.chromium.spec.ts +290 -0
- package/src/CodeBlock/__tests__/CodeBlockLanguages.a11y.chromium.spec.ts +64 -0
- package/src/CodeBlock/__tests__/CodeBlockOverflowStop.a11y.chromium.spec.ts +1 -0
- package/src/CodeBlock/__tests__/DiffRowPaint.a11y.chromium.spec.ts +1 -0
- package/src/CodeBlock/grammar.ts +291 -0
- package/src/CodeBlock/index.ts +7 -0
- package/src/CodeBlock/languages/dockerfile.ts +43 -0
- package/src/CodeBlock/languages/graphql.ts +30 -0
- package/src/CodeBlock/languages/java.ts +28 -0
- package/src/CodeBlock/languages/lua.ts +21 -0
- package/src/CodeBlock/languages/objective-c.ts +26 -0
- package/src/CodeBlock/languages/powershell.ts +31 -0
- package/src/CodeBlock/languages/ruby.ts +29 -0
- package/src/CodeBlock/languages/thrift.ts +32 -0
- package/src/CodeBlock/languages/toml.ts +36 -0
- package/src/CodeBlock/languages.test.ts +402 -0
- package/src/CodeBlock/tokenizer.ts +176 -16
- package/src/CodeBlock/tokenizerBudget.test.ts +112 -0
- package/src/Collapsible/Collapsible.doc.mjs +6 -0
- package/src/Collapsible/Collapsible.spec.md +26 -23
- package/src/Collapsible/Collapsible.tsx +121 -2
- package/src/Collapsible/__tests__/Collapsible.a11y.chromium.spec.ts +1 -0
- package/src/Collapsible/__tests__/CollapsibleGroup.a11y.chromium.spec.ts +1 -0
- package/src/Collapsible/__tests__/CollapsibleGroupAccordion.a11y.chromium.spec.ts +1 -0
- package/src/CommandPalette/CommandPalette.perf.test.ts +8 -4
- package/src/CommandPalette/CommandPalette.tsx +17 -1
- package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +6 -3
- package/src/CommandPalette/CommandPaletteEmpty.spec.md +190 -0
- package/src/CommandPalette/CommandPaletteEmpty.tsx +4 -0
- package/src/CommandPalette/CommandPaletteInput.tsx +21 -2
- package/src/CommandPalette/__tests__/CommandPalette.a11y.chromium.spec.ts +1 -0
- package/src/CommandPalette/__tests__/CommandPaletteEmptyAudit.a11y.chromium.spec.ts +715 -0
- package/src/CommandPalette/__tests__/CommandPaletteFooter.a11y.chromium.spec.ts +3 -2
- package/src/CommandPalette/__tests__/CommandPaletteInputAudit.a11y.chromium.spec.ts +1 -0
- package/src/CommandPalette/__tests__/CommandPaletteItemAudit.a11y.chromium.spec.ts +1 -0
- package/src/CommandPalette/busyStartSettle.ts +26 -0
- package/src/ComplexSelector/ComplexSelector.doc.mjs +1 -1
- package/src/ComplexSelector/ComplexSelector.focusableDisabled.test.tsx +1 -1
- package/src/ComplexSelector/ComplexSelector.fr10.test.tsx +9 -9
- package/src/ComplexSelector/ComplexSelector.spec.md +161 -107
- package/src/ComplexSelector/ComplexSelector.test.tsx +236 -17
- package/src/ComplexSelector/ComplexSelector.tsx +69 -4
- package/src/ComplexSelector/__tests__/ComplexSelector.a11y.chromium.spec.ts +965 -0
- package/src/ContextMenu/ContextMenu.doc.mjs +1 -1
- package/src/ContextMenu/ContextMenu.spec.md +38 -30
- package/src/ContextMenu/ContextMenu.test.tsx +189 -11
- package/src/ContextMenu/ContextMenu.tsx +75 -17
- package/src/ContextMenu/__tests__/ContextMenuAudit.a11y.chromium.spec.ts +1 -0
- package/src/ContextMenu/__tests__/ContextMenuCursorAnchor.a11y.browser.spec.ts +1 -0
- package/src/ContextMenu/__tests__/ContextMenuLongPress.a11y.chromium.spec.ts +117 -0
- package/src/DateInput/DateInput.tsx +9 -4
- package/src/DateInput/DateInputTouch.test.tsx +10 -1
- package/src/DateInput/NativeDateField.tsx +2 -1
- package/src/DateInput/TouchDateField.tsx +2 -1
- package/src/DateInput/Wheel.tsx +4 -1
- package/src/DateInput/__tests__/DateInputAudit.a11y.chromium.spec.ts +1 -0
- package/src/DateInput/__tests__/WheelPinchZoom.a11y.chromium.spec.ts +171 -0
- package/src/Dialog/Dialog.doc.mjs +201 -47
- package/src/Dialog/Dialog.spec.md +20 -4
- package/src/Dialog/Dialog.tsx +37 -10
- package/src/Dialog/__tests__/Dialog.a11y.browser.spec.ts +1 -0
- package/src/Dialog/__tests__/Dialog.a11y.chromium.spec.ts +1 -0
- package/src/Dialog/__tests__/Dialog.reduced-motion.a11y.browser.spec.ts +252 -0
- package/src/Divider/Divider.spec.md +79 -70
- package/src/Drawer/Drawer.tsx +38 -35
- package/src/Drawer/__tests__/DrawerAudit.a11y.chromium.spec.ts +1 -0
- package/src/Drawer/__tests__/DrawerHeaderAudit.a11y.chromium.spec.ts +1 -0
- package/src/DropdownMenu/DropdownMenu.spec.md +14 -6
- package/src/DropdownMenu/DropdownMenu.ssr.test.tsx +44 -8
- package/src/DropdownMenu/DropdownMenu.test.tsx +107 -5
- package/src/DropdownMenu/DropdownMenu.tsx +51 -34
- package/src/DropdownMenu/DropdownMenuGroup.doc.mjs +2 -2
- package/src/DropdownMenu/DropdownMenuGroup.tsx +12 -6
- package/src/DropdownMenu/DropdownMenuItem.tsx +5 -5
- package/src/DropdownMenu/DropdownMenuRadioItem.doc.mjs +5 -2
- package/src/DropdownMenu/DropdownMenuRadioItem.spec.md +226 -0
- package/src/DropdownMenu/DropdownMenuRadioItem.tsx +32 -16
- package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +158 -0
- package/src/DropdownMenu/DropdownMenuSheetFirstOpen.test.tsx +72 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +9 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.spec.md +225 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +105 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +6 -6
- package/src/DropdownMenu/MenuBottomSheet.tsx +42 -7
- package/src/DropdownMenu/MenuBottomSheetActionList.tsx +3 -3
- package/src/DropdownMenu/__tests__/DropdownMenuDividerAudit.a11y.chromium.spec.ts +1 -0
- package/src/DropdownMenu/__tests__/DropdownMenuDrillIn.a11y.chromium.spec.ts +1 -0
- package/src/DropdownMenu/__tests__/DropdownMenuFocusReturn.a11y.browser.spec.ts +1 -0
- package/src/DropdownMenu/__tests__/DropdownMenuGroupAudit.a11y.chromium.spec.ts +1 -0
- package/src/DropdownMenu/__tests__/DropdownMenuItemAudit.a11y.chromium.spec.ts +1 -0
- package/src/DropdownMenu/__tests__/DropdownMenuRadioGroupAudit.a11y.chromium.spec.ts +1 -0
- package/src/DropdownMenu/__tests__/DropdownMenuRadioItemAudit.a11y.chromium.spec.ts +540 -0
- package/src/DropdownMenu/__tests__/DropdownMenuSubMenuAudit.a11y.chromium.spec.ts +671 -0
- package/src/DropdownMenu/__tests__/Menu.a11y.chromium.spec.ts +1 -0
- package/src/DropdownMenu/__tests__/MenuButton.a11y.chromium.spec.ts +1 -0
- package/src/DropdownMenu/__tests__/MenuHeaderFooter.a11y.chromium.spec.ts +1 -0
- package/src/DropdownMenu/__tests__/MenuHoverFocus.a11y.chromium.spec.ts +238 -0
- package/src/DropdownMenu/__tests__/MenuPinchZoom.a11y.chromium.spec.ts +1 -0
- package/src/DropdownMenu/__tests__/MenuPress.a11y.chromium.spec.ts +1 -0
- package/src/DropdownMenu/__tests__/SubMenuHeaderFooter.a11y.chromium.spec.ts +1 -0
- package/src/DropdownMenu/lazyMenuBottomSheet.ts +28 -2
- package/src/DropdownMenu/menuBottomSheet.stylex.ts +33 -0
- package/src/DropdownMenu/menuItemHover.ts +13 -1
- package/src/DropdownMenu/menuTouchAction.stylex.ts +28 -0
- package/src/DropdownMenu/modules/useMenuPress.spec.md +90 -62
- package/src/DropdownMenu/useMenuDrillIn.tsx +7 -5
- package/src/EmptyState/EmptyState.announce.test.tsx +227 -0
- package/src/EmptyState/EmptyState.doc.mjs +1 -1
- package/src/EmptyState/EmptyState.spec.md +22 -14
- package/src/EmptyState/EmptyState.test.tsx +8 -8
- package/src/EmptyState/EmptyState.tsx +7 -5
- package/src/Field/Field.spec.md +57 -48
- package/src/Field/Field.tsx +1 -1
- package/src/Field/FieldLabel.spec.md +70 -59
- package/src/Field/FieldLabel.tsx +1 -1
- package/src/Field/PanelSearchInput.tsx +23 -13
- package/src/Field/__tests__/FieldLabelAudit.a11y.chromium.spec.ts +1 -0
- package/src/Field/inputDisabledFocus.ts +28 -0
- package/src/Field/inputStyles.stylex.ts +15 -15
- package/src/FieldStatus/FieldStatus.test.tsx +12 -0
- package/src/FieldStatus/FieldStatus.tsx +12 -3
- package/src/FieldStatus/__tests__/StatusMessage.a11y.chromium.spec.ts +1 -0
- package/src/FileInput/FileInput.doc.mjs +1 -1
- package/src/FileInput/FileInput.test.tsx +102 -0
- package/src/FileInput/FileInput.tsx +18 -12
- package/src/FormLayout/FormLayout.spec.md +69 -51
- package/src/Grid/Grid.spec.md +72 -69
- package/src/Grid/GridSpan.spec.md +158 -0
- package/src/Heading/Heading.spec.md +198 -0
- package/src/HoverCard/HoverCard.spec.md +244 -0
- package/src/HoverCard/HoverCard.test.tsx +93 -3
- package/src/Icon/Icon.doc.mjs +67 -5
- package/src/Icon/Icon.test.tsx +548 -9
- package/src/Icon/Icon.tsx +79 -15
- package/src/Icon/IconSize.stylex.ts +27 -11
- package/src/Icon/globalIconRegistry.test.tsx +395 -3
- package/src/Icon/globalIconRegistry.tsx +184 -36
- package/src/Icon/index.ts +29 -1
- package/src/Icon/useIcon.ts +5 -1
- package/src/IconButton/IconButton.spec.md +197 -0
- package/src/IconButton/IconButton.test.tsx +5 -2
- package/src/InputGroup/InputGroup.spec.md +199 -0
- package/src/InputGroup/InputGroup.test.tsx +120 -0
- package/src/InputGroup/InputGroup.tsx +59 -52
- package/src/InputGroup/InputGroupInternalContext.ts +15 -0
- package/src/InputGroup/InputGroupText.spec.md +139 -0
- package/src/InputGroup/InputGroupText.tsx +2 -0
- package/src/InputGroup/groupStyles.ts +22 -11
- package/src/Item/Item.test.tsx +158 -1
- package/src/Item/Item.tsx +42 -7
- package/src/Item/ItemMarkerColumns.a11y.chromium.spec.ts +211 -0
- package/src/Item/ItemMarkerColumnsContext.tsx +20 -0
- package/src/Item/ItemSwipeLayer.tsx +9 -0
- package/src/Item/__tests__/ItemSwipeActions.a11y.chromium.spec.ts +1 -0
- package/src/Item/__tests__/ItemSwipePinchZoom.a11y.chromium.spec.ts +186 -0
- package/src/Item/useSwipeAction.ts +71 -5
- package/src/Kbd/Kbd.test.tsx +95 -0
- package/src/Kbd/Kbd.tsx +30 -23
- package/src/Layer/LayerProvider.spec.md +149 -0
- package/src/Layer/__tests__/LayerReducedMotion.a11y.chromium.spec.ts +176 -0
- package/src/Layer/__tests__/TouchTrigger.a11y.chromium.spec.ts +200 -0
- package/src/Layer/layerAnimations.stylex.ts +22 -2
- package/src/Layer/layerDismissalInvariants.test.tsx +9 -0
- package/src/Layer/layerSlideRules.ts +141 -8
- package/src/Layer/layerStack.ts +129 -62
- package/src/Layer/modalOutlet.ts +156 -15
- package/src/Layer/preserveAnimations.ts +304 -0
- package/src/Layer/useLayer.doc.mjs +1 -1
- package/src/Layer/useLayer.test.tsx +850 -0
- package/src/Layer/useLayer.tsx +644 -58
- package/src/Layer/useLayerDismissal.test.tsx +85 -2
- package/src/Layer/useLayerDismissal.ts +12 -9
- package/src/Layer/useTouchTrigger.ts +95 -41
- package/src/Layout/Layout.tsx +18 -0
- package/src/Layout/LayoutContent.tsx +5 -14
- package/src/Layout/LayoutFooter.tsx +2 -0
- package/src/Layout/LayoutHeader.tsx +2 -0
- package/src/Layout/__tests__/Layout.a11y.chromium.spec.ts +1 -0
- package/src/Layout/layoutEdges.stylex.ts +25 -0
- package/src/Lightbox/Lightbox.spec.md +9 -8
- package/src/Lightbox/Lightbox.test.tsx +83 -0
- package/src/Lightbox/Lightbox.tsx +149 -125
- package/src/Lightbox/LightboxKeyboard.a11y.browser.spec.ts +78 -0
- package/src/Lightbox/LightboxViewport.a11y.browser.spec.ts +70 -0
- package/src/Link/Link.spec.md +229 -0
- package/src/Link/LinkProvider.spec.md +167 -0
- package/src/Link/__tests__/Link.a11y.chromium.spec.ts +1 -0
- package/src/Link/__tests__/Link.navigation.a11y.chromium.spec.ts +1 -0
- package/src/List/List.spec.md +113 -34
- package/src/List/List.tsx +13 -1
- package/src/List/ListContext.tsx +19 -5
- package/src/List/ListItem.doc.mjs +3 -3
- package/src/List/ListItem.tsx +97 -28
- package/src/List/ListMarkers.a11y.chromium.spec.ts +904 -0
- package/src/Markdown/Markdown.codeLanguages.test.tsx +137 -0
- package/src/Markdown/Markdown.doc.mjs +12 -0
- package/src/Markdown/Markdown.fr23.bench.ts +3 -1
- package/src/Markdown/Markdown.fr23.perf.test.ts +45 -3
- package/src/Markdown/Markdown.fr23.sampling.ts +13 -4
- package/src/Markdown/Markdown.spec.md +71 -59
- package/src/Markdown/Markdown.test.tsx +50 -0
- package/src/Markdown/Markdown.tsx +61 -8
- package/src/Markdown/MarkdownTable.a11y.chromium.spec.ts +1 -0
- package/src/Markdown/__tests__/MarkdownNesting.a11y.chromium.spec.ts +1 -0
- package/src/MobileNav/MobileNav.doc.mjs +2 -2
- package/src/MobileNav/MobileNav.spec.md +161 -64
- package/src/MobileNav/MobileNav.test.tsx +27 -10
- package/src/MobileNav/MobileNav.tsx +51 -38
- package/src/MobileNav/MobileNavPinchZoom.a11y.chromium.spec.ts +1 -0
- package/src/MobileNav/MobileNavToggle.test.tsx +63 -0
- package/src/MobileNav/MobileNavToggle.tsx +13 -5
- package/src/MobileNav/__tests__/MobileNavWidth.a11y.chromium.spec.ts +103 -0
- package/src/MoreMenu/MoreMenu.doc.mjs +2 -2
- package/src/MoreMenu/MoreMenu.spec.md +88 -53
- package/src/MultiSelector/CreateRow.a11y.chromium.spec.ts +67 -9
- package/src/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.ts +1 -0
- package/src/MultiSelector/MultiSelector.test.tsx +122 -10
- package/src/MultiSelector/MultiSelector.tsx +24 -4
- package/src/MultiSelector/OptionActions.a11y.chromium.spec.ts +1 -0
- package/src/MultiSelector/__tests__/MultiSelector.a11y.chromium.spec.ts +1 -0
- package/src/NavIcon/NavIcon.spec.md +66 -38
- package/src/NavMenu/NavHeadingMenu.spec.md +104 -46
- package/src/NavMenu/NavHeadingMenu.test.tsx +276 -2
- package/src/NavMenu/NavHeadingMenu.tsx +42 -4
- package/src/NavMenu/NavHeadingMenuItem.tsx +60 -6
- package/src/NavMenu/NavMenuContext.tsx +11 -0
- package/src/NavMenu/__tests__/NavMenusSlideSelection.a11y.chromium.spec.ts +137 -0
- package/src/NumberInput/NumberInput.doc.mjs +6 -6
- package/src/NumberInput/NumberInput.spec.md +248 -0
- package/src/NumberInput/NumberInput.test.tsx +187 -14
- package/src/NumberInput/NumberInput.tsx +86 -24
- package/src/NumberInput/__tests__/NumberInput.a11y.chromium.spec.ts +1 -0
- package/src/Overlay/Overlay.doc.mjs +2 -2
- package/src/Overlay/Overlay.test.tsx +72 -4
- package/src/Overlay/Overlay.tsx +18 -8
- package/src/Pagination/Pagination.test.tsx +2 -2
- package/src/Popover/Popover.doc.mjs +38 -2
- package/src/Popover/Popover.spec.md +90 -11
- package/src/Popover/Popover.test.tsx +340 -2
- package/src/Popover/Popover.tsx +401 -35
- package/src/Popover/PopoverPresentation.test.tsx +952 -0
- package/src/Popover/__tests__/PopoverSecondDocument.a11y.chromium.spec.ts +205 -0
- package/src/Popover/index.ts +5 -1
- package/src/Popover/lazyPopoverBottomSheet.ts +57 -0
- package/src/Popover/usePopover.tsx +11 -5
- package/src/PowerSearch/PowerSearch.spec.md +423 -53
- package/src/PowerSearch/PowerSearch.test.tsx +77 -1
- package/src/PowerSearch/PowerSearch.tsx +7 -5
- package/src/ProgressBar/ProgressBar.test.tsx +12 -0
- package/src/ProgressBar/ProgressBar.tsx +18 -0
- package/src/ProgressBar/__tests__/ProgressBar.a11y.chromium.spec.ts +1 -0
- package/src/RadioList/RadioList.spec.md +227 -0
- package/src/RadioList/RadioList.test.tsx +34 -7
- package/src/RadioList/RadioListItem.press.source-build.test.mjs +80 -0
- package/src/RadioList/RadioListItem.spec.md +223 -0
- package/src/RadioList/RadioListItem.tsx +26 -12
- package/src/RadioList/__tests__/RadioGroup.a11y.chromium.spec.ts +1 -0
- package/src/Resizable/__tests__/ResizeHandle.a11y.chromium.spec.ts +1 -0
- package/src/ScrollableArea/ScrollableArea.spec.md +6 -5
- package/src/ScrollableArea/ScrollableArea.test.tsx +5 -0
- package/src/ScrollableArea/ScrollableArea.tsx +4 -0
- package/src/Section/Section.spec.md +102 -44
- package/src/SegmentedControl/SegmentedControl.spec.md +162 -53
- package/src/SegmentedControl/SegmentedControl.test.tsx +46 -0
- package/src/SegmentedControl/SegmentedControl.tsx +7 -3
- package/src/SegmentedControl/SegmentedControlItem.spec.md +206 -0
- package/src/SelectableCard/SelectableCard.doc.mjs +7 -6
- package/src/SelectableCard/SelectableCard.spec.md +230 -0
- package/src/SelectableCard/SelectableCard.test.tsx +11 -1
- package/src/SelectableCard/SelectableCard.tsx +49 -33
- package/src/Selector/Selector.sheetActiveDescendant.test.tsx +95 -0
- package/src/Selector/Selector.spec.md +12 -4
- package/src/Selector/Selector.test.tsx +114 -8
- package/src/Selector/Selector.tsx +30 -6
- package/src/Selector/__tests__/ComboboxField.a11y.chromium.spec.ts +458 -0
- package/src/Selector/__tests__/EmptyStateAnnouncement.a11y.chromium.spec.ts +1 -0
- package/src/Selector/__tests__/Listbox.a11y.chromium.spec.ts +1 -0
- package/src/Selector/__tests__/Selector.a11y.chromium.spec.ts +1 -0
- package/src/Selector/__tests__/Selector.combobox.a11y.chromium.spec.ts +1 -0
- package/src/Selector/hooks.ts +234 -10
- package/src/Selector/useCombobox.doc.mjs +156 -9
- package/src/Selector/useCombobox.public.test.tsx +89 -0
- package/src/Selector/useCombobox.test.tsx +444 -0
- package/src/SideNav/SideNav.spec.md +50 -30
- package/src/SideNav/SideNav.test.tsx +425 -25
- package/src/SideNav/SideNav.tsx +85 -1
- package/src/SideNav/SideNavCollapseButton.spec.md +161 -0
- package/src/SideNav/SideNavHeading.spec.md +226 -0
- package/src/SideNav/SideNavHeading.tsx +102 -6
- package/src/SideNav/SideNavItem.spec.md +246 -0
- package/src/SideNav/SideNavItem.tsx +40 -9
- package/src/SideNav/SideNavRailMotion.test.tsx +620 -0
- package/src/SideNav/SideNavSection.spec.md +153 -0
- package/src/SideNav/__tests__/SideNavRailMotion.interaction.browser.spec.ts +417 -0
- package/src/SideNav/railMotion.ts +315 -0
- package/src/Skeleton/Skeleton.spec.md +99 -42
- package/src/Skeleton/Skeleton.test.tsx +108 -1
- package/src/Skeleton/Skeleton.tsx +30 -2
- package/src/Slider/Slider.fr10.test.tsx +34 -0
- package/src/Slider/Slider.test.tsx +172 -0
- package/src/Slider/Slider.tsx +70 -14
- package/src/Slider/__tests__/Slider.a11y.chromium.spec.ts +1 -0
- package/src/Spinner/Spinner.spec.md +231 -0
- package/src/Stack/Stack.spec.md +104 -56
- package/src/StatusDot/StatusDot.spec.md +139 -51
- package/src/StatusDot/StatusDot.test.tsx +13 -0
- package/src/StatusDot/StatusDot.tsx +27 -0
- package/src/Stepper/Step.spec.md +206 -0
- package/src/Stepper/Step.tsx +19 -3
- package/src/Stepper/Stepper.test.tsx +50 -0
- package/src/Switch/Switch.focusRing.source-build.test.mjs +81 -0
- package/src/Switch/Switch.spec.md +150 -66
- package/src/Switch/Switch.tsx +11 -9
- package/src/Switch/__tests__/Switch.a11y.chromium.spec.ts +1 -0
- package/src/Switch/switch.markers.stylex.ts +7 -2
- package/src/TabList/Tab.spec.md +201 -0
- package/src/TabList/Tab.tsx +7 -1
- package/src/TabList/TabList.doc.mjs +3 -3
- package/src/TabList/TabList.test.tsx +27 -0
- package/src/TabList/TabMenu.spec.md +198 -0
- package/src/TabList/TabMenu.tsx +24 -1
- package/src/TabList/__tests__/TabListOverflow.interaction.browser.spec.ts +99 -0
- package/src/TabList/__tests__/Tabs.a11y.chromium.spec.ts +1 -0
- package/src/Table/Table.spec.md +54 -30
- package/src/Table/TableCell.tsx +9 -0
- package/src/Table/TableHeaderCell.tsx +2 -0
- package/src/Table/TableRow.tsx +3 -0
- package/src/Table/__tests__/Table.a11y.chromium.spec.ts +129 -0
- package/src/Table/__tests__/Table.a11y.contracts.ts +35 -0
- package/src/Table/__tests__/Table.a11y.renders.tsx +112 -0
- package/src/Table/__tests__/Table.a11y.states.ts +140 -0
- package/src/Table/__tests__/Table.a11y.test.tsx +198 -0
- package/src/Table/__tests__/TableMinWidth.a11y.chromium.spec.ts +1 -0
- package/src/Table/__tests__/TableRowGlide.a11y.browser.spec.ts +382 -0
- package/src/Table/__tests__/TableScroll.a11y.chromium.spec.ts +1 -0
- package/src/Table/__tests__/TableStickyDividers.a11y.browser.spec.ts +560 -0
- package/src/Table/glidingDivider.ts +336 -0
- package/src/Table/plugins/columnResize/useTableColumnResize.tsx +23 -8
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.glide.test.tsx +280 -0
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +91 -9
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +471 -10
- package/src/Table/plugins/rowStatus/useTableRowStatus.spec.md +4 -4
- package/src/Table/plugins/sortable/__tests__/useTableSortable.a11y.test.tsx +174 -0
- package/src/Table/plugins/sortable/__tests__/useTableSortable.a11y.ts +86 -0
- package/src/Table/plugins/sortable/useTableSortable.test.tsx +0 -12
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.test.tsx +51 -1
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +312 -12
- package/src/Table/rowDivider.ts +154 -0
- package/src/Table/useTableRowExpansion.doc.mjs +8 -0
- package/src/Text/Text.spec.md +114 -127
- package/src/TextArea/TextArea.doc.mjs +6 -6
- package/src/TextArea/TextArea.spec.md +164 -64
- package/src/TextArea/TextArea.test.tsx +65 -6
- package/src/TextArea/TextArea.tsx +27 -15
- package/src/TextInput/TextInput.doc.mjs +8 -8
- package/src/TextInput/TextInput.spec.md +260 -0
- package/src/TextInput/TextInput.test.tsx +126 -10
- package/src/TextInput/TextInput.tsx +57 -23
- package/src/TextInput/__tests__/TextInput.a11y.chromium.spec.ts +1 -0
- package/src/Thumbnail/Thumbnail.doc.mjs +1 -2
- package/src/Thumbnail/Thumbnail.spec.md +244 -0
- package/src/Thumbnail/Thumbnail.test.tsx +120 -7
- package/src/Thumbnail/Thumbnail.tsx +77 -31
- package/src/TimeInput/TimeInput.spec.md +273 -0
- package/src/TimeInput/TimeInput.tsx +12 -4
- package/src/TimeInput/TouchTimeField.tsx +2 -1
- package/src/Timestamp/Timestamp.spec.md +252 -0
- package/src/Toast/Toast.spec.md +300 -0
- package/src/Toast/ToastViewport.modalHost.test.tsx +630 -5
- package/src/Toast/ToastViewport.test.tsx +137 -0
- package/src/Toast/ToastViewport.tsx +63 -6
- package/src/ToggleButton/ToggleButton.spec.md +256 -0
- package/src/ToggleButton/ToggleButtonGroup.spec.md +195 -0
- package/src/ToggleButton/__tests__/ToggleButton.a11y.chromium.spec.ts +1 -0
- package/src/Token/Token.spec.md +271 -0
- package/src/Token/__tests__/TokenRemoveTarget.a11y.chromium.spec.ts +1 -0
- package/src/Tokenizer/Tokenizer.props-type.test.tsx +126 -0
- package/src/Tokenizer/Tokenizer.spec.md +313 -72
- package/src/Tokenizer/Tokenizer.ssr.test.tsx +196 -0
- package/src/Tokenizer/Tokenizer.test.tsx +44 -8
- package/src/Tokenizer/Tokenizer.tsx +586 -41
- package/src/Tokenizer/TokenizerBottomSheet.test.tsx +2719 -0
- package/src/Tokenizer/TokenizerBottomSheet.tsx +957 -0
- package/src/Tokenizer/__tests__/TokenizerEndLane.a11y.chromium.spec.ts +61 -27
- package/src/Toolbar/Toolbar.spec.md +103 -49
- package/src/Toolbar/__tests__/Toolbar.a11y.chromium.spec.ts +1 -0
- package/src/Tooltip/Tooltip.spec.md +161 -36
- package/src/Tooltip/Tooltip.test.tsx +171 -3
- package/src/Tooltip/__tests__/Tooltip.a11y.chromium.spec.ts +1 -0
- package/src/Tooltip/__tests__/Tooltip.a11y.states.ts +2 -2
- package/src/Tooltip/__tests__/TooltipFocusReturn.a11y.chromium.spec.ts +1 -0
- package/src/Tooltip/__tests__/TooltipHoverBridge.a11y.chromium.spec.ts +1 -0
- package/src/Tooltip/__tests__/TooltipTallContent.a11y.browser.spec.ts +673 -0
- package/src/Tooltip/__tests__/TooltipTallContentTracking.a11y.browser.spec.ts +1162 -0
- package/src/Tooltip/useTooltip.tsx +7 -2
- package/src/TopNav/TopNav.spec.md +190 -0
- package/src/TopNav/TopNav.test.tsx +89 -0
- package/src/TopNav/TopNavHeading.spec.md +211 -0
- package/src/TopNav/TopNavHeading.tsx +35 -2
- package/src/TopNav/TopNavItem.spec.md +189 -0
- package/src/TopNav/TopNavMegaMenu.reduced-motion.source-build.test.mjs +83 -0
- package/src/TopNav/TopNavMegaMenu.spec.md +190 -0
- package/src/TopNav/TopNavMegaMenu.tsx +21 -4
- package/src/TopNav/TopNavMegaMenuFeaturedCard.spec.md +150 -0
- package/src/TopNav/TopNavMegaMenuItem.spec.md +155 -0
- package/src/TopNav/TopNavMenu.spec.md +202 -0
- package/src/TopNav/TopNavMenu.test.tsx +65 -1
- package/src/TopNav/TopNavMenu.tsx +30 -1
- package/src/TopNav/__tests__/TopNavMobileLongHeading.a11y.chromium.spec.ts +1 -0
- package/src/TreeList/TreeList.doc.mjs +13 -0
- package/src/TreeList/TreeList.spec.md +54 -35
- package/src/TreeList/TreeList.tsx +234 -2
- package/src/TreeList/TreeListBranches.tsx +8 -6
- package/src/TreeList/TreeListItem.tsx +12 -6
- package/src/TreeList/__tests__/TreeList.a11y.chromium.spec.ts +19 -6
- package/src/TreeList/__tests__/TreeListGuideAlignment.interaction.browser.spec.ts +127 -0
- package/src/TreeList/__tests__/TreeListRowNames.a11y.chromium.spec.ts +1 -0
- package/src/Typeahead/BaseTypeahead.emptyState.a11y.chromium.spec.ts +138 -0
- package/src/Typeahead/BaseTypeahead.test.tsx +201 -4
- package/src/Typeahead/BaseTypeahead.tsx +26 -10
- package/src/Typeahead/Typeahead.test.tsx +114 -1
- package/src/Typeahead/Typeahead.tsx +34 -16
- package/src/VisuallyHidden/VisuallyHidden.spec.md +170 -0
- package/src/__tests__/BusyOwnerAnnouncement.test.tsx +66 -5
- package/src/__tests__/CardPress.a11y.chromium.spec.ts +353 -0
- package/src/__tests__/DisabledTriggerFocus.a11y.chromium.spec.ts +2 -1
- package/src/__tests__/PressModality.a11y.chromium.spec.ts +392 -0
- package/src/__tests__/PressedState.a11y.chromium.spec.ts +1 -0
- package/src/__tests__/pressState.ts +43 -1
- package/src/__tests__/unthemedLength.ts +34 -0
- package/src/gestures/GestureArena.ts +966 -0
- package/src/gestures/GestureRecognizer.ts +626 -0
- package/src/gestures/LongPressGestureRecognizer.ts +186 -0
- package/src/gestures/PanGestureRecognizer.ts +410 -0
- package/src/gestures/TapGestureRecognizer.ts +192 -0
- package/src/gestures/VelocityTracker.ts +194 -0
- package/src/gestures/__tests__/LongPressGestureRecognizer.test.ts +141 -0
- package/src/gestures/__tests__/PanGestureRecognizer.test.ts +327 -0
- package/src/gestures/__tests__/TapGestureRecognizer.test.ts +154 -0
- package/src/gestures/__tests__/VelocityTracker.streams.test.ts +243 -0
- package/src/gestures/__tests__/VelocityTracker.test.ts +261 -0
- package/src/gestures/__tests__/arena.test.ts +824 -0
- package/src/gestures/__tests__/arenaContinuous.test.ts +207 -0
- package/src/gestures/__tests__/arenaTapLongPress.test.ts +211 -0
- package/src/gestures/__tests__/fixtures/pointer-streams/README.md +82 -0
- package/src/gestures/__tests__/fixtures/pointer-streams/android-chromium-fling.json +130 -0
- package/src/gestures/__tests__/fixtures/pointer-streams/android-chromium-slow.json +860 -0
- package/src/gestures/__tests__/fixtures/pointer-streams/android-chromium-stop-release.json +357 -0
- package/src/gestures/__tests__/fixtures/pointer-streams/android-firefox-fling.json +66 -0
- package/src/gestures/__tests__/fixtures/pointer-streams/android-firefox-slow.json +268 -0
- package/src/gestures/__tests__/fixtures/pointer-streams/android-firefox-stop-release.json +128 -0
- package/src/gestures/__tests__/fixtures/pointer-streams/capture.html +123 -0
- package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-mouse-fling.json +64 -0
- package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-mouse-slow.json +268 -0
- package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-mouse-stop-release.json +124 -0
- package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-pen-fling.json +64 -0
- package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-pen-slow.json +268 -0
- package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-pen-stop-release.json +124 -0
- package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-touch-fling.json +84 -0
- package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-touch-slow.json +381 -0
- package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-touch-stop-release.json +171 -0
- package/src/gestures/__tests__/fixtures/pointer-streams/ios-safari-fling.json +45 -0
- package/src/gestures/__tests__/fixtures/pointer-streams/ios-safari-slow.json +101 -0
- package/src/gestures/__tests__/fixtures/pointer-streams/ios-safari-stop-release.json +130 -0
- package/src/gestures/__tests__/harness.ts +204 -0
- package/src/gestures/geometry.ts +55 -0
- package/src/gestures/types.ts +161 -0
- package/src/hooks/AnnounceRenderedText.tsx +27 -0
- package/src/hooks/ModalAnnounceProvider.tsx +155 -0
- package/src/hooks/__tests__/MenuPressShadowRoot.a11y.chromium.spec.ts +98 -4
- package/src/hooks/__tests__/menuLinkClicks.ts +71 -0
- package/src/hooks/actionGroupTracker.exports.test.ts +28 -0
- package/src/hooks/actionGroupTracker.test.ts +510 -0
- package/src/hooks/actionGroupTracker.ts +449 -0
- package/src/hooks/index.ts +6 -0
- package/src/hooks/menuPressOnItems.ts +40 -0
- package/src/hooks/modalAnnounce.ts +439 -0
- package/src/hooks/scrollGeometry.ts +71 -4
- package/src/hooks/useAdaptivePresentation.ts +46 -9
- package/src/hooks/useAnimatedLayout.doc.mjs +101 -0
- package/src/hooks/useAnimatedLayout.ts +61 -0
- package/src/hooks/useAnnounce.doc.mjs +4 -4
- package/src/hooks/useAnnounce.modal.test.tsx +1291 -0
- package/src/hooks/useAnnounce.test.tsx +64 -4
- package/src/hooks/useAnnounce.ts +452 -28
- package/src/hooks/useAnnounceRenderedText.adopters.test.tsx +226 -0
- package/src/hooks/useAnnounceRenderedText.ts +81 -11
- package/src/hooks/useBusyAnnouncement.adopters.test.tsx +69 -0
- package/src/hooks/useBusyAnnouncement.test.tsx +112 -0
- package/src/hooks/useBusyAnnouncement.ts +64 -54
- package/src/hooks/useFocusTrap.doc.mjs +3 -3
- package/src/hooks/useFocusTrap.test.tsx +135 -2
- package/src/hooks/useFocusTrap.ts +59 -27
- package/src/hooks/useMenuHover.ts +6 -2
- package/src/hooks/useMenuPress.doc.mjs +2 -2
- package/src/hooks/useMenuPress.test.tsx +5 -2
- package/src/hooks/useMenuPress.ts +72 -37
- package/src/hooks/usePressFeedback.doc.mjs +4 -4
- package/src/hooks/usePressFeedback.ts +5 -2
- package/src/hooks/useScrollableArea.test.tsx +344 -3
- package/src/hooks/useScrollableArea.ts +120 -12
- package/src/i18n/generated-locales/en.generated.ts +35 -0
- package/src/i18n/generated-locales/pseudo.generated.ts +37 -0
- package/src/internal/tokenizer-presentation.test.ts +29 -0
- package/src/internal/tokenizer-presentation.ts +25 -0
- package/src/internal/touch.test.ts +44 -0
- package/src/internal/touch.ts +41 -0
- package/src/motion/LayoutChangeSnapshot.tsx +50 -0
- package/src/motion/MEASUREMENTS.md +271 -0
- package/src/motion/README.md +218 -0
- package/src/motion/__tests__/animatedLayout.interaction.browser.spec.ts +1613 -0
- package/src/motion/__tests__/animatedLayoutAdopters.interaction.browser.spec.ts +217 -0
- package/src/motion/__tests__/animatedLayoutBundle.ts +17 -0
- package/src/motion/animatedLayout.boundary.test.ts +155 -0
- package/src/motion/animatedLayout.swap.test.ts +827 -0
- package/src/motion/animatedLayout.test.ts +1154 -0
- package/src/motion/animatedLayout.ts +1801 -0
- package/src/motion/animatedLayoutAdopters.test.tsx +500 -0
- package/src/motion/animator.test.ts +2653 -0
- package/src/motion/animator.ts +2794 -0
- package/src/motion/bezier.test.ts +52 -0
- package/src/motion/bezier.ts +64 -0
- package/src/motion/coast.test.ts +99 -0
- package/src/motion/coast.ts +150 -0
- package/src/motion/decay.test.ts +120 -0
- package/src/motion/decay.ts +126 -0
- package/src/motion/projection.test.ts +107 -0
- package/src/motion/projection.ts +116 -0
- package/src/motion/reducedMotion.stylex.ts +41 -0
- package/src/motion/reducedMotion.test.ts +129 -0
- package/src/motion/reducedMotion.ts +94 -0
- package/src/motion/reducedMotionPlan.test.ts +182 -0
- package/src/motion/reducedMotionPlan.ts +263 -0
- package/src/motion/resolveSnapPoint.test.ts +189 -0
- package/src/motion/resolveSnapPoint.ts +169 -0
- package/src/motion/roleValue.ts +105 -0
- package/src/motion/roles.test.ts +256 -0
- package/src/motion/roles.ts +262 -0
- package/src/motion/rubberBand.test.ts +88 -0
- package/src/motion/rubberBand.ts +115 -0
- package/src/motion/selectPage.test.ts +31 -0
- package/src/motion/selectPage.ts +55 -0
- package/src/motion/spring.test.ts +650 -0
- package/src/motion/spring.ts +551 -0
- package/src/motion/transientCopy.ts +374 -0
- package/src/motion/uikit/gestures.test.ts +89 -0
- package/src/motion/uikit/gestures.ts +359 -0
- package/src/motion/uikit/index.ts +80 -0
- package/src/motion/uikit/navigation.ts +83 -0
- package/src/motion/uikit/scroll.ts +141 -0
- package/src/motion/uikit/springRows.test.ts +71 -0
- package/src/motion/uikit/springs.ts +514 -0
- package/src/motion/uikit/timing.ts +210 -0
- package/src/motion/uikit/uikit.test.ts +364 -0
- package/src/motion/uikit/values.test.ts +110 -0
- package/src/reset.a11y.chromium.spec.ts +1 -0
- package/src/reset.until-found.a11y.browser.spec.ts +1 -0
- package/src/serverSafeComponents.test.ts +10 -0
- package/src/tailwind-theme.css +51 -1
- package/src/tailwind-theme.test.ts +51 -0
- package/src/theme/Theme.test.tsx +28 -0
- package/src/theme/__tests__/SpacingRootFontSize.a11y.chromium.spec.ts +1 -0
- package/src/theme/declarationBoundary.ts +282 -1
- package/src/theme/defineTheme.test.ts +529 -12
- package/src/theme/defineTheme.ts +231 -19
- package/src/theme/derivedVarRegistry.test.ts +34 -5
- package/src/theme/derivedVarRegistry.ts +4 -0
- package/src/theme/expandMotionScale.test.ts +17 -0
- package/src/theme/extensibleAxes.test.ts +74 -29
- package/src/theme/generateThemeRules.ts +772 -35
- package/src/theme/index.ts +3 -0
- package/src/theme/onMediaTokens.test.ts +186 -0
- package/src/theme/statusColor.ts +189 -0
- package/src/theme/statusRoleDerivation.ts +289 -0
- package/src/theme/syntax/SyntaxTheme.tsx +1 -1
- package/src/theme/syntax/defineSyntaxTheme.ts +1 -1
- package/src/theme/syntax/presets.ts +1 -1
- package/src/theme/syntax/tokens.ts +1 -1
- package/src/theme/themeAdaptations.test.ts +412 -0
- package/src/theme/themeAdaptations.ts +43 -1
- package/src/theme/tokens.stylex.ts +36 -2
- package/src/theme/tokens.test.ts +111 -1
- package/src/theme/tokens.ts +23 -1
- package/src/theme/useTheme.ts +10 -4
- package/src/utils/customPropertyArmLayering.test.ts +131 -0
- package/src/utils/edgeAutoscroll.test.ts +192 -0
- package/src/utils/edgeAutoscroll.ts +111 -0
- package/src/utils/hitArea.test.ts +628 -0
- package/src/utils/hitArea.ts +770 -0
- package/src/utils/interactionOverlay.stylex.ts +4 -1
- package/src/utils/pressFeedback.test.ts +310 -2
- package/src/utils/pressFeedback.ts +306 -54
- package/src/utils/pressGesture.test.ts +50 -0
- package/src/utils/pressGesture.ts +40 -2
- package/src/utils/touchPresentation.test.ts +323 -0
- package/src/utils/touchPresentation.ts +153 -0
package/dist/Layer/useLayer.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* - /packages/core/src/Layer/useLayer.test.tsx
|
|
14
14
|
* - /packages/core/src/Layer/index.ts
|
|
15
15
|
*/
|
|
16
|
-
import React, { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';
|
|
16
|
+
import React, { useCallback, useEffect, useId, useMemo, useRef, useState, useSyncExternalStore } from 'react';
|
|
17
17
|
import * as stylex from '@stylexjs/stylex';
|
|
18
18
|
import { createPortal } from 'react-dom';
|
|
19
19
|
import { LayerContentBoundary } from "./layerScopedContext.js";
|
|
@@ -25,7 +25,8 @@ import { layerStructureReset } from "./layerStructureReset.stylex.js";
|
|
|
25
25
|
import "./layerViewportInset.stylex.js";
|
|
26
26
|
import { layerViewportInset } from "./layerViewportInset.stylex.js";
|
|
27
27
|
import { layerInsetProperties } from "./layerInset.js";
|
|
28
|
-
import { LAYER_CLEARANCE_PROPERTY, ensureSlideRules, slideRuleName } from "./layerSlideRules.js";
|
|
28
|
+
import { LAYER_CLEARANCE_PROPERTY, LAYER_CLEARS_ANCHOR_ATTRIBUTE, LAYER_SCROLLS_ATTRIBUTE, LAYER_CLEAR_FALLBACKS_PROPERTY, LAYER_TRY_FALLBACKS_PROPERTY, ensureSlideRules, getAnchorClearFallbacks, slideRuleName } from "./layerSlideRules.js";
|
|
29
|
+
import { preserveAnimations } from "./preserveAnimations.js";
|
|
29
30
|
import { useLayerContext } from "./LayerContext.js";
|
|
30
31
|
import { useIsomorphicLayoutEffect } from "../hooks/useIsomorphicLayoutEffect.js";
|
|
31
32
|
import { overlayPaddingReset } from "../Layout/padding.stylex.js";
|
|
@@ -168,10 +169,337 @@ const styles = {
|
|
|
168
169
|
* Return type for fixed mode
|
|
169
170
|
*/
|
|
170
171
|
|
|
172
|
+
/**
|
|
173
|
+
* Context-mode options a core component may pass through `useLayerInternal`;
|
|
174
|
+
* not part of the public `useLayer` options.
|
|
175
|
+
*/
|
|
176
|
+
|
|
171
177
|
function toCssLength(value) {
|
|
172
178
|
return typeof value === 'number' ? `${value}px` : value;
|
|
173
179
|
}
|
|
174
180
|
|
|
181
|
+
/**
|
|
182
|
+
* Make the engine choose a shown layer's position option afresh: a browser
|
|
183
|
+
* keeps a laid-out layer on the option it last used until the layer stops
|
|
184
|
+
* being rendered, so the layer is taken out of rendering for one forced
|
|
185
|
+
* layout and restored, in the same task. No frame paints in between and the
|
|
186
|
+
* popover stays open, so no toggle event fires and focus and hover are
|
|
187
|
+
* untouched. Every CSS animation and transition of the layer and its content
|
|
188
|
+
* is put back in the state it was in (`preserveAnimations`).
|
|
189
|
+
*/
|
|
190
|
+
function placeAfresh(layer) {
|
|
191
|
+
preserveAnimations(layer, () => {
|
|
192
|
+
const display = layer.style.display;
|
|
193
|
+
layer.style.display = 'none';
|
|
194
|
+
layer.getBoundingClientRect();
|
|
195
|
+
layer.style.display = display;
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
const TRANSFORM_PROPERTIES = ['transform', 'translate', 'scale', 'rotate'];
|
|
199
|
+
function hasTransform(style) {
|
|
200
|
+
return TRANSFORM_PROPERTIES.some(name => {
|
|
201
|
+
const value = style.getPropertyValue(name);
|
|
202
|
+
return value !== '' && value !== 'none';
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* `rect`, the box of an element whose computed style still carries a 2D
|
|
208
|
+
* transform, with that transform undone: the transformed box's centre is the
|
|
209
|
+
* image of the element's centre, so undoing the transform about its origin on
|
|
210
|
+
* that centre gives the untransformed box, at the element's layout size. A
|
|
211
|
+
* transform this cannot undo (3D, or a rotation in another unit) leaves `rect`
|
|
212
|
+
* as it is.
|
|
213
|
+
*/
|
|
214
|
+
function untransform(rect, layer, style) {
|
|
215
|
+
const set = value => value !== '' && value !== 'none';
|
|
216
|
+
if (typeof DOMMatrix === 'undefined' || layer.offsetWidth <= 0) {
|
|
217
|
+
return rect;
|
|
218
|
+
}
|
|
219
|
+
// The individual transform properties apply before `transform`, in this
|
|
220
|
+
// order (CSS Transforms 2).
|
|
221
|
+
let matrix = new DOMMatrix();
|
|
222
|
+
if (set(style.translate)) {
|
|
223
|
+
const [x = '0', y = '0', z] = style.translate.split(' ');
|
|
224
|
+
if (z != null) {
|
|
225
|
+
return rect;
|
|
226
|
+
}
|
|
227
|
+
matrix = matrix.translate(parseFloat(x), parseFloat(y));
|
|
228
|
+
}
|
|
229
|
+
if (set(style.rotate)) {
|
|
230
|
+
if (!/^-?[\d.]+deg$/.test(style.rotate)) {
|
|
231
|
+
return rect;
|
|
232
|
+
}
|
|
233
|
+
matrix = matrix.rotate(parseFloat(style.rotate));
|
|
234
|
+
}
|
|
235
|
+
if (set(style.scale)) {
|
|
236
|
+
const [x = '1', y = x, z] = style.scale.split(' ');
|
|
237
|
+
if (z != null) {
|
|
238
|
+
return rect;
|
|
239
|
+
}
|
|
240
|
+
matrix = matrix.scale(parseFloat(x), parseFloat(y));
|
|
241
|
+
}
|
|
242
|
+
if (set(style.transform)) {
|
|
243
|
+
matrix = matrix.multiply(new DOMMatrix(style.transform));
|
|
244
|
+
}
|
|
245
|
+
if (!matrix.is2D) {
|
|
246
|
+
return rect;
|
|
247
|
+
}
|
|
248
|
+
const [originX = 0, originY = 0] = style.transformOrigin.split(' ').map(value => parseFloat(value));
|
|
249
|
+
const width = layer.offsetWidth;
|
|
250
|
+
const height = layer.offsetHeight;
|
|
251
|
+
const centre = matrix.transformPoint(new DOMPoint(width / 2 - originX, height / 2 - originY));
|
|
252
|
+
const left = rect.left + rect.width / 2 - centre.x - originX;
|
|
253
|
+
const top = rect.top + rect.height / 2 - centre.y - originY;
|
|
254
|
+
return new DOMRect(left, top, width, height);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* The layer's box where its position option put it, without the transform an
|
|
259
|
+
* entry animation (or anything else) applies to it: a Tooltip enters from a
|
|
260
|
+
* few pixels toward its trigger, scaled down, so the transformed box of a
|
|
261
|
+
* tooltip that fits beside its trigger can read as covering it while it
|
|
262
|
+
* enters. The layer's transforms are overridden with `none !important`, which
|
|
263
|
+
* outranks an animation, for this one read and then restored, in the same
|
|
264
|
+
* task: no frame paints in between and the animation keeps running. Where the
|
|
265
|
+
* engine still applies an animated transform under that override (WebKit),
|
|
266
|
+
* the read box has that transform undone instead (`untransform`). A layer
|
|
267
|
+
* that transitions a transform property is not overridden, since restoring the
|
|
268
|
+
* value would start that transition; its box has its transform undone.
|
|
269
|
+
*/
|
|
270
|
+
function settledBox(layer) {
|
|
271
|
+
const view = layer.ownerDocument.defaultView;
|
|
272
|
+
const style = view?.getComputedStyle(layer);
|
|
273
|
+
if (style == null || !hasTransform(style)) {
|
|
274
|
+
return layer.getBoundingClientRect();
|
|
275
|
+
}
|
|
276
|
+
const transitions = style.transitionProperty.split(',').map(p => p.trim());
|
|
277
|
+
const durations = style.transitionDuration.split(',').map(parseFloat);
|
|
278
|
+
const transitioned = transitions.some((name, index) => (name === 'all' || TRANSFORM_PROPERTIES.includes(name)) && (durations[index % durations.length] ?? 0) > 0);
|
|
279
|
+
if (transitioned) {
|
|
280
|
+
return untransform(layer.getBoundingClientRect(), layer, style);
|
|
281
|
+
}
|
|
282
|
+
const saved = TRANSFORM_PROPERTIES.map(name => [name, layer.style.getPropertyValue(name), layer.style.getPropertyPriority(name)]);
|
|
283
|
+
for (const name of TRANSFORM_PROPERTIES) {
|
|
284
|
+
layer.style.setProperty(name, 'none', 'important');
|
|
285
|
+
}
|
|
286
|
+
const box = layer.getBoundingClientRect();
|
|
287
|
+
const under = view?.getComputedStyle(layer);
|
|
288
|
+
const settled = under != null && hasTransform(under) ? untransform(box, layer, under) : box;
|
|
289
|
+
for (const [name, value, priority] of saved) {
|
|
290
|
+
if (value === '') {
|
|
291
|
+
layer.style.removeProperty(name);
|
|
292
|
+
} else {
|
|
293
|
+
layer.style.setProperty(name, value, priority);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
return settled;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* Whether the standard list has failed a layer that must keep its anchor
|
|
301
|
+
* clear: its box covers the anchor or, while the anchor is in view, leaves the
|
|
302
|
+
* viewport on the block axis. Only a box that overlaps the anchor counts; a
|
|
303
|
+
* layer flush against it does not.
|
|
304
|
+
*/
|
|
305
|
+
function failsAnchor(layer, anchor) {
|
|
306
|
+
const a = anchor.getBoundingClientRect();
|
|
307
|
+
const l = settledBox(layer);
|
|
308
|
+
if (l.width <= 0 || l.height <= 0) {
|
|
309
|
+
return false;
|
|
310
|
+
}
|
|
311
|
+
const covers = l.left < a.right && a.left < l.right && l.top < a.bottom && a.top < l.bottom;
|
|
312
|
+
// The viewport's block extent, as the layer's anchor positioning sees it.
|
|
313
|
+
const viewportBlock = layer.ownerDocument.documentElement.clientHeight;
|
|
314
|
+
const anchorInView = a.bottom > 0 && a.top < viewportBlock;
|
|
315
|
+
return covers || anchorInView && (l.top < 0 || l.bottom > viewportBlock);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* For a layer that must never settle over its anchor (spec:AST-059 FR4): read
|
|
320
|
+
* where its fallback list settled it and, if its box covers the anchor or,
|
|
321
|
+
* while the anchor is in view, leaves the viewport on the block axis, switch it
|
|
322
|
+
* to its anchor-clear list; then let it scroll only if its content overflows
|
|
323
|
+
* the box it was given (FR3). Engines differ in where they leave a box that
|
|
324
|
+
* fits no option: Chromium shifts it into the viewport, over the anchor; WebKit
|
|
325
|
+
* keeps it at its preferred position, partly off-screen. Either way the
|
|
326
|
+
* standard list has failed it. The runtime calls this in the same task as
|
|
327
|
+
* every show and remount, and while the layer is open whenever its size, its
|
|
328
|
+
* content's size, its anchor's size or the viewport changes; each of those
|
|
329
|
+
* reads lands before the next frame paints. A same-size anchor that moves on
|
|
330
|
+
* screen, in layout or because something scrolled, is read after paint, from
|
|
331
|
+
* the anchor-move observer (FR8). Scroll events are not read: during one the
|
|
332
|
+
* anchor has moved but the layer anchored to it not yet, so the read would
|
|
333
|
+
* compare a moved anchor with a stale layer. Once switched, a layer keeps its
|
|
334
|
+
* anchor-clear list until it next opens, so it never jumps back over its
|
|
335
|
+
* trigger while open; it is placed afresh (`placeAfresh`) only when the switch
|
|
336
|
+
* does not take effect at once, or when a later read finds it failing again.
|
|
337
|
+
*/
|
|
338
|
+
function keepAnchorClear(layer, anchor) {
|
|
339
|
+
if (anchor && failsAnchor(layer, anchor)) {
|
|
340
|
+
const switching = !layer.hasAttribute(LAYER_CLEARS_ANCHOR_ATTRIBUTE);
|
|
341
|
+
layer.setAttribute(LAYER_CLEARS_ANCHOR_ATTRIBUTE, '');
|
|
342
|
+
// A switch usually takes effect at once. The engine may instead keep the
|
|
343
|
+
// option it last used, even one the new list does not contain or one a
|
|
344
|
+
// scroll has since made fail: then, and on any later read that finds the
|
|
345
|
+
// switched layer failing again, place it afresh.
|
|
346
|
+
if (!switching || failsAnchor(layer, anchor)) {
|
|
347
|
+
placeAfresh(layer);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
// A layer that fits has no scroll range and stays a plain box, so a wheel
|
|
351
|
+
// over it still scrolls the page.
|
|
352
|
+
layer.toggleAttribute(LAYER_SCROLLS_ATTRIBUTE, layer.scrollHeight > layer.clientHeight + 1);
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
/**
|
|
356
|
+
* Call `onMove` when an element moves on screen without changing size: in
|
|
357
|
+
* layout (a sibling above it grows, a margin changes) or because something
|
|
358
|
+
* scrolled. ResizeObserver sees only size. The element is observed by an
|
|
359
|
+
* IntersectionObserver whose root is the viewport shrunk, through
|
|
360
|
+
* `rootMargin`, to the element's own rectangle (the layout-shift technique of
|
|
361
|
+
* `@floating-ui/dom`'s `observeMove`), so any move changes the intersection
|
|
362
|
+
* ratio and fires the callback, which calls `onMove` and re-arms on the new
|
|
363
|
+
* rectangle. Intersection callbacks run after the frame that moved the
|
|
364
|
+
* element has painted, so the caller corrects that move in the next frame.
|
|
365
|
+
*
|
|
366
|
+
* A fresh observer's first report can already differ from its threshold: the
|
|
367
|
+
* element is partly outside the viewport, or it kept moving between the
|
|
368
|
+
* rectangle read and the observer's first check, as it does every frame of a
|
|
369
|
+
* smooth scroll. Any such report calls `onMove` and re-arms, at the reported
|
|
370
|
+
* ratio, or at once on the element's new rectangle when the report is 0 and
|
|
371
|
+
* the element moved, so a move that spans many frames is followed frame by
|
|
372
|
+
* frame. A report of 0 for an element that has not moved means a scrolled
|
|
373
|
+
* container clips it wholly; re-arming then would report 0 again every frame.
|
|
374
|
+
* Instead a second IntersectionObserver, rooted at the viewport with a
|
|
375
|
+
* threshold of 0 (it counts every ancestor's overflow clip), waits for the
|
|
376
|
+
* element to come back into view, then calls `onMove` and re-arms. Nothing
|
|
377
|
+
* runs on a timer. Returns the function that stops observing.
|
|
378
|
+
*/
|
|
379
|
+
function observeMove(element, onMove) {
|
|
380
|
+
const doc = element.ownerDocument;
|
|
381
|
+
if (typeof IntersectionObserver === 'undefined') {
|
|
382
|
+
return () => {};
|
|
383
|
+
}
|
|
384
|
+
let observer = null;
|
|
385
|
+
let visibility = null;
|
|
386
|
+
const stop = () => {
|
|
387
|
+
observer?.disconnect();
|
|
388
|
+
observer = null;
|
|
389
|
+
visibility?.disconnect();
|
|
390
|
+
visibility = null;
|
|
391
|
+
};
|
|
392
|
+
const moved = threshold => {
|
|
393
|
+
onMove();
|
|
394
|
+
arm(threshold);
|
|
395
|
+
};
|
|
396
|
+
const arm = threshold => {
|
|
397
|
+
stop();
|
|
398
|
+
const root = doc.documentElement;
|
|
399
|
+
const rect = element.getBoundingClientRect();
|
|
400
|
+
if (rect.width === 0 || rect.height === 0) {
|
|
401
|
+
return;
|
|
402
|
+
}
|
|
403
|
+
const top = Math.floor(rect.top);
|
|
404
|
+
const left = Math.floor(rect.left);
|
|
405
|
+
const right = Math.floor(root.clientWidth - rect.right);
|
|
406
|
+
const bottom = Math.floor(root.clientHeight - rect.bottom);
|
|
407
|
+
const hasMoved = () => {
|
|
408
|
+
const now = element.getBoundingClientRect();
|
|
409
|
+
return now.top !== rect.top || now.left !== rect.left || now.width !== rect.width || now.height !== rect.height;
|
|
410
|
+
};
|
|
411
|
+
// Clipped by a scrolled container: wait, without a timer, for the
|
|
412
|
+
// element to come back into view. A first report that already finds it
|
|
413
|
+
// in view only counts if it has moved, so a clip the move observer and
|
|
414
|
+
// this one judge differently cannot re-arm every frame.
|
|
415
|
+
const awaitVisible = () => {
|
|
416
|
+
let isFirstVisible = true;
|
|
417
|
+
visibility = new IntersectionObserver(entries => {
|
|
418
|
+
const visible = entries[entries.length - 1]?.isIntersecting ?? false;
|
|
419
|
+
const firstVisible = isFirstVisible;
|
|
420
|
+
isFirstVisible = false;
|
|
421
|
+
if (visible && (!firstVisible || hasMoved())) {
|
|
422
|
+
moved(1);
|
|
423
|
+
}
|
|
424
|
+
}, {
|
|
425
|
+
root: doc,
|
|
426
|
+
threshold: 0
|
|
427
|
+
});
|
|
428
|
+
visibility.observe(element);
|
|
429
|
+
};
|
|
430
|
+
let isFirst = true;
|
|
431
|
+
observer = new IntersectionObserver(entries => {
|
|
432
|
+
const ratio = entries[entries.length - 1]?.intersectionRatio ?? 0;
|
|
433
|
+
const first = isFirst;
|
|
434
|
+
isFirst = false;
|
|
435
|
+
if (ratio === threshold) {
|
|
436
|
+
// Still over its own rectangle, but a move smaller than the
|
|
437
|
+
// rounding of the root margin can leave the ratio at 1.
|
|
438
|
+
if (ratio === 1 && hasMoved()) {
|
|
439
|
+
moved(1);
|
|
440
|
+
}
|
|
441
|
+
return;
|
|
442
|
+
}
|
|
443
|
+
if (!first || ratio > 0) {
|
|
444
|
+
moved(first ? ratio : 1);
|
|
445
|
+
return;
|
|
446
|
+
}
|
|
447
|
+
if (hasMoved()) {
|
|
448
|
+
moved(1);
|
|
449
|
+
return;
|
|
450
|
+
}
|
|
451
|
+
if (visibility === null) {
|
|
452
|
+
awaitVisible();
|
|
453
|
+
}
|
|
454
|
+
}, {
|
|
455
|
+
root: doc,
|
|
456
|
+
rootMargin: `${-top}px ${-right}px ${-bottom}px ${-left}px`,
|
|
457
|
+
threshold
|
|
458
|
+
});
|
|
459
|
+
observer.observe(element);
|
|
460
|
+
};
|
|
461
|
+
arm(1);
|
|
462
|
+
return stop;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
/**
|
|
466
|
+
* Watch an open layer that keeps its anchor clear, and its anchor, for every
|
|
467
|
+
* change that can re-settle the layer over the anchor or give it a scroll
|
|
468
|
+
* range (spec:AST-059 FR4, FR8): the layer, its content or the anchor
|
|
469
|
+
* resizing (ResizeObserver, before paint), the viewport resizing (before
|
|
470
|
+
* paint), and the anchor moving on screen without resizing, in layout or by a
|
|
471
|
+
* scroll (`observeMove`, after paint). Each calls `keepAnchorClear` for this layer and anchor while
|
|
472
|
+
* `isCurrent` says they are still the live pair. Returns the function that
|
|
473
|
+
* removes every observer and listener it added.
|
|
474
|
+
*/
|
|
475
|
+
function observeAnchorClearance(layer, anchor, isCurrent) {
|
|
476
|
+
const view = layer.ownerDocument.defaultView;
|
|
477
|
+
if (!view) {
|
|
478
|
+
return () => {};
|
|
479
|
+
}
|
|
480
|
+
const reread = () => {
|
|
481
|
+
if (isCurrent()) {
|
|
482
|
+
keepAnchorClear(layer, anchor);
|
|
483
|
+
}
|
|
484
|
+
};
|
|
485
|
+
let observer = null;
|
|
486
|
+
if (typeof ResizeObserver !== 'undefined') {
|
|
487
|
+
observer = new ResizeObserver(reread);
|
|
488
|
+
observer.observe(layer);
|
|
489
|
+
for (const child of Array.from(layer.children)) {
|
|
490
|
+
observer.observe(child);
|
|
491
|
+
}
|
|
492
|
+
observer.observe(anchor);
|
|
493
|
+
}
|
|
494
|
+
const stopObservingMove = observeMove(anchor, reread);
|
|
495
|
+
view.addEventListener('resize', reread);
|
|
496
|
+
return () => {
|
|
497
|
+
observer?.disconnect();
|
|
498
|
+
stopObservingMove();
|
|
499
|
+
view.removeEventListener('resize', reread);
|
|
500
|
+
};
|
|
501
|
+
}
|
|
502
|
+
|
|
175
503
|
/**
|
|
176
504
|
* Popover operations in flight, per document.
|
|
177
505
|
*
|
|
@@ -200,6 +528,68 @@ function runPopoverOperation(doc, operation) {
|
|
|
200
528
|
function isPopoverOperationInFlight(doc) {
|
|
201
529
|
return (popoverOperationsByDocument.get(doc) ?? 0) > 0;
|
|
202
530
|
}
|
|
531
|
+
|
|
532
|
+
/**
|
|
533
|
+
* Where a context layer is hosted, published to the one component that
|
|
534
|
+
* renders it. The hook resolves the mount from the marker's parent once the
|
|
535
|
+
* marker is in the DOM, and the slot below subscribes to it, so the render
|
|
536
|
+
* that places the layer re-renders the slot alone: the hook's host (a
|
|
537
|
+
* Tooltip, a Popover, a menu) and everything under it render once on mount.
|
|
538
|
+
*/
|
|
539
|
+
|
|
540
|
+
function createContextLayerMountStore() {
|
|
541
|
+
let mount = null;
|
|
542
|
+
const listeners = new Set();
|
|
543
|
+
return {
|
|
544
|
+
get: () => mount,
|
|
545
|
+
set: next => {
|
|
546
|
+
if (next === mount) {
|
|
547
|
+
return;
|
|
548
|
+
}
|
|
549
|
+
mount = next;
|
|
550
|
+
for (const listener of listeners) {
|
|
551
|
+
listener();
|
|
552
|
+
}
|
|
553
|
+
},
|
|
554
|
+
subscribe: onChange => {
|
|
555
|
+
listeners.add(onChange);
|
|
556
|
+
return () => {
|
|
557
|
+
listeners.delete(onChange);
|
|
558
|
+
};
|
|
559
|
+
}
|
|
560
|
+
};
|
|
561
|
+
}
|
|
562
|
+
const readNoMount = () => null;
|
|
563
|
+
|
|
564
|
+
/**
|
|
565
|
+
* The marker and, once the hook has resolved where it goes, the layer. The
|
|
566
|
+
* server and the hydrating render carry the marker alone, so block content
|
|
567
|
+
* never enters server markup inside `<p>` and its kin; the mount arrives from
|
|
568
|
+
* the marker's ref callback, and only this component re-renders to place the
|
|
569
|
+
* layer.
|
|
570
|
+
*/
|
|
571
|
+
function ContextLayerSlot({
|
|
572
|
+
mountStore,
|
|
573
|
+
renderLayer,
|
|
574
|
+
sentinelRef
|
|
575
|
+
}) {
|
|
576
|
+
const mount = useSyncExternalStore(mountStore.subscribe, mountStore.get, readNoMount);
|
|
577
|
+
// Keep the marker mounted after resolving the layer. Apart from giving
|
|
578
|
+
// us the real JSX parent on first show, this lets its ref report when a
|
|
579
|
+
// persistent hook's render call moves to a different host.
|
|
580
|
+
const sentinel = /*#__PURE__*/_jsx("template", {
|
|
581
|
+
ref: sentinelRef
|
|
582
|
+
});
|
|
583
|
+
if (mount === null) {
|
|
584
|
+
return /*#__PURE__*/_jsx(_Fragment, {
|
|
585
|
+
children: sentinel
|
|
586
|
+
});
|
|
587
|
+
}
|
|
588
|
+
const layer = renderLayer(mount);
|
|
589
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
590
|
+
children: [sentinel, mount.portalTarget ? /*#__PURE__*/createPortal(layer, mount.portalTarget) : layer]
|
|
591
|
+
});
|
|
592
|
+
}
|
|
203
593
|
function readPortalWritingContext(element, portalTarget) {
|
|
204
594
|
const view = element.ownerDocument.defaultView;
|
|
205
595
|
if (!view) {
|
|
@@ -402,6 +792,7 @@ function useLayerImplementation(options) {
|
|
|
402
792
|
lightDismiss = false
|
|
403
793
|
} = options;
|
|
404
794
|
const lazyMount = mode === 'context' ? options.lazyMount ?? false : false;
|
|
795
|
+
const keepsAnchorClear = mode === 'context' ? options.keepsAnchorClear ?? false : false;
|
|
405
796
|
const id = useId();
|
|
406
797
|
const anchorId = `--astryx-layer-${id.replace(/:/g, '')}`;
|
|
407
798
|
const [isOpen, setIsOpen] = useState(false);
|
|
@@ -433,7 +824,13 @@ function useLayerImplementation(options) {
|
|
|
433
824
|
// corrective portal, including after the render call moves.
|
|
434
825
|
const sentinelRef = useRef(null);
|
|
435
826
|
const contextMountRef = useRef(null);
|
|
436
|
-
|
|
827
|
+
// The resolved mount reaches the slot through this store, never through
|
|
828
|
+
// state on this hook, so placing the layer renders the slot alone. The
|
|
829
|
+
// generation counts mounts that REPLACE a resolved one (a render call that
|
|
830
|
+
// moved to another host): the layer element is recreated then, and the
|
|
831
|
+
// effects below that bind to it re-run.
|
|
832
|
+
const [mountStore] = useState(createContextLayerMountStore);
|
|
833
|
+
const [mountGeneration, setMountGeneration] = useState(0);
|
|
437
834
|
// A show() that cannot run yet is remembered here and replayed: one that
|
|
438
835
|
// arrives before the final layer mounts runs when its popover ref attaches;
|
|
439
836
|
// one that arrives while another popover is mid show/hide runs once that
|
|
@@ -468,10 +865,14 @@ function useLayerImplementation(options) {
|
|
|
468
865
|
// trigger is an `SVGElement`, whose dictionary conversion throws
|
|
469
866
|
// before the popover opens. Omitting the option for it still anchors
|
|
470
867
|
// the layer, because positioning reads the anchor-name pair, and only
|
|
471
|
-
// gives up the invoker's focus order.
|
|
472
|
-
|
|
868
|
+
// gives up the invoker's focus order. The check asks the trigger's own
|
|
869
|
+
// window: an HTML trigger rendered into another document (an iframe,
|
|
870
|
+
// a Picture-in-Picture window) is not an instance of this window's
|
|
871
|
+
// `HTMLElement`, and keeps its source.
|
|
872
|
+
const trigger = triggerRef.current;
|
|
873
|
+
const triggerView = trigger?.ownerDocument.defaultView;
|
|
473
874
|
popover.showPopover({
|
|
474
|
-
source: trigger
|
|
875
|
+
source: triggerView != null && trigger instanceof triggerView.HTMLElement ? trigger : undefined
|
|
475
876
|
});
|
|
476
877
|
});
|
|
477
878
|
} else {
|
|
@@ -499,21 +900,60 @@ function useLayerImplementation(options) {
|
|
|
499
900
|
if (!sentinel || !inlineParent) {
|
|
500
901
|
return;
|
|
501
902
|
}
|
|
903
|
+
|
|
904
|
+
// The slide options' `@position-try` rules (FR4) are installed in the
|
|
905
|
+
// layer's document before its first paint, here where the mount resolves:
|
|
906
|
+
// the marker's arrival is the one event every mount has, whether the
|
|
907
|
+
// render call mounts with its host or later. One sheet serves every layer.
|
|
908
|
+
ensureSlideRules(sentinel.ownerDocument);
|
|
502
909
|
const portalTarget = resolveLayerPortalTarget(inlineParent);
|
|
910
|
+
// A mount for a layer that is opening or open reads its writing context
|
|
911
|
+
// now; a closed layer's waits for its first show.
|
|
912
|
+
const opening = pendingShowRef.current || isOpenRef.current;
|
|
503
913
|
const mount = {
|
|
504
914
|
portalTarget,
|
|
505
|
-
portalStyle: portalTarget ? readPortalWritingContext(sentinel, portalTarget) :
|
|
915
|
+
portalStyle: portalTarget == null ? {} : opening ? readPortalWritingContext(sentinel, portalTarget) : null
|
|
506
916
|
};
|
|
917
|
+
const replaced = contextMountRef.current !== null;
|
|
507
918
|
contextMountRef.current = mount;
|
|
508
|
-
|
|
509
|
-
|
|
919
|
+
mountStore.set(mount);
|
|
920
|
+
if (replaced) {
|
|
921
|
+
setMountGeneration(generation => generation + 1);
|
|
922
|
+
}
|
|
923
|
+
}, [mode, mountStore]);
|
|
924
|
+
|
|
925
|
+
// Reads the writing context a closed layer's mount deferred, before the
|
|
926
|
+
// layer opens. It is written on the popover at once, so the first open frame
|
|
927
|
+
// already has it (layer-runtime INV12), and published to the slot, whose
|
|
928
|
+
// render writes the same values. A value the caller's own `style` sets is
|
|
929
|
+
// already inline and wins, as it does in render.
|
|
930
|
+
const applyDeferredWritingContext = useCallback(popover => {
|
|
931
|
+
const mount = contextMountRef.current;
|
|
932
|
+
const sentinel = sentinelRef.current;
|
|
933
|
+
if (mount === null || mount.portalTarget === null || mount.portalStyle !== null || sentinel === null) {
|
|
934
|
+
return;
|
|
935
|
+
}
|
|
936
|
+
const portalStyle = readPortalWritingContext(sentinel, mount.portalTarget);
|
|
937
|
+
if (portalStyle.direction != null && popover.style.direction === '') {
|
|
938
|
+
popover.style.direction = portalStyle.direction;
|
|
939
|
+
}
|
|
940
|
+
if (portalStyle.writingMode != null && popover.style.writingMode === '') {
|
|
941
|
+
popover.style.writingMode = portalStyle.writingMode;
|
|
942
|
+
}
|
|
943
|
+
const next = {
|
|
944
|
+
...mount,
|
|
945
|
+
portalStyle
|
|
946
|
+
};
|
|
947
|
+
contextMountRef.current = next;
|
|
948
|
+
mountStore.set(next);
|
|
949
|
+
}, [mountStore]);
|
|
510
950
|
const clearContextMount = useCallback(() => {
|
|
511
951
|
if (mode !== 'context' || !lazyMount) {
|
|
512
952
|
return;
|
|
513
953
|
}
|
|
514
954
|
contextMountRef.current = null;
|
|
515
|
-
|
|
516
|
-
}, [mode, lazyMount]);
|
|
955
|
+
mountStore.set(null);
|
|
956
|
+
}, [mode, lazyMount, mountStore]);
|
|
517
957
|
const show = useCallback(() => {
|
|
518
958
|
// Every caller lands here, so this is where the dismissing press is
|
|
519
959
|
// absorbed: opening now would reopen the popup that same press closed.
|
|
@@ -543,12 +983,18 @@ function useLayerImplementation(options) {
|
|
|
543
983
|
});
|
|
544
984
|
return;
|
|
545
985
|
}
|
|
986
|
+
popover.removeAttribute(LAYER_CLEARS_ANCHOR_ATTRIBUTE);
|
|
987
|
+
popover.removeAttribute(LAYER_SCROLLS_ATTRIBUTE);
|
|
988
|
+
applyDeferredWritingContext(popover);
|
|
546
989
|
showPopoverElement(popover);
|
|
990
|
+
if (keepsAnchorClear) {
|
|
991
|
+
keepAnchorClear(popover, triggerRef.current);
|
|
992
|
+
}
|
|
547
993
|
isOpenRef.current = true;
|
|
548
994
|
setIsOpen(true);
|
|
549
995
|
onShow?.();
|
|
550
996
|
}
|
|
551
|
-
}, [onShow, requestContextMount, showPopoverElement, isCurrentContextPopover, wasJustDismissed]);
|
|
997
|
+
}, [onShow, keepsAnchorClear, requestContextMount, applyDeferredWritingContext, showPopoverElement, isCurrentContextPopover, wasJustDismissed]);
|
|
552
998
|
const hide = useCallback(() => {
|
|
553
999
|
pendingShowRef.current = false;
|
|
554
1000
|
if (isOpenRef.current) {
|
|
@@ -584,6 +1030,12 @@ function useLayerImplementation(options) {
|
|
|
584
1030
|
const showRef = useRef(show);
|
|
585
1031
|
showRef.current = show;
|
|
586
1032
|
|
|
1033
|
+
// The open-state geometry observers of a layer that keeps its anchor clear
|
|
1034
|
+
// (`observeAnchorClearance`), as their teardown. The open-state layout
|
|
1035
|
+
// effect binds them; the trigger callback ref rebinds them when a caller
|
|
1036
|
+
// replaces the trigger element while the layer stays open.
|
|
1037
|
+
const clearObserversRef = useRef(null);
|
|
1038
|
+
|
|
587
1039
|
// Stable ref for the trigger element (context mode only).
|
|
588
1040
|
const contextRef = useCallback(el => {
|
|
589
1041
|
// Remove only THIS layer's anchor name from the previous element so
|
|
@@ -594,8 +1046,23 @@ function useLayerImplementation(options) {
|
|
|
594
1046
|
if (el) {
|
|
595
1047
|
addAnchorName(el, anchorId);
|
|
596
1048
|
}
|
|
1049
|
+
const previous = triggerRef.current;
|
|
597
1050
|
triggerRef.current = el;
|
|
598
|
-
|
|
1051
|
+
|
|
1052
|
+
// A trigger replaced while the layer is open (React detaches the old
|
|
1053
|
+
// node with `null`, then attaches the new one): the old trigger's
|
|
1054
|
+
// observers are removed before the new trigger's are added (INV6), and
|
|
1055
|
+
// binding them reads the new trigger's geometry at once.
|
|
1056
|
+
if (keepsAnchorClear && isOpenRef.current && el !== previous) {
|
|
1057
|
+
clearObserversRef.current?.();
|
|
1058
|
+
clearObserversRef.current = null;
|
|
1059
|
+
const layer = popoverRef.current;
|
|
1060
|
+
if (el && layer) {
|
|
1061
|
+
clearObserversRef.current = observeAnchorClearance(layer, el, () => popoverRef.current === layer && triggerRef.current === el);
|
|
1062
|
+
keepAnchorClear(layer, el);
|
|
1063
|
+
}
|
|
1064
|
+
}
|
|
1065
|
+
}, [anchorId, keepsAnchorClear]);
|
|
599
1066
|
|
|
600
1067
|
// Arm only when the dismissing gesture's click is still ahead of us. Some
|
|
601
1068
|
// engines deliver click first; in that order there is nothing left to absorb.
|
|
@@ -692,8 +1159,11 @@ function useLayerImplementation(options) {
|
|
|
692
1159
|
// Changing a portal target remounts the popover. Preserve the logical
|
|
693
1160
|
// open state without firing onShow again for the replacement element.
|
|
694
1161
|
showPopoverElement(el);
|
|
1162
|
+
if (keepsAnchorClear) {
|
|
1163
|
+
keepAnchorClear(el, triggerRef.current);
|
|
1164
|
+
}
|
|
695
1165
|
}
|
|
696
|
-
}, [handleToggle, bindToggleListener, show, showPopoverElement, isCurrentContextPopover]);
|
|
1166
|
+
}, [handleToggle, bindToggleListener, show, showPopoverElement, isCurrentContextPopover, keepsAnchorClear]);
|
|
697
1167
|
const sentinelRefCallback = useCallback(el => {
|
|
698
1168
|
sentinelRef.current = el;
|
|
699
1169
|
if (el && (!lazyMount || pendingShowRef.current || isOpenRef.current)) {
|
|
@@ -719,18 +1189,6 @@ function useLayerImplementation(options) {
|
|
|
719
1189
|
};
|
|
720
1190
|
}, [handleToggle, bindToggleListener]);
|
|
721
1191
|
|
|
722
|
-
// The slide options' `@position-try` rules (FR4) are installed in the
|
|
723
|
-
// layer's document before its first paint; one sheet serves every layer.
|
|
724
|
-
useIsomorphicLayoutEffect(() => {
|
|
725
|
-
if (mode !== 'context') {
|
|
726
|
-
return;
|
|
727
|
-
}
|
|
728
|
-
const doc = popoverRef.current?.ownerDocument ?? sentinelRef.current?.ownerDocument;
|
|
729
|
-
if (doc) {
|
|
730
|
-
ensureSlideRules(doc);
|
|
731
|
-
}
|
|
732
|
-
}, [mode, contextMount]);
|
|
733
|
-
|
|
734
1192
|
// Anchor visibility (FR5). The first frame must already be right (FR8), so
|
|
735
1193
|
// the opening read is synchronous — a layout effect runs before paint, and a
|
|
736
1194
|
// state change inside it re-renders before paint — against the visual
|
|
@@ -766,19 +1224,34 @@ function useLayerImplementation(options) {
|
|
|
766
1224
|
return () => observer.disconnect();
|
|
767
1225
|
}, [isOpen, mode, updateAnchorInView]);
|
|
768
1226
|
|
|
1227
|
+
// A layer that keeps its anchor clear (FR4) re-reads its geometry while it
|
|
1228
|
+
// is open: content that grows, an anchor that resizes or moves (in layout or
|
|
1229
|
+
// by a scroll) or a viewport resize can each re-settle the standard list over the anchor or
|
|
1230
|
+
// give the layer a scroll range (`observeAnchorClearance`). The external
|
|
1231
|
+
// systems are those browser observers and listeners; this effect binds them
|
|
1232
|
+
// while the layer is open and removes them when it closes, unmounts or is
|
|
1233
|
+
// remounted by a moved render call (`mountGeneration`). A trigger replaced
|
|
1234
|
+
// while open is rebound by the trigger callback ref, so no DOM node enters
|
|
1235
|
+
// state.
|
|
1236
|
+
useIsomorphicLayoutEffect(() => {
|
|
1237
|
+
if (!keepsAnchorClear || !isOpen || mode !== 'context') {
|
|
1238
|
+
return;
|
|
1239
|
+
}
|
|
1240
|
+
const layer = popoverRef.current;
|
|
1241
|
+
const anchor = triggerRef.current;
|
|
1242
|
+
if (!layer || !anchor) {
|
|
1243
|
+
return;
|
|
1244
|
+
}
|
|
1245
|
+
clearObserversRef.current?.();
|
|
1246
|
+
clearObserversRef.current = observeAnchorClearance(layer, anchor, () => popoverRef.current === layer && triggerRef.current === anchor);
|
|
1247
|
+
return () => {
|
|
1248
|
+
clearObserversRef.current?.();
|
|
1249
|
+
clearObserversRef.current = null;
|
|
1250
|
+
};
|
|
1251
|
+
}, [keepsAnchorClear, isOpen, mode, mountGeneration]);
|
|
1252
|
+
|
|
769
1253
|
// Render function for context mode
|
|
770
1254
|
const renderContext = useCallback((children, props) => {
|
|
771
|
-
// Keep the marker mounted after resolving the layer. Apart from giving
|
|
772
|
-
// us the real JSX parent on first show, this lets its ref report when a
|
|
773
|
-
// persistent hook's render call moves to a different host.
|
|
774
|
-
const sentinel = /*#__PURE__*/_jsx("template", {
|
|
775
|
-
ref: sentinelRefCallback
|
|
776
|
-
});
|
|
777
|
-
if (contextMount === null) {
|
|
778
|
-
return /*#__PURE__*/_jsx(_Fragment, {
|
|
779
|
-
children: sentinel
|
|
780
|
-
});
|
|
781
|
-
}
|
|
782
1255
|
const {
|
|
783
1256
|
placement = 'above',
|
|
784
1257
|
alignment = 'center',
|
|
@@ -795,6 +1268,13 @@ function useLayerImplementation(options) {
|
|
|
795
1268
|
} = props || {};
|
|
796
1269
|
|
|
797
1270
|
// CSS anchor positioning (dynamic, not in StyleX)
|
|
1271
|
+
const standardFallbacks = getPositionTryFallbacks(placement, alignment);
|
|
1272
|
+
// A layer that keeps its anchor clear carries a second list; `show()`
|
|
1273
|
+
// switches to it when the standard list settles over the anchor (FR4).
|
|
1274
|
+
const clearFallbacks = keepsAnchorClear && positioning === 'anchor' ? getAnchorClearFallbacks(placement) : '';
|
|
1275
|
+
const clearFallbacksProperty = clearFallbacks ? {
|
|
1276
|
+
[LAYER_CLEAR_FALLBACKS_PROPERTY]: clearFallbacks
|
|
1277
|
+
} : {};
|
|
798
1278
|
const anchorStyle = positioning === 'custom' ?
|
|
799
1279
|
// Consumer authors its own position styles via `style` — keep
|
|
800
1280
|
// only the anchor wiring, derive nothing from placement.
|
|
@@ -803,7 +1283,7 @@ function useLayerImplementation(options) {
|
|
|
803
1283
|
} : {
|
|
804
1284
|
positionAnchor: anchorId,
|
|
805
1285
|
positionArea: getPositionArea(placement, alignment),
|
|
806
|
-
positionTryFallbacks:
|
|
1286
|
+
positionTryFallbacks: clearFallbacks ? `var(${LAYER_TRY_FALLBACKS_PROPERTY}, ${standardFallbacks})` : standardFallbacks,
|
|
807
1287
|
...getSelfAlignment(placement, alignment, isAnchorInView)
|
|
808
1288
|
};
|
|
809
1289
|
const clearance = offset ? toCssLength(offset) : null;
|
|
@@ -818,7 +1298,8 @@ function useLayerImplementation(options) {
|
|
|
818
1298
|
// The marker gives us the actual JSX parent without mounting arbitrary
|
|
819
1299
|
// children there. Safe positions preserve the existing DOM order and
|
|
820
1300
|
// cascade; unsafe positions use the nearest corrective portal target.
|
|
821
|
-
|
|
1301
|
+
// The slot renders the layer once the hook has resolved that mount.
|
|
1302
|
+
const renderLayer = mount => /*#__PURE__*/_jsx(Container, {
|
|
822
1303
|
ref: popoverRefCallback,
|
|
823
1304
|
id: id,
|
|
824
1305
|
role: role,
|
|
@@ -829,8 +1310,9 @@ function useLayerImplementation(options) {
|
|
|
829
1310
|
...stylexResult.style,
|
|
830
1311
|
...anchorStyle,
|
|
831
1312
|
...clearanceProperty,
|
|
1313
|
+
...clearFallbacksProperty,
|
|
832
1314
|
...layerInsetProperties(declaredInset),
|
|
833
|
-
...
|
|
1315
|
+
...mount.portalStyle,
|
|
834
1316
|
...extraStyle
|
|
835
1317
|
},
|
|
836
1318
|
onMouseEnter: onMouseEnter,
|
|
@@ -839,10 +1321,12 @@ function useLayerImplementation(options) {
|
|
|
839
1321
|
children: children
|
|
840
1322
|
})
|
|
841
1323
|
});
|
|
842
|
-
return /*#__PURE__*/
|
|
843
|
-
|
|
1324
|
+
return /*#__PURE__*/_jsx(ContextLayerSlot, {
|
|
1325
|
+
mountStore: mountStore,
|
|
1326
|
+
renderLayer: renderLayer,
|
|
1327
|
+
sentinelRef: sentinelRefCallback
|
|
844
1328
|
});
|
|
845
|
-
}, [anchorId,
|
|
1329
|
+
}, [anchorId, declaredInset, id, isAnchorInView, keepsAnchorClear, lightDismiss, mountStore, popoverRefCallback, sentinelRefCallback]);
|
|
846
1330
|
|
|
847
1331
|
// Render function for fixed mode
|
|
848
1332
|
const renderFixed = useCallback((children, props) => {
|
|
@@ -908,7 +1392,10 @@ export function useLayer(options) {
|
|
|
908
1392
|
}, [internalLayer]);
|
|
909
1393
|
}
|
|
910
1394
|
|
|
911
|
-
/**
|
|
1395
|
+
/**
|
|
1396
|
+
* @internal Shared with usePopover and useTooltip; not exported from the
|
|
1397
|
+
* package barrel.
|
|
1398
|
+
*/
|
|
912
1399
|
|
|
913
1400
|
export function useLayerInternal(options) {
|
|
914
1401
|
return useLayerImplementation(options);
|