@sanity/ui 2.6.3 → 2.6.4-canary.1

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.
Files changed (35) hide show
  1. package/dist/index.d.mts +9 -9
  2. package/dist/index.d.ts +9 -9
  3. package/dist/index.esm.js +37 -37
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/index.js +37 -38
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +37 -37
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/theme.d.mts +14 -14
  10. package/dist/theme.d.ts +14 -14
  11. package/dist/theme.esm.js.map +1 -1
  12. package/dist/theme.js.map +1 -1
  13. package/dist/theme.mjs.map +1 -1
  14. package/package.json +52 -59
  15. package/src/core/__workshop__/constants.ts +36 -36
  16. package/src/core/components/autocomplete/autocomplete.tsx +1 -1
  17. package/src/core/components/dialog/styles.ts +8 -8
  18. package/src/core/components/menu/menuButton.tsx +10 -10
  19. package/src/core/components/tab/tab.tsx +8 -8
  20. package/src/core/components/tab/tabPanel.tsx +1 -1
  21. package/src/core/primitives/avatar/styles.ts +42 -42
  22. package/src/core/primitives/badge/styles.ts +2 -2
  23. package/src/core/primitives/button/styles.ts +4 -4
  24. package/src/core/primitives/inline/styles.ts +2 -2
  25. package/src/core/primitives/popover/constants.ts +4 -4
  26. package/src/core/primitives/stack/styles.ts +2 -2
  27. package/src/core/primitives/tooltip/__workshop__/customPortal.tsx +1 -1
  28. package/src/core/primitives/tooltip/constants.ts +4 -4
  29. package/src/core/primitives/tooltip/tooltip.tsx +51 -36
  30. package/src/core/styles/font/responsiveFont.ts +8 -8
  31. package/src/core/theme/__workshop__/debug/story.tsx +11 -11
  32. package/src/core/utils/portal/portalProvider.tsx +5 -10
  33. package/src/theme/build/buildColorTheme.test.ts +13 -13
  34. package/src/theme/config/tokens/color/types.ts +14 -14
  35. package/src/theme/defaults/colorTokens.ts +36 -36
package/dist/index.d.mts CHANGED
@@ -2069,7 +2069,7 @@ export declare interface TabPanelProps extends BoxProps {
2069
2069
  * The `id` of the correlating `Tab` component.
2070
2070
  */
2071
2071
  'aria-labelledby': string
2072
- id: string
2072
+ 'id': string
2073
2073
  }
2074
2074
 
2075
2075
  /**
@@ -2080,14 +2080,14 @@ export declare interface TabProps {
2080
2080
  * The `id` of the correlating `TabPanel` component.
2081
2081
  */
2082
2082
  'aria-controls': string
2083
- id: string
2084
- icon?: React.ElementType | React.ReactNode
2085
- focused?: boolean
2086
- fontSize?: number | number[]
2087
- label?: React.ReactNode
2088
- padding?: number | number[]
2089
- selected?: boolean
2090
- tone?: ButtonTone
2083
+ 'id': string
2084
+ 'icon'?: React.ElementType | React.ReactNode
2085
+ 'focused'?: boolean
2086
+ 'fontSize'?: number | number[]
2087
+ 'label'?: React.ReactNode
2088
+ 'padding'?: number | number[]
2089
+ 'selected'?: boolean
2090
+ 'tone'?: ButtonTone
2091
2091
  }
2092
2092
 
2093
2093
  /**
package/dist/index.d.ts CHANGED
@@ -2069,7 +2069,7 @@ export declare interface TabPanelProps extends BoxProps {
2069
2069
  * The `id` of the correlating `Tab` component.
2070
2070
  */
2071
2071
  'aria-labelledby': string
2072
- id: string
2072
+ 'id': string
2073
2073
  }
2074
2074
 
2075
2075
  /**
@@ -2080,14 +2080,14 @@ export declare interface TabProps {
2080
2080
  * The `id` of the correlating `TabPanel` component.
2081
2081
  */
2082
2082
  'aria-controls': string
2083
- id: string
2084
- icon?: React.ElementType | React.ReactNode
2085
- focused?: boolean
2086
- fontSize?: number | number[]
2087
- label?: React.ReactNode
2088
- padding?: number | number[]
2089
- selected?: boolean
2090
- tone?: ButtonTone
2083
+ 'id': string
2084
+ 'icon'?: React.ElementType | React.ReactNode
2085
+ 'focused'?: boolean
2086
+ 'fontSize'?: number | number[]
2087
+ 'label'?: React.ReactNode
2088
+ 'padding'?: number | number[]
2089
+ 'selected'?: boolean
2090
+ 'tone'?: ButtonTone
2091
2091
  }
2092
2092
 
2093
2093
  /**
package/dist/index.esm.js CHANGED
@@ -8,6 +8,7 @@ import Refractor from "react-refractor";
8
8
  import { detectOverflow, flip, offset, shift, arrow, hide, useFloating, autoUpdate } from "@floating-ui/react-dom";
9
9
  import { motion, AnimatePresence } from "framer-motion";
10
10
  import { createPortal } from "react-dom";
11
+ import { useEffectEvent } from "use-effect-event";
11
12
  import { getTheme_v2 as getTheme_v2$1 } from "./_legacy/getTheme_v2.esm.js";
12
13
  const createColorTheme = createColorTheme$1, hexToRgb = hexToRgb$1, hslToRgb = hslToRgb$1, multiply = multiply$1, parseColor = parseColor$1, rgbToHex = rgbToHex$1, rgbToHsl = rgbToHsl$1, rgba = rgba$1, screen = screen$1, studioTheme = buildTheme(), EMPTY_ARRAY = [], EMPTY_RECORD = {}, POPOVER_MOTION_CONTENT_OPACITY_PROPERTY = "--motion-content-opacity", POPOVER_MOTION_PROPS = {
13
14
  initial: {
@@ -3069,21 +3070,25 @@ function _isEqual(objA, objB) {
3069
3070
  const keysA = Object.keys(objA), keysB = Object.keys(objB);
3070
3071
  return keysA.length !== keysB.length ? !1 : keysA.every((key2) => objA[key2] === objB[key2]);
3071
3072
  }
3073
+ function useMounted() {
3074
+ return useSyncExternalStore(
3075
+ subscribe,
3076
+ () => !0,
3077
+ () => !1
3078
+ );
3079
+ }
3080
+ const subscribe = () => () => {
3081
+ };
3072
3082
  function PortalProvider(props) {
3073
- const { boundaryElement, children, element, __unstable_elements: elementsProp } = props, elements = useUnique(elementsProp), fallbackElement = useSyncExternalStore(
3074
- emptySubscribe$1,
3075
- () => document.body,
3076
- () => null
3077
- ), value = useMemo(() => ({
3083
+ const { boundaryElement, children, element, __unstable_elements: elementsProp } = props, elements = useUnique(elementsProp), mounted = useMounted(), value = useMemo(() => ({
3078
3084
  version: 0,
3079
3085
  boundaryElement: boundaryElement || null,
3080
- element: element || fallbackElement,
3086
+ element: element || mounted ? document.body : null,
3081
3087
  elements
3082
- }), [boundaryElement, element, elements, fallbackElement]);
3088
+ }), [boundaryElement, element, elements, mounted]);
3083
3089
  return /* @__PURE__ */ jsx(PortalContext.Provider, { value, children });
3084
3090
  }
3085
- const emptySubscribe$1 = () => () => {
3086
- }, Root$i = styled.div`
3091
+ const Root$i = styled.div`
3087
3092
  display: block;
3088
3093
  width: 0;
3089
3094
  height: 0;
@@ -4360,18 +4365,16 @@ const Root$a = styled(Layer)`
4360
4365
  ...restProps
4361
4366
  } = props, animate = usePrefersReducedMotion() ? !1 : _animate, fallbackPlacements = useArrayProp(fallbackPlacementsProp), ref = useRef(null), [referenceElement, setReferenceElement] = useState(null), arrowRef = useRef(null), rootBoundary = "viewport";
4362
4367
  useImperativeHandle(forwardedRef, () => ref.current);
4363
- const portal = usePortal(), portalElement = typeof portalProp == "string" ? ((_c = portal.elements) == null ? void 0 : _c[portalProp]) || null : portal.element, documentBodyOffsetWidth = useSyncExternalStore(
4364
- emptySubscribe,
4365
- () => document.body.offsetWidth,
4366
- // We don't actually know what the width of the body is during SSR, so we'll just assume it's 800px or larger
4367
- () => 800
4368
- ), tooltipWidth = useMemo(() => {
4368
+ const portal = usePortal(), portalElement = typeof portalProp == "string" ? ((_c = portal.elements) == null ? void 0 : _c[portalProp]) || null : portal.element, mounted = useMounted(), tooltipWidth = useMemo(() => {
4369
4369
  const availableWidths = [
4370
4370
  ...boundaryElement ? [boundaryElement.offsetWidth] : [],
4371
- (portalElement == null ? void 0 : portalElement.offsetWidth) || documentBodyOffsetWidth
4371
+ portalElement != null && portalElement.offsetWidth || mounted ? document.body.offsetWidth : (
4372
+ // We don't actually know what the width of the body is during SSR, so we'll just assume it's 800px or larger
4373
+ 800
4374
+ )
4372
4375
  ];
4373
4376
  return Math.min(...availableWidths) - DEFAULT_TOOLTIP_PADDING * 2;
4374
- }, [boundaryElement, documentBodyOffsetWidth, portalElement == null ? void 0 : portalElement.offsetWidth]), middleware = useMemo(() => {
4377
+ }, [boundaryElement, mounted, portalElement]), middleware = useMemo(() => {
4375
4378
  const ret = [];
4376
4379
  return ret.push(
4377
4380
  flip({
@@ -4443,14 +4446,6 @@ const Root$a = styled(Layer)`
4443
4446
  [childProp == null ? void 0 : childProp.props, handleIsOpenChange]
4444
4447
  );
4445
4448
  useEffect(() => {
4446
- if (!showTooltip) return;
4447
- function handleWindowMouseMove(event) {
4448
- referenceElement && (referenceElement === event.target || event.target instanceof Node && referenceElement.contains(event.target) || (handleIsOpenChange(!1), window.removeEventListener("mousemove", handleWindowMouseMove)));
4449
- }
4450
- return window.addEventListener("mousemove", handleWindowMouseMove), () => {
4451
- window.removeEventListener("mousemove", handleWindowMouseMove);
4452
- };
4453
- }, [showTooltip, referenceElement, handleIsOpenChange]), useEffect(() => {
4454
4449
  disabled && showTooltip && handleIsOpenChange(!1);
4455
4450
  }, [disabled, handleIsOpenChange, showTooltip]), useEffect(() => {
4456
4451
  !content && showTooltip && handleIsOpenChange(!1);
@@ -4462,7 +4457,7 @@ const Root$a = styled(Layer)`
4462
4457
  return window.addEventListener("keydown", handleWindowKeyDown), () => {
4463
4458
  window.removeEventListener("keydown", handleWindowKeyDown);
4464
4459
  };
4465
- }, [handleIsOpenChange, showTooltip]);
4460
+ }, [handleIsOpenChange, showTooltip]), useCloseOnMouseLeave({ handleIsOpenChange, referenceElement, showTooltip });
4466
4461
  const setArrow = useCallback(
4467
4462
  (arrowEl) => {
4468
4463
  arrowRef.current = arrowEl, update();
@@ -4546,8 +4541,21 @@ const Root$a = styled(Layer)`
4546
4541
  ),
4547
4542
  child
4548
4543
  ] });
4549
- }), emptySubscribe = () => () => {
4550
- }, Root$9 = styled.div`
4544
+ });
4545
+ function useCloseOnMouseLeave({
4546
+ handleIsOpenChange,
4547
+ referenceElement,
4548
+ showTooltip
4549
+ }) {
4550
+ const handleWindowMouseMove = useEffectEvent((event) => {
4551
+ referenceElement && (referenceElement === event.target || event.target instanceof Node && referenceElement.contains(event.target) || handleIsOpenChange(!1));
4552
+ });
4553
+ useEffect(() => {
4554
+ if (showTooltip)
4555
+ return window.addEventListener("mousemove", handleWindowMouseMove), () => window.removeEventListener("mousemove", handleWindowMouseMove);
4556
+ }, [handleWindowMouseMove, showTooltip]);
4557
+ }
4558
+ const Root$9 = styled.div`
4551
4559
  line-height: 0;
4552
4560
  `, ListBox = styled(Box)`
4553
4561
  & > ul {
@@ -6242,15 +6250,7 @@ function Toast(props) {
6242
6250
  }
6243
6251
  );
6244
6252
  }
6245
- function useMounted() {
6246
- return useSyncExternalStore(
6247
- subscribe,
6248
- () => !0,
6249
- () => !1
6250
- );
6251
- }
6252
- const subscribe = () => () => {
6253
- }, key$1 = Symbol.for("@sanity/ui/context/toast"), ToastContext = createGlobalScopedContext(key$1, null), Root$1 = styled(Layer)`
6253
+ const key$1 = Symbol.for("@sanity/ui/context/toast"), ToastContext = createGlobalScopedContext(key$1, null), Root$1 = styled(Layer)`
6254
6254
  position: fixed;
6255
6255
  top: 0;
6256
6256
  left: 0;