@sanity/ui 4.0.0-beta.7 → 4.0.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +21 -7
- package/dist/_chunks/getScopedTheme.cjs +4043 -0
- package/dist/_chunks/getScopedTheme.cjs.map +1 -0
- package/dist/_chunks/getScopedTheme.js +3803 -0
- package/dist/_chunks/getScopedTheme.js.map +1 -0
- package/dist/_chunks/portalProvider.cjs +3750 -0
- package/dist/_chunks/portalProvider.cjs.map +1 -0
- package/dist/_chunks/portalProvider.d.cts +1067 -0
- package/dist/_chunks/portalProvider.d.cts.map +1 -0
- package/dist/_chunks/portalProvider.d.ts +1067 -0
- package/dist/_chunks/portalProvider.d.ts.map +1 -0
- package/dist/_chunks/portalProvider.js +3300 -0
- package/dist/_chunks/portalProvider.js.map +1 -0
- package/dist/_chunks/refractor.cjs +18 -0
- package/dist/_chunks/refractor.cjs.map +1 -0
- package/dist/_chunks/refractor.js +20 -0
- package/dist/_chunks/refractor.js.map +1 -0
- package/dist/_chunks/rgba.d.cts +929 -0
- package/dist/_chunks/rgba.d.cts.map +1 -0
- package/dist/_chunks/rgba.d.ts +929 -0
- package/dist/_chunks/rgba.d.ts.map +1 -0
- package/dist/_visual-editing.cjs +4 -0
- package/dist/_visual-editing.d.cts +2 -0
- package/dist/_visual-editing.d.ts +2 -0
- package/dist/_visual-editing.js +3 -0
- package/dist/index.cjs +3007 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +1275 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +708 -1188
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2964 -4783
- package/dist/index.js.map +1 -1
- package/dist/theme.cjs +54 -0
- package/dist/theme.cjs.map +1 -0
- package/dist/theme.d.cts +278 -0
- package/dist/theme.d.cts.map +1 -0
- package/dist/theme.d.ts +278 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +53 -0
- package/dist/theme.js.map +1 -0
- package/package.json +65 -88
- package/dist/_chunks-es/Syntax.js +0 -23
- package/dist/_chunks-es/Syntax.js.map +0 -1
- package/dist/index.css +0 -1
- package/exports/index.css +0 -1
- package/exports/index.ts +0 -125
- package/src/components/autocomplete/Autocomplete.tsx +0 -665
- package/src/components/autocomplete/AutocompleteOption.tsx +0 -42
- package/src/components/autocomplete/__workshop__/Async.tsx +0 -162
- package/src/components/autocomplete/__workshop__/ConstrainedHeight.tsx +0 -121
- package/src/components/autocomplete/__workshop__/Custom.tsx +0 -91
- package/src/components/autocomplete/__workshop__/Example.tsx +0 -70
- package/src/components/autocomplete/__workshop__/FocusAndBlur.tsx +0 -39
- package/src/components/autocomplete/__workshop__/Fullscreen.tsx +0 -307
- package/src/components/autocomplete/__workshop__/index.ts +0 -41
- package/src/components/autocomplete/__workshop__/mock/apiStore.ts +0 -49
- package/src/components/autocomplete/__workshop__/mock/countries.ts +0 -245
- package/src/components/autocomplete/__workshop__/types.ts +0 -4
- package/src/components/autocomplete/autocompleteReducer.ts +0 -47
- package/src/components/autocomplete/constants.ts +0 -28
- package/src/components/autocomplete/types.ts +0 -103
- package/src/components/breadcrumbs/Breadcrumbs.tsx +0 -163
- package/src/components/breadcrumbs/__workshop__/Example.tsx +0 -48
- package/src/components/breadcrumbs/__workshop__/index.ts +0 -16
- package/src/components/dialog/Dialog.tsx +0 -230
- package/src/components/dialog/DialogCard.tsx +0 -233
- package/src/components/dialog/DialogContext.ts +0 -21
- package/src/components/dialog/DialogProvider.tsx +0 -34
- package/src/components/dialog/__workshop__/Activate.tsx +0 -141
- package/src/components/dialog/__workshop__/AutoFocus.tsx +0 -29
- package/src/components/dialog/__workshop__/Layering.tsx +0 -41
- package/src/components/dialog/__workshop__/Nested.tsx +0 -71
- package/src/components/dialog/__workshop__/OnScroll.tsx +0 -51
- package/src/components/dialog/__workshop__/Panes.tsx +0 -75
- package/src/components/dialog/__workshop__/Position.tsx +0 -30
- package/src/components/dialog/__workshop__/Props.tsx +0 -93
- package/src/components/dialog/__workshop__/Provider.tsx +0 -11
- package/src/components/dialog/__workshop__/Wrapped.tsx +0 -76
- package/src/components/dialog/__workshop__/index.ts +0 -21
- package/src/components/dialog/isTargetWithinScope.ts +0 -14
- package/src/components/dialog/types.ts +0 -2
- package/src/components/dialog/useDialog.ts +0 -11
- package/src/components/hotkeys/Hotkeys.tsx +0 -70
- package/src/components/hotkeys/__workshop__/Plain.tsx +0 -9
- package/src/components/hotkeys/__workshop__/index.ts +0 -16
- package/src/components/menu/Menu.test.tsx +0 -125
- package/src/components/menu/Menu.tsx +0 -174
- package/src/components/menu/MenuButton.tsx +0 -231
- package/src/components/menu/MenuContext.ts +0 -19
- package/src/components/menu/MenuDivider.tsx +0 -32
- package/src/components/menu/MenuGroup.tsx +0 -240
- package/src/components/menu/MenuItem.tsx +0 -153
- package/src/components/menu/__workshop__/AsComponent.tsx +0 -45
- package/src/components/menu/__workshop__/AvatarMenu.tsx +0 -36
- package/src/components/menu/__workshop__/ClosableMenuButton.tsx +0 -47
- package/src/components/menu/__workshop__/ConstrainedInBoundary.tsx +0 -133
- package/src/components/menu/__workshop__/CustomMenuItem.tsx +0 -47
- package/src/components/menu/__workshop__/CustomSelectedState.tsx +0 -35
- package/src/components/menu/__workshop__/DataProps.tsx +0 -27
- package/src/components/menu/__workshop__/DisableFocusOnClose.tsx +0 -40
- package/src/components/menu/__workshop__/Groups.tsx +0 -164
- package/src/components/menu/__workshop__/MenuButton.tsx +0 -79
- package/src/components/menu/__workshop__/MenuGroupRight.tsx +0 -73
- package/src/components/menu/__workshop__/NestedMenu.tsx +0 -22
- package/src/components/menu/__workshop__/OnCloseMenuButton.tsx +0 -50
- package/src/components/menu/__workshop__/SelectedItem.tsx +0 -69
- package/src/components/menu/__workshop__/ShouldFocus.tsx +0 -42
- package/src/components/menu/__workshop__/Tones.tsx +0 -19
- package/src/components/menu/__workshop__/index.ts +0 -91
- package/src/components/menu/helpers.ts +0 -82
- package/src/components/menu/useMenu.ts +0 -21
- package/src/components/menu/useMenuController.ts +0 -245
- package/src/components/tab/Tab.tsx +0 -135
- package/src/components/tab/TabList.tsx +0 -157
- package/src/components/tab/TabListContext.ts +0 -10
- package/src/components/tab/TabPanel.tsx +0 -94
- package/src/components/tab/__workshop__/Example.tsx +0 -135
- package/src/components/tab/__workshop__/index.ts +0 -16
- package/src/components/tab/types.ts +0 -11
- package/src/components/toast/Toast.test.tsx +0 -103
- package/src/components/toast/Toast.tsx +0 -191
- package/src/components/toast/ToastContext.ts +0 -7
- package/src/components/toast/ToastLayer.tsx +0 -54
- package/src/components/toast/ToastProvider.tsx +0 -127
- package/src/components/toast/__workshop__/Hook.tsx +0 -71
- package/src/components/toast/__workshop__/Toast.tsx +0 -26
- package/src/components/toast/__workshop__/index.ts +0 -21
- package/src/components/toast/toastState.ts +0 -6
- package/src/components/toast/types.ts +0 -24
- package/src/components/toast/useToast.ts +0 -23
- package/src/components/tree/Tree.tsx +0 -248
- package/src/components/tree/TreeContext.ts +0 -10
- package/src/components/tree/TreeGroup.tsx +0 -46
- package/src/components/tree/TreeItem.tsx +0 -236
- package/src/components/tree/__workshop__/Basic.tsx +0 -108
- package/src/components/tree/__workshop__/TabFromElement.tsx +0 -84
- package/src/components/tree/__workshop__/basic.perf.ts +0 -19
- package/src/components/tree/__workshop__/index.ts +0 -23
- package/src/components/tree/helpers.ts +0 -105
- package/src/components/tree/types.ts +0 -24
- package/src/components/tree/useTree.ts +0 -17
- package/src/components/virtualList/VirtualList.tsx +0 -254
- package/src/components/virtualList/__workshop__/ChangingProps.tsx +0 -41
- package/src/components/virtualList/__workshop__/ElementScroll.tsx +0 -43
- package/src/components/virtualList/__workshop__/InfiniteList.tsx +0 -40
- package/src/components/virtualList/__workshop__/WindowScrolll.tsx +0 -23
- package/src/components/virtualList/__workshop__/index.ts +0 -31
- package/src/core/_keys.ts +0 -26
- package/src/core/constants.ts +0 -67
- package/src/core/getElementRef.ts +0 -29
- package/src/core/helpers/animation.ts +0 -26
- package/src/core/helpers/element.ts +0 -55
- package/src/core/helpers/focus.ts +0 -92
- package/src/core/helpers/props.ts +0 -51
- package/src/core/helpers/scroll.ts +0 -15
- package/src/core/lib/createGlobalScopedContext.ts +0 -39
- package/src/core/lib/globalScope.ts +0 -19
- package/src/core/lib/isArray.ts +0 -3
- package/src/core/lib/isRecord.ts +0 -3
- package/src/core/types.ts +0 -57
- package/src/hooks/useClickOutsideEvent.test.tsx +0 -114
- package/src/hooks/useClickOutsideEvent.ts +0 -66
- package/src/hooks/useCustomValidity.ts +0 -13
- package/src/hooks/useElementSize.ts +0 -19
- package/src/hooks/useGlobalKeyDown.ts +0 -23
- package/src/hooks/useMatchMedia.ts +0 -28
- package/src/hooks/useMediaIndex/__workshop__/Test.tsx +0 -14
- package/src/hooks/useMediaIndex/__workshop__/index.ts +0 -16
- package/src/hooks/useMediaIndex/useMediaIndex.test.tsx +0 -21
- package/src/hooks/useMediaIndex/useMediaIndex.ts +0 -111
- package/src/hooks/useMounted.ts +0 -15
- package/src/hooks/usePrefersDark.hydration.test.tsx +0 -56
- package/src/hooks/usePrefersDark.test.tsx +0 -20
- package/src/hooks/usePrefersDark.ts +0 -16
- package/src/hooks/usePrefersReducedMotion.hydration.test.tsx +0 -56
- package/src/hooks/usePrefersReducedMotion.test.tsx +0 -20
- package/src/hooks/usePrefersReducedMotion.ts +0 -16
- package/src/hooks/useResponsiveProp.ts +0 -14
- package/src/hooks/useUnique.ts +0 -54
- package/src/middleware/origin.ts +0 -47
- package/src/observers/elementSize.ts +0 -114
- package/src/primitives/_syntax/LazySyntax.tsx +0 -4
- package/src/primitives/_syntax/Syntax.tsx +0 -26
- package/src/primitives/avatar/Avatar.tsx +0 -145
- package/src/primitives/avatar/AvatarCounter.tsx +0 -69
- package/src/primitives/avatar/AvatarStack.tsx +0 -77
- package/src/primitives/avatar/__workshop__/AsButton.tsx +0 -12
- package/src/primitives/avatar/__workshop__/PropsStory.tsx +0 -24
- package/src/primitives/avatar/__workshop__/Stack.tsx +0 -27
- package/src/primitives/avatar/__workshop__/WithinButton.tsx +0 -51
- package/src/primitives/avatar/__workshop__/WithinMenuItem.tsx +0 -52
- package/src/primitives/avatar/__workshop__/index.ts +0 -36
- package/src/primitives/avatar/types.ts +0 -2
- package/src/primitives/badge/Badge.test.tsx +0 -16
- package/src/primitives/badge/Badge.tsx +0 -53
- package/src/primitives/badge/__workshop__/Props.tsx +0 -27
- package/src/primitives/badge/__workshop__/Tones.tsx +0 -15
- package/src/primitives/badge/__workshop__/index.ts +0 -26
- package/src/primitives/badge/__workshop__/within-button.tsx +0 -36
- package/src/primitives/box/Box.tsx +0 -73
- package/src/primitives/box/__workshop__/Props.tsx +0 -26
- package/src/primitives/box/__workshop__/Responsive.tsx +0 -19
- package/src/primitives/box/__workshop__/index.ts +0 -21
- package/src/primitives/button/Button.test.tsx +0 -30
- package/src/primitives/button/Button.tsx +0 -148
- package/src/primitives/button/__workshop__/Custom.tsx +0 -39
- package/src/primitives/button/__workshop__/CustomIcons.tsx +0 -37
- package/src/primitives/button/__workshop__/DataProps.tsx +0 -18
- package/src/primitives/button/__workshop__/Disabled.tsx +0 -43
- package/src/primitives/button/__workshop__/MixedChildren.tsx +0 -12
- package/src/primitives/button/__workshop__/Props.tsx +0 -60
- package/src/primitives/button/__workshop__/Stacked.tsx +0 -60
- package/src/primitives/button/__workshop__/Styled1.css.ts +0 -7
- package/src/primitives/button/__workshop__/Styled1.tsx +0 -11
- package/src/primitives/button/__workshop__/TextOverflow.tsx +0 -17
- package/src/primitives/button/__workshop__/UploadButton.tsx +0 -28
- package/src/primitives/button/__workshop__/index.ts +0 -61
- package/src/primitives/button/types.ts +0 -2
- package/src/primitives/card/Card.tsx +0 -124
- package/src/primitives/card/CardContext.ts +0 -10
- package/src/primitives/card/CardInternalContext.ts +0 -10
- package/src/primitives/card/CardInternalProvider.tsx +0 -15
- package/src/primitives/card/CardProvider.tsx +0 -16
- package/src/primitives/card/__workshop__/AsButton.tsx +0 -103
- package/src/primitives/card/__workshop__/AsComponent.tsx +0 -25
- package/src/primitives/card/__workshop__/Checkered.tsx +0 -25
- package/src/primitives/card/__workshop__/DataProps.tsx +0 -25
- package/src/primitives/card/__workshop__/Interactive.tsx +0 -29
- package/src/primitives/card/__workshop__/ListNavigation.tsx +0 -78
- package/src/primitives/card/__workshop__/Props.tsx +0 -59
- package/src/primitives/card/__workshop__/Selected.tsx +0 -62
- package/src/primitives/card/__workshop__/Styled.tsx +0 -11
- package/src/primitives/card/__workshop__/Tones.tsx +0 -26
- package/src/primitives/card/__workshop__/index.ts +0 -21
- package/src/primitives/card/types.ts +0 -21
- package/src/primitives/card/useCard.ts +0 -20
- package/src/primitives/checkbox/Checkbox.tsx +0 -80
- package/src/primitives/checkbox/__workshop__/Example.tsx +0 -25
- package/src/primitives/checkbox/__workshop__/Props.tsx +0 -35
- package/src/primitives/checkbox/__workshop__/ReadOnly.tsx +0 -16
- package/src/primitives/checkbox/__workshop__/Tones.tsx +0 -26
- package/src/primitives/checkbox/__workshop__/index.ts +0 -15
- package/src/primitives/code/Code.tsx +0 -47
- package/src/primitives/code/__workshop__/OpticalAlignment.tsx +0 -25
- package/src/primitives/code/__workshop__/Props.tsx +0 -20
- package/src/primitives/code/__workshop__/index.ts +0 -21
- package/src/primitives/container/Container.tsx +0 -43
- package/src/primitives/container/__workshop__/Example.tsx +0 -16
- package/src/primitives/container/__workshop__/index.ts +0 -16
- package/src/primitives/container/types.ts +0 -6
- package/src/primitives/flex/Flex.tsx +0 -38
- package/src/primitives/flex/__workshop__/Example.tsx +0 -26
- package/src/primitives/flex/__workshop__/Gap.tsx +0 -25
- package/src/primitives/flex/__workshop__/index.ts +0 -13
- package/src/primitives/flex/__workshop__/styles.css.ts +0 -12
- package/src/primitives/grid/Grid.tsx +0 -38
- package/src/primitives/grid/__workshop__/Responsive.tsx +0 -54
- package/src/primitives/grid/__workshop__/index.ts +0 -12
- package/src/primitives/heading/Heading.tsx +0 -68
- package/src/primitives/heading/__workshop__/OpticalAlignment.tsx +0 -27
- package/src/primitives/heading/__workshop__/Plain.tsx +0 -25
- package/src/primitives/heading/__workshop__/index.ts +0 -21
- package/src/primitives/inline/Inline.tsx +0 -37
- package/src/primitives/inline/__workshop__/Plain.tsx +0 -22
- package/src/primitives/inline/__workshop__/index.ts +0 -10
- package/src/primitives/kbd/Kbd.tsx +0 -36
- package/src/primitives/kbd/__workshop__/Plain.tsx +0 -9
- package/src/primitives/kbd/__workshop__/index.ts +0 -10
- package/src/primitives/label/Label.tsx +0 -67
- package/src/primitives/label/__workshop__/OpticalAlignment.tsx +0 -27
- package/src/primitives/label/__workshop__/Plain.tsx +0 -27
- package/src/primitives/label/__workshop__/index.ts +0 -21
- package/src/primitives/layer/Layer.test.tsx +0 -110
- package/src/primitives/layer/Layer.tsx +0 -35
- package/src/primitives/layer/LayerCard.tsx +0 -90
- package/src/primitives/layer/LayerContext.ts +0 -7
- package/src/primitives/layer/LayerProvider.tsx +0 -106
- package/src/primitives/layer/__workshop__/MultipleRoots.tsx +0 -49
- package/src/primitives/layer/__workshop__/Nested.tsx +0 -107
- package/src/primitives/layer/__workshop__/ResponsiveZOffset.tsx +0 -17
- package/src/primitives/layer/__workshop__/_debug.tsx +0 -17
- package/src/primitives/layer/__workshop__/index.ts +0 -26
- package/src/primitives/layer/getLayerContext.test.ts +0 -32
- package/src/primitives/layer/getLayerContext.ts +0 -21
- package/src/primitives/layer/types.ts +0 -9
- package/src/primitives/layer/useLayer.ts +0 -24
- package/src/primitives/popover/Popover.tsx +0 -291
- package/src/primitives/popover/PopoverLayer.tsx +0 -101
- package/src/primitives/popover/__workshop__/AlignedStory.tsx +0 -75
- package/src/primitives/popover/__workshop__/MarginsStory.tsx +0 -31
- package/src/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +0 -32
- package/src/primitives/popover/__workshop__/OpenOnMountStory.tsx +0 -11
- package/src/primitives/popover/__workshop__/PlainStory.tsx +0 -67
- package/src/primitives/popover/__workshop__/RecursiveStory.tsx +0 -71
- package/src/primitives/popover/__workshop__/SidePanelStory.tsx +0 -95
- package/src/primitives/popover/__workshop__/TestStory.tsx +0 -97
- package/src/primitives/popover/__workshop__/index.ts +0 -56
- package/src/primitives/popover/__workshop__/portal-inheritance.tsx +0 -15
- package/src/primitives/popover/constants.ts +0 -20
- package/src/primitives/popover/floating-ui/size.ts +0 -75
- package/src/primitives/popover/types.ts +0 -12
- package/src/primitives/popover/useMiddleware.ts +0 -126
- package/src/primitives/radio/Radio.tsx +0 -64
- package/src/primitives/radio/__workshop__/Example.tsx +0 -63
- package/src/primitives/radio/__workshop__/Plain.tsx +0 -28
- package/src/primitives/radio/__workshop__/index.ts +0 -13
- package/src/primitives/select/Select.tsx +0 -76
- package/src/primitives/select/__workshop__/Plain.tsx +0 -37
- package/src/primitives/select/__workshop__/ReadOnly.tsx +0 -23
- package/src/primitives/select/__workshop__/index.ts +0 -13
- package/src/primitives/selectable/Selectable.tsx +0 -48
- package/src/primitives/selectable/__workshop__/DataProps.tsx +0 -24
- package/src/primitives/selectable/__workshop__/as-link.tsx +0 -13
- package/src/primitives/selectable/__workshop__/index.ts +0 -19
- package/src/primitives/skeleton/CodeSkeleton.tsx +0 -49
- package/src/primitives/skeleton/HeadingSkeleton.tsx +0 -48
- package/src/primitives/skeleton/LabelSkeleton.tsx +0 -47
- package/src/primitives/skeleton/Skeleton.tsx +0 -70
- package/src/primitives/skeleton/TextSkeleton.tsx +0 -49
- package/src/primitives/skeleton/__workshop__/Delay.tsx +0 -69
- package/src/primitives/skeleton/__workshop__/Skeleton.tsx +0 -63
- package/src/primitives/skeleton/__workshop__/index.ts +0 -13
- package/src/primitives/spinner/Spinner.tsx +0 -45
- package/src/primitives/spinner/SpinnerAnimatedIcon.tsx +0 -14
- package/src/primitives/spinner/__workshop__/Props.tsx +0 -13
- package/src/primitives/spinner/__workshop__/index.ts +0 -16
- package/src/primitives/srOnly/SrOnly.tsx +0 -33
- package/src/primitives/stack/Stack.tsx +0 -38
- package/src/primitives/stack/__workshop__/Plain.tsx +0 -30
- package/src/primitives/stack/__workshop__/index.ts +0 -16
- package/src/primitives/switch/Switch.tsx +0 -76
- package/src/primitives/switch/__workshop__/Example.tsx +0 -25
- package/src/primitives/switch/__workshop__/Props.tsx +0 -23
- package/src/primitives/switch/__workshop__/index.ts +0 -13
- package/src/primitives/text/InlineCode.tsx +0 -25
- package/src/primitives/text/Text.tsx +0 -68
- package/src/primitives/text/__workshop__/Example.tsx +0 -26
- package/src/primitives/text/__workshop__/OpticalAlignment.tsx +0 -27
- package/src/primitives/text/__workshop__/index.ts +0 -26
- package/src/primitives/text/__workshop__/inline-code.tsx +0 -13
- package/src/primitives/textArea/TextArea.tsx +0 -97
- package/src/primitives/textArea/__workshop__/Plain.tsx +0 -46
- package/src/primitives/textArea/__workshop__/index.ts +0 -16
- package/src/primitives/textInput/TextInput.tsx +0 -279
- package/src/primitives/textInput/__workshop__/ClearButton.tsx +0 -32
- package/src/primitives/textInput/__workshop__/CustomValidity.tsx +0 -17
- package/src/primitives/textInput/__workshop__/Plain.tsx +0 -102
- package/src/primitives/textInput/__workshop__/ReadOnly.tsx +0 -14
- package/src/primitives/textInput/__workshop__/States.tsx +0 -53
- package/src/primitives/textInput/__workshop__/Tones.tsx +0 -40
- package/src/primitives/textInput/__workshop__/Typed.tsx +0 -23
- package/src/primitives/textInput/__workshop__/index.ts +0 -46
- package/src/primitives/tooltip/Tooltip.test.tsx +0 -496
- package/src/primitives/tooltip/Tooltip.tsx +0 -546
- package/src/primitives/tooltip/TooltipLayer.tsx +0 -72
- package/src/primitives/tooltip/__workshop__/CustomPortal.tsx +0 -102
- package/src/primitives/tooltip/__workshop__/OverflowingBoundary.tsx +0 -74
- package/src/primitives/tooltip/__workshop__/Props.tsx +0 -107
- package/src/primitives/tooltip/__workshop__/ResizableBoundary.tsx +0 -91
- package/src/primitives/tooltip/__workshop__/index.ts +0 -31
- package/src/primitives/tooltip/constants.ts +0 -24
- package/src/primitives/tooltip/tooltipDelayGroup/TooltipDelayGroupContext.tsx +0 -13
- package/src/primitives/tooltip/tooltipDelayGroup/TooltipDelayGroupProvider.tsx +0 -96
- package/src/primitives/tooltip/tooltipDelayGroup/types.ts +0 -7
- package/src/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +0 -13
- package/src/root/Root.tsx +0 -93
- package/src/root/RootProvider.tsx +0 -37
- package/src/root/__workshop__/Boundary.tsx +0 -43
- package/src/root/__workshop__/index.ts +0 -24
- package/src/root/__workshop__/primitives.tsx +0 -49
- package/src/root/__workshop__/tone-inheritance.tsx +0 -65
- package/src/utils/ErrorBoundary.tsx +0 -50
- package/src/utils/boundaryElement/BoundaryElementContext.ts +0 -7
- package/src/utils/boundaryElement/BoundaryElementProvider.tsx +0 -16
- package/src/utils/boundaryElement/__workshop__/Plain.tsx +0 -49
- package/src/utils/boundaryElement/__workshop__/index.ts +0 -16
- package/src/utils/boundaryElement/types.ts +0 -2
- package/src/utils/boundaryElement/useBoundaryElement.ts +0 -12
- package/src/utils/elementQuery/ElementQuery.tsx +0 -75
- package/src/utils/elementQuery/__workshop__/CustomMedia.tsx +0 -19
- package/src/utils/elementQuery/__workshop__/index.ts +0 -16
- package/src/utils/elementQuery/__workshop__/styles.css.ts +0 -31
- package/src/utils/elementQuery/helpers.ts +0 -27
- package/src/utils/portal/Portal.test.tsx +0 -105
- package/src/utils/portal/Portal.tsx +0 -42
- package/src/utils/portal/PortalContext.ts +0 -37
- package/src/utils/portal/PortalProvider.tsx +0 -38
- package/src/utils/portal/__workshop__/Named.tsx +0 -69
- package/src/utils/portal/__workshop__/index.ts +0 -16
- package/src/utils/portal/types.ts +0 -7
- package/src/utils/portal/usePortal.ts +0 -30
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
BoundaryElementProvider,
|
|
3
|
-
Button,
|
|
4
|
-
Card,
|
|
5
|
-
Flex,
|
|
6
|
-
Portal,
|
|
7
|
-
PortalProvider,
|
|
8
|
-
Stack,
|
|
9
|
-
Text,
|
|
10
|
-
Tooltip,
|
|
11
|
-
} from '@sanity/ui'
|
|
12
|
-
import {useBoolean, useSelect, useText} from '@sanity/ui-workshop'
|
|
13
|
-
import {useMemo, useState} from 'react'
|
|
14
|
-
|
|
15
|
-
import {WORKSHOP_PLACEMENT_OPTIONS} from '$workshop'
|
|
16
|
-
|
|
17
|
-
const PORTAL_OPTIONS = {
|
|
18
|
-
'(true)': true,
|
|
19
|
-
'(false)': false,
|
|
20
|
-
'portal1': 'portal1',
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export default function CustomPortalStory(): React.JSX.Element {
|
|
24
|
-
const content = useText(
|
|
25
|
-
'Content',
|
|
26
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut mollis consectetur malesuada. Sed lobortis est dolor, eget imperdiet velit placerat et. Aenean posuere mi non aliquet iaculis. Donec fermentum pulvinar purus at sagittis. Ut tincidunt massa odio, sed finibus justo ullamcorper id. Nam venenatis justo non ligula elementum cursus. Pellentesque laoreet justo in mollis sagittis. In lacinia ornare ultrices. Suspendisse potenti.',
|
|
27
|
-
)
|
|
28
|
-
const placement = useSelect('Placement', WORKSHOP_PLACEMENT_OPTIONS, 'top')
|
|
29
|
-
const portal = useSelect('Portal', PORTAL_OPTIONS)
|
|
30
|
-
const useBoundaryElement = useBoolean('Use boundary element', true)
|
|
31
|
-
|
|
32
|
-
const [portal1Element, setPortal1Element] = useState<HTMLDivElement | null>(null)
|
|
33
|
-
const [boundaryElement, setBoundaryElement] = useState<HTMLDivElement | null>(null)
|
|
34
|
-
const __unstable_elements = useMemo(
|
|
35
|
-
() => ({
|
|
36
|
-
portal1: portal1Element,
|
|
37
|
-
}),
|
|
38
|
-
[portal1Element],
|
|
39
|
-
)
|
|
40
|
-
|
|
41
|
-
return (
|
|
42
|
-
<PortalProvider __unstable_elements={__unstable_elements}>
|
|
43
|
-
<Flex align="center" height="fill" justify="center">
|
|
44
|
-
<BoundaryElementProvider element={useBoundaryElement ? boundaryElement : null}>
|
|
45
|
-
<Card
|
|
46
|
-
ref={setBoundaryElement}
|
|
47
|
-
border
|
|
48
|
-
padding={4}
|
|
49
|
-
style={{
|
|
50
|
-
height: 'calc(100vh - 100px)',
|
|
51
|
-
position: 'relative',
|
|
52
|
-
width: '500px',
|
|
53
|
-
}}
|
|
54
|
-
>
|
|
55
|
-
<Text>Boundary element</Text>
|
|
56
|
-
<Flex align="center" height="fill" justify="center">
|
|
57
|
-
<Flex justify="center">
|
|
58
|
-
<Stack gap={2}>
|
|
59
|
-
<Tooltip
|
|
60
|
-
boundaryElement={useBoundaryElement ? boundaryElement : null}
|
|
61
|
-
content={content ? <Text size={1}>{content}</Text> : undefined}
|
|
62
|
-
padding={2}
|
|
63
|
-
placement={placement}
|
|
64
|
-
portal={portal}
|
|
65
|
-
>
|
|
66
|
-
<Button mode="bleed" text="Tooltip" />
|
|
67
|
-
</Tooltip>
|
|
68
|
-
</Stack>
|
|
69
|
-
</Flex>
|
|
70
|
-
</Flex>
|
|
71
|
-
</Card>
|
|
72
|
-
</BoundaryElementProvider>
|
|
73
|
-
</Flex>
|
|
74
|
-
|
|
75
|
-
<Card
|
|
76
|
-
ref={setPortal1Element}
|
|
77
|
-
border
|
|
78
|
-
margin={4}
|
|
79
|
-
padding={4}
|
|
80
|
-
style={{
|
|
81
|
-
left: 0,
|
|
82
|
-
position: 'absolute',
|
|
83
|
-
top: 0,
|
|
84
|
-
width: '175px',
|
|
85
|
-
}}
|
|
86
|
-
tone="critical"
|
|
87
|
-
/>
|
|
88
|
-
|
|
89
|
-
<Portal __unstable_name="portal1">
|
|
90
|
-
<Stack gap={4}>
|
|
91
|
-
<Text size={1} weight="medium">
|
|
92
|
-
Portal 1 content
|
|
93
|
-
</Text>
|
|
94
|
-
<Text size={1}>
|
|
95
|
-
The tooltip's max-width should not exceed this container's width (minus padding) if it's
|
|
96
|
-
set to use this portal
|
|
97
|
-
</Text>
|
|
98
|
-
</Stack>
|
|
99
|
-
</Portal>
|
|
100
|
-
</PortalProvider>
|
|
101
|
-
)
|
|
102
|
-
}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import {BoundaryElementProvider, Button, Card, Code, Flex, Stack, Text, Tooltip} from '@sanity/ui'
|
|
2
|
-
import {useBoolean, useSelect, useText} from '@sanity/ui-workshop'
|
|
3
|
-
import {useCallback, useState} from 'react'
|
|
4
|
-
|
|
5
|
-
import {WORKSHOP_PLACEMENT_OPTIONS} from '$workshop'
|
|
6
|
-
|
|
7
|
-
export default function OverflowingBoundaryStory(): React.JSX.Element {
|
|
8
|
-
const content = useText(
|
|
9
|
-
'Content',
|
|
10
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut mollis consectetur malesuada. Sed lobortis est dolor, eget imperdiet velit placerat et. Aenean posuere mi non aliquet iaculis. Donec fermentum pulvinar purus at sagittis. Ut tincidunt massa odio, sed finibus justo ullamcorper id. Nam venenatis justo non ligula elementum cursus. Pellentesque laoreet justo in mollis sagittis. In lacinia ornare ultrices. Suspendisse potenti.',
|
|
11
|
-
)
|
|
12
|
-
const placement = useSelect('Placement', WORKSHOP_PLACEMENT_OPTIONS, 'top')
|
|
13
|
-
const portal = useBoolean('Portal', false)
|
|
14
|
-
const useBoundaryElement = useBoolean('Use boundary element', true)
|
|
15
|
-
|
|
16
|
-
const [boundaryElement, setBoundaryElement] = useState<HTMLDivElement | null>(null)
|
|
17
|
-
const [buttonsVisible, setButtonsVisible] = useState(true)
|
|
18
|
-
|
|
19
|
-
const handleHideButtons = useCallback(() => {
|
|
20
|
-
setButtonsVisible(false)
|
|
21
|
-
}, [])
|
|
22
|
-
|
|
23
|
-
const handleShowButtons = useCallback(() => {
|
|
24
|
-
setButtonsVisible(true)
|
|
25
|
-
}, [])
|
|
26
|
-
|
|
27
|
-
return (
|
|
28
|
-
<Flex align="center" height="fill" justify="center" style={{height: '200vh'}}>
|
|
29
|
-
<BoundaryElementProvider element={useBoundaryElement ? boundaryElement : null}>
|
|
30
|
-
<Card
|
|
31
|
-
ref={setBoundaryElement}
|
|
32
|
-
border
|
|
33
|
-
style={{
|
|
34
|
-
height: 'calc(100vh - 100px)',
|
|
35
|
-
overflow: 'hidden',
|
|
36
|
-
position: 'relative',
|
|
37
|
-
resize: 'both',
|
|
38
|
-
width: '500px',
|
|
39
|
-
}}
|
|
40
|
-
>
|
|
41
|
-
<Flex align="center" height="fill" justify="center">
|
|
42
|
-
<Flex justify="center">
|
|
43
|
-
<Stack gap={2}>
|
|
44
|
-
<Code size={1}>Placement: {placement}</Code>
|
|
45
|
-
<Button
|
|
46
|
-
disabled={buttonsVisible}
|
|
47
|
-
fontSize={1}
|
|
48
|
-
text="Show buttons"
|
|
49
|
-
onClick={handleShowButtons}
|
|
50
|
-
/>
|
|
51
|
-
</Stack>
|
|
52
|
-
</Flex>
|
|
53
|
-
</Flex>
|
|
54
|
-
|
|
55
|
-
{buttonsVisible && (
|
|
56
|
-
<Tooltip
|
|
57
|
-
content={<Text size={1}>{content}</Text>}
|
|
58
|
-
padding={2}
|
|
59
|
-
placement={placement}
|
|
60
|
-
portal={portal}
|
|
61
|
-
>
|
|
62
|
-
<Button
|
|
63
|
-
mode="bleed"
|
|
64
|
-
style={{position: 'absolute', top: 10, right: 10}}
|
|
65
|
-
text="Tooltip"
|
|
66
|
-
onClick={handleHideButtons}
|
|
67
|
-
/>
|
|
68
|
-
</Tooltip>
|
|
69
|
-
)}
|
|
70
|
-
</Card>
|
|
71
|
-
</BoundaryElementProvider>
|
|
72
|
-
</Flex>
|
|
73
|
-
)
|
|
74
|
-
}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Button,
|
|
3
|
-
Card,
|
|
4
|
-
SHADOW,
|
|
5
|
-
SPACE,
|
|
6
|
-
Stack,
|
|
7
|
-
Text,
|
|
8
|
-
Tooltip,
|
|
9
|
-
TooltipDelayGroupProvider,
|
|
10
|
-
} from '@sanity/ui'
|
|
11
|
-
import {useBoolean, useNumber, useSelect, useText} from '@sanity/ui-workshop'
|
|
12
|
-
|
|
13
|
-
import {CardWrapper, WORKSHOP_PLACEMENT_OPTIONS} from '$workshop'
|
|
14
|
-
|
|
15
|
-
export default function PropsStory(): React.JSX.Element {
|
|
16
|
-
const arrow = useBoolean('Arrow', false)
|
|
17
|
-
const content = useText('Content', 'Tooltip content')
|
|
18
|
-
const padding = useSelect('Padding', SPACE, 2)
|
|
19
|
-
const placement = useSelect('Placement', WORKSHOP_PLACEMENT_OPTIONS, 'top')
|
|
20
|
-
const portal = useBoolean('Portal', true)
|
|
21
|
-
const openDelay = useNumber('Open Delay', 500)
|
|
22
|
-
const closeDelay = useNumber('Close Delay', 100)
|
|
23
|
-
const shadow = useSelect('Shadow', SHADOW, 2)
|
|
24
|
-
|
|
25
|
-
return (
|
|
26
|
-
<CardWrapper gap={[5, 6]} pattern="halftone">
|
|
27
|
-
<Stack gap={4}>
|
|
28
|
-
<Stack gap={3}>
|
|
29
|
-
<Text size={1} weight="medium">
|
|
30
|
-
Single tooltip
|
|
31
|
-
</Text>
|
|
32
|
-
</Stack>
|
|
33
|
-
|
|
34
|
-
<Card display="flex" gap={4} justifyContent="center" padding={4} radius={4} shadow={1}>
|
|
35
|
-
<Tooltip
|
|
36
|
-
arrow={arrow}
|
|
37
|
-
delay={{
|
|
38
|
-
open: openDelay,
|
|
39
|
-
close: closeDelay,
|
|
40
|
-
}}
|
|
41
|
-
padding={padding}
|
|
42
|
-
placement={placement}
|
|
43
|
-
portal={portal}
|
|
44
|
-
shadow={shadow}
|
|
45
|
-
text={content}
|
|
46
|
-
>
|
|
47
|
-
<Button mode="bleed" text="Hover me" />
|
|
48
|
-
</Tooltip>
|
|
49
|
-
</Card>
|
|
50
|
-
</Stack>
|
|
51
|
-
|
|
52
|
-
{/* GROUPED TOOLTIPS */}
|
|
53
|
-
|
|
54
|
-
<Stack gap={4}>
|
|
55
|
-
<Stack gap={3}>
|
|
56
|
-
<Text size={1} weight="medium">
|
|
57
|
-
Grouped tooltips
|
|
58
|
-
</Text>
|
|
59
|
-
<Text muted size={1}>
|
|
60
|
-
All tooltip delays are set to 1ms after the first tooltip within a DelayGroupProvider
|
|
61
|
-
opens.
|
|
62
|
-
</Text>
|
|
63
|
-
</Stack>
|
|
64
|
-
|
|
65
|
-
<Card display="flex" gap={4} justifyContent="center" padding={4} radius={4} shadow={1}>
|
|
66
|
-
<TooltipDelayGroupProvider
|
|
67
|
-
delay={{
|
|
68
|
-
open: openDelay,
|
|
69
|
-
close: closeDelay,
|
|
70
|
-
}}
|
|
71
|
-
>
|
|
72
|
-
<Tooltip
|
|
73
|
-
arrow={arrow}
|
|
74
|
-
content={<Text size={1}>{content}</Text>}
|
|
75
|
-
// This is overridden by the group delay, kept here intentionally for testing purposes.
|
|
76
|
-
delay={{
|
|
77
|
-
open: 100,
|
|
78
|
-
close: 100,
|
|
79
|
-
}}
|
|
80
|
-
padding={padding}
|
|
81
|
-
placement={placement}
|
|
82
|
-
portal={portal}
|
|
83
|
-
shadow={shadow}
|
|
84
|
-
>
|
|
85
|
-
<Button mode="bleed" text="Hover me" />
|
|
86
|
-
</Tooltip>
|
|
87
|
-
<Tooltip
|
|
88
|
-
arrow={arrow}
|
|
89
|
-
content={<Text size={1}>{content}</Text>}
|
|
90
|
-
// This is overridden by the group delay, kept here intentionally for testing purposes.
|
|
91
|
-
delay={{
|
|
92
|
-
open: 100,
|
|
93
|
-
close: 100,
|
|
94
|
-
}}
|
|
95
|
-
padding={padding}
|
|
96
|
-
placement={placement}
|
|
97
|
-
portal={portal}
|
|
98
|
-
shadow={shadow}
|
|
99
|
-
>
|
|
100
|
-
<Button mode="bleed" text="Or me" />
|
|
101
|
-
</Tooltip>
|
|
102
|
-
</TooltipDelayGroupProvider>
|
|
103
|
-
</Card>
|
|
104
|
-
</Stack>
|
|
105
|
-
</CardWrapper>
|
|
106
|
-
)
|
|
107
|
-
}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import {BoundaryElementProvider, Button, Card, Code, Flex, Text, Tooltip} from '@sanity/ui'
|
|
2
|
-
import {useBoolean, useSelect, useText} from '@sanity/ui-workshop'
|
|
3
|
-
import {useState} from 'react'
|
|
4
|
-
|
|
5
|
-
import {WORKSHOP_PLACEMENT_OPTIONS} from '$workshop'
|
|
6
|
-
|
|
7
|
-
export default function ResizableBoundaryStory(): React.JSX.Element {
|
|
8
|
-
const content = useText(
|
|
9
|
-
'Content',
|
|
10
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut mollis consectetur malesuada. Sed lobortis est dolor, eget imperdiet velit placerat et. Aenean posuere mi non aliquet iaculis. Donec fermentum pulvinar purus at sagittis. Ut tincidunt massa odio, sed finibus justo ullamcorper id. Nam venenatis justo non ligula elementum cursus. Pellentesque laoreet justo in mollis sagittis. In lacinia ornare ultrices. Suspendisse potenti.',
|
|
11
|
-
)
|
|
12
|
-
const placement = useSelect('Placement', WORKSHOP_PLACEMENT_OPTIONS, 'right')
|
|
13
|
-
const portal = useBoolean('Portal', true)
|
|
14
|
-
const useBoundaryElement = useBoolean('Use boundary element', true)
|
|
15
|
-
|
|
16
|
-
const [boundaryElement, setBoundaryElement] = useState<HTMLDivElement | null>(null)
|
|
17
|
-
|
|
18
|
-
return (
|
|
19
|
-
<Flex align="center" height="fill" justify="center">
|
|
20
|
-
<BoundaryElementProvider element={useBoundaryElement ? boundaryElement : null}>
|
|
21
|
-
<Card
|
|
22
|
-
ref={setBoundaryElement}
|
|
23
|
-
// border
|
|
24
|
-
radius={2}
|
|
25
|
-
shadow={1}
|
|
26
|
-
style={{
|
|
27
|
-
height: 'calc(100vh - 100px)',
|
|
28
|
-
overflow: 'hidden',
|
|
29
|
-
position: 'relative',
|
|
30
|
-
resize: 'both',
|
|
31
|
-
width: 'calc(100vw - 100px)',
|
|
32
|
-
// width: '500px',
|
|
33
|
-
// width: '100%',
|
|
34
|
-
// maxWidth: '640px',
|
|
35
|
-
}}
|
|
36
|
-
>
|
|
37
|
-
<Flex align="center" height="fill" justify="center">
|
|
38
|
-
<Flex justify="center">
|
|
39
|
-
<Code size={1}>Placement: {placement}</Code>
|
|
40
|
-
</Flex>
|
|
41
|
-
</Flex>
|
|
42
|
-
|
|
43
|
-
<Tooltip
|
|
44
|
-
content={<Text size={1}>{content}</Text>}
|
|
45
|
-
padding={2}
|
|
46
|
-
placement={placement}
|
|
47
|
-
portal={portal}
|
|
48
|
-
>
|
|
49
|
-
<Button mode="bleed" style={{position: 'absolute', top: 10, left: 10}} text="Tooltip" />
|
|
50
|
-
</Tooltip>
|
|
51
|
-
<Tooltip
|
|
52
|
-
content={<Text size={1}>{content}</Text>}
|
|
53
|
-
padding={2}
|
|
54
|
-
placement={placement}
|
|
55
|
-
portal={portal}
|
|
56
|
-
>
|
|
57
|
-
<Button
|
|
58
|
-
mode="bleed"
|
|
59
|
-
style={{position: 'absolute', top: 10, right: 10}}
|
|
60
|
-
text="Tooltip"
|
|
61
|
-
/>
|
|
62
|
-
</Tooltip>
|
|
63
|
-
<Tooltip
|
|
64
|
-
content={<Text size={1}>{content}</Text>}
|
|
65
|
-
padding={2}
|
|
66
|
-
placement={placement}
|
|
67
|
-
portal={portal}
|
|
68
|
-
>
|
|
69
|
-
<Button
|
|
70
|
-
mode="bleed"
|
|
71
|
-
style={{position: 'absolute', bottom: 10, left: 10}}
|
|
72
|
-
text="Tooltip"
|
|
73
|
-
/>
|
|
74
|
-
</Tooltip>
|
|
75
|
-
<Tooltip
|
|
76
|
-
content={<Text size={1}>{content}</Text>}
|
|
77
|
-
padding={2}
|
|
78
|
-
placement={placement}
|
|
79
|
-
portal={portal}
|
|
80
|
-
>
|
|
81
|
-
<Button
|
|
82
|
-
mode="bleed"
|
|
83
|
-
style={{position: 'absolute', bottom: 10, right: 10}}
|
|
84
|
-
text="Tooltip"
|
|
85
|
-
/>
|
|
86
|
-
</Tooltip>
|
|
87
|
-
</Card>
|
|
88
|
-
</BoundaryElementProvider>
|
|
89
|
-
</Flex>
|
|
90
|
-
)
|
|
91
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type {WorkshopScope} from '@sanity/ui-workshop'
|
|
2
|
-
import {lazy} from 'react'
|
|
3
|
-
|
|
4
|
-
const scope: WorkshopScope = {
|
|
5
|
-
name: 'primitives/tooltip',
|
|
6
|
-
title: 'Tooltip',
|
|
7
|
-
stories: [
|
|
8
|
-
{
|
|
9
|
-
name: 'props',
|
|
10
|
-
title: 'Props',
|
|
11
|
-
component: lazy(() => import('./Props')),
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
name: 'resizableBoundary',
|
|
15
|
-
title: 'Resizable Boundary',
|
|
16
|
-
component: lazy(() => import('./ResizableBoundary')),
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
name: 'overflowBoundary',
|
|
20
|
-
title: 'Overflowing Boundary',
|
|
21
|
-
component: lazy(() => import('./OverflowingBoundary')),
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
name: 'customPortalStory',
|
|
25
|
-
title: 'Custom Portal',
|
|
26
|
-
component: lazy(() => import('./CustomPortal')),
|
|
27
|
-
},
|
|
28
|
-
],
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export default scope
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type {Placement} from '../../core/types'
|
|
2
|
-
|
|
3
|
-
export const DEFAULT_TOOLTIP_DELAY = {
|
|
4
|
-
open: 500,
|
|
5
|
-
close: 100,
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export const DEFAULT_TOOLTIP_DISTANCE = 4
|
|
9
|
-
export const DEFAULT_TOOLTIP_PADDING = 4
|
|
10
|
-
|
|
11
|
-
export const DEFAULT_FALLBACK_PLACEMENTS: Record<Placement, Placement[]> = {
|
|
12
|
-
'top': ['top-end', 'top-start', 'bottom', 'left', 'right'],
|
|
13
|
-
'top-start': ['top', 'top-end', 'bottom-start', 'left-start', 'right-start'],
|
|
14
|
-
'top-end': ['top', 'top-start', 'bottom-end', 'left-end', 'right-end'],
|
|
15
|
-
'bottom': ['bottom-end', 'bottom-start', 'top', 'left', 'right'],
|
|
16
|
-
'bottom-start': ['bottom', 'bottom-end', 'top-start', 'left-start', 'right-start'],
|
|
17
|
-
'bottom-end': ['bottom', 'bottom-start', 'top-end', 'left-end', 'right-end'],
|
|
18
|
-
'left': ['left-end', 'left-start', 'right', 'top', 'bottom'],
|
|
19
|
-
'left-start': ['left', 'left-end', 'right-start', 'top-start', 'bottom-start'],
|
|
20
|
-
'left-end': ['left', 'left-start', 'right-end', 'top-end', 'bottom-end'],
|
|
21
|
-
'right': ['right-end', 'right-start', 'left', 'top', 'bottom'],
|
|
22
|
-
'right-start': ['right', 'right-end', 'left-start', 'top-start', 'bottom-start'],
|
|
23
|
-
'right-end': ['right', 'right-start', 'left-end', 'top-end', 'bottom-end'],
|
|
24
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type {Context} from 'react'
|
|
2
|
-
|
|
3
|
-
import {createGlobalScopedContext} from '../../../core/lib/createGlobalScopedContext'
|
|
4
|
-
import type {TooltipDelayGroupContextValue} from './types'
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @beta
|
|
8
|
-
*/
|
|
9
|
-
export const TooltipDelayGroupContext: Context<TooltipDelayGroupContextValue | null> =
|
|
10
|
-
createGlobalScopedContext<TooltipDelayGroupContextValue | null>(
|
|
11
|
-
'@sanity/ui/v4/tooltipDelayGroup',
|
|
12
|
-
null,
|
|
13
|
-
)
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import {type ReactNode, useCallback, useMemo, useRef, useState} from 'react'
|
|
2
|
-
|
|
3
|
-
import type {Delay} from '../../../core/types'
|
|
4
|
-
import {DEFAULT_TOOLTIP_DELAY} from '../constants'
|
|
5
|
-
import {TooltipDelayGroupContext} from './TooltipDelayGroupContext'
|
|
6
|
-
import type {TooltipDelayGroupContextValue} from './types'
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @public
|
|
10
|
-
* */
|
|
11
|
-
export interface TooltipDelayGroupProviderProps {
|
|
12
|
-
children?: ReactNode
|
|
13
|
-
/**
|
|
14
|
-
* Handles the delays to open or close a tooltip inside a group
|
|
15
|
-
*
|
|
16
|
-
* If only a `number` is passed, it will be used for both opening and closing.
|
|
17
|
-
*
|
|
18
|
-
* If an object `{open: number; close:number}` is passed, it can be used to set different delays for each action.
|
|
19
|
-
*
|
|
20
|
-
* @public
|
|
21
|
-
*/
|
|
22
|
-
delay?: Delay
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* @public
|
|
27
|
-
* Provides context for a group of tooltip elements that should share a delay
|
|
28
|
-
* which temporarily becomes 0ms after the first tooltip of the group opens.
|
|
29
|
-
*/
|
|
30
|
-
export function TooltipDelayGroupProvider(
|
|
31
|
-
props: TooltipDelayGroupProviderProps,
|
|
32
|
-
): React.JSX.Element {
|
|
33
|
-
const {children, delay = DEFAULT_TOOLTIP_DELAY} = props
|
|
34
|
-
|
|
35
|
-
const [visibleTooltipId, setVisibleTooltipId] = useState<string | undefined>(undefined)
|
|
36
|
-
|
|
37
|
-
const openDelay = typeof delay === 'number' ? delay : delay?.open || 0
|
|
38
|
-
const openDelayRef = useRef(openDelay)
|
|
39
|
-
|
|
40
|
-
const closeDelay = typeof delay === 'number' ? delay : delay?.close || 0
|
|
41
|
-
const closeDelayRef = useRef(closeDelay)
|
|
42
|
-
|
|
43
|
-
const timerRef = useRef<NodeJS.Timeout | undefined>(undefined)
|
|
44
|
-
const openRef = useRef(false)
|
|
45
|
-
|
|
46
|
-
const handleOpenChange = useCallback(
|
|
47
|
-
(params: {open: boolean; id: string; immediate?: boolean}) => {
|
|
48
|
-
const {open, id, immediate} = params
|
|
49
|
-
|
|
50
|
-
if (timerRef.current) {
|
|
51
|
-
clearTimeout(timerRef.current)
|
|
52
|
-
timerRef.current = undefined
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if (open) {
|
|
56
|
-
// open
|
|
57
|
-
|
|
58
|
-
if (immediate) {
|
|
59
|
-
setVisibleTooltipId(id)
|
|
60
|
-
openRef.current = true
|
|
61
|
-
return
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// If the group is already open, we want the next tooltip to open immediately.
|
|
65
|
-
const ms = openRef.current ? 0 : openDelayRef.current
|
|
66
|
-
|
|
67
|
-
timerRef.current = setTimeout(() => {
|
|
68
|
-
setVisibleTooltipId(id)
|
|
69
|
-
openRef.current = true
|
|
70
|
-
}, ms)
|
|
71
|
-
return
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// close
|
|
75
|
-
|
|
76
|
-
if (immediate) {
|
|
77
|
-
setVisibleTooltipId(undefined)
|
|
78
|
-
openRef.current = false
|
|
79
|
-
return
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
timerRef.current = setTimeout(() => {
|
|
83
|
-
setVisibleTooltipId(undefined)
|
|
84
|
-
openRef.current = false
|
|
85
|
-
}, closeDelayRef.current)
|
|
86
|
-
},
|
|
87
|
-
[],
|
|
88
|
-
)
|
|
89
|
-
|
|
90
|
-
const value: TooltipDelayGroupContextValue = useMemo(
|
|
91
|
-
() => ({handleOpenChange, visibleTooltipId}),
|
|
92
|
-
[handleOpenChange, visibleTooltipId],
|
|
93
|
-
)
|
|
94
|
-
|
|
95
|
-
return <TooltipDelayGroupContext value={value}>{children}</TooltipDelayGroupContext>
|
|
96
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import {use} from 'react'
|
|
2
|
-
|
|
3
|
-
import {TooltipDelayGroupContext} from './TooltipDelayGroupContext'
|
|
4
|
-
import type {TooltipDelayGroupContextValue} from './types'
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @beta
|
|
8
|
-
*/
|
|
9
|
-
export function useTooltipDelayGroup(): TooltipDelayGroupContextValue | null {
|
|
10
|
-
const value = use(TooltipDelayGroupContext)
|
|
11
|
-
|
|
12
|
-
return value
|
|
13
|
-
}
|
package/src/root/Root.tsx
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import {root, root_body, ROOT_STYLE_PROP_KEYS, type RootStyleProps} from '@sanity/ui-css'
|
|
2
|
-
import {useCallback, useImperativeHandle, useRef, useState} from 'react'
|
|
3
|
-
|
|
4
|
-
import {_splitKeys} from '../core/_keys'
|
|
5
|
-
import type {Props} from '../core/types'
|
|
6
|
-
import {RootProvider} from './RootProvider'
|
|
7
|
-
|
|
8
|
-
/** @public */
|
|
9
|
-
export const DEFAULT_ROOT_ELEMENT = 'html'
|
|
10
|
-
|
|
11
|
-
/** @public */
|
|
12
|
-
export type RootOwnProps = RootStyleProps
|
|
13
|
-
|
|
14
|
-
/** @public */
|
|
15
|
-
export type RootElementType = 'html' | 'div'
|
|
16
|
-
|
|
17
|
-
/** @public */
|
|
18
|
-
export type RootProps<E extends RootElementType = RootElementType> = Props<RootOwnProps, E>
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* The `Root` component.
|
|
22
|
-
*
|
|
23
|
-
* @public
|
|
24
|
-
*/
|
|
25
|
-
export function Root<E extends RootElementType = typeof DEFAULT_ROOT_ELEMENT>(
|
|
26
|
-
props: RootProps<E>,
|
|
27
|
-
): React.JSX.Element {
|
|
28
|
-
const [
|
|
29
|
-
{
|
|
30
|
-
height,
|
|
31
|
-
overflow = 'hidden',
|
|
32
|
-
scheme = 'light',
|
|
33
|
-
tone = 'default',
|
|
34
|
-
// split style props
|
|
35
|
-
...styleProps
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
as: Element = DEFAULT_ROOT_ELEMENT,
|
|
39
|
-
children,
|
|
40
|
-
ref: forwardedRef,
|
|
41
|
-
// split DOM props
|
|
42
|
-
...domProps
|
|
43
|
-
},
|
|
44
|
-
] = _splitKeys(props as RootProps<typeof DEFAULT_ROOT_ELEMENT>, ROOT_STYLE_PROP_KEYS)
|
|
45
|
-
|
|
46
|
-
const ref = useRef<HTMLHtmlElement | null>(null)
|
|
47
|
-
|
|
48
|
-
useImperativeHandle<HTMLHtmlElement | null, HTMLHtmlElement | null>(
|
|
49
|
-
forwardedRef,
|
|
50
|
-
() => ref.current,
|
|
51
|
-
)
|
|
52
|
-
|
|
53
|
-
const [portalElement, setPortalElement] = useState<HTMLElement | null>(null)
|
|
54
|
-
const [boundaryElement, setBoundaryElement] = useState<HTMLElement | null>(null)
|
|
55
|
-
|
|
56
|
-
const handleRef = useCallback((el: HTMLHtmlElement | null) => {
|
|
57
|
-
setBoundaryElement(el)
|
|
58
|
-
ref.current = el
|
|
59
|
-
}, [])
|
|
60
|
-
|
|
61
|
-
let node = (
|
|
62
|
-
<RootProvider
|
|
63
|
-
boundaryElement={boundaryElement}
|
|
64
|
-
portalElement={portalElement}
|
|
65
|
-
scheme={scheme}
|
|
66
|
-
tone={tone}
|
|
67
|
-
>
|
|
68
|
-
{children}
|
|
69
|
-
<div ref={setPortalElement} data-portal="" />
|
|
70
|
-
</RootProvider>
|
|
71
|
-
)
|
|
72
|
-
|
|
73
|
-
if (Element === 'html') {
|
|
74
|
-
node = <body className={root_body({height})}>{node}</body>
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return (
|
|
78
|
-
<Element
|
|
79
|
-
data-ui="Root"
|
|
80
|
-
{...domProps}
|
|
81
|
-
ref={handleRef}
|
|
82
|
-
className={root({
|
|
83
|
-
...styleProps,
|
|
84
|
-
height,
|
|
85
|
-
overflow,
|
|
86
|
-
scheme,
|
|
87
|
-
tone,
|
|
88
|
-
})}
|
|
89
|
-
>
|
|
90
|
-
{node}
|
|
91
|
-
</Element>
|
|
92
|
-
)
|
|
93
|
-
}
|