@sanity/ui 3.3.0 → 3.3.2
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/README.md +12 -0
- package/dist/_visual-editing.d.mts +2 -1126
- package/dist/_visual-editing.d.ts +2 -1126
- package/dist/_visual-editing.js +3 -31
- package/dist/_visual-editing.mjs +2 -31
- package/dist/index.d.mts +555 -2769
- package/dist/index.d.mts.map +1 -0
- package/dist/index.d.ts +555 -2769
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2982 -1934
- package/dist/index.mjs +2950 -1903
- package/dist/index.mjs.map +1 -1
- package/dist/refractor.js +16 -0
- package/dist/refractor.mjs +21 -0
- package/dist/refractor.mjs.map +1 -0
- package/dist/tabList.js +3804 -0
- package/dist/tabList.mjs +3355 -0
- package/dist/tabList.mjs.map +1 -0
- package/dist/theme.d.mts +927 -1227
- package/dist/theme.d.mts.map +1 -0
- package/dist/theme.d.ts +927 -1227
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +3 -4127
- package/dist/theme.mjs +2 -4127
- package/dist/theme2.d.mts +2 -0
- package/dist/theme2.d.ts +2 -0
- package/dist/theme2.js +4104 -0
- package/dist/theme2.mjs +3851 -0
- package/dist/theme2.mjs.map +1 -0
- package/dist/useTheme.d.mts +1451 -0
- package/dist/useTheme.d.mts.map +1 -0
- package/dist/useTheme.d.ts +1451 -0
- package/dist/useTheme.d.ts.map +1 -0
- package/exports/_visual-editing.ts +1 -0
- package/package.json +52 -168
- package/src/core/_compat.ts +30 -0
- package/src/core/components/autocomplete/autocomplete.tsx +8 -0
- package/src/core/components/autocomplete/autocompleteOption.tsx +1 -0
- package/src/core/components/breadcrumbs/breadcrumbs.test.tsx +8 -5
- package/src/core/components/breadcrumbs/breadcrumbs.tsx +3 -0
- package/src/core/components/dialog/dialog.tsx +5 -2
- package/src/core/components/hotkeys/hotkeys.test.tsx +10 -5
- package/src/core/components/hotkeys/hotkeys.tsx +2 -0
- package/src/core/components/menu/menu.spacing.test.tsx +12 -7
- package/src/core/components/menu/menu.test.tsx +9 -6
- package/src/core/components/menu/menu.tsx +4 -2
- package/src/core/components/menu/menuButton.tsx +8 -0
- package/src/core/components/menu/menuDivider.ts +1 -0
- package/src/core/components/menu/menuGroup.spacing.test.tsx +9 -6
- package/src/core/components/menu/menuGroup.tsx +6 -2
- package/src/core/components/menu/menuItem.spacing.test.tsx +8 -5
- package/src/core/components/menu/menuItem.tsx +4 -0
- package/src/core/components/menu/useMenuController.ts +2 -0
- package/src/core/components/skeleton/skeleton.tsx +1 -0
- package/src/core/components/tab/tab.tsx +1 -0
- package/src/core/components/tab/tabList.test.tsx +7 -5
- package/src/core/components/tab/tabList.tsx +1 -0
- package/src/core/components/toast/toast.test.tsx +9 -4
- package/src/core/components/toast/toast.tsx +1 -0
- package/src/core/components/toast/toastLayer.tsx +1 -0
- package/src/core/components/tree/tree.test.tsx +10 -5
- package/src/core/components/tree/tree.tsx +2 -0
- package/src/core/components/tree/treeGroup.tsx +1 -0
- package/src/core/components/tree/treeItem.test.tsx +10 -5
- package/src/core/components/tree/treeItem.tsx +1 -0
- package/src/core/hooks/index.ts +1 -0
- package/src/core/hooks/useClickOutside.test.tsx +43 -15
- package/src/core/hooks/useClickOutside.ts +1 -1
- package/src/core/hooks/useClickOutsideEvent.test.tsx +8 -4
- package/src/core/hooks/useDelayed.test.ts +9 -8
- package/src/core/hooks/useElementRect/useElementRect.ts +1 -0
- package/src/core/hooks/useForwardedRef.ts +1 -0
- package/src/core/hooks/useMediaIndex/useMediaIndex.test.tsx +2 -1
- package/src/core/hooks/usePrefersDark.hydration.test.tsx +7 -5
- package/src/core/hooks/usePrefersDark.test.tsx +3 -1
- package/src/core/hooks/usePrefersReducedMotion.hydration.test.tsx +7 -5
- package/src/core/hooks/usePrefersReducedMotion.test.tsx +3 -1
- package/src/core/lib/createGlobalScopedContext.ts +1 -0
- package/src/core/lib/globalScope.ts +1 -0
- package/src/core/observers/elementSizeObserver.ts +1 -0
- package/src/core/primitives/avatar/avatar.tsx +2 -2
- package/src/core/primitives/avatar/avatarStack.tsx +1 -0
- package/src/core/primitives/badge/badge.test.tsx +3 -2
- package/src/core/primitives/badge/badge.tsx +3 -1
- package/src/core/primitives/box/box.test.tsx +18 -5
- package/src/core/primitives/box/box.tsx +9 -1
- package/src/core/primitives/button/button.test.tsx +10 -6
- package/src/core/primitives/button/button.tsx +4 -0
- package/src/core/primitives/button/styles.ts +1 -0
- package/src/core/primitives/card/card.tsx +2 -5
- package/src/core/primitives/card/types.ts +1 -0
- package/src/core/primitives/code/code.tsx +1 -0
- package/src/core/primitives/code/refractor.tsx +2 -0
- package/src/core/primitives/container/container.tsx +1 -0
- package/src/core/primitives/flex/flex.tsx +2 -3
- package/src/core/primitives/grid/grid.test.tsx +11 -5
- package/src/core/primitives/grid/grid.tsx +3 -0
- package/src/core/primitives/heading/heading.tsx +1 -0
- package/src/core/primitives/inline/inline.test.tsx +9 -5
- package/src/core/primitives/inline/inline.tsx +3 -0
- package/src/core/primitives/kbd/kbd.tsx +5 -1
- package/src/core/primitives/label/label.tsx +1 -0
- package/src/core/primitives/popover/popover.tsx +5 -4
- package/src/core/primitives/popover/popoverCard.tsx +1 -0
- package/src/core/primitives/popover/types.ts +0 -1
- package/src/core/primitives/select/select.test.tsx +9 -5
- package/src/core/primitives/select/select.tsx +1 -0
- package/src/core/primitives/stack/stack.test.tsx +9 -5
- package/src/core/primitives/stack/stack.tsx +2 -0
- package/src/core/primitives/stack/styles.ts +1 -0
- package/src/core/primitives/text/text.tsx +1 -0
- package/src/core/primitives/textInput/textInput.test.tsx +9 -5
- package/src/core/primitives/textInput/textInput.tsx +3 -0
- package/src/core/primitives/tooltip/tooltip.test.tsx +82 -49
- package/src/core/primitives/tooltip/tooltip.tsx +3 -1
- package/src/core/primitives/tooltip/tooltipCard.tsx +1 -0
- package/src/core/primitives/tooltip/tooltipDelayGroup/types.ts +2 -0
- package/src/core/styles/flex/types.ts +0 -1
- package/src/core/styles/font/responsiveFont.ts +0 -3
- package/src/core/styles/font/types.ts +1 -3
- package/src/core/styles/grid/gridStyle.ts +1 -0
- package/src/core/styles/margin/marginStyle.ts +1 -0
- package/src/core/styles/margin/marginsStyle.test.ts +2 -1
- package/src/core/styles/padding/paddingStyle.test.ts +2 -1
- package/src/core/styles/padding/paddingStyle.ts +1 -0
- package/src/core/theme/theme.test.tsx +7 -3
- package/src/core/theme/useRootTheme.ts +1 -0
- package/src/core/theme/useTheme.ts +2 -0
- package/src/core/utils/arrow/arrow.tsx +1 -0
- package/src/core/utils/boundaryElement/boundaryElement.test.tsx +9 -4
- package/src/core/utils/conditionalWrapper/conditionalWrapper.tsx +1 -0
- package/src/core/utils/getElementRef.ts +5 -0
- package/src/core/utils/layer/getLayerContext.test.ts +2 -0
- package/src/core/utils/layer/layer.test.tsx +9 -4
- package/src/core/utils/layer/layer.tsx +1 -0
- package/src/core/utils/layer/useLayer.ts +2 -0
- package/src/core/utils/portal/portal.test.tsx +9 -4
- package/src/core/utils/portal/portalProvider.tsx +1 -0
- package/src/core/utils/virtualList/virtualList.tsx +2 -1
- package/src/theme/build/_deprecated/color/_selectable/createSelectableTones.ts +10 -0
- package/src/theme/build/_deprecated/color/_solid/createSolidTones.ts +4 -0
- package/src/theme/build/_deprecated/color/button/createButtonModes.ts +5 -0
- package/src/theme/build/_deprecated/color/button/createButtonTones.ts +5 -0
- package/src/theme/build/_deprecated/color/card/createCardStates.ts +6 -0
- package/src/theme/build/_deprecated/color/color.test.ts +5 -1
- package/src/theme/build/_deprecated/color/defaults.ts +1 -0
- package/src/theme/build/_deprecated/color/factory.ts +36 -0
- package/src/theme/build/_deprecated/color/input/createInputModes.ts +5 -0
- package/src/theme/build/_deprecated/color/muted/createMuted.ts +4 -0
- package/src/theme/build/_deprecated/color/spot/createSpot.ts +3 -0
- package/src/theme/build/buildColorTheme.test.ts +2 -0
- package/src/theme/build/buildColorTheme.ts +8 -0
- package/src/theme/build/buildTheme.test.ts +2 -0
- package/src/theme/build/lib/color-fns/color-fns.test.ts +3 -1
- package/src/theme/build/merge.ts +5 -0
- package/src/theme/build/mixThemeColor.test.ts +2 -0
- package/src/theme/build/renderColorTheme.ts +6 -0
- package/src/theme/build/renderColorValue.ts +0 -2
- package/src/theme/build/resolveColorTokens.ts +6 -0
- package/src/theme/build/theme.test.ts +2 -0
- package/src/theme/config/helpers.ts +5 -0
- package/src/theme/config/system.ts +2 -0
- package/src/theme/config/tokens/color/types.ts +6 -4
- package/src/theme/config/tokens/parseTokenKey.test.ts +2 -0
- package/src/theme/config/tokens/parseTokenValue.test.ts +2 -0
- package/src/theme/config/tokens/parseTokenValue.ts +1 -0
- package/src/theme/getScopedTheme.ts +6 -1
- package/src/theme/system/color/_helpers.ts +4 -0
- package/src/theme/system/theme.ts +4 -0
- package/src/theme/system/v0/color/_system.ts +1 -0
- package/src/theme/system/v0/color/button.ts +14 -0
- package/src/theme/system/v0/color/card.ts +6 -0
- package/src/theme/system/v0/color/color.ts +11 -0
- package/src/theme/system/v0/color/input.ts +6 -0
- package/src/theme/system/v0/color/muted.ts +11 -0
- package/src/theme/system/v0/color/selectable.ts +11 -0
- package/src/theme/system/v0/color/solid.ts +11 -0
- package/src/theme/system/v0/color/spot.ts +1 -0
- package/src/theme/versioning/getTheme_v2.ts +15 -0
- package/src/theme/versioning/themeColor_v0_v2.ts +7 -0
- package/src/theme/versioning/themeColor_v2_v2_9.ts +1 -0
- package/src/theme/versioning/v0_v2.ts +13 -1
- package/src/theme/versioning/v2_v0.ts +18 -0
- package/dist/_chunks-cjs/_visual-editing.js +0 -5899
- package/dist/_chunks-cjs/_visual-editing.js.map +0 -1
- package/dist/_chunks-cjs/refractor.js +0 -23
- package/dist/_chunks-cjs/refractor.js.map +0 -1
- package/dist/_chunks-es/_visual-editing.mjs +0 -5905
- package/dist/_chunks-es/_visual-editing.mjs.map +0 -1
- package/dist/_chunks-es/refractor.mjs +0 -26
- package/dist/_chunks-es/refractor.mjs.map +0 -1
- package/dist/_visual-editing.js.map +0 -1
- package/dist/_visual-editing.mjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/theme.js.map +0 -1
- package/dist/theme.mjs.map +0 -1
- package/src/core/__workshop__/constants.ts +0 -293
- package/src/core/components/autocomplete/__mocks__/apiStore.ts +0 -49
- package/src/core/components/autocomplete/__mocks__/countries.ts +0 -245
- package/src/core/components/autocomplete/__workshop__/async.tsx +0 -156
- package/src/core/components/autocomplete/__workshop__/constrainedHeight.tsx +0 -137
- package/src/core/components/autocomplete/__workshop__/custom.tsx +0 -89
- package/src/core/components/autocomplete/__workshop__/example.tsx +0 -79
- package/src/core/components/autocomplete/__workshop__/focusAndBlur.tsx +0 -36
- package/src/core/components/autocomplete/__workshop__/fullscreen.tsx +0 -294
- package/src/core/components/autocomplete/__workshop__/index.ts +0 -39
- package/src/core/components/autocomplete/__workshop__/types.ts +0 -4
- package/src/core/components/breadcrumbs/__workshop__/example.tsx +0 -62
- package/src/core/components/breadcrumbs/__workshop__/index.ts +0 -14
- package/src/core/components/dialog/__workshop__/activate.tsx +0 -134
- package/src/core/components/dialog/__workshop__/autoFocus.tsx +0 -29
- package/src/core/components/dialog/__workshop__/index.ts +0 -19
- package/src/core/components/dialog/__workshop__/layering.tsx +0 -41
- package/src/core/components/dialog/__workshop__/nested.tsx +0 -72
- package/src/core/components/dialog/__workshop__/onScroll.tsx +0 -39
- package/src/core/components/dialog/__workshop__/panes.tsx +0 -82
- package/src/core/components/dialog/__workshop__/position.tsx +0 -30
- package/src/core/components/dialog/__workshop__/props.tsx +0 -75
- package/src/core/components/dialog/__workshop__/provider.tsx +0 -11
- package/src/core/components/dialog/__workshop__/wrapped.tsx +0 -76
- package/src/core/components/hotkeys/__workshop__/index.ts +0 -14
- package/src/core/components/hotkeys/__workshop__/plain.tsx +0 -9
- package/src/core/components/menu/__workshop__/asComponent.tsx +0 -45
- package/src/core/components/menu/__workshop__/avatarMenu.tsx +0 -51
- package/src/core/components/menu/__workshop__/closableMenuButton.tsx +0 -46
- package/src/core/components/menu/__workshop__/constrainedInBoundary.tsx +0 -134
- package/src/core/components/menu/__workshop__/customMenuItem.tsx +0 -45
- package/src/core/components/menu/__workshop__/customSelectedState.tsx +0 -39
- package/src/core/components/menu/__workshop__/disableFocusOnClose.tsx +0 -40
- package/src/core/components/menu/__workshop__/groups.tsx +0 -156
- package/src/core/components/menu/__workshop__/index.ts +0 -89
- package/src/core/components/menu/__workshop__/menuButton.tsx +0 -80
- package/src/core/components/menu/__workshop__/menuGroupRight.tsx +0 -65
- package/src/core/components/menu/__workshop__/nestedMenu.tsx +0 -22
- package/src/core/components/menu/__workshop__/onCloseMenuButton.tsx +0 -41
- package/src/core/components/menu/__workshop__/selectedItem.tsx +0 -69
- package/src/core/components/menu/__workshop__/shouldFocus.tsx +0 -47
- package/src/core/components/menu/__workshop__/tones.tsx +0 -25
- package/src/core/components/menu/__workshop__/withoutArrow.tsx +0 -32
- package/src/core/components/skeleton/__workshop__/delay.tsx +0 -70
- package/src/core/components/skeleton/__workshop__/index.ts +0 -11
- package/src/core/components/skeleton/__workshop__/skeleton.tsx +0 -64
- package/src/core/components/tab/__workshop__/example.tsx +0 -79
- package/src/core/components/tab/__workshop__/index.ts +0 -14
- package/src/core/components/toast/__workshop__/hook.tsx +0 -71
- package/src/core/components/toast/__workshop__/index.ts +0 -19
- package/src/core/components/toast/__workshop__/toast.tsx +0 -26
- package/src/core/components/tree/__workshop__/basic.perf.ts +0 -19
- package/src/core/components/tree/__workshop__/basic.tsx +0 -105
- package/src/core/components/tree/__workshop__/index.ts +0 -21
- package/src/core/components/tree/__workshop__/tabFromElement.tsx +0 -84
- package/src/core/hooks/useElementRect/__workshop__/example.tsx +0 -32
- package/src/core/hooks/useElementRect/__workshop__/index.ts +0 -14
- package/src/core/hooks/useMediaIndex/__workshop__/index.ts +0 -14
- package/src/core/hooks/useMediaIndex/__workshop__/test.tsx +0 -14
- package/src/core/primitives/avatar/__workshop__/asButton.tsx +0 -14
- package/src/core/primitives/avatar/__workshop__/index.ts +0 -29
- package/src/core/primitives/avatar/__workshop__/stack.tsx +0 -25
- package/src/core/primitives/avatar/__workshop__/withinButton.tsx +0 -63
- package/src/core/primitives/avatar/__workshop__/withinMenuItem.tsx +0 -70
- package/src/core/primitives/badge/__workshop__/index.ts +0 -19
- package/src/core/primitives/badge/__workshop__/props.tsx +0 -30
- package/src/core/primitives/badge/__workshop__/tones.tsx +0 -21
- package/src/core/primitives/box/__workshop__/asComponent.tsx +0 -31
- package/src/core/primitives/box/__workshop__/index.ts +0 -24
- package/src/core/primitives/box/__workshop__/props.tsx +0 -20
- package/src/core/primitives/box/__workshop__/responsive.tsx +0 -20
- package/src/core/primitives/button/__workshop__/custom.tsx +0 -51
- package/src/core/primitives/button/__workshop__/customIcons.tsx +0 -30
- package/src/core/primitives/button/__workshop__/disabled.tsx +0 -74
- package/src/core/primitives/button/__workshop__/index.ts +0 -59
- package/src/core/primitives/button/__workshop__/mixedChildren.tsx +0 -12
- package/src/core/primitives/button/__workshop__/props.tsx +0 -55
- package/src/core/primitives/button/__workshop__/sanityUploadButton.tsx +0 -36
- package/src/core/primitives/button/__workshop__/stacked.tsx +0 -58
- package/src/core/primitives/button/__workshop__/styled1.tsx +0 -17
- package/src/core/primitives/button/__workshop__/styled2.tsx +0 -19
- package/src/core/primitives/button/__workshop__/uploadButton.tsx +0 -28
- package/src/core/primitives/card/__workshop__/allTones.tsx +0 -25
- package/src/core/primitives/card/__workshop__/asButton.tsx +0 -107
- package/src/core/primitives/card/__workshop__/asComponent.tsx +0 -27
- package/src/core/primitives/card/__workshop__/checkered.tsx +0 -26
- package/src/core/primitives/card/__workshop__/index.ts +0 -18
- package/src/core/primitives/card/__workshop__/interactive.tsx +0 -30
- package/src/core/primitives/card/__workshop__/listNavigation.tsx +0 -80
- package/src/core/primitives/card/__workshop__/props.tsx +0 -53
- package/src/core/primitives/card/__workshop__/selected.tsx +0 -94
- package/src/core/primitives/card/__workshop__/styled.tsx +0 -14
- package/src/core/primitives/checkbox/__workshop__/example.tsx +0 -25
- package/src/core/primitives/checkbox/__workshop__/index.ts +0 -13
- package/src/core/primitives/checkbox/__workshop__/props.tsx +0 -33
- package/src/core/primitives/checkbox/__workshop__/readOnly.tsx +0 -16
- package/src/core/primitives/checkbox/__workshop__/tones.tsx +0 -28
- package/src/core/primitives/code/__workshop__/index.ts +0 -19
- package/src/core/primitives/code/__workshop__/opticalAlignment.tsx +0 -48
- package/src/core/primitives/code/__workshop__/props.tsx +0 -21
- package/src/core/primitives/container/__workshop__/example.tsx +0 -20
- package/src/core/primitives/container/__workshop__/index.ts +0 -8
- package/src/core/primitives/flex/__workshop__/example.tsx +0 -34
- package/src/core/primitives/flex/__workshop__/gap.tsx +0 -25
- package/src/core/primitives/flex/__workshop__/index.ts +0 -11
- package/src/core/primitives/grid/__workshop__/index.ts +0 -10
- package/src/core/primitives/grid/__workshop__/responsive.tsx +0 -54
- package/src/core/primitives/heading/__workshop__/index.ts +0 -19
- package/src/core/primitives/heading/__workshop__/opticalAlignment.tsx +0 -54
- package/src/core/primitives/heading/__workshop__/plain.tsx +0 -32
- package/src/core/primitives/inline/__workshop__/index.ts +0 -8
- package/src/core/primitives/inline/__workshop__/plain.tsx +0 -27
- package/src/core/primitives/kbd/__workshop__/index.ts +0 -8
- package/src/core/primitives/kbd/__workshop__/plain.tsx +0 -9
- package/src/core/primitives/label/__workshop__/index.ts +0 -19
- package/src/core/primitives/label/__workshop__/opticalAlignment.tsx +0 -48
- package/src/core/primitives/label/__workshop__/plain.tsx +0 -24
- package/src/core/primitives/popover/__workshop__/AlignedStory.tsx +0 -77
- package/src/core/primitives/popover/__workshop__/MarginsStory.tsx +0 -31
- package/src/core/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +0 -32
- package/src/core/primitives/popover/__workshop__/OpenOnMountStory.tsx +0 -11
- package/src/core/primitives/popover/__workshop__/PlainStory.tsx +0 -71
- package/src/core/primitives/popover/__workshop__/RecursiveStory.tsx +0 -71
- package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +0 -89
- package/src/core/primitives/popover/__workshop__/TestStory.tsx +0 -97
- package/src/core/primitives/popover/__workshop__/index.ts +0 -49
- package/src/core/primitives/radio/__workshop__/example.tsx +0 -63
- package/src/core/primitives/radio/__workshop__/index.ts +0 -11
- package/src/core/primitives/radio/__workshop__/plain.tsx +0 -28
- package/src/core/primitives/select/__workshop__/index.ts +0 -11
- package/src/core/primitives/select/__workshop__/plain.tsx +0 -27
- package/src/core/primitives/select/__workshop__/readOnly.tsx +0 -23
- package/src/core/primitives/spinner/__workshop__/Props.tsx +0 -15
- package/src/core/primitives/spinner/__workshop__/index.ts +0 -14
- package/src/core/primitives/stack/__workshop__/index.ts +0 -14
- package/src/core/primitives/stack/__workshop__/plain.tsx +0 -32
- package/src/core/primitives/switch/__workshop__/example.tsx +0 -23
- package/src/core/primitives/switch/__workshop__/index.ts +0 -11
- package/src/core/primitives/switch/__workshop__/props.tsx +0 -21
- package/src/core/primitives/text/__workshop__/colored.tsx +0 -30
- package/src/core/primitives/text/__workshop__/example.tsx +0 -39
- package/src/core/primitives/text/__workshop__/index.ts +0 -24
- package/src/core/primitives/text/__workshop__/opticalAlignment.tsx +0 -48
- package/src/core/primitives/textArea/__workshop__/index.ts +0 -14
- package/src/core/primitives/textArea/__workshop__/plain.tsx +0 -50
- package/src/core/primitives/textInput/__workshop__/clearButton.tsx +0 -30
- package/src/core/primitives/textInput/__workshop__/customValidity.tsx +0 -17
- package/src/core/primitives/textInput/__workshop__/index.ts +0 -44
- package/src/core/primitives/textInput/__workshop__/plain.tsx +0 -98
- package/src/core/primitives/textInput/__workshop__/readOnly.tsx +0 -9
- package/src/core/primitives/textInput/__workshop__/states.tsx +0 -53
- package/src/core/primitives/textInput/__workshop__/tones.tsx +0 -277
- package/src/core/primitives/textInput/__workshop__/typed.tsx +0 -23
- package/src/core/primitives/tooltip/__workshop__/customPortal.tsx +0 -102
- package/src/core/primitives/tooltip/__workshop__/index.ts +0 -29
- package/src/core/primitives/tooltip/__workshop__/overflowingBoundary.tsx +0 -74
- package/src/core/primitives/tooltip/__workshop__/props.tsx +0 -107
- package/src/core/primitives/tooltip/__workshop__/resizableBoundary.tsx +0 -86
- package/src/core/theme/__workshop__/build/Root.tsx +0 -367
- package/src/core/theme/__workshop__/build/helpers.ts +0 -46
- package/src/core/theme/__workshop__/build/story.tsx +0 -465
- package/src/core/theme/__workshop__/canvas.tsx +0 -352
- package/src/core/theme/__workshop__/color.tsx +0 -62
- package/src/core/theme/__workshop__/debug/story.tsx +0 -408
- package/src/core/theme/__workshop__/index.ts +0 -39
- package/src/core/theme/__workshop__/layer.tsx +0 -78
- package/src/core/theme/__workshop__/nestedProvider.tsx +0 -15
- package/src/core/utils/boundaryElement/__workshop__/index.ts +0 -14
- package/src/core/utils/boundaryElement/__workshop__/plain.tsx +0 -19
- package/src/core/utils/elementQuery/__workshop__/customMedia.tsx +0 -30
- package/src/core/utils/elementQuery/__workshop__/index.ts +0 -14
- package/src/core/utils/layer/__workshop__/_debug.tsx +0 -17
- package/src/core/utils/layer/__workshop__/index.ts +0 -24
- package/src/core/utils/layer/__workshop__/multipleRoots.tsx +0 -49
- package/src/core/utils/layer/__workshop__/nested.tsx +0 -98
- package/src/core/utils/layer/__workshop__/responsiveZOffset.tsx +0 -13
- package/src/core/utils/portal/__workshop__/index.ts +0 -14
- package/src/core/utils/portal/__workshop__/named.tsx +0 -63
- package/src/core/utils/virtualList/__workshop__/changingProps.tsx +0 -36
- package/src/core/utils/virtualList/__workshop__/elementScroll.tsx +0 -24
- package/src/core/utils/virtualList/__workshop__/index.ts +0 -29
- package/src/core/utils/virtualList/__workshop__/infiniteList.tsx +0 -48
- package/src/core/utils/virtualList/__workshop__/windowScrolll.tsx +0 -22
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import {defineScope} from '@sanity/ui-workshop'
|
|
2
|
-
import {lazy} from 'react'
|
|
3
|
-
|
|
4
|
-
export default defineScope({
|
|
5
|
-
name: 'primitives/heading',
|
|
6
|
-
title: 'Heading',
|
|
7
|
-
stories: [
|
|
8
|
-
{
|
|
9
|
-
name: 'plain',
|
|
10
|
-
title: 'Plain',
|
|
11
|
-
component: lazy(() => import('./plain')),
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
name: 'optical-alignment',
|
|
15
|
-
title: 'Optical alignment',
|
|
16
|
-
component: lazy(() => import('./opticalAlignment')),
|
|
17
|
-
},
|
|
18
|
-
],
|
|
19
|
-
})
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import {AddCircleIcon} from '@sanity/icons'
|
|
2
|
-
import {Box, Card, Flex, Heading, Stack} from '@sanity/ui'
|
|
3
|
-
|
|
4
|
-
export default function OpticalAlignment() {
|
|
5
|
-
return (
|
|
6
|
-
<Box padding={[4, 5, 6]}>
|
|
7
|
-
<Stack space={1}>
|
|
8
|
-
<Flex>
|
|
9
|
-
<Card padding={0} tone="neutral">
|
|
10
|
-
<Heading size={5}>Hamburgefonstiv M</Heading>
|
|
11
|
-
</Card>
|
|
12
|
-
</Flex>
|
|
13
|
-
|
|
14
|
-
<Flex>
|
|
15
|
-
<Card padding={0} tone="neutral">
|
|
16
|
-
<Heading size={4}>Hamburgefonstiv M</Heading>
|
|
17
|
-
</Card>
|
|
18
|
-
</Flex>
|
|
19
|
-
|
|
20
|
-
<Flex>
|
|
21
|
-
<Card padding={0} tone="neutral">
|
|
22
|
-
<Heading size={3}>Hamburgefonstiv M</Heading>
|
|
23
|
-
</Card>
|
|
24
|
-
</Flex>
|
|
25
|
-
|
|
26
|
-
<Flex>
|
|
27
|
-
<Card padding={0} tone="neutral">
|
|
28
|
-
<Heading size={2}>Hamburgefonstiv M</Heading>
|
|
29
|
-
</Card>
|
|
30
|
-
</Flex>
|
|
31
|
-
|
|
32
|
-
<Flex>
|
|
33
|
-
<Card padding={0} tone="neutral">
|
|
34
|
-
<Heading size={1}>Hamburgefonstiv M</Heading>
|
|
35
|
-
</Card>
|
|
36
|
-
</Flex>
|
|
37
|
-
|
|
38
|
-
<Flex>
|
|
39
|
-
<Card padding={0} tone="neutral">
|
|
40
|
-
<Heading size={0}>Hamburgefonstiv M</Heading>
|
|
41
|
-
</Card>
|
|
42
|
-
</Flex>
|
|
43
|
-
|
|
44
|
-
<Flex>
|
|
45
|
-
<Card padding={2} tone="neutral">
|
|
46
|
-
<Heading accent>
|
|
47
|
-
<AddCircleIcon />
|
|
48
|
-
</Heading>
|
|
49
|
-
</Card>
|
|
50
|
-
</Flex>
|
|
51
|
-
</Stack>
|
|
52
|
-
</Box>
|
|
53
|
-
)
|
|
54
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import {Flex, Heading} from '@sanity/ui'
|
|
2
|
-
import {useBoolean, useSelect, useText} from '@sanity/ui-workshop'
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
WORKSHOP_FONT_WEIGHT_OPTIONS,
|
|
6
|
-
WORKSHOP_HEADING_FONT_SIZE_OPTIONS,
|
|
7
|
-
WORKSHOP_TEXT_OVERFLOW_OPTIONS,
|
|
8
|
-
} from '../../../__workshop__/constants'
|
|
9
|
-
|
|
10
|
-
export default function PlainStory() {
|
|
11
|
-
const accent = useBoolean('Accent', false, 'Props')
|
|
12
|
-
const muted = useBoolean('Muted', false, 'Props')
|
|
13
|
-
const size = useSelect('Size', WORKSHOP_HEADING_FONT_SIZE_OPTIONS, 2, 'Props')
|
|
14
|
-
const textChild = useText('Text', 'Hello, world', 'Props')
|
|
15
|
-
const textOverflow =
|
|
16
|
-
useSelect('Text overflow', WORKSHOP_TEXT_OVERFLOW_OPTIONS, '', 'Props') || undefined
|
|
17
|
-
const weight = useSelect('Weight', WORKSHOP_FONT_WEIGHT_OPTIONS, '', 'Props') || undefined
|
|
18
|
-
|
|
19
|
-
return (
|
|
20
|
-
<Flex align="center" height="fill" justify="center" padding={[4, 5, 6]} sizing="border">
|
|
21
|
-
<Heading
|
|
22
|
-
accent={accent}
|
|
23
|
-
muted={muted}
|
|
24
|
-
size={size}
|
|
25
|
-
textOverflow={textOverflow}
|
|
26
|
-
weight={weight}
|
|
27
|
-
>
|
|
28
|
-
{textChild}
|
|
29
|
-
</Heading>
|
|
30
|
-
</Flex>
|
|
31
|
-
)
|
|
32
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import {Card, Flex, Inline, Text} from '@sanity/ui'
|
|
2
|
-
import {useAction, useSelect} from '@sanity/ui-workshop'
|
|
3
|
-
|
|
4
|
-
import {WORKSHOP_SPACE_OPTIONS} from '../../../__workshop__/constants'
|
|
5
|
-
|
|
6
|
-
export default function PlainStory() {
|
|
7
|
-
return (
|
|
8
|
-
<Flex align="center" height="fill" justify="center" padding={[4, 5, 6]} sizing="border">
|
|
9
|
-
<Inline
|
|
10
|
-
onClick={useAction('onClick')}
|
|
11
|
-
space={useSelect('Space', WORKSHOP_SPACE_OPTIONS, 0, 'Props')}
|
|
12
|
-
>
|
|
13
|
-
<Card padding={1} shadow={1}>
|
|
14
|
-
<Text size={1}>Inline item</Text>
|
|
15
|
-
</Card>
|
|
16
|
-
|
|
17
|
-
<Card padding={2} shadow={1}>
|
|
18
|
-
<Text size={1}>Inline item</Text>
|
|
19
|
-
</Card>
|
|
20
|
-
|
|
21
|
-
<Card padding={3} shadow={1}>
|
|
22
|
-
<Text size={1}>Inline item</Text>
|
|
23
|
-
</Card>
|
|
24
|
-
</Inline>
|
|
25
|
-
</Flex>
|
|
26
|
-
)
|
|
27
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import {defineScope} from '@sanity/ui-workshop'
|
|
2
|
-
import {lazy} from 'react'
|
|
3
|
-
|
|
4
|
-
export default defineScope({
|
|
5
|
-
name: 'primitives/label',
|
|
6
|
-
title: 'Label',
|
|
7
|
-
stories: [
|
|
8
|
-
{
|
|
9
|
-
name: 'plain',
|
|
10
|
-
title: 'Plain',
|
|
11
|
-
component: lazy(() => import('./plain')),
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
name: 'optical-alignment',
|
|
15
|
-
title: 'Optical alignment',
|
|
16
|
-
component: lazy(() => import('./opticalAlignment')),
|
|
17
|
-
},
|
|
18
|
-
],
|
|
19
|
-
})
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import {AddCircleIcon} from '@sanity/icons'
|
|
2
|
-
import {Box, Card, Flex, Label, Stack} from '@sanity/ui'
|
|
3
|
-
|
|
4
|
-
export default function OpticalAlignment() {
|
|
5
|
-
return (
|
|
6
|
-
<Box padding={[4, 5, 6]}>
|
|
7
|
-
<Stack space={1}>
|
|
8
|
-
<Flex>
|
|
9
|
-
<Card padding={0} tone="suggest">
|
|
10
|
-
<Label size={4}>Hamburgefonstiv M</Label>
|
|
11
|
-
</Card>
|
|
12
|
-
</Flex>
|
|
13
|
-
|
|
14
|
-
<Flex>
|
|
15
|
-
<Card padding={0} tone="suggest">
|
|
16
|
-
<Label size={3}>Hamburgefonstiv M</Label>
|
|
17
|
-
</Card>
|
|
18
|
-
</Flex>
|
|
19
|
-
|
|
20
|
-
<Flex>
|
|
21
|
-
<Card padding={0} tone="suggest">
|
|
22
|
-
<Label size={2}>Hamburgefonstiv M</Label>
|
|
23
|
-
</Card>
|
|
24
|
-
</Flex>
|
|
25
|
-
|
|
26
|
-
<Flex>
|
|
27
|
-
<Card padding={0} tone="suggest">
|
|
28
|
-
<Label size={1}>Hamburgefonstiv M</Label>
|
|
29
|
-
</Card>
|
|
30
|
-
</Flex>
|
|
31
|
-
|
|
32
|
-
<Flex>
|
|
33
|
-
<Card padding={0} tone="suggest">
|
|
34
|
-
<Label size={0}>Hamburgefonstiv M</Label>
|
|
35
|
-
</Card>
|
|
36
|
-
</Flex>
|
|
37
|
-
|
|
38
|
-
<Flex>
|
|
39
|
-
<Card padding={2} tone="suggest">
|
|
40
|
-
<Label>
|
|
41
|
-
<AddCircleIcon />
|
|
42
|
-
</Label>
|
|
43
|
-
</Card>
|
|
44
|
-
</Flex>
|
|
45
|
-
</Stack>
|
|
46
|
-
</Box>
|
|
47
|
-
)
|
|
48
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import {Flex, Label} from '@sanity/ui'
|
|
2
|
-
import {useSelect, useText} from '@sanity/ui-workshop'
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
WORKSHOP_FONT_WEIGHT_OPTIONS,
|
|
6
|
-
WORKSHOP_LABEL_FONT_SIZE_OPTIONS,
|
|
7
|
-
WORKSHOP_TEXT_OVERFLOW_OPTIONS,
|
|
8
|
-
} from '../../../__workshop__/constants'
|
|
9
|
-
|
|
10
|
-
export default function PlainStory() {
|
|
11
|
-
const size = useSelect('Size', WORKSHOP_LABEL_FONT_SIZE_OPTIONS, undefined, 'Props')
|
|
12
|
-
const textChild = useText('Text', 'Label text', 'Props')
|
|
13
|
-
const textOverflow =
|
|
14
|
-
useSelect('Text overflow', WORKSHOP_TEXT_OVERFLOW_OPTIONS, '', 'Props') || undefined
|
|
15
|
-
const weight = useSelect('Weight', WORKSHOP_FONT_WEIGHT_OPTIONS, undefined, 'Props')
|
|
16
|
-
|
|
17
|
-
return (
|
|
18
|
-
<Flex align="center" height="fill" justify="center" padding={[4, 5, 6]} sizing="border">
|
|
19
|
-
<Label size={size} textOverflow={textOverflow} weight={weight}>
|
|
20
|
-
{textChild}
|
|
21
|
-
</Label>
|
|
22
|
-
</Flex>
|
|
23
|
-
)
|
|
24
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import {EllipsisVerticalIcon} from '@sanity/icons'
|
|
2
|
-
import {Button, Card, Flex, Popover, Text, useClickOutsideEvent} from '@sanity/ui'
|
|
3
|
-
import {useBoolean, useSelect} from '@sanity/ui-workshop'
|
|
4
|
-
import {useCallback, useRef, useState} from 'react'
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
WORKSHOP_FLEX_ALIGN_OPTIONS,
|
|
8
|
-
WORKSHOP_FLEX_JUSTIFY_OPTIONS,
|
|
9
|
-
WORKSHOP_PLACEMENT_OPTIONS,
|
|
10
|
-
WORKSHOP_WIDTH_OPTIONS,
|
|
11
|
-
} from '../../../__workshop__/constants'
|
|
12
|
-
|
|
13
|
-
export default function AlignedStory() {
|
|
14
|
-
const constrainSize = useBoolean('Constrain size', false)
|
|
15
|
-
const placement = useSelect('Placement', WORKSHOP_PLACEMENT_OPTIONS, 'bottom')
|
|
16
|
-
const portal = useBoolean('Portal', true)
|
|
17
|
-
const width = useSelect('Width', WORKSHOP_WIDTH_OPTIONS, 'auto')
|
|
18
|
-
|
|
19
|
-
const flexAlign = useSelect('Align', WORKSHOP_FLEX_ALIGN_OPTIONS, 'flex-start')
|
|
20
|
-
const flexJustify = useSelect('Justify', WORKSHOP_FLEX_JUSTIFY_OPTIONS, 'flex-end')
|
|
21
|
-
|
|
22
|
-
const [open, setOpen] = useState(false)
|
|
23
|
-
const [boundaryElement, setBoundaryElement] = useState<HTMLDivElement | null>(null)
|
|
24
|
-
const buttonElementRef = useRef<HTMLButtonElement | null>(null)
|
|
25
|
-
const popoverElementRef = useRef<HTMLDivElement | null>(null)
|
|
26
|
-
|
|
27
|
-
const content = (
|
|
28
|
-
<Text size={1}>
|
|
29
|
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque at nisl at sem tempor
|
|
30
|
-
hendrerit scelerisque ut libero. Maecenas iaculis efficitur lorem, ac faucibus mi imperdiet
|
|
31
|
-
quis. Cras a consectetur erat. Fusce imperdiet, dolor et pellentesque iaculis, ex quam luctus
|
|
32
|
-
felis, non ultrices enim sem vitae quam. Duis lorem velit, lacinia at rhoncus a, tempus vel
|
|
33
|
-
neque. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae;
|
|
34
|
-
Sed id mauris quam. Nam finibus sapien non lacinia ultricies. Integer fermentum tortor at
|
|
35
|
-
pellentesque faucibus. In venenatis commodo placerat. Curabitur commodo tortor libero, vel
|
|
36
|
-
pellentesque elit luctus sodales. Donec mattis tristique nunc ac lacinia. Vestibulum non
|
|
37
|
-
pulvinar turpis, posuere consequat arcu. Fusce ut urna blandit, finibus nisi a, molestie elit.
|
|
38
|
-
Nulla sed eleifend mi.
|
|
39
|
-
</Text>
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
const handleToggleOpen = useCallback(() => setOpen((v) => !v), [])
|
|
43
|
-
|
|
44
|
-
useClickOutsideEvent(
|
|
45
|
-
() => setOpen(false),
|
|
46
|
-
() => [buttonElementRef.current, popoverElementRef.current],
|
|
47
|
-
)
|
|
48
|
-
|
|
49
|
-
return (
|
|
50
|
-
<Card height="fill" padding={[4, 5, 6]} sizing="border" tone="transparent">
|
|
51
|
-
<Card height="fill" padding={2} ref={setBoundaryElement} shadow={1} sizing="border">
|
|
52
|
-
<Flex align={flexAlign} height="fill" justify={flexJustify}>
|
|
53
|
-
<Popover
|
|
54
|
-
boundaryElement={boundaryElement}
|
|
55
|
-
constrainSize={constrainSize}
|
|
56
|
-
content={content}
|
|
57
|
-
open={open}
|
|
58
|
-
overflow="auto"
|
|
59
|
-
padding={3}
|
|
60
|
-
portal={portal}
|
|
61
|
-
placement={placement}
|
|
62
|
-
ref={popoverElementRef}
|
|
63
|
-
width={width}
|
|
64
|
-
>
|
|
65
|
-
<Button
|
|
66
|
-
icon={EllipsisVerticalIcon}
|
|
67
|
-
mode="bleed"
|
|
68
|
-
onClick={handleToggleOpen}
|
|
69
|
-
ref={buttonElementRef}
|
|
70
|
-
selected={open}
|
|
71
|
-
/>
|
|
72
|
-
</Popover>
|
|
73
|
-
</Flex>
|
|
74
|
-
</Card>
|
|
75
|
-
</Card>
|
|
76
|
-
)
|
|
77
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import {Box, Card, Container, Flex, Popover, Text} from '@sanity/ui'
|
|
2
|
-
|
|
3
|
-
export default function MarginsStory() {
|
|
4
|
-
return (
|
|
5
|
-
<Flex align="center" height="fill" justify="center" padding={[4, 5, 6]} sizing="border">
|
|
6
|
-
<Popover
|
|
7
|
-
__unstable_margins={[-8, 8, -8, 8]}
|
|
8
|
-
arrow={false}
|
|
9
|
-
content={
|
|
10
|
-
<Box padding={2}>
|
|
11
|
-
<Text align="center" muted size={1}>
|
|
12
|
-
Popover
|
|
13
|
-
</Text>
|
|
14
|
-
</Box>
|
|
15
|
-
}
|
|
16
|
-
matchReferenceWidth
|
|
17
|
-
open
|
|
18
|
-
placement="bottom-start"
|
|
19
|
-
// radius={0}
|
|
20
|
-
>
|
|
21
|
-
<Container width={0}>
|
|
22
|
-
<Card padding={2} muted shadow={1}>
|
|
23
|
-
<Text align="center" muted size={1}>
|
|
24
|
-
Reference
|
|
25
|
-
</Text>
|
|
26
|
-
</Card>
|
|
27
|
-
</Container>
|
|
28
|
-
</Popover>
|
|
29
|
-
</Flex>
|
|
30
|
-
)
|
|
31
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import {Box, Button, Container, Flex, Popover, Stack, Text} from '@sanity/ui'
|
|
2
|
-
import {useBoolean, useSelect} from '@sanity/ui-workshop'
|
|
3
|
-
|
|
4
|
-
import {WORKSHOP_PLACEMENT_OPTIONS} from '../../../__workshop__/constants'
|
|
5
|
-
|
|
6
|
-
export default function MatchReferenceWidthStory() {
|
|
7
|
-
const arrow = useBoolean('Arrow', true, 'Props')
|
|
8
|
-
const placement = useSelect('Placement', WORKSHOP_PLACEMENT_OPTIONS, 'bottom', 'Props')
|
|
9
|
-
|
|
10
|
-
return (
|
|
11
|
-
<Flex align="center" height="fill" justify="center" padding={[4, 5, 6]} sizing="border">
|
|
12
|
-
<Popover
|
|
13
|
-
arrow={arrow}
|
|
14
|
-
content={
|
|
15
|
-
<Box padding={3}>
|
|
16
|
-
<Text size={1}>Content</Text>
|
|
17
|
-
</Box>
|
|
18
|
-
}
|
|
19
|
-
matchReferenceWidth
|
|
20
|
-
open
|
|
21
|
-
placement={placement}
|
|
22
|
-
radius={2}
|
|
23
|
-
>
|
|
24
|
-
<Container width={0}>
|
|
25
|
-
<Stack>
|
|
26
|
-
<Button fontSize={1} mode="ghost" selected text="Button" />
|
|
27
|
-
</Stack>
|
|
28
|
-
</Container>
|
|
29
|
-
</Popover>
|
|
30
|
-
</Flex>
|
|
31
|
-
)
|
|
32
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import {Button, Card, Popover, Text} from '@sanity/ui'
|
|
2
|
-
|
|
3
|
-
export default function OpenOnMountStory() {
|
|
4
|
-
return (
|
|
5
|
-
<Card height="fill" padding={3} sizing="border">
|
|
6
|
-
<Popover content={<Text size={1}>popover content</Text>} open padding={3}>
|
|
7
|
-
<Button text="This button is the popover reference" />
|
|
8
|
-
</Popover>
|
|
9
|
-
</Card>
|
|
10
|
-
)
|
|
11
|
-
}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import {Button, Card, Popover, PortalProvider, Text} from '@sanity/ui'
|
|
2
|
-
import {useBoolean, useSelect} from '@sanity/ui-workshop'
|
|
3
|
-
import {useState} from 'react'
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
WORKSHOP_CONTAINER_WIDTH_OPTIONS,
|
|
7
|
-
WORKSHOP_PLACEMENT_OPTIONS,
|
|
8
|
-
WORKSHOP_RADIUS_OPTIONS,
|
|
9
|
-
WORKSHOP_SPACE_OPTIONS,
|
|
10
|
-
} from '../../../__workshop__/constants'
|
|
11
|
-
|
|
12
|
-
export default function PlainStory() {
|
|
13
|
-
const arrow = useBoolean('Arrow', true)
|
|
14
|
-
const boundaryElementFlag = useBoolean('Boundary element', true)
|
|
15
|
-
const constrainSize = useBoolean('Constrain size', true)
|
|
16
|
-
const matchReferenceWidth = useBoolean('Match reference width', false)
|
|
17
|
-
const open = useBoolean('Open', true)
|
|
18
|
-
const padding = useSelect('Padding', WORKSHOP_SPACE_OPTIONS, 3)
|
|
19
|
-
const placement = useSelect('Placement', WORKSHOP_PLACEMENT_OPTIONS, 'bottom')
|
|
20
|
-
const portal = useBoolean('Portal', true)
|
|
21
|
-
const preventOverflow = useBoolean('Prevent overflow', true)
|
|
22
|
-
const radius = useSelect('Radius', WORKSHOP_RADIUS_OPTIONS, 2)
|
|
23
|
-
const width = useSelect('Width', WORKSHOP_CONTAINER_WIDTH_OPTIONS, 'auto')
|
|
24
|
-
const [portalElement, setPortalElement] = useState<HTMLDivElement | null>(null)
|
|
25
|
-
const [boundaryElement, setBoundaryElement] = useState<HTMLDivElement | null>(null)
|
|
26
|
-
|
|
27
|
-
return (
|
|
28
|
-
<Card height="fill" padding={3} sizing="border">
|
|
29
|
-
<PortalProvider element={portalElement}>
|
|
30
|
-
<Text align="center" muted size={1}>
|
|
31
|
-
Scroll this box to reveal the popover
|
|
32
|
-
</Text>
|
|
33
|
-
<div
|
|
34
|
-
ref={setBoundaryElement}
|
|
35
|
-
style={{
|
|
36
|
-
height: 'calc(100vh - 120px)',
|
|
37
|
-
position: 'absolute',
|
|
38
|
-
top: 0,
|
|
39
|
-
left: 0,
|
|
40
|
-
margin: 60,
|
|
41
|
-
overflow: 'auto',
|
|
42
|
-
outline: '1px solid red',
|
|
43
|
-
width: 'calc(100vw - 120px)',
|
|
44
|
-
}}
|
|
45
|
-
>
|
|
46
|
-
<div style={{padding: '150vh 0', textAlign: 'center'}}>
|
|
47
|
-
<Popover
|
|
48
|
-
__unstable_margins={[1, 1, 1, 1]}
|
|
49
|
-
arrow={arrow}
|
|
50
|
-
boundaryElement={boundaryElementFlag ? boundaryElement : undefined}
|
|
51
|
-
constrainSize={constrainSize}
|
|
52
|
-
content={<Text size={1}>popover content</Text>}
|
|
53
|
-
fallbackPlacements={['top', 'bottom']}
|
|
54
|
-
matchReferenceWidth={matchReferenceWidth}
|
|
55
|
-
open={open}
|
|
56
|
-
padding={padding}
|
|
57
|
-
placement={placement}
|
|
58
|
-
portal={portal}
|
|
59
|
-
preventOverflow={preventOverflow}
|
|
60
|
-
radius={radius}
|
|
61
|
-
width={width}
|
|
62
|
-
>
|
|
63
|
-
<Button text="This button is the popover reference" />
|
|
64
|
-
</Popover>
|
|
65
|
-
</div>
|
|
66
|
-
</div>
|
|
67
|
-
<div ref={setPortalElement} />
|
|
68
|
-
</PortalProvider>
|
|
69
|
-
</Card>
|
|
70
|
-
)
|
|
71
|
-
}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import {Button, Flex, LayerProvider, Placement, Popover, useLayer} from '@sanity/ui'
|
|
2
|
-
import {ThemeColorToneKey} from '@sanity/ui/theme'
|
|
3
|
-
import {useCallback, useEffect, useMemo, useRef, useState} from 'react'
|
|
4
|
-
|
|
5
|
-
export default function RecursiveStory() {
|
|
6
|
-
return (
|
|
7
|
-
<Flex align="center" height="fill" justify="center" padding={[4, 5, 6]} sizing="border">
|
|
8
|
-
<LayerProvider>
|
|
9
|
-
<RecursiveExample />
|
|
10
|
-
</LayerProvider>
|
|
11
|
-
</Flex>
|
|
12
|
-
)
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
const placements: Placement[] = ['top', 'right', 'bottom', 'left']
|
|
16
|
-
const tones: ThemeColorToneKey[] = ['primary', 'positive', 'caution', 'critical']
|
|
17
|
-
|
|
18
|
-
function RecursiveExample({onClose}: {onClose?: () => void}) {
|
|
19
|
-
const [open, setOpen] = useState(false)
|
|
20
|
-
const buttonRef = useRef<HTMLButtonElement | null>(null)
|
|
21
|
-
const {isTopLayer} = useLayer()
|
|
22
|
-
const [seed] = useState(() => Math.floor(Math.random() * 4))
|
|
23
|
-
const fallbackPlacements = useMemo(() => {
|
|
24
|
-
const before = placements.slice(seed)
|
|
25
|
-
const after = placements.slice(0, seed)
|
|
26
|
-
|
|
27
|
-
return before.concat(after)
|
|
28
|
-
}, [seed])
|
|
29
|
-
|
|
30
|
-
useEffect(() => {
|
|
31
|
-
if (open === false) buttonRef.current?.focus()
|
|
32
|
-
}, [open])
|
|
33
|
-
|
|
34
|
-
useEffect(() => {
|
|
35
|
-
setTimeout(() => {
|
|
36
|
-
buttonRef.current?.focus()
|
|
37
|
-
}, 0)
|
|
38
|
-
}, [])
|
|
39
|
-
|
|
40
|
-
const handleOpen = useCallback(() => setOpen(true), [])
|
|
41
|
-
const handleClose = useCallback(() => setOpen(false), [])
|
|
42
|
-
|
|
43
|
-
const handleKeyDown = useCallback(
|
|
44
|
-
(event: React.KeyboardEvent<HTMLButtonElement>) => {
|
|
45
|
-
if (!isTopLayer) return
|
|
46
|
-
if (event.key === 'Escape' && onClose) onClose()
|
|
47
|
-
},
|
|
48
|
-
[isTopLayer, onClose],
|
|
49
|
-
)
|
|
50
|
-
|
|
51
|
-
return (
|
|
52
|
-
<Popover
|
|
53
|
-
fallbackPlacements={fallbackPlacements}
|
|
54
|
-
content={<RecursiveExample onClose={handleClose} />}
|
|
55
|
-
open={open}
|
|
56
|
-
padding={1}
|
|
57
|
-
placement={fallbackPlacements[3]}
|
|
58
|
-
portal
|
|
59
|
-
tone={tones[seed]}
|
|
60
|
-
>
|
|
61
|
-
<Button
|
|
62
|
-
mode="bleed"
|
|
63
|
-
onKeyDown={handleKeyDown}
|
|
64
|
-
onClick={handleOpen}
|
|
65
|
-
radius={3}
|
|
66
|
-
ref={buttonRef}
|
|
67
|
-
text="Open"
|
|
68
|
-
/>
|
|
69
|
-
</Popover>
|
|
70
|
-
)
|
|
71
|
-
}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import {useSelect} from '@sanity/ui-workshop'
|
|
2
|
-
import {useCallback, useEffect, useRef, useState} from 'react'
|
|
3
|
-
|
|
4
|
-
import {BoundaryElementProvider} from '../../../utils'
|
|
5
|
-
import {Box} from '../../box'
|
|
6
|
-
import {Card} from '../../card'
|
|
7
|
-
import {Flex} from '../../flex'
|
|
8
|
-
import {Stack} from '../../stack'
|
|
9
|
-
import {Text} from '../../text'
|
|
10
|
-
import {Popover, PopoverProps} from '../popover'
|
|
11
|
-
import {PopoverUpdateCallback} from '../types'
|
|
12
|
-
|
|
13
|
-
const SIDE_PANEL_WIDTH = {
|
|
14
|
-
sm: 300,
|
|
15
|
-
md: 400,
|
|
16
|
-
lg: 500,
|
|
17
|
-
xl: 600,
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export default function SidePanelStory() {
|
|
21
|
-
const sidePanelWidth = useSelect('Side panel width', SIDE_PANEL_WIDTH, SIDE_PANEL_WIDTH.md)
|
|
22
|
-
const [sidePanel, setSidePanel] = useState<HTMLDivElement | null>(null)
|
|
23
|
-
const updateRef = useRef<PopoverUpdateCallback>(undefined)
|
|
24
|
-
|
|
25
|
-
useEffect(() => updateRef.current?.(), [sidePanelWidth])
|
|
26
|
-
|
|
27
|
-
return (
|
|
28
|
-
<Flex height="fill">
|
|
29
|
-
<Card flex={1}>
|
|
30
|
-
<Box padding={4}>
|
|
31
|
-
<Text>
|
|
32
|
-
This story shows that popovers respect their boundary when used in a side panel.
|
|
33
|
-
</Text>
|
|
34
|
-
</Box>
|
|
35
|
-
</Card>
|
|
36
|
-
<BoundaryElementProvider element={sidePanel}>
|
|
37
|
-
<Card borderLeft flex="none" ref={setSidePanel} style={{width: sidePanelWidth}}>
|
|
38
|
-
<Stack padding={4} space={5}>
|
|
39
|
-
<Text muted size={1}>
|
|
40
|
-
Click the <code>reference</code> text below to toggle the popover.
|
|
41
|
-
</Text>
|
|
42
|
-
|
|
43
|
-
<Card border padding={3}>
|
|
44
|
-
<Text size={1}>
|
|
45
|
-
Some editor <InlineObject updateRef={updateRef} />
|
|
46
|
-
</Text>
|
|
47
|
-
</Card>
|
|
48
|
-
</Stack>
|
|
49
|
-
</Card>
|
|
50
|
-
</BoundaryElementProvider>
|
|
51
|
-
</Flex>
|
|
52
|
-
)
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
function InlineObject(props: {updateRef?: PopoverProps['updateRef']}) {
|
|
56
|
-
const {updateRef} = props
|
|
57
|
-
const [open, setOpen] = useState(false)
|
|
58
|
-
|
|
59
|
-
const handleClick = useCallback(() => {
|
|
60
|
-
setOpen((prev) => !prev)
|
|
61
|
-
}, [])
|
|
62
|
-
|
|
63
|
-
return (
|
|
64
|
-
<Popover
|
|
65
|
-
content={
|
|
66
|
-
<Box padding={3}>
|
|
67
|
-
<Text size={1}>
|
|
68
|
-
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum
|
|
69
|
-
has been the industry's standard dummy text ever since the 1500s, when an unknown
|
|
70
|
-
printer took a galley of type and scrambled it to make a type specimen book. It has
|
|
71
|
-
survived not only five centuries, but also the leap into electronic typesetting,
|
|
72
|
-
remaining essentially unchanged. It was popularised in the 1960s with the release of
|
|
73
|
-
Letraset sheets containing Lorem Ipsum passages, and more recently with desktop
|
|
74
|
-
publishing software like Aldus PageMaker including versions of Lorem Ipsum.
|
|
75
|
-
</Text>
|
|
76
|
-
</Box>
|
|
77
|
-
}
|
|
78
|
-
constrainSize
|
|
79
|
-
open={open}
|
|
80
|
-
overflow="auto"
|
|
81
|
-
portal
|
|
82
|
-
width={0}
|
|
83
|
-
updateRef={updateRef}
|
|
84
|
-
>
|
|
85
|
-
{/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions */}
|
|
86
|
-
<code onClick={handleClick}>reference</code>
|
|
87
|
-
</Popover>
|
|
88
|
-
)
|
|
89
|
-
}
|