@sanity/ui 4.0.0-static.4 → 4.0.0-static.40
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/dist/_chunks-es/{refractor.js → Refractor.js} +1 -1
- package/dist/_chunks-es/{refractor.js.map → Refractor.js.map} +1 -1
- package/dist/css/index.css +2 -1
- package/dist/css/index.css.map +1 -0
- package/dist/css/index.d.ts +51 -7
- package/dist/css/index.js +17979 -55
- package/dist/css/index.js.map +1 -1
- package/dist/index.d.ts +26 -38
- package/dist/index.js +1744 -1127
- package/dist/index.js.map +1 -1
- package/exports/css/index.css +1 -0
- package/package.json +39 -51
- package/src/core/Root.tsx +1 -1
- package/src/core/RootProvider.tsx +5 -5
- package/src/core/__workshop__/index.ts +1 -1
- package/src/core/components/autocomplete/{autocomplete.tsx → Autocomplete.tsx} +90 -58
- package/src/core/components/autocomplete/__workshop__/{custom.tsx → Custom.tsx} +14 -1
- package/src/core/components/autocomplete/__workshop__/{example.tsx → Example.tsx} +12 -1
- package/src/core/components/autocomplete/__workshop__/index.ts +6 -6
- package/src/core/components/autocomplete/types.ts +1 -1
- package/src/core/components/breadcrumbs/{breadcrumbs.tsx → Breadcrumbs.tsx} +80 -47
- package/src/core/components/breadcrumbs/__workshop__/index.ts +1 -1
- package/src/core/components/dialog/{dialog.tsx → Dialog.tsx} +20 -11
- package/src/core/components/dialog/{dialogCard.tsx → DialogCard.tsx} +9 -9
- package/src/core/components/dialog/{dialogContext.ts → DialogContext.ts} +1 -1
- package/src/core/components/dialog/{dialogProvider.tsx → DialogProvider.tsx} +2 -2
- package/src/core/components/dialog/__workshop__/{panes.tsx → Panes.tsx} +9 -21
- package/src/core/components/dialog/__workshop__/{position.tsx → Position.tsx} +9 -1
- package/src/core/components/dialog/__workshop__/{props.tsx → Props.tsx} +2 -0
- package/src/core/components/dialog/__workshop__/index.ts +10 -10
- package/src/core/components/dialog/__workshop__/styles.css.ts +18 -0
- package/src/core/components/dialog/useDialog.ts +3 -3
- package/src/core/components/hotkeys/{hotkeys.tsx → Hotkeys.tsx} +2 -2
- package/src/core/components/hotkeys/__workshop__/index.ts +1 -1
- package/src/core/components/menu/{menu.test.tsx → Menu.test.tsx} +9 -13
- package/src/core/components/menu/{menu.tsx → Menu.tsx} +19 -24
- package/src/core/components/menu/{menuButton.tsx → MenuButton.tsx} +14 -9
- package/src/core/components/menu/{menuContext.ts → MenuContext.ts} +3 -4
- package/src/core/components/menu/{menuGroup.tsx → MenuGroup.tsx} +16 -11
- package/src/core/components/menu/{menuItem.tsx → MenuItem.tsx} +7 -9
- package/src/core/components/menu/__workshop__/DataProps.tsx +27 -0
- package/src/core/components/menu/__workshop__/{menuButton.tsx → MenuButton.tsx} +6 -1
- package/src/core/components/menu/__workshop__/{tones.tsx → Tones.tsx} +7 -1
- package/src/core/components/menu/__workshop__/index.ts +22 -17
- package/src/core/components/menu/useMenu.ts +5 -5
- package/src/core/components/menu/useMenuController.ts +5 -5
- package/src/core/components/tab/{tab.tsx → Tab.tsx} +1 -1
- package/src/core/components/tab/{tabList.tsx → TabList.tsx} +2 -2
- package/src/core/components/tab/{tabPanel.tsx → TabPanel.tsx} +1 -1
- package/src/core/components/tab/__workshop__/index.ts +1 -1
- package/src/core/components/toast/{toast.test.tsx → Toast.test.tsx} +7 -7
- package/src/core/components/toast/{toast.tsx → Toast.tsx} +6 -6
- package/src/core/components/toast/{toastContext.ts → ToastContext.ts} +1 -1
- package/src/core/components/toast/{toastLayer.tsx → ToastLayer.tsx} +1 -1
- package/src/core/components/toast/{toastProvider.tsx → ToastProvider.tsx} +7 -7
- package/src/core/components/toast/__workshop__/{toast.tsx → Toast.tsx} +2 -0
- package/src/core/components/toast/__workshop__/index.ts +2 -2
- package/src/core/components/toast/useToast.ts +3 -3
- package/src/core/components/tree/{tree.tsx → Tree.tsx} +4 -4
- package/src/core/components/tree/{treeContext.ts → TreeContext.ts} +1 -1
- package/src/core/components/tree/{treeGroup.tsx → TreeGroup.tsx} +1 -1
- package/src/core/components/tree/{treeItem.tsx → TreeItem.tsx} +28 -25
- package/src/core/components/tree/__workshop__/index.ts +4 -4
- package/src/core/components/tree/useTree.ts +3 -3
- package/src/core/components/virtualList/{virtualList.tsx → VirtualList.tsx} +87 -45
- package/src/core/components/virtualList/__workshop__/index.ts +4 -4
- package/src/core/helpers/props.ts +0 -9
- package/src/core/hooks/useGlobalKeyDown.ts +11 -4
- package/src/core/hooks/useMediaIndex/__workshop__/index.ts +1 -1
- package/src/core/hooks/useResponsiveProp.ts +4 -17
- package/src/core/index.ts +68 -66
- package/src/core/lib/createGlobalScopedContext.ts +5 -3
- package/src/core/primitives/avatar/{avatar.tsx → Avatar.tsx} +7 -6
- package/src/core/primitives/avatar/{avatarCounter.tsx → AvatarCounter.tsx} +2 -2
- package/src/core/primitives/avatar/{avatarStack.tsx → AvatarStack.tsx} +3 -3
- package/src/core/primitives/avatar/__workshop__/{asButton.tsx → AsButton.tsx} +8 -1
- package/src/core/primitives/avatar/__workshop__/PropsStory.tsx +22 -0
- package/src/core/primitives/avatar/__workshop__/{stack.tsx → Stack.tsx} +5 -1
- package/src/core/primitives/avatar/__workshop__/index.ts +9 -4
- package/src/core/primitives/badge/{badge.test.tsx → Badge.test.tsx} +1 -1
- package/src/core/primitives/badge/{badge.tsx → Badge.tsx} +2 -2
- package/src/core/primitives/badge/__workshop__/{props.tsx → Props.tsx} +12 -1
- package/src/core/primitives/badge/__workshop__/index.ts +2 -2
- package/src/core/primitives/box/__workshop__/{props.tsx → Props.tsx} +6 -1
- package/src/core/primitives/box/__workshop__/index.ts +2 -2
- package/src/core/primitives/button/{button.test.tsx → Button.test.tsx} +1 -1
- package/src/core/primitives/button/{button.tsx → Button.tsx} +12 -11
- package/src/core/primitives/button/__workshop__/DataProps.tsx +22 -0
- package/src/core/primitives/button/__workshop__/{props.tsx → Props.tsx} +22 -0
- package/src/core/primitives/button/__workshop__/SanityUploadButton.tsx +21 -0
- package/src/core/primitives/button/__workshop__/{stacked.tsx → Stacked.tsx} +16 -0
- package/src/core/primitives/button/__workshop__/Styled1.tsx +11 -0
- package/src/core/primitives/button/__workshop__/index.ts +15 -15
- package/src/core/primitives/button/__workshop__/styles.css.ts +30 -0
- package/src/core/primitives/card/{card.tsx → Card.tsx} +10 -10
- package/src/core/primitives/card/{cardContext.ts → CardContext.ts} +1 -1
- package/src/core/primitives/card/{cardProvider.tsx → CardProvider.tsx} +3 -12
- package/src/core/primitives/card/__workshop__/DataProps.tsx +30 -0
- package/src/core/primitives/card/__workshop__/{props.tsx → Props.tsx} +10 -0
- package/src/core/primitives/card/__workshop__/{selected.tsx → Selected.tsx} +1 -1
- package/src/core/primitives/card/__workshop__/{styled.tsx → Styled.tsx} +2 -5
- package/src/core/primitives/card/__workshop__/index.ts +10 -9
- package/src/core/primitives/card/useCard.ts +11 -6
- package/src/core/primitives/checkbox/__workshop__/index.ts +4 -4
- package/src/core/primitives/code/{code.tsx → Code.tsx} +26 -2
- package/src/core/primitives/code/__workshop__/{props.tsx → Props.tsx} +6 -1
- package/src/core/primitives/code/__workshop__/index.ts +2 -2
- package/src/core/primitives/container/{container.tsx → Container.tsx} +1 -1
- package/src/core/primitives/container/__workshop__/{example.tsx → Example.tsx} +6 -1
- package/src/core/primitives/container/__workshop__/index.ts +1 -1
- package/src/core/primitives/flex/{flex.tsx → Flex.tsx} +1 -1
- package/src/core/primitives/flex/__workshop__/{example.tsx → Example.tsx} +14 -16
- package/src/core/primitives/flex/__workshop__/index.ts +2 -2
- package/src/core/primitives/flex/__workshop__/styles.css.ts +12 -0
- package/src/core/primitives/grid/{grid.tsx → Grid.tsx} +1 -1
- package/src/core/primitives/grid/__workshop__/index.ts +1 -1
- package/src/core/primitives/heading/{heading.tsx → Heading.tsx} +16 -0
- package/src/core/primitives/heading/__workshop__/{plain.tsx → Plain.tsx} +12 -1
- package/src/core/primitives/heading/__workshop__/index.ts +2 -2
- package/src/core/primitives/inline/{inline.tsx → Inline.tsx} +2 -1
- package/src/core/primitives/inline/__workshop__/{plain.tsx → Plain.tsx} +5 -1
- package/src/core/primitives/inline/__workshop__/index.ts +1 -1
- package/src/core/primitives/kbd/{kbd.tsx → Kbd.tsx} +2 -2
- package/src/core/primitives/kbd/__workshop__/index.ts +1 -1
- package/src/core/primitives/label/{label.tsx → Label.tsx} +16 -0
- package/src/core/primitives/label/__workshop__/{plain.tsx → Plain.tsx} +15 -1
- package/src/core/primitives/label/__workshop__/index.ts +2 -2
- package/src/core/primitives/layer/{layer.test.tsx → Layer.test.tsx} +7 -7
- package/src/core/primitives/layer/{layer.tsx → Layer.tsx} +3 -3
- package/src/core/primitives/layer/{layerCard.tsx → LayerCard.tsx} +2 -2
- package/src/core/primitives/layer/{layerContext.ts → LayerContext.ts} +1 -1
- package/src/core/primitives/layer/{layerProvider.tsx → LayerProvider.tsx} +6 -6
- package/src/core/primitives/layer/__workshop__/index.ts +3 -3
- package/src/core/primitives/layer/useLayer.ts +3 -3
- package/src/core/primitives/popover/{popover.tsx → Popover.tsx} +170 -150
- package/src/core/primitives/popover/{popoverLayer.tsx → PopoverLayer.tsx} +3 -3
- package/src/core/primitives/popover/__workshop__/AlignedStory.tsx +13 -1
- package/src/core/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +2 -0
- package/src/core/primitives/popover/__workshop__/PlainStory.tsx +8 -0
- package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +7 -1
- package/src/core/primitives/popover/__workshop__/TestStory.tsx +6 -0
- package/src/core/primitives/popover/floating-ui/size.ts +17 -16
- package/src/core/primitives/radio/{radio.tsx → Radio.tsx} +2 -2
- package/src/core/primitives/radio/__workshop__/index.ts +2 -2
- package/src/core/primitives/select/{select.tsx → Select.tsx} +7 -5
- package/src/core/primitives/select/__workshop__/{plain.tsx → Plain.tsx} +4 -0
- package/src/core/primitives/select/__workshop__/index.ts +2 -2
- package/src/core/primitives/selectable/{selectable.tsx → Selectable.tsx} +2 -2
- package/src/core/primitives/selectable/__workshop__/DataProps.tsx +27 -0
- package/src/core/primitives/selectable/__workshop__/index.ts +14 -0
- package/src/core/primitives/skeleton/{codeSkeleton.tsx → CodeSkeleton.tsx} +1 -1
- package/src/core/primitives/skeleton/{headingSkeleton.tsx → HeadingSkeleton.tsx} +1 -1
- package/src/core/primitives/skeleton/{labelSkeleton.tsx → LabelSkeleton.tsx} +1 -1
- package/src/core/primitives/skeleton/{skeleton.tsx → Skeleton.tsx} +2 -2
- package/src/core/primitives/skeleton/{textSkeleton.tsx → TextSkeleton.tsx} +1 -1
- package/src/core/primitives/skeleton/__workshop__/{delay.tsx → Delay.tsx} +9 -1
- package/src/core/primitives/skeleton/__workshop__/{skeleton.tsx → Skeleton.tsx} +9 -1
- package/src/core/primitives/skeleton/__workshop__/index.ts +2 -2
- package/src/core/primitives/spinner/{spinner.tsx → Spinner.tsx} +2 -2
- package/src/core/primitives/spinner/__workshop__/Props.tsx +6 -1
- package/src/core/primitives/stack/{stack.tsx → Stack.tsx} +1 -1
- package/src/core/primitives/stack/__workshop__/{plain.tsx → Plain.tsx} +4 -1
- package/src/core/primitives/stack/__workshop__/index.ts +1 -1
- package/src/core/primitives/switch/{switch.tsx → Switch.tsx} +2 -10
- package/src/core/primitives/switch/__workshop__/index.ts +2 -2
- package/src/core/primitives/text/{text.tsx → Text.tsx} +14 -0
- package/src/core/primitives/text/__workshop__/{colored.tsx → Colored.tsx} +10 -8
- package/src/core/primitives/text/__workshop__/{example.tsx → Example.tsx} +15 -1
- package/src/core/primitives/text/__workshop__/index.ts +3 -3
- package/src/core/primitives/textArea/{textArea.tsx → TextArea.tsx} +7 -1
- package/src/core/primitives/textArea/__workshop__/{plain.tsx → Plain.tsx} +8 -0
- package/src/core/primitives/textArea/__workshop__/index.ts +1 -1
- package/src/core/primitives/textInput/{textInput.tsx → TextInput.tsx} +93 -72
- package/src/core/primitives/textInput/__workshop__/{plain.tsx → Plain.tsx} +34 -4
- package/src/core/primitives/textInput/__workshop__/{typed.tsx → Typed.tsx} +7 -1
- package/src/core/primitives/textInput/__workshop__/index.ts +7 -7
- package/src/core/primitives/tooltip/{tooltip.test.tsx → Tooltip.test.tsx} +4 -4
- package/src/core/primitives/tooltip/{tooltip.tsx → Tooltip.tsx} +102 -63
- package/src/core/primitives/tooltip/{tooltipLayer.tsx → TooltipLayer.tsx} +2 -2
- package/src/core/primitives/tooltip/__workshop__/{customPortal.tsx → CustomPortal.tsx} +2 -0
- package/src/core/primitives/tooltip/__workshop__/{overflowingBoundary.tsx → OverflowingBoundary.tsx} +2 -0
- package/src/core/primitives/tooltip/__workshop__/{props.tsx → Props.tsx} +12 -0
- package/src/core/primitives/tooltip/__workshop__/{resizableBoundary.tsx → ResizableBoundary.tsx} +5 -0
- package/src/core/primitives/tooltip/__workshop__/index.ts +4 -4
- package/src/core/primitives/tooltip/tooltipDelayGroup/{tooltipDelayGroupContext.tsx → TooltipDelayGroupContext.tsx} +1 -1
- package/src/core/primitives/tooltip/tooltipDelayGroup/{tooltipDelayGroupProvider.tsx → TooltipDelayGroupProvider.tsx} +2 -4
- package/src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +3 -3
- package/src/core/types.ts +6 -5
- package/src/core/utils/{errorBoundary.tsx → ErrorBoundary.tsx} +1 -1
- package/src/core/utils/boundaryElement/{boundaryElementContext.ts → BoundaryElementContext.ts} +2 -5
- package/src/core/utils/boundaryElement/BoundaryElementProvider.tsx +16 -0
- package/src/core/utils/boundaryElement/__workshop__/index.ts +1 -1
- package/src/core/utils/boundaryElement/types.ts +1 -4
- package/src/core/utils/boundaryElement/useBoundaryElement.ts +7 -19
- package/src/core/utils/elementQuery/__workshop__/CustomMedia.tsx +19 -0
- package/src/core/utils/elementQuery/__workshop__/index.ts +1 -1
- package/src/core/utils/elementQuery/__workshop__/styles.css.ts +31 -0
- package/src/core/utils/portal/{portal.test.tsx → Portal.test.tsx} +7 -7
- package/src/core/utils/portal/{portal.tsx → Portal.tsx} +7 -4
- package/src/core/utils/portal/{portalContext.ts → PortalContext.ts} +1 -1
- package/src/core/utils/portal/PortalProvider.tsx +38 -0
- package/src/core/utils/portal/__workshop__/index.ts +1 -1
- package/src/core/utils/portal/usePortal.ts +12 -5
- package/src/css/_responsiveStyle.css.ts +2 -2
- package/src/css/primitives/_input/_input.css.ts +13 -12
- package/src/css/primitives/_input/input.ts +2 -0
- package/src/css/primitives/_input/types.ts +2 -1
- package/src/css/primitives/avatar/avatar.css.ts +17 -5
- package/src/css/primitives/box/box.css.ts +19 -1
- package/src/css/primitives/button/button.css.ts +252 -183
- package/src/css/primitives/card/__workshop__/{color.tsx → Color.tsx} +9 -1
- package/src/css/primitives/card/__workshop__/index.ts +1 -1
- package/src/css/primitives/card/card.css.ts +133 -130
- package/src/css/primitives/checkbox/checkbox.css.ts +1 -0
- package/src/css/primitives/code/code.ts +4 -0
- package/src/css/primitives/code/types.ts +7 -1
- package/src/css/primitives/heading/heading.ts +4 -0
- package/src/css/primitives/heading/types.ts +7 -1
- package/src/css/primitives/label/label.ts +4 -0
- package/src/css/primitives/label/types.ts +7 -1
- package/src/css/primitives/radio/radio.css.ts +1 -1
- package/src/css/primitives/root/root.css.ts +1 -1
- package/src/css/primitives/select/select.css.ts +7 -1
- package/src/css/primitives/selectable/selectable.css.ts +79 -70
- package/src/css/primitives/switch/switch.css.ts +10 -1
- package/src/css/primitives/text/text.ts +2 -0
- package/src/css/primitives/text/types.ts +6 -1
- package/src/css/primitives/textInput/textInput.css.ts +15 -3
- package/src/css/props/width/types.ts +1 -1
- package/src/css/props/width/width.css.ts +5 -2
- package/src/css/theme/buildCSSTheme.ts +4 -0
- package/src/css/types.ts +4 -0
- package/src/css/vars.css.ts +4 -0
- package/dist/_chunks-cjs/refractor.cjs +0 -22
- package/dist/_chunks-cjs/refractor.cjs.map +0 -1
- package/dist/css/index.cjs +0 -966
- package/dist/css/index.cjs.map +0 -1
- package/dist/css/index.d.cts +0 -1370
- package/dist/index.cjs +0 -4515
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -2521
- package/dist/theme.cjs +0 -870
- package/dist/theme.cjs.map +0 -1
- package/dist/theme.d.cts +0 -499
- package/src/core/primitives/button/__workshop__/sanityUploadButton.tsx +0 -36
- package/src/core/primitives/button/__workshop__/styled1.tsx +0 -17
- package/src/core/primitives/button/__workshop__/styled2.tsx +0 -19
- package/src/core/primitives/popover/helpers.ts +0 -32
- package/src/core/primitives/tooltip/tooltipDelayGroup/index.ts +0 -4
- package/src/core/utils/boundaryElement/boundaryElement.test.tsx +0 -102
- package/src/core/utils/boundaryElement/boundaryElementProvider.tsx +0 -18
- package/src/core/utils/elementQuery/__workshop__/customMedia.tsx +0 -41
- package/src/core/utils/portal/portalProvider.tsx +0 -70
- /package/src/core/__workshop__/{boundary.tsx → Boundary.tsx} +0 -0
- /package/src/core/components/autocomplete/{autocompleteOption.tsx → AutocompleteOption.tsx} +0 -0
- /package/src/core/components/autocomplete/__workshop__/{async.tsx → Async.tsx} +0 -0
- /package/src/core/components/autocomplete/__workshop__/{constrainedHeight.tsx → ConstrainedHeight.tsx} +0 -0
- /package/src/core/components/autocomplete/__workshop__/{focusAndBlur.tsx → FocusAndBlur.tsx} +0 -0
- /package/src/core/components/autocomplete/__workshop__/{fullscreen.tsx → Fullscreen.tsx} +0 -0
- /package/src/core/components/breadcrumbs/__workshop__/{example.tsx → Example.tsx} +0 -0
- /package/src/core/components/dialog/__workshop__/{activate.tsx → Activate.tsx} +0 -0
- /package/src/core/components/dialog/__workshop__/{autoFocus.tsx → AutoFocus.tsx} +0 -0
- /package/src/core/components/dialog/__workshop__/{layering.tsx → Layering.tsx} +0 -0
- /package/src/core/components/dialog/__workshop__/{nested.tsx → Nested.tsx} +0 -0
- /package/src/core/components/dialog/__workshop__/{onScroll.tsx → OnScroll.tsx} +0 -0
- /package/src/core/components/dialog/__workshop__/{provider.tsx → Provider.tsx} +0 -0
- /package/src/core/components/dialog/__workshop__/{wrapped.tsx → Wrapped.tsx} +0 -0
- /package/src/core/components/hotkeys/__workshop__/{plain.tsx → Plain.tsx} +0 -0
- /package/src/core/components/menu/{menuDivider.tsx → MenuDivider.tsx} +0 -0
- /package/src/core/components/menu/__workshop__/{asComponent.tsx → AsComponent.tsx} +0 -0
- /package/src/core/components/menu/__workshop__/{avatarMenu.tsx → AvatarMenu.tsx} +0 -0
- /package/src/core/components/menu/__workshop__/{closableMenuButton.tsx → ClosableMenuButton.tsx} +0 -0
- /package/src/core/components/menu/__workshop__/{constrainedInBoundary.tsx → ConstrainedInBoundary.tsx} +0 -0
- /package/src/core/components/menu/__workshop__/{customMenuItem.tsx → CustomMenuItem.tsx} +0 -0
- /package/src/core/components/menu/__workshop__/{customSelectedState.tsx → CustomSelectedState.tsx} +0 -0
- /package/src/core/components/menu/__workshop__/{disableFocusOnClose.tsx → DisableFocusOnClose.tsx} +0 -0
- /package/src/core/components/menu/__workshop__/{groups.tsx → Groups.tsx} +0 -0
- /package/src/core/components/menu/__workshop__/{menuGroupRight.tsx → MenuGroupRight.tsx} +0 -0
- /package/src/core/components/menu/__workshop__/{nestedMenu.tsx → NestedMenu.tsx} +0 -0
- /package/src/core/components/menu/__workshop__/{onCloseMenuButton.tsx → OnCloseMenuButton.tsx} +0 -0
- /package/src/core/components/menu/__workshop__/{selectedItem.tsx → SelectedItem.tsx} +0 -0
- /package/src/core/components/menu/__workshop__/{shouldFocus.tsx → ShouldFocus.tsx} +0 -0
- /package/src/core/components/menu/__workshop__/{withoutArrow.tsx → WithoutArrow.tsx} +0 -0
- /package/src/core/components/tab/__workshop__/{example.tsx → Example.tsx} +0 -0
- /package/src/core/components/toast/__workshop__/{hook.tsx → Hook.tsx} +0 -0
- /package/src/core/components/tree/__workshop__/{basic.tsx → Basic.tsx} +0 -0
- /package/src/core/components/tree/__workshop__/{tabFromElement.tsx → TabFromElement.tsx} +0 -0
- /package/src/core/components/virtualList/__workshop__/{changingProps.tsx → ChangingProps.tsx} +0 -0
- /package/src/core/components/virtualList/__workshop__/{elementScroll.tsx → ElementScroll.tsx} +0 -0
- /package/src/core/components/virtualList/__workshop__/{infiniteList.tsx → InfiniteList.tsx} +0 -0
- /package/src/core/components/virtualList/__workshop__/{windowScrolll.tsx → WindowScrolll.tsx} +0 -0
- /package/src/core/hooks/useMediaIndex/__workshop__/{test.tsx → Test.tsx} +0 -0
- /package/src/core/primitives/arrow/{arrow.tsx → Arrow.tsx} +0 -0
- /package/src/core/primitives/avatar/__workshop__/{withinButton.tsx → WithinButton.tsx} +0 -0
- /package/src/core/primitives/avatar/__workshop__/{withinMenuItem.tsx → WithinMenuItem.tsx} +0 -0
- /package/src/core/primitives/badge/__workshop__/{tones.tsx → Tones.tsx} +0 -0
- /package/src/core/primitives/box/{box.tsx → Box.tsx} +0 -0
- /package/src/core/primitives/box/__workshop__/{responsive.tsx → Responsive.tsx} +0 -0
- /package/src/core/primitives/button/__workshop__/{custom.tsx → Custom.tsx} +0 -0
- /package/src/core/primitives/button/__workshop__/{customIcons.tsx → CustomIcons.tsx} +0 -0
- /package/src/core/primitives/button/__workshop__/{disabled.tsx → Disabled.tsx} +0 -0
- /package/src/core/primitives/button/__workshop__/{mixedChildren.tsx → MixedChildren.tsx} +0 -0
- /package/src/core/primitives/button/__workshop__/{textOverflow.tsx → TextOverflow.tsx} +0 -0
- /package/src/core/primitives/button/__workshop__/{uploadButton.tsx → UploadButton.tsx} +0 -0
- /package/src/core/primitives/card/__workshop__/{asButton.tsx → AsButton.tsx} +0 -0
- /package/src/core/primitives/card/__workshop__/{asComponent.tsx → AsComponent.tsx} +0 -0
- /package/src/core/primitives/card/__workshop__/{checkered.tsx → Checkered.tsx} +0 -0
- /package/src/core/primitives/card/__workshop__/{interactive.tsx → Interactive.tsx} +0 -0
- /package/src/core/primitives/card/__workshop__/{listNavigation.tsx → ListNavigation.tsx} +0 -0
- /package/src/core/primitives/card/__workshop__/{tones.tsx → Tones.tsx} +0 -0
- /package/src/core/primitives/checkbox/{checkbox.tsx → Checkbox.tsx} +0 -0
- /package/src/core/primitives/checkbox/__workshop__/{example.tsx → Example.tsx} +0 -0
- /package/src/core/primitives/checkbox/__workshop__/{props.tsx → Props.tsx} +0 -0
- /package/src/core/primitives/checkbox/__workshop__/{readOnly.tsx → ReadOnly.tsx} +0 -0
- /package/src/core/primitives/checkbox/__workshop__/{tones.tsx → Tones.tsx} +0 -0
- /package/src/core/primitives/code/{refractor.tsx → Refractor.tsx} +0 -0
- /package/src/core/primitives/code/__workshop__/{opticalAlignment.tsx → OpticalAlignment.tsx} +0 -0
- /package/src/core/primitives/flex/__workshop__/{gap.tsx → Gap.tsx} +0 -0
- /package/src/core/primitives/grid/__workshop__/{responsive.tsx → Responsive.tsx} +0 -0
- /package/src/core/primitives/heading/__workshop__/{opticalAlignment.tsx → OpticalAlignment.tsx} +0 -0
- /package/src/core/primitives/kbd/__workshop__/{plain.tsx → Plain.tsx} +0 -0
- /package/src/core/primitives/label/__workshop__/{opticalAlignment.tsx → OpticalAlignment.tsx} +0 -0
- /package/src/core/primitives/layer/__workshop__/{multipleRoots.tsx → MultipleRoots.tsx} +0 -0
- /package/src/core/primitives/layer/__workshop__/{nested.tsx → Nested.tsx} +0 -0
- /package/src/core/primitives/layer/__workshop__/{responsiveZOffset.tsx → ResponsiveZOffset.tsx} +0 -0
- /package/src/core/primitives/radio/__workshop__/{example.tsx → Example.tsx} +0 -0
- /package/src/core/primitives/radio/__workshop__/{plain.tsx → Plain.tsx} +0 -0
- /package/src/core/primitives/select/__workshop__/{readOnly.tsx → ReadOnly.tsx} +0 -0
- /package/src/core/primitives/spinner/{animatedSpinnerIcon.tsx → AnimatedSpinnerIcon.tsx} +0 -0
- /package/src/core/primitives/srOnly/{srOnly.tsx → SrOnly.tsx} +0 -0
- /package/src/core/primitives/switch/__workshop__/{example.tsx → Example.tsx} +0 -0
- /package/src/core/primitives/switch/__workshop__/{props.tsx → Props.tsx} +0 -0
- /package/src/core/primitives/text/__workshop__/{opticalAlignment.tsx → OpticalAlignment.tsx} +0 -0
- /package/src/core/primitives/textInput/__workshop__/{clearButton.tsx → ClearButton.tsx} +0 -0
- /package/src/core/primitives/textInput/__workshop__/{customValidity.tsx → CustomValidity.tsx} +0 -0
- /package/src/core/primitives/textInput/__workshop__/{readOnly.tsx → ReadOnly.tsx} +0 -0
- /package/src/core/primitives/textInput/__workshop__/{states.tsx → States.tsx} +0 -0
- /package/src/core/primitives/textInput/__workshop__/{tones.tsx → Tones.tsx} +0 -0
- /package/src/core/utils/boundaryElement/__workshop__/{plain.tsx → Plain.tsx} +0 -0
- /package/src/core/utils/elementQuery/{elementQuery.tsx → ElementQuery.tsx} +0 -0
- /package/src/core/utils/portal/__workshop__/{named.tsx → Named.tsx} +0 -0
|
@@ -11,12 +11,12 @@ import {
|
|
|
11
11
|
} from 'react'
|
|
12
12
|
|
|
13
13
|
import {useClickOutsideEvent} from '../../hooks/useClickOutsideEvent'
|
|
14
|
-
import {Box} from '../../primitives/box/
|
|
15
|
-
import {Button, type ButtonProps} from '../../primitives/button/
|
|
16
|
-
import {Flex} from '../../primitives/flex/
|
|
17
|
-
import {Popover} from '../../primitives/popover/
|
|
18
|
-
import {Stack} from '../../primitives/stack/
|
|
19
|
-
import {Text} from '../../primitives/text/
|
|
14
|
+
import {Box} from '../../primitives/box/Box'
|
|
15
|
+
import {Button, type ButtonProps} from '../../primitives/button/Button'
|
|
16
|
+
import {Flex} from '../../primitives/flex/Flex'
|
|
17
|
+
import {Popover} from '../../primitives/popover/Popover'
|
|
18
|
+
import {Stack} from '../../primitives/stack/Stack'
|
|
19
|
+
import {Text} from '../../primitives/text/Text'
|
|
20
20
|
import type {ComponentType, Props} from '../../types'
|
|
21
21
|
|
|
22
22
|
/** @beta */
|
|
@@ -48,8 +48,8 @@ export function Breadcrumbs<E extends BreadcrumbsElementType = typeof DEFAULT_BR
|
|
|
48
48
|
className,
|
|
49
49
|
expandButton: expandButtonProps,
|
|
50
50
|
gap = 2,
|
|
51
|
-
gapX,
|
|
52
|
-
gapY,
|
|
51
|
+
gapX = gap,
|
|
52
|
+
gapY = gap,
|
|
53
53
|
maxLength,
|
|
54
54
|
separator,
|
|
55
55
|
...rest
|
|
@@ -66,45 +66,17 @@ export function Breadcrumbs<E extends BreadcrumbsElementType = typeof DEFAULT_BR
|
|
|
66
66
|
|
|
67
67
|
const rawItems = useMemo(() => Children.toArray(children).filter(isValidElement), [children])
|
|
68
68
|
|
|
69
|
-
const items =
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
content={
|
|
81
|
-
<Stack as="ol" gap={gapY} overflow="auto">
|
|
82
|
-
{rawItems.slice(beforeLength - 1, len - afterLength)}
|
|
83
|
-
</Stack>
|
|
84
|
-
}
|
|
85
|
-
key="button"
|
|
86
|
-
open={open}
|
|
87
|
-
padding={2}
|
|
88
|
-
placement="top"
|
|
89
|
-
portal
|
|
90
|
-
ref={popoverElementRef}
|
|
91
|
-
>
|
|
92
|
-
<Button
|
|
93
|
-
mode="bleed"
|
|
94
|
-
padding={0}
|
|
95
|
-
text="…"
|
|
96
|
-
{...expandButtonProps}
|
|
97
|
-
onClick={open ? collapse : expand}
|
|
98
|
-
ref={expandElementRef}
|
|
99
|
-
selected={open}
|
|
100
|
-
/>
|
|
101
|
-
</Popover>,
|
|
102
|
-
...rawItems.slice(len - afterLength),
|
|
103
|
-
]
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
return rawItems
|
|
107
|
-
}, [collapse, expand, expandButtonProps, gapY, maxLength, open, rawItems])
|
|
69
|
+
const items = useItems({
|
|
70
|
+
collapse,
|
|
71
|
+
expand,
|
|
72
|
+
expandElementRef,
|
|
73
|
+
maxLength,
|
|
74
|
+
open,
|
|
75
|
+
popoverElementRef,
|
|
76
|
+
rawItems,
|
|
77
|
+
gapY,
|
|
78
|
+
expandButtonProps,
|
|
79
|
+
})
|
|
108
80
|
|
|
109
81
|
return (
|
|
110
82
|
<Flex
|
|
@@ -129,3 +101,64 @@ export function Breadcrumbs<E extends BreadcrumbsElementType = typeof DEFAULT_BR
|
|
|
129
101
|
</Flex>
|
|
130
102
|
)
|
|
131
103
|
}
|
|
104
|
+
|
|
105
|
+
function useItems({
|
|
106
|
+
collapse,
|
|
107
|
+
expand,
|
|
108
|
+
expandElementRef,
|
|
109
|
+
maxLength,
|
|
110
|
+
open,
|
|
111
|
+
popoverElementRef,
|
|
112
|
+
rawItems,
|
|
113
|
+
gapY,
|
|
114
|
+
expandButtonProps,
|
|
115
|
+
}: {
|
|
116
|
+
collapse: () => void
|
|
117
|
+
expand: () => void
|
|
118
|
+
expandElementRef: React.RefObject<HTMLButtonElement | null>
|
|
119
|
+
maxLength: number | undefined
|
|
120
|
+
open: boolean
|
|
121
|
+
popoverElementRef: React.RefObject<HTMLDivElement | null>
|
|
122
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
123
|
+
rawItems: React.ReactElement<unknown, string | React.JSXElementConstructor<any>>[]
|
|
124
|
+
gapY: NonNullable<GapStyleProps['gapY']>
|
|
125
|
+
expandButtonProps: BreadcrumbsOwnProps['expandButton']
|
|
126
|
+
}): React.JSX.Element[] {
|
|
127
|
+
const len = rawItems.length
|
|
128
|
+
|
|
129
|
+
if (maxLength && len > maxLength) {
|
|
130
|
+
const beforeLength = Math.ceil(maxLength / 2)
|
|
131
|
+
const afterLength = Math.floor(maxLength / 2)
|
|
132
|
+
|
|
133
|
+
return [
|
|
134
|
+
...rawItems.slice(0, beforeLength - 1),
|
|
135
|
+
<Popover
|
|
136
|
+
constrainSize
|
|
137
|
+
content={
|
|
138
|
+
<Stack as="ol" gap={gapY} overflow="auto">
|
|
139
|
+
{rawItems.slice(beforeLength - 1, len - afterLength)}
|
|
140
|
+
</Stack>
|
|
141
|
+
}
|
|
142
|
+
key="button"
|
|
143
|
+
open={open}
|
|
144
|
+
padding={2}
|
|
145
|
+
placement="top"
|
|
146
|
+
portal
|
|
147
|
+
ref={popoverElementRef}
|
|
148
|
+
>
|
|
149
|
+
<Button
|
|
150
|
+
mode="bleed"
|
|
151
|
+
padding={0}
|
|
152
|
+
text="…"
|
|
153
|
+
{...expandButtonProps}
|
|
154
|
+
onClick={open ? collapse : expand}
|
|
155
|
+
ref={expandElementRef}
|
|
156
|
+
selected={open}
|
|
157
|
+
/>
|
|
158
|
+
</Popover>,
|
|
159
|
+
...rawItems.slice(len - afterLength),
|
|
160
|
+
]
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
return rawItems
|
|
164
|
+
}
|
|
@@ -5,20 +5,28 @@ import {
|
|
|
5
5
|
type ResponsiveProp,
|
|
6
6
|
} from '@sanity/ui/css'
|
|
7
7
|
import type {CardTone, ColorScheme, Radius} from '@sanity/ui/theme'
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
type FocusEvent,
|
|
10
|
+
type ForwardedRef,
|
|
11
|
+
type ReactNode,
|
|
12
|
+
use,
|
|
13
|
+
useCallback,
|
|
14
|
+
useMemo,
|
|
15
|
+
useRef,
|
|
16
|
+
} from 'react'
|
|
9
17
|
|
|
10
18
|
import {Z_OFFSETS} from '../../constants'
|
|
11
19
|
import {isHTMLElement} from '../../helpers/element'
|
|
12
20
|
import {focusFirstDescendant, focusLastDescendant} from '../../helpers/focus'
|
|
21
|
+
import {_getResponsiveProp} from '../../helpers/props'
|
|
13
22
|
import {usePrefersReducedMotion} from '../../hooks/usePrefersReducedMotion'
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {Layer, type LayerOwnProps, type LayerProps} from '../../primitives/layer/layer'
|
|
23
|
+
import {Container} from '../../primitives/container/Container'
|
|
24
|
+
import {Layer, type LayerOwnProps, type LayerProps} from '../../primitives/layer/Layer'
|
|
17
25
|
import type {ComponentType, Props} from '../../types'
|
|
18
|
-
import {
|
|
19
|
-
import {Portal} from '../../utils/portal/
|
|
26
|
+
import {BoundaryElementContext} from '../../utils/boundaryElement/BoundaryElementContext'
|
|
27
|
+
import {Portal} from '../../utils/portal/Portal'
|
|
20
28
|
import {usePortal} from '../../utils/portal/usePortal'
|
|
21
|
-
import {DialogCard} from './
|
|
29
|
+
import {DialogCard} from './DialogCard'
|
|
22
30
|
import {isTargetWithinScope} from './isTargetWithinScope'
|
|
23
31
|
import type {DialogPosition} from './types'
|
|
24
32
|
import {useDialog} from './useDialog'
|
|
@@ -108,10 +116,11 @@ export function Dialog<E extends DialogElementType = typeof DEFAULT_DIALOG_ELEME
|
|
|
108
116
|
const animate = prefersReducedMotion ? false : _animate
|
|
109
117
|
const portal = usePortal()
|
|
110
118
|
const portalElement = portalProp ? portal.elements?.[portalProp] || null : portal.element
|
|
111
|
-
const boundaryElement =
|
|
112
|
-
const cardRadius =
|
|
113
|
-
const position =
|
|
114
|
-
const zOffset =
|
|
119
|
+
const boundaryElement = use(BoundaryElementContext)
|
|
120
|
+
const cardRadius = useMemo(() => _getResponsiveProp(cardRadiusProp), [cardRadiusProp])
|
|
121
|
+
const position = useMemo(() => _getResponsiveProp(positionProp), [positionProp])
|
|
122
|
+
const zOffset = useMemo(() => _getResponsiveProp(zOffsetProp), [zOffsetProp])
|
|
123
|
+
|
|
115
124
|
const preDivRef = useRef<HTMLDivElement | null>(null)
|
|
116
125
|
const postDivRef = useRef<HTMLDivElement | null>(null)
|
|
117
126
|
const cardRef = useRef<HTMLDivElement | null>(null)
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
import {
|
|
12
12
|
type ForwardedRef,
|
|
13
13
|
type ReactNode,
|
|
14
|
+
use,
|
|
14
15
|
useCallback,
|
|
15
16
|
useEffect,
|
|
16
17
|
useImperativeHandle,
|
|
@@ -21,14 +22,14 @@ import {
|
|
|
21
22
|
import {focusFirstDescendant} from '../../helpers/focus'
|
|
22
23
|
import {useClickOutsideEvent} from '../../hooks/useClickOutsideEvent'
|
|
23
24
|
import {useGlobalKeyDown} from '../../hooks/useGlobalKeyDown'
|
|
24
|
-
import {Box} from '../../primitives/box/
|
|
25
|
-
import {Button} from '../../primitives/button/
|
|
26
|
-
import {Card, type CardElementType, type CardOwnProps} from '../../primitives/card/
|
|
27
|
-
import {Flex} from '../../primitives/flex/
|
|
25
|
+
import {Box} from '../../primitives/box/Box'
|
|
26
|
+
import {Button} from '../../primitives/button/Button'
|
|
27
|
+
import {Card, type CardElementType, type CardOwnProps} from '../../primitives/card/Card'
|
|
28
|
+
import {Flex} from '../../primitives/flex/Flex'
|
|
28
29
|
import {useLayer} from '../../primitives/layer/useLayer'
|
|
29
|
-
import {Text} from '../../primitives/text/
|
|
30
|
+
import {Text} from '../../primitives/text/Text'
|
|
30
31
|
import type {Props} from '../../types'
|
|
31
|
-
import {
|
|
32
|
+
import {BoundaryElementContext} from '../../utils/boundaryElement/BoundaryElementContext'
|
|
32
33
|
import {usePortal} from '../../utils/portal/usePortal'
|
|
33
34
|
import {isTargetWithinScope} from './isTargetWithinScope'
|
|
34
35
|
|
|
@@ -87,11 +88,10 @@ export function DialogCard<E extends DialogCardElementType = typeof DEFAULT_DIAL
|
|
|
87
88
|
|
|
88
89
|
const portal = usePortal()
|
|
89
90
|
const portalElement = portalProp ? portal.elements?.[portalProp] || null : portal.element
|
|
90
|
-
const boundaryElement =
|
|
91
|
+
const boundaryElement = use(BoundaryElementContext)
|
|
91
92
|
const ref = useRef<HTMLDivElement | null>(null)
|
|
92
93
|
const contentRef = useRef<HTMLDivElement | null>(null)
|
|
93
|
-
const
|
|
94
|
-
const {isTopLayer} = layer
|
|
94
|
+
const {isTopLayer} = useLayer()
|
|
95
95
|
const labelId = `${id}_label`
|
|
96
96
|
const showCloseButton = Boolean(onClose) && hideCloseButton === false
|
|
97
97
|
const showHeader = Boolean(header) || showCloseButton
|
|
@@ -18,4 +18,4 @@ export interface DialogContextValue {
|
|
|
18
18
|
* @internal
|
|
19
19
|
*/
|
|
20
20
|
export const DialogContext: Context<DialogContextValue> =
|
|
21
|
-
createGlobalScopedContext<DialogContextValue>('@sanity/ui/
|
|
21
|
+
createGlobalScopedContext<DialogContextValue>('@sanity/ui/v4/dialog', {version: 0.0})
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type {ResponsiveProp} from '@sanity/ui/css'
|
|
2
2
|
import {type ReactNode, useMemo} from 'react'
|
|
3
3
|
|
|
4
|
-
import {DialogContext, type DialogContextValue} from './
|
|
4
|
+
import {DialogContext, type DialogContextValue} from './DialogContext'
|
|
5
5
|
import type {DialogPosition} from './types'
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -30,5 +30,5 @@ export function DialogProvider(props: DialogProviderProps): React.JSX.Element {
|
|
|
30
30
|
[position, zOffset],
|
|
31
31
|
)
|
|
32
32
|
|
|
33
|
-
return <DialogContext
|
|
33
|
+
return <DialogContext value={contextValue}>{children}</DialogContext>
|
|
34
34
|
}
|
|
@@ -11,7 +11,8 @@ import {
|
|
|
11
11
|
PortalProvider,
|
|
12
12
|
} from '@sanity/ui'
|
|
13
13
|
import {useCallback, useState} from 'react'
|
|
14
|
-
|
|
14
|
+
|
|
15
|
+
import {panePortal, paneRoot} from './styles.css'
|
|
15
16
|
|
|
16
17
|
export default function PanesStory(): React.JSX.Element {
|
|
17
18
|
return (
|
|
@@ -22,23 +23,6 @@ export default function PanesStory(): React.JSX.Element {
|
|
|
22
23
|
)
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
const PaneRoot = styled(Card)`
|
|
26
|
-
position: relative;
|
|
27
|
-
`
|
|
28
|
-
|
|
29
|
-
const PanePortal = styled.div`
|
|
30
|
-
position: absolute;
|
|
31
|
-
left: 0;
|
|
32
|
-
right: 0;
|
|
33
|
-
top: 0;
|
|
34
|
-
bottom: 0;
|
|
35
|
-
pointer-events: none;
|
|
36
|
-
|
|
37
|
-
& > * {
|
|
38
|
-
pointer-events: auto;
|
|
39
|
-
}
|
|
40
|
-
`
|
|
41
|
-
|
|
42
26
|
function Pane(props: {borderLeft?: boolean; id: string}) {
|
|
43
27
|
const {borderLeft, id} = props
|
|
44
28
|
const [element, setElement] = useState<HTMLDivElement | null>(null)
|
|
@@ -52,13 +36,13 @@ function Pane(props: {borderLeft?: boolean; id: string}) {
|
|
|
52
36
|
return (
|
|
53
37
|
<BoundaryElementProvider element={element}>
|
|
54
38
|
<PortalProvider element={portalElement}>
|
|
55
|
-
<
|
|
39
|
+
<Card className={paneRoot} borderLeft={borderLeft} flex={1} ref={setElement}>
|
|
56
40
|
<Box padding={4}>
|
|
57
41
|
<Button onClick={() => setDialogOpen(true)} selected={dialogOpen} text="Open dialog" />
|
|
58
42
|
</Box>
|
|
59
43
|
|
|
60
|
-
<
|
|
61
|
-
</
|
|
44
|
+
<div className={panePortal} ref={setPortalElement} />
|
|
45
|
+
</Card>
|
|
62
46
|
|
|
63
47
|
{dialogOpen && (
|
|
64
48
|
<Dialog
|
|
@@ -79,6 +63,10 @@ function Pane(props: {borderLeft?: boolean; id: string}) {
|
|
|
79
63
|
<MenuItem text="Item 3" />
|
|
80
64
|
</Menu>
|
|
81
65
|
}
|
|
66
|
+
popover={{
|
|
67
|
+
modal: true,
|
|
68
|
+
portal: true,
|
|
69
|
+
}}
|
|
82
70
|
/>
|
|
83
71
|
</Box>
|
|
84
72
|
</Dialog>
|
|
@@ -6,6 +6,7 @@ import {WORKSHOP_DIALOG_POSITION_OPTIONS} from '$workshop'
|
|
|
6
6
|
|
|
7
7
|
export default function PositionStory(): React.JSX.Element {
|
|
8
8
|
const open = useBoolean('Open', true)
|
|
9
|
+
// @ts-expect-error - TODO: fix this
|
|
9
10
|
const position = useSelect('Position', WORKSHOP_DIALOG_POSITION_OPTIONS)
|
|
10
11
|
|
|
11
12
|
return (
|
|
@@ -22,7 +23,14 @@ export default function PositionStory(): React.JSX.Element {
|
|
|
22
23
|
</Stack>
|
|
23
24
|
|
|
24
25
|
<LayerProvider>
|
|
25
|
-
{open &&
|
|
26
|
+
{open && (
|
|
27
|
+
<Dialog
|
|
28
|
+
header="Position example"
|
|
29
|
+
id="position-example"
|
|
30
|
+
// @ts-expect-error - TODO: fix this
|
|
31
|
+
position={position}
|
|
32
|
+
/>
|
|
33
|
+
)}
|
|
26
34
|
</LayerProvider>
|
|
27
35
|
</Box>
|
|
28
36
|
</Box>
|
|
@@ -9,6 +9,7 @@ export default function PropsStory(): React.JSX.Element {
|
|
|
9
9
|
const header = useText('Header', 'Props example')
|
|
10
10
|
const onClickOutside = useBoolean('Close when click outside', false)
|
|
11
11
|
const hideCloseButton = useBoolean('Hide close button', false)
|
|
12
|
+
// @ts-expect-error - TODO: fix this
|
|
12
13
|
const width = useSelect('Width', WORKSHOP_CONTAINER_WIDTH_OPTIONS)
|
|
13
14
|
const [open, setOpen] = useState(false)
|
|
14
15
|
const buttonRef = useRef<HTMLButtonElement | null>(null)
|
|
@@ -37,6 +38,7 @@ export default function PropsStory(): React.JSX.Element {
|
|
|
37
38
|
onClickOutside={onClickOutside ? handleClose : undefined}
|
|
38
39
|
onClose={handleClose}
|
|
39
40
|
open={open}
|
|
41
|
+
// @ts-expect-error - TODO: fix this
|
|
40
42
|
width={width}
|
|
41
43
|
>
|
|
42
44
|
<Box padding={4}>
|
|
@@ -5,16 +5,16 @@ const scope: WorkshopScope = {
|
|
|
5
5
|
name: 'components/dialog',
|
|
6
6
|
title: 'Dialog',
|
|
7
7
|
stories: [
|
|
8
|
-
{name: 'props', title: 'Props', component: lazy(() => import('./
|
|
9
|
-
{name: 'nested', title: 'Nested', component: lazy(() => import('./
|
|
10
|
-
{name: 'on-scroll', title: 'On scroll', component: lazy(() => import('./
|
|
11
|
-
{name: 'layering', title: 'Layering', component: lazy(() => import('./
|
|
12
|
-
{name: 'position', title: 'Position', component: lazy(() => import('./
|
|
13
|
-
{name: 'provider', title: 'Provider', component: lazy(() => import('./
|
|
14
|
-
{name: 'auto-focus', title: 'AutoFocus', component: lazy(() => import('./
|
|
15
|
-
{name: 'panes', title: 'Panes', component: lazy(() => import('./
|
|
16
|
-
{name: 'activate', title: 'Activate', component: lazy(() => import('./
|
|
17
|
-
{name: 'wrapped', title: 'Wrapped', component: lazy(() => import('./
|
|
8
|
+
{name: 'props', title: 'Props', component: lazy(() => import('./Props'))},
|
|
9
|
+
{name: 'nested', title: 'Nested', component: lazy(() => import('./Nested'))},
|
|
10
|
+
{name: 'on-scroll', title: 'On scroll', component: lazy(() => import('./OnScroll'))},
|
|
11
|
+
{name: 'layering', title: 'Layering', component: lazy(() => import('./Layering'))},
|
|
12
|
+
{name: 'position', title: 'Position', component: lazy(() => import('./Position'))},
|
|
13
|
+
{name: 'provider', title: 'Provider', component: lazy(() => import('./Provider'))},
|
|
14
|
+
{name: 'auto-focus', title: 'AutoFocus', component: lazy(() => import('./AutoFocus'))},
|
|
15
|
+
{name: 'panes', title: 'Panes', component: lazy(() => import('./Panes'))},
|
|
16
|
+
{name: 'activate', title: 'Activate', component: lazy(() => import('./Activate'))},
|
|
17
|
+
{name: 'wrapped', title: 'Wrapped', component: lazy(() => import('./Wrapped'))},
|
|
18
18
|
],
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {globalStyle, style} from '@vanilla-extract/css'
|
|
2
|
+
|
|
3
|
+
export const paneRoot: string = style({
|
|
4
|
+
position: 'relative',
|
|
5
|
+
})
|
|
6
|
+
|
|
7
|
+
export const panePortal: string = style({
|
|
8
|
+
position: 'absolute',
|
|
9
|
+
left: 0,
|
|
10
|
+
right: 0,
|
|
11
|
+
top: 0,
|
|
12
|
+
bottom: 0,
|
|
13
|
+
pointerEvents: 'none',
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
globalStyle(`${panePortal} > *`, {
|
|
17
|
+
pointerEvents: 'auto',
|
|
18
|
+
})
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {use} from 'react'
|
|
2
2
|
|
|
3
|
-
import {DialogContext, type DialogContextValue} from './
|
|
3
|
+
import {DialogContext, type DialogContextValue} from './DialogContext'
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* This API might change. DO NOT USE IN PRODUCTION.
|
|
7
7
|
* @beta
|
|
8
8
|
*/
|
|
9
9
|
export function useDialog(): DialogContextValue {
|
|
10
|
-
return
|
|
10
|
+
return use(DialogContext)
|
|
11
11
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type {GapStyleProps, RadiusStyleProps, ResponsiveProp} from '@sanity/ui/css'
|
|
2
2
|
import type {FontTextSize, Space} from '@sanity/ui/theme'
|
|
3
3
|
|
|
4
|
-
import {Box} from '../../primitives/box/
|
|
5
|
-
import {KBD} from '../../primitives/kbd/
|
|
4
|
+
import {Box} from '../../primitives/box/Box'
|
|
5
|
+
import {KBD} from '../../primitives/kbd/Kbd'
|
|
6
6
|
import type {ComponentType, Props} from '../../types'
|
|
7
7
|
|
|
8
8
|
/** @public */
|
|
@@ -5,7 +5,7 @@ import {describe, expect, it, vi} from 'vitest'
|
|
|
5
5
|
|
|
6
6
|
import {render} from '$test/utils'
|
|
7
7
|
|
|
8
|
-
import {MenuContext, type MenuContextValue} from './
|
|
8
|
+
import {MenuContext, type MenuContextValue} from './MenuContext'
|
|
9
9
|
import {useMenu} from './useMenu'
|
|
10
10
|
|
|
11
11
|
describe('components/menu', () => {
|
|
@@ -34,23 +34,20 @@ describe('components/menu', () => {
|
|
|
34
34
|
|
|
35
35
|
const value: MenuContextValue = useMemo(
|
|
36
36
|
() => ({
|
|
37
|
-
version:
|
|
37
|
+
version: 2,
|
|
38
38
|
activeElement: null,
|
|
39
|
-
activeIndex: 0,
|
|
40
39
|
mount: (element: HTMLElement | null) => () => console.log(element),
|
|
41
40
|
onItemClick: () => undefined,
|
|
42
41
|
onItemMouseEnter: handleItemMouseEnter,
|
|
43
42
|
onItemMouseLeave: handleItemMouseLeave,
|
|
44
|
-
onMouseEnter: handleItemMouseEnter,
|
|
45
|
-
onMouseLeave: handleItemMouseLeave,
|
|
46
43
|
}),
|
|
47
44
|
[handleItemMouseEnter, handleItemMouseLeave],
|
|
48
45
|
)
|
|
49
46
|
|
|
50
47
|
return (
|
|
51
|
-
<MenuContext
|
|
48
|
+
<MenuContext value={value}>
|
|
52
49
|
<Debug />
|
|
53
|
-
</MenuContext
|
|
50
|
+
</MenuContext>
|
|
54
51
|
)
|
|
55
52
|
}
|
|
56
53
|
|
|
@@ -58,8 +55,7 @@ describe('components/menu', () => {
|
|
|
58
55
|
|
|
59
56
|
const contextValue = log.mock.calls[0][0]
|
|
60
57
|
|
|
61
|
-
expect(contextValue.version).toBe(
|
|
62
|
-
expect(contextValue.activeIndex).toBe(0)
|
|
58
|
+
expect(contextValue.version).toBe(2)
|
|
63
59
|
expect(typeof contextValue.mount).toBe('function')
|
|
64
60
|
expect(typeof contextValue.onItemClick).toBe('function')
|
|
65
61
|
expect(typeof contextValue.onItemMouseEnter).toBe('function')
|
|
@@ -81,12 +77,12 @@ describe('components/menu', () => {
|
|
|
81
77
|
|
|
82
78
|
function Root() {
|
|
83
79
|
return (
|
|
84
|
-
<MenuContext
|
|
80
|
+
<MenuContext
|
|
85
81
|
// @ts-expect-error - we want to test the error case
|
|
86
82
|
value={undefined}
|
|
87
83
|
>
|
|
88
84
|
<Debug />
|
|
89
|
-
</MenuContext
|
|
85
|
+
</MenuContext>
|
|
90
86
|
)
|
|
91
87
|
}
|
|
92
88
|
|
|
@@ -112,12 +108,12 @@ describe('components/menu', () => {
|
|
|
112
108
|
// NOTE: we’re testing this because the context value may be a function in the future
|
|
113
109
|
|
|
114
110
|
return (
|
|
115
|
-
<MenuContext
|
|
111
|
+
<MenuContext
|
|
116
112
|
// @ts-expect-error - we want to test the error case
|
|
117
113
|
value={() => ({version: 1})}
|
|
118
114
|
>
|
|
119
115
|
<Debug />
|
|
120
|
-
</MenuContext
|
|
116
|
+
</MenuContext>
|
|
121
117
|
)
|
|
122
118
|
}
|
|
123
119
|
|
|
@@ -4,11 +4,11 @@ import {useCallback, useEffect, useImperativeHandle, useMemo, useRef} from 'reac
|
|
|
4
4
|
|
|
5
5
|
import {useClickOutsideEvent} from '../../hooks/useClickOutsideEvent'
|
|
6
6
|
import {useGlobalKeyDown} from '../../hooks/useGlobalKeyDown'
|
|
7
|
-
import {Box} from '../../primitives/box/
|
|
7
|
+
import {Box} from '../../primitives/box/Box'
|
|
8
8
|
import {useLayer} from '../../primitives/layer/useLayer'
|
|
9
|
-
import {Stack} from '../../primitives/stack/
|
|
9
|
+
import {Stack} from '../../primitives/stack/Stack'
|
|
10
10
|
import type {ComponentType, Props} from '../../types'
|
|
11
|
-
import {MenuContext, type MenuContextValue} from './
|
|
11
|
+
import {MenuContext, type MenuContextValue} from './MenuContext'
|
|
12
12
|
import {useMenuController} from './useMenuController'
|
|
13
13
|
|
|
14
14
|
/** @public */
|
|
@@ -19,7 +19,7 @@ export type MenuOwnProps = PaddingStyleProps & {
|
|
|
19
19
|
'gap'?: ResponsiveProp<Space>
|
|
20
20
|
'onClickOutside'?: (event: MouseEvent) => void
|
|
21
21
|
'onEscape'?: () => void
|
|
22
|
-
'onItemClick'?: () => void
|
|
22
|
+
'onItemClick'?: (event: React.MouseEvent<HTMLButtonElement>) => void
|
|
23
23
|
'onItemSelect'?: (index: number) => void
|
|
24
24
|
'originElement'?: HTMLElement | null
|
|
25
25
|
'registerElement'?: (el: HTMLElement) => () => void
|
|
@@ -127,26 +127,21 @@ export function Menu<E extends MenuElementType = typeof DEFAULT_MENU_ELEMENT>(
|
|
|
127
127
|
),
|
|
128
128
|
)
|
|
129
129
|
|
|
130
|
-
const value
|
|
131
|
-
() =>
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
// deprecated
|
|
144
|
-
onMouseEnter: handleItemMouseEnter,
|
|
145
|
-
onMouseLeave: handleItemMouseLeave,
|
|
146
|
-
}),
|
|
130
|
+
const value = useMemo(
|
|
131
|
+
() =>
|
|
132
|
+
({
|
|
133
|
+
version: 2,
|
|
134
|
+
activeElement,
|
|
135
|
+
mount,
|
|
136
|
+
onClickOutside,
|
|
137
|
+
onEscape,
|
|
138
|
+
onItemClick,
|
|
139
|
+
onItemMouseEnter: handleItemMouseEnter,
|
|
140
|
+
onItemMouseLeave: handleItemMouseLeave,
|
|
141
|
+
registerElement,
|
|
142
|
+
}) satisfies MenuContextValue,
|
|
147
143
|
[
|
|
148
144
|
activeElement,
|
|
149
|
-
activeIndex,
|
|
150
145
|
mount,
|
|
151
146
|
handleItemMouseEnter,
|
|
152
147
|
handleItemMouseLeave,
|
|
@@ -158,7 +153,7 @@ export function Menu<E extends MenuElementType = typeof DEFAULT_MENU_ELEMENT>(
|
|
|
158
153
|
)
|
|
159
154
|
|
|
160
155
|
return (
|
|
161
|
-
<MenuContext
|
|
156
|
+
<MenuContext value={value}>
|
|
162
157
|
<Box
|
|
163
158
|
data-ui="Menu"
|
|
164
159
|
{...rest}
|
|
@@ -174,6 +169,6 @@ export function Menu<E extends MenuElementType = typeof DEFAULT_MENU_ELEMENT>(
|
|
|
174
169
|
>
|
|
175
170
|
<Stack gap={gap}>{children}</Stack>
|
|
176
171
|
</Box>
|
|
177
|
-
</MenuContext
|
|
172
|
+
</MenuContext>
|
|
178
173
|
)
|
|
179
174
|
}
|