@sanity/ui 3.0.0-static.17 → 3.0.0-static.19
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-cjs/_visual-editing.cjs +138 -137
- package/dist/_chunks-cjs/_visual-editing.cjs.map +1 -1
- package/dist/_chunks-cjs/buildCommand.cjs +21 -22
- package/dist/_chunks-cjs/buildCommand.cjs.map +1 -1
- package/dist/_chunks-es/_visual-editing.js +139 -138
- package/dist/_chunks-es/_visual-editing.js.map +1 -1
- package/dist/_visual-editing.d.cts +12 -22
- package/dist/_visual-editing.d.ts +12 -22
- package/dist/cli.cjs +1 -1
- package/dist/css.cjs +1589 -2016
- package/dist/css.cjs.map +1 -1
- package/dist/css.d.cts +9427 -874
- package/dist/css.d.ts +9427 -874
- package/dist/css.js +1591 -2018
- package/dist/css.js.map +1 -1
- package/dist/index.cjs +28 -40
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +26 -23
- package/dist/index.d.ts +26 -23
- package/dist/index.js +30 -42
- package/dist/index.js.map +1 -1
- package/dist/theme.cjs +2749 -2756
- package/dist/theme.cjs.map +1 -1
- package/dist/theme.d.cts +242 -161
- package/dist/theme.d.ts +242 -161
- package/dist/theme.js +2750 -2757
- package/dist/theme.js.map +1 -1
- package/dist/ui-system.css +15719 -16097
- package/dist/ui-system.min.css +1 -1
- package/dist/ui-theme.css +850 -4568
- package/dist/ui-theme.min.css +1 -1
- package/dist/ui.css +16569 -20772
- package/dist/ui.min.css +1 -1
- package/package.json +10 -15
- package/src/cli/buildCommand.ts +13 -30
- package/src/core/StyleTags.tsx +4 -12
- package/src/core/_compat/styles/_responsive.ts +1 -1
- package/src/core/_compat/theme/theme.test.tsx +4 -5
- package/src/core/_compat/theme/themeColorProvider.tsx +2 -2
- package/src/core/_compat/theme/themeContext.ts +2 -2
- package/src/core/_compat/theme/themeProvider.tsx +2 -2
- package/src/core/_compat/theme/types.ts +1 -1
- package/src/core/_compat/theme/useRootTheme.ts +1 -1
- package/src/core/_compat/theme/useTheme.ts +1 -1
- package/src/core/components/autocomplete/__workshop__/async.tsx +2 -2
- package/src/core/components/autocomplete/__workshop__/constrainedHeight.tsx +2 -2
- package/src/core/components/autocomplete/__workshop__/custom.tsx +11 -11
- package/src/core/components/autocomplete/__workshop__/example.tsx +6 -7
- package/src/core/components/autocomplete/__workshop__/focusAndBlur.tsx +2 -2
- package/src/core/components/autocomplete/__workshop__/fullscreen.tsx +1 -1
- package/src/core/components/autocomplete/autocomplete.tsx +5 -5
- package/src/core/components/autocomplete/autocompleteOption.tsx +1 -1
- package/src/core/components/autocomplete/autocompleteReducer.ts +1 -1
- package/src/core/components/autocomplete/constants.ts +1 -1
- package/src/core/components/autocomplete/types.ts +1 -1
- package/src/core/components/breadcrumbs/__workshop__/example.tsx +1 -1
- package/src/core/components/breadcrumbs/breadcrumbs.tsx +7 -7
- package/src/core/components/dialog/__workshop__/activate.tsx +4 -4
- package/src/core/components/dialog/__workshop__/position.tsx +1 -1
- package/src/core/components/dialog/__workshop__/props.tsx +1 -1
- package/src/core/components/dialog/__workshop__/wrapped.tsx +2 -2
- package/src/core/components/dialog/dialog.tsx +15 -8
- package/src/core/components/dialog/dialogCard.tsx +18 -3
- package/src/core/components/dialog/dialogContext.ts +1 -1
- package/src/core/components/dialog/dialogProvider.tsx +3 -3
- package/src/core/components/dialog/useDialog.ts +1 -1
- package/src/core/components/hotkeys/hotkeys.tsx +4 -4
- package/src/core/components/menu/__workshop__/closableMenuButton.tsx +5 -4
- package/src/core/components/menu/__workshop__/constrainedInBoundary.tsx +2 -2
- package/src/core/components/menu/__workshop__/customMenuItem.tsx +3 -3
- package/src/core/components/menu/__workshop__/disableFocusOnClose.tsx +1 -1
- package/src/core/components/menu/__workshop__/groups.tsx +2 -2
- package/src/core/components/menu/__workshop__/menuButton.tsx +1 -1
- package/src/core/components/menu/__workshop__/menuGroupRight.tsx +1 -1
- package/src/core/components/menu/__workshop__/nestedMenu.tsx +1 -1
- package/src/core/components/menu/__workshop__/onCloseMenuButton.tsx +13 -4
- package/src/core/components/menu/__workshop__/selectedItem.tsx +2 -2
- package/src/core/components/menu/__workshop__/withoutArrow.tsx +1 -1
- package/src/core/components/menu/menu.test.tsx +6 -7
- package/src/core/components/menu/menu.tsx +2 -2
- package/src/core/components/menu/menuButton.tsx +9 -9
- package/src/core/components/menu/menuContext.ts +1 -1
- package/src/core/components/menu/menuDivider.tsx +3 -3
- package/src/core/components/menu/menuGroup.tsx +9 -9
- package/src/core/components/menu/menuItem.tsx +9 -6
- package/src/core/components/menu/useMenu.ts +1 -1
- package/src/core/components/menu/useMenuController.ts +4 -4
- package/src/core/components/skeleton/__workshop__/delay.tsx +1 -1
- package/src/core/components/skeleton/__workshop__/skeleton.tsx +2 -2
- package/src/core/components/skeleton/codeSkeleton.tsx +5 -5
- package/src/core/components/skeleton/headingSkeleton.tsx +5 -5
- package/src/core/components/skeleton/labelSkeleton.tsx +5 -5
- package/src/core/components/skeleton/skeleton.tsx +4 -4
- package/src/core/components/skeleton/textSkeleton.tsx +5 -5
- package/src/core/components/tab/__workshop__/example.tsx +1 -1
- package/src/core/components/tab/tab.tsx +7 -7
- package/src/core/components/tab/tabList.tsx +14 -7
- package/src/core/components/tab/tabPanel.tsx +10 -7
- package/src/core/components/toast/__workshop__/hook.tsx +1 -1
- package/src/core/components/toast/toast.test.tsx +5 -5
- package/src/core/components/toast/toast.tsx +6 -7
- package/src/core/components/toast/toastContext.ts +1 -1
- package/src/core/components/toast/toastLayer.tsx +2 -2
- package/src/core/components/toast/toastProvider.tsx +1 -1
- package/src/core/components/toast/types.ts +1 -1
- package/src/core/components/toast/useToast.ts +1 -1
- package/src/core/components/tree/__workshop__/basic.perf.ts +1 -1
- package/src/core/components/tree/__workshop__/basic.tsx +1 -1
- package/src/core/components/tree/__workshop__/tabFromElement.tsx +1 -1
- package/src/core/components/tree/helpers.ts +1 -1
- package/src/core/components/tree/tree.tsx +6 -6
- package/src/core/components/tree/treeContext.ts +1 -1
- package/src/core/components/tree/treeGroup.tsx +2 -2
- package/src/core/components/tree/treeItem.tsx +15 -15
- package/src/core/components/tree/types.ts +2 -2
- package/src/core/components/tree/useTree.ts +1 -1
- package/src/core/hooks/useClickOutside.test.tsx +15 -16
- package/src/core/hooks/useClickOutsideEvent.test.tsx +4 -5
- package/src/core/hooks/useDelayed.test.ts +6 -7
- package/src/core/hooks/useDelayedState.ts +1 -1
- package/src/core/hooks/useElementRect/__workshop__/example.tsx +1 -1
- package/src/core/hooks/useElementSize.ts +1 -1
- package/src/core/hooks/useForwardedRef.ts +1 -1
- package/src/core/hooks/useMediaIndex/__workshop__/test.tsx +1 -1
- package/src/core/hooks/useMediaIndex/useMediaIndex.test.tsx +3 -18
- package/src/core/hooks/useMediaIndex/useMediaIndex.ts +10 -10
- package/src/core/hooks/usePrefersDark.hydration.test.tsx +4 -4
- package/src/core/hooks/usePrefersDark.test.tsx +1 -0
- package/src/core/hooks/usePrefersReducedMotion.hydration.test.tsx +4 -4
- package/src/core/hooks/usePrefersReducedMotion.test.tsx +1 -0
- package/src/core/middleware/origin.ts +1 -1
- package/src/core/primitives/_selectable/selectable.tsx +3 -3
- package/src/core/primitives/avatar/__workshop__/withinButton.tsx +1 -1
- package/src/core/primitives/avatar/avatar.tsx +6 -6
- package/src/core/primitives/avatar/avatarCounter.tsx +3 -3
- package/src/core/primitives/avatar/avatarStack.tsx +7 -7
- package/src/core/primitives/avatar/types.ts +1 -3
- package/src/core/primitives/badge/badge.test.tsx +2 -3
- package/src/core/primitives/badge/badge.tsx +3 -3
- package/src/core/primitives/box/__workshop__/responsive.tsx +2 -1
- package/src/core/primitives/box/box.tsx +4 -2
- package/src/core/primitives/button/__workshop__/custom.tsx +2 -2
- package/src/core/primitives/button/__workshop__/customIcons.tsx +3 -3
- package/src/core/primitives/button/__workshop__/disabled.tsx +9 -9
- package/src/core/primitives/button/__workshop__/props.tsx +3 -4
- package/src/core/primitives/button/__workshop__/stacked.tsx +4 -5
- package/src/core/primitives/button/button.test.tsx +2 -3
- package/src/core/primitives/button/button.tsx +11 -6
- package/src/core/primitives/card/__workshop__/asButton.tsx +16 -7
- package/src/core/primitives/card/__workshop__/checkered.tsx +1 -1
- package/src/core/primitives/card/__workshop__/index.ts +1 -1
- package/src/core/primitives/card/__workshop__/interactive.tsx +1 -1
- package/src/core/primitives/card/__workshop__/listNavigation.tsx +3 -3
- package/src/core/primitives/card/__workshop__/props.tsx +3 -3
- package/src/core/primitives/card/__workshop__/selected.tsx +2 -2
- package/src/core/primitives/card/__workshop__/{allTones.tsx → tones.tsx} +3 -3
- package/src/core/primitives/card/card.tsx +4 -4
- package/src/core/primitives/card/cardContext.ts +2 -2
- package/src/core/primitives/card/cardProvider.tsx +3 -3
- package/src/core/primitives/card/types.ts +2 -2
- package/src/core/primitives/card/useCard.ts +2 -1
- package/src/core/primitives/checkbox/__workshop__/props.tsx +2 -0
- package/src/core/primitives/checkbox/__workshop__/tones.tsx +11 -20
- package/src/core/primitives/checkbox/checkbox.tsx +5 -7
- package/src/core/primitives/code/__workshop__/opticalAlignment.tsx +1 -1
- package/src/core/primitives/code/code.tsx +3 -3
- package/src/core/primitives/container/container.tsx +4 -4
- package/src/core/primitives/flex/flex.tsx +2 -2
- package/src/core/primitives/heading/__workshop__/opticalAlignment.tsx +1 -1
- package/src/core/primitives/heading/heading.tsx +2 -2
- package/src/core/primitives/inline/__workshop__/plain.tsx +1 -1
- package/src/core/primitives/inline/inline.tsx +2 -2
- package/src/core/primitives/inline/types.ts +1 -0
- package/src/core/primitives/kbd/kbd.tsx +5 -5
- package/src/core/primitives/label/label.tsx +5 -5
- package/src/core/primitives/popover/__workshop__/PlainStory.tsx +2 -2
- package/src/core/primitives/popover/__workshop__/RecursiveStory.tsx +3 -4
- package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +4 -4
- package/src/core/primitives/popover/__workshop__/TestStory.tsx +2 -3
- package/src/core/primitives/popover/constants.ts +1 -1
- package/src/core/primitives/popover/floating-ui/size.ts +2 -2
- package/src/core/primitives/popover/helpers.ts +1 -1
- package/src/core/primitives/popover/popover.tsx +1 -1
- package/src/core/primitives/popover/popoverLayer.tsx +4 -4
- package/src/core/primitives/popover/types.ts +3 -2
- package/src/core/primitives/radio/__workshop__/example.tsx +1 -1
- package/src/core/primitives/radio/radio.tsx +5 -5
- package/src/core/primitives/select/__workshop__/plain.tsx +15 -3
- package/src/core/primitives/select/__workshop__/readOnly.tsx +1 -1
- package/src/core/primitives/select/select.tsx +4 -10
- package/src/core/primitives/spinner/__workshop__/Props.tsx +1 -2
- package/src/core/primitives/spinner/animatedSpinnerIcon.tsx +3 -3
- package/src/core/primitives/spinner/spinner.tsx +3 -3
- package/src/core/primitives/stack/__workshop__/plain.tsx +1 -1
- package/src/core/primitives/stack/stack.tsx +5 -5
- package/src/core/primitives/switch/switch.tsx +3 -3
- package/src/core/primitives/text/__workshop__/colored.tsx +5 -5
- package/src/core/primitives/text/__workshop__/opticalAlignment.tsx +1 -1
- package/src/core/primitives/text/text.tsx +6 -6
- package/src/core/primitives/textArea/__workshop__/plain.tsx +35 -23
- package/src/core/primitives/textArea/textArea.tsx +14 -5
- package/src/core/primitives/textInput/__workshop__/customValidity.tsx +1 -1
- package/src/core/primitives/textInput/__workshop__/plain.tsx +9 -15
- package/src/core/primitives/textInput/__workshop__/states.tsx +4 -4
- package/src/core/primitives/textInput/__workshop__/tones.tsx +2 -2
- package/src/core/primitives/textInput/textInput.tsx +13 -11
- package/src/core/primitives/tooltip/__workshop__/customPortal.tsx +2 -2
- package/src/core/primitives/tooltip/__workshop__/overflowingBoundary.tsx +1 -1
- package/src/core/primitives/tooltip/__workshop__/props.tsx +5 -4
- package/src/core/primitives/tooltip/constants.ts +1 -1
- package/src/core/primitives/tooltip/tooltip.test.tsx +61 -60
- package/src/core/primitives/tooltip/tooltip.tsx +11 -6
- package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupContext.tsx +1 -1
- package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupProvider.tsx +3 -3
- package/src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +1 -1
- package/src/core/primitives/tooltip/tooltipLayer.tsx +4 -4
- package/src/core/primitives/types.ts +15 -24
- package/src/core/types/badge.ts +1 -1
- package/src/core/types/button.ts +1 -1
- package/src/core/types/card.ts +1 -1
- package/src/core/types/selectable.ts +1 -1
- package/src/core/utils/arrow/arrow.tsx +5 -14
- package/src/core/utils/boundaryElement/boundaryElement.test.tsx +5 -5
- package/src/core/utils/boundaryElement/boundaryElementContext.ts +1 -1
- package/src/core/utils/boundaryElement/boundaryElementProvider.tsx +2 -2
- package/src/core/utils/boundaryElement/useBoundaryElement.ts +1 -1
- package/src/core/utils/elementQuery/__workshop__/customMedia.tsx +15 -8
- package/src/core/utils/elementQuery/elementQuery.tsx +1 -1
- package/src/core/utils/errorBoundary.tsx +4 -4
- package/src/core/utils/layer/__workshop__/multipleRoots.tsx +5 -5
- package/src/core/utils/layer/__workshop__/nested.tsx +3 -3
- package/src/core/utils/layer/__workshop__/responsiveZOffset.tsx +9 -5
- package/src/core/utils/layer/getLayerContext.test.ts +3 -1
- package/src/core/utils/layer/getLayerContext.ts +1 -1
- package/src/core/utils/layer/layer.test.tsx +5 -5
- package/src/core/utils/layer/layer.tsx +2 -2
- package/src/core/utils/layer/layerCard.tsx +3 -3
- package/src/core/utils/layer/layerContext.ts +1 -1
- package/src/core/utils/layer/layerProvider.tsx +10 -2
- package/src/core/utils/layer/useLayer.ts +1 -1
- package/src/core/utils/portal/__workshop__/named.tsx +3 -3
- package/src/core/utils/portal/portal.test.tsx +5 -5
- package/src/core/utils/portal/portal.tsx +3 -2
- package/src/core/utils/portal/portalContext.ts +1 -1
- package/src/core/utils/portal/portalProvider.tsx +2 -2
- package/src/core/utils/portal/usePortal.ts +1 -1
- package/src/core/utils/srOnly/srOnly.tsx +3 -3
- package/src/core/utils/virtualList/__workshop__/infiniteList.tsx +1 -1
- package/src/core/utils/virtualList/virtualList.tsx +3 -3
- package/src/css/_assign.ts +3 -0
- package/src/css/_compileStyle.ts +12 -4
- package/src/css/_compileTheme.ts +10 -13
- package/src/css/_composeClassNames.ts +12 -0
- package/src/css/_fromEntries.ts +3 -0
- package/src/css/_getClassNames.ts +9 -0
- package/src/css/_hash.ts +9 -0
- package/src/css/_mergeStyles.ts +1 -1
- package/src/css/_resp.ts +6 -12
- package/src/css/_scopeClassName.ts +9 -0
- package/src/css/_scopeClassNames.ts +12 -0
- package/src/css/_system.style.ts +2 -0
- package/src/css/aspects/border/border.style.ts +2 -2
- package/src/css/aspects/border/border.ts +3 -3
- package/src/css/aspects/border/types.ts +1 -1
- package/src/css/aspects/boxSizing/boxSizing.style.ts +10 -0
- package/src/css/aspects/boxSizing/boxSizing.ts +8 -0
- package/src/css/aspects/boxSizing/index.ts +2 -0
- package/src/css/aspects/boxSizing/types.ts +9 -0
- package/src/css/aspects/display/display.style.ts +8 -8
- package/src/css/aspects/display/display.ts +3 -3
- package/src/css/aspects/display/types.ts +1 -1
- package/src/css/aspects/flex/flex.ts +3 -3
- package/src/css/aspects/flex/types.ts +1 -1
- package/src/css/aspects/flexItem/flex.style.ts +1 -1
- package/src/css/aspects/flexItem/flexItem.ts +3 -3
- package/src/css/aspects/flexItem/types.ts +1 -1
- package/src/css/aspects/font/font.style.ts +33 -22
- package/src/css/aspects/font/font.ts +3 -3
- package/src/css/aspects/font/types.ts +1 -1
- package/src/css/aspects/gap/gap.style.ts +2 -2
- package/src/css/aspects/gap/gap.ts +3 -3
- package/src/css/aspects/gap/types.ts +2 -2
- package/src/css/aspects/grid/grid.ts +3 -3
- package/src/css/aspects/grid/types.ts +1 -1
- package/src/css/aspects/gridItem/gridItem.ts +3 -3
- package/src/css/aspects/gridItem/types.ts +1 -1
- package/src/css/aspects/height/height.ts +3 -3
- package/src/css/aspects/index.ts +1 -0
- package/src/css/aspects/inset/inset.ts +3 -3
- package/src/css/aspects/inset/types.ts +1 -1
- package/src/css/aspects/margin/margin.style.ts +10 -10
- package/src/css/aspects/margin/margin.ts +3 -3
- package/src/css/aspects/margin/types.ts +1 -1
- package/src/css/aspects/maxWidth/maxWidth.style.ts +1 -1
- package/src/css/aspects/maxWidth/maxWidth.ts +4 -3
- package/src/css/aspects/maxWidth/types.ts +2 -2
- package/src/css/aspects/minWidth/minWidth.ts +4 -3
- package/src/css/aspects/minWidth/types.ts +1 -1
- package/src/css/aspects/overflow/overflow.ts +3 -3
- package/src/css/aspects/overflow/types.ts +1 -1
- package/src/css/aspects/padding/padding.style.ts +2 -5
- package/src/css/aspects/padding/padding.ts +3 -3
- package/src/css/aspects/padding/types.ts +2 -2
- package/src/css/aspects/pointerEvents/pointerEvents.ts +3 -3
- package/src/css/aspects/position/position.ts +3 -3
- package/src/css/aspects/position/types.ts +1 -1
- package/src/css/aspects/radius/radius.style.ts +1 -1
- package/src/css/aspects/radius/radius.ts +3 -3
- package/src/css/aspects/radius/types.ts +2 -2
- package/src/css/aspects/shadow/shadow.style.ts +7 -7
- package/src/css/aspects/shadow/shadow.ts +3 -3
- package/src/css/aspects/shadow/types.ts +2 -2
- package/src/css/aspects/textAlign/textAlign.style.ts +1 -1
- package/src/css/aspects/textAlign/textAlign.ts +3 -3
- package/src/css/aspects/textOverflow/textOverflow.ts +3 -3
- package/src/css/aspects/width/types.ts +2 -2
- package/src/css/aspects/width/width.style.ts +1 -1
- package/src/css/aspects/width/width.ts +4 -3
- package/src/css/components/breadcrumbs/breadcrumbs.style.ts +1 -1
- package/src/css/components/breadcrumbs/breadcrumbs.ts +2 -2
- package/src/css/components/dialog/dialog.style.ts +14 -16
- package/src/css/components/dialog/dialog.ts +9 -8
- package/src/css/components/menu/menu.style.ts +2 -2
- package/src/css/components/menu/menu.ts +3 -3
- package/src/css/components/skeleton/skeleton.style.ts +24 -17
- package/src/css/components/skeleton/skeleton.ts +8 -7
- package/src/css/components/skeleton/types.ts +4 -6
- package/src/css/components/toast/toast.style.ts +1 -1
- package/src/css/components/toast/toast.ts +6 -6
- package/src/css/components/tree/tree.style.ts +7 -23
- package/src/css/components/tree/tree.ts +2 -2
- package/src/css/constants.ts +1 -3
- package/src/css/index.ts +3 -5
- package/src/css/prefix/constants.ts +6 -0
- package/src/css/prefix/types.ts +1 -0
- package/src/css/primitives/_arrow/_arrow.style.ts +11 -13
- package/src/css/primitives/_arrow/_arrow.ts +5 -5
- package/src/css/primitives/_input/_input.style.ts +171 -75
- package/src/css/primitives/_input/input.ts +13 -10
- package/src/css/primitives/_input/types.ts +3 -3
- package/src/css/primitives/_selectable/_selectable.style.ts +5 -6
- package/src/css/primitives/_selectable/selectable.ts +4 -3
- package/src/css/primitives/_selectable/types.ts +2 -2
- package/src/css/primitives/avatar/avatar.style.ts +38 -39
- package/src/css/primitives/avatar/avatar.ts +8 -8
- package/src/css/primitives/avatar/types.ts +3 -3
- package/src/css/primitives/badge/badge.style.ts +2 -3
- package/src/css/primitives/badge/badge.ts +7 -3
- package/src/css/primitives/badge/types.ts +2 -2
- package/src/css/primitives/box/box.style.ts +5 -15
- package/src/css/primitives/box/box.ts +7 -9
- package/src/css/primitives/box/types.ts +3 -6
- package/src/css/primitives/button/button.style.ts +189 -162
- package/src/css/primitives/button/button.ts +11 -4
- package/src/css/primitives/button/types.ts +1 -1
- package/src/css/primitives/card/card.style.ts +102 -68
- package/src/css/primitives/card/card.ts +5 -7
- package/src/css/primitives/card/types.ts +2 -2
- package/src/css/primitives/checkbox/checkbox.style.ts +125 -101
- package/src/css/primitives/checkbox/checkbox.ts +3 -3
- package/src/css/primitives/code/code.style.ts +24 -26
- package/src/css/primitives/code/code.ts +7 -3
- package/src/css/primitives/code/types.ts +2 -2
- package/src/css/primitives/container/container.style.ts +1 -1
- package/src/css/primitives/container/container.ts +4 -3
- package/src/css/primitives/container/types.ts +2 -2
- package/src/css/primitives/heading/heading.style.ts +31 -23
- package/src/css/primitives/heading/heading.ts +10 -8
- package/src/css/primitives/heading/types.ts +3 -2
- package/src/css/primitives/kbd/kbd.style.ts +7 -7
- package/src/css/primitives/kbd/kbd.ts +4 -3
- package/src/css/primitives/kbd/types.ts +1 -1
- package/src/css/primitives/label/label.style.ts +27 -24
- package/src/css/primitives/label/label.ts +5 -8
- package/src/css/primitives/label/types.ts +4 -3
- package/src/css/primitives/popover/popover.style.ts +6 -2
- package/src/css/primitives/popover/popover.ts +3 -3
- package/src/css/primitives/radio/radio.style.ts +37 -76
- package/src/css/primitives/radio/radio.ts +2 -2
- package/src/css/primitives/select/select.style.ts +3 -3
- package/src/css/primitives/select/select.ts +5 -5
- package/src/css/primitives/select/types.ts +1 -1
- package/src/css/primitives/spinner/spinner.style.ts +1 -1
- package/src/css/primitives/spinner/spinner.ts +3 -3
- package/src/css/primitives/stack/stack.style.ts +6 -2
- package/src/css/primitives/stack/stack.ts +2 -2
- package/src/css/primitives/switch/switch.style.ts +47 -39
- package/src/css/primitives/switch/switch.ts +6 -6
- package/src/css/primitives/text/text.style.ts +28 -23
- package/src/css/primitives/text/text.ts +5 -8
- package/src/css/primitives/text/types.ts +2 -2
- package/src/css/primitives/textArea/textArea.style.ts +6 -2
- package/src/css/primitives/textArea/textArea.ts +4 -4
- package/src/css/primitives/textArea/types.ts +1 -1
- package/src/css/primitives/textInput/textInput.style.ts +23 -17
- package/src/css/primitives/textInput/textInput.ts +4 -4
- package/src/css/primitives/textInput/types.ts +2 -8
- package/src/css/primitives/token/token.style.ts +4 -4
- package/src/css/primitives/tooltip/tooltip.style.ts +5 -4
- package/src/css/primitives/tooltip/tooltip.ts +3 -3
- package/src/css/renderColor.ts +31 -0
- package/src/css/theme/index.ts +14 -0
- package/src/css/theme/lib/contract/buildVarContract.ts +76 -0
- package/src/css/theme/lib/contract/index.ts +2 -0
- package/src/css/theme/lib/contract/types.ts +15 -0
- package/src/css/theme/resolveTheme.ts +852 -0
- package/src/css/types.ts +26 -910
- package/src/css/utils/srOnly/srOnly.style.ts +1 -1
- package/src/css/utils/srOnly/srOnly.ts +3 -3
- package/src/theme/getScopedTheme.ts +4 -4
- package/src/theme/index.ts +0 -5
- package/src/theme/types.ts +4 -4
- package/src/theme/v0/color/_generic.ts +1 -1
- package/src/theme/v0/color/button.ts +1 -1
- package/src/theme/v0/color/card.ts +1 -1
- package/src/theme/v0/color/color.ts +11 -11
- package/src/theme/v0/color/input.ts +1 -1
- package/src/theme/v0/color/muted.ts +1 -1
- package/src/theme/v0/color/selectable.ts +1 -1
- package/src/theme/v0/color/solid.ts +1 -1
- package/src/theme/v0/color/spot.ts +1 -1
- package/src/theme/v0/styles.ts +1 -1
- package/src/theme/v0/theme.ts +7 -7
- package/src/theme/v2/avatar.ts +1 -1
- package/src/theme/{build → v2/build}/_deprecated/color/_selectable/createSelectableTones.ts +3 -3
- package/src/theme/{build → v2/build}/_deprecated/color/_solid/createSolidTones.ts +2 -2
- package/src/theme/{build → v2/build}/_deprecated/color/button/createButtonModes.ts +7 -2
- package/src/theme/{build → v2/build}/_deprecated/color/button/createButtonTones.ts +4 -4
- package/src/theme/{build → v2/build}/_deprecated/color/card/createCardStates.ts +3 -3
- package/src/theme/{build → v2/build}/_deprecated/color/color.test.ts +1 -1
- package/src/theme/{build → v2/build}/_deprecated/color/defaults.ts +1 -1
- package/src/theme/{build → v2/build}/_deprecated/color/factory.ts +3 -3
- package/src/theme/{build → v2/build}/_deprecated/color/input/createInputModes.ts +7 -2
- package/src/theme/{build → v2/build}/_deprecated/color/muted/createMuted.ts +2 -2
- package/src/theme/{build → v2/build}/_deprecated/color/spot/createSpot.ts +2 -2
- package/src/theme/{build → v2/build}/buildColorTheme.test.ts +3 -1
- package/src/theme/{build → v2/build}/buildColorTheme.ts +24 -24
- package/src/theme/{build → v2/build}/buildTheme.test.ts +10 -8
- package/src/theme/{build → v2/build}/buildTheme.ts +4 -4
- package/src/theme/{build → v2/build}/colorToken/colorToken.ts +2 -2
- package/src/theme/{build → v2/build}/colorToken/compileColorToken.ts +1 -1
- package/src/theme/{build → v2/build}/colorToken/types.ts +2 -2
- package/src/theme/{build → v2/build}/lib/color-fns/blend/mix.ts +1 -1
- package/src/theme/{build → v2/build}/lib/color-fns/blend/multiply.ts +1 -1
- package/src/theme/{build → v2/build}/lib/color-fns/blend/screen.ts +1 -1
- package/src/theme/{build → v2/build}/lib/color-fns/color-fns.test.ts +1 -1
- package/src/theme/{build → v2/build}/lib/color-fns/contrastRatio.ts +5 -2
- package/src/theme/{build → v2/build}/lib/color-fns/convert.ts +1 -1
- package/src/theme/{build → v2/build}/lib/color-fns/parse.ts +1 -1
- package/src/theme/{build → v2/build}/mixThemeColor.test.ts +2 -0
- package/src/theme/{build → v2/build}/mixThemeColor.ts +1 -1
- package/src/theme/{build → v2/build}/renderColorTheme.ts +27 -27
- package/src/theme/{build → v2/build}/renderColorValue.ts +3 -3
- package/src/theme/{build → v2/build}/resolveColorTokens.ts +13 -13
- package/src/theme/v2/color/_helpers.ts +2 -2
- package/src/theme/v2/color/_system.ts +1 -1
- package/src/theme/v2/color/avatar.ts +1 -1
- package/src/theme/v2/color/badge.ts +1 -1
- package/src/theme/v2/color/button.ts +2 -2
- package/src/theme/v2/color/color.ts +7 -7
- package/src/theme/v2/color/input.ts +5 -1
- package/src/theme/v2/color/selectable.ts +2 -2
- package/src/theme/v2/color/state.ts +4 -4
- package/src/theme/{config → v2/config}/helpers.ts +6 -13
- package/src/theme/{config → v2/config}/system.ts +11 -12
- package/src/theme/{config → v2/config}/tokens/color/types.ts +14 -10
- package/src/theme/{config → v2/config}/tokens/index.ts +0 -1
- package/src/theme/{config → v2/config}/tokens/parseTokenValue.test.ts +2 -0
- package/src/theme/{config → v2/config}/tokens/parseTokenValue.ts +2 -2
- package/src/theme/{config → v2/config}/tokens/types.ts +3 -3
- package/src/theme/{config → v2/config}/types.ts +8 -6
- package/src/theme/{defaults → v2/defaults}/colorPalette.ts +1 -1
- package/src/theme/{defaults → v2/defaults}/colorTokens.ts +1 -1
- package/src/theme/{defaults → v2/defaults}/config.ts +1 -1
- package/src/theme/{defaults → v2/defaults}/fonts.ts +1 -1
- package/src/theme/v2/index.ts +2 -0
- package/src/theme/v2/input.ts +1 -1
- package/src/theme/v2/theme.ts +8 -8
- package/src/theme/{_constants.ts → v3/_constants.ts} +6 -3
- package/src/theme/v3/_parseColorToken.ts +185 -0
- package/src/theme/v3/buildTheme_v3.ts +11 -7
- package/src/theme/v3/color/_constants.ts +15 -0
- package/src/theme/v3/color/avatar.ts +14 -0
- package/src/theme/v3/color/card.ts +53 -53
- package/src/theme/v3/color/color.ts +66 -68
- package/src/theme/v3/color/element.ts +8 -8
- package/src/theme/v3/color/index.ts +2 -2
- package/src/theme/v3/color/token.ts +18 -4
- package/src/theme/v3/color/tokens.ts +2 -2
- package/src/theme/v3/defaultTokens.ts +73 -85
- package/src/theme/v3/index.ts +3 -0
- package/src/theme/v3/palette/index.ts +2 -0
- package/src/theme/v3/resolveTokens.ts +65 -65
- package/src/theme/v3/tokens.ts +2 -2
- package/src/theme/v3/types.ts +61 -7
- package/src/theme/versioning/getTheme_v2.ts +3 -3
- package/src/theme/versioning/is_v0.ts +2 -2
- package/src/theme/versioning/is_v2.ts +2 -2
- package/src/theme/versioning/themeColor_v0_v2.ts +2 -2
- package/src/theme/versioning/themeColor_v2_v2_9.ts +1 -1
- package/src/theme/versioning/themeColor_v3_v2.ts +229 -52
- package/src/theme/versioning/v0_v2.ts +3 -3
- package/src/theme/versioning/v2_v0.ts +4 -4
- package/src/theme/versioning/v3_v2.ts +38 -38
- package/dist/ui-palette.css +0 -105
- package/dist/ui-palette.min.css +0 -1
- package/src/css/_comp.test.ts +0 -7
- package/src/css/_comp.ts +0 -11
- package/src/css/_compilePalette.ts +0 -32
- package/src/css/_compileTheme_v3.ts +0 -440
- package/src/css/aspects/flex/flex.style.ts +0 -30
- package/src/css/composeClassNames.ts +0 -19
- package/src/css/primitives/_selectable/__style.ts +0 -117
- package/src/css/primitives/checkbox/__styles.ts +0 -129
- package/src/css/scopeClassName.ts +0 -7
- package/src/css/varNames.ts +0 -607
- package/src/css/vars.ts +0 -520
- package/src/theme/_types.ts +0 -41
- package/src/theme/build/theme.test.ts +0 -27
- package/src/theme/config/tokens/parseTokenKey.test.ts +0 -64
- package/src/theme/config/tokens/parseTokenKey.ts +0 -67
- package/src/theme/v3/buildTheme_v3.test.ts +0 -40
- package/src/theme/v3/color/buildColor_v3.ts +0 -226
- package/src/theme/v3/color/parseColor.test.ts +0 -79
- package/src/theme/v3/color/parseColor.ts +0 -167
- package/src/theme/v3/color/renderColor.test.ts +0 -20
- package/src/theme/v3/color/renderColor.ts +0 -43
- /package/src/{theme/palette → css/prefix}/index.ts +0 -0
- /package/src/theme/{build → v2/build}/_deprecated/color/index.ts +0 -0
- /package/src/theme/{build → v2/build}/colorToken/index.ts +0 -0
- /package/src/theme/{build → v2/build}/index.ts +0 -0
- /package/src/theme/{build → v2/build}/lib/color-fns/blend/index.ts +0 -0
- /package/src/theme/{build → v2/build}/lib/color-fns/index.ts +0 -0
- /package/src/theme/{build → v2/build}/lib/color-fns/rgba.ts +0 -0
- /package/src/theme/{build → v2/build}/lib/color-fns/types.ts +0 -0
- /package/src/theme/{build → v2/build}/lib/isRecord.ts +0 -0
- /package/src/theme/{build → v2/build}/lib/utils.ts +0 -0
- /package/src/theme/{build → v2/build}/merge.ts +0 -0
- /package/src/theme/{config → v2/config}/index.ts +0 -0
- /package/src/theme/{config → v2/config}/tokens/color/index.ts +0 -0
- /package/src/theme/{palette → v3/palette}/constants.ts +0 -0
- /package/src/theme/{palette → v3/palette}/types.ts +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {FontTextSize} from '@sanity/ui/theme'
|
|
1
|
+
import {_composeClassNames, type ResponsiveProp, textSkeleton} from '@sanity/ui/css'
|
|
2
|
+
import type {FontTextSize} from '@sanity/ui/theme'
|
|
3
3
|
|
|
4
|
-
import {Props} from '../../types'
|
|
5
|
-
import {Skeleton, SkeletonElementType, SkeletonOwnProps} from './skeleton'
|
|
4
|
+
import type {Props} from '../../types'
|
|
5
|
+
import {Skeleton, type SkeletonElementType, type SkeletonOwnProps} from './skeleton'
|
|
6
6
|
|
|
7
7
|
/** @public */
|
|
8
8
|
export const DEFAULT_TEXT_SKELETON_ELEMENT = 'div'
|
|
@@ -40,7 +40,7 @@ export function TextSkeleton<
|
|
|
40
40
|
return (
|
|
41
41
|
<Skeleton
|
|
42
42
|
{...rest}
|
|
43
|
-
className={
|
|
43
|
+
className={_composeClassNames(
|
|
44
44
|
className,
|
|
45
45
|
textSkeleton({
|
|
46
46
|
size,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {ResponsiveProp} from '@sanity/ui/css'
|
|
2
|
-
import {FontTextSize, Space} from '@sanity/ui/theme'
|
|
1
|
+
import type {ResponsiveProp} from '@sanity/ui/css'
|
|
2
|
+
import type {FontTextSize, Space, ThemeColorStateToneKey} from '@sanity/ui/theme'
|
|
3
3
|
import {
|
|
4
|
-
ElementType,
|
|
5
|
-
FocusEvent,
|
|
6
|
-
ReactNode,
|
|
4
|
+
type ElementType,
|
|
5
|
+
type FocusEvent,
|
|
6
|
+
type ReactNode,
|
|
7
7
|
useCallback,
|
|
8
8
|
useEffect,
|
|
9
9
|
useImperativeHandle,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
} from 'react'
|
|
12
12
|
|
|
13
13
|
import {Button} from '../../primitives'
|
|
14
|
-
import {
|
|
14
|
+
import type {ComponentType, Props} from '../../types'
|
|
15
15
|
|
|
16
16
|
/** @public */
|
|
17
17
|
export const DEFAULT_TAB_ELEMENT = 'button'
|
|
@@ -29,7 +29,7 @@ export type TabOwnProps = {
|
|
|
29
29
|
'label'?: ReactNode
|
|
30
30
|
'padding'?: ResponsiveProp<Space>
|
|
31
31
|
'selected'?: boolean
|
|
32
|
-
'tone'?:
|
|
32
|
+
'tone'?: ThemeColorStateToneKey
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
/** @public */
|
|
@@ -1,10 +1,17 @@
|
|
|
1
|
-
import {ResponsiveProp} from '@sanity/ui/css'
|
|
2
|
-
import {Space} from '@sanity/ui/theme'
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import {type ResponsiveProp} from '@sanity/ui/css'
|
|
2
|
+
import type {Space} from '@sanity/ui/theme'
|
|
3
|
+
import {
|
|
4
|
+
Children,
|
|
5
|
+
cloneElement,
|
|
6
|
+
type KeyboardEvent,
|
|
7
|
+
type ReactElement,
|
|
8
|
+
useCallback,
|
|
9
|
+
useState,
|
|
10
|
+
} from 'react'
|
|
11
|
+
|
|
12
|
+
import {Flex, type FlexOwnProps} from '../../primitives'
|
|
13
|
+
import type {ComponentType, Props} from '../../types'
|
|
14
|
+
import type {TabProps} from './tab'
|
|
8
15
|
|
|
9
16
|
/** @public */
|
|
10
17
|
export const DEFAULT_TAB_LIST_ELEMENT = 'div'
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {Box, BoxOwnProps} from '../../primitives'
|
|
2
|
-
import {ComponentType, Props} from '../../types'
|
|
1
|
+
import {Box, type BoxOwnProps} from '../../primitives'
|
|
2
|
+
import type {ComponentType, Props} from '../../types'
|
|
3
3
|
|
|
4
4
|
/** @public */
|
|
5
5
|
export const DEFAULT_TAB_PANEL_ELEMENT = 'div'
|
|
@@ -26,9 +26,12 @@ export type TabPanelProps<E extends TabPanelElementType = TabPanelElementType> =
|
|
|
26
26
|
export function TabPanel<E extends TabPanelElementType = typeof DEFAULT_TAB_PANEL_ELEMENT>(
|
|
27
27
|
props: TabPanelProps<E>,
|
|
28
28
|
) {
|
|
29
|
-
const {
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
const {
|
|
30
|
+
as = DEFAULT_TAB_PANEL_ELEMENT,
|
|
31
|
+
children,
|
|
32
|
+
tabIndex,
|
|
33
|
+
...rest
|
|
34
|
+
} = props as TabPanelProps<typeof DEFAULT_TAB_PANEL_ELEMENT>
|
|
32
35
|
|
|
33
36
|
return (
|
|
34
37
|
<Box
|
|
@@ -36,9 +39,9 @@ export function TabPanel<E extends TabPanelElementType = typeof DEFAULT_TAB_PANE
|
|
|
36
39
|
{...rest}
|
|
37
40
|
as={as}
|
|
38
41
|
role="tabpanel"
|
|
39
|
-
tabIndex={
|
|
42
|
+
tabIndex={tabIndex === undefined ? 0 : tabIndex}
|
|
40
43
|
>
|
|
41
|
-
{
|
|
44
|
+
{children}
|
|
42
45
|
</Box>
|
|
43
46
|
)
|
|
44
47
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
import {describe, expect, it, vi} from 'vitest'
|
|
2
2
|
|
|
3
3
|
import {render} from '../../../../test'
|
|
4
4
|
import {ToastContext} from './toastContext'
|
|
5
|
-
import {ToastContextValue} from './types'
|
|
5
|
+
import type {ToastContextValue} from './types'
|
|
6
6
|
import {useToast} from './useToast'
|
|
7
7
|
|
|
8
8
|
describe('components/toast', () => {
|
|
9
9
|
describe('useToast', () => {
|
|
10
10
|
it('should get context value', async () => {
|
|
11
|
-
const log =
|
|
11
|
+
const log = vi.fn()
|
|
12
12
|
|
|
13
13
|
function Debug() {
|
|
14
14
|
const rootToast = useToast()
|
|
@@ -38,7 +38,7 @@ describe('components/toast', () => {
|
|
|
38
38
|
})
|
|
39
39
|
|
|
40
40
|
it('should fail when no context value is provided', async () => {
|
|
41
|
-
const log =
|
|
41
|
+
const log = vi.fn()
|
|
42
42
|
|
|
43
43
|
function Debug() {
|
|
44
44
|
try {
|
|
@@ -66,7 +66,7 @@ describe('components/toast', () => {
|
|
|
66
66
|
})
|
|
67
67
|
|
|
68
68
|
it('should fail when context value is not compatible', async () => {
|
|
69
|
-
const log =
|
|
69
|
+
const log = vi.fn()
|
|
70
70
|
|
|
71
71
|
function Debug() {
|
|
72
72
|
try {
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import {CloseIcon} from '@sanity/icons'
|
|
2
2
|
import {
|
|
3
|
-
RadiusStyleProps,
|
|
3
|
+
type RadiusStyleProps,
|
|
4
4
|
toast,
|
|
5
5
|
toastLoadingBar,
|
|
6
6
|
toastLoadingBarMask,
|
|
7
7
|
toastLoadingBarProgress,
|
|
8
8
|
} from '@sanity/ui/css'
|
|
9
|
-
import {ThemeColorStateToneKey} from '@sanity/ui/theme'
|
|
10
9
|
import {motion, type Variant, type Variants} from 'framer-motion'
|
|
11
|
-
import {ReactNode} from 'react'
|
|
10
|
+
import type {ReactNode} from 'react'
|
|
12
11
|
|
|
13
12
|
import {usePrefersReducedMotion} from '../../hooks/usePrefersReducedMotion'
|
|
14
13
|
import {Box, Button, Card, Flex, Stack, Text} from '../../primitives'
|
|
15
|
-
import {
|
|
14
|
+
import type {ComponentType, Props} from '../../types'
|
|
16
15
|
|
|
17
16
|
/** @public */
|
|
18
17
|
export const DEFAULT_TOAST_ELEMENT = 'li'
|
|
@@ -46,14 +45,14 @@ const STATUS_CARD_TONE = {
|
|
|
46
45
|
warning: 'caution',
|
|
47
46
|
success: 'positive',
|
|
48
47
|
info: 'neutral',
|
|
49
|
-
}
|
|
48
|
+
} as const
|
|
50
49
|
|
|
51
50
|
const BUTTON_TONE = {
|
|
52
51
|
error: 'critical',
|
|
53
52
|
warning: 'caution',
|
|
54
53
|
success: 'positive',
|
|
55
54
|
info: 'neutral',
|
|
56
|
-
}
|
|
55
|
+
} as const
|
|
57
56
|
|
|
58
57
|
// Support pattern used by Sanity Studio, that works around the lack of `duration: Infinity` support in older @sanity/ui versions
|
|
59
58
|
// https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value
|
|
@@ -118,7 +117,7 @@ export function Toast<E extends ToastElementType = typeof DEFAULT_TOAST_ELEMENT>
|
|
|
118
117
|
>
|
|
119
118
|
<MotionFlex align="flex-start" variants={content} transition={transition}>
|
|
120
119
|
<Flex flex={1} overflowX="auto" padding={3}>
|
|
121
|
-
<Stack
|
|
120
|
+
<Stack gap={3}>
|
|
122
121
|
{title && (
|
|
123
122
|
<Text size={1} weight="medium">
|
|
124
123
|
{title}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'
|
|
2
|
-
import {ToastContextValue} from './types'
|
|
2
|
+
import type {ToastContextValue} from './types'
|
|
3
3
|
|
|
4
4
|
export const ToastContext = createGlobalScopedContext<ToastContextValue | null>(
|
|
5
5
|
'@sanity/ui/context/toast',
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {GapStyleProps, PaddingStyleProps, toastLayer} from '@sanity/ui/css'
|
|
1
|
+
import {type GapStyleProps, type PaddingStyleProps, toastLayer} from '@sanity/ui/css'
|
|
2
2
|
|
|
3
3
|
import {Grid} from '../../primitives/grid'
|
|
4
|
-
import {ComponentType, Props} from '../../types'
|
|
4
|
+
import type {ComponentType, Props} from '../../types'
|
|
5
5
|
import {useLayer} from '../../utils'
|
|
6
6
|
|
|
7
7
|
/** @internal */
|
|
@@ -7,7 +7,7 @@ import {Toast} from './toast'
|
|
|
7
7
|
import {ToastContext} from './toastContext'
|
|
8
8
|
import {ToastLayer, type ToastLayerProps} from './toastLayer'
|
|
9
9
|
import {generateToastId} from './toastState'
|
|
10
|
-
import {ToastContextValue, ToastParams} from './types'
|
|
10
|
+
import type {ToastContextValue, ToastParams} from './types'
|
|
11
11
|
|
|
12
12
|
type ToastState = {
|
|
13
13
|
dismiss: () => void
|
|
@@ -2,7 +2,7 @@ import {useContext} from 'react'
|
|
|
2
2
|
|
|
3
3
|
import {isRecord} from '../../lib/isRecord'
|
|
4
4
|
import {ToastContext} from './toastContext'
|
|
5
|
-
import {ToastContextValue} from './types'
|
|
5
|
+
import type {ToastContextValue} from './types'
|
|
6
6
|
|
|
7
7
|
/** @public */
|
|
8
8
|
export function useToast(): ToastContextValue {
|
|
@@ -38,7 +38,7 @@ export default function BasicStory() {
|
|
|
38
38
|
</Box>
|
|
39
39
|
<Wrapper>
|
|
40
40
|
<TextInput />
|
|
41
|
-
<Tree
|
|
41
|
+
<Tree gap={1} onFocus={handleFocus} ref={ref}>
|
|
42
42
|
<TreeItem data-testid="fruit" onClick={handleClick} expanded text="Fruit">
|
|
43
43
|
<TreeItem
|
|
44
44
|
data-testid="oranges"
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {ResponsiveProp} from '@sanity/ui/css'
|
|
2
|
-
import {Space} from '@sanity/ui/theme'
|
|
1
|
+
import type {ResponsiveProp} from '@sanity/ui/css'
|
|
2
|
+
import type {Space} from '@sanity/ui/theme'
|
|
3
3
|
import {
|
|
4
|
-
FocusEvent,
|
|
5
|
-
KeyboardEvent,
|
|
4
|
+
type FocusEvent,
|
|
5
|
+
type KeyboardEvent,
|
|
6
6
|
useCallback,
|
|
7
7
|
useEffect,
|
|
8
8
|
useImperativeHandle,
|
|
@@ -12,10 +12,10 @@ import {
|
|
|
12
12
|
} from 'react'
|
|
13
13
|
|
|
14
14
|
import {Stack} from '../../primitives'
|
|
15
|
-
import {ComponentType, Props} from '../../types'
|
|
15
|
+
import type {ComponentType, Props} from '../../types'
|
|
16
16
|
import {_findNextItemElement, _findPrevItemElement, _focusItemElement} from './helpers'
|
|
17
17
|
import {TreeContext} from './treeContext'
|
|
18
|
-
import {TreeContextValue, TreeState} from './types'
|
|
18
|
+
import type {TreeContextValue, TreeState} from './types'
|
|
19
19
|
|
|
20
20
|
/** @beta */
|
|
21
21
|
export const DEFAULT_TREE_ELEMENT = 'div'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {memo, ReactElement} from 'react'
|
|
1
|
+
import {memo, type ReactElement} from 'react'
|
|
2
2
|
|
|
3
3
|
import {Stack} from '../../primitives'
|
|
4
|
-
import {ComponentType, Props} from '../../types'
|
|
4
|
+
import type {ComponentType, Props} from '../../types'
|
|
5
5
|
import {useTree} from './useTree'
|
|
6
6
|
|
|
7
7
|
/** @public */
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {ToggleArrowRightIcon} from '@sanity/icons'
|
|
2
|
-
import {
|
|
3
|
-
import {FontTextSize, Space, ThemeFontWeightKey} from '@sanity/ui/theme'
|
|
2
|
+
import {_composeClassNames, type ResponsiveProp, treeItem, vars} from '@sanity/ui/css'
|
|
3
|
+
import type {FontTextSize, Space, ThemeFontWeightKey} from '@sanity/ui/theme'
|
|
4
4
|
import {
|
|
5
|
-
ElementType,
|
|
6
|
-
KeyboardEvent,
|
|
7
|
-
MouseEvent,
|
|
8
|
-
MouseEventHandler,
|
|
9
|
-
ReactNode,
|
|
10
|
-
Ref,
|
|
5
|
+
type ElementType,
|
|
6
|
+
type KeyboardEvent,
|
|
7
|
+
type MouseEvent,
|
|
8
|
+
type MouseEventHandler,
|
|
9
|
+
type ReactNode,
|
|
10
|
+
type Ref,
|
|
11
11
|
useCallback,
|
|
12
12
|
useEffect,
|
|
13
13
|
useId,
|
|
@@ -15,9 +15,9 @@ import {
|
|
|
15
15
|
useRef,
|
|
16
16
|
} from 'react'
|
|
17
17
|
|
|
18
|
-
import {Box, BoxProps, CardOwnProps, Flex, Text} from '../../primitives'
|
|
19
|
-
import {Selectable, SelectableElementType} from '../../primitives/_selectable'
|
|
20
|
-
import {ComponentType, Props} from '../../types'
|
|
18
|
+
import {Box, type BoxProps, type CardOwnProps, Flex, Text} from '../../primitives'
|
|
19
|
+
import {Selectable, type SelectableElementType} from '../../primitives/_selectable'
|
|
20
|
+
import type {ComponentType, Props} from '../../types'
|
|
21
21
|
import {TreeContext} from './treeContext'
|
|
22
22
|
import {TreeGroup} from './treeGroup'
|
|
23
23
|
import {useTree} from './useTree'
|
|
@@ -166,7 +166,7 @@ export function TreeItem<E extends TreeItemElementType = typeof DEFAULT_TREE_ITE
|
|
|
166
166
|
data-ui="TreeItem"
|
|
167
167
|
{...(rest as BoxProps<'li'>)}
|
|
168
168
|
as="li"
|
|
169
|
-
className={
|
|
169
|
+
className={_composeClassNames(className, treeItem())}
|
|
170
170
|
onClick={handleClick}
|
|
171
171
|
ref={rootRef as Ref<HTMLLIElement>}
|
|
172
172
|
role="none"
|
|
@@ -182,7 +182,7 @@ export function TreeItem<E extends TreeItemElementType = typeof DEFAULT_TREE_ITE
|
|
|
182
182
|
role="treeitem"
|
|
183
183
|
tabIndex={tabIndex}
|
|
184
184
|
style={{
|
|
185
|
-
paddingLeft: `calc(
|
|
185
|
+
paddingLeft: `calc(${vars.space[2]} * ${tree.level})`,
|
|
186
186
|
}}
|
|
187
187
|
>
|
|
188
188
|
{content}
|
|
@@ -203,7 +203,7 @@ export function TreeItem<E extends TreeItemElementType = typeof DEFAULT_TREE_ITE
|
|
|
203
203
|
data-tree-key={itemKey}
|
|
204
204
|
{...(rest as BoxProps<'a'>)}
|
|
205
205
|
aria-expanded={expanded}
|
|
206
|
-
className={
|
|
206
|
+
className={_composeClassNames(className, treeItem())}
|
|
207
207
|
onClick={handleClick}
|
|
208
208
|
onKeyDown={handleKeyDown}
|
|
209
209
|
ref={rootRef as Ref<HTMLAnchorElement>}
|
|
@@ -216,7 +216,7 @@ export function TreeItem<E extends TreeItemElementType = typeof DEFAULT_TREE_ITE
|
|
|
216
216
|
data-ui="TreeItem__box"
|
|
217
217
|
radius={radius}
|
|
218
218
|
style={{
|
|
219
|
-
paddingLeft: `calc(
|
|
219
|
+
paddingLeft: `calc(${vars.space[2]} * ${tree.level})`,
|
|
220
220
|
}}
|
|
221
221
|
>
|
|
222
222
|
{content}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
/** @jest-environment jsdom */
|
|
2
|
-
|
|
3
1
|
import {render, screen} from '@testing-library/react'
|
|
4
2
|
import userEvent from '@testing-library/user-event'
|
|
5
|
-
import {MutableRefObject, useEffect, useRef, useState} from 'react'
|
|
3
|
+
import {type MutableRefObject, useEffect, useRef, useState} from 'react'
|
|
4
|
+
import {describe, expect, it, vi} from 'vitest'
|
|
6
5
|
|
|
7
6
|
import {useClickOutside} from './useClickOutside'
|
|
8
7
|
|
|
@@ -16,7 +15,7 @@ describe('useClickOutside', () => {
|
|
|
16
15
|
*/
|
|
17
16
|
it('calls the handler when clicking outside of the array of elements', async () => {
|
|
18
17
|
const user = userEvent.setup()
|
|
19
|
-
const handler =
|
|
18
|
+
const handler = vi.fn()
|
|
20
19
|
|
|
21
20
|
const TestComponent = () => {
|
|
22
21
|
const [buttonElement, setButtonElement] = useState<HTMLButtonElement | null>(null)
|
|
@@ -45,7 +44,7 @@ describe('useClickOutside', () => {
|
|
|
45
44
|
|
|
46
45
|
it('the elements array flattens nested arrays one level deep', async () => {
|
|
47
46
|
const user = userEvent.setup()
|
|
48
|
-
const handler =
|
|
47
|
+
const handler = vi.fn()
|
|
49
48
|
|
|
50
49
|
const TestComponent = () => {
|
|
51
50
|
const [buttonElement, setButtonElement] = useState<HTMLButtonElement | null>(null)
|
|
@@ -74,7 +73,7 @@ describe('useClickOutside', () => {
|
|
|
74
73
|
|
|
75
74
|
it('it can set a boundary to scope outside click events', async () => {
|
|
76
75
|
const user = userEvent.setup()
|
|
77
|
-
const handler =
|
|
76
|
+
const handler = vi.fn()
|
|
78
77
|
|
|
79
78
|
const TestComponent = () => {
|
|
80
79
|
const [buttonElement, setButtonElement] = useState<HTMLButtonElement | null>(null)
|
|
@@ -114,7 +113,7 @@ describe('useClickOutside', () => {
|
|
|
114
113
|
* Thus it makes sense to unit test it to ensure it works as expected and we don't accidentally break backwards compatibility.
|
|
115
114
|
*/
|
|
116
115
|
const user = userEvent.setup()
|
|
117
|
-
const handler =
|
|
116
|
+
const handler = vi.fn()
|
|
118
117
|
|
|
119
118
|
const TestComponent = (props: {open?: true}) => {
|
|
120
119
|
const {open = false} = props
|
|
@@ -155,7 +154,7 @@ describe('useClickOutside', () => {
|
|
|
155
154
|
* Since we don't want people to use the `setElement` pattern, test that userland can handle dynamically changing elements arrays
|
|
156
155
|
*/
|
|
157
156
|
const user = userEvent.setup()
|
|
158
|
-
const handler =
|
|
157
|
+
const handler = vi.fn()
|
|
159
158
|
|
|
160
159
|
const TestComponent = (props: {open?: true}) => {
|
|
161
160
|
const {open = false} = props
|
|
@@ -199,7 +198,7 @@ describe('useClickOutside', () => {
|
|
|
199
198
|
*/
|
|
200
199
|
|
|
201
200
|
const user = userEvent.setup()
|
|
202
|
-
let handler =
|
|
201
|
+
let handler = vi.fn()
|
|
203
202
|
|
|
204
203
|
/**
|
|
205
204
|
* Using refs in the `useClickOutside` elements array is dangerous,
|
|
@@ -229,7 +228,7 @@ describe('useClickOutside', () => {
|
|
|
229
228
|
* If a mixture of refs and state is used it can appear like it's working correctly,
|
|
230
229
|
* but this is a side-effect, not an indication it's safe.
|
|
231
230
|
*/
|
|
232
|
-
handler =
|
|
231
|
+
handler = vi.fn()
|
|
233
232
|
TestComponent = () => {
|
|
234
233
|
const buttonRef = useRef<HTMLButtonElement | null>(null)
|
|
235
234
|
const [popoverElement, setPopoverElement] = useState<HTMLDivElement | null>(null)
|
|
@@ -254,7 +253,7 @@ describe('useClickOutside', () => {
|
|
|
254
253
|
/**
|
|
255
254
|
* Unrelated state updates can create the same false impression of safety.
|
|
256
255
|
*/
|
|
257
|
-
handler =
|
|
256
|
+
handler = vi.fn()
|
|
258
257
|
TestComponent = () => {
|
|
259
258
|
const buttonRef = useRef<HTMLButtonElement | null>(null)
|
|
260
259
|
const popoverRef = useRef<HTMLDivElement | null>(null)
|
|
@@ -306,7 +305,7 @@ describe('useClickOutside', () => {
|
|
|
306
305
|
|
|
307
306
|
return elements
|
|
308
307
|
}
|
|
309
|
-
handler =
|
|
308
|
+
handler = vi.fn()
|
|
310
309
|
TestComponent = () => {
|
|
311
310
|
const buttonRef = useRef<HTMLButtonElement | null>(null)
|
|
312
311
|
const popoverRef = useRef<HTMLDivElement | null>(null)
|
|
@@ -337,7 +336,7 @@ describe('useClickOutside', () => {
|
|
|
337
336
|
*/
|
|
338
337
|
|
|
339
338
|
const user = userEvent.setup()
|
|
340
|
-
let handler =
|
|
339
|
+
let handler = vi.fn()
|
|
341
340
|
|
|
342
341
|
/**
|
|
343
342
|
* Using refs in the `useClickOutside` elements array is dangerous,
|
|
@@ -368,7 +367,7 @@ describe('useClickOutside', () => {
|
|
|
368
367
|
* If a mixture of refs and state is used it can appear like it's working correctly,
|
|
369
368
|
* but this is a side-effect, not an indication it's safe.
|
|
370
369
|
*/
|
|
371
|
-
handler =
|
|
370
|
+
handler = vi.fn()
|
|
372
371
|
TestComponent = () => {
|
|
373
372
|
const buttonRef = useRef<HTMLButtonElement | null>(null)
|
|
374
373
|
const [popoverElement, setPopoverElement] = useState<HTMLDivElement | null>(null)
|
|
@@ -398,7 +397,7 @@ describe('useClickOutside', () => {
|
|
|
398
397
|
/**
|
|
399
398
|
* Unrelated state updates can create the same false impression of safety.
|
|
400
399
|
*/
|
|
401
|
-
handler =
|
|
400
|
+
handler = vi.fn()
|
|
402
401
|
TestComponent = () => {
|
|
403
402
|
const buttonRef = useRef<HTMLButtonElement | null>(null)
|
|
404
403
|
const popoverRef = useRef<HTMLDivElement | null>(null)
|
|
@@ -451,7 +450,7 @@ describe('useClickOutside', () => {
|
|
|
451
450
|
|
|
452
451
|
return element
|
|
453
452
|
}
|
|
454
|
-
handler =
|
|
453
|
+
handler = vi.fn()
|
|
455
454
|
TestComponent = () => {
|
|
456
455
|
const buttonRef = useRef<HTMLButtonElement | null>(null)
|
|
457
456
|
const popoverRef = useRef<HTMLDivElement | null>(null)
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
/** @jest-environment jsdom */
|
|
2
|
-
|
|
3
1
|
import {render, screen} from '@testing-library/react'
|
|
4
2
|
import userEvent from '@testing-library/user-event'
|
|
5
3
|
import {useRef} from 'react'
|
|
4
|
+
import {describe, expect, it, vi} from 'vitest'
|
|
6
5
|
|
|
7
6
|
import {useClickOutsideEvent} from './useClickOutsideEvent'
|
|
8
7
|
|
|
@@ -13,7 +12,7 @@ describe('useClickOutsideEvent', () => {
|
|
|
13
12
|
|
|
14
13
|
it('calls the handler when clicking outside of the array of elements', async () => {
|
|
15
14
|
const user = userEvent.setup()
|
|
16
|
-
const handler =
|
|
15
|
+
const handler = vi.fn()
|
|
17
16
|
|
|
18
17
|
const TestComponent = () => {
|
|
19
18
|
const buttonRef = useRef<HTMLButtonElement | null>(null)
|
|
@@ -42,7 +41,7 @@ describe('useClickOutsideEvent', () => {
|
|
|
42
41
|
|
|
43
42
|
it('the elements array flattens nested arrays one level deep', async () => {
|
|
44
43
|
const user = userEvent.setup()
|
|
45
|
-
const handler =
|
|
44
|
+
const handler = vi.fn()
|
|
46
45
|
|
|
47
46
|
const TestComponent = () => {
|
|
48
47
|
const buttonRef = useRef<HTMLButtonElement | null>(null)
|
|
@@ -76,7 +75,7 @@ describe('useClickOutsideEvent', () => {
|
|
|
76
75
|
|
|
77
76
|
it('it can set a boundary to scope outside click events', async () => {
|
|
78
77
|
const user = userEvent.setup()
|
|
79
|
-
const handler =
|
|
78
|
+
const handler = vi.fn()
|
|
80
79
|
|
|
81
80
|
const TestComponent = () => {
|
|
82
81
|
const buttonRef = useRef<HTMLButtonElement | null>(null)
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
/** @jest-environment jsdom */
|
|
2
|
-
|
|
3
1
|
import {act, renderHook} from '@testing-library/react'
|
|
2
|
+
import {describe, expect, it, vi} from 'vitest'
|
|
4
3
|
|
|
5
4
|
import {useDelayedState} from './useDelayedState'
|
|
6
5
|
|
|
@@ -16,7 +15,7 @@ describe('useDelayedState', () => {
|
|
|
16
15
|
})
|
|
17
16
|
|
|
18
17
|
it('should update state after delay if delay is provided', async () => {
|
|
19
|
-
|
|
18
|
+
vi.useFakeTimers()
|
|
20
19
|
const {result} = renderHook(() => useDelayedState(false))
|
|
21
20
|
const [, setState] = result.current
|
|
22
21
|
|
|
@@ -25,12 +24,12 @@ describe('useDelayedState', () => {
|
|
|
25
24
|
})
|
|
26
25
|
expect(result.current[0]).toBe(false)
|
|
27
26
|
act(() => {
|
|
28
|
-
|
|
27
|
+
vi.advanceTimersByTime(500)
|
|
29
28
|
})
|
|
30
29
|
expect(result.current[0]).toBe(false)
|
|
31
30
|
|
|
32
31
|
act(() => {
|
|
33
|
-
|
|
32
|
+
vi.advanceTimersByTime(500)
|
|
34
33
|
})
|
|
35
34
|
|
|
36
35
|
expect(result.current[0]).toBe(true)
|
|
@@ -56,12 +55,12 @@ describe('useDelayedState', () => {
|
|
|
56
55
|
})
|
|
57
56
|
expect(result.current[0]).toBe(false)
|
|
58
57
|
|
|
59
|
-
|
|
58
|
+
vi.advanceTimersByTime(500)
|
|
60
59
|
|
|
61
60
|
act(() => {
|
|
62
61
|
setState(false)
|
|
63
62
|
})
|
|
64
|
-
|
|
63
|
+
vi.advanceTimersByTime(600)
|
|
65
64
|
// Even after 1.1 seconds, the state should continue being false, because it was cancelled by a next setState call
|
|
66
65
|
expect(result.current[0]).toBe(false)
|
|
67
66
|
})
|