@sanity/ui 2.3.6-0 → 2.3.6-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 (44) hide show
  1. package/dist/index.compiled.mjs +7073 -0
  2. package/dist/index.compiled.mjs.map +1 -0
  3. package/dist/index.d.mts +10 -0
  4. package/dist/index.d.ts +10 -0
  5. package/dist/index.esm.js +966 -982
  6. package/dist/index.esm.js.map +1 -1
  7. package/dist/index.js +971 -987
  8. package/dist/index.js.map +1 -1
  9. package/dist/index.mjs +966 -982
  10. package/dist/index.mjs.map +1 -1
  11. package/package.json +6 -2
  12. package/src/core/components/autocomplete/autocomplete.tsx +2 -2
  13. package/src/core/components/breadcrumbs/breadcrumbs.tsx +3 -2
  14. package/src/core/components/dialog/dialog.tsx +19 -10
  15. package/src/core/components/hotkeys/hotkeys.tsx +3 -3
  16. package/src/core/components/menu/menuGroup.tsx +5 -4
  17. package/src/core/components/menu/menuItem.tsx +6 -4
  18. package/src/core/components/skeleton/skeleton.tsx +5 -11
  19. package/src/core/components/skeleton/textSkeleton.tsx +6 -7
  20. package/src/core/hooks/useArrayProp.ts +11 -10
  21. package/src/core/primitives/avatar/avatar.tsx +4 -4
  22. package/src/core/primitives/avatar/avatarCounter.tsx +2 -3
  23. package/src/core/primitives/avatar/avatarStack.tsx +2 -3
  24. package/src/core/primitives/badge/badge.tsx +7 -4
  25. package/src/core/primitives/box/box.tsx +53 -27
  26. package/src/core/primitives/button/button.tsx +11 -12
  27. package/src/core/primitives/card/card.tsx +17 -9
  28. package/src/core/primitives/code/code.tsx +4 -3
  29. package/src/core/primitives/container/container.tsx +4 -11
  30. package/src/core/primitives/flex/flex.tsx +13 -7
  31. package/src/core/primitives/grid/grid.tsx +19 -10
  32. package/src/core/primitives/heading/heading.tsx +7 -4
  33. package/src/core/primitives/inline/inline.tsx +3 -2
  34. package/src/core/primitives/kbd/kbd.tsx +4 -3
  35. package/src/core/primitives/label/label.tsx +7 -4
  36. package/src/core/primitives/popover/popover.tsx +7 -6
  37. package/src/core/primitives/select/select.tsx +12 -6
  38. package/src/core/primitives/stack/stack.tsx +4 -3
  39. package/src/core/primitives/text/text.tsx +7 -4
  40. package/src/core/primitives/textArea/textArea.tsx +12 -6
  41. package/src/core/primitives/textInput/textInput.tsx +6 -5
  42. package/src/core/primitives/tooltip/tooltip.tsx +6 -6
  43. package/src/core/theme/themeProvider.tsx +2 -1
  44. package/src/core/utils/layer/layerProvider.tsx +3 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.compiled.mjs","sources":["../src/core/_compat.ts","../src/core/constants.ts","../src/core/styles/helpers.ts","../src/core/styles/font/responsiveFont.ts","../src/core/styles/font/codeFontStyle.ts","../src/core/styles/font/headingFontStyle.ts","../src/core/styles/font/labelFontStyle.ts","../src/core/styles/font/textAlignStyle.ts","../src/core/styles/font/textFontStyle.ts","../src/core/lib/globalScope.ts","../src/core/lib/createGlobalScopedContext.ts","../src/core/theme/themeContext.ts","../src/core/theme/themeProvider.tsx","../src/core/theme/useRootTheme.ts","../src/core/theme/themeColorProvider.tsx","../src/core/theme/useTheme.ts","../src/core/styles/border/borderStyle.ts","../src/core/styles/box/boxStyle.ts","../src/core/styles/flex/flexStyle.ts","../src/core/styles/flex/flexItemStyle.ts","../src/core/styles/focusRing/index.ts","../src/core/styles/grid/gridStyle.ts","../src/core/styles/grid/gridItemStyle.ts","../src/core/styles/input/responsiveInputPaddingStyle.ts","../src/core/styles/input/textInputStyle.ts","../src/core/styles/margin/marginStyle.ts","../src/core/styles/padding/paddingStyle.ts","../src/core/styles/radius/radiusStyle.ts","../src/core/styles/shadow/shadowStyle.ts","../src/core/primitives/label/styles.ts","../src/core/primitives/label/label.tsx","../src/core/primitives/avatar/styles.ts","../src/core/primitives/avatar/avatar.tsx","../src/core/primitives/avatar/avatarCounter.tsx","../src/core/primitives/avatar/avatarStack.tsx","../src/core/primitives/box/box.tsx","../src/core/primitives/text/styles.ts","../src/core/primitives/text/text.tsx","../src/core/primitives/badge/styles.ts","../src/core/primitives/badge/badge.tsx","../src/core/primitives/flex/flex.tsx","../src/core/primitives/spinner/spinner.tsx","../src/core/styles/card/_cardColorStyle.ts","../src/core/primitives/button/styles.ts","../src/core/primitives/button/button.tsx","../src/core/primitives/card/styles.ts","../src/core/primitives/card/card.tsx","../src/core/hooks/useArrayProp.ts","../src/core/hooks/useClickOutside.ts","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/freeze.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverSize.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/element.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/global.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/process.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/scheduler.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObservation.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverController.js","../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserver.js","../src/core/observers/resizeObserver.ts","../src/core/observers/elementSizeObserver.ts","../src/core/hooks/useElementSize.ts","../src/core/hooks/useElementRect/useElementRect.ts","../src/core/hooks/useGlobalKeyDown.ts","../src/core/hooks/useMediaIndex/useMediaIndex.ts","../src/core/hooks/usePrefersDark.ts","../src/core/hooks/usePrefersReducedMotion.ts","../src/core/hooks/useForwardedRef.ts","../src/core/hooks/useCustomValidity.ts","../src/core/primitives/checkbox/styles.ts","../src/core/primitives/checkbox/checkbox.tsx","../src/core/primitives/code/styles.ts","../src/core/primitives/code/code.tsx","../src/core/primitives/container/styles.ts","../src/core/primitives/container/container.tsx","../src/core/primitives/grid/grid.tsx","../src/core/primitives/heading/styles.ts","../src/core/primitives/heading/heading.tsx","../src/core/primitives/inline/styles.ts","../src/core/primitives/inline/inline.tsx","../src/core/primitives/kbd/kbd.tsx","../src/core/middleware/origin.ts","../src/core/utils/arrow/cmds.ts","../src/core/utils/arrow/arrow.tsx","../src/core/utils/boundaryElement/boundaryElementContext.ts","../src/core/utils/boundaryElement/boundaryElementProvider.tsx","../src/core/lib/isRecord.ts","../src/core/utils/boundaryElement/useBoundaryElement.ts","../src/core/utils/conditionalWrapper/conditionalWrapper.tsx","../src/core/utils/elementQuery/helpers.ts","../src/core/utils/elementQuery/elementQuery.tsx","../src/core/utils/errorBoundary.tsx","../src/core/utils/layer/getLayerContext.ts","../src/core/utils/layer/layerContext.ts","../src/core/utils/layer/useLayer.ts","../src/core/helpers/animation.ts","../src/core/helpers/element.ts","../src/core/helpers/focus.ts","../src/core/helpers/scroll.ts","../src/core/utils/layer/layerProvider.tsx","../src/core/utils/layer/layer.tsx","../src/core/utils/portal/portalContext.ts","../src/core/utils/portal/usePortal.ts","../src/core/utils/portal/portal.ts","../src/core/hooks/_internal/useUnique.ts","../src/core/utils/portal/portalProvider.tsx","../src/core/utils/srOnly/srOnly.tsx","../src/core/utils/virtualList/virtualList.tsx","../src/core/primitives/popover/constants.ts","../src/core/primitives/popover/floating-ui/size.ts","../src/core/primitives/popover/helpers.ts","../src/core/primitives/popover/popoverCard.tsx","../src/core/primitives/popover/popover.tsx","../src/core/primitives/radio/styles.ts","../src/core/primitives/radio/radio.tsx","../src/core/primitives/select/styles.ts","../src/core/primitives/select/select.tsx","../src/core/primitives/stack/styles.ts","../src/core/primitives/stack/stack.tsx","../src/core/primitives/switch/styles.ts","../src/core/primitives/switch/switch.tsx","../src/core/primitives/textArea/textArea.tsx","../src/core/primitives/textInput/textInput.tsx","../src/core/hooks/useDelayedState.ts","../src/core/primitives/tooltip/constants.ts","../src/core/primitives/tooltip/tooltipCard.tsx","../src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupContext.tsx","../src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts","../src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupProvider.tsx","../src/core/primitives/tooltip/tooltip.tsx","../src/core/components/autocomplete/autocomplete.styles.tsx","../src/core/components/autocomplete/autocompleteOption.tsx","../src/core/components/autocomplete/autocompleteReducer.ts","../src/core/components/autocomplete/constants.ts","../src/core/components/autocomplete/autocomplete.tsx","../src/core/components/breadcrumbs/breadcrumbs.styles.ts","../src/core/components/breadcrumbs/breadcrumbs.tsx","../src/core/components/dialog/styles.ts","../src/core/components/dialog/dialogContext.ts","../src/core/components/dialog/useDialog.ts","../src/core/components/dialog/dialog.tsx","../src/core/components/dialog/dialogProvider.tsx","../src/core/components/hotkeys/hotkeys.tsx","../src/core/components/menu/menuContext.ts","../src/core/components/menu/helpers.ts","../src/core/components/menu/useMenuController.ts","../src/core/components/menu/menu.tsx","../src/core/components/menu/menuButton.tsx","../src/core/components/menu/menuDivider.ts","../src/core/primitives/_selectable/style.ts","../src/core/primitives/_selectable/selectable.tsx","../src/core/components/menu/useMenu.ts","../src/core/components/menu/menuGroup.tsx","../src/core/components/menu/menuItem.tsx","../src/core/components/skeleton/styles.ts","../src/core/components/skeleton/skeleton.tsx","../src/core/components/skeleton/textSkeleton.tsx","../src/core/components/tab/tab.tsx","../src/core/components/tab/tabList.tsx","../src/core/components/tab/tabPanel.tsx","../src/core/components/toast/toast.tsx","../src/core/hooks/useMounted.ts","../src/core/components/toast/toastContext.ts","../src/core/components/toast/toastProvider.tsx","../src/core/components/toast/useToast.ts","../src/core/components/tree/helpers.ts","../src/core/components/tree/treeContext.ts","../src/core/components/tree/tree.tsx","../src/core/components/tree/style.ts","../src/core/components/tree/useTree.ts","../src/core/components/tree/treeGroup.tsx","../src/core/components/tree/treeItem.tsx"],"sourcesContent":["// This file re-exports API members which existed in the `@sanity/ui` export in v1.\n\nimport {\n type BaseTheme as _BaseTheme,\n type ThemeBoxShadow,\n type HSL as _HSL,\n type PartialThemeColorBuilderOpts,\n type RGB as _RGB,\n type RootTheme as _RootTheme,\n type ThemeStyles,\n type Theme as _Theme,\n type ThemeAvatar,\n type ThemeColor,\n type ThemeColorBase,\n type ThemeColorBuilderOpts,\n type ThemeColorButton,\n type ThemeColorButtonModeKey as _ThemeColorButtonModeKey,\n type ThemeColorButtonStates,\n type ThemeColorButtonTones,\n type ThemeColorCard,\n type ThemeColorGenericState,\n type ThemeColorInput,\n type ThemeColorInputState,\n type ThemeColorInputStates,\n type ThemeColorMuted,\n type ThemeColorMutedTone,\n type ThemeColorName,\n type ThemeColorScheme,\n type ThemeColorSchemeKey as _ThemeColorSchemeKey,\n type ThemeColorSchemes,\n type ThemeColorSelectable,\n type ThemeColorSelectableStates,\n type ThemeColorSolid,\n type ThemeColorSolidTone,\n type ThemeColorSpot,\n type ThemeColorSpotKey,\n type ThemeColorSyntax as _ThemeColorSyntax,\n type ThemeColorToneKey,\n type ThemeFont as _ThemeFont,\n type ThemeFontKey as _ThemeFontKey,\n type ThemeFontSize as _ThemeFontSize,\n type ThemeFontWeight as _ThemeFontWeight,\n type ThemeFontWeightKey as _ThemeFontWeightKey,\n type ThemeFonts as _ThemeFonts,\n type ThemeInput,\n type ThemeLayer as _ThemeLayer,\n type ThemeShadow as _ThemeShadow,\n type ThemeColorButtonState,\n type ThemeColorCardState,\n type ThemeColorSelectableState,\n buildTheme,\n} from '@sanity/ui/theme'\n\n/**\n * @public\n * @deprecated Use `BaseTheme` from `@sanity/ui/theme` instead.\n */\nexport type BaseTheme = _BaseTheme\n\n/**\n * @public\n * @deprecated Use `ThemeBoxShadow` from `@sanity/ui/theme` instead.\n */\nexport type BoxShadow = ThemeBoxShadow\n\n/**\n * @public\n * @deprecated Use `HSL` from `@sanity/ui/theme` instead.\n */\nexport type HSL = _HSL\n\n/**\n * @public\n * @deprecated Use `RGB` from `@sanity/ui/theme` instead.\n */\nexport type RGB = _RGB\n\n/**\n * @public\n * @deprecated Use `RootTheme` from `@sanity/ui/theme` instead.\n */\nexport type RootTheme = _RootTheme\n\n/**\n * @public\n * @deprecated Use `ThemeStyles` from `@sanity/ui/theme` instead.\n */\nexport type Styles = ThemeStyles\n\n/**\n * @public\n * @deprecated Use `Theme` from `@sanity/ui/theme` instead.\n */\nexport type Theme = _Theme\n\n/**\n * @public\n * @deprecated Use `ThemeColorButtonModeKey` from `@sanity/ui/theme` instead.\n */\nexport type ThemeColorButtonModeKey = _ThemeColorButtonModeKey\n\n/**\n * @public\n * @deprecated Use `ThemeColorSchemeKey` from `@sanity/ui/theme` instead.\n */\nexport type ThemeColorSchemeKey = _ThemeColorSchemeKey\n\n/**\n * @public\n * @deprecated Use `ThemeColorSyntax` from `@sanity/ui/theme` instead.\n */\nexport type ThemeColorSyntax = _ThemeColorSyntax\n\n/**\n * @public\n * @deprecated Use `ThemeFont` from `@sanity/ui/theme` instead.\n */\nexport type ThemeFont = _ThemeFont\n\n/**\n * @public\n * @deprecated Use `ThemeFontKey` from `@sanity/ui/theme` instead.\n */\nexport type ThemeFontKey = _ThemeFontKey\n\n/**\n * @public\n * @deprecated Use `ThemeFontSize` from `@sanity/ui/theme` instead.\n */\nexport type ThemeFontSize = _ThemeFontSize\n\n/**\n * @public\n * @deprecated Use `ThemeFontWeight` from `@sanity/ui/theme` instead.\n */\nexport type ThemeFontWeight = _ThemeFontWeight\n\n/**\n * @public\n * @deprecated Use `ThemeFontWeightKey` from `@sanity/ui/theme` instead.\n */\nexport type ThemeFontWeightKey = _ThemeFontWeightKey\n\n/**\n * @public\n * @deprecated Use `ThemeFonts` from `@sanity/ui/theme` instead.\n */\nexport type ThemeFonts = _ThemeFonts\n\n/**\n * @public\n * @deprecated Use `ThemeLayer` from `@sanity/ui/theme` instead.\n */\nexport type ThemeLayer = _ThemeLayer\n\n/**\n * @public\n * @deprecated Use `ThemeShadow` from `@sanity/ui/theme` instead.\n */\nexport type ThemeShadow = _ThemeShadow\n\nexport {\n type PartialThemeColorBuilderOpts,\n type ThemeAvatar,\n type ThemeColor,\n type ThemeColorBase,\n type ThemeColorBuilderOpts,\n type ThemeColorButton,\n type ThemeColorButtonStates,\n type ThemeColorButtonTones,\n type ThemeColorCard,\n type ThemeColorGenericState,\n type ThemeColorInput,\n type ThemeColorInputState,\n type ThemeColorInputStates,\n type ThemeColorMuted,\n type ThemeColorMutedTone,\n type ThemeColorName,\n type ThemeColorScheme,\n type ThemeColorSchemes,\n type ThemeColorSelectable,\n type ThemeColorSelectableStates,\n type ThemeColorSolid,\n type ThemeColorSolidTone,\n type ThemeColorSpot,\n type ThemeColorSpotKey,\n type ThemeColorToneKey,\n type ThemeInput,\n type ThemeColorButtonState,\n type ThemeColorCardState,\n type ThemeColorSelectableState,\n}\n\nimport {\n createColorTheme as _createColorTheme,\n hexToRgb as _hexToRgb,\n hslToRgb as _hslToRgb,\n multiply as _multiply,\n parseColor as _parseColor,\n rgbToHex as _rgbToHex,\n rgbToHsl as _rgbToHsl,\n rgba as _rgba,\n screen as _screen,\n} from '@sanity/ui/theme'\n\n/**\n * @public\n * @deprecated Use `createColorTheme` from `@sanity/ui/theme` instead.\n */\nexport const createColorTheme = _createColorTheme\n\n/**\n * @public\n * @deprecated Use `hexToRgb` from `@sanity/ui/theme` instead.\n */\nexport const hexToRgb = _hexToRgb\n\n/**\n * @public\n * @deprecated Use `hslToRgb` from `@sanity/ui/theme` instead.\n */\nexport const hslToRgb = _hslToRgb\n\n/**\n * @public\n * @deprecated Use `multiply` from `@sanity/ui/theme` instead.\n */\nexport const multiply = _multiply\n\n/**\n * @public\n * @deprecated Use `parseColor` from `@sanity/ui/theme` instead.\n */\nexport const parseColor = _parseColor\n\n/**\n * @public\n * @deprecated Use `rgbToHex` from `@sanity/ui/theme` instead.\n */\nexport const rgbToHex = _rgbToHex\n\n/**\n * @public\n * @deprecated Use `rgbToHsl` from `@sanity/ui/theme` instead.\n */\nexport const rgbToHsl = _rgbToHsl\n\n/**\n * @public\n * @deprecated Use `rgba` from `@sanity/ui/theme` instead.\n */\nexport const rgba = _rgba\n\n/**\n * @public\n * @deprecated Use `screen` from `@sanity/ui/theme` instead.\n */\nexport const screen = _screen\n\n/**\n * @public\n * @deprecated Use `buildTheme` from `@sanity/ui/theme` instead.\n */\nexport const studioTheme = buildTheme()\n","import {Transition, Variant} from 'framer-motion'\n\n/**\n * @internal\n */\nexport const EMPTY_ARRAY: never[] = []\n\n/**\n * @internal\n */\nexport const EMPTY_RECORD: Record<string, never> = {}\n\n/**\n * @internal\n */\nexport const POPOVER_MOTION_CONTENT_OPACITY_PROPERTY = '--motion-content-opacity'\n\n/**\n * Shared `framer-motion` variants used by `Popover` and `Tooltip` components.\n * @internal\n */\nexport const POPOVER_MOTION_PROPS: {\n animate: Variant\n initial: Variant\n exit: Variant\n transition: Transition\n} = {\n initial: {\n opacity: 0.5,\n [POPOVER_MOTION_CONTENT_OPACITY_PROPERTY as string]: 0,\n scale: 0.97,\n willChange: 'transform',\n },\n animate: {\n opacity: [null, 1, 1],\n [POPOVER_MOTION_CONTENT_OPACITY_PROPERTY as string]: [null, null, 1],\n scale: 1,\n },\n exit: {\n // @ts-expect-error -- passing null a second time is valid: https://github.com/framer/motion/blob/b9ce4c42914c3916ea523609c5b032dfc72718bb/packages/framer-motion/src/animation/utils/keyframes.ts#L34C22-L34C22\n opacity: [null, null, 0],\n [POPOVER_MOTION_CONTENT_OPACITY_PROPERTY as string]: [null, 0, 0],\n scale: 0.97,\n },\n transition: {duration: 0.4, type: 'spring'},\n}\n\n/**\n * @internal\n * @deprecated No longer used.\n */\nexport const FLOATING_STATIC_SIDES: Record<string, 'bottom' | 'left' | 'top' | 'right'> = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n}\n","import {Theme, getTheme_v2} from '@sanity/ui/theme'\nimport {CSSObject} from '@sanity/ui/theme'\nimport {EMPTY_ARRAY} from '../constants'\n\n/**\n * @internal\n */\nexport function _fillCSSObject(keys: string[], value: string | number | CSSObject): CSSObject {\n return keys.reduce<CSSObject>((style, key) => {\n style[key] = value\n\n return style\n }, {})\n}\n\n/**\n * @public\n */\nexport function rem(pixelValue: number): string | 0 {\n if (pixelValue === 0) return 0\n\n return `${pixelValue / 16}rem`\n}\n\n/**\n * @internal\n */\nexport function _responsive<T>(\n media: number[],\n values: T[],\n callback: (value: T, index: number, array: T[]) => CSSObject,\n): CSSObject[] {\n const statements = values?.map(callback) || []\n\n return statements.map((statement, mediaIndex) => {\n if (mediaIndex === 0) return statement\n\n return {[`@media screen and (min-width: ${media[mediaIndex - 1]}px)`]: statement}\n })\n}\n\n/**\n * @internal\n */\nexport function _getArrayProp<T = number>(val: T | T[] | undefined, defaultVal?: T[]): T[] {\n if (val === undefined) return defaultVal || EMPTY_ARRAY\n\n return Array.isArray(val) ? val : [val]\n}\n\n/**\n * @internal\n */\nexport function _getResponsiveSpace(\n theme: Theme,\n props: string[],\n spaceIndexes: number[] = EMPTY_ARRAY,\n): CSSObject[] | null {\n if (!Array.isArray(spaceIndexes)) {\n throw new Error('the property must be array of numbers')\n }\n\n if (spaceIndexes.length === 0) {\n return null\n }\n\n const {media, space} = getTheme_v2(theme)\n\n return _responsive(media, spaceIndexes, (spaceIndex) =>\n _fillCSSObject(props, rem(space[spaceIndex])),\n )\n}\n","import {ThemeFontSize, ThemeFontKey, getTheme_v2} from '@sanity/ui/theme'\nimport {CSSObject} from '@sanity/ui/theme'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveFontStyleProps} from './types'\n\n/**\n * A utility function getting responsive font styles.\n * @internal\n */\nexport function responsiveFont(\n fontKey: ThemeFontKey,\n props: ResponsiveFontStyleProps & ThemeProps,\n): CSSObject[] {\n const {$size, $weight} = props\n const {font, media} = getTheme_v2(props.theme)\n const {family, sizes, weights} = font[fontKey]\n const fontWeight = ($weight && weights[$weight]) || weights.regular\n\n // @todo: make this configurable\n const defaultSize = sizes[2]\n\n const base: CSSObject = {\n position: 'relative',\n fontFamily: family,\n fontWeight,\n padding: '1px 0',\n margin: 0,\n\n '&:before': {\n content: '\"\"',\n display: 'block',\n height: 0,\n },\n\n '&:after': {\n content: '\"\"',\n display: 'block',\n height: 0,\n },\n\n '& > code, & > span': {\n display: 'block',\n },\n\n '&:not([hidden])': {\n display: 'block',\n },\n }\n\n // @TODO fix the real condition that is causing $size to be undefined sometimes\n if (!$size) {\n // @ts-expect-error: `warned` isn't typed, the underlying issue should be solved rather than typing it\n if (!responsiveFont.warned) {\n // eslint-disable-next-line no-console\n console.warn('No size specified for responsive font', {fontKey, $size, props, base})\n // @ts-expect-error: `warned` isn't typed, the underlying issue should be solved rather than typing it\n responsiveFont.warned = true\n }\n\n return [base]\n }\n\n const resp = _responsive(media, $size, (sizeIndex) => fontSize(sizes[sizeIndex] || defaultSize))\n\n return [base, ...resp]\n}\n\nexport function fontSize(size: ThemeFontSize): CSSObject {\n const {ascenderHeight, descenderHeight, fontSize, iconSize, letterSpacing, lineHeight} = size\n const negHeight = ascenderHeight + descenderHeight\n const capHeight = lineHeight - negHeight\n const iconOffset = (capHeight - iconSize) / 2\n const customIconSize = Math.floor((fontSize * 1.125) / 2) * 2 + 1\n const customIconOffset = (capHeight - customIconSize) / 2\n\n return {\n fontSize: rem(fontSize),\n lineHeight: `calc(${lineHeight} / ${fontSize})`,\n letterSpacing: rem(letterSpacing),\n transform: `translateY(${rem(descenderHeight)})`,\n\n '&:before': {\n marginTop: `calc(${rem(0 - negHeight)} - 1px)`,\n },\n\n '&:after': {\n marginBottom: '-1px',\n },\n\n '& svg:not([data-sanity-icon])': {\n fontSize: `calc(${customIconSize} / 16 * 1rem)`,\n margin: rem(customIconOffset),\n },\n\n '& [data-sanity-icon]': {\n fontSize: `calc(${iconSize} / 16 * 1rem)`,\n margin: rem(iconOffset),\n },\n }\n}\n","import {CSSObject} from '@sanity/ui/theme'\nimport {ThemeProps} from '../types'\nimport {responsiveFont} from './responsiveFont'\nimport {ResponsiveFontStyleProps} from './types'\n\n/**\n * Get responsive CSS for the `code` font style.\n * @internal\n */\nexport function responsiveCodeFontStyle(props: ResponsiveFontStyleProps & ThemeProps): CSSObject[] {\n return responsiveFont('code', props)\n}\n","import {CSSObject} from '@sanity/ui/theme'\nimport {ThemeProps} from '../types'\nimport {responsiveFont} from './responsiveFont'\nimport {ResponsiveFontStyleProps} from './types'\n\n/**\n * Get responsive CSS for the `heading` font style.\n * @internal\n */\nexport function responsiveHeadingFont(props: ResponsiveFontStyleProps & ThemeProps): CSSObject[] {\n return responsiveFont('heading', props)\n}\n","import {CSSObject} from '@sanity/ui/theme'\nimport {ThemeProps} from '../types'\nimport {responsiveFont} from './responsiveFont'\nimport {ResponsiveFontStyleProps} from './types'\n\n/**\n * Get responsive CSS for the `label` font style.\n * @internal\n */\nexport function responsiveLabelFont(props: ResponsiveFontStyleProps & ThemeProps): CSSObject[] {\n return responsiveFont('label', props)\n}\n","import {CSSObject, getTheme_v2} from '@sanity/ui/theme'\nimport {_responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveTextAlignStyleProps} from './types'\n\n/**\n * Get responsive text align styles.\n * @internal\n */\nexport function responsiveTextAlignStyle(\n props: ResponsiveTextAlignStyleProps & ThemeProps,\n): CSSObject[] {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$align, (textAlign) => {\n return {textAlign}\n })\n}\n","import {CSSObject} from '@sanity/ui/theme'\nimport {ThemeProps} from '../types'\nimport {responsiveFont} from './responsiveFont'\nimport {ResponsiveFontStyleProps} from './types'\n\n/**\n * Get responsive CSS for the `text` font style.\n * @internal\n */\nexport function responsiveTextFont(props: ResponsiveFontStyleProps & ThemeProps): CSSObject[] {\n return responsiveFont('text', props)\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Gets the global scope instance in a given environment.\n *\n * The strategy is to return the most modern, and if not, the most common:\n * - The `globalThis` variable is the modern approach to accessing the global scope\n * - The `window` variable is the global scope in a web browser\n * - The `self` variable is the global scope in workers and others\n * - The `global` variable is the global scope in Node.js\n */\nfunction getGlobalScope() {\n if (typeof globalThis !== 'undefined') return globalThis\n if (typeof window !== 'undefined') return window\n if (typeof self !== 'undefined') return self\n if (typeof global !== 'undefined') return global\n\n throw new Error('@sanity/ui: could not locate global scope')\n}\n\nexport const globalScope = getGlobalScope() as any\n","/**\n * To improve performance and DevEx for things such as Hot Module Replacement,\n * we want to preserve created contexts between reloads.\n * It also helps with module duplication and other issues.\n */\n\nimport {createContext, type Context} from 'react'\nimport {globalScope} from './globalScope'\n\nexport function createGlobalScopedContext<ContextType, const T extends ContextType = ContextType>(\n key: symbol,\n defaultValue: T,\n): Context<ContextType> {\n /**\n * Prevent errors about re-renders on React SSR on Next.js App Router\n */\n if (typeof document === 'undefined') {\n return createContext<ContextType>(defaultValue)\n }\n\n globalScope[key] = globalScope[key] || createContext<T>(defaultValue)\n\n return globalScope[key]\n}\n","import {createGlobalScopedContext} from '../lib/createGlobalScopedContext'\nimport {ThemeContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/theme')\n\n/**\n * @internal\n */\nexport const ThemeContext = createGlobalScopedContext<ThemeContextValue | null>(key, null)\n","import {\n type RootTheme,\n type ThemeColorCardToneKey,\n type ThemeColorSchemeKey,\n type Theme,\n getScopedTheme,\n} from '@sanity/ui/theme'\nimport {useContext, useMemo} from 'react'\nimport {ThemeProvider as StyledThemeProvider} from 'styled-components'\nimport {ThemeContext} from './themeContext'\nimport {ThemeContextValue} from './types'\n\n/**\n * @public\n */\nexport interface ThemeProviderProps {\n children?: React.ReactNode\n scheme?: ThemeColorSchemeKey\n theme?: RootTheme\n tone?: ThemeColorCardToneKey\n}\n\n/**\n * @public\n */\nexport function ThemeProvider(props: ThemeProviderProps): React.ReactElement {\n const parentTheme = useContext(ThemeContext)\n const {\n children,\n // scheme = parentTheme?.scheme || 'light',\n theme: rootTheme = parentTheme?.theme || null,\n tone = parentTheme?.tone || 'default',\n } = props\n const scheme = props.scheme ?? (parentTheme?.scheme || 'light')\n\n const themeContext: ThemeContextValue | null = useMemo(() => {\n if (!rootTheme) return null\n\n return {\n version: 0.0,\n theme: rootTheme,\n scheme,\n tone,\n }\n }, [rootTheme, scheme, tone])\n\n const theme: Theme | null = useMemo(() => {\n if (!rootTheme) return null\n\n return getScopedTheme(rootTheme, scheme, tone)\n }, [scheme, rootTheme, tone])\n\n if (!theme) {\n return <pre>ThemeProvider: no \"theme\" property provided</pre>\n }\n\n return (\n <ThemeContext.Provider value={themeContext}>\n <StyledThemeProvider theme={theme}>{children}</StyledThemeProvider>\n </ThemeContext.Provider>\n )\n}\n","import {useContext} from 'react'\nimport {ThemeContext} from './themeContext'\nimport {ThemeContextValue} from './types'\n\n/**\n * @public\n */\nexport function useRootTheme(): ThemeContextValue {\n const value = useContext(ThemeContext)\n\n if (!value) {\n throw new Error('useRootTheme(): missing context value')\n }\n\n return value as unknown as ThemeContextValue\n}\n","import {ThemeColorCardToneKey, ThemeColorSchemeKey} from '@sanity/ui/theme'\nimport {ThemeProvider} from './themeProvider'\nimport {useRootTheme} from './useRootTheme'\n\n/**\n * @public\n */\nexport interface ThemeColorProviderProps {\n children?: React.ReactNode\n scheme?: ThemeColorSchemeKey\n tone?: ThemeColorCardToneKey\n}\n\n/**\n * @public\n */\nexport function ThemeColorProvider(props: ThemeColorProviderProps): React.ReactElement {\n const {children, scheme, tone} = props\n const root = useRootTheme()\n\n return (\n <ThemeProvider scheme={scheme || root.scheme} theme={root.theme} tone={tone}>\n {children}\n </ThemeProvider>\n )\n}\n","import {Theme, Theme_v2, getTheme_v2} from '@sanity/ui/theme'\nimport {useTheme as useStyledTheme} from 'styled-components'\n\n/**\n * @public\n */\nexport function useTheme(): Theme {\n return useStyledTheme() as Theme\n}\n\n/**\n * @public\n */\nexport function useTheme_v2(): Theme_v2 {\n return getTheme_v2(useStyledTheme() as Theme)\n}\n","import {CSSObject, getTheme_v2} from '@sanity/ui/theme'\nimport {_responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveBorderStyleProps} from './types'\n\nexport function responsiveBorderStyle(): Array<\n (props: ResponsiveBorderStyleProps & ThemeProps) => CSSObject[]\n> {\n return [border, borderTop, borderRight, borderBottom, borderLeft]\n}\n\nfunction border(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {card, media} = getTheme_v2(props.theme)\n const borderStyle = `${card.border?.width ?? 1}px solid var(--card-border-color)`\n\n return _responsive(media, props.$border, (value) =>\n value ? {'&&': {border: borderStyle}} : {'&&': {border: 0}},\n )\n}\n\nfunction borderTop(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {card, media} = getTheme_v2(props.theme)\n const borderStyle = `${card.border?.width ?? 1}px solid var(--card-border-color)`\n\n return _responsive(media, props.$borderTop, (value) =>\n value ? {'&&': {borderTop: borderStyle}} : {'&&': {borderTop: 0}},\n )\n}\n\nfunction borderRight(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {card, media} = getTheme_v2(props.theme)\n const borderStyle = `${card.border?.width ?? 1}px solid var(--card-border-color)`\n\n return _responsive(media, props.$borderRight, (value) =>\n value ? {'&&': {borderRight: borderStyle}} : {'&&': {borderRight: 0}},\n )\n}\n\nfunction borderBottom(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {card, media} = getTheme_v2(props.theme)\n const borderStyle = `${card.border?.width ?? 1}px solid var(--card-border-color)`\n\n return _responsive(media, props.$borderBottom, (value) =>\n value ? {'&&': {borderBottom: borderStyle}} : {'&&': {borderBottom: 0}},\n )\n}\n\nfunction borderLeft(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {card, media} = getTheme_v2(props.theme)\n const borderStyle = `${card.border?.width ?? 1}px solid var(--card-border-color)`\n\n return _responsive(media, props.$borderLeft, (value) =>\n value ? {'&&': {borderLeft: borderStyle}} : {'&&': {borderLeft: 0}},\n )\n}\n","import {CSSObject, getTheme_v2} from '@sanity/ui/theme'\nimport {Property} from 'csstype'\nimport {_responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveBoxStyleProps} from './types'\n\nconst BASE_STYLE: CSSObject = {\n '&[data-as=\"ul\"],&[data-as=\"ol\"]': {\n listStyle: 'none',\n },\n}\n\nconst BOX_SIZING: {[key: string]: Property.BoxSizing} = {\n content: 'content-box',\n border: 'border-box',\n}\n\nconst BOX_HEIGHT = {\n stretch: 'stretch',\n fill: '100%',\n}\n\nexport function boxStyle(): CSSObject {\n return BASE_STYLE\n}\n\nexport function responsiveBoxStyle(): Array<\n (props: ResponsiveBoxStyleProps & ThemeProps) => CSSObject[]\n> {\n return [\n responsiveBoxSizingStyle,\n responsiveBoxHeightStyle,\n responsiveBoxOverflowStyle,\n responsiveBoxDisplayStyle,\n ]\n}\n\nfunction responsiveBoxDisplayStyle(props: ResponsiveBoxStyleProps & ThemeProps) {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$display, (display) => ({\n '&:not([hidden])': {display},\n }))\n}\n\nfunction responsiveBoxSizingStyle(props: ResponsiveBoxStyleProps & ThemeProps) {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$sizing, (sizing) => ({\n boxSizing: BOX_SIZING[sizing],\n }))\n}\n\nfunction responsiveBoxHeightStyle(props: ResponsiveBoxStyleProps & ThemeProps) {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$height, (height) => ({\n height: BOX_HEIGHT[height],\n }))\n}\n\nfunction responsiveBoxOverflowStyle(props: ResponsiveBoxStyleProps & ThemeProps) {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$overflow, (overflow) => ({\n overflow,\n }))\n}\n","import {CSSObject, getTheme_v2} from '@sanity/ui/theme'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveFlexStyleProps} from './types'\n\nconst BASE_STYLE: CSSObject = {\n '&&:not([hidden])': {\n display: 'flex',\n },\n}\n\nexport function responsiveFlexStyle(): Array<\n CSSObject | ((props: ResponsiveFlexStyleProps & ThemeProps) => CSSObject[])\n> {\n return [\n BASE_STYLE,\n responsiveFlexAlignStyle,\n responsiveFlexGapStyle,\n responsiveFlexWrapStyle,\n responsiveFlexJustifyStyle,\n responsiveFlexDirectionStyle,\n ]\n}\n\nexport function responsiveFlexAlignStyle(\n props: ResponsiveFlexStyleProps & ThemeProps,\n): CSSObject[] {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$align, (align) => {\n return {alignItems: align}\n })\n}\n\nfunction responsiveFlexGapStyle(props: ResponsiveFlexStyleProps & ThemeProps) {\n const {media, space} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$gap, (gap) => ({\n gap: gap ? rem(space[gap]) : undefined,\n }))\n}\n\nexport function responsiveFlexWrapStyle(props: ResponsiveFlexStyleProps & ThemeProps): CSSObject[] {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$wrap, (wrap) => {\n return {flexWrap: wrap}\n })\n}\n\nexport function responsiveFlexJustifyStyle(\n props: ResponsiveFlexStyleProps & ThemeProps,\n): CSSObject[] {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$justify, (justify) => {\n return {justifyContent: justify}\n })\n}\n\nexport function responsiveFlexDirectionStyle(\n props: ResponsiveFlexStyleProps & ThemeProps,\n): CSSObject[] {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$direction, (direction) => {\n return {flexDirection: direction}\n })\n}\n","import {CSSObject, getTheme_v2} from '@sanity/ui/theme'\nimport {EMPTY_ARRAY} from '../../constants'\nimport {_responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveFlexItemStyleProps} from './types'\n\nconst BASE_STYLE: CSSObject = {\n minWidth: 0,\n minHeight: 0,\n}\n\nexport function flexItemStyle(): Array<\n CSSObject | ((props: ResponsiveFlexItemStyleProps & ThemeProps) => CSSObject[])\n> {\n return [BASE_STYLE, responsiveFlexItemStyle]\n}\n\nexport function responsiveFlexItemStyle(\n props: ResponsiveFlexItemStyleProps & ThemeProps,\n): CSSObject[] {\n const {media} = getTheme_v2(props.theme)\n\n if (!props.$flex) return EMPTY_ARRAY\n\n return _responsive(media, props.$flex, (flex) => ({flex}))\n}\n","import {ThemeFocusRing} from '@sanity/ui/theme'\n\nexport function focusRingBorderStyle(border: {color: string; width: number}): string {\n return `inset 0 0 0 ${border.width}px ${border.color}`\n}\n\nexport function focusRingStyle(opts: {\n base?: {bg: string}\n border?: {color: string; width: number}\n focusRing: ThemeFocusRing\n}): string {\n const {base, border, focusRing} = opts\n const focusRingOutsetWidth = focusRing.offset + focusRing.width\n const focusRingInsetWidth = 0 - focusRing.offset\n const bgColor = base ? base.bg : 'var(--card-bg-color)'\n\n return [\n focusRingInsetWidth > 0 && `inset 0 0 0 ${focusRingInsetWidth}px var(--card-focus-ring-color)`,\n border && focusRingBorderStyle(border),\n focusRingInsetWidth < 0 && `0 0 0 ${0 - focusRingInsetWidth}px ${bgColor}`,\n focusRingOutsetWidth > 0 && `0 0 0 ${focusRingOutsetWidth}px var(--card-focus-ring-color)`,\n ]\n .filter(Boolean)\n .join(',')\n}\n","import {CSSObject, getTheme_v2} from '@sanity/ui/theme'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveGridStyleProps} from './types'\n\nconst GRID_CSS = {\n '&&:not([hidden])': {\n display: 'grid',\n },\n '&[data-as=\"ul\"],&[data-as=\"ol\"]': {\n listStyle: 'none',\n },\n}\n\nconst GRID_AUTO_COLUMS = {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n}\n\nconst GRID_AUTO_ROWS = {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n}\n\nexport function responsiveGridStyle(): Array<\n CSSObject | ((props: ResponsiveGridStyleProps & ThemeProps) => CSSObject[])\n> {\n return [\n GRID_CSS,\n responsiveGridAutoFlowStyle,\n responsiveGridAutoRowsStyle,\n responsiveGridAutoColsStyle,\n responsiveGridColumnsStyle,\n responsiveGridRowsStyle,\n responsiveGridGapStyle,\n responsiveGridGapXStyle,\n responsiveGridGapYStyle,\n ]\n}\n\nfunction responsiveGridAutoFlowStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$autoFlow, (autoFlow) => ({\n gridAutoFlow: autoFlow,\n }))\n}\n\nfunction responsiveGridAutoRowsStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$autoRows, (autoRows) => ({\n gridAutoRows: autoRows && GRID_AUTO_ROWS[autoRows],\n }))\n}\n\nfunction responsiveGridAutoColsStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$autoCols, (autoCols) => ({\n gridAutoColumns: autoCols && GRID_AUTO_COLUMS[autoCols],\n }))\n}\n\nfunction responsiveGridColumnsStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$columns, (columns) => ({\n gridTemplateColumns: columns && `repeat(${columns},minmax(0,1fr));`,\n }))\n}\n\nfunction responsiveGridRowsStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$rows, (rows) => ({\n gridTemplateRows: rows && `repeat(${rows},minmax(0,1fr));`,\n }))\n}\n\nfunction responsiveGridGapStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {media, space} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$gap, (gap) => ({\n gridGap: gap ? rem(space[gap]) : undefined,\n }))\n}\n\nfunction responsiveGridGapXStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {media, space} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$gapX, (gapX) => ({\n columnGap: gapX ? rem(space[gapX]) : undefined,\n }))\n}\n\nfunction responsiveGridGapYStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {media, space} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$gapY, (gapY) => ({\n rowGap: gapY ? rem(space[gapY]) : undefined,\n }))\n}\n","import {CSSObject, getTheme_v2} from '@sanity/ui/theme'\nimport {_responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveGridItemStyleProps} from './types'\n\nexport function responsiveGridItemStyle(): Array<\n (props: ResponsiveGridItemStyleProps & ThemeProps) => CSSObject[]\n> {\n return [\n responsiveGridItemRowStyle,\n responsiveGridItemRowStartStyle,\n responsiveGridItemRowEndStyle,\n responsiveGridItemColumnStyle,\n responsiveGridItemColumnStartStyle,\n responsiveGridItemColumnEndStyle,\n ]\n}\n\nconst GRID_ITEM_ROW = {\n auto: 'auto',\n full: '1 / -1',\n}\n\nconst GRID_ITEM_COLUMN = {\n auto: 'auto',\n full: '1 / -1',\n}\n\nfunction responsiveGridItemRowStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$row, (row) => {\n if (typeof row === 'number') {\n return {gridRow: `span ${row} / span ${row}`}\n }\n\n return {gridRow: GRID_ITEM_ROW[row]}\n })\n}\n\nfunction responsiveGridItemRowStartStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$rowStart, (rowStart) => ({\n gridRowStart: rowStart,\n }))\n}\n\nfunction responsiveGridItemRowEndStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$rowEnd, (rowEnd) => ({gridRowEnd: rowEnd}))\n}\n\nfunction responsiveGridItemColumnStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$column, (column) => {\n if (typeof column === 'number') {\n return {gridColumn: `span ${column} / span ${column}`}\n }\n\n return {gridColumn: GRID_ITEM_COLUMN[column]}\n })\n}\n\nfunction responsiveGridItemColumnStartStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$columnStart, (columnStart) => ({\n gridColumnStart: columnStart,\n }))\n}\n\nfunction responsiveGridItemColumnEndStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$columnEnd, (columnEnd) => ({\n gridColumnEnd: columnEnd,\n }))\n}\n","import {CSSObject, getTheme_v2} from '@sanity/ui/theme'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\n\nexport interface TextInputResponsivePaddingStyleProps {\n $fontSize: number[]\n $iconLeft?: boolean\n $iconRight?: boolean\n $padding: number[]\n $space: number[]\n}\n\nexport function responsiveInputPaddingStyle(\n props: TextInputResponsivePaddingStyleProps & ThemeProps,\n): CSSObject[] {\n const {$fontSize, $iconLeft, $iconRight, $padding, $space} = props\n const {font, media, space} = getTheme_v2(props.theme)\n const len = Math.max($padding.length, $space.length, $fontSize.length)\n const _padding: number[] = []\n const _space: number[] = []\n const _fontSize: number[] = []\n\n for (let i = 0; i < len; i += 1) {\n _fontSize[i] = $fontSize[i] === undefined ? _fontSize[i - 1] : $fontSize[i]\n _padding[i] = $padding[i] === undefined ? _padding[i - 1] : $padding[i]\n _space[i] = $space[i] === undefined ? _space[i - 1] : $space[i]\n }\n\n return _responsive(media, _padding, (_, i) => {\n const size = font.text.sizes[_fontSize[i]] || font.text.sizes[2]\n const emSize = size.lineHeight - size.ascenderHeight - size.descenderHeight\n const p = space[_padding[i]]\n const s = space[_space[i]]\n\n const styles = {\n paddingTop: rem(p - size.ascenderHeight),\n paddingRight: rem(p),\n paddingBottom: rem(p - size.descenderHeight),\n paddingLeft: rem(p),\n }\n\n if ($iconRight) styles.paddingRight = rem(p + emSize + s)\n if ($iconLeft) styles.paddingLeft = rem(p + emSize + s)\n\n return styles\n })\n}\n\nexport function responsiveInputPaddingIconsStyle(\n props: {\n $fontSize: number[]\n $padding: number[]\n $space: number[]\n } & ThemeProps,\n): CSSObject[] {\n return responsiveInputPaddingStyle({...props, $iconLeft: true, $iconRight: true})\n}\n\nexport function responsiveInputPaddingIconLeftStyle(\n props: {\n $fontSize: number[]\n $padding: number[]\n $space: number[]\n } & ThemeProps,\n): CSSObject[] {\n return responsiveInputPaddingStyle({...props, $iconLeft: true})\n}\n\nexport function responsiveInputPaddingIconRightStyle(\n props: {\n $fontSize: number[]\n $padding: number[]\n $space: number[]\n } & ThemeProps,\n): CSSObject[] {\n return responsiveInputPaddingStyle({...props, $iconRight: true})\n}\n","import {ThemeColorSchemeKey, ThemeFontWeightKey, getTheme_v2} from '@sanity/ui/theme'\nimport {CSSObject} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\nimport {CardTone} from '../../types'\nimport {focusRingBorderStyle, focusRingStyle} from '../focusRing'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\n\n/**\n * @internal\n */\nexport interface TextInputInputStyleProps {\n $fontSize: number[]\n $scheme: ThemeColorSchemeKey\n $tone: CardTone\n $weight?: ThemeFontWeightKey\n}\n\n/**\n * @internal\n */\nexport interface TextInputRepresentationStyleProps {\n $hasPrefix?: boolean\n $hasSuffix?: boolean\n $scheme: ThemeColorSchemeKey\n $tone: CardTone\n $unstableDisableFocusRing?: boolean\n}\n\nconst ROOT_STYLE = css`\n &:not([hidden]) {\n display: flex;\n }\n\n align-items: center;\n`\n\nexport function textInputRootStyle(): ReturnType<typeof css> {\n return ROOT_STYLE\n}\n\nexport function textInputBaseStyle(\n props: TextInputInputStyleProps & ThemeProps,\n): ReturnType<typeof css> {\n const {$scheme, $tone, $weight} = props\n const {color, font} = getTheme_v2(props.theme)\n\n return css`\n appearance: none;\n background: none;\n border: 0;\n border-radius: 0;\n outline: none;\n width: 100%;\n box-sizing: border-box;\n font-family: ${font.text.family};\n font-weight: ${($weight && font.text.weights[$weight]) || font.text.weights.regular};\n margin: 0;\n position: relative;\n z-index: 1;\n display: block;\n\n /* NOTE: This is a hack to disable Chrome’s autofill styles */\n &:-webkit-autofill,\n &:-webkit-autofill:hover,\n &:-webkit-autofill:focus,\n &:-webkit-autofill:active {\n -webkit-text-fill-color: var(--input-fg-color) !important;\n transition: background-color 5000s;\n transition-delay: 86400s /* 24h */;\n }\n\n /* &:is(textarea) */\n &[data-as='textarea'] {\n resize: none;\n }\n\n color: var(--input-fg-color);\n\n &::placeholder {\n color: var(--input-placeholder-color);\n }\n\n &[data-scheme='${$scheme}'][data-tone='${$tone}'] {\n --input-fg-color: ${color.input.default.enabled.fg};\n --input-placeholder-color: ${color.input.default.enabled.placeholder};\n\n /* enabled */\n &:not(:invalid):not(:disabled):not(:read-only) {\n --input-fg-color: ${color.input.default.enabled.fg};\n --input-placeholder-color: ${color.input.default.enabled.placeholder};\n }\n\n /* disabled */\n &:not(:invalid):disabled {\n --input-fg-color: ${color.input.default.disabled.fg};\n --input-placeholder-color: ${color.input.default.disabled.placeholder};\n }\n\n /* invalid */\n &:invalid {\n --input-fg-color: ${color.input.invalid.enabled.fg};\n --input-placeholder-color: ${color.input.invalid.enabled.placeholder};\n }\n\n /* readOnly */\n &:read-only {\n --input-fg-color: ${color.input.default.readOnly.fg};\n --input-placeholder-color: ${color.input.default.readOnly.placeholder};\n }\n }\n `\n}\n\nexport function textInputFontSizeStyle(props: TextInputInputStyleProps & ThemeProps): CSSObject[] {\n const {font, media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$fontSize, (sizeIndex) => {\n const size = font.text.sizes[sizeIndex] || font.text.sizes[2]\n\n return {\n fontSize: rem(size.fontSize),\n lineHeight: size.lineHeight / size.fontSize,\n }\n })\n}\n\nexport function textInputRepresentationStyle(\n props: TextInputRepresentationStyleProps & ThemeProps,\n): ReturnType<typeof css> {\n const {$hasPrefix, $hasSuffix, $scheme, $tone, $unstableDisableFocusRing} = props\n const {color, input} = getTheme_v2(props.theme)\n\n return css`\n --input-box-shadow: none;\n\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: block;\n pointer-events: none;\n z-index: 0;\n\n background-color: var(--card-bg-color);\n box-shadow: var(--input-box-shadow);\n\n border-top-left-radius: ${$hasPrefix ? 0 : undefined};\n border-bottom-left-radius: ${$hasPrefix ? 0 : undefined};\n border-top-right-radius: ${$hasSuffix ? 0 : undefined};\n border-bottom-right-radius: ${$hasSuffix ? 0 : undefined};\n\n &[data-scheme='${$scheme}'][data-tone='${$tone}'] {\n --card-bg-color: ${color.input.default.enabled.bg};\n --card-fg-color: ${color.input.default.enabled.fg};\n\n /* enabled */\n *:not(:disabled) + &[data-border] {\n --input-box-shadow: ${focusRingBorderStyle({\n color: color.input.default.enabled.border,\n width: input.border.width,\n })};\n }\n\n /* invalid */\n *:not(:disabled):invalid + & {\n --card-bg-color: ${color.input.invalid.enabled.bg};\n --card-fg-color: ${color.input.invalid.enabled.fg};\n\n &[data-border] {\n --input-box-shadow: ${focusRingBorderStyle({\n color: color.input.invalid.enabled.border,\n width: input.border.width,\n })};\n }\n }\n\n /* focused */\n *:not(:disabled):focus + & {\n &[data-border] {\n --input-box-shadow: ${$unstableDisableFocusRing\n ? undefined\n : focusRingStyle({\n border: {color: color.input.default.enabled.border, width: input.border.width},\n focusRing: input.text.focusRing,\n })};\n }\n\n &:not([data-border]) {\n --input-box-shadow: ${$unstableDisableFocusRing\n ? undefined\n : focusRingStyle({focusRing: input.text.focusRing})};\n }\n }\n\n /* disabled */\n *:not(:invalid):disabled + & {\n --card-bg-color: ${color.input.default.disabled.bg} !important;\n --card-fg-color: ${color.input.default.disabled.fg} !important;\n --card-icon-color: ${color.input.default.disabled.fg} !important;\n\n &[data-border] {\n --input-box-shadow: ${focusRingBorderStyle({\n color: color.input.default.disabled.border,\n width: input.border.width,\n })};\n }\n }\n\n *:invalid:disabled + & {\n --card-bg-color: ${color.input.invalid.disabled.bg} !important;\n --card-fg-color: ${color.input.invalid.disabled.fg} !important;\n --card-icon-color: ${color.input.invalid.disabled.fg} !important;\n\n &[data-border] {\n --input-box-shadow: ${focusRingBorderStyle({\n color: color.input.invalid.disabled.border,\n width: input.border.width,\n })};\n }\n }\n\n /* readOnly */\n *:not(:invalid):read-only + & {\n --card-bg-color: ${color.input.default.readOnly.bg} !important;\n --card-fg-color: ${color.input.default.readOnly.fg} !important;\n }\n\n *:invalid:read-only + & {\n --card-bg-color: ${color.input.invalid.readOnly.bg} !important;\n --card-fg-color: ${color.input.invalid.readOnly.fg} !important;\n }\n\n /* hovered */\n @media (hover: hover) {\n *:not(:disabled):not(:read-only):not(:invalid):hover + & {\n --card-bg-color: ${color.input.default.hovered.bg};\n --card-fg-color: ${color.input.default.hovered.fg};\n }\n\n *:invalid:not(:disabled):not(:read-only):hover + & {\n --card-bg-color: ${color.input.invalid.hovered.bg};\n --card-fg-color: ${color.input.invalid.hovered.fg};\n }\n\n *:not(:disabled):not(:read-only):not(:invalid):not(:focus):hover + &[data-border] {\n --input-box-shadow: ${focusRingBorderStyle({\n color: color.input.default.hovered.border,\n width: input.border.width,\n })};\n }\n\n *:invalid:not(:disabled):not(:read-only):not(:focus):hover + &[data-border] {\n --input-box-shadow: ${focusRingBorderStyle({\n color: color.input.invalid.hovered.border,\n width: input.border.width,\n })};\n }\n }\n }\n `\n}\n","import {CSSObject} from '@sanity/ui/theme'\nimport {_getResponsiveSpace} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveMarginStyleProps} from './types'\n\nexport function responsiveMarginStyle(\n props: ResponsiveMarginStyleProps & ThemeProps,\n): CSSObject[][] {\n const {theme} = props\n\n return [\n _getResponsiveSpace(theme, ['margin'], props.$margin),\n _getResponsiveSpace(theme, ['marginLeft', 'marginRight'], props.$marginX),\n _getResponsiveSpace(theme, ['marginTop', 'marginBottom'], props.$marginY),\n _getResponsiveSpace(theme, ['marginTop'], props.$marginTop),\n _getResponsiveSpace(theme, ['marginRight'], props.$marginRight),\n _getResponsiveSpace(theme, ['marginBottom'], props.$marginBottom),\n _getResponsiveSpace(theme, ['marginLeft'], props.$marginLeft),\n ].filter(Boolean) as CSSObject[][]\n}\n","import {CSSObject} from '@sanity/ui/theme'\nimport {_getResponsiveSpace} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsivePaddingStyleProps} from './types'\n\nexport function responsivePaddingStyle(\n props: ResponsivePaddingStyleProps & ThemeProps,\n): CSSObject[][] {\n const {theme} = props\n\n return [\n _getResponsiveSpace(theme, ['padding'], props.$padding),\n _getResponsiveSpace(theme, ['paddingLeft', 'paddingRight'], props.$paddingX),\n _getResponsiveSpace(theme, ['paddingTop', 'paddingBottom'], props.$paddingY),\n _getResponsiveSpace(theme, ['paddingTop'], props.$paddingTop),\n _getResponsiveSpace(theme, ['paddingRight'], props.$paddingRight),\n _getResponsiveSpace(theme, ['paddingBottom'], props.$paddingBottom),\n _getResponsiveSpace(theme, ['paddingLeft'], props.$paddingLeft),\n ].filter(Boolean) as CSSObject[][]\n}\n","import {CSSObject, getTheme_v2} from '@sanity/ui/theme'\nimport {_responsive, rem} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveRadiusStyleProps} from './types'\n\nexport function responsiveRadiusStyle(props: ResponsiveRadiusStyleProps & ThemeProps): CSSObject[] {\n const {media, radius} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$radius, (value) => {\n let borderRadius: string | 0 = 0\n\n if (typeof value === 'number') {\n borderRadius = rem(radius[value])\n }\n\n if (value === 'full') {\n borderRadius = '9999px'\n }\n\n return {borderRadius}\n })\n}\n","import {ThemeBoxShadow, ThemeShadow, getTheme_v2} from '@sanity/ui/theme'\nimport {CSSObject} from '@sanity/ui/theme'\nimport {EMPTY_RECORD} from '../../constants'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveShadowStyleProps} from './types'\n\nfunction toBoxShadow(shadow: ThemeBoxShadow, color: string) {\n return `${shadow.map(rem).join(' ')} ${color}`\n}\n\nfunction shadowStyle(shadow: ThemeShadow | null, outlineWidth: number = 1): CSSObject {\n if (!shadow) return EMPTY_RECORD\n\n const outline = `0 0 0 ${rem(outlineWidth)} var(--card-shadow-outline-color)`\n const umbra = toBoxShadow(shadow.umbra, 'var(--card-shadow-umbra-color)')\n const penumbra = toBoxShadow(shadow.penumbra, 'var(--card-shadow-penumbra-color)')\n const ambient = toBoxShadow(shadow.ambient, 'var(--card-shadow-ambient-color)')\n\n return {boxShadow: `${outline}, ${umbra}, ${penumbra}, ${ambient}`}\n}\n\nexport function responsiveShadowStyle(props: ResponsiveShadowStyleProps & ThemeProps): CSSObject[] {\n const {card, media, shadow} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$shadow, (index) =>\n shadowStyle(shadow[index], card.shadow.outline),\n )\n}\n","import {getTheme_v2} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\nimport {ThemeProps} from '../../styles'\n\nexport function labelBaseStyle(\n props: {$accent?: boolean; $muted: boolean} & ThemeProps,\n): ReturnType<typeof css> {\n const {$accent, $muted} = props\n const {font} = getTheme_v2(props.theme)\n\n return css`\n text-transform: uppercase;\n\n ${$accent &&\n css`\n color: var(--card-accent-fg-color);\n `}\n\n ${$muted &&\n css`\n color: var(--card-muted-fg-color);\n `}\n\n & code {\n font-family: ${font.code.family};\n border-radius: 1px;\n }\n\n & a {\n text-decoration: none;\n border-radius: 1px;\n }\n\n & svg {\n /* Certain popular CSS libraries changes the defaults for SVG display */\n /* Make sure SVGs are rendered as inline elements */\n display: inline;\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\n }\n `\n}\n","import {ThemeFontWeightKey} from '@sanity/ui/theme'\nimport {forwardRef, useMemo} from 'react'\nimport {styled} from 'styled-components'\nimport {_getArrayProp} from '../../styles'\nimport {responsiveLabelFont, responsiveTextAlignStyle} from '../../styles/internal'\nimport {TextAlign} from '../../types'\nimport {labelBaseStyle} from './styles'\n\n/**\n * @public\n */\nexport interface LabelProps {\n accent?: boolean\n align?: TextAlign | TextAlign[]\n as?: React.ElementType | keyof JSX.IntrinsicElements\n muted?: boolean\n size?: number | number[]\n /**\n * Controls how overflowing text is treated.\n * Use `textOverflow=\"ellipsis\"` to render text as a single line which is concatenated with a `…` symbol.\n * @beta\n */\n textOverflow?: 'ellipsis'\n weight?: ThemeFontWeightKey\n}\n\nconst Root = styled.div<{\n $accent?: boolean\n $align: TextAlign[]\n $muted: boolean\n $size: number[]\n}>(responsiveLabelFont, responsiveTextAlignStyle, labelBaseStyle)\n\nconst SpanWithTextOverflow = styled.span`\n display: block;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n overflow: clip;\n`\n\n/**\n * Typographic labels.\n *\n * @public\n */\nexport const Label = forwardRef(function Label(\n props: LabelProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'size'>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {\n accent,\n align,\n children: childrenProp,\n muted = false,\n size = 2,\n textOverflow,\n weight,\n ...restProps\n } = props\n\n const $size = useMemo(() => _getArrayProp(size), [size])\n const $align = useMemo(() => _getArrayProp(align), [align])\n\n let children = childrenProp\n\n if (textOverflow === 'ellipsis') {\n children = <SpanWithTextOverflow>{children}</SpanWithTextOverflow>\n } else {\n children = <span>{children}</span>\n }\n\n return (\n <Root\n data-ui=\"Label\"\n {...restProps}\n $accent={accent}\n $align={$align}\n $size={$size}\n $muted={muted}\n $weight={weight}\n ref={ref}\n >\n {children}\n </Root>\n )\n})\n","import {CSSObject, getTheme_v2} from '@sanity/ui/theme'\nimport {rem, _responsive, ThemeProps} from '../../styles'\nimport {focusRingStyle} from '../../styles/internal'\nimport {AvatarRootStyleProps, ResponsiveAvatarSizeStyleProps} from './types'\n\nexport const avatarStyle = {\n root: avatarRootStyle,\n arrow: avatarArrowStyle,\n bgStroke: avatarBgStrokeStyle,\n stroke: avatarStrokeStyle,\n initials: avatarInitialsStyle,\n image: avatarImageStyle,\n}\n\nfunction avatarArrowStyle(): CSSObject {\n return {\n position: 'absolute',\n boxSizing: 'border-box',\n zIndex: 0,\n opacity: 0,\n transition: 'all 0.2s linear',\n transform: 'rotate(-90deg) translate3d(0, 6px, 0)',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n\n '& > svg': {\n width: '11px',\n height: '7px',\n position: 'absolute',\n top: '-5px',\n left: '50%',\n transform: 'translateX(-6px)',\n\n '&:not([hidden])': {\n display: 'block',\n },\n },\n\n \"[data-arrow-position='inside'] > &\": {\n transform: 'rotate(-90deg) translate3d(0, 6px, 0)',\n opacity: 0,\n },\n\n \"[data-arrow-position='top'] > &\": {\n opacity: 1,\n transform: 'rotate(0deg)',\n },\n\n \"[data-arrow-position='bottom'] > &\": {\n opacity: 1,\n transform: 'rotate(-180deg)',\n },\n }\n}\n\nexport function avatarRootStyle(props: AvatarRootStyleProps & ThemeProps): CSSObject {\n const {$color} = props\n const {avatar} = getTheme_v2(props.theme)\n\n return {\n '--avatar-bg-color': `var(--card-avatar-${$color}-bg-color)`,\n '--avatar-fg-color': `var(--card-avatar-${$color}-fg-color)`,\n\n backgroundColor: 'var(--avatar-bg-color)',\n position: 'relative',\n boxSizing: 'border-box',\n userSelect: 'none',\n boxShadow: '0 0 0 1px var(--card-bg-color)',\n\n '&[data-status=\"inactive\"]': {\n opacity: 0.5,\n },\n\n '&>svg': {\n '&:not([hidden])': {\n display: 'block',\n },\n },\n\n /* &:is(button) */\n '&[data-as=\"button\"]': {\n WebkitFontSmoothing: 'inherit',\n appearance: 'none',\n margin: 0,\n padding: 0,\n border: 0,\n font: 'inherit',\n color: 'inherit',\n outline: 'none',\n\n '&:focus': {\n boxShadow: focusRingStyle({focusRing: avatar.focusRing}),\n },\n\n '&:focus:not(:focus-visible)': {\n boxShadow: 'none',\n },\n },\n }\n}\n\nexport function responsiveAvatarSizeStyle(\n props: ResponsiveAvatarSizeStyleProps & ThemeProps,\n): CSSObject[] {\n const {avatar, media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$size, (size) => {\n const avatarSize = avatar.sizes[size] || avatar.sizes[0]\n\n return {\n width: rem(avatarSize.size),\n height: rem(avatarSize.size),\n borderRadius: rem(avatarSize.size / 2),\n\n '&>svg': {\n width: rem(avatarSize.size),\n height: rem(avatarSize.size),\n borderRadius: rem(avatarSize.size / 2),\n },\n }\n })\n}\n\nexport function avatarImageStyle(): CSSObject {\n return {\n position: 'relative',\n }\n}\n\nexport function avatarInitialsStyle(): CSSObject {\n return {\n width: '100%',\n height: '100%',\n color: 'var(--avatar-fg-color)',\n alignItems: 'center',\n justifyContent: 'center',\n textTransform: 'uppercase',\n textAlign: 'center',\n borderRadius: '50%',\n\n '&:not([hidden])': {\n display: 'flex',\n },\n }\n}\n\nfunction avatarBgStrokeStyle(): CSSObject {\n return {\n strokeWidth: '4px',\n stroke: 'var(--card-bg-color)',\n }\n}\n\nfunction avatarStrokeStyle(): CSSObject {\n return {\n strokeWidth: '2px',\n stroke: 'var(--avatar-bg-color)',\n\n '[data-status=\"editing\"] &': {\n strokeDasharray: '2 4',\n strokeLinecap: 'round',\n },\n }\n}\n","import {ThemeColorAvatarColorKey} from '@sanity/ui/theme'\nimport {forwardRef, useCallback, useEffect, useId, useMemo, useState} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {styled} from 'styled-components'\nimport {_getArrayProp} from '../../styles'\nimport {useTheme_v2} from '../../theme'\nimport {AvatarPosition, AvatarSize, AvatarStatus} from '../../types'\nimport {Label} from '../label'\nimport {avatarStyle, responsiveAvatarSizeStyle} from './styles'\n\n/**\n * @public\n */\nexport interface AvatarProps {\n /** @beta */\n __unstable_hideInnerStroke?: boolean\n animateArrowFrom?: AvatarPosition\n arrowPosition?: AvatarPosition\n as?: React.ElementType | keyof JSX.IntrinsicElements\n color?: ThemeColorAvatarColorKey\n initials?: string\n onImageLoadError?: (event: Error) => void\n size?: AvatarSize | AvatarSize[]\n src?: string\n /**\n * The status of the entity this Avatar represents.\n * @alpha\n */\n status?: AvatarStatus\n title?: string\n}\n\nconst Root = styled.div<{$color: ThemeColorAvatarColorKey; $size: AvatarSize[]}>(\n responsiveAvatarSizeStyle,\n avatarStyle.root,\n)\n\nconst Arrow = styled.div(avatarStyle.arrow)\n\nconst BgStroke = styled.ellipse(avatarStyle.bgStroke)\n\nconst Stroke = styled.ellipse(avatarStyle.stroke)\n\nconst Initials = styled.div(avatarStyle.initials)\n\nconst InitialsLabel = styled(Label)({\n color: 'inherit',\n})\n\nconst Image = styled.svg(avatarStyle.image)\n\n/**\n * Avatars are used to represent people and other agents (e.g. bots).\n *\n * @public\n */\nexport const Avatar = forwardRef(function Avatar(\n props: AvatarProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'ref'>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {\n __unstable_hideInnerStroke,\n as: asProp,\n color = 'gray',\n src,\n title,\n initials,\n onImageLoadError,\n arrowPosition: arrowPositionProp,\n animateArrowFrom,\n status = 'online',\n size: sizeProp = 1,\n ...restProps\n } = props\n const {avatar} = useTheme_v2()\n const as = isValidElementType(asProp) ? asProp : 'div'\n const size = useMemo(() => _getArrayProp(sizeProp), [sizeProp])\n\n // @todo: remove this\n const avatarSize = avatar.sizes[size[0]] || avatar.sizes[0]\n const _sizeRem = avatarSize.size\n const _radius = _sizeRem / 2\n\n const elementId = useId()\n const [arrowPosition, setArrowPosition] = useState<AvatarPosition | undefined>(\n animateArrowFrom || arrowPositionProp || 'inside',\n )\n\n const [imageFailed, setImageFailed] = useState<boolean>(false)\n\n const imageId = `avatar-image-${elementId}`\n\n useEffect(() => {\n if (arrowPosition === arrowPositionProp) return undefined\n\n // Start animation in the next frame\n const raf = requestAnimationFrame(() => setArrowPosition(arrowPositionProp))\n\n return () => cancelAnimationFrame(raf)\n }, [arrowPosition, arrowPositionProp])\n\n useEffect(() => {\n if (src) setImageFailed(false)\n }, [src])\n\n const handleImageError = useCallback(() => {\n setImageFailed(true)\n\n if (onImageLoadError) {\n onImageLoadError(new Error('Avatar: the image failed to load'))\n }\n }, [onImageLoadError])\n\n const initialsSize = useMemo(\n () =>\n size.map((s) => {\n if (s === 1) return 1\n if (s === 2) return 3\n if (s === 3) return 5\n\n return 0\n }),\n [size],\n )\n\n return (\n <Root\n as={as}\n data-as={typeof as === 'string' ? as : undefined}\n data-ui=\"Avatar\"\n {...restProps}\n $color={color}\n $size={size}\n aria-label={title}\n data-arrow-position={arrowPosition}\n data-status={status}\n ref={ref}\n title={title}\n >\n <Arrow>\n <svg width=\"11\" height=\"7\" viewBox=\"0 0 11 7\" fill=\"none\">\n <path\n d=\"M6.67948 1.50115L11 7L0 7L4.32052 1.50115C4.92109 0.736796 6.07891 0.736795 6.67948 1.50115Z\"\n fill={color}\n />\n </svg>\n </Arrow>\n\n {!imageFailed && src && (\n <Image viewBox={`0 0 ${_sizeRem} ${_sizeRem}`} fill=\"none\">\n <defs>\n <pattern id={imageId} patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <image\n href={src}\n width=\"1\"\n height=\"1\"\n // eslint-disable-next-line react/no-unknown-property\n onError={handleImageError}\n />\n </pattern>\n </defs>\n\n <circle cx={_radius} cy={_radius} r={_radius} fill={`url(#${imageId})`} />\n\n {!__unstable_hideInnerStroke && (\n <BgStroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n vectorEffect=\"non-scaling-stroke\"\n />\n )}\n\n <Stroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n vectorEffect=\"non-scaling-stroke\"\n />\n </Image>\n )}\n\n {(imageFailed || !src) && initials && (\n <>\n <Initials>\n <InitialsLabel forwardedAs=\"span\" size={initialsSize} weight=\"medium\">\n {initials}\n </InitialsLabel>\n </Initials>\n </>\n )}\n </Root>\n )\n})\n","import {getTheme_v2} from '@sanity/ui/theme'\nimport {forwardRef, useMemo} from 'react'\nimport {styled, css} from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {rem, _responsive, ThemeProps, _getArrayProp} from '../../styles'\nimport {AvatarSize} from '../../types'\nimport {Label} from '../label'\n\nfunction _responsiveAvatarCounterSizeStyle(props: {$size: AvatarSize[]} & ThemeProps) {\n const {avatar, media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$size, (size) => {\n const avatarSize = avatar.sizes[size]\n\n if (!avatarSize) return EMPTY_RECORD\n\n return {\n borderRadius: rem(avatarSize.size / 2),\n minWidth: rem(avatarSize.size),\n height: rem(avatarSize.size),\n }\n })\n}\n\nfunction _avatarCounterBaseStyle(props: ThemeProps) {\n const {space} = getTheme_v2(props.theme)\n\n return css`\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n user-select: none;\n color: inherit;\n color: var(--card-fg-color);\n background: var(--card-bg-color);\n box-shadow:\n 0 0 0 1px var(--card-bg-color),\n inset 0 0 0 1px var(--card-hairline-hard-color);\n padding: 0 ${rem(space[2])};\n\n &:not([hidden]) {\n display: flex;\n }\n `\n}\n\nconst Root = styled.div<{$size: AvatarSize[]}>(\n _responsiveAvatarCounterSizeStyle,\n _avatarCounterBaseStyle,\n)\n\n/**\n * @public\n */\nexport interface AvatarCounterProps {\n count: number\n size?: AvatarSize | AvatarSize[]\n /** @deprecated No longer supported. */\n tone?: 'navbar'\n}\n\n/**\n * @public\n */\nexport const AvatarCounter = forwardRef(function AvatarCounter(\n props: AvatarCounterProps,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {count, size: sizeProp = 1} = props\n const size = useMemo(() => _getArrayProp(sizeProp), [sizeProp])\n\n const fontSize = useMemo(\n () =>\n size.map((s) => {\n if (s === 1) return 1\n if (s === 2) return 3\n if (s === 3) return 5\n\n return 0\n }),\n [size],\n )\n\n return (\n <Root $size={size} data-ui=\"AvatarCounter\" ref={ref}>\n <Label as=\"span\" size={fontSize} weight=\"medium\">\n {count}\n </Label>\n </Root>\n )\n})\n","import {getTheme_v2} from '@sanity/ui/theme'\nimport {Children, cloneElement, forwardRef, isValidElement, useMemo} from 'react'\nimport {styled, css} from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {rem, _responsive, ThemeProps, _getArrayProp} from '../../styles'\nimport {AvatarSize} from '../../types'\nimport {AvatarCounter} from './avatarCounter'\n\nconst BASE_STYLES = css`\n white-space: nowrap;\n\n & > div {\n vertical-align: top;\n\n &:not([hidden]) {\n display: inline-block;\n }\n }\n`\n\nfunction avatarStackStyle() {\n return BASE_STYLES\n}\n\nfunction responsiveAvatarStackSizeStyle(props: {$size: AvatarSize[]} & ThemeProps) {\n const {avatar, media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$size, (size) => {\n const avatarSize = avatar.sizes[size]\n\n if (!avatarSize) return EMPTY_RECORD\n\n return {\n '& > div + div': {\n marginLeft: rem(avatarSize.distance),\n },\n }\n })\n}\n\nconst Root = styled.div<{$size: AvatarSize[]}>(responsiveAvatarStackSizeStyle, avatarStackStyle)\n\n/**\n * @public\n */\nexport interface AvatarStackProps {\n children: React.ReactNode\n maxLength?: number\n size?: AvatarSize | AvatarSize[]\n /** @deprecated No longer supported. */\n tone?: 'navbar'\n}\n\n/**\n * @public\n */\nexport const AvatarStack = forwardRef(function AvatarStack(\n props: AvatarStackProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'ref'>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {\n children: childrenProp,\n maxLength: maxLengthProp = 4,\n size: sizeProp = 1,\n ...restProps\n } = props\n const children = useMemo<React.ReactElement[]>(\n () => Children.toArray(childrenProp).filter(isValidElement),\n [childrenProp],\n )\n const maxLength = Math.max(maxLengthProp, 0)\n const size = useMemo(() => _getArrayProp(sizeProp), [sizeProp])\n\n const len = children.length\n const visibleCount = maxLength - 1\n const extraCount = len - visibleCount\n const visibleChildren = extraCount > 1 ? children.slice(extraCount, len) : children\n\n return (\n <Root data-ui=\"AvatarStack\" {...restProps} ref={ref} $size={size}>\n {len === 0 && (\n <div>\n <AvatarCounter count={len} size={size} />\n </div>\n )}\n\n {len !== 0 && extraCount > 1 && (\n <div>\n <AvatarCounter count={extraCount} size={size} />\n </div>\n )}\n\n {visibleChildren.map((child, childIndex) => (\n <div key={String(childIndex)}>{cloneElement(child, {size})}</div>\n ))}\n </Root>\n )\n})\n","import {forwardRef, useMemo} from 'react'\nimport {styled} from 'styled-components'\nimport {_getArrayProp} from '../../styles'\nimport {\n boxStyle,\n flexItemStyle,\n FlexItemStyleProps,\n responsiveBoxStyle,\n ResponsiveBoxStyleProps,\n responsiveGridItemStyle,\n ResponsiveGridItemStyleProps,\n responsivePaddingStyle,\n ResponsivePaddingStyleProps,\n responsiveMarginStyle,\n ResponsiveMarginStyleProps,\n} from '../../styles/internal'\nimport {\n ResponsiveBoxProps,\n ResponsiveFlexItemProps,\n ResponsiveGridItemProps,\n ResponsiveMarginProps,\n ResponsivePaddingProps,\n} from '../types'\n\n/**\n * @public\n */\nexport interface BoxProps\n extends ResponsiveFlexItemProps,\n ResponsiveBoxProps,\n ResponsiveGridItemProps,\n ResponsiveMarginProps,\n ResponsivePaddingProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n forwardedAs?: React.ElementType | keyof JSX.IntrinsicElements\n}\n\nconst Root = styled.div<\n FlexItemStyleProps &\n ResponsiveBoxStyleProps &\n ResponsiveGridItemStyleProps &\n ResponsiveMarginStyleProps &\n ResponsivePaddingStyleProps\n>(\n boxStyle,\n flexItemStyle,\n responsiveBoxStyle,\n responsiveGridItemStyle,\n responsiveMarginStyle,\n responsivePaddingStyle,\n)\n\n/**\n * The `Box` component is a basic layout wrapper component which provides utility properties\n * for flex, margins and padding.\n *\n * @public\n */\nexport const Box = forwardRef(function Box(\n props: BoxProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height'>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {\n as: asProp = 'div',\n column,\n columnStart,\n columnEnd,\n display = 'block',\n flex,\n height,\n margin = 0,\n marginX,\n marginY,\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n overflow,\n padding = 0,\n paddingX,\n paddingY,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n row,\n rowStart,\n rowEnd,\n sizing,\n ...restProps\n } = props\n\n const $column = useMemo(() => _getArrayProp(column), [column])\n const $columnStart = useMemo(() => _getArrayProp(columnStart), [columnStart])\n const $columnEnd = useMemo(() => _getArrayProp(columnEnd), [columnEnd])\n const $display = useMemo(() => _getArrayProp(display), [display])\n const $flex = useMemo(() => _getArrayProp(flex), [flex])\n const $height = useMemo(() => _getArrayProp(height), [height])\n const $margin = useMemo(() => _getArrayProp(margin), [margin])\n const $marginX = useMemo(() => _getArrayProp(marginX), [marginX])\n const $marginY = useMemo(() => _getArrayProp(marginY), [marginY])\n const $marginTop = useMemo(() => _getArrayProp(marginTop), [marginTop])\n const $marginRight = useMemo(() => _getArrayProp(marginRight), [marginRight])\n const $marginBottom = useMemo(() => _getArrayProp(marginBottom), [marginBottom])\n const $marginLeft = useMemo(() => _getArrayProp(marginLeft), [marginLeft])\n const $overflow = useMemo(() => _getArrayProp(overflow), [overflow])\n const $padding = useMemo(() => _getArrayProp(padding), [padding])\n const $paddingX = useMemo(() => _getArrayProp(paddingX), [paddingX])\n const $paddingY = useMemo(() => _getArrayProp(paddingY), [paddingY])\n const $paddingTop = useMemo(() => _getArrayProp(paddingTop), [paddingTop])\n const $paddingRight = useMemo(() => _getArrayProp(paddingRight), [paddingRight])\n const $paddingBottom = useMemo(() => _getArrayProp(paddingBottom), [paddingBottom])\n const $paddingLeft = useMemo(() => _getArrayProp(paddingLeft), [paddingLeft])\n const $row = useMemo(() => _getArrayProp(row), [row])\n const $rowStart = useMemo(() => _getArrayProp(rowStart), [rowStart])\n const $rowEnd = useMemo(() => _getArrayProp(rowEnd), [rowEnd])\n const $sizing = useMemo(() => _getArrayProp(sizing), [sizing])\n\n return (\n <Root\n data-as={typeof asProp === 'string' ? asProp : undefined}\n data-ui=\"Box\"\n {...restProps}\n $column={$column}\n $columnStart={$columnStart}\n $columnEnd={$columnEnd}\n $display={$display}\n $flex={$flex}\n $height={$height}\n $margin={$margin}\n $marginX={$marginX}\n $marginY={$marginY}\n $marginTop={$marginTop}\n $marginRight={$marginRight}\n $marginBottom={$marginBottom}\n $marginLeft={$marginLeft}\n $overflow={$overflow}\n $padding={$padding}\n $paddingX={$paddingX}\n $paddingY={$paddingY}\n $paddingTop={$paddingTop}\n $paddingRight={$paddingRight}\n $paddingBottom={$paddingBottom}\n $paddingLeft={$paddingLeft}\n $row={$row}\n $rowStart={$rowStart}\n $rowEnd={$rowEnd}\n $sizing={$sizing}\n as={asProp}\n ref={ref}\n >\n {props.children}\n </Root>\n )\n})\n","import {getTheme_v2} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\nimport {ThemeProps} from '../../styles'\n\nexport function textBaseStyle(\n props: {$accent?: boolean; $muted?: boolean} & ThemeProps,\n): ReturnType<typeof css> {\n const {$accent, $muted} = props\n const {font} = getTheme_v2(props.theme)\n\n return css`\n color: var(--card-fg-color);\n\n ${$accent &&\n css`\n color: var(--card-accent-fg-color);\n `}\n\n ${$muted &&\n css`\n color: var(--card-muted-fg-color);\n `}\n\n & code {\n font-family: ${font.code.family};\n border-radius: 1px;\n background-color: var(--card-code-bg-color);\n color: var(--card-code-fg-color);\n }\n\n & a {\n text-decoration: none;\n border-radius: 1px;\n color: var(--card-link-color);\n outline: none;\n\n @media (hover: hover) {\n &:hover {\n text-decoration: underline;\n }\n }\n\n &:focus {\n box-shadow:\n 0 0 0 1px var(--card-bg-color),\n 0 0 0 3px var(--card-focus-ring-color);\n }\n\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n }\n\n & strong {\n font-weight: ${font.text.weights.bold};\n }\n\n & svg {\n /* Certain popular CSS libraries changes the defaults for SVG display */\n /* Make sure SVGs are rendered as inline elements */\n display: inline;\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\n color: var(--card-icon-color);\n\n & path {\n vector-effect: non-scaling-stroke !important;\n }\n }\n `\n}\n","import {ThemeFontWeightKey} from '@sanity/ui/theme'\nimport {forwardRef, useMemo} from 'react'\nimport {styled} from 'styled-components'\nimport {_getArrayProp} from '../../styles'\nimport {\n ResponsiveFontStyleProps,\n responsiveTextAlignStyle,\n responsiveTextFont,\n} from '../../styles/internal'\nimport {TextAlign} from '../../types'\nimport {textBaseStyle} from './styles'\n\n/**\n * @public\n */\nexport interface TextProps {\n accent?: boolean\n align?: TextAlign | TextAlign[]\n as?: React.ElementType | keyof JSX.IntrinsicElements\n /** When `true` the text color will be muted. */\n muted?: boolean\n size?: number | number[]\n /**\n * Controls how overflowing text is treated.\n * Use `textOverflow=\"ellipsis\"` to render text as a single line which is concatenated with a `…` symbol.\n * @beta\n */\n textOverflow?: 'ellipsis'\n weight?: ThemeFontWeightKey\n}\n\nconst Root = styled.div<ResponsiveFontStyleProps>(\n responsiveTextFont,\n responsiveTextAlignStyle,\n textBaseStyle,\n)\n\nconst SpanWithTextOverflow = styled.span`\n display: block;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n overflow: clip;\n`\n\n/**\n * The `Text` component is an agile, themed typographic element.\n *\n * @public\n */\nexport const Text = forwardRef(function Text(\n props: TextProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'size'>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {\n accent = false,\n align,\n children: childrenProp,\n muted = false,\n size = 2,\n textOverflow,\n weight,\n ...restProps\n } = props\n\n const $size = useMemo(() => _getArrayProp(size), [size])\n const $align = useMemo(() => _getArrayProp(align), [align])\n\n let children = childrenProp\n\n if (textOverflow === 'ellipsis') {\n children = <SpanWithTextOverflow>{children}</SpanWithTextOverflow>\n }\n\n return (\n <Root\n data-ui=\"Text\"\n {...restProps}\n $accent={accent}\n $align={$align}\n $size={$size}\n $muted={muted}\n ref={ref}\n $weight={weight}\n >\n <span>{children}</span>\n </Root>\n )\n})\n","import {CSSObject} from '@sanity/ui/theme'\nimport {BadgeStyleProps} from './types'\n\nexport function badgeStyle(props: BadgeStyleProps): CSSObject {\n const {$tone} = props\n\n return {\n '--card-bg-color': `var(--card-badge-${$tone}-bg-color)`,\n '--card-fg-color': `var(--card-badge-${$tone}-fg-color)`,\n\n backgroundColor: 'var(--card-bg-color)',\n cursor: 'default',\n\n '&:not([hidden])': {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n }\n}\n","import {forwardRef, useMemo} from 'react'\nimport {styled} from 'styled-components'\nimport {_getArrayProp} from '../../styles'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/internal'\nimport {BadgeMode, BadgeTone} from '../../types'\nimport {Box, BoxProps} from '../box'\nimport {Text} from '../text'\nimport {ResponsiveRadiusProps} from '../types'\nimport {badgeStyle} from './styles'\nimport {BadgeStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface BadgeProps extends BoxProps, ResponsiveRadiusProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n fontSize?: number | number[]\n /** @deprecated No longer used. */\n mode?: BadgeMode\n tone?: BadgeTone\n}\n\nconst Root = styled(Box)<BadgeStyleProps & ResponsiveRadiusStyleProps>(\n responsiveRadiusStyle,\n badgeStyle,\n)\n\n/**\n * Badges are used to tag resources.\n *\n * @public\n */\nexport const Badge = forwardRef(function Badge(\n props: BadgeProps & React.HTMLProps<HTMLDivElement>,\n ref,\n) {\n const {\n children,\n fontSize = 1,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n mode: _deprecated_mode,\n padding = 1,\n radius = 'full',\n tone = 'default',\n ...restProps\n } = props\n\n const $radius = useMemo(() => _getArrayProp(radius), [radius])\n const $padding = useMemo(() => _getArrayProp(padding), [padding])\n\n return (\n <Root\n data-ui=\"Badge\"\n {...restProps}\n $tone={tone}\n $radius={$radius}\n padding={$padding}\n ref={ref}\n >\n <Text size={fontSize}>{children}</Text>\n </Root>\n )\n})\n","import {forwardRef, useMemo} from 'react'\nimport {styled} from 'styled-components'\nimport {_getArrayProp} from '../../styles'\nimport {\n flexItemStyle,\n FlexItemStyleProps,\n responsiveFlexStyle,\n ResponsiveFlexStyleProps,\n} from '../../styles/internal'\nimport {Box, BoxProps} from '../box'\nimport {ResponsiveFlexProps, ResponsiveFlexItemProps} from '../types'\n\n/**\n * @public\n */\nexport interface FlexProps\n extends Omit<BoxProps, 'display'>,\n ResponsiveFlexProps,\n ResponsiveFlexItemProps {\n gap?: number | number[]\n}\n\nconst Root = styled(Box)<FlexItemStyleProps & ResponsiveFlexStyleProps>(\n flexItemStyle,\n responsiveFlexStyle,\n)\n\n/**\n * The `Flex` component is a wrapper component for flexible elements (`Box`, `Card` and `Flex`).\n *\n * @public\n */\nexport const Flex = forwardRef(function Flex(\n props: FlexProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'wrap'>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {align, as, direction = 'row', gap, justify, wrap, ...restProps} = props\n\n const $align = useMemo(() => _getArrayProp(align), [align])\n const $direction = useMemo(() => _getArrayProp(direction), [direction])\n const $gap = useMemo(() => _getArrayProp(gap), [gap])\n const $justify = useMemo(() => _getArrayProp(justify), [justify])\n const $wrap = useMemo(() => _getArrayProp(wrap), [wrap])\n\n return (\n <Root\n data-ui=\"Flex\"\n {...restProps}\n $align={$align}\n $direction={$direction}\n $gap={$gap}\n $justify={$justify}\n $wrap={$wrap}\n forwardedAs={as}\n ref={ref}\n />\n )\n})\n","import {SpinnerIcon} from '@sanity/icons'\nimport {forwardRef} from 'react'\nimport {styled, keyframes} from 'styled-components'\nimport {Text} from '../text'\n\n/**\n * @public\n */\nexport interface SpinnerProps {\n muted?: boolean\n size?: number | number[]\n}\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n`\n\nconst Root = styled(Text)`\n & > span > svg {\n animation: ${rotate} 500ms linear infinite;\n }\n`\n\n/**\n * Indicate that something is loading for an indeterminate amount of time.\n *\n * @public\n */\nexport const Spinner = forwardRef(function Spinner(\n props: SpinnerProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'size'>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n return (\n <Root data-ui=\"Spinner\" {...props} ref={ref}>\n <SpinnerIcon />\n </Root>\n )\n})\n","import {ThemeColorState_v2, ThemeColorCard_v2} from '@sanity/ui/theme'\nimport {CSSObject} from '@sanity/ui/theme'\n\n/**\n * @internal\n */\nexport function _cardColorStyle(\n base: ThemeColorCard_v2,\n color: ThemeColorState_v2,\n checkered = false,\n): CSSObject {\n return {\n // from base\n\n '--card-backdrop-color': base.backdrop,\n\n '--card-focus-ring-color': base.focusRing,\n\n '--card-shadow-outline-color': base.shadow.outline,\n '--card-shadow-umbra-color': base.shadow.umbra,\n '--card-shadow-penumbra-color': base.shadow.penumbra,\n '--card-shadow-ambient-color': base.shadow.ambient,\n\n // from state\n\n '--card-accent-fg-color': color.accent.fg,\n\n '--card-avatar-gray-bg-color': color.avatar.gray.bg,\n '--card-avatar-gray-fg-color': color.avatar.gray.fg,\n '--card-avatar-blue-bg-color': color.avatar.blue.bg,\n '--card-avatar-blue-fg-color': color.avatar.blue.fg,\n '--card-avatar-purple-bg-color': color.avatar.purple.bg,\n '--card-avatar-purple-fg-color': color.avatar.purple.fg,\n '--card-avatar-magenta-bg-color': color.avatar.magenta.bg,\n '--card-avatar-magenta-fg-color': color.avatar.magenta.fg,\n '--card-avatar-red-bg-color': color.avatar.red.bg,\n '--card-avatar-red-fg-color': color.avatar.red.fg,\n '--card-avatar-orange-bg-color': color.avatar.orange.bg,\n '--card-avatar-orange-fg-color': color.avatar.orange.fg,\n '--card-avatar-yellow-bg-color': color.avatar.yellow.bg,\n '--card-avatar-yellow-fg-color': color.avatar.yellow.fg,\n '--card-avatar-green-bg-color': color.avatar.green.bg,\n '--card-avatar-green-fg-color': color.avatar.green.fg,\n '--card-avatar-cyan-bg-color': color.avatar.cyan.bg,\n '--card-avatar-cyan-fg-color': color.avatar.cyan.fg,\n\n '--card-bg-color': color.bg,\n '--card-bg-image': checkered\n ? `repeating-conic-gradient(${color.bg} 0% 25%, ${color.muted.bg} 0% 50%)`\n : undefined,\n\n '--card-border-color': color.border,\n\n '--card-badge-default-bg-color': color.badge.default.bg,\n '--card-badge-default-dot-color': color.badge.default.dot,\n '--card-badge-default-fg-color': color.badge.default.fg,\n '--card-badge-default-icon-color': color.badge.default.icon,\n '--card-badge-primary-bg-color': color.badge.primary.bg,\n '--card-badge-primary-dot-color': color.badge.primary.dot,\n '--card-badge-primary-fg-color': color.badge.primary.fg,\n '--card-badge-primary-icon-color': color.badge.primary.icon,\n '--card-badge-positive-bg-color': color.badge.positive.bg,\n '--card-badge-positive-dot-color': color.badge.positive.dot,\n '--card-badge-positive-fg-color': color.badge.positive.fg,\n '--card-badge-positive-icon-color': color.badge.positive.icon,\n '--card-badge-caution-bg-color': color.badge.caution.bg,\n '--card-badge-caution-dot-color': color.badge.caution.dot,\n '--card-badge-caution-fg-color': color.badge.caution.fg,\n '--card-badge-caution-icon-color': color.badge.caution.icon,\n '--card-badge-critical-bg-color': color.badge.critical.bg,\n '--card-badge-critical-dot-color': color.badge.critical.dot,\n '--card-badge-critical-fg-color': color.badge.critical.fg,\n '--card-badge-critical-icon-color': color.badge.critical.icon,\n\n '--card-code-bg-color': color.code.bg,\n '--card-code-fg-color': color.code.fg,\n\n '--card-fg-color': color.fg,\n\n '--card-icon-color': color.icon,\n\n '--card-kbd-bg-color': color.kbd.bg,\n '--card-kbd-border-color': color.kbd.border,\n '--card-kbd-fg-color': color.kbd.fg,\n\n '--card-link-fg-color': color.link.fg,\n\n '--card-muted-bg-color': color.muted.bg,\n '--card-muted-fg-color': color.muted.fg,\n\n '--card-skeleton-color-from': color.skeleton.from,\n '--card-skeleton-color-to': color.skeleton.to,\n\n // deprecated variables (kept for legacy)\n\n '--card-bg2-color': color.muted.bg,\n '--card-link-color': color.link.fg,\n '--card-hairline-soft-color': color.border,\n '--card-hairline-hard-color': color.border,\n }\n}\n","import {CSSObject, getTheme_v2} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {_cardColorStyle} from '../../styles/card'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/internal'\nimport {ButtonMode, ButtonTone, ButtonWidth} from '../../types'\n\n/**\n * @internal\n */\nexport function buttonBaseStyles(\n props: {$width?: ButtonWidth} & ThemeProps,\n): ReturnType<typeof css> {\n const {$width} = props\n const {style} = getTheme_v2(props.theme)\n\n return css`\n ${style?.button};\n\n -webkit-font-smoothing: inherit;\n appearance: none;\n display: inline-flex;\n align-items: center;\n font: inherit;\n border: 0;\n outline: none;\n user-select: none;\n text-decoration: none;\n border: 0;\n box-sizing: border-box;\n padding: 0;\n margin: 0;\n white-space: nowrap;\n text-align: left;\n position: relative;\n vertical-align: top;\n\n ${$width === 'fill' &&\n css`\n width: -moz-available;\n width: -webkit-fill-available;\n width: stretch;\n `}\n\n & > span {\n display: block;\n flex: 1;\n min-width: 0;\n border-radius: inherit;\n }\n\n &::-moz-focus-inner {\n border: 0;\n padding: 0;\n }\n `\n}\n\nfunction combineBoxShadow(...boxShadows: (string | undefined)[]): string {\n return boxShadows.filter(Boolean).join(',')\n}\n\n/**\n * @internal\n */\nexport function buttonColorStyles(\n props: {$mode: ButtonMode; $tone: ButtonTone} & ThemeProps,\n): CSSObject[] {\n const {$mode} = props\n const {button, color: baseColor, style} = getTheme_v2(props.theme)\n const shadow = props.$mode === 'ghost'\n const mode = baseColor.button[$mode] || baseColor.button.default\n const color = mode[props.$tone] || mode.default\n const border = {\n width: button.border.width,\n color: 'var(--card-border-color)',\n }\n // const defaultBoxShadow = `inset 0px -1.5px 0px ${buttonTheme.border.width}px color-mix(in srgb, var(--card-border-color) 25%, var(--card-bg-color))`\n const defaultBoxShadow = undefined\n\n return [\n _cardColorStyle(baseColor, color.enabled),\n {\n backgroundColor: 'var(--card-bg-color)',\n color: 'var(--card-fg-color)',\n boxShadow: focusRingBorderStyle(border),\n '&:disabled, &[data-disabled=\"true\"]': _cardColorStyle(baseColor, color.disabled),\n \"&:not([data-disabled='true'])\": {\n boxShadow: combineBoxShadow(\n focusRingBorderStyle(border),\n shadow ? defaultBoxShadow : undefined,\n ),\n '&:focus': {\n boxShadow: focusRingStyle({\n base: baseColor,\n border: {width: 2, color: baseColor.bg},\n focusRing: button.focusRing,\n }),\n },\n '&:focus:not(:focus-visible)': {\n boxShadow: combineBoxShadow(\n focusRingBorderStyle(border),\n shadow ? defaultBoxShadow : undefined,\n ),\n },\n '@media (hover: hover)': {\n '&:hover': _cardColorStyle(baseColor, color.hovered),\n '&:active': _cardColorStyle(baseColor, color.pressed),\n '&[data-hovered]': _cardColorStyle(baseColor, color.hovered),\n },\n '&[data-selected]': _cardColorStyle(baseColor, color.pressed),\n },\n },\n style?.button?.root,\n ].filter(Boolean) as CSSObject[]\n}\n","import {forwardRef, isValidElement, useMemo} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {styled} from 'styled-components'\nimport {ThemeProps, _getArrayProp} from '../../styles'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/internal'\nimport {useTheme_v2} from '../../theme'\nimport {ButtonMode, ButtonTextAlign, ButtonTone, ButtonWidth, FlexJustify} from '../../types'\nimport {Box} from '../box'\nimport {Flex} from '../flex'\nimport {Spinner} from '../spinner'\nimport {Text} from '../text'\nimport {ResponsivePaddingProps, ResponsiveRadiusProps} from '../types'\nimport {buttonBaseStyles, buttonColorStyles} from './styles'\n\n/**\n * @public\n */\nexport interface ButtonProps extends ResponsivePaddingProps, ResponsiveRadiusProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n fontSize?: number | number[]\n mode?: ButtonMode\n icon?: React.ElementType | React.ReactNode\n iconRight?: React.ElementType | React.ReactNode\n justify?: FlexJustify | FlexJustify[]\n /**\n * @beta Do not use in production, as this might change.\n */\n loading?: boolean\n selected?: boolean\n space?: number | number[]\n textAlign?: ButtonTextAlign\n muted?: boolean\n text?: React.ReactNode\n tone?: ButtonTone\n type?: 'button' | 'reset' | 'submit'\n width?: ButtonWidth\n}\n\nconst Root = styled.button<\n {$mode: ButtonMode; $tone: ButtonTone; $width?: ButtonWidth} & ResponsiveRadiusStyleProps &\n ThemeProps\n>(responsiveRadiusStyle, buttonBaseStyles, buttonColorStyles)\n\nconst LoadingBox = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--card-bg-color);\n border-radius: inherit;\n z-index: 1;\n box-shadow: inherit;\n`\n\n/**\n * @public\n */\nexport const Button = forwardRef(function Button(\n props: ButtonProps & Omit<React.HTMLProps<HTMLButtonElement>, 'as' | 'width'>,\n ref: React.ForwardedRef<HTMLButtonElement>,\n) {\n const {\n children,\n disabled,\n fontSize = 1,\n icon: IconComponent,\n iconRight: IconRightComponent,\n justify: justifyProp = 'center',\n loading,\n mode = 'default',\n padding: paddingProp = 3,\n paddingX: paddingXProp,\n paddingY: paddingYProp,\n paddingTop: paddingTopProp,\n paddingBottom: paddingBottomProp,\n paddingLeft: paddingLeftProp,\n paddingRight: paddingRightProp,\n radius: radiusProp = 2,\n selected,\n space: spaceProp = 3,\n text,\n textAlign,\n tone = 'default',\n type = 'button',\n muted = false,\n width,\n ...restProps\n } = props\n const {button} = useTheme_v2()\n\n const justify = useMemo(() => _getArrayProp(justifyProp), [justifyProp])\n const padding = useMemo(() => _getArrayProp(paddingProp), [paddingProp])\n const paddingX = useMemo(() => _getArrayProp(paddingXProp), [paddingXProp])\n const paddingY = useMemo(() => _getArrayProp(paddingYProp), [paddingYProp])\n const paddingTop = useMemo(() => _getArrayProp(paddingTopProp), [paddingTopProp])\n const paddingBottom = useMemo(() => _getArrayProp(paddingBottomProp), [paddingBottomProp])\n const paddingLeft = useMemo(() => _getArrayProp(paddingLeftProp), [paddingLeftProp])\n const paddingRight = useMemo(() => _getArrayProp(paddingRightProp), [paddingRightProp])\n const radius = useMemo(() => _getArrayProp(radiusProp), [radiusProp])\n const space = useMemo(() => _getArrayProp(spaceProp), [spaceProp])\n\n const boxProps = useMemo(\n () => ({\n // flex: 1,\n padding,\n paddingX,\n paddingY,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n }),\n [padding, paddingX, paddingY, paddingTop, paddingBottom, paddingLeft, paddingRight],\n )\n\n return (\n <Root\n data-ui=\"Button\"\n {...restProps}\n $mode={mode}\n $radius={radius}\n $tone={tone}\n data-disabled={Boolean(loading || disabled)}\n data-selected={selected ? '' : undefined}\n disabled={Boolean(loading || disabled)}\n ref={ref}\n type={type}\n $width={width}\n >\n {Boolean(loading) && (\n <LoadingBox>\n <Spinner />\n </LoadingBox>\n )}\n\n {(IconComponent || text || IconRightComponent) && (\n <Box as=\"span\" {...boxProps}>\n <Flex as=\"span\" justify={justify} gap={space}>\n {IconComponent && (\n <Text size={fontSize}>\n {isValidElement(IconComponent) && IconComponent}\n {isValidElementType(IconComponent) && <IconComponent />}\n </Text>\n )}\n\n {text && (\n <Text\n muted={muted}\n align={textAlign}\n size={fontSize}\n textOverflow=\"ellipsis\"\n weight={button.textWeight}\n >\n {text}\n </Text>\n )}\n\n {IconRightComponent && (\n <Text size={fontSize}>\n {isValidElement(IconRightComponent) && IconRightComponent}\n {isValidElementType(IconRightComponent) && <IconRightComponent />}\n </Text>\n )}\n </Flex>\n </Box>\n )}\n\n {children && (\n <Box as=\"span\" {...boxProps}>\n {children}\n </Box>\n )}\n </Root>\n )\n})\n","import {getTheme_v2} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {_cardColorStyle} from '../../styles/card'\nimport {focusRingStyle} from '../../styles/focusRing'\nimport {CardStyleProps} from './types'\n\nexport function cardStyle(\n props: CardStyleProps & ThemeProps,\n): Array<ReturnType<typeof css> | (() => ReturnType<typeof css>)> {\n return [cardBaseStyle(props), cardColorStyle(props)]\n}\n\nexport function cardBaseStyle(props: CardStyleProps & ThemeProps): ReturnType<typeof css> {\n const {$checkered} = props\n const {space} = getTheme_v2(props.theme)\n\n return css`\n ${$checkered &&\n css`\n background-size: ${space[3]}px ${space[3]}px;\n background-position: 50% 50%;\n background-image: var(--card-bg-image);\n `}\n\n &[data-as='button'] {\n -webkit-font-smoothing: inherit;\n appearance: none;\n outline: none;\n font: inherit;\n text-align: inherit;\n border: 0;\n width: -moz-available;\n width: -webkit-fill-available;\n width: stretch;\n }\n\n /* &:is(a) */\n &[data-as='a'] {\n outline: none;\n text-decoration: none;\n }\n\n /* &:is(pre) */\n &[data-as='pre'] {\n font: inherit;\n }\n `\n}\n\nexport function cardColorStyle(props: CardStyleProps & ThemeProps): ReturnType<typeof css> {\n const {$checkered, $focusRing, $muted} = props\n const {card, color, style} = getTheme_v2(props.theme)\n const border = {width: card.border.width, color: 'var(--card-border-color)'}\n\n return css`\n color-scheme: ${color._dark ? 'dark' : 'light'};\n\n ${_cardColorStyle(color, color, $checkered)}\n\n background-color: ${$muted ? 'var(--card-muted-bg-color)' : 'var(--card-bg-color)'};\n color: var(--card-fg-color);\n\n /* &:is(button) */\n &[data-as='button'] {\n --card-focus-ring-box-shadow: none;\n\n cursor: default;\n box-shadow: var(--card-focus-ring-box-shadow);\n\n &:disabled {\n ${_cardColorStyle(color, color.selectable.default.disabled, $checkered)}\n }\n\n &:not(:disabled) {\n &[data-pressed] {\n ${_cardColorStyle(color, color.selectable.default.pressed, $checkered)}\n }\n\n &[data-selected] {\n ${_cardColorStyle(color, color.selectable.default.selected, $checkered)}\n }\n\n @media (hover: hover) {\n &:not([data-pressed]):not([data-selected]) {\n &[data-hovered],\n &:hover {\n ${_cardColorStyle(color, color.selectable.default.hovered, $checkered)}\n }\n\n &:active {\n ${_cardColorStyle(color, color.selectable.default.pressed, $checkered)}\n }\n }\n }\n\n &:focus-visible {\n --card-focus-ring-box-shadow: ${$focusRing\n ? focusRingStyle({base: color, border, focusRing: card.focusRing})\n : undefined};\n }\n }\n }\n\n /* &:is(a) */\n &[data-as='a'] {\n cursor: pointer;\n box-shadow: var(--card-focus-ring-box-shadow);\n\n &[data-disabled] {\n ${_cardColorStyle(color, color.selectable.default.disabled, $checkered)}\n }\n\n &:not([data-disabled]) {\n &[data-pressed] {\n ${_cardColorStyle(color, color.selectable.default.pressed, $checkered)}\n }\n\n &[data-selected] {\n ${_cardColorStyle(color, color.selectable.default.selected, $checkered)}\n }\n\n @media (hover: hover) {\n &:not([data-pressed]):not([data-selected]) {\n &[data-hovered],\n &:hover {\n ${_cardColorStyle(color, color.selectable.default.hovered, $checkered)}\n }\n\n &:active {\n ${_cardColorStyle(color, color.selectable.default.pressed, $checkered)}\n }\n }\n }\n\n &:focus-visible {\n --card-focus-ring-box-shadow: ${$focusRing\n ? focusRingStyle({base: color, border, focusRing: card.focusRing})\n : undefined};\n }\n }\n }\n\n ${style?.card?.root}\n `\n}\n","import {ThemeColorSchemeKey} from '@sanity/ui/theme'\nimport {forwardRef, useMemo} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {styled} from 'styled-components'\nimport {_getArrayProp} from '../../styles'\nimport {\n responsiveBorderStyle,\n ResponsiveBorderStyleProps,\n responsiveRadiusStyle,\n ResponsiveRadiusStyleProps,\n responsiveShadowStyle,\n ResponsiveShadowStyleProps,\n} from '../../styles/internal'\nimport {ThemeColorProvider, useRootTheme} from '../../theme'\nimport {CardTone} from '../../types'\nimport {Box, BoxProps} from '../box'\nimport {ResponsiveBorderProps, ResponsiveRadiusProps, ResponsiveShadowProps} from '../types'\nimport {cardStyle} from './styles'\nimport {CardStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface CardProps\n extends BoxProps,\n ResponsiveBorderProps,\n ResponsiveRadiusProps,\n ResponsiveShadowProps {\n /**\n * Do not use in production.\n * @beta\n */\n __unstable_checkered?: boolean\n /**\n * Do not use in production.\n * @beta\n */\n __unstable_focusRing?: boolean\n muted?: boolean\n pressed?: boolean\n scheme?: ThemeColorSchemeKey\n tone?: CardTone\n}\n\nconst Root = styled(Box)<\n CardStyleProps &\n ResponsiveRadiusStyleProps &\n ResponsiveBorderStyleProps &\n ResponsiveShadowStyleProps\n>(responsiveBorderStyle, responsiveRadiusStyle, responsiveShadowStyle, cardStyle)\n\n/**\n * The `Card` component acts much like a `Box`, but with a background and foreground color.\n * Components within a `Card` inherit its colors.\n *\n * @public\n */\nexport const Card = forwardRef(function Card(\n props: CardProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height'>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {\n __unstable_checkered: checkered = false,\n __unstable_focusRing: focusRing = false,\n as: asProp,\n border,\n borderTop,\n borderRight,\n borderBottom,\n borderLeft,\n muted,\n pressed,\n radius = 0,\n scheme,\n selected,\n shadow,\n tone: toneProp = 'default',\n ...restProps\n } = props\n\n const as = isValidElementType(asProp) ? asProp : 'div'\n const rootTheme = useRootTheme()\n const tone = toneProp === 'inherit' ? rootTheme.tone : toneProp\n\n const $border = useMemo(() => _getArrayProp(border), [border])\n const $borderTop = useMemo(() => _getArrayProp(borderTop), [borderTop])\n const $borderRight = useMemo(() => _getArrayProp(borderRight), [borderRight])\n const $borderBottom = useMemo(() => _getArrayProp(borderBottom), [borderBottom])\n const $borderLeft = useMemo(() => _getArrayProp(borderLeft), [borderLeft])\n const $radius = useMemo(() => _getArrayProp(radius), [radius])\n const $shadow = useMemo(() => _getArrayProp(shadow), [shadow])\n\n // todo: Consider adding the wrapper approach for nested cards in which the tones are not changing, avoid unnecessary ThemeColorProvider\n return (\n <ThemeColorProvider scheme={scheme} tone={tone}>\n <Root\n data-as={typeof as === 'string' ? as : undefined}\n data-scheme={rootTheme.scheme}\n data-ui=\"Card\"\n data-tone={tone}\n {...restProps}\n $border={$border}\n $borderTop={$borderTop}\n $borderRight={$borderRight}\n $borderBottom={$borderBottom}\n $borderLeft={$borderLeft}\n $radius={$radius}\n $shadow={$shadow}\n $checkered={checkered}\n $focusRing={focusRing}\n $muted={muted}\n $tone={tone}\n data-checkered={checkered ? '' : undefined}\n data-pressed={pressed ? '' : undefined}\n data-selected={selected ? '' : undefined}\n forwardedAs={as}\n ref={ref}\n selected={selected}\n />\n </ThemeColorProvider>\n )\n})\n","import {useMemo} from 'react'\nimport {_getArrayProp} from '../styles'\n\n/** @beta */\nexport type ArrayPropPrimitive = string | number | boolean | undefined | null\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n * @deprecated use `_getArrayProp` and `useMemo` directly instead\n * @example\n * ```diff\n * -import {useArrayProp} from '@sanity/ui'\n * +import {_getArrayProp} from '@sanity/ui'\n * +import {useMemo} from 'react'\n *\n * -const width = useArrayProp(props.width)\n * +const width = useMemo(() => _getArrayProp(props.width), [props.width])\n * ```\n */\nexport function useArrayProp<T extends ArrayPropPrimitive = ArrayPropPrimitive>(\n val: T | T[] | undefined,\n defaultVal?: T[],\n): T[] {\n return useMemo(() => _getArrayProp(val, defaultVal), [defaultVal, val])\n}\n","import {useEffect, useRef, useState} from 'react'\nimport {EMPTY_ARRAY} from '../constants'\n\n/**\n * @public\n */\nexport type ClickOutsideListener = (event: MouseEvent) => void\n\nfunction _getElements(\n element: HTMLElement | null,\n elementsArg: Array<HTMLElement | HTMLElement[] | null>,\n): HTMLElement[] {\n const ret = [element]\n\n for (const el of elementsArg) {\n if (Array.isArray(el)) {\n ret.push(...el)\n } else {\n ret.push(el)\n }\n }\n\n return ret.filter(Boolean) as HTMLElement[]\n}\n\n/**\n * @public\n */\nexport function useClickOutside(\n listener: ClickOutsideListener,\n elementsArg: Array<HTMLElement | HTMLElement[] | null> = EMPTY_ARRAY,\n boundaryElement?: HTMLElement | null,\n): (el: HTMLElement | null) => void {\n const [element, setElement] = useState<HTMLElement | null>(null)\n const [elements, setElements] = useState(() => _getElements(element, elementsArg))\n const elementsRef = useRef(elements)\n\n useEffect(() => {\n const prevElements = elementsRef.current\n const nextElements = _getElements(element, elementsArg)\n\n if (prevElements.length !== nextElements.length) {\n setElements(nextElements)\n elementsRef.current = nextElements\n\n return\n }\n\n for (const el of prevElements) {\n if (!nextElements.includes(el)) {\n setElements(nextElements)\n elementsRef.current = nextElements\n\n return\n }\n }\n\n for (const el of nextElements) {\n if (!prevElements.includes(el)) {\n setElements(nextElements)\n elementsRef.current = nextElements\n\n return\n }\n }\n }, [element, elementsArg])\n\n useEffect(() => {\n if (!listener) return undefined\n\n const handleWindowMouseDown = (evt: MouseEvent) => {\n const target = evt.target\n\n if (!(target instanceof Node)) {\n return\n }\n\n if (boundaryElement && !boundaryElement.contains(target)) {\n return\n }\n\n for (const el of elements) {\n if (target === el || el.contains(target)) {\n return\n }\n }\n\n listener(evt)\n }\n\n window.addEventListener('mousedown', handleWindowMouseDown)\n\n return () => {\n window.removeEventListener('mousedown', handleWindowMouseDown)\n }\n }, [boundaryElement, listener, elements])\n\n return setElement\n}\n","var resizeObservers = [];\nexport { resizeObservers };\n","import { resizeObservers } from '../utils/resizeObservers';\nvar hasActiveObservations = function () {\n return resizeObservers.some(function (ro) { return ro.activeTargets.length > 0; });\n};\nexport { hasActiveObservations };\n","import { resizeObservers } from '../utils/resizeObservers';\nvar hasSkippedObservations = function () {\n return resizeObservers.some(function (ro) { return ro.skippedTargets.length > 0; });\n};\nexport { hasSkippedObservations };\n","var msg = 'ResizeObserver loop completed with undelivered notifications.';\nvar deliverResizeLoopError = function () {\n var event;\n if (typeof ErrorEvent === 'function') {\n event = new ErrorEvent('error', {\n message: msg\n });\n }\n else {\n event = document.createEvent('Event');\n event.initEvent('error', false, false);\n event.message = msg;\n }\n window.dispatchEvent(event);\n};\nexport { deliverResizeLoopError };\n","var ResizeObserverBoxOptions;\n(function (ResizeObserverBoxOptions) {\n ResizeObserverBoxOptions[\"BORDER_BOX\"] = \"border-box\";\n ResizeObserverBoxOptions[\"CONTENT_BOX\"] = \"content-box\";\n ResizeObserverBoxOptions[\"DEVICE_PIXEL_CONTENT_BOX\"] = \"device-pixel-content-box\";\n})(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {}));\nexport { ResizeObserverBoxOptions };\n","export var freeze = function (obj) { return Object.freeze(obj); };\n","import { freeze } from './utils/freeze';\nvar ResizeObserverSize = (function () {\n function ResizeObserverSize(inlineSize, blockSize) {\n this.inlineSize = inlineSize;\n this.blockSize = blockSize;\n freeze(this);\n }\n return ResizeObserverSize;\n}());\nexport { ResizeObserverSize };\n","import { freeze } from './utils/freeze';\nvar DOMRectReadOnly = (function () {\n function DOMRectReadOnly(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.top = this.y;\n this.left = this.x;\n this.bottom = this.top + this.height;\n this.right = this.left + this.width;\n return freeze(this);\n }\n DOMRectReadOnly.prototype.toJSON = function () {\n var _a = this, x = _a.x, y = _a.y, top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left, width = _a.width, height = _a.height;\n return { x: x, y: y, top: top, right: right, bottom: bottom, left: left, width: width, height: height };\n };\n DOMRectReadOnly.fromRect = function (rectangle) {\n return new DOMRectReadOnly(rectangle.x, rectangle.y, rectangle.width, rectangle.height);\n };\n return DOMRectReadOnly;\n}());\nexport { DOMRectReadOnly };\n","var isSVG = function (target) { return target instanceof SVGElement && 'getBBox' in target; };\nvar isHidden = function (target) {\n if (isSVG(target)) {\n var _a = target.getBBox(), width = _a.width, height = _a.height;\n return !width && !height;\n }\n var _b = target, offsetWidth = _b.offsetWidth, offsetHeight = _b.offsetHeight;\n return !(offsetWidth || offsetHeight || target.getClientRects().length);\n};\nvar isElement = function (obj) {\n var _a;\n if (obj instanceof Element) {\n return true;\n }\n var scope = (_a = obj === null || obj === void 0 ? void 0 : obj.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView;\n return !!(scope && obj instanceof scope.Element);\n};\nvar isReplacedElement = function (target) {\n switch (target.tagName) {\n case 'INPUT':\n if (target.type !== 'image') {\n break;\n }\n case 'VIDEO':\n case 'AUDIO':\n case 'EMBED':\n case 'OBJECT':\n case 'CANVAS':\n case 'IFRAME':\n case 'IMG':\n return true;\n }\n return false;\n};\nexport { isSVG, isHidden, isElement, isReplacedElement };\n","export var global = typeof window !== 'undefined' ? window : {};\n","import { ResizeObserverBoxOptions } from '../ResizeObserverBoxOptions';\nimport { ResizeObserverSize } from '../ResizeObserverSize';\nimport { DOMRectReadOnly } from '../DOMRectReadOnly';\nimport { isSVG, isHidden } from '../utils/element';\nimport { freeze } from '../utils/freeze';\nimport { global } from '../utils/global';\nvar cache = new WeakMap();\nvar scrollRegexp = /auto|scroll/;\nvar verticalRegexp = /^tb|vertical/;\nvar IE = (/msie|trident/i).test(global.navigator && global.navigator.userAgent);\nvar parseDimension = function (pixel) { return parseFloat(pixel || '0'); };\nvar size = function (inlineSize, blockSize, switchSizes) {\n if (inlineSize === void 0) { inlineSize = 0; }\n if (blockSize === void 0) { blockSize = 0; }\n if (switchSizes === void 0) { switchSizes = false; }\n return new ResizeObserverSize((switchSizes ? blockSize : inlineSize) || 0, (switchSizes ? inlineSize : blockSize) || 0);\n};\nvar zeroBoxes = freeze({\n devicePixelContentBoxSize: size(),\n borderBoxSize: size(),\n contentBoxSize: size(),\n contentRect: new DOMRectReadOnly(0, 0, 0, 0)\n});\nvar calculateBoxSizes = function (target, forceRecalculation) {\n if (forceRecalculation === void 0) { forceRecalculation = false; }\n if (cache.has(target) && !forceRecalculation) {\n return cache.get(target);\n }\n if (isHidden(target)) {\n cache.set(target, zeroBoxes);\n return zeroBoxes;\n }\n var cs = getComputedStyle(target);\n var svg = isSVG(target) && target.ownerSVGElement && target.getBBox();\n var removePadding = !IE && cs.boxSizing === 'border-box';\n var switchSizes = verticalRegexp.test(cs.writingMode || '');\n var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || '');\n var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || '');\n var paddingTop = svg ? 0 : parseDimension(cs.paddingTop);\n var paddingRight = svg ? 0 : parseDimension(cs.paddingRight);\n var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom);\n var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft);\n var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth);\n var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth);\n var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth);\n var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth);\n var horizontalPadding = paddingLeft + paddingRight;\n var verticalPadding = paddingTop + paddingBottom;\n var horizontalBorderArea = borderLeft + borderRight;\n var verticalBorderArea = borderTop + borderBottom;\n var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight;\n var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth;\n var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0;\n var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0;\n var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness;\n var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness;\n var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea;\n var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea;\n var boxes = freeze({\n devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes),\n borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes),\n contentBoxSize: size(contentWidth, contentHeight, switchSizes),\n contentRect: new DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight)\n });\n cache.set(target, boxes);\n return boxes;\n};\nvar calculateBoxSize = function (target, observedBox, forceRecalculation) {\n var _a = calculateBoxSizes(target, forceRecalculation), borderBoxSize = _a.borderBoxSize, contentBoxSize = _a.contentBoxSize, devicePixelContentBoxSize = _a.devicePixelContentBoxSize;\n switch (observedBox) {\n case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:\n return devicePixelContentBoxSize;\n case ResizeObserverBoxOptions.BORDER_BOX:\n return borderBoxSize;\n default:\n return contentBoxSize;\n }\n};\nexport { calculateBoxSize, calculateBoxSizes };\n","import { calculateBoxSizes } from './algorithms/calculateBoxSize';\nimport { freeze } from './utils/freeze';\nvar ResizeObserverEntry = (function () {\n function ResizeObserverEntry(target) {\n var boxes = calculateBoxSizes(target);\n this.target = target;\n this.contentRect = boxes.contentRect;\n this.borderBoxSize = freeze([boxes.borderBoxSize]);\n this.contentBoxSize = freeze([boxes.contentBoxSize]);\n this.devicePixelContentBoxSize = freeze([boxes.devicePixelContentBoxSize]);\n }\n return ResizeObserverEntry;\n}());\nexport { ResizeObserverEntry };\n","import { isHidden } from '../utils/element';\nvar calculateDepthForNode = function (node) {\n if (isHidden(node)) {\n return Infinity;\n }\n var depth = 0;\n var parent = node.parentNode;\n while (parent) {\n depth += 1;\n parent = parent.parentNode;\n }\n return depth;\n};\nexport { calculateDepthForNode };\n","import { resizeObservers } from '../utils/resizeObservers';\nimport { ResizeObserverEntry } from '../ResizeObserverEntry';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nimport { calculateBoxSize } from './calculateBoxSize';\nvar broadcastActiveObservations = function () {\n var shallowestDepth = Infinity;\n var callbacks = [];\n resizeObservers.forEach(function processObserver(ro) {\n if (ro.activeTargets.length === 0) {\n return;\n }\n var entries = [];\n ro.activeTargets.forEach(function processTarget(ot) {\n var entry = new ResizeObserverEntry(ot.target);\n var targetDepth = calculateDepthForNode(ot.target);\n entries.push(entry);\n ot.lastReportedSize = calculateBoxSize(ot.target, ot.observedBox);\n if (targetDepth < shallowestDepth) {\n shallowestDepth = targetDepth;\n }\n });\n callbacks.push(function resizeObserverCallback() {\n ro.callback.call(ro.observer, entries, ro.observer);\n });\n ro.activeTargets.splice(0, ro.activeTargets.length);\n });\n for (var _i = 0, callbacks_1 = callbacks; _i < callbacks_1.length; _i++) {\n var callback = callbacks_1[_i];\n callback();\n }\n return shallowestDepth;\n};\nexport { broadcastActiveObservations };\n","import { resizeObservers } from '../utils/resizeObservers';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nvar gatherActiveObservationsAtDepth = function (depth) {\n resizeObservers.forEach(function processObserver(ro) {\n ro.activeTargets.splice(0, ro.activeTargets.length);\n ro.skippedTargets.splice(0, ro.skippedTargets.length);\n ro.observationTargets.forEach(function processTarget(ot) {\n if (ot.isActive()) {\n if (calculateDepthForNode(ot.target) > depth) {\n ro.activeTargets.push(ot);\n }\n else {\n ro.skippedTargets.push(ot);\n }\n }\n });\n });\n};\nexport { gatherActiveObservationsAtDepth };\n","import { hasActiveObservations } from '../algorithms/hasActiveObservations';\nimport { hasSkippedObservations } from '../algorithms/hasSkippedObservations';\nimport { deliverResizeLoopError } from '../algorithms/deliverResizeLoopError';\nimport { broadcastActiveObservations } from '../algorithms/broadcastActiveObservations';\nimport { gatherActiveObservationsAtDepth } from '../algorithms/gatherActiveObservationsAtDepth';\nvar process = function () {\n var depth = 0;\n gatherActiveObservationsAtDepth(depth);\n while (hasActiveObservations()) {\n depth = broadcastActiveObservations();\n gatherActiveObservationsAtDepth(depth);\n }\n if (hasSkippedObservations()) {\n deliverResizeLoopError();\n }\n return depth > 0;\n};\nexport { process };\n","var trigger;\nvar callbacks = [];\nvar notify = function () { return callbacks.splice(0).forEach(function (cb) { return cb(); }); };\nvar queueMicroTask = function (callback) {\n if (!trigger) {\n var toggle_1 = 0;\n var el_1 = document.createTextNode('');\n var config = { characterData: true };\n new MutationObserver(function () { return notify(); }).observe(el_1, config);\n trigger = function () { el_1.textContent = \"\".concat(toggle_1 ? toggle_1-- : toggle_1++); };\n }\n callbacks.push(callback);\n trigger();\n};\nexport { queueMicroTask };\n","import { queueMicroTask } from './queueMicroTask';\nvar queueResizeObserver = function (cb) {\n queueMicroTask(function ResizeObserver() {\n requestAnimationFrame(cb);\n });\n};\nexport { queueResizeObserver };\n","import { process } from './process';\nimport { global } from './global';\nimport { queueResizeObserver } from './queueResizeObserver';\nvar watching = 0;\nvar isWatching = function () { return !!watching; };\nvar CATCH_PERIOD = 250;\nvar observerConfig = { attributes: true, characterData: true, childList: true, subtree: true };\nvar events = [\n 'resize',\n 'load',\n 'transitionend',\n 'animationend',\n 'animationstart',\n 'animationiteration',\n 'keyup',\n 'keydown',\n 'mouseup',\n 'mousedown',\n 'mouseover',\n 'mouseout',\n 'blur',\n 'focus'\n];\nvar time = function (timeout) {\n if (timeout === void 0) { timeout = 0; }\n return Date.now() + timeout;\n};\nvar scheduled = false;\nvar Scheduler = (function () {\n function Scheduler() {\n var _this = this;\n this.stopped = true;\n this.listener = function () { return _this.schedule(); };\n }\n Scheduler.prototype.run = function (timeout) {\n var _this = this;\n if (timeout === void 0) { timeout = CATCH_PERIOD; }\n if (scheduled) {\n return;\n }\n scheduled = true;\n var until = time(timeout);\n queueResizeObserver(function () {\n var elementsHaveResized = false;\n try {\n elementsHaveResized = process();\n }\n finally {\n scheduled = false;\n timeout = until - time();\n if (!isWatching()) {\n return;\n }\n if (elementsHaveResized) {\n _this.run(1000);\n }\n else if (timeout > 0) {\n _this.run(timeout);\n }\n else {\n _this.start();\n }\n }\n });\n };\n Scheduler.prototype.schedule = function () {\n this.stop();\n this.run();\n };\n Scheduler.prototype.observe = function () {\n var _this = this;\n var cb = function () { return _this.observer && _this.observer.observe(document.body, observerConfig); };\n document.body ? cb() : global.addEventListener('DOMContentLoaded', cb);\n };\n Scheduler.prototype.start = function () {\n var _this = this;\n if (this.stopped) {\n this.stopped = false;\n this.observer = new MutationObserver(this.listener);\n this.observe();\n events.forEach(function (name) { return global.addEventListener(name, _this.listener, true); });\n }\n };\n Scheduler.prototype.stop = function () {\n var _this = this;\n if (!this.stopped) {\n this.observer && this.observer.disconnect();\n events.forEach(function (name) { return global.removeEventListener(name, _this.listener, true); });\n this.stopped = true;\n }\n };\n return Scheduler;\n}());\nvar scheduler = new Scheduler();\nvar updateCount = function (n) {\n !watching && n > 0 && scheduler.start();\n watching += n;\n !watching && scheduler.stop();\n};\nexport { scheduler, updateCount };\n","import { ResizeObserverBoxOptions } from './ResizeObserverBoxOptions';\nimport { calculateBoxSize } from './algorithms/calculateBoxSize';\nimport { isSVG, isReplacedElement } from './utils/element';\nvar skipNotifyOnElement = function (target) {\n return !isSVG(target)\n && !isReplacedElement(target)\n && getComputedStyle(target).display === 'inline';\n};\nvar ResizeObservation = (function () {\n function ResizeObservation(target, observedBox) {\n this.target = target;\n this.observedBox = observedBox || ResizeObserverBoxOptions.CONTENT_BOX;\n this.lastReportedSize = {\n inlineSize: 0,\n blockSize: 0\n };\n }\n ResizeObservation.prototype.isActive = function () {\n var size = calculateBoxSize(this.target, this.observedBox, true);\n if (skipNotifyOnElement(this.target)) {\n this.lastReportedSize = size;\n }\n if (this.lastReportedSize.inlineSize !== size.inlineSize\n || this.lastReportedSize.blockSize !== size.blockSize) {\n return true;\n }\n return false;\n };\n return ResizeObservation;\n}());\nexport { ResizeObservation };\n","var ResizeObserverDetail = (function () {\n function ResizeObserverDetail(resizeObserver, callback) {\n this.activeTargets = [];\n this.skippedTargets = [];\n this.observationTargets = [];\n this.observer = resizeObserver;\n this.callback = callback;\n }\n return ResizeObserverDetail;\n}());\nexport { ResizeObserverDetail };\n","import { scheduler, updateCount } from './utils/scheduler';\nimport { ResizeObservation } from './ResizeObservation';\nimport { ResizeObserverDetail } from './ResizeObserverDetail';\nimport { resizeObservers } from './utils/resizeObservers';\nvar observerMap = new WeakMap();\nvar getObservationIndex = function (observationTargets, target) {\n for (var i = 0; i < observationTargets.length; i += 1) {\n if (observationTargets[i].target === target) {\n return i;\n }\n }\n return -1;\n};\nvar ResizeObserverController = (function () {\n function ResizeObserverController() {\n }\n ResizeObserverController.connect = function (resizeObserver, callback) {\n var detail = new ResizeObserverDetail(resizeObserver, callback);\n observerMap.set(resizeObserver, detail);\n };\n ResizeObserverController.observe = function (resizeObserver, target, options) {\n var detail = observerMap.get(resizeObserver);\n var firstObservation = detail.observationTargets.length === 0;\n if (getObservationIndex(detail.observationTargets, target) < 0) {\n firstObservation && resizeObservers.push(detail);\n detail.observationTargets.push(new ResizeObservation(target, options && options.box));\n updateCount(1);\n scheduler.schedule();\n }\n };\n ResizeObserverController.unobserve = function (resizeObserver, target) {\n var detail = observerMap.get(resizeObserver);\n var index = getObservationIndex(detail.observationTargets, target);\n var lastObservation = detail.observationTargets.length === 1;\n if (index >= 0) {\n lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);\n detail.observationTargets.splice(index, 1);\n updateCount(-1);\n }\n };\n ResizeObserverController.disconnect = function (resizeObserver) {\n var _this = this;\n var detail = observerMap.get(resizeObserver);\n detail.observationTargets.slice().forEach(function (ot) { return _this.unobserve(resizeObserver, ot.target); });\n detail.activeTargets.splice(0, detail.activeTargets.length);\n };\n return ResizeObserverController;\n}());\nexport { ResizeObserverController };\n","import { ResizeObserverController } from './ResizeObserverController';\nimport { isElement } from './utils/element';\nvar ResizeObserver = (function () {\n function ResizeObserver(callback) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (typeof callback !== 'function') {\n throw new TypeError(\"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\");\n }\n ResizeObserverController.connect(this, callback);\n }\n ResizeObserver.prototype.observe = function (target, options) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n ResizeObserverController.observe(this, target, options);\n };\n ResizeObserver.prototype.unobserve = function (target) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n ResizeObserverController.unobserve(this, target);\n };\n ResizeObserver.prototype.disconnect = function () {\n ResizeObserverController.disconnect(this);\n };\n ResizeObserver.toString = function () {\n return 'function ResizeObserver () { [polyfill code] }';\n };\n return ResizeObserver;\n}());\nexport { ResizeObserver };\n","import {ResizeObserver as ResizeObserverPolyfill} from '@juggle/resize-observer'\n\n/**\n * @internal\n */\nexport const _ResizeObserver: typeof ResizeObserver =\n typeof document !== 'undefined' && typeof window !== 'undefined' && window.ResizeObserver\n ? window.ResizeObserver\n : ResizeObserverPolyfill\n","import {_ResizeObserver} from './resizeObserver'\n\n/**\n * @beta\n */\nexport interface ElementRectValue {\n width: number\n height: number\n}\n\n/**\n * @beta\n */\nexport interface ElementSize {\n content: ElementRectValue\n border: ElementRectValue\n\n /** @deprecated INTERNAL ONLY */\n _contentRect: DOMRectReadOnly\n}\n\n/**\n * @internal\n */\nexport type _ElementSizeSubscriber = (elementRect: ElementSize) => void\n\n/**\n * @internal\n */\nexport interface _ElementSizeObserver {\n subscribe: (element: HTMLElement, subscriber: _ElementSizeSubscriber) => () => void\n}\n\n/**\n * @internal\n */\nexport interface _ElementSizeListener {\n subscribe: (element: HTMLElement, subscriber: _ElementSizeSubscriber) => () => void\n}\n\n// Initialize element size observer\n// NOTE: this should NOT have size effects\n/**\n * @internal\n */\nexport const _elementSizeObserver = _createElementSizeObserver()\n\nfunction _createElementRectValueListener(): _ElementSizeListener {\n return {\n subscribe(element, subscriber) {\n const resizeObserver = new _ResizeObserver(([entry]) => {\n subscriber({\n _contentRect: entry.contentRect,\n border: {\n width: entry.borderBoxSize[0].inlineSize,\n height: entry.borderBoxSize[0].blockSize,\n },\n content: {\n width: entry.contentRect.width,\n height: entry.contentRect.height,\n },\n })\n })\n\n resizeObserver.observe(element)\n\n return () => {\n resizeObserver.unobserve(element)\n resizeObserver.disconnect()\n }\n },\n }\n}\n\nfunction _createElementSizeObserver(): _ElementSizeObserver {\n const disposeCache = new WeakMap<HTMLElement, () => void>()\n const subscribersCache = new WeakMap<HTMLElement, _ElementSizeSubscriber[]>()\n\n return {\n subscribe(element, subscriber) {\n const subscribers = subscribersCache.get(element) || []\n\n let dispose = disposeCache.get(element)\n\n if (!subscribersCache.has(element)) {\n subscribersCache.set(element, subscribers)\n\n const listener = _createElementRectValueListener()\n\n // listen\n dispose = listener.subscribe(element, (elementRect) => {\n for (const sub of subscribers) {\n sub(elementRect)\n }\n })\n }\n\n subscribers.push(subscriber)\n\n return () => {\n // dispose\n\n const idx = subscribers.indexOf(subscriber)\n\n if (idx > -1) {\n subscribers.splice(idx, 1)\n }\n\n if (subscribers.length === 0) {\n // unlisten\n if (dispose) dispose()\n }\n }\n },\n }\n}\n","import {useEffect, useState} from 'react'\nimport {ElementSize, _elementSizeObserver} from '../observers/elementSizeObserver'\n\n/**\n * Subscribe to the size of a DOM element.\n * @beta\n */\nexport function useElementSize(element: HTMLElement | null): ElementSize | null {\n const [size, setSize] = useState<ElementSize | null>(null)\n\n useEffect(() => {\n if (!element) return undefined\n\n return _elementSizeObserver.subscribe(element, setSize)\n }, [element])\n\n return size\n}\n","import {useElementSize} from '../useElementSize'\n\n/**\n * Subscribe to the rect of a DOM element.\n * @beta\n *\n * @deprecated Use `useElementSize` instead\n */\nexport function useElementRect(element: HTMLElement | null): DOMRectReadOnly | null {\n const elementSize = useElementSize(element)\n\n return elementSize?._contentRect || null\n}\n","import {useEffect} from 'react'\n\n/**\n * @beta\n */\nexport function useGlobalKeyDown(onKeyDown: (event: KeyboardEvent) => void): void {\n return useEffect(() => {\n addEventListener('keydown', onKeyDown)\n\n return () => removeEventListener('keydown', onKeyDown)\n }, [onKeyDown])\n}\n","import {useSyncExternalStore} from 'react'\nimport {useTheme_v2} from '../../theme'\n\n/**\n * @internal\n */\nexport interface _MediaStore {\n subscribe: (onStoreChange: () => void) => () => void\n getSnapshot: () => number\n}\n\nconst MEDIA_STORE_CACHE = new WeakMap<number[], _MediaStore>()\n\ntype MediaQueryMinWidth = `(min-width: ${number}px)`\ntype MediaQueryMaxWidth = `(max-width: ${number}px)`\ntype MediaQueryMinMaxWidth = `${MediaQueryMinWidth} and ${MediaQueryMaxWidth}`\ntype MediaQuery = `screen and ${MediaQueryMinWidth | MediaQueryMaxWidth | MediaQueryMinMaxWidth}`\n\nfunction _getMediaQuery(media: number[], index: number): MediaQuery {\n if (index === 0) {\n return `screen and (max-width: ${media[index] - 1}px)`\n }\n\n if (index === media.length) {\n return `screen and (min-width: ${media[index - 1]}px)`\n }\n\n return `screen and (min-width: ${media[index - 1]}px) and (max-width: ${media[index] - 1}px)`\n}\n\nfunction _createMediaStore(media: number[]): _MediaStore {\n const mediaLen = media.length\n let sizes: {mq: MediaQueryList; index: number}[]\n\n // The _createMediaStore function is called in both server and client environments.\n // However since subscribe and getSnapshot are only called on the client we lazy init what we need for them\n // so that we don't need to run checks for wether it's safe to call `window.matchMedia`\n const getSizes = () => {\n if (!sizes) {\n sizes = []\n\n for (let index = mediaLen; index > -1; index -= 1) {\n const mediaQuery = _getMediaQuery(media, index)\n\n sizes.push({index, mq: window.matchMedia(mediaQuery)})\n }\n }\n\n return sizes\n }\n\n const getSnapshot = () => {\n for (const {index, mq} of getSizes()) {\n if (mq.matches) return index\n }\n\n return 0\n }\n\n const subscribe = (onStoreChange: () => void) => {\n const disposeFns: (() => void)[] = []\n\n for (const {mq} of getSizes()) {\n const handleChange = () => {\n if (mq.matches) onStoreChange()\n }\n\n mq.addEventListener('change', handleChange)\n\n disposeFns.push(() => mq.removeEventListener('change', handleChange))\n }\n\n return () => {\n for (const disposeFn of disposeFns) {\n disposeFn()\n }\n }\n }\n\n return {getSnapshot, subscribe}\n}\n\n/**\n * Only called during server-side rendering, and hydration if using hydrateRoot\n * Since the server environment doesn't have access to the DOM, we can't determine the current value of the media query\n * and we assume `(prefers-color-scheme: light)` since it's the most common scheme\n *\n * @link https://beta.reactjs.org/apis/react/useSyncExternalStore#adding-support-for-server-rendering\n */\nfunction getServerSnapshot() {\n return 0\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function useMediaIndex(): number {\n const {media} = useTheme_v2()\n\n let store = MEDIA_STORE_CACHE.get(media)\n\n if (!store) {\n store = _createMediaStore(media)\n MEDIA_STORE_CACHE.set(media, store)\n }\n\n return useSyncExternalStore(store.subscribe, store.getSnapshot, getServerSnapshot)\n}\n","import {useSyncExternalStore} from 'react'\n\nlet MEDIA_QUERY_CACHE: MediaQueryList | undefined\n\n/**\n * Lazy init the matchMedia instance\n */\nfunction getMatchMedia(): MediaQueryList {\n if (!MEDIA_QUERY_CACHE) {\n // As this function is only called during `subscribe` and `getSnapshot`, we can assume that the\n // the `window` global is available and we're in a browser environment\n MEDIA_QUERY_CACHE = window.matchMedia('(prefers-color-scheme: dark)')\n }\n\n return MEDIA_QUERY_CACHE\n}\n\n/**\n * As the query is the same for all instances of this hook, we can cache the matchMedia instance\n * and have cheap `change` event listeners, while getSnapshot always reads from the same\n * matchMedia instance and we don't get any tearing.\n * Tearing in this context means the bad edge case in React concurrent render mdoe\n * where you sometimes would end up with some components doing render while seeing `usePrefersDark() === true` while others would see `usePrefersDark() === false`\n * during the same render.\n * By using `useSyncExternalStore` every component only sees the same value during the same render, and always re-render when it changes no matter\n * what React.memo boundaries there might be between the layers..\n */\nfunction subscribe(onStoreChange: () => void): () => void {\n const matchMedia = getMatchMedia()\n\n matchMedia.addEventListener('change', onStoreChange)\n\n return () => matchMedia.removeEventListener('change', onStoreChange)\n}\n\n/**\n * Only called client-side, when using createRoot, or after hydration is complete when using hydrateRoot.\n * It's important that this function does not create new objects or arrays when called:\n * https://beta.reactjs.org/apis/react/useSyncExternalStore#im-getting-an-error-the-result-of-getsnapshot-should-be-cached\n */\nfunction getSnapshot() {\n return getMatchMedia().matches\n}\n\n/**\n * Only called during server-side rendering, and hydration if using hydrateRoot\n * Since the server environment doesn't have access to the DOM, we can't determine the current value of the media query\n * and we assume `(prefers-color-scheme: light)` since it's the most common scheme\n *\n * @link https://beta.reactjs.org/apis/react/useSyncExternalStore#adding-support-for-server-rendering\n */\nfunction getServerSnapshot() {\n return false\n}\n\n/**\n * @public\n */\nexport function usePrefersDark(): boolean {\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot)\n}\n","import {useSyncExternalStore} from 'react'\n\nlet MEDIA_QUERY_CACHE: MediaQueryList | undefined\n\n/**\n * Lazy init the matchMedia instance\n */\nfunction getMatchMedia(): MediaQueryList {\n if (!MEDIA_QUERY_CACHE) {\n // As this function is only called during `subscribe` and `getSnapshot`, we can assume that the\n // the `window` global is available and we're in a browser environment\n MEDIA_QUERY_CACHE = window.matchMedia('(prefers-reduced-motion: reduce)')\n }\n\n return MEDIA_QUERY_CACHE\n}\n\n/**\n * As the query is the same for all instances of this hook, we can cache the matchMedia instance\n * and have cheap `change` event listeners, while getSnapshot always reads from the same\n * matchMedia instance and we don't get any tearing.\n * Tearing in this context means the bad edge case in React concurrent render mdoe\n * where you sometimes would end up with some components doing render while seeing `usePrefersDark() === true` while others would see `usePrefersDark() === false`\n * during the same render.\n * By using `useSyncExternalStore` every component only sees the same value during the same render, and always re-render when it changes no matter\n * what React.memo boundaries there might be between the layers..\n */\nfunction subscribe(onStoreChange: () => void): () => void {\n const matchMedia = getMatchMedia()\n\n matchMedia.addEventListener('change', onStoreChange)\n\n return () => matchMedia.removeEventListener('change', onStoreChange)\n}\n\n/**\n * Only called client-side, when using createRoot, or after hydration is complete when using hydrateRoot.\n * It's important that this function does not create new objects or arrays when called:\n * https://beta.reactjs.org/apis/react/useSyncExternalStore#im-getting-an-error-the-result-of-getsnapshot-should-be-cached\n */\nfunction getSnapshot() {\n return getMatchMedia().matches\n}\n\n/**\n * Only called during server-side rendering, and hydration if using hydrateRoot\n * Since the server environment doesn't have access to the DOM, we can't determine the current value of the media query\n * and we assume `(prefers-reduced-motion: no-preference)` since it's the most common scheme\n *\n * @link https://beta.reactjs.org/apis/react/useSyncExternalStore#adding-support-for-server-rendering\n */\nfunction getServerSnapshot() {\n return false\n}\n\n/**\n * Returns true if motion should be reduced\n * @public\n */\nexport function usePrefersReducedMotion(): boolean {\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot)\n}\n","import {useImperativeHandle, useRef} from 'react'\n\n/**\n * @beta\n * @deprecated use `useImperativeHandle` instead\n * @example\n * ```diff\n * -const ref = useForwardedRef(forwardedRef)\n * +const ref = useRef(null)\n * +useImperativeHandle(forwardedRef, () => ref.current)\n * ```\n */\nexport function useForwardedRef<T>(ref: React.ForwardedRef<T>): React.MutableRefObject<T | null> {\n const innerRef = useRef<T | null>(null)\n\n useImperativeHandle(ref, () => innerRef.current!)\n\n return innerRef\n}\n","import {useEffect} from 'react'\n\n/**\n * @beta\n */\nexport function useCustomValidity(\n ref: {current: null | {setCustomValidity: (validity: string) => void}},\n customValidity: string | undefined,\n): void {\n useEffect(() => {\n ref.current?.setCustomValidity(customValidity || '')\n }, [customValidity, ref])\n}\n","import {getTheme_v2} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\nimport {rem, ThemeProps} from '../../styles'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/internal'\n\nexport function checkboxBaseStyles(): ReturnType<typeof css> {\n return css`\n position: relative;\n display: inline-block;\n `\n}\n\nexport function inputElementStyles(props: ThemeProps): ReturnType<typeof css> {\n const {color, input, radius} = getTheme_v2(props.theme)\n const {focusRing} = input.checkbox\n\n return css`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n outline: none;\n opacity: 0;\n z-index: 1;\n padding: 0;\n margin: 0;\n\n & + span {\n position: relative;\n display: block;\n height: ${rem(input.checkbox.size)};\n width: ${rem(input.checkbox.size)};\n box-sizing: border-box;\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.enabled.border,\n width: input.border.width,\n })};\n border-radius: ${rem(radius[2])};\n line-height: 1;\n background-color: ${color.input.default.enabled.bg};\n\n & > svg {\n display: block;\n position: absolute;\n opacity: 0;\n height: 100%;\n width: 100%;\n\n & > path {\n vector-effect: non-scaling-stroke;\n stroke-width: 1.5px !important;\n }\n }\n }\n\n &:checked + span {\n background: ${color.input.default.enabled.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.enabled.fg,\n width: input.border.width,\n })};\n color: ${color.input.default.enabled.bg};\n }\n\n /* focus */\n &:not(:disabled):focus:focus-visible + span {\n box-shadow: ${focusRingStyle({focusRing})};\n }\n\n /* focus when checked - uses a different offset */\n &:not(:disabled):focus:focus-visible&:checked + span {\n box-shadow: ${focusRingStyle({focusRing: {width: 1, offset: 1}})};\n }\n\n &[data-error] + span {\n background-color: ${color.input.invalid.enabled.border};\n box-shadow: ${focusRingBorderStyle({\n width: input.border.width,\n color: color.input.invalid.enabled.muted.bg,\n })};\n color: ${color.input.default.disabled.fg};\n }\n &[data-error]&:checked + span {\n background-color: ${color.input.invalid.enabled.muted.bg};\n color: ${color.input.default.enabled.bg};\n }\n &[data-error]&:checked&:not(:disabled):focus:focus-visible + span {\n box-shadow: ${focusRingStyle({\n border: {width: input.border.width, color: color.input.invalid.readOnly.muted.bg},\n focusRing: {width: 1, offset: 1},\n })};\n }\n\n &:disabled + span {\n background-color: ${color.input.default.disabled.bg};\n box-shadow: ${focusRingBorderStyle({\n width: input.border.width,\n color: color.input.default.disabled.border,\n })};\n color: ${color.input.default.disabled.fg};\n }\n &:disabled&:checked + span {\n background-color: ${color.input.default.disabled.muted.bg};\n }\n\n &[data-read-only] + span {\n background-color: ${color.input.default.readOnly.bg};\n box-shadow: ${focusRingBorderStyle({\n width: input.border.width,\n color: color.input.default.readOnly.border,\n })};\n color: ${color.input.default.readOnly.fg};\n }\n\n &[data-read-only]&:checked + span {\n background-color: ${color.input.default.readOnly.muted.bg};\n }\n\n &:checked + span > svg:first-child {\n opacity: 1;\n }\n &:indeterminate + span > svg:last-child {\n opacity: 1;\n }\n `\n}\n","import {CheckmarkIcon, RemoveIcon} from '@sanity/icons'\nimport {forwardRef, useEffect, useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\nimport {useCustomValidity} from '../../hooks'\nimport {checkboxBaseStyles, inputElementStyles} from './styles'\n\n/**\n * @public\n */\nexport interface CheckboxProps {\n indeterminate?: boolean\n customValidity?: string\n}\n\nconst Root = styled.div(checkboxBaseStyles)\nconst Input = styled.input(inputElementStyles)\n\n/**\n * Checkboxes allow the user to select one or more items from a set.\n *\n * @public\n */\nexport const Checkbox = forwardRef(function Checkbox(\n props: Omit<React.HTMLProps<HTMLInputElement>, 'as' | 'type'> & CheckboxProps,\n forwardedRef: React.ForwardedRef<HTMLInputElement>,\n) {\n const {\n checked,\n className,\n disabled,\n indeterminate,\n customValidity,\n readOnly,\n style,\n ...restProps\n } = props\n const ref = useRef<HTMLInputElement | null>(null)\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useEffect(() => {\n if (ref.current) {\n // Set the indeterminate state\n ref.current.indeterminate = indeterminate || false\n }\n }, [indeterminate])\n\n useCustomValidity(ref, customValidity)\n\n return (\n <Root className={className} data-ui=\"Checkbox\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-error={customValidity ? '' : undefined}\n {...restProps}\n checked={checked}\n disabled={disabled || readOnly}\n type=\"checkbox\"\n readOnly={readOnly}\n ref={ref}\n />\n <span>\n <CheckmarkIcon />\n <RemoveIcon />\n </span>\n </Root>\n )\n})\n","import {getTheme_v2} from '@sanity/ui/theme'\nimport {css, ExecutionContext} from 'styled-components'\n\nfunction codeSyntaxHighlightingStyle({theme}: ExecutionContext) {\n const {\n color: {syntax: color},\n } = getTheme_v2(theme)\n\n return {\n '&.atrule': {color: color.atrule},\n '&.attr-name': {color: color.attrName},\n '&.attr-value': {color: color.attrValue},\n '&.attribute': {color: color.attribute},\n '&.boolean': {color: color.boolean},\n '&.builtin': {color: color.builtin},\n '&.cdata': {color: color.cdata},\n '&.char': {color: color.char},\n '&.class': {color: color.class},\n '&.class-name': {color: color.className},\n '&.comment': {color: color.comment},\n '&.constant': {color: color.constant},\n '&.deleted': {color: color.deleted},\n '&.doctype': {color: color.doctype},\n '&.entity': {color: color.entity},\n '&.function': {color: color.function},\n '&.hexcode': {color: color.hexcode},\n '&.id': {color: color.id},\n '&.important': {color: color.important},\n '&.inserted': {color: color.inserted},\n '&.keyword': {color: color.keyword},\n '&.number': {color: color.number},\n '&.operator': {color: color.operator},\n '&.prolog': {color: color.prolog},\n '&.property': {color: color.property},\n '&.pseudo-class': {color: color.pseudoClass},\n '&.pseudo-element': {color: color.pseudoElement},\n '&.punctuation': {color: color.punctuation},\n '&.regex': {color: color.regex},\n '&.selector': {color: color.selector},\n '&.string': {color: color.string},\n '&.symbol': {color: color.symbol},\n '&.tag': {color: color.tag},\n '&.unit': {color: color.unit},\n '&.url': {color: color.url},\n '&.variable': {color: color.variable},\n }\n}\n\nexport function codeBaseStyle(): ReturnType<typeof css> {\n return css`\n color: var(--card-code-fg-color);\n\n & code {\n font-family: inherit;\n\n &.refractor .token {\n ${codeSyntaxHighlightingStyle}\n }\n }\n\n & a {\n color: inherit;\n text-decoration: underline;\n border-radius: 1px;\n }\n\n & svg {\n /* Certain popular CSS libraries changes the defaults for SVG display */\n /* Make sure SVGs are rendered as inline elements */\n display: inline;\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\n }\n `\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {forwardRef, useMemo} from 'react'\nimport Refractor from 'react-refractor'\nimport {styled} from 'styled-components'\nimport {_getArrayProp} from '../../styles'\nimport {responsiveCodeFontStyle, ResponsiveFontStyleProps} from '../../styles/internal'\nimport {codeBaseStyle} from './styles'\n\n/**\n * @public\n */\nexport interface CodeProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n /** Define the language to use for syntax highlighting. */\n language?: string\n size?: number | number[]\n weight?: string\n}\n\nconst Root = styled.pre<ResponsiveFontStyleProps>(codeBaseStyle, responsiveCodeFontStyle)\n\n/**\n * @public\n */\nexport const Code = forwardRef(function Code(\n props: CodeProps & Omit<React.HTMLProps<HTMLElement>, 'as' | 'size'>,\n ref: React.ForwardedRef<HTMLElement>,\n) {\n const {children, language: languageProp, size = 2, weight, ...restProps} = props\n const language = typeof languageProp === 'string' ? languageProp : undefined\n const registered = language ? Refractor.hasLanguage(language as any) : false\n const $size = useMemo(() => _getArrayProp(size), [size])\n\n return (\n <Root data-ui=\"Code\" {...restProps} $size={$size} $weight={weight} ref={ref}>\n {!(language && registered) && <code>{children}</code>}\n {language && registered && <Refractor inline language={language} value={String(children)} />}\n </Root>\n )\n})\n","import {CSSObject, getTheme_v2} from '@sanity/ui/theme'\nimport {rem, _responsive, ThemeProps} from '../../styles'\nimport {ResponsiveWidthStyleProps} from './types'\n\nconst BASE_STYLE: CSSObject = {\n width: '100%',\n margin: '0 auto',\n}\n\nexport function containerBaseStyle(): CSSObject {\n return BASE_STYLE\n}\n\nexport function responsiveContainerWidthStyle(\n props: ResponsiveWidthStyleProps & ThemeProps,\n): CSSObject[] {\n const {container, media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$width, (val) => ({\n maxWidth: val === 'auto' ? 'none' : rem(container[val]),\n }))\n}\n","import {forwardRef, useMemo} from 'react'\nimport {styled} from 'styled-components'\nimport {_getArrayProp} from '../../styles'\nimport {Box, BoxProps} from '../box'\nimport {ResponsiveWidthProps} from '../types'\nimport {containerBaseStyle, responsiveContainerWidthStyle} from './styles'\nimport {ResponsiveWidthStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface ContainerProps extends BoxProps, ResponsiveWidthProps {}\n\nconst Root = styled(Box)<ResponsiveWidthStyleProps>(\n containerBaseStyle,\n responsiveContainerWidthStyle,\n)\n\n/**\n * The `Container` component wraps content layout in a defined set of widths.\n *\n * @public\n */\nexport const Container = forwardRef(function Container(\n props: ContainerProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'width'>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {as, width = 2, ...restProps} = props\n const $width = useMemo(() => _getArrayProp(width), [width])\n\n return <Root data-ui=\"Container\" {...restProps} $width={$width} forwardedAs={as} ref={ref} />\n})\n","import {forwardRef, useMemo} from 'react'\nimport {styled} from 'styled-components'\nimport {_getArrayProp} from '../../styles'\nimport {responsiveGridStyle, ResponsiveGridStyleProps} from '../../styles/internal'\nimport {Box, BoxProps} from '../box'\nimport {ResponsiveGridProps} from '../types'\n\n/**\n * @public\n */\nexport interface GridProps extends Omit<BoxProps, 'display'>, ResponsiveGridProps {}\n\nconst Root = styled(Box)<ResponsiveGridStyleProps>(responsiveGridStyle)\n\n/**\n * The `Grid` component is for building 2-dimensional layers (based on CSS grid).\n *\n * @public\n */\nexport const Grid = forwardRef(function Grid(\n props: GridProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'rows'>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {as, autoRows, autoCols, autoFlow, columns, gap, gapX, gapY, rows, children, ...restProps} =\n props\n\n const $autoRows = useMemo(() => _getArrayProp(autoRows), [autoRows])\n const $autoCols = useMemo(() => _getArrayProp(autoCols), [autoCols])\n const $autoFlow = useMemo(() => _getArrayProp(autoFlow), [autoFlow])\n const $columns = useMemo(() => _getArrayProp(columns), [columns])\n const $gap = useMemo(() => _getArrayProp(gap), [gap])\n const $gapX = useMemo(() => _getArrayProp(gapX), [gapX])\n const $gapY = useMemo(() => _getArrayProp(gapY), [gapY])\n const $rows = useMemo(() => _getArrayProp(rows), [rows])\n\n return (\n <Root\n data-as={typeof as === 'string' ? as : undefined}\n data-ui=\"Grid\"\n {...restProps}\n $autoRows={$autoRows}\n $autoCols={$autoCols}\n $autoFlow={$autoFlow}\n $columns={$columns}\n $gap={$gap}\n $gapX={$gapX}\n $gapY={$gapY}\n $rows={$rows}\n forwardedAs={as}\n ref={ref}\n >\n {children}\n </Root>\n )\n})\n","import {getTheme_v2} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {HeadingStyleProps} from './types'\n\nexport function headingBaseStyle(props: HeadingStyleProps & ThemeProps): ReturnType<typeof css> {\n const {$accent, $muted} = props\n const {font} = getTheme_v2(props.theme)\n\n return css`\n ${$accent &&\n css`\n color: var(--card-accent-fg-color);\n `}\n\n ${$muted &&\n css`\n color: var(--card-muted-fg-color);\n `}\n\n & code {\n font-family: ${font.code.family};\n border-radius: 1px;\n }\n\n & a {\n text-decoration: none;\n border-radius: 1px;\n color: var(--card-link-color);\n outline: none;\n\n @media (hover: hover) {\n &:hover {\n text-decoration: underline;\n }\n }\n\n &:focus {\n box-shadow:\n 0 0 0 1px var(--card-bg-color),\n 0 0 0 3px var(--card-focus-ring-color);\n }\n\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n }\n\n & strong {\n font-weight: ${font.heading.weights.bold};\n }\n\n & svg {\n /* Certain popular CSS libraries changes the defaults for SVG display */\n /* Make sure SVGs are rendered as inline elements */\n display: inline;\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\n }\n `\n}\n","import {ThemeFontWeightKey} from '@sanity/ui/theme'\nimport {forwardRef, useMemo} from 'react'\nimport {styled} from 'styled-components'\nimport {_getArrayProp} from '../../styles'\nimport {\n ResponsiveFontStyleProps,\n responsiveHeadingFont,\n responsiveTextAlignStyle,\n ResponsiveTextAlignStyleProps,\n} from '../../styles/internal'\nimport {TextAlign} from '../../types'\nimport {headingBaseStyle} from './styles'\nimport {HeadingStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface HeadingProps {\n accent?: boolean\n align?: TextAlign | TextAlign[]\n as?: React.ElementType | keyof JSX.IntrinsicElements\n muted?: boolean\n size?: number | number[]\n /**\n * Controls how overflowing text is treated.\n * Use `textOverflow=\"ellipsis\"` to render text as a single line which is concatenated with a `…` symbol.\n * @beta\n */\n textOverflow?: 'ellipsis'\n weight?: ThemeFontWeightKey\n}\n\nconst Root = styled.div<\n HeadingStyleProps & ResponsiveTextAlignStyleProps & ResponsiveFontStyleProps\n>(headingBaseStyle, responsiveTextAlignStyle, responsiveHeadingFont)\n\nconst SpanWithTextOverflow = styled.span`\n display: block;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n overflow: clip;\n`\n\n/**\n * Typographic headings.\n *\n * @public\n */\nexport const Heading = forwardRef(function Heading(\n props: HeadingProps & Omit<React.HTMLProps<HTMLElement>, 'as' | 'size'>,\n ref: React.ForwardedRef<HTMLElement>,\n) {\n const {\n accent = false,\n align,\n children: childrenProp,\n muted = false,\n size = 2,\n textOverflow,\n weight,\n ...restProps\n } = props\n\n const $size = useMemo(() => _getArrayProp(size), [size])\n const $align = useMemo(() => _getArrayProp(align), [align])\n\n let children = childrenProp\n\n if (textOverflow === 'ellipsis') {\n children = <SpanWithTextOverflow>{children}</SpanWithTextOverflow>\n }\n\n return (\n <Root\n data-ui=\"Heading\"\n {...restProps}\n $accent={accent}\n $align={$align}\n $size={$size}\n $muted={muted}\n $weight={weight}\n ref={ref}\n >\n <span>{children}</span>\n </Root>\n )\n})\n","import {CSSObject, getTheme_v2} from '@sanity/ui/theme'\nimport {rem, _responsive, ThemeProps} from '../../styles'\nimport {ResponsiveInlineSpaceStyleProps} from './types'\n\nexport function inlineBaseStyle(): CSSObject {\n return {\n lineHeight: 0,\n\n '&&:not([hidden])': {\n display: 'block',\n },\n\n '& > div': {\n display: 'inline-block',\n verticalAlign: 'middle',\n },\n }\n}\n\nexport function inlineSpaceStyle(props: ResponsiveInlineSpaceStyleProps & ThemeProps): CSSObject[] {\n const {media, space} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$space, (spaceIndex) => {\n const _space = rem(spaceIndex === 0.5 ? space[1] / 2 : space[spaceIndex])\n\n return {\n margin: `-${_space} 0 0 -${_space}`,\n '& > div': {padding: `${_space} 0 0 ${_space}`},\n }\n })\n}\n","import {forwardRef, useMemo, Children} from 'react'\nimport {styled} from 'styled-components'\nimport {_getArrayProp} from '../../styles'\nimport {Box, BoxProps} from '../box'\nimport {inlineBaseStyle, inlineSpaceStyle} from './styles'\nimport {ResponsiveInlineSpaceStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface InlineProps extends Omit<BoxProps, 'display'> {\n /** The spacing between children. */\n space?: number | number[]\n}\n\nconst Root = styled(Box)<ResponsiveInlineSpaceStyleProps>(inlineBaseStyle, inlineSpaceStyle)\n\n/**\n * The `Inline` component is a layout utility for aligning and spacing items horizontally.\n *\n * @public\n */\nexport const Inline = forwardRef(function Inline(\n props: InlineProps & React.HTMLProps<HTMLDivElement>,\n ref,\n) {\n const {as, children: childrenProp, space, ...restProps} = props\n\n const $space = useMemo(() => _getArrayProp(space), [space])\n const children = useMemo(\n () => Children.map(childrenProp, (child) => child && <div>{child}</div>),\n [childrenProp],\n )\n\n return (\n <Root\n data-ui=\"Inline\"\n {...restProps}\n $space={$space}\n forwardedAs={as}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref={ref as any}\n >\n {children}\n </Root>\n )\n})\n","import {forwardRef, useMemo} from 'react'\nimport {styled, css} from 'styled-components'\nimport {_getArrayProp} from '../../styles'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/internal'\nimport {Radius} from '../../types'\nimport {Box} from '../box'\nimport {Text} from '../text'\n\n/**\n * @public\n */\nexport interface KBDProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n fontSize?: number | number[]\n padding?: number | number[]\n radius?: Radius | Radius[]\n}\n\nfunction kbdStyle() {\n return css`\n --card-bg-color: var(--card-kbd-bg-color);\n --card-border-color: var(--card-kbd-border-color);\n --card-fg-color: var(--card-kbd-fg-color);\n\n box-shadow: inset 0 0 0 1px var(--card-border-color);\n background: var(--card-bg-color);\n font: inherit;\n\n vertical-align: top;\n\n &:not([hidden]) {\n display: inline-block;\n }\n `\n}\n\nconst Root = styled.kbd<ResponsiveRadiusStyleProps>(responsiveRadiusStyle, kbdStyle)\n\n/**\n * Used to define some text as keyboard input.\n *\n * @public\n */\nexport const KBD = forwardRef(function KBD(\n props: KBDProps & Omit<React.HTMLProps<HTMLElement>, 'as' | 'ref' | 'size'>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {children, fontSize = 0, padding = 1, radius = 2, ...restProps} = props\n const $radius = useMemo(() => _getArrayProp(radius), [radius])\n\n return (\n <Root data-ui=\"KBD\" {...restProps} $radius={$radius} ref={ref}>\n <Box as=\"span\" padding={padding}>\n <Text as=\"span\" size={fontSize} weight=\"semibold\">\n {children}\n </Text>\n </Box>\n </Root>\n )\n})\n","import {Middleware} from '@floating-ui/react-dom'\n\n/**\n * Custom floating-ui middleware which calculates transform-origin X + Y offsets\n * based on the current floating rect's dimensions and shift offset.\n *\n * Scaling popovers with these transform-origin offsets will give the effect of\n * popvers slightly 'growing' from the origin/reference element.\n *\n * This middleware must be applied after both `@sanity/ui/size` and `shift` middlewares.\n */\nexport const origin: Middleware = {\n name: '@sanity/ui/origin',\n fn({middlewareData, placement, rects}) {\n const [side] = placement.split('-')\n\n const floatingWidth = rects.floating.width\n const floatingHeight = rects.floating.height\n\n const shiftX = middlewareData.shift?.x || 0\n const shiftY = middlewareData.shift?.y || 0\n\n if (floatingWidth <= 0 || floatingHeight <= 0) {\n return {}\n }\n\n const isVerticalPlacement = ['bottom', 'top'].includes(side)\n\n const {originX, originY}: {originX: number; originY: number} = isVerticalPlacement\n ? {\n originX: clamp(0.5 - shiftX / floatingWidth, 0, 1),\n originY: side === 'bottom' ? 0 : 1,\n }\n : {\n originX: side === 'left' ? 1 : 0,\n originY: clamp(0.5 - shiftY / floatingHeight, 0, 1),\n }\n\n return {\n data: {originX, originY},\n }\n },\n}\n\nfunction clamp(num: number, min: number, max: number) {\n return Math.min(Math.max(num, min), max)\n}\n","export interface PointCmd {\n type: 'point'\n x: number\n y: number\n radius?: number\n}\n\nexport interface CurveCmd {\n type: 'curve'\n startControl: Point\n endControl: Point\n curveEnd: Point\n}\n\nexport type Cmd = PointCmd | CurveCmd\n\nexport interface Point {\n x: number\n y: number\n radius?: number\n}\n\nfunction moveTowardsLength(movingPoint: Point, targetPoint: Point, amount: number) {\n const width = targetPoint.x - movingPoint.x\n const height = targetPoint.y - movingPoint.y\n\n const distance = Math.sqrt(width * width + height * height)\n\n return moveTowardsFractional(movingPoint, targetPoint, Math.min(1, amount / distance))\n}\n\nfunction moveTowardsFractional(movingPoint: Point, targetPoint: Point, fraction: number): Point {\n return {\n x: movingPoint.x + (targetPoint.x - movingPoint.x) * fraction,\n y: movingPoint.y + (targetPoint.y - movingPoint.y) * fraction,\n }\n}\n\nexport function getRoundedCommands(points: Point[]): Cmd[] {\n const len = points.length\n\n const cmds: Cmd[] = []\n\n for (let i = 0; i < len; i += 1) {\n const point = points[i]\n const prevPoint = points[i - 1]\n const nextPoint = points[i + 1]\n\n if (prevPoint && point.radius) {\n const curveStart = moveTowardsLength(point, prevPoint, point.radius)\n const curveEnd = moveTowardsLength(point, nextPoint, point.radius)\n const startControl = moveTowardsFractional(curveStart, point, 0.5)\n const endControl = moveTowardsFractional(point, curveEnd, 0.5)\n\n cmds.push({\n type: 'point',\n ...curveStart,\n })\n\n cmds.push({\n type: 'curve',\n curveEnd,\n startControl,\n endControl,\n })\n } else {\n cmds.push({\n type: 'point',\n ...point,\n })\n }\n }\n\n return cmds\n}\n\nexport function compileCommands(cmds: Cmd[]): string {\n return cmds\n .map((n, idx) => {\n if (n.type === 'point') {\n return `${idx === 0 ? 'M' : 'L'} ${n.x} ${n.y}`\n }\n\n if (n.type === 'curve') {\n return `C ${n.startControl.x} ${n.startControl.y} ${n.endControl.x} ${n.endControl.y} ${n.curveEnd.x} ${n.curveEnd.y}`\n }\n\n return ``\n })\n .join(' ')\n}\n","import {ForwardedRef, HTMLProps, ReactElement, forwardRef} from 'react'\nimport {styled, css} from 'styled-components'\nimport {useTheme_v2} from '../../theme'\nimport {Point, compileCommands, getRoundedCommands} from './cmds'\n\nconst Root = styled.div<{$w: number}>(\n ({$w: w}) => css`\n position: absolute;\n width: ${w}px;\n height: ${w}px;\n\n :empty + & {\n display: none;\n }\n\n & > svg {\n display: block;\n line-height: 0;\n transform-origin: ${w / 2}px ${w / 2}px;\n }\n\n [data-placement^='top'] > & {\n bottom: -${w}px;\n\n & > svg {\n transform: rotate(0);\n }\n }\n\n [data-placement^='right'] > & {\n left: -${w}px;\n\n & > svg {\n transform: rotate(90deg);\n }\n }\n\n [data-placement^='left'] > & {\n right: -${w}px;\n\n & > svg {\n transform: rotate(-90deg);\n }\n }\n\n [data-placement^='bottom'] > & {\n top: -${w}px;\n\n & > svg {\n transform: rotate(180deg);\n }\n }\n `,\n)\n\nconst StrokePath = styled.path`\n stroke: var(--card-shadow-outline-color);\n`\n\nconst ShapePath = styled.path`\n fill: var(--card-bg-color);\n`\n\n/** @internal */\nexport const Arrow = forwardRef(function Arrow(\n props: {width: number; height: number; radius?: number} & Omit<\n HTMLProps<HTMLDivElement>,\n 'width' | 'height'\n >,\n ref: ForwardedRef<HTMLDivElement>,\n): ReactElement {\n const {width: w, height: h, radius = 0, ...restProps} = props\n const {card} = useTheme_v2()\n const strokeWidth = card.shadow.outline\n\n const center = w / 2\n\n const points: Point[] = [\n {\n x: 0,\n y: 0,\n },\n {\n x: radius,\n y: 0,\n radius,\n },\n {\n x: center,\n y: h - 1,\n radius,\n },\n {\n x: w - radius,\n y: 0,\n radius,\n },\n {\n x: w,\n y: 0,\n },\n ]\n\n const cmds = getRoundedCommands(points)\n const path = compileCommands(cmds)\n\n const strokePath = `${path}`\n const fillPath = `${path} M ${w} -1 M 0 -1 Z`\n\n return (\n <Root {...restProps} $w={w} ref={ref}>\n <svg width={w} height={w} viewBox={`0 0 ${w} ${w}`}>\n <mask id=\"stroke-mask\">\n <rect x={0} y={strokeWidth} width={w} height={w} fill=\"white\" />\n </mask>\n <StrokePath d={strokePath} mask=\"url(#stroke-mask)\" strokeWidth={strokeWidth * 2} />\n <ShapePath d={fillPath} />\n </svg>\n </Root>\n )\n})\n","import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'\nimport {BoundaryElementContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/boundaryElement')\n\nexport const BoundaryElementContext = createGlobalScopedContext<BoundaryElementContextValue | null>(\n key,\n null,\n)\n","import {useMemo} from 'react'\nimport {BoundaryElementContext} from './boundaryElementContext'\nimport {BoundaryElementContextValue} from './types'\n\n/**\n * @public\n */\nexport interface BoundaryElementProviderProps {\n children: React.ReactNode\n element: HTMLElement | null\n}\n\n/**\n * @public\n */\nexport function BoundaryElementProvider(props: BoundaryElementProviderProps): React.ReactElement {\n const {children, element} = props\n const value: BoundaryElementContextValue = useMemo(() => ({version: 0.0, element}), [element])\n\n return <BoundaryElementContext.Provider value={value}>{children}</BoundaryElementContext.Provider>\n}\n","export function isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === 'object' && !Array.isArray(value))\n}\n","import {useContext} from 'react'\nimport {isRecord} from '../../lib/isRecord'\nimport {BoundaryElementContext} from './boundaryElementContext'\nimport {BoundaryElementContextValue} from './types'\n\nconst DEFAULT_VALUE: BoundaryElementContextValue = {\n version: 0.0,\n element: null,\n}\n\n/**\n * @public\n */\nexport function useBoundaryElement(): BoundaryElementContextValue {\n const value = useContext(BoundaryElementContext)\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (value && (!isRecord(value) || value.version !== 0.0)) {\n throw new Error('useBoundaryElement(): the context value is not compatible')\n }\n\n return value || DEFAULT_VALUE\n}\n","/**\n * @internal\n */\nexport function ConditionalWrapper({\n children,\n condition,\n wrapper,\n}: {\n children: React.ReactNode\n condition: boolean\n wrapper: (children: React.ReactNode) => React.ReactNode\n}): React.ReactNode {\n if (!condition) {\n return children\n }\n\n return wrapper(children)\n}\n","export function findMaxBreakpoints(media: number[], width: number): number[] {\n const ret: number[] = []\n\n for (let i = 0; i < media.length; i += 1) {\n const bp = media[i]\n\n if (bp > width) {\n ret.push(i)\n }\n }\n\n return ret\n}\n\nexport function findMinBreakpoints(media: number[], width: number): number[] {\n const ret: number[] = []\n\n for (let i = 0; i < media.length; i += 1) {\n const bp = media[i]\n\n if (bp <= width) {\n ret.push(i)\n }\n }\n\n return ret\n}\n","import {forwardRef, useCallback, useImperativeHandle, useMemo, useRef, useState} from 'react'\nimport {useElementSize} from '../../hooks'\nimport {useTheme_v2} from '../../theme'\nimport {findMaxBreakpoints, findMinBreakpoints} from './helpers'\n\n/**\n * DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface MediaQueryProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n media?: number[]\n}\n\n/**\n * DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const ElementQuery = forwardRef(function ElementQuery(\n props: MediaQueryProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'media'>,\n forwardedRef: React.ForwardedRef<HTMLDivElement>,\n) {\n const theme = useTheme_v2()\n const {children, media = theme.media, ...restProps} = props\n\n const ref = useRef<HTMLDivElement | null>(null)\n const [element, setElement] = useState<HTMLDivElement | null>(null)\n const elementSize = useElementSize(element)\n const width = useMemo(() => elementSize?.border.width ?? window.innerWidth, [elementSize])\n\n const max = useMemo(() => findMaxBreakpoints(media, width), [media, width])\n const min = useMemo(() => findMinBreakpoints(media, width), [media, width])\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n\n const setRef = useCallback((el: HTMLDivElement | null) => {\n ref.current = el\n setElement(el)\n }, [])\n\n return (\n <div\n data-ui=\"ElementQuery\"\n {...restProps}\n data-eq-max={max.length ? max.join(' ') : undefined}\n data-eq-min={min.length ? min.join(' ') : undefined}\n ref={setRef}\n >\n {children}\n </div>\n )\n})\n","import {Component, PropsWithChildren} from 'react'\nimport {Code} from '../primitives/code'\n\n/**\n * DO NOT USE IN PRODUCTION\n * @beta\n */\nexport type ErrorBoundaryProps = PropsWithChildren<{\n onCatch: (params: {error: Error; info: React.ErrorInfo}) => void\n}>\n\n/**\n * DO NOT USE IN PRODUCTION\n * @beta\n */\nexport interface ErrorBoundaryState {\n error: Error | null\n}\n\n/**\n * DO NOT USE IN PRODUCTION\n * @beta\n */\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = {error: null}\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n // Update state so the next render will show the fallback UI.\n return {error}\n }\n\n componentDidCatch(error: Error, info: React.ErrorInfo): void {\n this.props.onCatch({error, info})\n }\n\n render(): React.ReactNode {\n const {error} = this.state\n\n if (error) {\n const message = typeof error?.message === 'string' ? error.message : 'Error'\n\n return <Code>{message}</Code>\n }\n\n return this.props.children\n }\n}\n","import {isRecord} from '../../lib/isRecord'\nimport {LayerContextValue} from './types'\n\nexport function getLayerContext(contextValue: LayerContextValue): LayerContextValue {\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (!isRecord(contextValue) || contextValue.version !== 0.0) {\n throw new Error('the context value is not compatible')\n }\n\n if (!contextValue) {\n throw new Error('components using `useLayer()` should be wrapped in a <LayerProvider>.')\n }\n\n if (contextValue.version === 0.0) {\n return contextValue\n }\n\n throw new Error('could not get layer context')\n}\n","import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'\nimport {LayerContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/layer')\n\nexport const LayerContext = createGlobalScopedContext<LayerContextValue | null>(key, null)\n","import {useContext} from 'react'\nimport {getLayerContext} from './getLayerContext'\nimport {LayerContext} from './layerContext'\nimport {LayerContextValue} from './types'\n\n/**\n * @public\n */\nexport function useLayer(): LayerContextValue {\n const value = useContext(LayerContext)\n\n if (!value) {\n throw new Error('useLayer(): missing context value')\n }\n\n try {\n return getLayerContext(value)\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(`useLayer(): ${err.message}`)\n } else {\n throw new Error(`useLayer(): ${err}`)\n }\n }\n}\n","/**\n * @internal\n */\nexport function _raf(fn: () => void): () => void {\n const frameId = requestAnimationFrame(fn)\n\n return () => {\n cancelAnimationFrame(frameId)\n }\n}\n\n/**\n * @internal\n */\nexport function _raf2(fn: () => void): () => void {\n let innerDispose: (() => void) | null = null\n\n const outerDispose = _raf(() => {\n innerDispose = _raf(fn)\n })\n\n return () => {\n if (innerDispose) innerDispose()\n\n outerDispose()\n }\n}\n","/**\n * @internal\n */\nexport function _isEnterToClickElement(element: HTMLElement): boolean {\n return isHTMLAnchorElement(element) || isHTMLButtonElement(element)\n}\n\n/**\n * @internal\n */\nexport function isHTMLElement(node: unknown): node is HTMLElement {\n return node instanceof Node && node.nodeType === Node.ELEMENT_NODE\n}\n\n/**\n * @internal\n */\nexport function isHTMLAnchorElement(element: unknown): element is HTMLAnchorElement {\n return isHTMLElement(element) && element.nodeName === 'A'\n}\n\n/**\n * @internal\n */\nexport function isHTMLInputElement(element: unknown): element is HTMLInputElement {\n return isHTMLElement(element) && element.nodeName === 'INPUT'\n}\n\n/**\n * @internal\n */\nexport function isHTMLButtonElement(element: unknown): element is HTMLButtonElement {\n return isHTMLElement(element) && element.nodeName === 'BUTTON'\n}\n\n/**\n * @internal\n */\nexport function isHTMLSelectElement(element: unknown): element is HTMLSelectElement {\n return isHTMLElement(element) && element.nodeName === 'SELECT'\n}\n\n/**\n * @internal\n */\nexport function isHTMLTextAreaElement(element: unknown): element is HTMLTextAreaElement {\n return isHTMLElement(element) && element.nodeName === 'TEXTAREA'\n}\n\n/**\n * @internal\n */\nexport function containsOrEqualsElement(element: HTMLElement, node: Node): boolean {\n return element.contains(node) || element === node\n}\n","import {\n isHTMLElement,\n isHTMLAnchorElement,\n isHTMLInputElement,\n isHTMLButtonElement,\n isHTMLSelectElement,\n isHTMLTextAreaElement,\n} from './element'\n\n// export const globalFocusState = {\n// IgnoreUtilFocusChanges: false,\n// }\n\n/**\n * @internal\n */\nexport function _hasFocus(element: HTMLElement): boolean {\n return Boolean(document.activeElement) && element.contains(document.activeElement)\n}\n\n/**\n * @internal\n */\nexport function isFocusable(element: HTMLElement): boolean {\n if (\n element.tabIndex > 0 ||\n (element.tabIndex === 0 && element.getAttribute('tabIndex') !== null)\n ) {\n return true\n }\n\n if (isHTMLAnchorElement(element)) {\n return Boolean(element.href) && element.rel !== 'ignore'\n }\n\n if (isHTMLInputElement(element)) {\n return element.type !== 'hidden' && element.type !== 'file' && !element.disabled\n }\n\n if (\n isHTMLButtonElement(element) ||\n isHTMLSelectElement(element) ||\n isHTMLTextAreaElement(element)\n ) {\n return !element.disabled\n }\n\n return false\n}\n\n/**\n * @internal\n */\nexport function attemptFocus(element: HTMLElement): boolean {\n if (!isFocusable(element)) {\n return false\n }\n\n // globalFocusState.IgnoreUtilFocusChanges = true\n\n try {\n element.focus()\n } catch (_) {\n // ignore\n }\n\n // globalFocusState.IgnoreUtilFocusChanges = false\n\n return document.activeElement === element\n}\n\n/**\n * @internal\n */\nexport function focusFirstDescendant(element: HTMLElement): boolean {\n for (let i = 0; i < element.childNodes.length; i++) {\n const child = element.childNodes[i]\n\n if (isHTMLElement(child) && (attemptFocus(child) || focusFirstDescendant(child))) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * @internal\n */\nexport function focusLastDescendant(element: HTMLElement): boolean {\n for (let i = element.childNodes.length - 1; i >= 0; i--) {\n const child = element.childNodes[i]\n\n if (isHTMLElement(child) && (attemptFocus(child) || focusLastDescendant(child))) {\n return true\n }\n }\n\n return false\n}\n","/**\n * @internal\n */\nexport function _isScrollable(el: Node): boolean {\n if (!(el instanceof Element)) return false\n\n const style = window.getComputedStyle(el)\n\n return (\n style.overflowX.includes('auto') ||\n style.overflowX.includes('scroll') ||\n style.overflowY.includes('auto') ||\n style.overflowY.includes('scroll')\n )\n}\n","import {useCallback, useContext, useEffect, useMemo, useState} from 'react'\nimport {useMediaIndex} from '../../hooks'\nimport {_getArrayProp} from '../../styles'\nimport {getLayerContext} from './getLayerContext'\nimport {LayerContext} from './layerContext'\nimport {LayerContextValue} from './types'\n\n/**\n * @public\n */\nexport interface LayerProviderProps {\n children?: React.ReactNode\n zOffset?: number | number[]\n}\n\n/**\n * @public\n */\nexport function LayerProvider(props: LayerProviderProps): React.ReactElement {\n const {children, zOffset: zOffsetProp = 0} = props\n\n // Get parent context values\n const parentContextValue = useContext(LayerContext)\n const parent = parentContextValue && getLayerContext(parentContextValue)\n const parentRegisterChild = parent?.registerChild\n const parentLevel = parent?.level ?? 0\n\n // Get level\n const level = parentLevel + 1\n\n // Get z-index offset\n const zOffset = useMemo(() => _getArrayProp(zOffsetProp), [zOffsetProp])\n\n // Get responsive z-index value\n const maxMediaIndex = zOffset.length - 1\n const mediaIndex = Math.min(useMediaIndex(), maxMediaIndex)\n const zIndex = parent ? parent.zIndex + zOffset[mediaIndex] : zOffset[mediaIndex]\n\n // A state value that is used to keep track of the number of child layers on each level\n const [, setChildLayers] = useState<Record<number, number>>({})\n\n // A state value that is used to keep track of the number of child levels\n const [size, setSize] = useState(0)\n\n const isTopLayer = size === 0\n\n const registerChild = useCallback(\n (childLevel?: number) => {\n // Register child layers to the parent layer\n const parentDispose = parentRegisterChild?.(childLevel)\n\n if (childLevel !== undefined) {\n setChildLayers((state) => {\n const prevLen = state[childLevel] ?? 0\n const nextState = {...state, [childLevel]: prevLen + 1}\n\n setSize(Object.keys(nextState).length)\n\n return nextState\n })\n } else {\n // Legacy behavior: if no child level is provided, increment the size by 1\n setSize((v) => v + 1)\n }\n\n return () => {\n if (childLevel !== undefined) {\n setChildLayers((state) => {\n const nextState = {...state}\n\n if (nextState[childLevel] === 1) {\n delete nextState[childLevel]\n\n setSize(Object.keys(nextState).length)\n } else {\n nextState[childLevel] -= 1\n }\n\n return nextState\n })\n } else {\n // Legacy behavior: if no child level is provided, decrement the size by 1\n setSize((v) => v - 1)\n }\n\n parentDispose?.()\n }\n },\n [parentRegisterChild],\n )\n\n // Register this layer on mount\n useEffect(() => parentRegisterChild?.(level), [level, parentRegisterChild])\n\n const value: LayerContextValue = useMemo(\n () => ({\n version: 0.0,\n isTopLayer,\n level,\n registerChild,\n size,\n zIndex,\n }),\n [isTopLayer, level, registerChild, size, zIndex],\n )\n\n return <LayerContext.Provider value={value}>{children}</LayerContext.Provider>\n}\n","import {FocusEvent, forwardRef, useCallback, useEffect, useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {containsOrEqualsElement, isHTMLElement} from '../../helpers'\nimport {LayerProvider} from './layerProvider'\nimport {useLayer} from './useLayer'\n\n/**\n * @public\n */\nexport interface LayerProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n /** A callback that fires when the layer becomes the top layer when it was not the top layer before. */\n onActivate?: (props: {activeElement: HTMLElement | null}) => void\n zOffset?: number | number[]\n}\n\ninterface LayerChildrenProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n onActivate?: LayerProps['onActivate']\n}\n\nconst Root = styled.div({position: 'relative'})\n\nconst LayerChildren = forwardRef(function LayerChildren(\n props: LayerChildrenProps & Omit<React.HTMLProps<HTMLDivElement>, 'as'>,\n forwardedRef: React.Ref<HTMLDivElement>,\n) {\n const {children, onActivate, onFocus, style = EMPTY_RECORD, ...restProps} = props\n const {zIndex, isTopLayer} = useLayer()\n const lastFocusedRef = useRef<HTMLElement | null>(null)\n const ref = useRef<HTMLDivElement | null>(null)\n const isTopLayerRef = useRef<boolean>(isTopLayer)\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n\n // When the layer very first mounts, it will be the top layer, but we don't want to fire\n // the callback in that case. We use a ref to track the previous value of isTopLayer to\n // determine if the layer has become the top layer since the last render.\n useEffect(() => {\n const becameTopLayer = isTopLayerRef.current !== isTopLayer && isTopLayer\n\n if (becameTopLayer) {\n onActivate?.({activeElement: lastFocusedRef.current})\n }\n\n isTopLayerRef.current = isTopLayer\n }, [isTopLayer, onActivate])\n\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLDivElement, Element>) => {\n // Call the user-provided onFocus handler if any\n onFocus?.(event)\n\n const rootElement = ref.current\n const target = document.activeElement\n\n if (!isTopLayer || !rootElement || !target) return\n\n if (isHTMLElement(target) && containsOrEqualsElement(rootElement, target)) {\n lastFocusedRef.current = target\n }\n },\n [isTopLayer, onFocus],\n )\n\n return (\n <Root {...restProps} data-ui=\"Layer\" onFocus={handleFocus} ref={ref} style={{...style, zIndex}}>\n {children}\n </Root>\n )\n})\n\n/**\n * @public\n */\nexport const Layer = forwardRef(function Layer(\n props: LayerProps & Omit<React.HTMLProps<HTMLDivElement>, 'as'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {children, zOffset = 1, ...restProps} = props\n\n return (\n <LayerProvider zOffset={zOffset}>\n <LayerChildren {...restProps} ref={ref}>\n {children}\n </LayerChildren>\n </LayerProvider>\n )\n})\n","import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'\nimport {globalScope} from '../../lib/globalScope'\nimport {PortalContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/portal')\nconst elementKey = Symbol.for('@sanity/ui/context/portal/element')\n\nglobalScope[elementKey] = null\n\nexport const defaultContextValue: PortalContextValue = {\n version: 0.0,\n boundaryElement: null,\n get element() {\n if (typeof document === 'undefined') {\n return null\n }\n\n if (globalScope[elementKey]) {\n return globalScope[elementKey]\n }\n\n globalScope[elementKey] = document.createElement('div')\n globalScope[elementKey].setAttribute('data-portal', '')\n\n document.body.appendChild(globalScope[elementKey])\n\n return globalScope[elementKey]\n },\n}\n\nexport const PortalContext = createGlobalScopedContext<PortalContextValue>(key, defaultContextValue)\n","import {useContext} from 'react'\nimport {isRecord} from '../../lib/isRecord'\nimport {PortalContext} from './portalContext'\nimport {PortalContextValue} from './types'\n\n/**\n * @public\n */\nexport function usePortal(): PortalContextValue {\n const value = useContext(PortalContext)\n\n if (!value) {\n throw new Error('usePortal(): missing context value')\n }\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (!isRecord(value) || value.version !== 0.0) {\n throw new Error('usePortal(): the context value is not compatible')\n }\n\n return value\n}\n","import {createPortal} from 'react-dom'\nimport {usePortal} from './usePortal'\n\n/**\n * @public\n */\nexport interface PortalProps {\n children: React.ReactNode\n /**\n * @beta This API might change. DO NOT USE IN PRODUCTION.\n */\n __unstable_name?: string\n}\n\n/**\n * @public\n */\nexport function Portal(props: PortalProps): React.ReactPortal | null {\n const {children, __unstable_name: name} = props\n const portal = usePortal()\n const portalElement =\n (name ? portal.elements && portal.elements[name] : portal.element) || portal.elements?.default\n\n if (!portalElement) {\n return null\n }\n\n return createPortal(children, portalElement)\n}\n","import {useRef} from 'react'\n\n/**\n * This is a React hook to make sure that a record identity is the same on every render. Uses strict\n * equality comparison (eg by identity), and only goes one level deep.\n *\n * @internal\n */\ntype Comparable = Record<string | number | symbol, unknown> | undefined | null\n\nexport function useUnique<ValueType extends Comparable = Comparable>(value: ValueType): ValueType {\n const valueRef = useRef<ValueType>(value)\n\n if (!_isEqual(valueRef.current, value)) {\n valueRef.current = value\n }\n\n return valueRef.current\n}\n\nfunction _isEqual(objA: Comparable, objB: Comparable): boolean {\n if (!objA || !objB) {\n return objA === objB\n }\n\n const keysA = Object.keys(objA)\n const keysB = Object.keys(objB)\n\n if (keysA.length !== keysB.length) {\n return false\n }\n\n return keysA.every((key) => objA[key] === objB[key])\n}\n","import {useMemo, useSyncExternalStore} from 'react'\nimport {useUnique} from '../../hooks/_internal'\nimport {PortalContext} from './portalContext'\nimport {PortalContextValue} from './types'\n\n/**\n * @public\n */\nexport interface PortalProviderProps {\n /**\n * @deprecated Use `<BoundaryElementProvider element={...} />` instead\n */\n boundaryElement?: HTMLElement | null\n children: React.ReactNode\n element?: HTMLElement | null\n /**\n * @beta\n */\n __unstable_elements?: Record<string, HTMLElement | null | undefined>\n}\n\n/**\n * @public\n */\nexport function PortalProvider(props: PortalProviderProps): React.ReactElement {\n const {boundaryElement, children, element, __unstable_elements: elementsProp} = props\n const elements = useUnique(elementsProp)\n const fallbackElement = useSyncExternalStore(\n emptySubscribe,\n () => document.body,\n () => null,\n )\n\n const value: PortalContextValue = useMemo(() => {\n return {\n version: 0.0,\n boundaryElement: boundaryElement || null,\n element: element || fallbackElement,\n elements,\n }\n }, [boundaryElement, element, elements, fallbackElement])\n\n return <PortalContext.Provider value={value}>{children}</PortalContext.Provider>\n}\n\nconst emptySubscribe = () => () => {}\n","import {forwardRef} from 'react'\nimport {styled} from 'styled-components'\n\n/**\n * @public\n */\nexport interface SrOnlyProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n children?: React.ReactNode\n}\n\nconst Root = styled.div`\n display: block;\n width: 0;\n height: 0;\n position: absolute;\n overflow: hidden;\n overflow: clip;\n`\n\n/**\n * @public\n */\nexport const SrOnly = forwardRef(function SrOnly(\n props: SrOnlyProps & Omit<React.HTMLProps<HTMLDivElement>, 'aria-hidden' | 'as'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {as, children} = props\n\n return (\n <Root aria-hidden as={as} data-ui=\"SrOnly\" ref={ref}>\n {children}\n </Root>\n )\n})\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState} from 'react'\nimport {styled} from 'styled-components'\nimport {_isScrollable} from '../../helpers'\nimport {_ResizeObserver} from '../../observers'\nimport {StackProps} from '../../primitives'\nimport {useTheme_v2} from '../../theme'\n\n/**\n * @beta\n */\nexport interface VirtualListChangeOpts {\n fromIndex: number\n gap: number\n itemHeight: number\n scrollHeight: number\n scrollTop: number\n toIndex: number\n}\n\n/**\n * @beta\n */\nexport interface VirtualListProps<Item = any> {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n gap?: number\n getItemKey?: (item: Item, itemIndex: number) => string\n items?: Item[]\n onChange?: (opts: VirtualListChangeOpts) => void\n renderItem?: (item: Item) => React.ReactNode\n}\n\nconst Root = styled.div`\n position: relative;\n`\n\nconst ItemWrapper = styled.div`\n position: absolute;\n left: 0;\n right: 0;\n`\n\n/**\n * @beta\n */\nexport const VirtualList = forwardRef(function VirtualList(\n props: VirtualListProps &\n StackProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'onChange' | 'ref'>,\n forwardedRef: React.ForwardedRef<HTMLDivElement>,\n): React.ReactElement {\n const {as = 'div', gap = 0, getItemKey, items = [], onChange, renderItem, ...restProps} = props\n const {space} = useTheme_v2()\n const ref = useRef<HTMLDivElement | null>(null)\n const wrapperRef = useRef<HTMLDivElement | null>(null)\n const [scrollTop, setScrollTop] = useState(0)\n const [scrollHeight, setScrollHeight] = useState(0)\n const [itemHeight, setItemHeight] = useState(-1)\n\n // Sync ref to parent\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n\n useEffect(() => {\n if (!wrapperRef.current) return\n\n const firstElement = wrapperRef.current.firstChild\n\n if (firstElement instanceof HTMLElement) {\n setItemHeight(firstElement.offsetHeight)\n }\n }, [renderItem])\n\n useEffect(() => {\n if (!ref.current) return\n\n let _scrollEl = ref.current.parentNode\n\n while (_scrollEl && !_isScrollable(_scrollEl)) {\n _scrollEl = _scrollEl.parentNode\n }\n\n if (_scrollEl) {\n const scrollEl = _scrollEl\n\n if (!(scrollEl instanceof HTMLElement)) return\n\n const handleScroll = () => {\n setScrollTop(scrollEl.scrollTop)\n }\n\n scrollEl.addEventListener('scroll', handleScroll, {passive: true})\n\n const ro = new _ResizeObserver((entries) => {\n setScrollHeight(entries[0].contentRect.height)\n })\n\n ro.observe(scrollEl)\n\n handleScroll()\n\n return () => {\n scrollEl.removeEventListener('scroll', handleScroll)\n\n ro.unobserve(scrollEl)\n ro.disconnect()\n }\n }\n\n const handleScroll = () => {\n setScrollTop(window.scrollY)\n }\n\n const handleResize = () => {\n setScrollHeight(window.innerHeight)\n }\n\n window.addEventListener('scroll', handleScroll, {passive: true})\n window.addEventListener('resize', handleResize)\n\n setScrollHeight(window.innerHeight)\n\n handleScroll()\n\n return () => {\n window.removeEventListener('scroll', handleScroll)\n window.removeEventListener('resize', handleResize)\n }\n }, [])\n\n const len = items.length\n const height = itemHeight ? len * (itemHeight + space[gap]) - space[gap] : 0\n const fromIndex = height ? Math.max(Math.floor((scrollTop / height) * len) - 2, 0) : 0\n const toIndex = height ? Math.ceil(((scrollTop + scrollHeight) / height) * len) + 1 : 0\n\n useEffect(() => {\n if (!onChange) return\n onChange({fromIndex, gap: space[gap], itemHeight, scrollHeight, scrollTop, toIndex})\n }, [fromIndex, gap, itemHeight, onChange, scrollHeight, scrollTop, space, toIndex])\n\n const children = useMemo(() => {\n if (!renderItem || items.length === 0) return null\n\n if (itemHeight === -1) {\n return [<ItemWrapper key={0}>{renderItem(items[0])}</ItemWrapper>]\n }\n\n return items.slice(fromIndex, toIndex).map((item, _itemIndex) => {\n const itemIndex = fromIndex + _itemIndex\n const node = renderItem(item)\n const key = getItemKey ? getItemKey(item, itemIndex) : itemIndex\n\n return (\n <ItemWrapper key={key} style={{top: itemIndex * (itemHeight + space[gap])}}>\n {node}\n </ItemWrapper>\n )\n })\n }, [fromIndex, gap, getItemKey, itemHeight, items, renderItem, space, toIndex])\n\n const wrapperStyle = useMemo(() => ({height}), [height])\n\n return (\n <Root as={as} data-ui=\"VirtualList\" {...restProps} ref={ref}>\n <div ref={wrapperRef} style={wrapperStyle}>\n {children}\n </div>\n </Root>\n )\n})\n","import {Placement, PopoverMargins} from '../../types'\n\nexport const DEFAULT_POPOVER_DISTANCE = 4\nexport const DEFAULT_POPOVER_PADDING = 4\nexport const DEFAULT_POPOVER_ARROW_WIDTH = 19\nexport const DEFAULT_POPOVER_ARROW_HEIGHT = 8\nexport const DEFAULT_POPOVER_ARROW_RADIUS = 2\nexport const DEFAULT_POPOVER_MARGINS: PopoverMargins = [0, 0, 0, 0]\nexport const DEFAULT_FALLBACK_PLACEMENTS: Record<Placement, Placement[]> = {\n top: ['bottom', 'left', 'right'],\n 'top-start': ['bottom-start', 'left-start', 'right-start'],\n 'top-end': ['bottom-end', 'left-end', 'right-end'],\n bottom: ['top', 'left', 'right'],\n 'bottom-start': ['top-start', 'left-start', 'right-start'],\n 'bottom-end': ['top-end', 'left-end', 'right-end'],\n left: ['right', 'top', 'bottom'],\n 'left-start': ['right-start', 'top-start', 'bottom-start'],\n 'left-end': ['right-end', 'top-end', 'bottom-end'],\n right: ['left', 'top', 'bottom'],\n 'right-start': ['left-start', 'top-start', 'bottom-start'],\n 'right-end': ['left-end', 'top-end', 'bottom-end'],\n}\n","import {Elements, Middleware, detectOverflow} from '@floating-ui/react-dom'\nimport {PopoverMargins} from '../../../types'\n\nexport interface SizeMiddlewareApplyOptions {\n availableWidth: number\n availableHeight: number\n elements: Elements\n referenceWidth: number\n}\n\nexport function size(options: {\n apply: (args: SizeMiddlewareApplyOptions) => void\n boundaryElement?: HTMLElement | null\n constrainSize: boolean\n margins: PopoverMargins\n matchReferenceWidth?: boolean\n padding?: number\n}): Middleware {\n const {apply, margins, padding = 0} = options\n\n return {\n name: '@sanity/ui/size',\n async fn(args) {\n const {elements, placement, platform, rects} = args\n const {floating, reference} = rects\n\n const overflow = await detectOverflow(args, {\n altBoundary: true,\n boundary: options.boundaryElement || undefined,\n elementContext: 'floating',\n padding,\n rootBoundary: 'viewport',\n })\n\n let maxWidth = Infinity\n let maxHeight = Infinity\n\n const floatingW = floating.width\n const floatingH = floating.height\n\n if (placement.includes('top')) {\n maxWidth = floatingW - (overflow.left + overflow.right)\n maxHeight = floatingH - overflow.top\n }\n\n if (placement.includes('right')) {\n maxWidth = floatingW - overflow.right\n maxHeight = floatingH - (overflow.top + overflow.bottom)\n }\n\n if (placement.includes('bottom')) {\n maxWidth = floatingW - (overflow.left + overflow.right)\n maxHeight = floatingH - overflow.bottom\n }\n\n if (placement.includes('left')) {\n maxWidth = floatingW - overflow.left\n maxHeight = floatingH - (overflow.top + overflow.bottom)\n }\n\n // IMPORTANT – APPLY ELEMENT STYLES HERE\n // Elements need to be resized BEFORE the `platform.getDimensions` call below\n apply({\n availableWidth: maxWidth - margins[1] - margins[3],\n availableHeight: maxHeight - margins[0] - margins[2],\n elements,\n referenceWidth: reference.width - margins[1] - margins[3],\n })\n\n const nextDimensions = await platform.getDimensions(elements.floating)\n\n const targetH = nextDimensions.height\n const targetW = nextDimensions.width\n\n if (floatingW !== targetW || floatingH !== targetH) {\n return {reset: {rects: true}}\n }\n\n return {}\n },\n }\n}\n","import {DEFAULT_POPOVER_PADDING} from './constants'\nimport {PopoverWidth} from './types'\n\nexport function calcCurrentWidth(params: {\n mediaIndex: number\n container: number[]\n width: PopoverWidth[]\n}): number | undefined {\n const {container, mediaIndex, width} = params\n\n const w = width[mediaIndex]\n const currentWidth: PopoverWidth | undefined = w === undefined ? width[width.length - 1] : w\n\n return typeof currentWidth === 'number' ? container[currentWidth] : undefined\n}\n\nexport function calcMaxWidth(params: {\n boundaryWidth: number | undefined\n currentWidth: number | undefined\n}): number | undefined {\n const {boundaryWidth, currentWidth} = params\n\n if (currentWidth === undefined && boundaryWidth === undefined) {\n return undefined\n }\n\n return Math.min(\n currentWidth ?? Infinity,\n (boundaryWidth || Infinity) - DEFAULT_POPOVER_PADDING * 2,\n )\n}\n","import {Strategy} from '@floating-ui/react-dom'\nimport {ThemeColorSchemeKey} from '@sanity/ui/theme'\nimport {MotionProps, motion} from 'framer-motion'\nimport React, {CSSProperties, forwardRef, memo, useMemo} from 'react'\nimport {styled} from 'styled-components'\nimport {POPOVER_MOTION_CONTENT_OPACITY_PROPERTY, POPOVER_MOTION_PROPS} from '../../constants'\nimport {BoxOverflow, CardTone, Placement, PopoverMargins, Radius} from '../../types'\nimport {Arrow, useLayer} from '../../utils'\nimport {Card, CardProps} from '../card'\nimport {Flex} from '../flex'\nimport {\n DEFAULT_POPOVER_ARROW_HEIGHT,\n DEFAULT_POPOVER_ARROW_RADIUS,\n DEFAULT_POPOVER_ARROW_WIDTH,\n DEFAULT_POPOVER_MARGINS,\n} from './constants'\n\nconst MotionCard = styled(motion(Card))`\n &:not([hidden]) {\n display: flex;\n }\n flex-direction: column;\n width: max-content;\n min-width: min-content;\n & > * {\n opacity: var(${POPOVER_MOTION_CONTENT_OPACITY_PROPERTY}, 1);\n will-change: opacity;\n }\n`\n\n/**\n * @internal\n */\nexport const PopoverCard = memo(\n forwardRef(function PopoverCard(\n props: {\n /** @beta*/\n __unstable_margins?: PopoverMargins\n animate?: boolean\n arrow: boolean\n arrowRef: React.Ref<HTMLDivElement>\n arrowX?: number\n arrowY?: number\n originX?: number\n originY?: number\n overflow?: BoxOverflow\n padding?: number | number[]\n placement: Placement\n radius?: Radius | Radius[]\n scheme?: ThemeColorSchemeKey\n shadow?: number | number[]\n strategy: Strategy\n tone: CardTone\n width: number | undefined\n x: number | null\n y: number | null\n } & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'width'>,\n ref: React.ForwardedRef<HTMLDivElement>,\n ) {\n const {\n __unstable_margins: marginsProp,\n animate,\n arrow,\n arrowRef,\n arrowX,\n arrowY,\n children,\n padding,\n placement,\n originX,\n originY,\n overflow,\n radius,\n scheme,\n shadow,\n strategy,\n style,\n tone,\n width,\n x: xProp,\n y: yProp,\n ...restProps\n } = props\n\n const {zIndex} = useLayer()\n\n // Get margins: [top, right, bottom, left]\n const margins: PopoverMargins = useMemo(\n () => marginsProp || DEFAULT_POPOVER_MARGINS,\n [marginsProp],\n )\n\n // Translate according to margins\n const x = (xProp ?? 0) + margins[3]\n const y = (yProp ?? 0) + margins[0]\n\n const rootStyle: CSSProperties = useMemo(\n () => ({\n left: x,\n originX,\n originY,\n position: strategy,\n top: y,\n width,\n zIndex,\n willChange: animate ? 'transform' : undefined,\n ...style,\n }),\n [animate, originX, originY, strategy, style, width, x, y, zIndex],\n )\n\n const arrowStyle: CSSProperties = useMemo(\n () => ({\n left: arrowX !== null ? arrowX : undefined,\n top: arrowY !== null ? arrowY : undefined,\n right: undefined,\n bottom: undefined,\n }),\n [arrowX, arrowY],\n )\n\n return (\n <MotionCard\n data-ui=\"Popover\"\n {...(restProps as CardProps & MotionProps)}\n data-placement={placement}\n radius={radius}\n ref={ref}\n scheme={scheme}\n shadow={shadow}\n sizing=\"border\"\n style={rootStyle}\n tone={tone}\n {...(animate ? POPOVER_MOTION_PROPS : {})}\n >\n <Flex data-ui=\"Popover__wrapper\" direction=\"column\" flex={1} overflow={overflow}>\n <Flex direction=\"column\" flex={1} padding={padding}>\n {children}\n </Flex>\n </Flex>\n\n {arrow && (\n <Arrow\n ref={arrowRef}\n style={arrowStyle}\n width={DEFAULT_POPOVER_ARROW_WIDTH}\n height={DEFAULT_POPOVER_ARROW_HEIGHT}\n radius={DEFAULT_POPOVER_ARROW_RADIUS}\n />\n )}\n </MotionCard>\n )\n }),\n)\n\nPopoverCard.displayName = 'PopoverCard'\n","import {\n Middleware,\n RootBoundary,\n arrow,\n autoUpdate,\n flip,\n hide,\n offset,\n shift,\n useFloating,\n} from '@floating-ui/react-dom'\nimport {ThemeColorSchemeKey} from '@sanity/ui/theme'\nimport {AnimatePresence} from 'framer-motion'\nimport {\n MutableRefObject,\n RefCallback,\n cloneElement,\n forwardRef,\n memo,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react'\nimport {useElementSize, useMediaIndex, usePrefersReducedMotion} from '../../hooks'\nimport {origin} from '../../middleware/origin'\nimport {_getArrayProp} from '../../styles'\nimport {useTheme_v2} from '../../theme'\nimport {BoxOverflow, CardTone, Placement, PopoverMargins} from '../../types'\nimport {\n ConditionalWrapper,\n LayerProps,\n LayerProvider,\n Portal,\n useBoundaryElement,\n} from '../../utils'\nimport {ResponsiveRadiusProps, ResponsiveShadowProps} from '../types'\nimport {\n DEFAULT_POPOVER_DISTANCE,\n DEFAULT_POPOVER_MARGINS,\n DEFAULT_FALLBACK_PLACEMENTS,\n DEFAULT_POPOVER_PADDING,\n} from './constants'\nimport {size} from './floating-ui/size'\nimport {calcCurrentWidth, calcMaxWidth} from './helpers'\nimport {PopoverCard} from './popoverCard'\nimport {PopoverUpdateCallback, PopoverWidth} from './types'\n\nexport type {PopoverUpdateCallback}\n\n/** @public */\nexport interface PopoverProps\n extends Omit<LayerProps, 'as'>,\n ResponsiveRadiusProps,\n ResponsiveShadowProps {\n /** @beta */\n __unstable_margins?: PopoverMargins\n /**\n * Whether the popover should animate in and out.\n *\n * @beta\n * @defaultValue false\n */\n animate?: boolean\n arrow?: boolean\n /** @deprecated Use `floatingBoundary` and/or `referenceBoundary` instead */\n boundaryElement?: HTMLElement | null\n children?: React.ReactElement\n /**\n * When `true`, prevent overflow within the current boundary:\n * - by flipping on its side axis\n * - by resizing\n /*\n * Note that:\n * - setting `preventOverflow` to `true` also prevents overflow on its side axis\n * - setting `matchReferenceWidth` to `true` also causes the popover to resize\n *\n * @defaultValue false\n */\n constrainSize?: boolean\n content?: React.ReactNode\n disabled?: boolean\n fallbackPlacements?: Placement[]\n floatingBoundary?: HTMLElement | null\n /**\n * When `true`, set the maximum width to match the reference element, and also prevent overflow within\n * the current boundary by resizing.\n *\n * Note that setting `constrainSize` to `true` also causes the popover to resize\n *\n * @defaultValue false\n */\n matchReferenceWidth?: boolean\n open?: boolean\n overflow?: BoxOverflow\n padding?: number | number[]\n placement?: Placement\n /** Whether or not to render the popover in a portal element. */\n portal?: boolean | string\n preventOverflow?: boolean\n referenceBoundary?: HTMLElement | null\n /**\n * When defined, the popover will be positioned relative to this element.\n * The children of the popover won't be rendered.\n */\n referenceElement?: HTMLElement | null\n scheme?: ThemeColorSchemeKey\n tone?: CardTone\n /** @beta */\n updateRef?:\n | MutableRefObject<PopoverUpdateCallback | undefined>\n | RefCallback<PopoverUpdateCallback | undefined>\n width?: PopoverWidth | PopoverWidth[]\n}\n\n/**\n * The `Popover` component is used to display some content on top of another.\n *\n * @public\n */\nexport const Popover = memo(\n forwardRef(function Popover(\n props: PopoverProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content' | 'width'>,\n forwardedRef: React.ForwardedRef<HTMLDivElement>,\n ): React.ReactElement {\n const {container, layer} = useTheme_v2()\n const boundaryElementContext = useBoundaryElement()\n\n const {\n __unstable_margins: margins = DEFAULT_POPOVER_MARGINS,\n animate: _animate = false,\n arrow: arrowProp = false,\n boundaryElement = boundaryElementContext.element,\n children: childProp,\n constrainSize = false,\n content,\n disabled,\n fallbackPlacements = props.fallbackPlacements ??\n DEFAULT_FALLBACK_PLACEMENTS[props.placement ?? 'bottom'],\n matchReferenceWidth,\n floatingBoundary = props.boundaryElement ?? boundaryElementContext.element,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onActivate,\n open,\n overflow = 'hidden',\n padding: paddingProp,\n placement: placementProp = 'bottom',\n portal,\n preventOverflow = true,\n radius: radiusProp = 3,\n referenceBoundary = props.boundaryElement ?? boundaryElementContext.element,\n referenceElement,\n scheme,\n shadow: shadowProp = 3,\n tone = 'inherit',\n width: widthProp = 'auto',\n zOffset: zOffsetProp = layer.popover.zOffset,\n updateRef,\n ...restProps\n } = props\n const prefersReducedMotion = usePrefersReducedMotion()\n const animate = prefersReducedMotion ? false : _animate\n const boundarySize = useElementSize(boundaryElement)?.border\n const padding = useMemo(() => _getArrayProp(paddingProp), [paddingProp])\n const radius = useMemo(() => _getArrayProp(radiusProp), [radiusProp])\n const shadow = useMemo(() => _getArrayProp(shadowProp), [shadowProp])\n const widthArrayProp = useMemo(() => _getArrayProp(widthProp), [widthProp])\n const zOffset = useMemo(() => _getArrayProp(zOffsetProp), [zOffsetProp])\n const ref = useRef<HTMLDivElement | null>(null)\n const arrowRef = useRef<HTMLDivElement | null>(null)\n const rootBoundary: RootBoundary = 'viewport'\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n const mediaIndex = useMediaIndex()\n const boundaryWidth = constrainSize || preventOverflow ? boundarySize?.width : undefined\n\n // Update width when\n // - media index changes\n // - `width` property changes\n const width = calcCurrentWidth({\n container,\n mediaIndex,\n width: widthArrayProp,\n })\n const widthRef = useRef(width)\n\n useEffect(() => {\n widthRef.current = width\n }, [width])\n\n // Update max width when\n // - boundary width changes\n // - `width` property changes\n const maxWidth = calcMaxWidth({boundaryWidth, currentWidth: width})\n const maxWidthRef = useRef(maxWidth)\n\n useEffect(() => {\n maxWidthRef.current = maxWidth\n }, [maxWidth])\n\n // Keep track of reference element width (see `size` middleware below)\n const referenceWidthRef = useRef<number>()\n\n // Force apply width & max width to floating element\n useEffect(() => {\n const floatingElement = ref.current\n\n if (!open || !floatingElement) return\n\n const referenceWidth = referenceWidthRef.current\n\n if (matchReferenceWidth) {\n if (referenceWidth !== undefined) {\n floatingElement.style.width = `${referenceWidth}px`\n }\n } else if (width !== undefined) {\n floatingElement.style.width = `${width}px`\n }\n\n if (typeof maxWidth === 'number') {\n floatingElement.style.maxWidth = `${maxWidth}px`\n }\n }, [width, matchReferenceWidth, maxWidth, open])\n\n const middleware = useMemo(() => {\n const ret: Middleware[] = []\n\n // Flip the floating element when leaving the boundary box\n if (constrainSize || preventOverflow) {\n ret.push(\n flip({\n boundary: floatingBoundary || undefined,\n fallbackPlacements,\n padding: DEFAULT_POPOVER_PADDING,\n rootBoundary,\n }),\n )\n }\n\n // Define distance between reference and floating element\n ret.push(offset({mainAxis: DEFAULT_POPOVER_DISTANCE}))\n\n // Track sizes\n if (constrainSize || matchReferenceWidth) {\n ret.push(\n size({\n apply({availableWidth, availableHeight, elements, referenceWidth}) {\n // not fresh, so use refs\n\n referenceWidthRef.current = referenceWidth\n\n const _currentWidth = widthRef.current\n const _maxWidth = maxWidthRef.current\n\n if (matchReferenceWidth) {\n elements.floating.style.width = `${referenceWidth}px`\n } else if (_currentWidth !== undefined) {\n elements.floating.style.width = `${_currentWidth}px`\n }\n\n if (constrainSize) {\n elements.floating.style.maxWidth = `${Math.min(\n availableWidth,\n _maxWidth ?? Infinity,\n )}px`\n\n elements.floating.style.maxHeight = `${availableHeight}px`\n }\n },\n boundaryElement: floatingBoundary || undefined,\n constrainSize,\n margins,\n matchReferenceWidth,\n padding: DEFAULT_POPOVER_PADDING,\n }),\n )\n }\n\n // Shift the popover so its sits within the boundary element\n if (preventOverflow) {\n ret.push(\n shift({\n boundary: floatingBoundary || undefined,\n rootBoundary,\n padding: DEFAULT_POPOVER_PADDING,\n }),\n )\n }\n\n // Place arrow\n if (arrowProp) {\n ret.push(\n arrow({\n element: arrowRef,\n padding: DEFAULT_POPOVER_PADDING,\n }),\n )\n }\n\n // Determine the origin to scale from.\n // Must be placed after `@sanity/ui/size` and `shift` middleware.\n if (animate) {\n ret.push(origin)\n }\n\n ret.push(\n hide({\n boundary: referenceBoundary || undefined,\n padding: DEFAULT_POPOVER_PADDING,\n strategy: 'referenceHidden',\n }),\n )\n\n return ret\n }, [\n animate,\n arrowProp,\n constrainSize,\n fallbackPlacements,\n floatingBoundary,\n margins,\n matchReferenceWidth,\n preventOverflow,\n referenceBoundary,\n ])\n\n const {x, y, middlewareData, placement, refs, strategy, update} = useFloating({\n middleware,\n placement: placementProp,\n whileElementsMounted: autoUpdate,\n })\n\n const referenceHidden = middlewareData.hide?.referenceHidden\n\n const arrowX = middlewareData.arrow?.x\n const arrowY = middlewareData.arrow?.y\n\n const originX = middlewareData['@sanity/ui/origin']?.originX\n const originY = middlewareData['@sanity/ui/origin']?.originY\n\n const setArrow = useCallback((arrowEl: HTMLDivElement | null) => {\n arrowRef.current = arrowEl\n }, [])\n\n const setFloating = useCallback(\n (node: HTMLDivElement | null) => {\n ref.current = node\n refs.setFloating(node)\n },\n [refs],\n )\n\n const setReference = useCallback(\n (node: HTMLElement | null) => {\n refs.setReference(node)\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const childRef = (childProp as any)?.ref\n\n if (typeof childRef === 'function') {\n childRef(node)\n } else if (childRef) {\n childRef.current = node\n }\n },\n [childProp, refs],\n )\n\n const child = useMemo(() => {\n if (!childProp || referenceElement) return null\n\n return cloneElement(childProp, {ref: setReference})\n }, [childProp, referenceElement, setReference])\n\n useEffect(() => {\n if (updateRef) {\n if (typeof updateRef === 'function') {\n updateRef(update)\n } else if (updateRef) {\n updateRef.current = update\n }\n }\n }, [update, updateRef])\n\n useEffect(() => {\n if (child) return\n refs.setReference(referenceElement || null)\n }, [referenceElement, refs, child])\n\n if (disabled) {\n return childProp || <></>\n }\n\n const popover = (\n <LayerProvider zOffset={zOffset}>\n <PopoverCard\n {...restProps}\n __unstable_margins={margins}\n animate={animate}\n arrow={arrowProp}\n arrowRef={setArrow}\n arrowX={arrowX}\n arrowY={arrowY}\n hidden={referenceHidden}\n overflow={overflow}\n padding={padding}\n placement={placement}\n radius={radius}\n ref={setFloating}\n scheme={scheme}\n shadow={shadow}\n originX={originX}\n originY={originY}\n strategy={strategy}\n tone={tone}\n width={matchReferenceWidth ? referenceWidthRef.current : width}\n x={x}\n y={y}\n >\n {content}\n </PopoverCard>\n </LayerProvider>\n )\n\n return (\n <>\n {/* the popover */}\n <ConditionalWrapper\n condition={animate}\n wrapper={(children) => <AnimatePresence>{children}</AnimatePresence>}\n >\n {open && (\n <ConditionalWrapper\n condition={!!portal}\n wrapper={(children) => (\n <Portal __unstable_name={typeof portal === 'string' ? portal : undefined}>\n {children}\n </Portal>\n )}\n >\n {popover}\n </ConditionalWrapper>\n )}\n </ConditionalWrapper>\n\n {/* the referred element */}\n {child}\n </>\n )\n }),\n)\n\nPopover.displayName = 'Popover'\n","import {getTheme_v2} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\nimport {rem, ThemeProps} from '../../styles'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/internal'\n\nexport function radioBaseStyle(): ReturnType<typeof css> {\n return css`\n position: relative;\n\n &:not([hidden]) {\n display: inline-block;\n }\n\n &[data-read-only] {\n outline: 1px solid red;\n }\n `\n}\n\nexport function inputElementStyle(props: ThemeProps): ReturnType<typeof css> {\n const {color, input} = getTheme_v2(props.theme)\n const dist = (input.radio.size - input.radio.markSize) / 2\n\n return css`\n appearance: none;\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0;\n height: 100%;\n width: 100%;\n outline: none;\n z-index: 1;\n padding: 0;\n margin: 0;\n border-radius: ${rem(input.radio.size / 2)};\n border: none;\n\n /* enabled */\n & + span {\n display: block;\n position: relative;\n height: ${rem(input.radio.size)};\n width: ${rem(input.radio.size)};\n border-radius: ${rem(input.radio.size / 2)};\n background: ${color.input.default.enabled.bg};\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.enabled.border,\n width: input.border.width,\n })};\n\n &::after {\n content: '';\n position: absolute;\n top: ${rem(dist)};\n left: ${rem(dist)};\n height: ${rem(input.radio.markSize)};\n width: ${rem(input.radio.markSize)};\n border-radius: ${rem(input.radio.markSize / 2)};\n background: ${color.input.default.enabled.fg};\n opacity: 0;\n }\n }\n\n /* focused */\n &:not(:disabled):focus + span {\n box-shadow: ${focusRingStyle({\n border: {width: input.border.width, color: color.input.default.enabled.border},\n focusRing: input.radio.focusRing,\n })};\n }\n\n &:not(:disabled):focus:not(:focus-visible) + span {\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.enabled.border,\n width: input.border.width,\n })};\n }\n\n &:checked + span::after {\n opacity: 1;\n }\n\n /* customValidity */\n &[data-error] + span {\n background-color: ${color.input.invalid.enabled.border};\n box-shadow: ${focusRingBorderStyle({\n width: input.border.width,\n color: color.input.invalid.enabled.muted.bg,\n })};\n &::after {\n background: ${color.input.invalid.enabled.muted.bg};\n }\n }\n\n /* read only */\n &[data-read-only] + span {\n box-shadow: 0 0 0 1px ${color.input.default.readOnly.border};\n background: ${color.input.default.readOnly.bg};\n\n &::after {\n background: ${color.input.default.readOnly.border};\n }\n }\n\n /* disabled */\n &:not([data-read-only]):disabled + span {\n box-shadow: 0 0 0 1px ${color.input.default.disabled.border};\n background: ${color.input.default.disabled.bg};\n\n &::after {\n background: ${color.input.default.disabled.border};\n }\n }\n `\n}\n","import {forwardRef, useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\nimport {useCustomValidity} from '../../hooks'\nimport {radioBaseStyle, inputElementStyle} from './styles'\n\n/**\n * @public\n */\nexport interface RadioProps {\n customValidity?: string\n}\n\nconst Root = styled.div(radioBaseStyle)\nconst Input = styled.input(inputElementStyle)\n\n/**\n * The `Radio` component allows the user to select one option from a set.\n *\n * @public\n */\nexport const Radio = forwardRef(function Radio(\n props: Omit<React.HTMLProps<HTMLInputElement>, 'as' | 'type'> & RadioProps,\n forwardedRef: React.ForwardedRef<HTMLInputElement>,\n) {\n const {className, disabled, style, customValidity, readOnly, ...restProps} = props\n const ref = useRef<HTMLInputElement | null>(null)\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useCustomValidity(ref, customValidity)\n\n return (\n <Root className={className} data-ui=\"Radio\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-error={customValidity ? '' : undefined}\n {...restProps}\n disabled={disabled || readOnly}\n readOnly={readOnly}\n ref={ref}\n type=\"radio\"\n />\n <span />\n </Root>\n )\n})\n","import {ThemeFontSize, getTheme_v2} from '@sanity/ui/theme'\nimport {CSSObject} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\nimport {rem, _responsive, ThemeProps} from '../../styles'\nimport {\n focusRingBorderStyle,\n focusRingStyle,\n responsiveInputPaddingIconRightStyle,\n responsiveRadiusStyle,\n ResponsiveRadiusStyleProps,\n} from '../../styles/internal'\n\nfunction rootStyle(): ReturnType<typeof css> {\n return css`\n position: relative;\n width: -moz-available;\n width: -webkit-fill-available;\n width: stretch;\n\n &:not([hidden]) {\n display: inline-block;\n }\n `\n}\n\nfunction inputBaseStyle(props: ThemeProps): ReturnType<typeof css> {\n const {font} = getTheme_v2(props.theme)\n\n return css`\n -webkit-font-smoothing: antialiased;\n appearance: none;\n border: 0;\n font-family: ${font.text.family};\n color: inherit;\n width: 100%;\n outline: none;\n margin: 0;\n\n &:disabled {\n opacity: 1;\n }\n `\n}\n\nfunction inputColorStyle(props: ThemeProps) {\n const {color, input} = getTheme_v2(props.theme)\n\n return css`\n /* enabled */\n background-color: ${color.input.default.enabled.bg};\n color: ${color.input.default.enabled.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.enabled.border,\n width: input.border.width,\n })};\n\n /* hovered */\n @media (hover: hover) {\n &:not(:disabled):hover {\n background-color: ${color.input.default.hovered.bg};\n color: ${color.input.default.hovered.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.hovered.border,\n width: input.border.width,\n })};\n }\n }\n\n /* focused */\n &:not(:disabled):focus {\n box-shadow: ${focusRingStyle({\n border: {width: input.border.width, color: color.input.default.enabled.border},\n focusRing: input.select.focusRing,\n })};\n }\n\n /* read-only */\n &[data-read-only] {\n background-color: ${color.input.default.readOnly.bg};\n color: ${color.input.default.readOnly.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.readOnly.border,\n width: input.border.width,\n })};\n }\n\n /* disabled */\n &:not([data-read-only]):disabled {\n background-color: ${color.input.default.disabled.bg};\n color: ${color.input.default.disabled.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.disabled.border,\n width: input.border.width,\n })};\n }\n `\n}\n\nfunction textSize(size: ThemeFontSize) {\n return {fontSize: rem(size.fontSize), lineHeight: rem(size.lineHeight)}\n}\n\nfunction inputTextSizeStyle(props: {$fontSize: number[]} & ThemeProps) {\n const {$fontSize} = props\n const {font, media} = getTheme_v2(props.theme)\n\n return _responsive(media, $fontSize, (sizeIndex) =>\n textSize(font.text.sizes[sizeIndex] || font.text.sizes[2]),\n )\n}\n\nfunction inputStyle(): Array<\n | ((\n props: ResponsiveRadiusStyleProps & {\n $fontSize: number[]\n $padding: number[]\n $space: number[]\n } & ThemeProps,\n ) => CSSObject[])\n | ((props: ThemeProps) => ReturnType<typeof css>)\n> {\n return [\n responsiveRadiusStyle,\n inputBaseStyle,\n inputColorStyle,\n inputTextSizeStyle,\n responsiveInputPaddingIconRightStyle,\n ]\n}\n\nfunction iconBoxStyle(props: ThemeProps): ReturnType<typeof css> {\n const {color} = getTheme_v2(props.theme)\n\n return css`\n pointer-events: none;\n position: absolute;\n top: 0;\n right: 0;\n\n /* enabled */\n --card-fg-color: ${color.input.default.enabled.fg};\n\n /* hover */\n @media (hover: hover) {\n select:not(disabled):not(:read-only):hover + && {\n --card-fg-color: ${color.input.default.hovered.fg};\n }\n }\n\n /* disabled */\n select:disabled + && {\n --card-fg-color: ${color.input.default.disabled.fg};\n }\n\n /* read-only */\n select[data-read-only] + && {\n --card-fg-color: ${color.input.default.readOnly.fg};\n }\n `\n}\n\nexport const selectStyle = {\n root: rootStyle,\n input: inputStyle,\n iconBox: iconBoxStyle,\n}\n","import {ChevronDownIcon} from '@sanity/icons'\nimport {forwardRef, useImperativeHandle, useMemo, useRef} from 'react'\nimport {styled} from 'styled-components'\nimport {useCustomValidity} from '../../hooks'\nimport {_getArrayProp} from '../../styles'\nimport {Radius} from '../../types'\nimport {Box} from '../box'\nimport {Text} from '../text'\nimport {selectStyle} from './styles'\n\n/**\n * @public\n */\nexport interface SelectProps {\n fontSize?: number | number[]\n padding?: number | number[]\n radius?: Radius | Radius[]\n space?: number | number[]\n customValidity?: string\n}\n\nconst Root = styled.div(selectStyle.root)\n\nconst Input = styled.select<{\n $fontSize: number[]\n $padding: number[]\n $radius: Radius[]\n $space: number[]\n}>(selectStyle.input)\n\nconst IconBox = styled(Box)(selectStyle.iconBox)\n\n/**\n * The `Select` component provides control of options.\n *\n * @public\n */\nexport const Select = forwardRef(function Select(\n props: SelectProps & Omit<React.HTMLProps<HTMLSelectElement>, 'as'>,\n forwardedRef: React.ForwardedRef<HTMLSelectElement>,\n) {\n const {\n children,\n customValidity,\n disabled,\n fontSize = 2,\n padding = 3,\n radius = 2,\n readOnly,\n space = 3,\n ...restProps\n } = props\n\n const ref = useRef<HTMLSelectElement | null>(null)\n\n useImperativeHandle<HTMLSelectElement | null, HTMLSelectElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useCustomValidity(ref, customValidity)\n\n const $fontSize = useMemo(() => _getArrayProp(fontSize), [fontSize])\n const $padding = useMemo(() => _getArrayProp(padding), [padding])\n const $radius = useMemo(() => _getArrayProp(radius), [radius])\n const $space = useMemo(() => _getArrayProp(space), [space])\n\n return (\n <Root data-ui=\"Select\">\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-ui=\"Select\"\n {...restProps}\n $fontSize={$fontSize}\n $padding={$padding}\n $radius={$radius}\n $space={$space}\n disabled={disabled || readOnly}\n ref={ref}\n >\n {children}\n </Input>\n\n <IconBox padding={padding}>\n <Text size={fontSize}>\n <ChevronDownIcon />\n </Text>\n </IconBox>\n </Root>\n )\n})\n","import {CSSObject, getTheme_v2} from '@sanity/ui/theme'\nimport {rem, _responsive, ThemeProps} from '../../styles'\n\nexport interface ResponsiveStackSpaceStyleProps {\n $space: number[]\n}\n\nconst BASE_STYLE: CSSObject = {\n '&&:not([hidden])': {\n display: 'grid',\n },\n '&[data-as=\"ul\"],&[data-as=\"ol\"]': {\n listStyle: 'none',\n },\n gridTemplateColumns: 'minmax(0, 1fr)',\n gridAutoRows: 'min-content',\n}\n\nexport function stackBaseStyle(): CSSObject {\n return BASE_STYLE\n}\n\nexport function responsiveStackSpaceStyle(\n props: ResponsiveStackSpaceStyleProps & ThemeProps,\n): CSSObject[] {\n const {media, space} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$space, (spaceIndex) => ({\n gridGap: rem(space[spaceIndex]),\n }))\n}\n","import {forwardRef, useMemo} from 'react'\nimport {styled} from 'styled-components'\nimport {_getArrayProp} from '../../styles'\nimport {Box, BoxProps} from '../box'\nimport {stackBaseStyle, responsiveStackSpaceStyle, ResponsiveStackSpaceStyleProps} from './styles'\n\n/**\n * @public\n */\nexport interface StackProps extends BoxProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n space?: number | number[]\n}\n\nconst Root = styled(Box)<ResponsiveStackSpaceStyleProps>(stackBaseStyle, responsiveStackSpaceStyle)\n\n/**\n * The `Stack` component is used to place elements on top of each other.\n *\n * @public\n */\nexport const Stack = forwardRef(function Stack(\n props: StackProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'ref'>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {as, space, ...restProps} = props\n const $space = useMemo(() => _getArrayProp(space), [space])\n\n return (\n <Root\n data-as={typeof as === 'string' ? as : undefined}\n data-ui=\"Stack\"\n {...restProps}\n $space={$space}\n forwardedAs={as}\n ref={ref}\n />\n )\n})\n","import {getTheme_v2} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\nimport {rem, ThemeProps} from '../../styles'\nimport {focusRingStyle} from '../../styles/internal'\n\n/* Root */\nexport function switchBaseStyles(): ReturnType<typeof css> {\n return css`\n position: relative;\n &:not([hidden]) {\n display: inline-block;\n }\n `\n}\n\n/* Input */\nexport function switchInputStyles(): ReturnType<typeof css> {\n // Visually hide the input element while keeping it interactive\n return css`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n opacity: 0;\n height: 100%;\n width: 100%;\n outline: none;\n padding: 0;\n margin: 0;\n\n /* Place the input element above the representation element */\n z-index: 1;\n `\n}\n\n/* Representation */\nexport function switchRepresentationStyles(props: ThemeProps): ReturnType<typeof css> {\n const {color, input} = getTheme_v2(props.theme)\n\n return css`\n --switch-bg-color: ${color.input.default.enabled.border};\n --switch-fg-color: ${color.input.default.enabled.bg};\n --switch-box-shadow: none;\n\n &:not([hidden]) {\n display: block;\n }\n position: relative;\n width: ${rem(input.switch.width)};\n height: ${rem(input.switch.height)};\n border-radius: ${rem(input.switch.height / 2)};\n\n /* Make sure it’s not possible to interact with the wrapper element */\n pointer-events: none;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1;\n box-shadow: var(--switch-box-shadow);\n border-radius: inherit;\n }\n\n /* Focus styles */\n input:focus + && {\n --switch-box-shadow: ${focusRingStyle({focusRing: input.switch.focusRing})};\n }\n\n input:focus:not(:focus-visible) + && {\n --switch-box-shadow: none;\n }\n\n input:checked + && {\n --switch-bg-color: ${color.input.default.enabled.fg};\n --switch-fg-color: ${color.input.default.enabled.bg};\n }\n\n @media (hover: hover) {\n input:not(:disabled):hover + && {\n --switch-bg-color: ${color.input.default.hovered.border};\n --switch-fg-color: ${color.input.default.hovered.bg};\n }\n\n input:not(:disabled):checked:hover + && {\n --switch-bg-color: ${color.input.default.enabled.fg};\n --switch-fg-color: ${color.input.default.enabled.bg};\n }\n }\n\n input:not([data-read-only]):disabled + && {\n --switch-bg-color: ${color.input.default.disabled.border};\n --switch-fg-color: ${color.input.default.disabled.bg};\n }\n\n input[data-read-only]:disabled + && {\n --switch-bg-color: ${color.input.default.readOnly.border};\n --switch-fg-color: ${color.input.default.readOnly.bg};\n }\n\n input:checked[data-read-only]:disabled + && {\n --switch-bg-color: ${color.input.default.readOnly.fg};\n --switch-fg-color: ${color.input.default.readOnly.bg};\n }\n `\n}\n\n/* Track */\nexport function switchTrackStyles(props: ThemeProps): ReturnType<typeof css> {\n const {input} = getTheme_v2(props.theme)\n\n return css`\n &:not([hidden]) {\n display: block;\n }\n background-color: var(--switch-bg-color);\n position: absolute;\n left: 0;\n top: 0;\n width: ${rem(input.switch.width)};\n height: ${rem(input.switch.height)};\n border-radius: ${rem(input.switch.height / 2)};\n `\n}\n\n/* Thumb */\nexport function switchThumbStyles(\n props: {$checked?: boolean; $indeterminate?: boolean} & ThemeProps,\n): ReturnType<typeof css> {\n const {$indeterminate} = props\n const {input} = getTheme_v2(props.theme)\n const trackWidth = input.switch.width\n const trackHeight = input.switch.height\n const trackPadding = input.switch.padding\n const size = trackHeight - input.switch.padding * 2\n const checkedOffset = trackWidth - trackPadding * 2 - size\n const indeterminateOffset = trackWidth / 2 - size / 2 - trackPadding\n const checked = $indeterminate !== true && props.$checked === true\n\n return css`\n &:not([hidden]) {\n display: block;\n }\n position: absolute;\n left: ${rem(trackPadding)};\n top: ${rem(trackPadding)};\n height: ${rem(size)};\n width: ${rem(size)};\n border-radius: ${rem(size / 2)};\n transition-property: transform;\n transition-duration: ${input.switch.transitionDurationMs}ms;\n transition-timing-function: ${input.switch.transitionTimingFunction};\n background: var(--switch-fg-color);\n transform: translate3d(0, 0, 0);\n box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.05);\n\n ${checked &&\n css`\n transform: translate3d(${checkedOffset}px, 0, 0);\n `}\n\n ${$indeterminate &&\n css`\n transform: translate3d(${indeterminateOffset}px, 0, 0);\n `}\n `\n}\n","import {forwardRef, useEffect, useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\nimport {\n switchBaseStyles,\n switchRepresentationStyles,\n switchThumbStyles,\n switchTrackStyles,\n switchInputStyles,\n} from './styles'\n\n/**\n * @public\n */\nexport interface SwitchProps {\n indeterminate?: boolean\n}\n\nconst Root = styled.span(switchBaseStyles)\nconst Input = styled.input(switchInputStyles)\nconst Representation = styled.span(switchRepresentationStyles)\nconst Track = styled.span(switchTrackStyles)\nconst Thumb = styled.span<{$checked?: boolean; $indeterminate?: boolean}>(switchThumbStyles)\n\n/**\n * The `Switch` component allows the user to toggle a setting on and off.\n *\n * Extends all properties of an `<input type=\"checkbox\" />` element, except type.\n *\n * @public\n */\nexport const Switch = forwardRef(function Switch(\n props: Omit<React.HTMLProps<HTMLInputElement>, 'as' | 'type'> & SwitchProps,\n forwardedRef: React.ForwardedRef<HTMLInputElement>,\n) {\n const {checked, className, disabled, indeterminate, readOnly, style, ...restProps} = props\n const ref = useRef<HTMLInputElement | null>(null)\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useEffect(() => {\n if (ref.current) {\n // Set the indeterminate state\n ref.current.indeterminate = indeterminate || false\n }\n }, [indeterminate])\n\n return (\n <Root className={className} data-ui=\"Switch\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n {...restProps}\n checked={indeterminate !== true && checked}\n disabled={disabled || readOnly}\n type=\"checkbox\"\n ref={ref}\n />\n <Representation aria-hidden data-name=\"representation\">\n <Track />\n <Thumb $checked={checked} $indeterminate={indeterminate} />\n </Representation>\n </Root>\n )\n})\n","import {ThemeFontWeightKey} from '@sanity/ui/theme'\nimport {forwardRef, useImperativeHandle, useMemo, useRef} from 'react'\nimport {styled} from 'styled-components'\nimport {useCustomValidity} from '../../hooks'\nimport {_getArrayProp} from '../../styles'\nimport {\n responsiveInputPaddingStyle,\n responsiveRadiusStyle,\n ResponsiveRadiusStyleProps,\n TextInputResponsivePaddingStyleProps,\n TextInputInputStyleProps,\n TextInputRepresentationStyleProps,\n textInputRootStyle,\n textInputBaseStyle,\n textInputFontSizeStyle,\n textInputRepresentationStyle,\n} from '../../styles/internal'\nimport {useRootTheme} from '../../theme'\nimport {ResponsiveRadiusProps} from '../types'\n\n/**\n * @public\n */\nexport interface TextAreaProps extends ResponsiveRadiusProps {\n border?: boolean\n customValidity?: string\n fontSize?: number | number[]\n padding?: number | number[]\n weight?: ThemeFontWeightKey\n}\n\nconst Root = styled.span(textInputRootStyle)\n\nconst InputRoot = styled.span`\n flex: 1;\n min-width: 0;\n display: block;\n position: relative;\n`\n\nconst Input = styled.textarea<TextInputResponsivePaddingStyleProps & TextInputInputStyleProps>(\n responsiveInputPaddingStyle,\n textInputBaseStyle,\n textInputFontSizeStyle,\n)\n\nconst Presentation = styled.div<ResponsiveRadiusStyleProps & TextInputRepresentationStyleProps>(\n responsiveRadiusStyle,\n textInputRepresentationStyle,\n)\n\n/**\n * A multiline text input.\n *\n\n * @public\n */\nexport const TextArea = forwardRef(function TextArea(\n props: TextAreaProps & Omit<React.HTMLProps<HTMLTextAreaElement>, 'as'>,\n forwardedRef: React.ForwardedRef<HTMLTextAreaElement>,\n) {\n const {\n border = true,\n customValidity,\n disabled = false,\n fontSize = 2,\n padding = 3,\n radius = 2,\n weight,\n ...restProps\n } = props\n\n const ref = useRef<HTMLTextAreaElement | null>(null)\n\n const rootTheme = useRootTheme()\n\n useImperativeHandle<HTMLTextAreaElement | null, HTMLTextAreaElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useCustomValidity(ref, customValidity)\n\n const $radius = useMemo(() => _getArrayProp(radius), [radius])\n const $fontSize = useMemo(() => _getArrayProp(fontSize), [fontSize])\n const $padding = useMemo(() => _getArrayProp(padding), [padding])\n const $space = useMemo(() => _getArrayProp(0), [])\n\n return (\n <Root data-ui=\"TextArea\">\n <InputRoot>\n <Input\n data-as=\"textarea\"\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n {...restProps}\n $fontSize={$fontSize}\n $padding={$padding}\n $space={$space}\n $scheme={rootTheme.scheme}\n $tone={rootTheme.tone}\n $weight={weight}\n disabled={disabled}\n ref={ref}\n />\n <Presentation\n $radius={$radius}\n $scheme={rootTheme.scheme}\n $tone={rootTheme.tone}\n data-border={border ? '' : undefined}\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n />\n </InputRoot>\n </Root>\n )\n})\n","import {CloseIcon} from '@sanity/icons'\nimport {ThemeFontWeightKey} from '@sanity/ui/theme'\nimport {forwardRef, isValidElement, useCallback, useImperativeHandle, useMemo, useRef} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {styled} from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {useCustomValidity} from '../../hooks'\nimport {_getArrayProp} from '../../styles'\nimport {\n responsiveRadiusStyle,\n ResponsiveRadiusStyleProps,\n responsiveInputPaddingStyle,\n TextInputInputStyleProps,\n TextInputRepresentationStyleProps,\n TextInputResponsivePaddingStyleProps,\n textInputBaseStyle,\n textInputFontSizeStyle,\n textInputRepresentationStyle,\n textInputRootStyle,\n} from '../../styles/internal'\nimport {useRootTheme} from '../../theme'\nimport {Radius} from '../../types'\nimport {Box} from '../box'\nimport {Button, ButtonProps} from '../button'\nimport {Card} from '../card'\nimport {Text} from '../text'\n\n/**\n * @public\n */\nexport type TextInputClearButtonProps = Omit<ButtonProps, 'as'> &\n Omit<React.HTMLProps<HTMLButtonElement>, 'as' | 'onClick' | 'onMouseDown' | 'ref'>\n\n/**\n * @public\n */\nexport type TextInputType =\n | 'date'\n | 'datetime-local'\n | 'email'\n | 'url'\n | 'month'\n | 'number'\n | 'password'\n | 'tel'\n | 'time'\n | 'text'\n | 'week'\n | 'color'\n\n/**\n * @public\n */\nexport interface TextInputProps {\n /**\n * @beta\n */\n __unstable_disableFocusRing?: boolean\n border?: boolean\n /**\n * @beta\n */\n clearButton?: boolean | TextInputClearButtonProps\n customValidity?: string\n fontSize?: number | number[]\n icon?: React.ElementType | React.ReactNode\n iconRight?: React.ElementType | React.ReactNode\n /**\n * @beta\n */\n onClear?: () => void\n padding?: number | number[]\n prefix?: React.ReactNode\n radius?: Radius | Radius[]\n space?: number | number[]\n suffix?: React.ReactNode\n type?: TextInputType\n weight?: ThemeFontWeightKey\n}\n\nconst CLEAR_BUTTON_BOX_STYLE: React.CSSProperties = {zIndex: 2}\n\nconst Root = styled(Card).attrs({forwardedAs: 'span'})(textInputRootStyle)\n\nconst InputRoot = styled.span`\n flex: 1;\n min-width: 0;\n display: block;\n position: relative;\n`\n\nconst Prefix = styled(Card).attrs({forwardedAs: 'span'})`\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n\n & > span {\n display: block;\n margin: -1px;\n }\n`\n\nconst Suffix = styled(Card).attrs({forwardedAs: 'span'})`\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n\n & > span {\n display: block;\n margin: -1px;\n }\n`\n\nconst Input = styled.input<TextInputResponsivePaddingStyleProps & TextInputInputStyleProps>(\n responsiveInputPaddingStyle,\n textInputBaseStyle,\n textInputFontSizeStyle,\n)\n\nconst Presentation = styled.span<ResponsiveRadiusStyleProps & TextInputRepresentationStyleProps>(\n responsiveRadiusStyle,\n textInputRepresentationStyle,\n)\n\nconst LeftBox = styled(Box)`\n position: absolute;\n top: 0;\n left: 0;\n`\n\nconst RightBox = styled(Box)`\n position: absolute;\n top: 0;\n right: 0;\n`\n\nconst RightCard = styled(Card)`\n background-color: transparent;\n position: absolute;\n top: 0;\n right: 0;\n`\n\nconst TextInputClearButton = styled(Button)({\n '&:not([hidden])': {\n display: 'block',\n },\n})\n\n/**\n * Single line text input.\n *\n * @public\n */\nexport const TextInput = forwardRef(function TextInput(\n props: TextInputProps & Omit<React.HTMLProps<HTMLInputElement>, 'as' | 'prefix' | 'type'>,\n forwardedRef: React.Ref<HTMLInputElement>,\n) {\n const {\n __unstable_disableFocusRing,\n border = true,\n clearButton,\n disabled = false,\n fontSize: fontSizeProp = 2,\n icon: IconComponent,\n iconRight: IconRightComponent,\n onClear,\n padding: paddingProp = 3,\n prefix,\n radius: radiusProp = 2,\n readOnly,\n space: spaceProp = 3,\n suffix,\n customValidity,\n type = 'text',\n weight,\n ...restProps\n } = props\n const ref = useRef<HTMLInputElement | null>(null)\n\n const rootTheme = useRootTheme()\n\n const fontSize = useMemo(() => _getArrayProp(fontSizeProp), [fontSizeProp])\n const padding = useMemo(() => _getArrayProp(paddingProp), [paddingProp])\n const radius = useMemo(() => _getArrayProp(radiusProp), [radiusProp])\n const space = useMemo(() => _getArrayProp(spaceProp), [spaceProp])\n\n // Transient properties\n const $hasClearButton = Boolean(clearButton)\n const $hasIcon = Boolean(IconComponent)\n const $hasIconRight = Boolean(IconRightComponent)\n const $hasSuffix = Boolean(suffix)\n const $hasPrefix = Boolean(prefix)\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useCustomValidity(ref, customValidity)\n\n // Prevent the clear button from taking the focus away from the input\n const handleClearMouseDown = useCallback((event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault()\n event.stopPropagation()\n }, [])\n\n const handleClearClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (onClear) onClear()\n\n // Focus the input, in case focus has been lost when clicking the clear button\n ref.current?.focus()\n },\n [onClear, ref],\n )\n\n // Render prefix (memoized)\n const prefixNode = useMemo(\n () =>\n prefix && (\n <Prefix borderTop borderLeft borderBottom radius={radius} sizing=\"border\" tone=\"inherit\">\n <span>{prefix}</span>\n </Prefix>\n ),\n [prefix, radius],\n )\n\n // Render presentation (memoized)\n const presentationNode = useMemo(\n () => (\n <Presentation\n $hasPrefix={$hasPrefix}\n $unstableDisableFocusRing={__unstable_disableFocusRing}\n $hasSuffix={$hasSuffix}\n $radius={radius}\n $scheme={rootTheme.scheme}\n $tone={rootTheme.tone}\n data-border={border ? '' : undefined}\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n >\n {IconComponent && (\n <LeftBox padding={padding}>\n <Text size={fontSize}>\n {isValidElement(IconComponent) && IconComponent}\n {isValidElementType(IconComponent) && <IconComponent />}\n </Text>\n </LeftBox>\n )}\n\n {!$hasClearButton && IconRightComponent && (\n <RightBox padding={padding}>\n <Text size={fontSize}>\n {isValidElement(IconRightComponent) && IconRightComponent}\n {isValidElementType(IconRightComponent) && <IconRightComponent />}\n </Text>\n </RightBox>\n )}\n </Presentation>\n ),\n [\n __unstable_disableFocusRing,\n border,\n fontSize,\n IconComponent,\n IconRightComponent,\n padding,\n radius,\n rootTheme,\n $hasClearButton,\n $hasPrefix,\n $hasSuffix,\n ],\n )\n\n // Render clear button (memoized)\n const clearButtonBoxPadding = useMemo(\n () =>\n padding.map((v) => {\n if (v === 0) return 0\n if (v === 1) return 1\n if (v === 2) return 1\n\n return v - 2\n }),\n [padding],\n )\n const clearButtonPadding = useMemo(\n () =>\n padding.map((v) => {\n if (v === 0) return 0\n if (v === 1) return 0\n if (v === 2) return 1\n\n return v - 1\n }),\n [padding],\n )\n const clearButtonProps: TextInputClearButtonProps = useMemo(\n () => (typeof clearButton === 'object' ? clearButton : EMPTY_RECORD),\n [clearButton],\n )\n const clearButtonNode = useMemo(\n () =>\n !disabled &&\n !readOnly &&\n clearButton && (\n <RightCard\n forwardedAs=\"span\"\n padding={clearButtonBoxPadding}\n style={CLEAR_BUTTON_BOX_STYLE}\n tone={customValidity ? 'critical' : 'inherit'}\n >\n <TextInputClearButton\n aria-label=\"Clear\"\n data-qa=\"clear-button\"\n fontSize={fontSize}\n icon={CloseIcon}\n mode=\"bleed\"\n padding={clearButtonPadding}\n radius={radius}\n {...clearButtonProps}\n onClick={handleClearClick}\n onMouseDown={handleClearMouseDown}\n />\n </RightCard>\n ),\n [\n clearButton,\n clearButtonBoxPadding,\n clearButtonPadding,\n clearButtonProps,\n customValidity,\n disabled,\n fontSize,\n handleClearClick,\n handleClearMouseDown,\n radius,\n readOnly,\n ],\n )\n\n // Render suffix (memoized)\n const suffixNode = useMemo(\n () =>\n suffix && (\n <Suffix borderTop borderRight borderBottom radius={radius} sizing=\"border\" tone=\"inherit\">\n <span>{suffix}</span>\n </Suffix>\n ),\n [radius, suffix],\n )\n\n return (\n <Root data-ui=\"TextInput\" tone={rootTheme.tone}>\n {prefixNode}\n\n <InputRoot>\n <Input\n data-as=\"input\"\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n {...restProps}\n $fontSize={fontSize}\n $iconLeft={$hasIcon}\n $iconRight={$hasIconRight || $hasClearButton}\n $padding={padding}\n $scheme={rootTheme.scheme}\n $space={space}\n $tone={rootTheme.tone}\n $weight={weight}\n disabled={disabled}\n readOnly={readOnly}\n ref={ref}\n type={type}\n />\n\n {presentationNode}\n {clearButtonNode}\n </InputRoot>\n\n {suffixNode}\n </Root>\n )\n})\n","import {useRef} from 'react'\nimport {useState, useCallback, SetStateAction} from 'react'\n\n/**\n * @beta\n */\nexport function useDelayedState<S>(\n initialState: S | (() => S),\n): [S, (nextState: SetStateAction<S>, delay?: number) => void] {\n const [state, setState] = useState(initialState)\n const delayedAction = useRef<NodeJS.Timeout | undefined>()\n\n const onStateChange = useCallback((nextState: SetStateAction<S>, delay?: number) => {\n const action = () => {\n setState(nextState)\n }\n\n // A new state change has been initiated, cancel the previous one.\n if (delayedAction.current) {\n clearTimeout(delayedAction.current)\n delayedAction.current = undefined\n }\n\n if (!delay) return action()\n delayedAction.current = setTimeout(action, delay)\n }, [])\n\n return [state, onStateChange]\n}\n","import {Placement} from '@floating-ui/react-dom'\n\nexport const DEFAULT_TOOLTIP_ARROW_WIDTH = 15\nexport const DEFAULT_TOOLTIP_ARROW_HEIGHT = 6\nexport const DEFAULT_TOOLTIP_ARROW_RADIUS = 2\n\nexport const DEFAULT_TOOLTIP_DISTANCE = 4\nexport const DEFAULT_TOOLTIP_PADDING = 4\n\nexport const DEFAULT_FALLBACK_PLACEMENTS: Record<Placement, Placement[]> = {\n top: ['top-end', 'top-start', 'bottom', 'left', 'right'],\n 'top-start': ['top', 'top-end', 'bottom-start', 'left-start', 'right-start'],\n 'top-end': ['top', 'top-start', 'bottom-end', 'left-end', 'right-end'],\n bottom: ['bottom-end', 'bottom-start', 'top', 'left', 'right'],\n 'bottom-start': ['bottom', 'bottom-end', 'top-start', 'left-start', 'right-start'],\n 'bottom-end': ['bottom', 'bottom-start', 'top-end', 'left-end', 'right-end'],\n left: ['left-end', 'left-start', 'right', 'top', 'bottom'],\n 'left-start': ['left', 'left-end', 'right-start', 'top-start', 'bottom-start'],\n 'left-end': ['left', 'left-start', 'right-end', 'top-end', 'bottom-end'],\n right: ['right-end', 'right-start', 'left', 'top', 'bottom'],\n 'right-start': ['right', 'right-end', 'left-start', 'top-start', 'bottom-start'],\n 'right-end': ['right', 'right-start', 'left-end', 'top-end', 'bottom-end'],\n}\n","import {ThemeColorSchemeKey} from '@sanity/ui/theme'\nimport {MotionProps, motion} from 'framer-motion'\nimport React, {CSSProperties, forwardRef, memo, useMemo} from 'react'\nimport {styled} from 'styled-components'\nimport {POPOVER_MOTION_CONTENT_OPACITY_PROPERTY, POPOVER_MOTION_PROPS} from '../../constants'\nimport {Placement, Radius} from '../../types'\nimport {Arrow} from '../../utils'\nimport {Card, CardProps} from '../card'\nimport {\n DEFAULT_TOOLTIP_ARROW_HEIGHT,\n DEFAULT_TOOLTIP_ARROW_RADIUS,\n DEFAULT_TOOLTIP_ARROW_WIDTH,\n} from './constants'\n\nconst MotionCard = styled(motion(Card))`\n & > * {\n opacity: var(${POPOVER_MOTION_CONTENT_OPACITY_PROPERTY}, 1);\n will-change: opacity;\n }\n`\n\n/**\n * @internal\n */\nexport const TooltipCard = memo(\n forwardRef(function TooltipCard(\n props: {\n animate?: boolean\n arrow: boolean\n arrowRef: React.Ref<HTMLDivElement>\n arrowX?: number\n arrowY?: number\n originX?: number\n originY?: number\n padding?: number | number[]\n placement?: Placement\n radius?: Radius | Radius[]\n scheme?: ThemeColorSchemeKey\n shadow?: number | number[]\n } & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'width'>,\n ref: React.ForwardedRef<HTMLDivElement>,\n ) {\n const {\n animate,\n arrow,\n arrowRef,\n arrowX,\n arrowY,\n children,\n originX,\n originY,\n padding,\n placement,\n radius,\n scheme,\n shadow,\n style,\n ...restProps\n } = props\n\n const rootStyle: CSSProperties = useMemo(\n () => ({\n originX,\n originY,\n willChange: animate ? 'transform' : undefined,\n ...style,\n }),\n [animate, originX, originY, style],\n )\n\n const arrowStyle: CSSProperties = useMemo(\n () => ({\n left: arrowX !== null ? arrowX : undefined,\n top: arrowY !== null ? arrowY : undefined,\n right: undefined,\n bottom: undefined,\n }),\n [arrowX, arrowY],\n )\n\n return (\n <MotionCard\n data-ui=\"Tooltip__card\"\n {...(restProps as CardProps & MotionProps)}\n data-placement={placement}\n padding={padding}\n radius={radius}\n ref={ref}\n scheme={scheme}\n shadow={shadow}\n style={rootStyle}\n {...(animate ? POPOVER_MOTION_PROPS : {})}\n >\n {children}\n\n {arrow && (\n <Arrow\n ref={arrowRef}\n style={arrowStyle}\n width={DEFAULT_TOOLTIP_ARROW_WIDTH}\n height={DEFAULT_TOOLTIP_ARROW_HEIGHT}\n radius={DEFAULT_TOOLTIP_ARROW_RADIUS}\n />\n )}\n </MotionCard>\n )\n }),\n)\n\nTooltipCard.displayName = 'TooltipCard'\n","import {createGlobalScopedContext} from '../../../lib/createGlobalScopedContext'\nimport {TooltipDelayGroupContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/tooltipDelayGroup')\n\n/**\n * @beta\n */\nexport const TooltipDelayGroupContext =\n createGlobalScopedContext<TooltipDelayGroupContextValue | null>(key, null)\n","import {useContext} from 'react'\nimport {TooltipDelayGroupContext} from './tooltipDelayGroupContext'\nimport {TooltipDelayGroupContextValue} from './types'\n\n/**\n * @beta\n */\nexport function useTooltipDelayGroup(): TooltipDelayGroupContextValue | null {\n const value = useContext(TooltipDelayGroupContext)\n\n return value\n}\n","import {useMemo} from 'react'\nimport {useDelayedState} from '../../../hooks/useDelayedState'\nimport {Delay} from '../../types'\nimport {TooltipDelayGroupContext} from './tooltipDelayGroupContext'\nimport {TooltipDelayGroupContextValue} from './types'\n\n/**\n * @public\n * */\nexport interface TooltipDelayGroupProviderProps {\n children?: React.ReactNode\n /**\n * Handles the delays to open or close a tooltip inside a group\n *\n * If only a `number` is passed, it will be used for both opening and closing.\n *\n * If an object `{open: number; close:number}` is passed, it can be used to set different delays for each action.\n *\n * @public\n */\n delay: Delay\n}\n\n/**\n * @public\n * Provides context for a group of tooltip elements that should share a delay\n * which temporarily becomes 1 ms after the first floating element of the group opens.\n */\nexport function TooltipDelayGroupProvider(\n props: TooltipDelayGroupProviderProps,\n): React.ReactElement {\n const {children, delay} = props\n const [isGroupActive, setIsGroupActive] = useDelayedState(false)\n const [openTooltipId, setOpenTooltipId] = useDelayedState<string | null>(null)\n\n const openDelay = typeof delay === 'number' ? delay : delay?.open || 0\n const closeDelay = typeof delay === 'number' ? delay : delay?.close || 0\n\n const value: TooltipDelayGroupContextValue = useMemo(\n () => ({\n isGroupActive: isGroupActive,\n setIsGroupActive: setIsGroupActive,\n openTooltipId: openTooltipId,\n setOpenTooltipId: setOpenTooltipId,\n // When the group is active, we want the next tooltip to open immediately.\n openDelay: isGroupActive ? 1 : openDelay,\n closeDelay: closeDelay,\n }),\n [closeDelay, isGroupActive, openDelay, openTooltipId, setIsGroupActive, setOpenTooltipId],\n )\n\n return (\n <TooltipDelayGroupContext.Provider value={value}>{children}</TooltipDelayGroupContext.Provider>\n )\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n arrow,\n autoUpdate,\n flip,\n offset,\n shift,\n useFloating,\n type Middleware,\n type RootBoundary,\n} from '@floating-ui/react-dom'\nimport type {ThemeColorSchemeKey} from '@sanity/ui/theme'\nimport {AnimatePresence} from 'framer-motion'\nimport {\n cloneElement,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n useId,\n useSyncExternalStore,\n useImperativeHandle,\n} from 'react'\nimport {styled} from 'styled-components'\nimport {usePrefersReducedMotion} from '../../hooks'\nimport {useDelayedState} from '../../hooks/useDelayedState'\nimport {origin} from '../../middleware/origin'\nimport {_getArrayProp} from '../../styles'\nimport {useTheme_v2} from '../../theme'\nimport type {Placement} from '../../types'\nimport {\n ConditionalWrapper,\n Layer,\n type LayerProps,\n Portal,\n useBoundaryElement,\n usePortal,\n} from '../../utils'\nimport type {Delay} from '../types'\nimport {\n DEFAULT_FALLBACK_PLACEMENTS,\n DEFAULT_TOOLTIP_DISTANCE,\n DEFAULT_TOOLTIP_PADDING,\n} from './constants'\nimport {TooltipCard} from './tooltipCard'\nimport {useTooltipDelayGroup} from './tooltipDelayGroup'\n\n/**\n * @public\n */\nexport interface TooltipProps extends Omit<LayerProps, 'as'> {\n /** @deprecated Use `fallbackPlacements` instead. */\n allowedAutoPlacements?: Placement[]\n arrow?: boolean\n boundaryElement?: HTMLElement | null\n children?: React.ReactElement\n content?: React.ReactNode\n disabled?: boolean\n fallbackPlacements?: Placement[]\n padding?: number | number[]\n placement?: Placement\n /** Whether or not to render the tooltip in a portal element. */\n portal?: boolean | string\n radius?: number | number[]\n scheme?: ThemeColorSchemeKey\n shadow?: number | number[]\n /**\n * Adds a delay to open or close the tooltip.\n *\n * If only a `number` is passed, it will be used for both opening and closing.\n *\n * If an object `{open: number; close:number}` is passed, it can be used to set different delays for each action.\n *\n * @public\n * @defaultValue 0\n */\n delay?: Delay\n /**\n * Whether the tooltip should animate in and out.\n *\n * @beta\n * @defaultValue false\n */\n animate?: boolean\n}\n\nconst Root = styled(Layer)<{$maxWidth: number}>`\n pointer-events: none;\n max-width: ${({$maxWidth}) => $maxWidth}px;\n`\n\n/**\n * Tooltips display information when hovering, focusing or tapping.\n *\n * @public\n */\nexport const Tooltip = forwardRef(function Tooltip(\n props: TooltipProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content'>,\n forwardedRef: React.ForwardedRef<HTMLDivElement>,\n) {\n const boundaryElementContext = useBoundaryElement()\n const {layer} = useTheme_v2()\n const {\n animate: _animate = false,\n arrow: arrowProp = false,\n boundaryElement = boundaryElementContext?.element,\n children: childProp,\n content,\n disabled,\n fallbackPlacements: fallbackPlacementsProp = props.fallbackPlacements ??\n DEFAULT_FALLBACK_PLACEMENTS[props.placement ?? 'bottom'],\n padding = 2,\n placement: placementProp = 'bottom',\n portal: portalProp,\n radius = 2,\n scheme,\n shadow = 2,\n zOffset = layer.tooltip.zOffset,\n delay,\n ...restProps\n } = props\n const prefersReducedMotion = usePrefersReducedMotion()\n const animate = prefersReducedMotion ? false : _animate\n const fallbackPlacements = useMemo(\n () => _getArrayProp(fallbackPlacementsProp),\n [fallbackPlacementsProp],\n )\n const ref = useRef<HTMLDivElement | null>(null)\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null)\n const arrowRef = useRef<HTMLDivElement | null>(null)\n const rootBoundary: RootBoundary = 'viewport'\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n\n const portal = usePortal()\n const portalElement =\n typeof portalProp === 'string' ? portal.elements?.[portalProp] || null : portal.element\n\n const documentBodyOffsetWidth = useSyncExternalStore(\n emptySubscribe,\n () => document.body.offsetWidth,\n // We don't actually know what the width of the body is during SSR, so we'll just assume it's 800px or larger\n () => 800,\n )\n // Get the maximum tooltip width (sans tooltip padding)\n // Tooltip width should never exceed the width of either any supplied boundary or portal element.\n // If both portal and boundary elements are provided, use the smaller width of the two.\n const tooltipWidth = useMemo(() => {\n const availableWidths = [\n ...(boundaryElement ? [boundaryElement.offsetWidth] : []),\n portalElement?.offsetWidth || documentBodyOffsetWidth,\n ]\n\n return Math.min(...availableWidths) - DEFAULT_TOOLTIP_PADDING * 2\n }, [boundaryElement, documentBodyOffsetWidth, portalElement?.offsetWidth])\n\n const middleware = useMemo(() => {\n const ret: Middleware[] = []\n\n // Flip the floating element when leaving the boundary box\n ret.push(\n flip({\n boundary: boundaryElement || undefined,\n fallbackPlacements,\n padding: DEFAULT_TOOLTIP_PADDING,\n rootBoundary,\n }),\n )\n\n // Define distance between reference and floating element\n ret.push(offset({mainAxis: DEFAULT_TOOLTIP_DISTANCE}))\n\n // Shift the tooltip so its sits with the boundary element\n ret.push(\n shift({\n boundary: boundaryElement || undefined,\n rootBoundary,\n padding: DEFAULT_TOOLTIP_PADDING,\n }),\n )\n\n // Place arrow\n if (arrowProp) {\n ret.push(arrow({element: arrowRef, padding: DEFAULT_TOOLTIP_PADDING}))\n }\n\n // Determine the origin to scale from.\n // Must be placed after `@sanity/ui/size` and `shift` middleware.\n if (animate) {\n ret.push(origin)\n }\n\n return ret\n }, [animate, arrowProp, boundaryElement, fallbackPlacements])\n\n const {floatingStyles, placement, middlewareData, refs, update} = useFloating({\n middleware,\n placement: placementProp,\n whileElementsMounted: autoUpdate,\n })\n\n const arrowX = middlewareData.arrow?.x\n const arrowY = middlewareData.arrow?.y\n\n const originX = middlewareData['@sanity/ui/origin']?.originX\n const originY = middlewareData['@sanity/ui/origin']?.originY\n\n const tooltipId = useId()\n const [isOpen, setIsOpen] = useDelayedState(false)\n const delayGroupContext = useTooltipDelayGroup()\n const showTooltip = isOpen || delayGroupContext?.openTooltipId === tooltipId\n\n const isInsideGroup = delayGroupContext !== null\n const openDelayProp = typeof delay === 'number' ? delay : delay?.open || 0\n const closeDelayProp = typeof delay === 'number' ? delay : delay?.close || 0\n\n const openDelay = isInsideGroup ? delayGroupContext.openDelay : openDelayProp\n const closeDelay = isInsideGroup ? delayGroupContext.closeDelay : closeDelayProp\n\n const handleIsOpenChange = useCallback(\n (open: boolean, immediate?: boolean) => {\n if (isInsideGroup) {\n // When it's inside a group, the open or close status will be handled by the group.\n if (open) {\n const groupedOpenDelay = immediate ? 0 : openDelay\n\n delayGroupContext.setIsGroupActive(open, groupedOpenDelay)\n delayGroupContext.setOpenTooltipId(tooltipId, groupedOpenDelay)\n } else {\n const minimumGroupDeactivateDelay = 200 // We should provide some delay to allow the user to reach the next tooltip.\n const groupDeactivateDelay =\n closeDelay > minimumGroupDeactivateDelay ? closeDelay : minimumGroupDeactivateDelay\n\n delayGroupContext.setIsGroupActive(open, groupDeactivateDelay)\n delayGroupContext.setOpenTooltipId(null, immediate ? 0 : closeDelay)\n }\n } else {\n const standaloneDelay = immediate ? 0 : open ? openDelay : closeDelay\n\n // When it's not inside a group, the open or close status will be handled by the tooltip itself.\n setIsOpen(open, standaloneDelay)\n }\n },\n [isInsideGroup, delayGroupContext, openDelay, tooltipId, closeDelay, setIsOpen],\n )\n\n const handleBlur = useCallback(\n (e: FocusEvent) => {\n handleIsOpenChange(false)\n childProp?.props?.onBlur?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )\n const handleClick = useCallback(\n (e: MouseEvent) => {\n handleIsOpenChange(false, true)\n childProp?.props.onClick?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )\n const handleContextMenu = useCallback(\n (e: MouseEvent) => {\n handleIsOpenChange(false, true)\n childProp?.props.onContextMenu?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )\n const handleFocus = useCallback(\n (e: FocusEvent) => {\n handleIsOpenChange(true)\n childProp?.props?.onFocus?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )\n const handleMouseEnter = useCallback(\n (e: MouseEvent) => {\n handleIsOpenChange(true)\n childProp?.props?.onMouseEnter?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )\n const handleMouseLeave = useCallback(\n (e: MouseEvent) => {\n handleIsOpenChange(false)\n childProp?.props?.onMouseLeave?.(e)\n },\n [childProp?.props, handleIsOpenChange],\n )\n\n // Detect whether the mouse is moving outside of the reference element. This is sometimes\n // necessary, because the tooltip might not always close as it should (e.g. when clicking\n // the reference element triggers a CPU-heavy operation.)\n useEffect(() => {\n if (!showTooltip) return\n\n function handleWindowMouseMove(event: MouseEvent) {\n if (!referenceElement) return\n\n const isHoveringReference =\n referenceElement === event.target ||\n (event.target instanceof Node && referenceElement.contains(event.target))\n\n if (!isHoveringReference) {\n handleIsOpenChange(false)\n window.removeEventListener('mousemove', handleWindowMouseMove)\n }\n }\n\n window.addEventListener('mousemove', handleWindowMouseMove)\n\n return () => {\n window.removeEventListener('mousemove', handleWindowMouseMove)\n }\n }, [showTooltip, referenceElement, handleIsOpenChange])\n\n // Close when `disabled` changes to `true`\n useEffect(() => {\n if (disabled && showTooltip) handleIsOpenChange(false)\n }, [disabled, handleIsOpenChange, showTooltip])\n\n // Close when `content` changes to falsy\n useEffect(() => {\n if (!content && showTooltip) handleIsOpenChange(false)\n }, [content, handleIsOpenChange, showTooltip])\n\n // Update reference\n useEffect(() => refs.setReference(referenceElement), [referenceElement, refs])\n\n useEffect(() => {\n // If the user clicks on escape key, close the tooltip.\n if (!showTooltip) return\n\n function handleWindowKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n handleIsOpenChange(false, true)\n }\n }\n\n window.addEventListener('keydown', handleWindowKeyDown)\n\n return () => {\n window.removeEventListener('keydown', handleWindowKeyDown)\n }\n }, [handleIsOpenChange, showTooltip])\n const setArrow = useCallback(\n (arrowEl: HTMLDivElement | null) => {\n arrowRef.current = arrowEl\n update()\n },\n [update],\n )\n\n const setFloating = useCallback(\n (node: HTMLDivElement | null) => {\n ref.current = node\n refs.setFloating(node)\n },\n [refs],\n )\n\n const childRef = useRef<HTMLElement | null>(null)\n const child = useMemo(() => {\n if (!childProp) return null\n\n return cloneElement(childProp, {\n onBlur: handleBlur,\n onFocus: handleFocus,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n onClick: handleClick,\n onContextMenu: handleContextMenu,\n ref: childRef,\n })\n }, [\n childProp,\n handleBlur,\n handleClick,\n handleContextMenu,\n handleFocus,\n handleMouseEnter,\n handleMouseLeave,\n ])\n\n // If there's a child then we need to set the reference element to the cloned child ref\n // and if child changes we make sure to update or remove the reference element.\n useEffect(() => {\n if (!child) return undefined\n\n setReferenceElement(childRef.current)\n\n return () => setReferenceElement(null)\n }, [child])\n\n if (!child) return <></>\n\n if (disabled) return child\n\n const tooltip = (\n <Root\n data-ui=\"Tooltip\"\n {...restProps}\n ref={setFloating}\n style={floatingStyles}\n zOffset={zOffset}\n $maxWidth={tooltipWidth}\n >\n <TooltipCard\n {...restProps}\n animate={animate}\n arrow={arrowProp}\n arrowRef={setArrow}\n arrowX={arrowX}\n arrowY={arrowY}\n originX={originX}\n originY={originY}\n padding={padding}\n placement={placement}\n radius={radius}\n ref={setFloating}\n scheme={scheme}\n shadow={shadow}\n >\n {content}\n </TooltipCard>\n </Root>\n )\n\n return (\n <>\n {/* the tooltip */}\n <ConditionalWrapper\n condition={animate}\n wrapper={(children) => <AnimatePresence>{children}</AnimatePresence>}\n >\n {showTooltip && (\n <ConditionalWrapper\n condition={!!portalProp}\n wrapper={(children) => (\n <Portal __unstable_name={typeof portalProp === 'string' ? portalProp : undefined}>\n {children}\n </Portal>\n )}\n >\n {tooltip}\n </ConditionalWrapper>\n )}\n </ConditionalWrapper>\n\n {/* the referred element */}\n {child}\n </>\n )\n})\n\nconst emptySubscribe = () => () => {}\n","import {SpinnerIcon} from '@sanity/icons'\nimport {styled, keyframes} from 'styled-components'\nimport {Box} from '../../primitives'\n\n/**\n * @internal\n */\nexport const Root = styled.div`\n line-height: 0;\n`\n\n/**\n * @internal\n */\nexport const ListBox = styled(Box)`\n & > ul {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n`\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n`\n\n/**\n * @internal\n */\nexport const AnimatedSpinnerIcon = styled(SpinnerIcon)`\n animation: ${rotate} 500ms linear infinite;\n`\n","import {useCallback} from 'react'\nimport {_isEnterToClickElement} from '../../helpers'\n\nexport interface AutocompleteOptionProps {\n children: React.ReactNode\n id: string\n onSelect: (v: string) => void\n selected: boolean\n value: string\n}\n\nexport function AutocompleteOption(props: AutocompleteOptionProps): React.ReactElement {\n const {children, id, onSelect, selected, value} = props\n\n const handleClick = useCallback(() => {\n // Calling the `onSelect` in a timeout is a fix to\n // allow the `click` event to propagate in some cases\n setTimeout(() => {\n onSelect(value)\n }, 0)\n }, [onSelect, value])\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLLIElement>) => {\n if (event.key === 'Enter' && !_isEnterToClickElement(event.currentTarget)) {\n handleClick()\n }\n },\n [handleClick],\n )\n\n return (\n <li\n aria-selected={selected}\n data-ui=\"AutocompleteOption\"\n id={id}\n role=\"option\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {children}\n </li>\n )\n}\n","import {AutocompleteMsg, AutocompleteState} from './types'\n\n/**\n * @internal\n */\nexport function autocompleteReducer(\n state: AutocompleteState,\n msg: AutocompleteMsg,\n): AutocompleteState {\n if (msg.type === 'input/change') {\n return {...state, activeValue: null, focused: true, query: msg.query}\n }\n\n if (msg.type === 'input/focus') {\n return {...state, focused: true}\n }\n\n if (msg.type === 'root/blur') {\n return {...state, focused: false, query: null}\n }\n\n if (msg.type === 'root/clear') {\n return {...state, activeValue: null, query: null, value: null}\n }\n\n if (msg.type === 'root/escape') {\n return {...state, focused: false, query: null}\n }\n\n if (msg.type === 'root/open') {\n return {...state, query: state.query || msg.query}\n }\n\n if (msg.type === 'root/setActiveValue') {\n return {...state, activeValue: msg.value, listFocused: msg.listFocused || state.listFocused}\n }\n\n if (msg.type === 'root/setListFocused') {\n return {...state, listFocused: msg.listFocused}\n }\n\n if (msg.type === 'value/change') {\n return {...state, activeValue: msg.value, query: null, value: msg.value}\n }\n\n return state\n}\n","import {Placement} from '../../types'\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_LISTBOX_IGNORE_KEYS = [\n 'Control',\n 'Shift',\n 'Alt',\n 'Enter',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n 'Meta',\n 'Tab',\n 'CapsLock',\n]\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_POPOVER_PLACEMENT: Placement = 'bottom-start'\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS: Placement[] = ['bottom-start', 'top-start']\n","import {ChevronDownIcon} from '@sanity/icons'\nimport {\n ChangeEvent,\n ElementType,\n FocusEvent,\n HTMLProps,\n KeyboardEvent,\n MouseEvent,\n ReactElement,\n ReactNode,\n Ref,\n cloneElement,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useReducer,\n useRef,\n} from 'react'\nimport {EMPTY_ARRAY, EMPTY_RECORD} from '../../constants'\nimport {_hasFocus, _raf, focusFirstDescendant} from '../../helpers'\nimport {\n Box,\n BoxProps,\n Button,\n Card,\n Popover,\n PopoverProps,\n Stack,\n Text,\n TextInput,\n} from '../../primitives'\nimport {_getArrayProp} from '../../styles'\nimport {Radius} from '../../types'\nimport {AnimatedSpinnerIcon, ListBox, Root} from './autocomplete.styles'\nimport {AutocompleteOption} from './autocompleteOption'\nimport {autocompleteReducer} from './autocompleteReducer'\nimport {\n AUTOCOMPLETE_LISTBOX_IGNORE_KEYS,\n AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS,\n AUTOCOMPLETE_POPOVER_PLACEMENT,\n} from './constants'\nimport {AutocompleteOpenButtonProps, BaseAutocompleteOption} from './types'\n\n/**\n * @public\n */\nexport interface AutocompleteProps<Option extends BaseAutocompleteOption = BaseAutocompleteOption> {\n border?: boolean\n customValidity?: string\n filterOption?: (query: string, option: Option) => boolean\n fontSize?: number | number[]\n icon?: ElementType | ReactNode\n id: string\n /** @beta */\n listBox?: BoxProps\n loading?: boolean\n onChange?: (value: string) => void\n onQueryChange?: (query: string | null) => void\n onSelect?: (value: string) => void\n /** @beta */\n openButton?: boolean | AutocompleteOpenButtonProps\n /** The options to render. */\n options?: Option[]\n padding?: number | number[]\n popover?: Omit<PopoverProps, 'content' | 'onMouseEnter' | 'onMouseLeave' | 'open'> &\n Omit<HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content' | 'ref' | 'width'>\n prefix?: ReactNode\n radius?: Radius | Radius[]\n /** @beta */\n relatedElements?: HTMLElement[]\n /** The callback function for rendering each option. */\n renderOption?: (option: Option) => ReactElement\n /** @beta */\n renderPopover?: (\n props: {\n content: ReactElement | null\n hidden: boolean\n inputElement: HTMLInputElement | null\n onMouseEnter: () => void\n onMouseLeave: () => void\n },\n ref: Ref<HTMLDivElement>,\n ) => ReactNode\n renderValue?: (value: string, option?: Option) => string\n suffix?: ReactNode\n /** The current value. */\n value?: string\n}\n\nconst DEFAULT_RENDER_VALUE = (value: string, option?: BaseAutocompleteOption) =>\n option ? option.value : value\n\nconst DEFAULT_FILTER_OPTION = (query: string, option: BaseAutocompleteOption) =>\n option.value.toLowerCase().indexOf(query.toLowerCase()) > -1\n\nconst InnerAutocomplete = forwardRef(function InnerAutocomplete<\n Option extends BaseAutocompleteOption,\n>(\n props: AutocompleteProps<Option> &\n Omit<\n HTMLProps<HTMLInputElement>,\n | 'aria-activedescendant'\n | 'aria-autocomplete'\n | 'aria-expanded'\n | 'aria-owns'\n | 'as'\n | 'autoCapitalize'\n | 'autoComplete'\n | 'autoCorrect'\n | 'id'\n | 'inputMode'\n | 'onChange'\n | 'onSelect'\n | 'prefix'\n | 'ref'\n | 'role'\n | 'spellCheck'\n | 'type'\n | 'value'\n >,\n forwardedRef: React.ForwardedRef<HTMLInputElement>,\n) {\n const {\n border = true,\n customValidity,\n disabled,\n filterOption: filterOptionProp,\n fontSize = 2,\n icon,\n id,\n listBox = EMPTY_RECORD,\n loading,\n onBlur,\n onChange,\n onFocus,\n onQueryChange,\n onSelect,\n openButton,\n options: optionsProp,\n padding: paddingProp = 3,\n popover = EMPTY_RECORD,\n prefix,\n radius = 2,\n readOnly,\n relatedElements,\n renderOption: renderOptionProp,\n renderPopover,\n renderValue = DEFAULT_RENDER_VALUE,\n suffix,\n value: valueProp,\n ...restProps\n } = props\n\n const [state, dispatch] = useReducer(autocompleteReducer, {\n activeValue: valueProp || null,\n focused: false,\n listFocused: false,\n query: null,\n value: valueProp || null,\n })\n\n const {activeValue, focused, listFocused, query, value} = state\n\n const defaultRenderOption = useCallback(\n ({value}: BaseAutocompleteOption) => (\n <Card data-as=\"button\" padding={paddingProp} radius={2} tone=\"inherit\">\n <Text size={fontSize} textOverflow=\"ellipsis\">\n {value}\n </Text>\n </Card>\n ),\n [fontSize, paddingProp],\n )\n\n const renderOption =\n typeof renderOptionProp === 'function' ? renderOptionProp : defaultRenderOption\n\n const filterOption =\n typeof filterOptionProp === 'function' ? filterOptionProp : DEFAULT_FILTER_OPTION\n\n // Element refs\n const rootElementRef = useRef<HTMLDivElement | null>(null)\n const resultsPopoverElementRef = useRef<HTMLDivElement | null>(null)\n const inputElementRef = useRef<HTMLInputElement | null>(null)\n const listBoxElementRef = useRef<HTMLDivElement | null>(null)\n\n // Value refs\n const listFocusedRef = useRef(false)\n const valueRef = useRef(value)\n const valuePropRef = useRef(valueProp)\n const popoverMouseWithinRef = useRef(false)\n\n // Forward ref to parent\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => inputElementRef.current,\n )\n\n const listBoxId = `${id}-listbox`\n const options = Array.isArray(optionsProp) ? optionsProp : EMPTY_ARRAY\n const padding = useMemo(() => _getArrayProp(paddingProp), [paddingProp])\n const currentOption = useMemo(\n () => (value !== null ? options.find((o) => o.value === value) : undefined),\n [options, value],\n )\n const filteredOptions = useMemo(\n () => options.filter((option) => (query ? filterOption(query, option) : true)),\n [filterOption, options, query],\n )\n const filteredOptionsLen = filteredOptions.length\n const activeItemId = activeValue ? `${id}-option-${activeValue}` : undefined\n const expanded = (query !== null && loading) || (focused && query !== null)\n\n const handleRootBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n setTimeout(() => {\n // NOTE: This is a workaround for a bug that may happen in Chrome (clicking the scrollbar\n // closes the results in certain situations):\n // - Do not handle blur if the mouse is within the popover\n if (popoverMouseWithinRef.current) {\n return\n }\n\n const elements: HTMLElement[] = (relatedElements || []).concat(\n rootElementRef.current ? [rootElementRef.current] : [],\n resultsPopoverElementRef.current ? [resultsPopoverElementRef.current] : [],\n )\n\n let focusInside = false\n\n if (document.activeElement) {\n for (const e of elements) {\n if (e === document.activeElement || e.contains(document.activeElement)) {\n focusInside = true\n break\n }\n }\n }\n\n if (focusInside === false) {\n dispatch({type: 'root/blur'})\n popoverMouseWithinRef.current = false\n if (onQueryChange) onQueryChange(null)\n if (onBlur) onBlur(event)\n }\n }, 0)\n },\n [onBlur, onQueryChange, relatedElements],\n )\n\n const handleRootFocus = useCallback((event: FocusEvent<HTMLDivElement>) => {\n const listBoxElement = listBoxElementRef.current\n const focusedElement = event.target instanceof HTMLElement ? event.target : null\n const listFocused = listBoxElement?.contains(focusedElement) || false\n\n if (listFocused !== listFocusedRef.current) {\n listFocusedRef.current = listFocused\n\n dispatch({type: 'root/setListFocused', listFocused})\n }\n }, [])\n\n const handleOptionSelect = useCallback(\n (v: string) => {\n dispatch({type: 'value/change', value: v})\n\n popoverMouseWithinRef.current = false\n\n if (onSelect) onSelect(v)\n\n valueRef.current = v\n\n if (onChange) onChange(v)\n if (onQueryChange) onQueryChange(null)\n\n inputElementRef.current?.focus()\n },\n [onChange, onSelect, onQueryChange],\n )\n\n const handleRootKeyDown = useCallback(\n (event: KeyboardEvent<HTMLElement>) => {\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n\n if (!filteredOptionsLen) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n const activeIndex = activeOption ? filteredOptions.indexOf(activeOption) : -1\n const nextActiveOption = filteredOptions[(activeIndex + 1) % filteredOptionsLen]\n\n if (nextActiveOption) {\n dispatch({type: 'root/setActiveValue', value: nextActiveOption.value, listFocused: true})\n }\n\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n\n if (!filteredOptionsLen) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n const activeIndex = activeOption ? filteredOptions.indexOf(activeOption) : -1\n const nextActiveOption =\n filteredOptions[\n activeIndex === -1\n ? filteredOptionsLen - 1\n : (filteredOptionsLen + activeIndex - 1) % filteredOptionsLen\n ]\n\n if (nextActiveOption) {\n dispatch({type: 'root/setActiveValue', value: nextActiveOption.value, listFocused: true})\n }\n\n return\n }\n\n if (event.key === 'Escape') {\n dispatch({type: 'root/escape'})\n popoverMouseWithinRef.current = false\n if (onQueryChange) onQueryChange(null)\n inputElementRef.current?.focus()\n\n return\n }\n\n const target = event.target as Node\n const listEl = listBoxElementRef.current\n\n if (\n (listEl === target || listEl?.contains(target)) &&\n !AUTOCOMPLETE_LISTBOX_IGNORE_KEYS.includes(event.key)\n ) {\n inputElementRef.current?.focus()\n\n return\n }\n },\n [activeValue, filteredOptions, filteredOptionsLen, onQueryChange],\n )\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const nextQuery = event.currentTarget.value\n\n dispatch({type: 'input/change', query: nextQuery})\n\n if (onQueryChange) onQueryChange(nextQuery)\n },\n [onQueryChange],\n )\n\n const handleInputFocus = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (!focused) {\n dispatch({type: 'input/focus'})\n\n if (onFocus) onFocus(event)\n }\n },\n [focused, onFocus],\n )\n\n const handlePopoverMouseEnter = useCallback(() => {\n popoverMouseWithinRef.current = true\n }, [])\n\n const handlePopoverMouseLeave = useCallback(() => {\n popoverMouseWithinRef.current = false\n }, [])\n\n const handleClearButtonClick = useCallback(() => {\n dispatch({type: 'root/clear'})\n valueRef.current = ''\n if (onChange) onChange('')\n if (onQueryChange) onQueryChange(null)\n inputElementRef.current?.focus()\n }, [onChange, onQueryChange])\n\n const handleClearButtonFocus = useCallback(() => {\n dispatch({type: 'input/focus'})\n }, [])\n\n // Change the value when `value` prop changes\n useEffect(() => {\n // If `valueProp` changed\n if (valueProp !== valuePropRef.current) {\n valuePropRef.current = valueProp\n\n if (valueProp !== undefined) {\n dispatch({type: 'value/change', value: valueProp})\n valueRef.current = valueProp\n }\n\n return\n }\n\n // If `valueProp` is not equal to `value`\n if (valueProp !== valueRef.current) {\n valueRef.current = valueProp || null\n\n dispatch({type: 'value/change', value: valueProp || null})\n }\n }, [valueProp])\n\n // Reset active item when closing\n useEffect(() => {\n if (!focused && valueRef.current) {\n dispatch({type: 'root/setActiveValue', value: valueRef.current})\n }\n }, [focused])\n\n // Focus the selected item\n useEffect(() => {\n const listElement = listBoxElementRef.current\n\n if (!listElement) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n\n if (activeOption) {\n const activeIndex = filteredOptions.indexOf(activeOption)\n const activeItemElement = listElement.childNodes[activeIndex] as HTMLLIElement | undefined\n\n if (activeItemElement) {\n if (_hasFocus(activeItemElement)) {\n // already focused\n return\n }\n\n focusFirstDescendant(activeItemElement)\n }\n }\n }, [activeValue, filteredOptions])\n\n const clearButton = useMemo(() => {\n if (!loading && !disabled && value) {\n return {\n 'aria-label': 'Clear',\n onFocus: handleClearButtonFocus,\n }\n }\n\n return undefined\n }, [disabled, handleClearButtonFocus, loading, value])\n\n const openButtonBoxPadding = useMemo(\n () =>\n padding.map((v) => {\n if (v === 0) return 0\n if (v === 1) return 1\n if (v === 2) return 1\n\n return v - 2\n }),\n [padding],\n )\n const openButtonPadding = useMemo(() => padding.map((v) => Math.max(v - 1, 0)), [padding])\n const openButtonProps: AutocompleteOpenButtonProps = useMemo(\n () => (typeof openButton === 'object' ? openButton : EMPTY_RECORD),\n [openButton],\n )\n\n const handleOpenClick = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n dispatch({\n type: 'root/open',\n query: value ? renderValue(value, currentOption) : '',\n })\n\n if (openButtonProps.onClick) openButtonProps.onClick(event)\n\n _raf(() => inputElementRef.current?.focus())\n },\n [currentOption, openButtonProps, renderValue, value],\n )\n\n const openButtonNode = useMemo(\n () =>\n !disabled && !readOnly && openButton ? (\n <Box aria-hidden={expanded} padding={openButtonBoxPadding}>\n <Button\n aria-label=\"Open\"\n disabled={expanded}\n fontSize={fontSize}\n icon={ChevronDownIcon}\n mode=\"bleed\"\n padding={openButtonPadding}\n {...openButtonProps}\n onClick={handleOpenClick}\n />\n </Box>\n ) : undefined,\n [\n disabled,\n expanded,\n fontSize,\n handleOpenClick,\n openButton,\n openButtonBoxPadding,\n openButtonPadding,\n openButtonProps,\n readOnly,\n ],\n )\n\n const inputValue = useMemo(() => {\n if (query === null) {\n if (value !== null) {\n return renderValue(value, currentOption)\n }\n\n return ''\n }\n\n return query\n }, [currentOption, query, renderValue, value])\n\n const input = (\n <TextInput\n {...restProps}\n aria-activedescendant={activeItemId}\n aria-autocomplete=\"list\"\n aria-expanded={expanded}\n aria-owns={listBoxId}\n autoCapitalize=\"off\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n border={border}\n clearButton={clearButton}\n customValidity={customValidity}\n disabled={disabled}\n fontSize={fontSize}\n icon={icon}\n iconRight={loading && AnimatedSpinnerIcon}\n id={id}\n inputMode=\"search\"\n onChange={handleInputChange}\n onClear={handleClearButtonClick}\n onFocus={handleInputFocus}\n padding={padding}\n prefix={prefix}\n radius={radius}\n readOnly={readOnly}\n ref={inputElementRef}\n role=\"combobox\"\n spellCheck={false}\n suffix={suffix || openButtonNode}\n value={inputValue}\n />\n )\n\n const handleListBoxKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n // If the focus is currently in the list, move focus to the input element\n if (event.key === 'Tab') {\n if (listFocused) inputElementRef.current?.focus()\n }\n },\n [listFocused],\n )\n\n const content = useMemo(() => {\n if (filteredOptions.length === 0) return null\n\n return (\n <ListBox\n data-ui=\"AutoComplete__results\"\n onKeyDown={handleListBoxKeyDown}\n padding={1}\n {...listBox}\n tabIndex={-1}\n >\n <Stack\n as=\"ul\"\n aria-multiselectable={false}\n data-ui=\"AutoComplete__resultsList\"\n id={listBoxId}\n ref={listBoxElementRef}\n role=\"listbox\"\n space={1}\n >\n {filteredOptions.map((option) => {\n const active =\n activeValue !== null ? option.value === activeValue : currentOption === option\n\n return (\n <AutocompleteOption\n id={`${id}-option-${option.value}`}\n key={option.value}\n onSelect={handleOptionSelect}\n selected={active}\n value={option.value}\n >\n {cloneElement(renderOption(option), {\n disabled: loading,\n selected: active,\n tabIndex: listFocused && active ? 0 : -1,\n })}\n </AutocompleteOption>\n )\n })}\n </Stack>\n </ListBox>\n )\n }, [\n activeValue,\n currentOption,\n filteredOptions,\n handleOptionSelect,\n handleListBoxKeyDown,\n id,\n listBox,\n listBoxId,\n listFocused,\n loading,\n renderOption,\n ])\n\n const results = useMemo(() => {\n if (renderPopover) {\n return renderPopover(\n {\n content,\n hidden: !expanded,\n inputElement: inputElementRef.current,\n onMouseEnter: handlePopoverMouseEnter,\n onMouseLeave: handlePopoverMouseLeave,\n },\n resultsPopoverElementRef,\n )\n }\n\n if (filteredOptionsLen === 0) {\n return null\n }\n\n return (\n <Popover\n arrow={false}\n constrainSize\n content={content}\n fallbackPlacements={AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS}\n matchReferenceWidth\n onMouseEnter={handlePopoverMouseEnter}\n onMouseLeave={handlePopoverMouseLeave}\n open={expanded}\n overflow=\"auto\"\n placement={AUTOCOMPLETE_POPOVER_PLACEMENT}\n portal\n radius={radius}\n ref={resultsPopoverElementRef}\n referenceElement={inputElementRef.current}\n {...popover}\n />\n )\n }, [\n content,\n expanded,\n filteredOptionsLen,\n handlePopoverMouseEnter,\n handlePopoverMouseLeave,\n popover,\n radius,\n renderPopover,\n ])\n\n return (\n <Root\n data-ui=\"Autocomplete\"\n onBlur={handleRootBlur}\n onFocus={handleRootFocus}\n onKeyDown={handleRootKeyDown}\n ref={rootElementRef}\n >\n {input}\n {results}\n </Root>\n )\n})\n\n/**\n * The Autocomplete component is typically used for search components.\n * It consists of a text input for writing a query, and properties for rendering suggestions.\n *\n * @public\n */\nexport const Autocomplete = InnerAutocomplete as <Option extends BaseAutocompleteOption>(\n props: AutocompleteProps<Option> &\n Omit<\n HTMLProps<HTMLInputElement>,\n | 'aria-activedescendant'\n | 'aria-autocomplete'\n | 'aria-expanded'\n | 'aria-owns'\n | 'as'\n | 'autoCapitalize'\n | 'autoComplete'\n | 'autoCorrect'\n | 'id'\n | 'inputMode'\n | 'onChange'\n | 'onSelect'\n | 'prefix'\n | 'ref'\n | 'role'\n | 'spellCheck'\n | 'type'\n | 'value'\n > & {\n ref?: Ref<HTMLInputElement>\n },\n) => ReactElement\n","import {styled} from 'styled-components'\nimport {Button} from '../../primitives'\n\nexport const Root = styled.ol`\n margin: 0;\n padding: 0;\n display: flex;\n list-style: none;\n align-items: center;\n white-space: nowrap;\n line-height: 0;\n`\n\nexport const ExpandButton = styled(Button)`\n appearance: none;\n margin: -4px;\n`\n","import {Children, forwardRef, Fragment, isValidElement, useCallback, useMemo, useState} from 'react'\nimport {useClickOutside} from '../../hooks'\nimport {Box, Popover, Stack, Text} from '../../primitives'\nimport {_getArrayProp} from '../../styles'\nimport {ExpandButton, Root} from './breadcrumbs.styles'\n\n/**\n * @beta\n */\nexport interface BreadcrumbsProps {\n maxLength?: number\n separator?: React.ReactNode\n space?: number | number[]\n}\n\n/**\n * @beta\n */\nexport const Breadcrumbs = forwardRef(function Breadcrumbs(\n props: BreadcrumbsProps & Omit<React.HTMLProps<HTMLOListElement>, 'as' | 'ref' | 'type'>,\n ref: React.ForwardedRef<HTMLOListElement>,\n) {\n const {children, maxLength, separator, space: spaceRaw = 2, ...restProps} = props\n const space = useMemo(() => _getArrayProp(spaceRaw), [spaceRaw])\n const [open, setOpen] = useState(false)\n const [expandElement, setExpandElement] = useState<HTMLButtonElement | null>(null)\n const [popoverElement, setPopoverElement] = useState<HTMLDivElement | null>(null)\n\n const collapse = useCallback(() => setOpen(false), [])\n const expand = useCallback(() => setOpen(true), [])\n\n useClickOutside(collapse, [expandElement, popoverElement])\n\n const rawItems = useMemo(() => Children.toArray(children).filter(isValidElement), [children])\n\n const items = useMemo(() => {\n const len = rawItems.length\n\n if (maxLength && len > maxLength) {\n const beforeLength = Math.ceil(maxLength / 2)\n const afterLength = Math.floor(maxLength / 2)\n\n return [\n ...rawItems.slice(0, beforeLength - 1),\n <Popover\n constrainSize\n content={\n <Stack as=\"ol\" overflow=\"auto\" padding={space} space={space}>\n {rawItems.slice(beforeLength - 1, len - afterLength)}\n </Stack>\n }\n key=\"button\"\n open={open}\n placement=\"top\"\n portal\n ref={setPopoverElement}\n >\n <ExpandButton\n fontSize={1}\n mode=\"bleed\"\n onClick={open ? collapse : expand}\n padding={1}\n ref={setExpandElement}\n selected={open}\n text=\"…\"\n />\n </Popover>,\n ...rawItems.slice(len - afterLength),\n ]\n }\n\n return rawItems\n }, [collapse, expand, maxLength, open, rawItems, space])\n\n return (\n <Root data-ui=\"Breadcrumbs\" {...restProps} ref={ref}>\n {items.map((item, itemIndex) => (\n <Fragment key={itemIndex}>\n {itemIndex > 0 && (\n <Box aria-hidden as=\"li\" paddingX={space}>\n {separator || <Text muted>/</Text>}\n </Box>\n )}\n <Box as=\"li\">{item}</Box>\n </Fragment>\n ))}\n </Root>\n )\n})\n","import {CSSObject, getTheme_v2} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\nimport {_responsive, ThemeProps} from '../../styles'\nimport {DialogPosition} from '../../types'\n\n/**\n * @internal\n */\nexport interface ResponsiveDialogPositionStyleProps {\n $position: DialogPosition[]\n}\n\nexport function dialogStyle({theme}: ThemeProps): CSSObject {\n const {color} = getTheme_v2(theme)\n\n return {\n '&:not([hidden])': {\n display: 'flex',\n },\n\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n alignItems: 'center',\n justifyContent: 'center',\n outline: 'none',\n background: color.backdrop,\n }\n}\n\nexport function responsiveDialogPositionStyle(\n props: ResponsiveDialogPositionStyleProps & ThemeProps,\n): CSSObject[] {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$position, (position) => ({'&&': {position}}))\n}\n\n/**\n * @internal\n */\nexport interface AnimationDialogStyleProps {\n $animate: boolean\n}\n\nexport function animationDialogStyle(props: AnimationDialogStyleProps): ReturnType<typeof css> {\n if (!props.$animate) return css``\n\n return css`\n @keyframes zoomIn {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n }\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n animation: fadeIn 200ms ease-out;\n // Animates the dialog card.\n & > [data-ui='DialogCard'] {\n animation: zoomIn 200ms ease-out;\n }\n `\n}\n","import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'\nimport {DialogPosition} from '../../types'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface DialogContextValue {\n version: 0.0\n position?: DialogPosition | DialogPosition[]\n zOffset?: number | number[]\n}\n\nconst key = Symbol.for('@sanity/ui/context/dialog')\n\n/**\n * @internal\n */\nexport const DialogContext = createGlobalScopedContext<DialogContextValue>(key, {\n version: 0.0,\n})\n","import {useContext} from 'react'\nimport {DialogContext, DialogContextValue} from './dialogContext'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function useDialog(): DialogContextValue {\n return useContext(DialogContext)\n}\n","import {CloseIcon} from '@sanity/icons'\nimport {ThemeColorSchemeKey} from '@sanity/ui/theme'\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {styled} from 'styled-components'\nimport {\n containsOrEqualsElement,\n focusFirstDescendant,\n focusLastDescendant,\n isHTMLElement,\n} from '../../helpers'\nimport {useClickOutside, useGlobalKeyDown, usePrefersReducedMotion} from '../../hooks'\nimport {Box, Button, Card, Container, Flex, Text} from '../../primitives'\nimport {ResponsivePaddingProps, ResponsiveWidthProps} from '../../primitives/types'\nimport {_getArrayProp} from '../../styles'\nimport {responsivePaddingStyle, ResponsivePaddingStyleProps} from '../../styles/internal'\nimport {useTheme_v2} from '../../theme'\nimport {DialogPosition, Radius} from '../../types'\nimport {Layer, LayerProps, Portal, useBoundaryElement, useLayer, usePortal} from '../../utils'\nimport {\n animationDialogStyle,\n AnimationDialogStyleProps,\n dialogStyle,\n responsiveDialogPositionStyle,\n ResponsiveDialogPositionStyleProps,\n} from './styles'\nimport {useDialog} from './useDialog'\n\n/**\n * @public\n */\nexport interface DialogProps extends ResponsivePaddingProps, ResponsiveWidthProps {\n /**\n * @beta\n */\n __unstable_autoFocus?: boolean\n /**\n * @beta\n */\n __unstable_hideCloseButton?: boolean\n cardRadius?: Radius | Radius[]\n cardShadow?: number | number[]\n contentRef?: React.ForwardedRef<HTMLDivElement>\n footer?: React.ReactNode\n header?: React.ReactNode\n id: string\n /** A callback that fires when the dialog becomes the top layer when it was not the top layer before. */\n onActivate?: LayerProps['onActivate']\n onClickOutside?: () => void\n onClose?: () => void\n portal?: string\n position?: DialogPosition | DialogPosition[]\n scheme?: ThemeColorSchemeKey\n zOffset?: number | number[]\n /**\n * Whether the dialog should animate in on mount.\n *\n * @beta\n * @defaultValue false\n */\n animate?: boolean\n}\n\ninterface DialogCardProps extends ResponsiveWidthProps {\n /**\n * @beta\n */\n __unstable_autoFocus: boolean\n /**\n * @beta\n */\n __unstable_hideCloseButton: boolean\n children: React.ReactNode\n contentRef?: React.ForwardedRef<HTMLDivElement>\n footer: React.ReactNode\n header: React.ReactNode\n id: string\n onClickOutside?: () => void\n onClose?: () => void\n portal?: string\n radius: Radius | Radius[]\n scheme?: ThemeColorSchemeKey\n shadow: number | number[]\n}\n\nfunction isTargetWithinScope(\n boundaryElement: HTMLElement | null,\n portalElement: HTMLElement | null,\n target: Node,\n): boolean {\n if (!boundaryElement || !portalElement) return true\n\n return (\n containsOrEqualsElement(boundaryElement, target) ||\n containsOrEqualsElement(portalElement, target)\n )\n}\n\nconst Root = styled(Layer)<\n ResponsiveDialogPositionStyleProps & ResponsivePaddingStyleProps & AnimationDialogStyleProps\n>(responsivePaddingStyle, dialogStyle, responsiveDialogPositionStyle, animationDialogStyle)\n\nconst DialogContainer = styled(Container)`\n &:not([hidden]) {\n display: flex;\n }\n width: 100%;\n height: 100%;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`\n\nconst DialogCardRoot = styled(Card)`\n &:not([hidden]) {\n display: flex;\n }\n width: 100%;\n min-height: 0;\n max-height: 100%;\n overflow: hidden;\n overflow: clip;\n`\n\nconst DialogLayout = styled(Flex)`\n flex: 1;\n min-height: 0;\n width: 100%;\n`\n\nconst DialogHeader = styled(Box)`\n position: relative;\n z-index: 2;\n`\n\nconst DialogContent = styled(Box)`\n position: relative;\n z-index: 1;\n overflow: auto;\n outline: none;\n`\n\nconst DialogFooter = styled(Box)`\n position: relative;\n z-index: 3;\n`\n\nconst DialogCard = forwardRef(function DialogCard(\n props: DialogCardProps,\n forwardedRef: React.ForwardedRef<HTMLDivElement>,\n) {\n const {\n __unstable_autoFocus: autoFocus,\n __unstable_hideCloseButton: hideCloseButton,\n children,\n contentRef: forwardedContentRef,\n footer,\n header,\n id,\n onClickOutside,\n onClose,\n portal: portalProp,\n radius: radiusProp,\n scheme,\n shadow: shadowProp,\n width: widthProp,\n } = props\n const portal = usePortal()\n const portalElement = portalProp ? portal.elements?.[portalProp] || null : portal.element\n const boundaryElement = useBoundaryElement().element\n const radius = useMemo(() => _getArrayProp(radiusProp), [radiusProp])\n const shadow = useMemo(() => _getArrayProp(shadowProp), [shadowProp])\n const width = useMemo(() => _getArrayProp(widthProp), [widthProp])\n const ref = useRef<HTMLDivElement | null>(null)\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const contentRef = useRef<HTMLDivElement | null>(null)\n const layer = useLayer()\n const {isTopLayer} = layer\n const labelId = `${id}_label`\n const showCloseButton = Boolean(onClose) && hideCloseButton === false\n const showHeader = Boolean(header) || showCloseButton\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(\n forwardedContentRef,\n () => contentRef.current,\n )\n\n useEffect(() => {\n if (!autoFocus) return\n\n // On mount: focus the first focusable element\n if (ref.current) {\n focusFirstDescendant(ref.current)\n }\n }, [autoFocus, ref])\n\n useGlobalKeyDown(\n useCallback(\n (event: KeyboardEvent) => {\n if (!isTopLayer || !onClose) return\n\n const target = document.activeElement\n\n if (target && !isTargetWithinScope(boundaryElement, portalElement, target)) {\n // Ignore key presses when the focused element is outside of scope\n return\n }\n\n if (event.key === 'Escape') {\n event.preventDefault()\n event.stopPropagation()\n onClose()\n }\n },\n [boundaryElement, isTopLayer, onClose, portalElement],\n ),\n )\n\n useClickOutside(\n useCallback(\n (event: MouseEvent) => {\n if (!isTopLayer || !onClickOutside) return\n\n const target = event.target as Node | null\n\n if (target && !isTargetWithinScope(boundaryElement, portalElement, target)) {\n // Ignore clicks outside of the scope\n return\n }\n\n onClickOutside()\n },\n [boundaryElement, isTopLayer, onClickOutside, portalElement],\n ),\n [rootElement],\n )\n\n const setRef = useCallback((el: HTMLDivElement | null) => {\n setRootElement(el)\n ref.current = el\n }, [])\n\n return (\n <DialogContainer data-ui=\"DialogCard\" width={width}>\n <DialogCardRoot radius={radius} ref={setRef} scheme={scheme} shadow={shadow}>\n <DialogLayout direction=\"column\">\n {showHeader && (\n <DialogHeader>\n <Flex align=\"center\" padding={3}>\n <Box flex={1} padding={2}>\n {header && (\n <Text id={labelId} size={1} weight=\"semibold\">\n {header}\n </Text>\n )}\n </Box>\n {showCloseButton && (\n <Box flex=\"none\">\n <Button\n aria-label=\"Close dialog\"\n disabled={!onClose}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onClose}\n padding={2}\n />\n </Box>\n )}\n </Flex>\n </DialogHeader>\n )}\n\n <DialogContent flex={1} ref={contentRef} tabIndex={-1}>\n {children}\n </DialogContent>\n\n {footer && <DialogFooter>{footer}</DialogFooter>}\n </DialogLayout>\n </DialogCardRoot>\n </DialogContainer>\n )\n})\n\n/**\n * The Dialog component.\n *\n * @public\n */\nexport const Dialog = forwardRef(function Dialog(\n props: DialogProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'id' | 'width'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const dialog = useDialog()\n const {layer} = useTheme_v2()\n const {\n __unstable_autoFocus: autoFocus = true,\n __unstable_hideCloseButton: hideCloseButton = false,\n cardRadius: cardRadiusProp = 4,\n cardShadow = 3,\n children,\n contentRef,\n footer,\n header,\n id,\n onActivate,\n onClickOutside,\n onClose,\n onFocus,\n padding: paddingProp = 3,\n portal: portalProp,\n position: positionProp = dialog.position || 'fixed',\n scheme,\n width: widthProp = 0,\n zOffset: zOffsetProp = dialog.zOffset || layer.dialog.zOffset,\n animate: _animate = false,\n ...restProps\n } = props\n const prefersReducedMotion = usePrefersReducedMotion()\n const animate = prefersReducedMotion ? false : _animate\n const portal = usePortal()\n const portalElement = portalProp ? portal.elements?.[portalProp] || null : portal.element\n const boundaryElement = useBoundaryElement().element\n const cardRadius = useMemo(() => _getArrayProp(cardRadiusProp), [cardRadiusProp])\n const padding = useMemo(() => _getArrayProp(paddingProp), [paddingProp])\n const position = useMemo(() => _getArrayProp(positionProp), [positionProp])\n const width = useMemo(() => _getArrayProp(widthProp), [widthProp])\n const zOffset = useMemo(() => _getArrayProp(zOffsetProp), [zOffsetProp])\n const preDivRef = useRef<HTMLDivElement | null>(null)\n const postDivRef = useRef<HTMLDivElement | null>(null)\n const cardRef = useRef<HTMLDivElement | null>(null)\n const focusedElementRef = useRef<HTMLElement | null>(null)\n\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n onFocus?.(event)\n\n const target = event.target\n const cardElement = cardRef.current\n\n if (cardElement && target === preDivRef.current) {\n focusLastDescendant(cardElement)\n\n return\n }\n\n if (cardElement && target === postDivRef.current) {\n focusFirstDescendant(cardElement)\n\n return\n }\n\n if (isHTMLElement(event.target)) {\n focusedElementRef.current = event.target\n }\n },\n [onFocus],\n )\n\n const labelId = `${id}_label`\n\n const rootClickTimeoutRef = useRef<NodeJS.Timeout>()\n\n // If the resulting active element (a.k.a. focused element) is not withing scope when clicking\n // within the dialog, then we want to focus the previously interactive element in the dialog instead.\n // This is to allow the user to tab or close the dialog by pressing escape.\n const handleRootClick = useCallback(() => {\n if (rootClickTimeoutRef.current) {\n clearTimeout(rootClickTimeoutRef.current)\n }\n\n rootClickTimeoutRef.current = setTimeout(() => {\n const activeElement = document.activeElement\n\n if (activeElement && !isTargetWithinScope(boundaryElement, portalElement, activeElement)) {\n const target = focusedElementRef.current\n\n if (!target || !document.body.contains(target)) {\n // No previously focused element, or it's not in the document anymore\n const cardElement = cardRef.current\n if (cardElement) focusFirstDescendant(cardElement)\n\n return\n }\n\n target.focus()\n }\n }, 0)\n }, [boundaryElement, portalElement])\n\n return (\n <Portal __unstable_name={portalProp}>\n <Root\n {...restProps}\n $animate={animate}\n $padding={padding}\n $position={position}\n aria-labelledby={labelId}\n aria-modal\n data-ui=\"Dialog\"\n id={id}\n onActivate={onActivate}\n onClick={handleRootClick}\n onFocus={handleFocus}\n ref={ref}\n role=\"dialog\"\n zOffset={zOffset}\n >\n <div ref={preDivRef} tabIndex={0} />\n <DialogCard\n __unstable_autoFocus={autoFocus}\n __unstable_hideCloseButton={hideCloseButton}\n contentRef={contentRef}\n footer={footer}\n header={header}\n id={id}\n onClickOutside={onClickOutside}\n onClose={onClose}\n portal={portalProp}\n radius={cardRadius}\n ref={cardRef}\n scheme={scheme}\n shadow={cardShadow}\n width={width}\n >\n {children}\n </DialogCard>\n <div ref={postDivRef} tabIndex={0} />\n </Root>\n </Portal>\n )\n})\n","import {useMemo} from 'react'\nimport {DialogPosition} from '../../types'\nimport {DialogContext, DialogContextValue} from './dialogContext'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface DialogProviderProps {\n children?: React.ReactNode\n position?: DialogPosition | DialogPosition[]\n zOffset?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function DialogProvider(props: DialogProviderProps): React.ReactElement {\n const {children, position, zOffset} = props\n\n const contextValue: DialogContextValue = useMemo(\n () => ({\n version: 0.0,\n position,\n zOffset,\n }),\n [position, zOffset],\n )\n\n return <DialogContext.Provider value={contextValue}>{children}</DialogContext.Provider>\n}\n","import {forwardRef, useMemo} from 'react'\nimport {styled} from 'styled-components'\nimport {Inline, KBD} from '../../primitives'\nimport {_getArrayProp} from '../../styles'\nimport {Radius} from '../../types'\n\n/**\n * @public\n */\nexport interface HotkeysProps {\n fontSize?: number | number[]\n padding?: number | number[]\n radius?: Radius | Radius[]\n space?: number | number[]\n keys?: string[]\n}\n\nconst Root = styled.kbd`\n font: inherit;\n padding: 1px;\n\n &:not([hidden]) {\n display: block;\n }\n`\n\nconst Key = styled(KBD)`\n &:not([hidden]) {\n display: block;\n }\n`\n\n/**\n * Represent hotkeys (a keyboard combination) with semantic `<kbd>` elements.\n *\n * @public\n */\nexport const Hotkeys = forwardRef(function Hotkeys(\n props: HotkeysProps & Omit<React.HTMLProps<HTMLElement>, 'as' | 'ref' | 'size'>,\n ref: React.Ref<HTMLElement>,\n) {\n const {fontSize, keys, padding, radius, space: spaceProp = 0.5, ...restProps} = props\n const space = useMemo(() => _getArrayProp(spaceProp), [spaceProp])\n\n if (!keys || keys.length === 0) {\n return <></>\n }\n\n return (\n <Root data-ui=\"Hotkeys\" {...restProps} ref={ref}>\n <Inline as=\"span\" space={space}>\n {keys.map((key, i) => (\n <Key fontSize={fontSize} key={i} padding={padding} radius={radius}>\n {key}\n </Key>\n ))}\n </Inline>\n </Root>\n )\n})\n","import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'\n\nexport interface MenuContextValue {\n version: 0.0\n activeElement: HTMLElement | null\n activeIndex: number\n mount: (element: HTMLElement | null, selected?: boolean) => () => void\n onClickOutside?: (event: MouseEvent) => void\n onEscape?: () => void\n onItemClick?: () => void\n onItemMouseEnter?: (event: React.MouseEvent<HTMLElement>) => void\n onItemMouseLeave?: (event: React.MouseEvent<HTMLElement>) => void\n registerElement?: (el: HTMLElement) => () => void\n\n /**\n * @deprecated Use `onItemMouseEnter` instead\n */\n onMouseEnter: (event: React.MouseEvent<HTMLElement>) => void\n\n /**\n * @deprecated Use `onItemMouseLeave` instead\n */\n onMouseLeave: (event: React.MouseEvent<HTMLElement>) => void\n}\n\nconst key = Symbol.for('@sanity/ui/context/menu')\n\nexport const MenuContext = createGlobalScopedContext<MenuContextValue | null>(key, null)\n","import {isHTMLAnchorElement, isHTMLButtonElement} from '../../helpers'\n\n/**\n * @internal\n */\nfunction _isFocusable(element: HTMLElement) {\n return (\n (isHTMLAnchorElement(element) && element.getAttribute('data-disabled') !== 'true') ||\n (isHTMLButtonElement(element) && !element.disabled)\n )\n}\n\n/**\n * @internal\n */\nexport function _getFocusableElements(elements: HTMLElement[]): HTMLElement[] {\n return elements.filter(_isFocusable)\n}\n\n/**\n * @internal\n */\nexport function _getDOMPath(rootElement: HTMLElement, el: HTMLElement): number[] {\n const path: number[] = []\n\n let e = el\n\n while (e !== rootElement) {\n const parentElement = e.parentElement\n\n if (!parentElement) return path\n\n const children = Array.from(parentElement.childNodes)\n const index = children.indexOf(e)\n\n path.unshift(index)\n\n if (parentElement === rootElement) {\n return path\n }\n\n e = parentElement\n }\n\n return path\n}\n\nconst EMPTY_PATH: number[] = []\n\n/**\n * @internal\n */\nexport function _sortElements(rootElement: HTMLElement | null, elements: HTMLElement[]): void {\n if (!rootElement) return\n\n const map = new WeakMap<HTMLElement, number[]>()\n\n for (const el of elements) {\n map.set(el, _getDOMPath(rootElement, el))\n }\n\n const _sort = (a: HTMLElement, b: HTMLElement) => {\n const _a = map.get(a) || EMPTY_PATH\n const _b = map.get(b) || EMPTY_PATH\n\n const len = Math.max(_a.length, _b.length)\n\n // Loop until there are different indexes\n for (let i = 0; i < len; i += 1) {\n const aIndex = _a[i] || -1\n const bIndex = _b[i] || -1\n\n if (aIndex !== bIndex) {\n return aIndex - bIndex\n }\n }\n\n return 0\n }\n\n elements.sort(_sort)\n}\n","import {useCallback, useEffect, useRef, useState} from 'react'\nimport {_getFocusableElements, _sortElements} from './helpers'\n\n/**\n * @internal\n */\nexport interface MenuController {\n activeElement: HTMLElement | null\n activeIndex: number\n handleItemMouseEnter: (event: React.MouseEvent<HTMLElement>) => void\n handleItemMouseLeave: () => void\n handleKeyDown: (event: React.KeyboardEvent<HTMLDivElement>) => void\n mount: (element: HTMLElement | null, selected?: boolean) => () => void\n rootElement: HTMLDivElement | null\n setRootElement: (el: HTMLDivElement | null) => void\n}\n\n/**\n * This controller is responsible for controlling UI menu state.\n *\n * @internal\n */\nexport function useMenuController(props: {\n onKeyDown?: React.KeyboardEventHandler\n originElement?: HTMLElement | null\n shouldFocus: 'first' | 'last' | null\n}): MenuController {\n const {onKeyDown, originElement, shouldFocus} = props\n const elementsRef = useRef<HTMLElement[]>([])\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const [activeIndex, _setActiveIndex] = useState(-1)\n const activeIndexRef = useRef(activeIndex)\n const activeElement = elementsRef.current[activeIndex] || null\n const mounted = Boolean(rootElement)\n\n const setActiveIndex = useCallback((nextActiveIndex: number) => {\n _setActiveIndex(nextActiveIndex)\n activeIndexRef.current = nextActiveIndex\n }, [])\n\n const mount = useCallback(\n (element: HTMLElement | null, selected?: boolean): (() => void) => {\n if (!element) return () => undefined\n\n if (elementsRef.current.indexOf(element) === -1) {\n elementsRef.current.push(element)\n _sortElements(rootElement, elementsRef.current)\n }\n\n if (selected) {\n const selectedIndex = elementsRef.current.indexOf(element)\n\n setActiveIndex(selectedIndex)\n }\n\n return () => {\n const idx = elementsRef.current.indexOf(element)\n\n if (idx > -1) {\n elementsRef.current.splice(idx, 1)\n }\n }\n },\n [rootElement, setActiveIndex],\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n // Move focus to the element that opened the menu before handling the `Tab` press\n if (event.key === 'Tab') {\n if (originElement) {\n originElement.focus()\n }\n\n return\n }\n\n // Move focus to the first focusable menuitem\n if (event.key === 'Home') {\n event.preventDefault()\n event.stopPropagation()\n\n const focusableElements = _getFocusableElements(elementsRef.current)\n const el = focusableElements[0]\n\n if (!el) return\n\n const currentIndex = elementsRef.current.indexOf(el)\n\n setActiveIndex(currentIndex)\n\n return\n }\n\n // Move focus to the last focusable menuitem\n if (event.key === 'End') {\n event.preventDefault()\n event.stopPropagation()\n\n const focusableElements = _getFocusableElements(elementsRef.current)\n const el = focusableElements[focusableElements.length - 1]\n\n if (!el) return\n\n const currentIndex = elementsRef.current.indexOf(el)\n\n setActiveIndex(currentIndex)\n\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n event.stopPropagation()\n\n const focusableElements = _getFocusableElements(elementsRef.current)\n const focusableLen = focusableElements.length\n\n if (focusableLen === 0) return\n\n const focusedElement = elementsRef.current[activeIndexRef.current]\n\n let focusedIndex = focusableElements.indexOf(focusedElement)\n\n focusedIndex = (focusedIndex - 1 + focusableLen) % focusableLen\n\n const el = focusableElements[focusedIndex]\n const currentIndex = elementsRef.current.indexOf(el)\n\n setActiveIndex(currentIndex)\n\n return\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n event.stopPropagation()\n\n const focusableElements = _getFocusableElements(elementsRef.current)\n const focusableLen = focusableElements.length\n\n if (focusableLen === 0) return\n\n const focusedElement = elementsRef.current[activeIndexRef.current]\n\n let focusedIndex = focusableElements.indexOf(focusedElement)\n\n focusedIndex = (focusedIndex + 1) % focusableLen\n\n const el = focusableElements[focusedIndex]\n const currentIndex = elementsRef.current.indexOf(el)\n\n setActiveIndex(currentIndex)\n\n return\n }\n\n if (onKeyDown) {\n onKeyDown(event)\n }\n },\n [onKeyDown, originElement, setActiveIndex],\n )\n\n const handleItemMouseEnter = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n const element = event.currentTarget\n const currentIndex = elementsRef.current.indexOf(element)\n\n setActiveIndex(currentIndex)\n },\n [setActiveIndex],\n )\n\n const handleItemMouseLeave = useCallback(() => {\n // Set the active index to -2 to deactivate all menu items\n // when the user moves the mouse away from the menu item.\n // We avoid using -1 because it would focus the first menu item,\n // which would be incorrect when the user hovers over a gap\n // between two menu items or a menu divider.\n setActiveIndex(-2)\n rootElement?.focus()\n }, [setActiveIndex, rootElement])\n\n // Set focus on the currently active element\n useEffect(() => {\n if (!mounted) return\n\n const rafId = window.requestAnimationFrame(() => {\n const _activeIndex = activeIndexRef.current\n\n if (_activeIndex === -1) {\n if (shouldFocus === 'first') {\n const focusableElements = _getFocusableElements(elementsRef.current)\n const el = focusableElements[0]\n\n if (el) {\n const currentIndex = elementsRef.current.indexOf(el)\n\n setActiveIndex(currentIndex)\n activeIndexRef.current = currentIndex\n }\n }\n\n if (shouldFocus === 'last') {\n const focusableElements = _getFocusableElements(elementsRef.current)\n const el = focusableElements[focusableElements.length - 1]\n\n if (el) {\n const currentIndex = elementsRef.current.indexOf(el)\n\n setActiveIndex(currentIndex)\n activeIndexRef.current = currentIndex\n }\n }\n\n return\n }\n\n const element = elementsRef.current[_activeIndex] || null\n\n element?.focus()\n })\n\n return () => {\n window.cancelAnimationFrame(rafId)\n }\n }, [activeIndex, mounted, setActiveIndex, shouldFocus])\n\n return {\n activeElement,\n activeIndex,\n handleItemMouseEnter,\n handleItemMouseLeave,\n handleKeyDown,\n mount,\n rootElement,\n setRootElement,\n }\n}\n","import {forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef} from 'react'\nimport {styled} from 'styled-components'\nimport {useClickOutside, useGlobalKeyDown} from '../../hooks'\nimport {Box, Stack} from '../../primitives'\nimport {ResponsivePaddingProps} from '../../primitives/types'\nimport {useLayer} from '../../utils'\nimport {MenuContext, MenuContextValue} from './menuContext'\nimport {useMenuController} from './useMenuController'\n\n/**\n * @public\n */\nexport interface MenuProps extends ResponsivePaddingProps {\n /**\n * @deprecated Use `shouldFocus=\"first\"` instead.\n */\n focusFirst?: boolean\n /**\n * @deprecated Use `shouldFocus=\"last\"` instead.\n */\n focusLast?: boolean\n onClickOutside?: (event: MouseEvent) => void\n onEscape?: () => void\n onItemClick?: () => void\n onItemSelect?: (index: number) => void\n originElement?: HTMLElement | null\n registerElement?: (el: HTMLElement) => () => void\n shouldFocus?: 'first' | 'last' | null\n space?: number | number[]\n}\n\nconst Root = styled(Box)`\n outline: none;\n overflow: auto;\n`\n\n/**\n * The `Menu` component is a building block for application menus.\n *\n * @public\n */\nexport const Menu = forwardRef(function Menu(\n props: MenuProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'role' | 'tabIndex'>,\n forwardedRef: React.ForwardedRef<HTMLDivElement>,\n) {\n const {\n children,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n focusFirst,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n focusLast,\n onClickOutside,\n onEscape,\n onItemClick,\n onItemSelect,\n onKeyDown,\n originElement,\n padding = 1,\n registerElement,\n shouldFocus = (props.focusFirst && 'first') || (props.focusLast && 'last') || null,\n space = 1,\n ...restProps\n } = props\n\n const ref = useRef<HTMLDivElement | null>(null)\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n\n const {isTopLayer} = useLayer()\n\n const {\n activeElement,\n activeIndex,\n handleItemMouseEnter,\n handleItemMouseLeave,\n handleKeyDown,\n mount,\n rootElement,\n setRootElement,\n } = useMenuController({onKeyDown, originElement, shouldFocus})\n\n const handleRefChange = useCallback(\n (el: HTMLDivElement | null) => {\n setRootElement(el)\n ref.current = el\n },\n [setRootElement],\n )\n\n // Trigger `onItemSelect` when active index changes\n useEffect(() => {\n if (onItemSelect) onItemSelect(activeIndex)\n }, [activeIndex, onItemSelect])\n\n // Close menu when clicking outside\n useClickOutside(\n useCallback(\n (event) => isTopLayer && onClickOutside && onClickOutside(event),\n [isTopLayer, onClickOutside],\n ),\n [rootElement],\n )\n\n // Close menu when pressing Escape\n useGlobalKeyDown(\n useCallback(\n (event) => {\n if (!isTopLayer) return\n\n if (event.key === 'Escape') {\n event.stopPropagation()\n if (onEscape) onEscape()\n }\n },\n [isTopLayer, onEscape],\n ),\n )\n\n // Register root element (for nested menus)\n useEffect(() => {\n if (!rootElement || !registerElement) return\n\n return registerElement(rootElement)\n }, [registerElement, rootElement])\n\n const value: MenuContextValue = useMemo(\n () => ({\n version: 0.0,\n activeElement,\n activeIndex,\n mount,\n onClickOutside,\n onEscape,\n onItemClick,\n onItemMouseEnter: handleItemMouseEnter,\n onItemMouseLeave: handleItemMouseLeave,\n registerElement,\n\n // deprecated\n onMouseEnter: handleItemMouseEnter,\n onMouseLeave: handleItemMouseLeave,\n }),\n [\n activeElement,\n activeIndex,\n mount,\n handleItemMouseEnter,\n handleItemMouseLeave,\n onClickOutside,\n onEscape,\n onItemClick,\n registerElement,\n ],\n )\n\n return (\n <MenuContext.Provider value={value}>\n <Root\n data-ui=\"Menu\"\n {...restProps}\n onKeyDown={handleKeyDown}\n padding={padding}\n ref={handleRefChange}\n role=\"menu\"\n tabIndex={-1}\n >\n <Stack space={space}>{children}</Stack>\n </Root>\n </MenuContext.Provider>\n )\n})\n","import {ThemeColorSchemeKey} from '@sanity/ui/theme'\nimport {\n cloneElement,\n forwardRef,\n useCallback,\n useMemo,\n useState,\n useEffect,\n useRef,\n useImperativeHandle,\n} from 'react'\nimport {Popover, PopoverProps} from '../../primitives'\nimport {Placement, Radius} from '../../types'\nimport {MenuProps} from './menu'\n\n/**\n * @public\n */\nexport interface MenuButtonProps {\n /**\n * @beta Do not use in production.\n */\n __unstable_disableRestoreFocusOnClose?: boolean\n /**\n * @deprecated Use `popover={{boundaryElement: element}}` instead.\n */\n boundaryElement?: HTMLElement\n button: React.ReactElement\n id: string\n menu?: React.ReactElement\n onClose?: () => void\n onOpen?: () => void\n /**\n * @deprecated Use `popover={{placement: 'top'}}` instead.\n */\n placement?: Placement\n popover?: Omit<PopoverProps, 'content' | 'open'>\n /**\n * @deprecated Use `popover={{scheme: 'dark'}}` instead.\n */\n popoverScheme?: ThemeColorSchemeKey\n /**\n * @deprecated Use `popover={{radius: 2}}` instead.\n */\n popoverRadius?: Radius | Radius[]\n /**\n * @beta Do not use in production.\n * @deprecated Use `popover={{portal: true}}` instead.\n */\n portal?: boolean\n /**\n * @deprecated Use `popover={{preventOverflow: true}}` instead.\n */\n preventOverflow?: boolean\n}\n\n/**\n * The `MenuButton` component follows the WAI-ARIA specification for menu buttons.\n *\n * @public\n */\nexport const MenuButton = forwardRef(function MenuButton(\n props: MenuButtonProps,\n forwardedRef: React.ForwardedRef<HTMLButtonElement | null>,\n) {\n const {\n __unstable_disableRestoreFocusOnClose: disableRestoreFocusOnClose = false,\n boundaryElement: deprecated_boundaryElement,\n button: buttonProp,\n id,\n menu: menuProp,\n onClose,\n onOpen,\n placement: deprecated_placement,\n popoverScheme: deprecated_popoverScheme,\n portal: deprecated_portal = true,\n popover,\n popoverRadius: deprecated_popoverRadius,\n preventOverflow: deprecated_preventOverflow,\n } = props\n const [open, setOpen] = useState(false)\n const [shouldFocus, setShouldFocus] = useState<'first' | 'last' | null>(null)\n const [buttonElement, setButtonElement] = useState<HTMLButtonElement | null>(null)\n const [menuElements, setChildMenuElements] = useState<HTMLElement[]>([])\n const openRef = useRef<boolean>(open)\n\n // Notify consumers when the menu opens\n useEffect(() => {\n if (onOpen && open && !openRef.current) {\n onOpen()\n }\n }, [onOpen, open])\n\n // Notify consumers when the menu closes\n useEffect(() => {\n if (onClose && !open && openRef.current) {\n onClose()\n }\n }, [onClose, open])\n\n useEffect(() => {\n openRef.current = open\n }, [open])\n\n const handleButtonClick = useCallback(() => {\n setOpen((v) => !v)\n setShouldFocus(null)\n }, [])\n\n // Prevent mouse event propagation when the menu is open.\n // This is to ensure that `handleBlur` isn't triggered when clicking the menu button whilst open,\n // which can lead to `setOpen` being triggered multiple times (once by `handleBlur`, and again by `handleButtonClick`).\n const handleMouseDown = useCallback(\n (event: PointerEvent) => {\n if (open) event.preventDefault()\n },\n [open],\n )\n\n const handleButtonKeyDown = useCallback((event: React.KeyboardEvent<HTMLButtonElement>) => {\n // On `ArrowDown`, `Enter` and `Space`\n // - Opens menu and moves focus to first menuitem\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n setOpen(true)\n setShouldFocus('first')\n\n return\n }\n\n // On `ArrowUp`\n // - \tOpens menu and moves focus to last menuitem\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n setOpen(true)\n setShouldFocus('last')\n\n return\n }\n }, [])\n\n const handleMenuClickOutside = useCallback(\n (event: MouseEvent) => {\n const target = event.target\n\n if (!(target instanceof Node)) {\n return\n }\n\n if (buttonElement && (target === buttonElement || buttonElement.contains(target))) {\n return\n }\n\n for (const el of menuElements) {\n if (target === el || el.contains(target)) {\n return\n }\n }\n\n setOpen(false)\n },\n [buttonElement, menuElements],\n )\n\n const handleMenuEscape = useCallback(() => {\n setOpen(false)\n if (disableRestoreFocusOnClose) return\n if (buttonElement) buttonElement.focus()\n }, [buttonElement, disableRestoreFocusOnClose])\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n const target = event.relatedTarget\n\n if (!(target instanceof Node)) {\n return\n }\n\n for (const el of menuElements) {\n if (el === target || el.contains(target)) {\n return\n }\n }\n\n setOpen(false)\n },\n [menuElements],\n )\n\n const handleItemClick = useCallback(() => {\n setOpen(false)\n if (disableRestoreFocusOnClose) return\n if (buttonElement) buttonElement.focus()\n }, [buttonElement, disableRestoreFocusOnClose])\n\n const registerElement = useCallback((el: HTMLElement) => {\n setChildMenuElements((els) => els.concat([el]))\n\n return () => {\n setChildMenuElements((els) => {\n return els.filter((_el) => _el !== el)\n })\n }\n }, [])\n\n const menuProps: MenuProps = useMemo(\n () => ({\n 'aria-labelledby': id,\n onBlurCapture: handleBlur,\n onClickOutside: handleMenuClickOutside,\n onEscape: handleMenuEscape,\n onItemClick: handleItemClick,\n originElement: buttonElement,\n registerElement,\n shouldFocus,\n }),\n [\n buttonElement,\n handleMenuClickOutside,\n handleMenuEscape,\n handleItemClick,\n id,\n handleBlur,\n registerElement,\n shouldFocus,\n ],\n )\n\n const menu = menuProp && cloneElement(menuProp, menuProps)\n\n const ref = useRef<HTMLButtonElement | null>(null)\n const button = useMemo(\n () =>\n buttonProp &&\n cloneElement(buttonProp, {\n 'data-ui': 'MenuButton',\n id,\n onClick: handleButtonClick,\n onKeyDown: handleButtonKeyDown,\n onMouseDown: handleMouseDown,\n 'aria-haspopup': true,\n 'aria-expanded': open,\n ref: ref,\n selected: buttonProp.props.selected ?? open,\n }),\n [buttonProp, handleButtonClick, handleButtonKeyDown, handleMouseDown, id, open],\n )\n\n // Forward button ref to parent\n useImperativeHandle<HTMLButtonElement | null, HTMLButtonElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n // If there's a button then we need to set the reference element to the cloned button ref\n // and if button changes we make sure to update or remove the reference element.\n useEffect(() => {\n if (!button) return undefined\n\n setButtonElement(ref.current)\n\n return () => setButtonElement(null)\n }, [button])\n\n const popoverProps: MenuButtonProps['popover'] = useMemo(\n () => ({\n boundaryElement: deprecated_boundaryElement,\n overflow: 'auto',\n placement: deprecated_placement,\n portal: deprecated_portal,\n preventOverflow: deprecated_preventOverflow,\n radius: deprecated_popoverRadius,\n scheme: deprecated_popoverScheme,\n ...(popover || {}),\n }),\n [\n deprecated_boundaryElement,\n deprecated_placement,\n deprecated_popoverRadius,\n deprecated_popoverScheme,\n deprecated_portal,\n deprecated_preventOverflow,\n popover,\n ],\n )\n\n return (\n <Popover data-ui=\"MenuButton__popover\" {...popoverProps} content={menu} open={open}>\n {button || <></>}\n </Popover>\n )\n})\n","import {styled} from 'styled-components'\n\n/**\n * @public\n */\nexport const MenuDivider = styled.hr`\n height: 1px;\n border: 0;\n background: var(--card-hairline-soft-color);\n margin: 0;\n`\n","import {getTheme_v2} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {_cardColorStyle} from '../../styles/card'\nimport {SelectableTone} from '../../types'\n\n/**\n * @internal\n */\nexport interface SelectableStyleProps {\n $tone: SelectableTone\n}\n\nexport function selectableBaseStyle(): ReturnType<typeof css> {\n return css`\n background-color: inherit;\n color: inherit;\n\n &[data-as='button'] {\n -webkit-font-smoothing: inherit;\n appearance: none;\n outline: none;\n font: inherit;\n text-align: inherit;\n border: 0;\n width: -moz-available;\n width: -webkit-fill-available;\n width: stretch;\n }\n\n /* &:is(a) */\n &[data-as='a'] {\n text-decoration: none;\n }\n `\n}\n\nexport function selectableColorStyle(\n props: SelectableStyleProps & ThemeProps,\n): ReturnType<typeof css> {\n const {$tone} = props\n const {color, style} = getTheme_v2(props.theme)\n const tone = color.selectable[$tone]\n\n return css`\n ${_cardColorStyle(color, tone.enabled)}\n\n background-color: var(--card-bg-color);\n color: var(--card-fg-color);\n outline: none;\n\n /* &:is(button) */\n &[data-as='button'] {\n &:disabled {\n ${_cardColorStyle(color, tone.disabled)}\n }\n\n &:not(:disabled) {\n &[aria-pressed='true'] {\n ${_cardColorStyle(color, tone.pressed)}\n }\n\n &[data-selected],\n &[aria-selected='true'] > & {\n ${_cardColorStyle(color, tone.selected)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) {\n &[data-hovered],\n &:hover {\n ${_cardColorStyle(color, tone.hovered)}\n }\n\n &:active {\n ${_cardColorStyle(color, tone.pressed)}\n }\n }\n }\n }\n }\n\n /* &:is(a) */\n &[data-as='a'] {\n &[data-disabled] {\n ${_cardColorStyle(color, tone.disabled)}\n }\n\n &:not([data-disabled]) {\n &[data-pressed] {\n ${_cardColorStyle(color, tone.pressed)}\n }\n\n &[data-selected] {\n ${_cardColorStyle(color, tone.selected)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) {\n &[data-hovered],\n &:hover {\n ${_cardColorStyle(color, tone.hovered)}\n }\n &:active {\n ${_cardColorStyle(color, tone.pressed)}\n }\n }\n }\n }\n }\n\n ${style?.card?.root}\n `\n}\n","import {styled} from 'styled-components'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/radius'\nimport {Box} from '../box'\nimport {selectableBaseStyle, selectableColorStyle, SelectableStyleProps} from './style'\n\n/**\n * @internal\n */\nexport const Selectable = styled(Box)<SelectableStyleProps & ResponsiveRadiusStyleProps>(\n responsiveRadiusStyle,\n selectableBaseStyle,\n selectableColorStyle,\n)\n","import {useContext} from 'react'\nimport {isRecord} from '../../lib/isRecord'\nimport {MenuContext, MenuContextValue} from './menuContext'\n\nexport function useMenu(): MenuContextValue {\n const value = useContext(MenuContext)\n\n if (!value) {\n throw new Error('useMenu(): missing context value')\n }\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (!isRecord(value) || value.version !== 0.0) {\n throw new Error('useMenu(): the context value is not compatible')\n }\n\n return value\n}\n","import {ChevronRightIcon} from '@sanity/icons'\nimport {isValidElement, useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {Box, Flex, Popover, PopoverProps, Text} from '../../primitives'\nimport {Selectable} from '../../primitives/_selectable'\nimport {_getArrayProp} from '../../styles'\nimport {useRootTheme} from '../../theme'\nimport {Radius, SelectableTone} from '../../types'\nimport {Menu} from './menu'\nimport {useMenu} from './useMenu'\n\n/**\n * @public\n */\nexport interface MenuGroupProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n fontSize?: number | number[]\n icon?: React.ElementType | React.ReactNode\n padding?: number | number[]\n popover?: Omit<PopoverProps, 'content' | 'open'>\n radius?: Radius | Radius[]\n space?: number | number[]\n text: React.ReactNode\n tone?: SelectableTone\n}\n\n/**\n * @public\n */\nexport function MenuGroup(\n props: MenuGroupProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'tabIndex'>,\n): React.ReactElement {\n const {\n as = 'button',\n children,\n fontSize = 1,\n icon: IconComponent,\n onClick,\n padding = 3,\n popover,\n radius: radiusProp = 2,\n space = 3,\n text,\n tone = 'default',\n ...restProps\n } = props\n const menu = useMenu()\n const {scheme} = useRootTheme()\n const {\n activeElement,\n mount,\n onClickOutside,\n onEscape,\n onItemClick,\n onItemMouseEnter = menu.onMouseEnter,\n registerElement,\n } = menu\n const [rootElement, setRootElement] = useState<HTMLButtonElement | HTMLDivElement | null>(null)\n const [open, setOpen] = useState(false)\n const shouldFocusRef = useRef<'first' | 'last' | null>(null)\n const active = Boolean(activeElement) && activeElement === rootElement\n const [withinMenu, setWithinMenu] = useState(false)\n const radius = useMemo(() => _getArrayProp(radiusProp), [radiusProp])\n\n const handleMouseEnter = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n setWithinMenu(false)\n onItemMouseEnter(event)\n setOpen(true)\n },\n [onItemMouseEnter],\n )\n\n const handleMenuKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n event.stopPropagation()\n\n setOpen(false)\n\n requestAnimationFrame(() => {\n rootElement?.focus()\n })\n }\n },\n [rootElement],\n )\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (onClick) onClick(event)\n\n shouldFocusRef.current = 'first'\n\n setOpen(true)\n\n requestAnimationFrame(() => {\n shouldFocusRef.current = null\n })\n },\n [onClick],\n )\n\n const handleChildItemClick = useCallback(() => {\n setOpen(false)\n if (onItemClick) onItemClick()\n }, [onItemClick])\n\n const handleMenuMouseEnter = useCallback(() => setWithinMenu(true), [])\n\n // Register the menu item element\n useEffect(() => mount(rootElement), [mount, rootElement])\n\n // Close child menu when a sibling item becomes active\n useEffect(() => {\n if (!active) setOpen(false)\n }, [active])\n\n // Update state when child menu is no longer open\n useEffect(() => {\n if (!open) setWithinMenu(false)\n }, [open])\n\n const childMenu = (\n <Menu\n onClickOutside={onClickOutside}\n onEscape={onEscape}\n onItemClick={handleChildItemClick}\n onKeyDown={handleMenuKeyDown}\n onMouseEnter={handleMenuMouseEnter}\n registerElement={registerElement}\n shouldFocus={shouldFocusRef.current}\n >\n {children}\n </Menu>\n )\n\n const handleKeyDown = useCallback((event: React.KeyboardEvent<HTMLDivElement>) => {\n const target = event.currentTarget\n\n if (document.activeElement !== target) {\n return\n }\n\n if (event.key === 'ArrowRight') {\n shouldFocusRef.current = 'first'\n\n setOpen(true)\n setWithinMenu(true)\n\n requestAnimationFrame(() => {\n shouldFocusRef.current = null\n })\n\n return\n }\n }, [])\n\n return (\n <Popover {...popover} content={childMenu} data-ui=\"MenuGroup__popover\" open={open}>\n <Selectable\n data-as={as}\n data-ui=\"MenuGroup\"\n forwardedAs={as}\n {...restProps}\n aria-pressed={as === 'button' ? withinMenu : undefined}\n data-pressed={as !== 'button' ? withinMenu : undefined}\n data-selected={!withinMenu && active ? '' : undefined}\n $radius={radius}\n $tone={tone}\n $scheme={scheme}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n onMouseEnter={handleMouseEnter}\n ref={setRootElement}\n tabIndex={-1}\n type={as === 'button' ? 'button' : undefined}\n >\n <Flex gap={space} padding={padding}>\n {IconComponent && (\n <Text size={fontSize}>\n {isValidElement(IconComponent) && IconComponent}\n {isValidElementType(IconComponent) && <IconComponent />}\n </Text>\n )}\n\n <Box flex={1}>\n <Text size={fontSize} textOverflow=\"ellipsis\" weight=\"medium\">\n {text}\n </Text>\n </Box>\n\n <Text size={fontSize}>\n <ChevronRightIcon />\n </Text>\n </Flex>\n </Selectable>\n </Popover>\n )\n}\n","import {\n forwardRef,\n isValidElement,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {Box, Flex, Text} from '../../primitives'\nimport {Selectable} from '../../primitives/_selectable'\nimport {ResponsivePaddingProps, ResponsiveRadiusProps} from '../../primitives/types'\nimport {_getArrayProp} from '../../styles'\nimport {useRootTheme} from '../../theme'\nimport {SelectableTone} from '../../types/selectable'\nimport {Hotkeys} from '../hotkeys'\nimport {useMenu} from './useMenu'\n\n/**\n * @public\n */\nexport interface MenuItemProps extends ResponsivePaddingProps, ResponsiveRadiusProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n fontSize?: number | number[]\n hotkeys?: string[]\n icon?: React.ElementType | React.ReactNode\n iconRight?: React.ElementType | React.ReactNode\n pressed?: boolean\n selected?: boolean\n space?: number | number[]\n text?: React.ReactNode\n tone?: SelectableTone\n}\n\n/**\n * @public\n */\nexport const MenuItem = forwardRef(function MenuItem(\n props: MenuItemProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'selected' | 'tabIndex'>,\n forwardedRef: React.ForwardedRef<HTMLDivElement>,\n) {\n const {\n as = 'button',\n children,\n disabled,\n fontSize = 1,\n hotkeys,\n icon: IconComponent,\n iconRight: IconRightComponent,\n onClick,\n padding = 3,\n paddingX,\n paddingY,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n pressed,\n radius = 2,\n selected: selectedProp,\n space = 3,\n text,\n tone = 'default',\n ...restProps\n } = props\n const {scheme} = useRootTheme()\n const menu = useMenu()\n const {\n activeElement,\n mount,\n onItemClick,\n onItemMouseEnter = menu.onMouseEnter,\n onItemMouseLeave = menu.onMouseLeave,\n } = menu\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const active = Boolean(activeElement) && activeElement === rootElement\n const ref = useRef<HTMLDivElement | null>(null)\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n\n useEffect(() => mount(rootElement, selectedProp), [mount, rootElement, selectedProp])\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (disabled) return\n if (onClick) onClick(event)\n if (onItemClick) onItemClick()\n },\n [disabled, onClick, onItemClick],\n )\n\n const paddingProps = useMemo(\n () => ({\n padding,\n paddingX,\n paddingY,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n }),\n [padding, paddingX, paddingY, paddingTop, paddingRight, paddingBottom, paddingLeft],\n )\n\n const hotkeysFontSize = useMemo(() => _getArrayProp(fontSize).map((s) => s - 1), [fontSize])\n const $radius = useMemo(() => _getArrayProp(radius), [radius])\n const $padding = useMemo(() => _getArrayProp(0), [])\n\n const setRef = useCallback((el: HTMLDivElement | null) => {\n ref.current = el\n setRootElement(el)\n }, [])\n\n return (\n <Selectable\n data-ui=\"MenuItem\"\n {...restProps}\n aria-pressed={as === 'button' && pressed}\n data-pressed={as !== 'button' && pressed ? '' : undefined}\n data-selected={active ? '' : undefined}\n data-disabled={disabled ? '' : undefined}\n forwardedAs={as}\n $radius={$radius}\n $padding={$padding}\n $tone={disabled ? 'default' : tone}\n $scheme={scheme}\n disabled={disabled}\n onClick={handleClick}\n onMouseEnter={onItemMouseEnter}\n onMouseLeave={onItemMouseLeave}\n ref={setRef}\n role=\"menuitem\"\n tabIndex={-1}\n type={as === 'button' ? 'button' : undefined}\n >\n {(IconComponent || text || IconRightComponent) && (\n <Flex as=\"span\" gap={space} align=\"center\" {...paddingProps}>\n {IconComponent && (\n <Text size={fontSize}>\n {isValidElement(IconComponent) && IconComponent}\n {isValidElementType(IconComponent) && <IconComponent />}\n </Text>\n )}\n\n {text && (\n <Box flex={1}>\n <Text size={fontSize} textOverflow=\"ellipsis\" weight=\"medium\">\n {text}\n </Text>\n </Box>\n )}\n\n {hotkeys && (\n <Hotkeys\n fontSize={hotkeysFontSize}\n keys={hotkeys}\n style={{marginTop: -4, marginBottom: -4}}\n />\n )}\n\n {IconRightComponent && (\n <Text size={fontSize}>\n {isValidElement(IconRightComponent) && IconRightComponent}\n {isValidElementType(IconRightComponent) && <IconRightComponent />}\n </Text>\n )}\n </Flex>\n )}\n {children && (\n <Box as=\"span\" {...paddingProps}>\n {children}\n </Box>\n )}\n </Selectable>\n )\n})\n","import {css, keyframes} from 'styled-components'\n\nconst keyframe = keyframes`\n 0% {\n background-position: 100%;\n }\n 100% {\n background-position: -100%;\n }\n`\n\nconst animation = css`\n background-image: linear-gradient(\n to right,\n var(--card-skeleton-color-from),\n var(--card-skeleton-color-to),\n var(--card-skeleton-color-from),\n var(--card-skeleton-color-from),\n var(--card-skeleton-color-from)\n );\n background-position: 100%;\n background-size: 200% 100%;\n background-attachment: fixed;\n animation-name: ${keyframe};\n animation-timing-function: ease-in-out;\n animation-iteration-count: infinite;\n animation-duration: 2000ms;\n`\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const skeletonStyle = css<{$animated: boolean; $visible: boolean}>`\n opacity: ${({$visible}) => ($visible ? 1 : 0)};\n transition: opacity 200ms ease-in;\n\n @media screen and (prefers-reduced-motion: no-preference) {\n ${({$animated}) =>\n $animated\n ? animation\n : css`\n background-color: var(--card-skeleton-color-from);\n `}\n }\n\n @media screen and (prefers-reduced-motion: reduce) {\n background-color: var(--card-skeleton-color-from);\n }\n`\n","import {forwardRef, useEffect, useMemo, useState} from 'react'\nimport {styled} from 'styled-components'\nimport {Box} from '../../primitives'\nimport {BoxProps, ResponsiveRadiusProps} from '../../primitives'\nimport {_getArrayProp} from '../../styles'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/internal'\nimport {skeletonStyle} from './styles'\n\nconst Root = styled(Box)<{$animated: boolean; $visible: boolean} & ResponsiveRadiusStyleProps>(\n responsiveRadiusStyle,\n skeletonStyle,\n)\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface SkeletonProps extends ResponsiveRadiusProps, Omit<BoxProps, 'children'> {\n animated?: boolean\n delay?: number\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const Skeleton = forwardRef(function Skeleton(\n props: SkeletonProps & React.HTMLProps<HTMLDivElement>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {animated = false, delay, radius, ...restProps} = props\n const [visible, setVisible] = useState<boolean>(delay ? false : true)\n\n useEffect(() => {\n if (!delay) {\n return setVisible(true)\n }\n\n const timeout = setTimeout(() => {\n setVisible(true)\n }, delay)\n\n return () => {\n clearTimeout(timeout)\n }\n }, [delay])\n\n const $radius = useMemo(() => _getArrayProp(radius), [radius])\n\n return <Root {...restProps} $animated={animated} $radius={$radius} $visible={visible} ref={ref} />\n})\n","import {ThemeFontKey, getTheme_v2} from '@sanity/ui/theme'\nimport {forwardRef, useMemo} from 'react'\nimport {styled} from 'styled-components'\nimport {ThemeProps, _getArrayProp, _responsive} from '../../styles'\nimport {Skeleton, SkeletonProps} from './skeleton'\n\nconst Root = styled(Skeleton)<{$size: number[]; $style: ThemeFontKey}>((\n props: {\n $size: number[]\n $style: ThemeFontKey\n } & ThemeProps,\n) => {\n const {$size, $style} = props\n const {font, media} = getTheme_v2(props.theme)\n const fontStyle = font[$style]\n\n const styles = _responsive(media, $size, (sizeIndex) => {\n const fontSize = fontStyle.sizes[sizeIndex]\n const capHeight = fontSize.lineHeight - fontSize.ascenderHeight - fontSize.descenderHeight\n\n return {height: capHeight}\n })\n\n return styles\n})\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface TextSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface LabelSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface HeadingSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface CodeSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const TextSkeleton = forwardRef(function TextSkeleton(\n props: TextSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {size = 2, ...restProps} = props\n const $size = useMemo(() => _getArrayProp(size), [size])\n\n return <Root {...restProps} $size={$size} ref={ref} $style=\"text\" />\n})\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const LabelSkeleton = forwardRef(function TextSkeleton(\n props: LabelSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {size = 2, ...restProps} = props\n const $size = useMemo(() => _getArrayProp(size), [size])\n\n return <Root {...restProps} $size={$size} ref={ref} $style=\"label\" />\n})\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const HeadingSkeleton = forwardRef(function TextSkeleton(\n props: HeadingSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {size = 2, ...restProps} = props\n const $size = useMemo(() => _getArrayProp(size), [size])\n\n return <Root {...restProps} $size={$size} ref={ref} $style=\"heading\" />\n})\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const CodeSkeleton = forwardRef(function TextSkeleton(\n props: CodeSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {size = 2, ...restProps} = props\n const $size = useMemo(() => _getArrayProp(size), [size])\n\n return <Root {...restProps} $size={$size} ref={ref} $style=\"code\" />\n})\n","import {forwardRef, useCallback, useEffect, useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\nimport {Button} from '../../primitives'\nimport {ButtonTone} from '../../types'\n\n/**\n * @public\n */\nexport interface TabProps {\n /**\n * The `id` of the correlating `TabPanel` component.\n */\n 'aria-controls': string\n id: string\n icon?: React.ElementType | React.ReactNode\n focused?: boolean\n fontSize?: number | number[]\n label?: React.ReactNode\n padding?: number | number[]\n selected?: boolean\n tone?: ButtonTone\n}\n\nconst CustomButton = styled(Button)`\n max-width: 100%;\n`\n\n/**\n * @public\n */\nexport const Tab = forwardRef(function Tab(\n props: TabProps &\n Omit<\n React.HTMLProps<HTMLButtonElement>,\n 'aria-controls' | 'as' | 'id' | 'label' | 'type' | 'width'\n >,\n forwardedRef: React.ForwardedRef<HTMLButtonElement>,\n) {\n const {\n icon,\n id,\n focused,\n fontSize = 1,\n label,\n onClick,\n onFocus,\n padding = 2,\n selected,\n ...restProps\n } = props\n const ref = useRef<HTMLButtonElement | null>(null)\n const focusedRef = useRef(false)\n\n useImperativeHandle<HTMLButtonElement | null, HTMLButtonElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n const handleBlur = useCallback(() => {\n focusedRef.current = false\n }, [])\n\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n focusedRef.current = true\n if (onFocus) onFocus(event)\n },\n [onFocus],\n )\n\n useEffect(() => {\n if (focused && !focusedRef.current) {\n if (ref.current) ref.current.focus()\n focusedRef.current = true\n }\n }, [focused])\n\n return (\n <CustomButton\n data-ui=\"Tab\"\n {...restProps}\n aria-selected={selected ? 'true' : 'false'}\n fontSize={fontSize}\n icon={icon}\n id={id}\n mode=\"bleed\"\n onClick={onClick}\n onBlur={handleBlur}\n onFocus={handleFocus}\n padding={padding}\n ref={ref}\n role=\"tab\"\n selected={selected}\n tabIndex={selected ? 0 : -1}\n text={label}\n type=\"button\"\n />\n )\n})\n","import {cloneElement, forwardRef, useCallback, useMemo, useState} from 'react'\nimport {styled} from 'styled-components'\nimport {Inline, InlineProps} from '../../primitives'\n\n/**\n * @public\n */\nexport interface TabListProps extends Omit<InlineProps, 'as' | 'height'> {\n children: Array<React.ReactElement | null | undefined | false>\n}\n\nfunction _isReactElement(node: unknown): node is React.ReactElement {\n return Boolean(node)\n}\n\n//Limits the width of tabs in tablist\nconst CustomInline = styled(Inline)`\n & > div {\n display: inline-block;\n vertical-align: middle;\n max-width: 100%;\n box-sizing: border-box;\n }\n`\n\n/**\n * @public\n */\nexport const TabList = forwardRef(function TabList(\n props: TabListProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height'>,\n ref,\n) {\n const {children: childrenProp, ...restProps} = props\n const [focusedIndex, setFocusedIndex] = useState(-1)\n\n const children = useMemo(() => childrenProp.filter(_isReactElement), [childrenProp])\n\n const tabs = children.map((child, childIndex) =>\n cloneElement(child, {\n focused: focusedIndex === childIndex,\n key: childIndex,\n onFocus: () => handleTabFocus(childIndex),\n }),\n )\n\n const numTabs = tabs.length\n\n const handleTabFocus = useCallback((tabIdx: number) => {\n setFocusedIndex(tabIdx)\n }, [])\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n setFocusedIndex((prevIndex) => (prevIndex + numTabs - 1) % numTabs)\n }\n\n if (event.key === 'ArrowRight') {\n setFocusedIndex((prevIndex) => (prevIndex + 1) % numTabs)\n }\n },\n [numTabs],\n )\n\n return (\n <CustomInline\n data-ui=\"TabList\"\n {...restProps}\n onKeyDown={handleKeyDown}\n ref={ref}\n role=\"tablist\"\n >\n {tabs}\n </CustomInline>\n )\n})\n","import {forwardRef} from 'react'\nimport {Box, BoxProps} from '../../primitives'\n\n/**\n * @public\n */\nexport interface TabPanelProps extends BoxProps {\n /**\n * The `id` of the correlating `Tab` component.\n */\n 'aria-labelledby': string\n id: string\n}\n\n/**\n * @public\n */\nexport const TabPanel = forwardRef(function TabPanel(\n props: TabPanelProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'aria-labelledby' | 'id' | 'role'>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {flex, ...restProps} = props\n\n return (\n <Box\n data-ui=\"TabPanel\"\n {...restProps}\n flex={flex}\n ref={ref}\n role=\"tabpanel\"\n tabIndex={props.tabIndex === undefined ? 0 : props.tabIndex}\n >\n {props.children}\n </Box>\n )\n})\n","import {CloseIcon} from '@sanity/icons'\nimport {ThemeColorToneKey} from '@sanity/ui/theme'\nimport {styled} from 'styled-components'\nimport {POPOVER_MOTION_CONTENT_OPACITY_PROPERTY} from '../../constants'\nimport {Box, Button, Card, Flex, Stack, Text} from '../../primitives'\nimport type {ButtonTone} from '../../types'\n\n/**\n * @public\n */\nexport interface ToastProps {\n closable?: boolean\n description?: React.ReactNode\n onClose?: () => void\n radius?: number | number[]\n title?: React.ReactNode\n status?: 'error' | 'warning' | 'success' | 'info'\n}\n\nconst STATUS_CARD_TONE: {[key: string]: ThemeColorToneKey} = {\n error: 'critical',\n warning: 'caution',\n success: 'positive',\n info: 'primary',\n} as const\n\nconst BUTTON_TONE = {\n error: 'critical',\n warning: 'caution',\n success: 'positive',\n info: 'primary',\n} satisfies {[key: string]: ButtonTone}\n\nconst ROLES = {\n error: 'alert',\n warning: 'alert',\n success: 'alert',\n info: 'alert',\n} as const\n\nconst Root = styled(Card)`\n pointer-events: all;\n & > * {\n opacity: var(${POPOVER_MOTION_CONTENT_OPACITY_PROPERTY}, 1);\n will-change: opacity;\n }\n`\n\nconst TextBox = styled(Flex)`\n overflow-x: auto;\n`\n\n/**\n * The `Toast` component gives feedback to users when an action has taken place.\n *\n * Toasts can be closed with a close button, or auto-dismiss after a certain timeout.\n *\n * @public\n */\nexport function Toast(\n props: ToastProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'title'>,\n): React.ReactElement {\n const {closable, description, onClose, radius = 3, title, status, ...restProps} = props\n const cardTone = status ? STATUS_CARD_TONE[status] : 'default'\n const buttonTone = status ? BUTTON_TONE[status] : 'default'\n const role = status ? ROLES[status] : 'status'\n\n return (\n <Root\n data-ui=\"Toast\"\n role={role}\n {...restProps}\n marginTop={3}\n radius={radius}\n shadow={2}\n tone={cardTone}\n >\n <Flex align=\"flex-start\">\n <TextBox flex={1} padding={3}>\n <Stack space={3}>\n {title && (\n <Text size={1} weight=\"medium\">\n {title}\n </Text>\n )}\n {description && (\n <Text muted size={1}>\n {description}\n </Text>\n )}\n </Stack>\n </TextBox>\n\n {closable && (\n <Box padding={1}>\n <Button\n as=\"button\"\n icon={CloseIcon}\n mode=\"bleed\"\n padding={2}\n tone={buttonTone}\n onClick={onClose}\n style={{verticalAlign: 'top'}}\n />\n </Box>\n )}\n </Flex>\n </Root>\n )\n}\n","import {useSyncExternalStore} from 'react'\n\n/**\n * Some components should only render after mounting to the DOM, and not be rendered at all during SSR renderToString or equivalent.\n * @public\n */\nexport function useMounted(): boolean {\n return useSyncExternalStore(\n subscribe,\n () => true,\n () => false,\n )\n}\n\nconst subscribe = () => () => {}\n","import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'\nimport {ToastContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/toast')\n\nexport const ToastContext = createGlobalScopedContext<ToastContextValue | null>(key, null)\n","import {AnimatePresence, motion, type Variants} from 'framer-motion'\nimport {useMemo, useRef, useState, startTransition, useEffect} from 'react'\nimport {styled} from 'styled-components'\nimport {POPOVER_MOTION_CONTENT_OPACITY_PROPERTY} from '../../constants'\nimport {useMounted} from '../../hooks/useMounted'\nimport {usePrefersReducedMotion} from '../../hooks/usePrefersReducedMotion'\nimport {Box} from '../../primitives'\nimport {Layer} from '../../utils'\nimport {Toast} from './toast'\nimport {ToastContext} from './toastContext'\nimport {ToastContextValue, ToastParams} from './types'\n\ntype ToastState = {\n dismiss: () => void\n id: string\n params: ToastParams\n}[]\n\n/**\n * @public\n */\nexport interface ToastProviderProps {\n children?: React.ReactNode\n padding?: number | number[]\n paddingX?: number | number[]\n paddingY?: number | number[]\n zOffset?: number | number[]\n}\n\nconst Root = styled(Layer)`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n pointer-events: none;\n`\n\nconst ToastContainer = styled.div`\n box-sizing: border-box;\n position: absolute;\n right: 0;\n bottom: 0;\n max-width: 420px;\n width: 100%;\n`\n\nlet toastId = 0\n\n/**\n * @public\n */\nexport function ToastProvider(props: ToastProviderProps): React.ReactElement {\n const {children, padding = 4, paddingX, paddingY, zOffset} = props\n const [state, _setState] = useState<ToastState>([])\n const toastsRef = useRef<{[key: string]: {timeoutId: NodeJS.Timeout}}>({})\n const mounted = useMounted()\n const prefersReducedMotion = usePrefersReducedMotion()\n const variants = useMemo<Variants>(\n () => ({\n initial: {\n opacity: 0,\n [POPOVER_MOTION_CONTENT_OPACITY_PROPERTY as string]: 0,\n y: 32,\n scale: 0.25,\n willChange: 'transform',\n },\n animate: {\n opacity: [0, 1, 1],\n [POPOVER_MOTION_CONTENT_OPACITY_PROPERTY as string]: [0, 0, 1],\n y: 0,\n scale: 1,\n },\n exit: {\n opacity: [1, 1, 0],\n [POPOVER_MOTION_CONTENT_OPACITY_PROPERTY as string]: [1, 0, 0],\n scale: 0.5,\n transition: prefersReducedMotion ? {duration: 0} : {duration: 0.2},\n },\n }),\n [prefersReducedMotion],\n )\n\n const value: ToastContextValue = useMemo(() => {\n const push = (params: ToastParams) => {\n // Wrap setState in startTransition to allow React to give input state updates higher priority\n const setState: typeof _setState = (state) => startTransition(() => _setState(state))\n\n const id = params.id || String(toastId++)\n const duration = params.duration || 5000\n\n const dismiss = () => {\n const timeoutId = toastsRef.current[id]?.timeoutId\n\n setState((prevState): ToastState => {\n const idx = prevState.findIndex((t) => t.id === id)\n\n if (idx > -1) {\n const toasts = prevState.slice(0)\n\n toasts.splice(idx, 1)\n\n return toasts\n }\n\n return prevState\n })\n\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId)\n delete toastsRef.current[id]\n }\n }\n\n setState((prevState): ToastState => {\n return prevState\n .filter((t) => t.id !== id)\n .concat([\n {\n dismiss,\n id,\n params: {...params, duration},\n },\n ])\n })\n\n if (toastsRef.current[id]) {\n clearTimeout(toastsRef.current[id].timeoutId)\n delete toastsRef.current[id]\n }\n\n toastsRef.current[id] = {timeoutId: setTimeout(dismiss, duration)}\n\n return id\n }\n\n return {version: 0.0, push}\n }, [])\n\n // clear timeouts on unmount\n useEffect(\n () => () => {\n for (const {timeoutId} of Object.values(toastsRef.current)) {\n clearTimeout(timeoutId)\n }\n\n toastsRef.current = {}\n },\n [],\n )\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n {mounted && (\n <Root data-ui=\"ToastProvider\" zOffset={zOffset}>\n <ToastContainer>\n <Box padding={padding} paddingX={paddingX} paddingY={paddingY}>\n <AnimatePresence initial={false}>\n {state.map(({dismiss, id, params}) => (\n <motion.div\n key={id}\n layout=\"position\"\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n variants={variants}\n transition={\n prefersReducedMotion\n ? {duration: 0}\n : {type: 'spring', damping: 30, stiffness: 400}\n }\n >\n <Toast\n closable={params.closable}\n description={params.description}\n onClose={dismiss}\n status={params.status}\n title={params.title}\n />\n </motion.div>\n ))}\n </AnimatePresence>\n </Box>\n </ToastContainer>\n </Root>\n )}\n </ToastContext.Provider>\n )\n}\n","import {useContext} from 'react'\nimport {isRecord} from '../../lib/isRecord'\nimport {ToastContext} from './toastContext'\nimport {ToastContextValue} from './types'\n\n/**\n * @public\n */\nexport function useToast(): ToastContextValue {\n const value = useContext(ToastContext)\n\n if (!value) {\n throw new Error('useToast(): missing context value')\n }\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (!isRecord(value) || value.version !== 0.0) {\n throw new Error('useToast(): the context value is not compatible')\n }\n\n return value\n}\n","import {TreeState} from './types'\n\nexport function _findPrevItemElement(\n state: TreeState,\n itemElements: HTMLElement[],\n focusedElement: HTMLElement,\n): HTMLElement | null {\n const idx = itemElements.indexOf(focusedElement)\n const els = itemElements.slice(0, idx)\n const len = els.length\n\n for (let i = len - 1; i >= 0; i -= 1) {\n const itemKey = els[i].getAttribute('data-tree-key')\n\n if (!itemKey) {\n continue\n }\n\n const segments = itemKey.split('/')\n\n segments.pop()\n\n const p: string[] = []\n\n let expanded = true\n\n for (let j = 0; j < segments.length; j += 1) {\n p.push(segments[j])\n\n const k = p.join('/')\n\n if (!state[k]?.expanded) {\n expanded = false\n break\n }\n }\n\n if (expanded) {\n return els[i]\n }\n }\n\n return null\n}\n\nexport function _findNextItemElement(\n state: TreeState,\n itemElements: HTMLElement[],\n focusedElement: HTMLElement,\n): HTMLElement | null {\n const idx = itemElements.indexOf(focusedElement)\n const els = itemElements.slice(idx)\n const len = itemElements.length\n\n for (let i = 1; i < len; i += 1) {\n if (!els[i]) {\n continue\n }\n\n const itemKey = els[i].getAttribute('data-tree-key')\n\n if (!itemKey) {\n continue\n }\n\n const segments = itemKey.split('/')\n\n segments.pop()\n\n const p: string[] = []\n\n let expanded = true\n\n for (let j = 0; j < segments.length; j += 1) {\n p.push(segments[j])\n\n const k = p.join('/')\n\n if (!state[k]?.expanded) {\n expanded = false\n break\n }\n }\n\n if (expanded) {\n return els[i]\n }\n }\n\n return null\n}\n\nexport function _focusItemElement(el: HTMLElement): void {\n if (el.getAttribute('role') === 'treeitem') {\n el.focus()\n }\n\n if (el.getAttribute('role') === 'none') {\n const firstChild = el.firstChild\n\n if (firstChild && firstChild instanceof HTMLElement) {\n firstChild.focus()\n }\n }\n}\n","import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'\nimport {TreeContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/tree')\n\n/**\n * @internal\n */\nexport const TreeContext = createGlobalScopedContext<TreeContextValue | null>(key, null)\n","import {\n forwardRef,\n memo,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {Stack} from '../../primitives'\nimport {_findNextItemElement, _findPrevItemElement, _focusItemElement} from './helpers'\nimport {TreeContext} from './treeContext'\nimport {TreeContextValue, TreeState} from './types'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface TreeProps {\n space?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const Tree = memo(\n forwardRef(function Tree(\n props: TreeProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'align' | 'as' | 'height' | 'ref' | 'role' | 'wrap'>,\n forwardedRef: React.ForwardedRef<HTMLDivElement>,\n ): React.ReactElement {\n const {children, space = 1, onFocus, ...restProps} = props\n const ref = useRef<HTMLDivElement | null>(null)\n const [focusedElement, setFocusedElement] = useState<HTMLElement | null>(null)\n const focusedElementRef = useRef(focusedElement)\n const path: string[] = useMemo(() => [], [])\n const [itemElements, setItemElements] = useState<HTMLElement[]>([])\n const [state, setState] = useState<TreeState>({})\n const stateRef = useRef(state)\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useEffect(() => {\n focusedElementRef.current = focusedElement\n }, [focusedElement])\n\n useEffect(() => {\n stateRef.current = state\n }, [state])\n\n const registerItem = useCallback(\n (element: HTMLElement, path: string, expanded: boolean, selected: boolean) => {\n setState((s) => ({...s, [path]: {element, expanded}}))\n\n if (selected) {\n setFocusedElement(element)\n }\n\n return () => {\n setState((s) => {\n const newState = {...s}\n\n delete newState[path]\n\n return newState\n })\n }\n },\n [],\n )\n\n const setExpanded = useCallback((path: string, expanded: boolean) => {\n setState((s) => {\n const itemState = s[path]\n\n if (!itemState) return s\n\n return {...s, [path]: {...itemState, expanded}}\n })\n }, [])\n\n const contextValue: TreeContextValue = useMemo(\n () => ({\n version: 0.0,\n focusedElement: focusedElement || itemElements[0] || null,\n level: 0,\n path,\n registerItem,\n setExpanded,\n setFocusedElement,\n space,\n state,\n }),\n [focusedElement, itemElements, path, registerItem, setExpanded, space, state],\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!focusedElementRef.current) return\n\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n\n const nextEl = _findNextItemElement(\n stateRef.current,\n itemElements,\n focusedElementRef.current,\n )\n\n if (nextEl) {\n _focusItemElement(nextEl)\n setFocusedElement(nextEl)\n }\n\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n\n const prevEl = _findPrevItemElement(\n stateRef.current,\n itemElements,\n focusedElementRef.current,\n )\n\n if (prevEl) {\n _focusItemElement(prevEl)\n setFocusedElement(prevEl)\n }\n\n return\n }\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault()\n\n const itemKey = focusedElementRef.current.getAttribute('data-tree-key')\n\n if (!itemKey) return\n\n const itemState = stateRef.current[itemKey]\n\n if (!itemState) return\n\n if (itemState.expanded) {\n setState((s) => {\n const itemState = s[itemKey]\n\n if (!itemState) return s\n\n return {...s, [itemKey]: {...itemState, expanded: false}}\n })\n } else {\n const itemPath = itemKey.split('/')\n\n itemPath.pop()\n\n const parentKey = itemPath.join('/')\n const parentState = parentKey && stateRef.current[parentKey]\n\n if (parentState) {\n parentState.element.focus()\n setFocusedElement(parentState.element)\n }\n }\n\n return\n }\n\n if (event.key === 'ArrowRight') {\n event.preventDefault()\n\n const focusedKey = focusedElementRef.current.getAttribute('data-tree-key')\n\n if (!focusedKey) return\n\n if (!stateRef.current[focusedKey]?.expanded) {\n setState((s) => {\n const itemState = s[focusedKey]\n\n if (!itemState) return s\n\n return {...s, [focusedKey]: {...itemState, expanded: true}}\n })\n }\n\n return\n }\n },\n [itemElements],\n )\n\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n setFocusedElement(event.target)\n\n // Call the element's `focus` handler\n onFocus?.(event)\n },\n [onFocus],\n )\n\n useEffect(() => {\n if (!ref.current) return\n const _itemElements = Array.from(\n ref.current.querySelectorAll('[data-ui=\"TreeItem\"]'),\n ) as HTMLElement[]\n\n setItemElements(_itemElements)\n }, [children])\n\n return (\n <TreeContext.Provider value={contextValue}>\n <Stack\n as=\"ul\"\n data-ui=\"Tree\"\n {...restProps}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n ref={ref}\n role=\"tree\"\n space={space}\n >\n {children}\n </Stack>\n </TreeContext.Provider>\n )\n }),\n)\n\nTree.displayName = 'Tree'\n","import {getTheme_v2} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\nimport {rem, ThemeProps} from '../../styles'\nimport {_cardColorStyle} from '../../styles/card'\n\nexport function treeItemRootStyle(): ReturnType<typeof css> {\n return css`\n &[role='none'] > [role='treeitem'] {\n outline: none;\n cursor: default;\n border-radius: 3px;\n\n background-color: var(--card-bg-color);\n color: var(--treeitem-fg-color);\n\n &:focus {\n position: relative;\n }\n }\n\n &[role='treeitem'] {\n outline: none;\n\n & > div {\n cursor: default;\n border-radius: 3px;\n\n background-color: var(--card-bg-color);\n color: var(--treeitem-fg-color);\n }\n\n &:focus > div {\n position: relative;\n }\n }\n `\n}\n\nexport function treeItemRootColorStyle(props: ThemeProps): ReturnType<typeof css> {\n const $tone = 'default'\n const {color} = getTheme_v2(props.theme)\n const tone = color.selectable[$tone]\n\n return css`\n &[role='none'] {\n & > [role='treeitem'] {\n ${_cardColorStyle(color, tone.enabled)}\n }\n\n &[data-selected] > [role='treeitem'] {\n ${_cardColorStyle(color, tone.pressed)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) > [role='treeitem']:not(:focus):hover {\n ${_cardColorStyle(color, tone.hovered)}\n }\n\n & > [role='treeitem']:focus {\n ${_cardColorStyle(color, tone.selected)}\n }\n }\n }\n\n &[role='treeitem'] {\n & > [data-ui='TreeItem__box'] {\n ${_cardColorStyle(color, tone.enabled)}\n }\n\n &[data-selected] > [data-ui='TreeItem__box'] {\n ${_cardColorStyle(color, tone.pressed)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]):not(:focus) > [data-ui='TreeItem__box']:hover {\n ${_cardColorStyle(color, tone.hovered)}\n }\n\n &:focus > [data-ui='TreeItem__box'] {\n ${_cardColorStyle(color, tone.selected)}\n }\n }\n }\n `\n}\n\nexport interface TreeItemBoxStyleProps {\n $level: number\n}\n\nexport function treeItemBoxStyle(\n props: TreeItemBoxStyleProps & ThemeProps,\n): ReturnType<typeof css> {\n const {$level} = props\n const {space} = getTheme_v2(props.theme)\n\n return css`\n padding-left: ${rem(space[2] * $level)};\n\n &[data-as='a'] {\n text-decoration: none;\n }\n `\n}\n","import {useContext} from 'react'\nimport {TreeContext} from './treeContext'\nimport {TreeContextValue} from './types'\n\n/**\n * @beta\n */\nexport function useTree(): TreeContextValue {\n const tree = useContext(TreeContext)\n\n if (!tree) {\n throw new Error('Tree: missing context value')\n }\n\n return tree\n}\n","import {memo} from 'react'\nimport {Stack} from '../../primitives'\nimport {useTree} from './useTree'\n\nexport interface TreeGroupProps {\n expanded?: boolean\n}\n\nexport const TreeGroup = memo(function TreeGroup(\n props: TreeGroupProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'role' | 'wrap'>,\n): React.ReactElement {\n const {children, expanded = false, ...restProps} = props\n const tree = useTree()\n\n return (\n <Stack\n as=\"ul\"\n data-ui=\"TreeGroup\"\n {...restProps}\n hidden={!expanded}\n marginTop={tree.space}\n role=\"group\"\n space={tree.space}\n >\n {children}\n </Stack>\n )\n})\n","import {ToggleArrowRightIcon} from '@sanity/icons'\nimport {ThemeFontWeightKey} from '@sanity/ui/theme'\nimport {memo, useCallback, useEffect, useId, useMemo, useRef} from 'react'\nimport {styled} from 'styled-components'\nimport {Box, BoxProps, Flex, Text} from '../../primitives'\nimport {\n treeItemRootStyle,\n treeItemRootColorStyle,\n treeItemBoxStyle,\n TreeItemBoxStyleProps,\n} from './style'\nimport {TreeContext} from './treeContext'\nimport {TreeGroup} from './treeGroup'\nimport {useTree} from './useTree'\n\n/**\n * @beta\n */\nexport interface TreeItemProps {\n expanded?: boolean\n fontSize?: number | number[]\n icon?: React.ElementType\n /**\n * Allows passing a custom element type to the link component\n */\n linkAs?: BoxProps['as']\n padding?: number | number[]\n space?: number | number[]\n text?: React.ReactNode\n weight?: ThemeFontWeightKey\n}\n\nconst Root = memo(styled.li(treeItemRootStyle, treeItemRootColorStyle))\n\nconst TreeItemBox = styled(Box).attrs({forwardedAs: 'a'})<TreeItemBoxStyleProps>(treeItemBoxStyle)\n\nconst ToggleArrowText = styled(Text)`\n & > svg {\n transition: transform 100ms;\n }\n`\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const TreeItem = memo(function TreeItem(\n props: TreeItemProps & Omit<React.HTMLProps<HTMLLIElement>, 'as' | 'ref' | 'role'>,\n): React.ReactElement {\n const {\n children,\n expanded: expandedProp = false,\n fontSize = 1,\n href,\n icon: IconComponent,\n id: idProp,\n linkAs,\n muted,\n onClick,\n padding = 2,\n selected = false,\n space = 2,\n text,\n weight,\n ...restProps\n } = props\n const rootRef = useRef<HTMLLIElement | null>(null)\n const treeitemRef = useRef<HTMLDivElement | null>(null)\n const tree = useTree()\n const {path, registerItem, setExpanded, setFocusedElement} = tree\n const _id = useId()\n const id = idProp || _id\n const itemPath = useMemo(() => path.concat([id || '']), [id, path])\n const itemKey = itemPath.join('/')\n const itemState = tree.state[itemKey]\n const focused = tree.focusedElement === rootRef.current\n const expanded = itemState?.expanded === undefined ? expandedProp : itemState?.expanded || false\n const tabIndex = tree.focusedElement && tree.focusedElement === rootRef.current ? 0 : -1\n const contextValue = useMemo(\n () => ({...tree, level: tree.level + 1, path: itemPath}),\n [itemPath, tree],\n )\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLLIElement>) => {\n if (onClick) onClick(event)\n\n const target = event.target\n\n if (\n target instanceof HTMLElement &&\n (target.getAttribute('data-ui') === 'TreeItem' ||\n target.closest('[data-ui=\"TreeItem__box\"]'))\n ) {\n event.stopPropagation()\n setExpanded(itemKey, !expanded)\n setFocusedElement(rootRef.current)\n }\n },\n [expanded, itemKey, onClick, setExpanded, setFocusedElement],\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLElement>) => {\n if (focused && event.key === 'Enter') {\n const el = treeitemRef.current || rootRef.current\n\n el?.click()\n }\n },\n [focused],\n )\n\n useEffect(() => {\n if (!rootRef.current) return\n\n return registerItem(rootRef.current, itemPath.join('/'), expanded, selected)\n }, [expanded, itemPath, registerItem, selected])\n\n const content = (\n <Flex padding={padding}>\n <Box\n marginRight={space}\n style={{\n visibility: IconComponent || children ? 'visible' : 'hidden',\n pointerEvents: 'none',\n }}\n >\n {IconComponent && (\n <Text muted={muted} size={fontSize} weight={weight}>\n <IconComponent />\n </Text>\n )}\n {!IconComponent && (\n <ToggleArrowText muted={muted} size={fontSize} weight={weight}>\n <ToggleArrowRightIcon style={{transform: expanded ? 'rotate(90deg)' : undefined}} />\n </ToggleArrowText>\n )}\n </Box>\n <Box flex={1}>\n <Text muted={muted} size={fontSize} textOverflow=\"ellipsis\" weight={weight}>\n {text}\n </Text>\n </Box>\n </Flex>\n )\n\n if (href) {\n return (\n <Root\n data-selected={selected ? '' : undefined}\n data-tree-id={id}\n data-tree-key={itemKey}\n data-ui=\"TreeItem\"\n {...restProps}\n onClick={handleClick}\n ref={rootRef}\n role=\"none\"\n >\n <TreeItemBox\n $level={tree.level}\n aria-expanded={expanded}\n as={linkAs}\n data-ui=\"TreeItem__box\"\n href={href}\n ref={treeitemRef}\n role=\"treeitem\"\n tabIndex={tabIndex}\n >\n {content}\n </TreeItemBox>\n\n <TreeContext.Provider value={contextValue}>\n {children && <TreeGroup hidden={!expanded}>{children}</TreeGroup>}\n </TreeContext.Provider>\n </Root>\n )\n }\n\n return (\n <Root\n data-selected={selected ? '' : undefined}\n data-ui=\"TreeItem\"\n data-tree-id={id}\n data-tree-key={itemKey}\n {...restProps}\n aria-expanded={expanded}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n ref={rootRef}\n role=\"treeitem\"\n tabIndex={tabIndex}\n >\n <TreeItemBox $level={tree.level} as=\"div\" data-ui=\"TreeItem__box\">\n {content}\n </TreeItemBox>\n\n <TreeContext.Provider value={contextValue}>\n {children && <TreeGroup expanded={expanded}>{children}</TreeGroup>}\n </TreeContext.Provider>\n </Root>\n )\n})\n"],"names":["createColorTheme","_createColorTheme","hexToRgb","_hexToRgb","hslToRgb","_hslToRgb","multiply","_multiply","parseColor","_parseColor","rgbToHex","_rgbToHex","rgbToHsl","_rgbToHsl","rgba","_rgba","screen","_screen","studioTheme","buildTheme","EMPTY_ARRAY","EMPTY_RECORD","POPOVER_MOTION_CONTENT_OPACITY_PROPERTY","POPOVER_MOTION_PROPS","initial","opacity","scale","willChange","animate","exit","transition","duration","type","_fillCSSObject","keys","value","reduce","style","key","rem","pixelValue","_responsive","media","values","callback","map","statement","mediaIndex","_getArrayProp","val","defaultVal","undefined","Array","isArray","_getResponsiveSpace","theme","props","spaceIndexes","Error","length","space","getTheme_v2","spaceIndex","responsiveFont","fontKey","$size","$weight","font","family","sizes","weights","fontWeight","regular","defaultSize","base","position","fontFamily","padding","margin","content","display","height","warned","console","warn","resp","sizeIndex","fontSize","size","ascenderHeight","descenderHeight","iconSize","letterSpacing","lineHeight","negHeight","capHeight","iconOffset","customIconSize","Math","floor","customIconOffset","transform","marginTop","marginBottom","responsiveCodeFontStyle","responsiveHeadingFont","responsiveLabelFont","responsiveTextAlignStyle","$align","textAlign","responsiveTextFont","getGlobalScope","globalThis","window","self","global","globalScope","createGlobalScopedContext","defaultValue","document","createContext","Symbol","for","ThemeContext","ThemeProvider","parentTheme","useContext","children","rootTheme","tone","scheme","themeContext","useMemo","version","getScopedTheme","StyledThemeProvider","useRootTheme","ThemeColorProvider","$","_c","root","t0","t1","useTheme","useStyledTheme","useTheme_v2","responsiveBorderStyle","border","borderTop","borderRight","borderBottom","borderLeft","card","borderStyle","width","$border","$borderTop","$borderRight","$borderBottom","$borderLeft","BASE_STYLE","listStyle","BOX_SIZING","BOX_HEIGHT","stretch","fill","boxStyle","responsiveBoxStyle","responsiveBoxSizingStyle","responsiveBoxHeightStyle","responsiveBoxOverflowStyle","responsiveBoxDisplayStyle","$display","$sizing","sizing","boxSizing","$height","$overflow","overflow","responsiveFlexStyle","responsiveFlexAlignStyle","responsiveFlexGapStyle","responsiveFlexWrapStyle","responsiveFlexJustifyStyle","responsiveFlexDirectionStyle","align","alignItems","$gap","gap","$wrap","wrap","flexWrap","$justify","justify","justifyContent","$direction","direction","flexDirection","minWidth","minHeight","flexItemStyle","responsiveFlexItemStyle","$flex","flex","focusRingBorderStyle","color","focusRingStyle","opts","focusRing","focusRingOutsetWidth","offset","focusRingInsetWidth","bgColor","bg","filter","Boolean","join","GRID_CSS","GRID_AUTO_COLUMS","auto","min","max","fr","GRID_AUTO_ROWS","responsiveGridStyle","responsiveGridAutoFlowStyle","responsiveGridAutoRowsStyle","responsiveGridAutoColsStyle","responsiveGridColumnsStyle","responsiveGridRowsStyle","responsiveGridGapStyle","responsiveGridGapXStyle","responsiveGridGapYStyle","$autoFlow","autoFlow","gridAutoFlow","$autoRows","autoRows","gridAutoRows","$autoCols","autoCols","gridAutoColumns","$columns","columns","gridTemplateColumns","$rows","rows","gridTemplateRows","gridGap","$gapX","gapX","columnGap","$gapY","gapY","rowGap","responsiveGridItemStyle","responsiveGridItemRowStyle","responsiveGridItemRowStartStyle","responsiveGridItemRowEndStyle","responsiveGridItemColumnStyle","responsiveGridItemColumnStartStyle","responsiveGridItemColumnEndStyle","GRID_ITEM_ROW","full","GRID_ITEM_COLUMN","$row","row","gridRow","$rowStart","rowStart","gridRowStart","$rowEnd","rowEnd","gridRowEnd","$column","column","gridColumn","$columnStart","columnStart","gridColumnStart","$columnEnd","columnEnd","gridColumnEnd","responsiveInputPaddingStyle","$fontSize","$iconLeft","$iconRight","$padding","$space","len","_padding","_space","_fontSize","i","_","text","emSize","p","s","styles","paddingTop","paddingRight","paddingBottom","paddingLeft","responsiveInputPaddingIconRightStyle","ROOT_STYLE","css","textInputRootStyle","textInputBaseStyle","$scheme","$tone","input","default","enabled","fg","placeholder","disabled","invalid","readOnly","textInputFontSizeStyle","textInputRepresentationStyle","$hasPrefix","$hasSuffix","$unstableDisableFocusRing","hovered","responsiveMarginStyle","$margin","$marginX","$marginY","$marginTop","$marginRight","$marginBottom","$marginLeft","responsivePaddingStyle","$paddingX","$paddingY","$paddingTop","$paddingRight","$paddingBottom","$paddingLeft","responsiveRadiusStyle","radius","$radius","borderRadius","toBoxShadow","shadow","shadowStyle","outlineWidth","outline","umbra","penumbra","ambient","boxShadow","responsiveShadowStyle","$shadow","index","labelBaseStyle","$accent","$muted","code","Root","styled","div","SpanWithTextOverflow","span","Label","forwardRef","ref","childrenProp","textOverflow","restProps","accent","weight","muted","t2","t3","t4","t5","t6","avatarStyle","avatarRootStyle","arrow","avatarArrowStyle","bgStroke","avatarBgStrokeStyle","stroke","avatarStrokeStyle","initials","avatarInitialsStyle","image","avatarImageStyle","zIndex","left","right","top","bottom","$color","avatar","backgroundColor","userSelect","WebkitFontSmoothing","appearance","responsiveAvatarSizeStyle","avatarSize","textTransform","strokeWidth","strokeDasharray","strokeLinecap","Arrow","BgStroke","ellipse","Stroke","Initials","InitialsLabel","Image","svg","Avatar","__unstable_hideInnerStroke","as","asProp","src","title","onImageLoadError","arrowPosition","arrowPositionProp","animateArrowFrom","status","sizeProp","isValidElementType","_sizeRem","_radius","elementId","useId","setArrowPosition","useState","imageFailed","setImageFailed","imageId","useEffect","raf","requestAnimationFrame","cancelAnimationFrame","handleImageError","useCallback","initialsSize","_responsiveAvatarCounterSizeStyle","_avatarCounterBaseStyle","AvatarCounter","count","BASE_STYLES","avatarStackStyle","responsiveAvatarStackSizeStyle","marginLeft","distance","AvatarStack","maxLength","maxLengthProp","Children","toArray","isValidElement","visibleCount","extraCount","visibleChildren","slice","child","childIndex","cloneElement","String","Box","marginX","marginY","marginRight","paddingX","paddingY","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","t31","t32","t33","t34","t35","t36","t37","t38","t39","t40","t41","t42","t43","t44","t45","t46","t47","t48","t49","t50","t51","t52","t53","t54","t55","textBaseStyle","bold","Text","badgeStyle","cursor","verticalAlign","Badge","mode","_deprecated_mode","Flex","rotate","keyframes","Spinner","_cardColorStyle","checkered","backdrop","gray","blue","purple","magenta","red","orange","yellow","green","cyan","badge","dot","icon","primary","positive","caution","critical","kbd","link","skeleton","from","to","buttonBaseStyles","$width","button","combineBoxShadow","boxShadows","buttonColorStyles","$mode","baseColor","defaultBoxShadow","pressed","LoadingBox","Button","paddingXProp","paddingYProp","paddingTopProp","paddingBottomProp","paddingLeftProp","paddingRightProp","loading","selected","IconComponent","IconRightComponent","iconRight","justifyProp","paddingProp","radiusProp","spaceProp","boxProps","textWeight","cardStyle","cardBaseStyle","cardColorStyle","$checkered","$focusRing","_dark","selectable","Card","__unstable_checkered","__unstable_focusRing","toneProp","useArrayProp","_getElements","element","elementsArg","ret","el","push","useClickOutside","listener","boundaryElement","setElement","elements","setElements","elementsRef","useRef","prevElements","current","nextElements","includes","el_0","handleWindowMouseDown","evt","target","Node","contains","el_1","addEventListener","removeEventListener","resizeObservers","hasActiveObservations","some","ro","activeTargets","hasSkippedObservations","skippedTargets","msg","deliverResizeLoopError","event","ErrorEvent","message","createEvent","initEvent","dispatchEvent","ResizeObserverBoxOptions","freeze","obj","Object","ResizeObserverSize","inlineSize","blockSize","DOMRectReadOnly","x","y","prototype","toJSON","_a","fromRect","rectangle","isSVG","SVGElement","isHidden","getBBox","_b","offsetWidth","offsetHeight","getClientRects","isElement","Element","scope","ownerDocument","defaultView","isReplacedElement","tagName","cache","WeakMap","scrollRegexp","verticalRegexp","IE","test","navigator","userAgent","parseDimension","pixel","parseFloat","switchSizes","zeroBoxes","devicePixelContentBoxSize","borderBoxSize","contentBoxSize","contentRect","calculateBoxSizes","forceRecalculation","has","get","set","cs","getComputedStyle","ownerSVGElement","removePadding","writingMode","canScrollVertically","overflowY","canScrollHorizontally","overflowX","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","horizontalPadding","verticalPadding","horizontalBorderArea","verticalBorderArea","horizontalScrollbarThickness","clientHeight","verticalScrollbarThickness","clientWidth","widthReduction","heightReduction","contentWidth","contentHeight","borderBoxWidth","borderBoxHeight","boxes","round","devicePixelRatio","calculateBoxSize","observedBox","DEVICE_PIXEL_CONTENT_BOX","BORDER_BOX","ResizeObserverEntry","calculateDepthForNode","node","Infinity","depth","parent","parentNode","broadcastActiveObservations","shallowestDepth","callbacks","forEach","entries","ot","entry","targetDepth","lastReportedSize","call","observer","splice","_i","callbacks_1","gatherActiveObservationsAtDepth","observationTargets","isActive","process","trigger","notify","cb","queueMicroTask","toggle_1","createTextNode","config","characterData","MutationObserver","observe","textContent","concat","queueResizeObserver","watching","isWatching","CATCH_PERIOD","observerConfig","attributes","childList","subtree","events","time","timeout","Date","now","scheduled","Scheduler","_this","stopped","schedule","run","until","elementsHaveResized","start","stop","body","name","disconnect","scheduler","updateCount","n","skipNotifyOnElement","ResizeObservation","CONTENT_BOX","ResizeObserverDetail","resizeObserver","observerMap","getObservationIndex","ResizeObserverController","connect","detail","options","firstObservation","box","unobserve","lastObservation","indexOf","ResizeObserver","arguments","TypeError","toString","_ResizeObserver","ResizeObserverPolyfill","_elementSizeObserver","_createElementSizeObserver","_createElementRectValueListener","subscribe","subscriber","_contentRect","disposeCache","subscribersCache","subscribers","dispose","elementRect","sub","idx","useElementSize","setSize","useElementRect","elementSize","useGlobalKeyDown","onKeyDown","MEDIA_STORE_CACHE","_getMediaQuery","_createMediaStore","mediaLen","getSizes","mediaQuery","mq","matchMedia","getSnapshot","matches","onStoreChange","disposeFns","handleChange","disposeFn","getServerSnapshot","useMediaIndex","store","useSyncExternalStore","MEDIA_QUERY_CACHE","getMatchMedia","usePrefersDark","usePrefersReducedMotion","useForwardedRef","innerRef","useImperativeHandle","useCustomValidity","customValidity","setCustomValidity","checkboxBaseStyles","inputElementStyles","checkbox","Input","Checkbox","forwardedRef","indeterminate","checked","className","codeSyntaxHighlightingStyle","syntax","atrule","attrName","attrValue","attribute","boolean","builtin","cdata","char","class","comment","constant","deleted","doctype","entity","function","hexcode","id","important","inserted","keyword","number","operator","prolog","property","pseudoClass","pseudoElement","punctuation","regex","selector","string","symbol","tag","unit","url","variable","codeBaseStyle","pre","Code","languageProp","language","Refractor","hasLanguage","registered","containerBaseStyle","responsiveContainerWidthStyle","container","maxWidth","Container","Grid","headingBaseStyle","heading","Heading","inlineBaseStyle","inlineSpaceStyle","Inline","kbdStyle","KBD","origin","fn","middlewareData","placement","rects","side","split","floatingWidth","floating","floatingHeight","shiftX","shift","shiftY","isVerticalPlacement","originX","originY","clamp","data","num","moveTowardsLength","movingPoint","targetPoint","amount","sqrt","moveTowardsFractional","fraction","getRoundedCommands","points","cmds","point","prevPoint","nextPoint","curveStart","curveEnd","startControl","endControl","compileCommands","$w","w","StrokePath","path","ShapePath","h","center","strokePath","fillPath","BoundaryElementContext","BoundaryElementProvider","isRecord","DEFAULT_VALUE","useBoundaryElement","ConditionalWrapper","condition","wrapper","findMaxBreakpoints","findMinBreakpoints","ElementQuery","innerWidth","setRef","ErrorBoundary","Component","error","getDerivedStateFromError","componentDidCatch","info","onCatch","render","state","getLayerContext","contextValue","LayerContext","useLayer","err","_raf","frameId","_raf2","innerDispose","outerDispose","_isEnterToClickElement","isHTMLAnchorElement","isHTMLButtonElement","isHTMLElement","nodeType","ELEMENT_NODE","nodeName","isHTMLInputElement","isHTMLSelectElement","isHTMLTextAreaElement","containsOrEqualsElement","_hasFocus","activeElement","isFocusable","tabIndex","getAttribute","href","rel","attemptFocus","focus","focusFirstDescendant","childNodes","focusLastDescendant","_isScrollable","LayerProvider","zOffset","zOffsetProp","parentContextValue","parentRegisterChild","registerChild","level","maxMediaIndex","setChildLayers","isTopLayer","childLevel","parentDispose","prevLen","nextState","v","LayerChildren","onActivate","onFocus","lastFocusedRef","isTopLayerRef","rootElement","handleFocus","Layer","elementKey","defaultContextValue","createElement","setAttribute","appendChild","PortalContext","usePortal","Portal","__unstable_name","portal","portalElement","createPortal","useUnique","valueRef","_isEqual","objA","objB","keysA","keysB","every","PortalProvider","__unstable_elements","elementsProp","fallbackElement","emptySubscribe","SrOnly","ItemWrapper","VirtualList","renderItem","onChange","getItemKey","items","wrapperRef","scrollTop","setScrollTop","scrollHeight","setScrollHeight","itemHeight","setItemHeight","firstElement","firstChild","HTMLElement","_scrollEl","scrollEl","handleScroll","passive","handleScroll_0","scrollY","handleResize","innerHeight","fromIndex","toIndex","ceil","bb0","item","_itemIndex","itemIndex","wrapperStyle","DEFAULT_POPOVER_DISTANCE","DEFAULT_POPOVER_PADDING","DEFAULT_POPOVER_ARROW_WIDTH","DEFAULT_POPOVER_ARROW_HEIGHT","DEFAULT_POPOVER_ARROW_RADIUS","DEFAULT_POPOVER_MARGINS","DEFAULT_FALLBACK_PLACEMENTS","apply","margins","args","platform","reference","detectOverflow","altBoundary","boundary","elementContext","rootBoundary","maxHeight","floatingW","floatingH","availableWidth","availableHeight","referenceWidth","nextDimensions","getDimensions","targetH","targetW","reset","calcCurrentWidth","params","currentWidth","calcMaxWidth","boundaryWidth","MotionCard","motion","PopoverCard","memo","marginsProp","xProp","yProp","strategy","arrowX","arrowY","arrowRef","__unstable_margins","rootStyle","arrowStyle","displayName","Popover","layer","boundaryElementContext","_animate","arrowProp","childProp","constrainSize","fallbackPlacements","matchReferenceWidth","floatingBoundary","open","placementProp","preventOverflow","referenceBoundary","referenceElement","shadowProp","widthProp","popover","updateRef","boundarySize","widthArrayProp","widthRef","maxWidthRef","referenceWidthRef","floatingElement","middleware","flip","mainAxis","_currentWidth","_maxWidth","hide","refs","update","useFloating","whileElementsMounted","autoUpdate","referenceHidden","setArrow","arrowEl","setFloating","setReference","childRef","radioBaseStyle","inputElementStyle","dist","radio","markSize","Radio","inputBaseStyle","inputColorStyle","select","textSize","inputTextSizeStyle","inputStyle","iconBoxStyle","selectStyle","iconBox","IconBox","Select","stackBaseStyle","responsiveStackSpaceStyle","Stack","switchBaseStyles","switchInputStyles","switchRepresentationStyles","switch","switchTrackStyles","switchThumbStyles","$indeterminate","trackWidth","trackHeight","trackPadding","checkedOffset","indeterminateOffset","$checked","transitionDurationMs","transitionTimingFunction","Representation","Track","Thumb","Switch","InputRoot","textarea","Presentation","TextArea","CLEAR_BUTTON_BOX_STYLE","attrs","forwardedAs","Prefix","Suffix","LeftBox","RightBox","RightCard","TextInputClearButton","TextInput","clearButton","suffix","prefix","onClear","__unstable_disableFocusRing","fontSizeProp","$hasClearButton","$hasIcon","$hasIconRight","preventDefault","stopPropagation","handleClearMouseDown","event_0","handleClearClick","prefixNode","presentationNode","clearButtonBoxPadding","v_0","clearButtonPadding","clearButtonProps","CloseIcon","clearButtonNode","suffixNode","useDelayedState","initialState","setState","delayedAction","delay","action","clearTimeout","setTimeout","onStateChange","DEFAULT_TOOLTIP_ARROW_WIDTH","DEFAULT_TOOLTIP_ARROW_HEIGHT","DEFAULT_TOOLTIP_ARROW_RADIUS","DEFAULT_TOOLTIP_DISTANCE","DEFAULT_TOOLTIP_PADDING","TooltipCard","TooltipDelayGroupContext","useTooltipDelayGroup","TooltipDelayGroupProvider","isGroupActive","setIsGroupActive","openTooltipId","setOpenTooltipId","openDelay","closeDelay","close","$maxWidth","Tooltip","fallbackPlacementsProp","portalProp","tooltip","setReferenceElement","documentBodyOffsetWidth","tooltipWidth","availableWidths","floatingStyles","tooltipId","isOpen","setIsOpen","delayGroupContext","showTooltip","isInsideGroup","openDelayProp","closeDelayProp","handleIsOpenChange","immediate","groupedOpenDelay","groupDeactivateDelay","minimumGroupDeactivateDelay","handleBlur","e","onBlur","handleClick","onClick","handleContextMenu","onContextMenu","handleMouseEnter","onMouseEnter","handleMouseLeave","onMouseLeave","handleWindowMouseMove","handleWindowKeyDown","ListBox","AnimatedSpinnerIcon","SpinnerIcon","AutocompleteOption","onSelect","currentTarget","handleKeyDown","autocompleteReducer","activeValue","focused","query","listFocused","AUTOCOMPLETE_LISTBOX_IGNORE_KEYS","AUTOCOMPLETE_POPOVER_PLACEMENT","AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS","DEFAULT_RENDER_VALUE","option","DEFAULT_FILTER_OPTION","toLowerCase","InnerAutocomplete","filterOption","filterOptionProp","listBox","onQueryChange","openButton","optionsProp","relatedElements","renderOption","renderOptionProp","renderPopover","renderValue","valueProp","dispatch","useReducer","defaultRenderOption","rootElementRef","resultsPopoverElementRef","inputElementRef","listBoxElementRef","listFocusedRef","valuePropRef","popoverMouseWithinRef","listBoxId","currentOption","find","o","filteredOptions","filteredOptionsLen","activeItemId","expanded","handleRootBlur","focusInside","handleRootFocus","listBoxElement","focusedElement","handleOptionSelect","handleRootKeyDown","activeOption","activeIndex","nextActiveOption","listEl","handleInputChange","nextQuery","handleInputFocus","handlePopoverMouseEnter","handlePopoverMouseLeave","handleClearButtonClick","handleClearButtonFocus","listElement","activeItemElement","openButtonBoxPadding","openButtonPadding","openButtonProps","handleOpenClick","openButtonNode","ChevronDownIcon","inputValue","handleListBoxKeyDown","active","results","hidden","inputElement","Autocomplete","ol","ExpandButton","Breadcrumbs","separator","spaceRaw","setOpen","expandElement","setExpandElement","popoverElement","setPopoverElement","collapse","expand","rawItems","beforeLength","afterLength","Fragment","dialogStyle","background","responsiveDialogPositionStyle","$position","animationDialogStyle","$animate","DialogContext","useDialog","isTargetWithinScope","DialogContainer","DialogCardRoot","DialogLayout","DialogHeader","DialogContent","DialogFooter","DialogCard","__unstable_autoFocus","autoFocus","__unstable_hideCloseButton","hideCloseButton","contentRef","forwardedContentRef","footer","header","onClickOutside","onClose","setRootElement","labelId","showCloseButton","showHeader","target_0","Dialog","dialog","cardRadius","cardRadiusProp","cardShadow","positionProp","preDivRef","postDivRef","cardRef","focusedElementRef","cardElement","rootClickTimeoutRef","handleRootClick","DialogProvider","Key","Hotkeys","MenuContext","_isFocusable","_getFocusableElements","_getDOMPath","parentElement","unshift","EMPTY_PATH","_sortElements","_sort","a","b","aIndex","bIndex","sort","useMenuController","originElement","shouldFocus","_setActiveIndex","activeIndexRef","mounted","nextActiveIndex","setActiveIndex","selectedIndex","mount","currentIndex","focusableElements_0","focusableElements","currentIndex_0","focusableElements_1","focusableLen","focusedIndex","currentIndex_1","focusableElements_2","focusableLen_0","focusedElement_0","focusedIndex_0","el_2","currentIndex_2","element_0","currentIndex_3","handleItemMouseEnter","handleItemMouseLeave","rafId","_activeIndex","el_3","currentIndex_4","focusableElements_4","el_4","currentIndex_5","element_1","Menu","focusFirst","focusLast","onEscape","onItemClick","onItemSelect","registerElement","handleRefChange","onItemMouseEnter","onItemMouseLeave","MenuButton","__unstable_disableRestoreFocusOnClose","disableRestoreFocusOnClose","deprecated_boundaryElement","buttonProp","menu","menuProp","onOpen","deprecated_placement","popoverScheme","deprecated_popoverScheme","deprecated_portal","popoverRadius","deprecated_popoverRadius","deprecated_preventOverflow","setShouldFocus","buttonElement","setButtonElement","menuElements","setChildMenuElements","openRef","handleButtonClick","handleMouseDown","handleButtonKeyDown","handleMenuClickOutside","handleMenuEscape","relatedTarget","handleItemClick","els","_el","menuProps","onBlurCapture","onMouseDown","popoverProps","MenuDivider","hr","selectableBaseStyle","selectableColorStyle","Selectable","useMenu","MenuGroup","shouldFocusRef","withinMenu","setWithinMenu","handleMenuKeyDown","handleChildItemClick","handleMenuMouseEnter","childMenu","MenuItem","hotkeys","selectedProp","paddingProps","hotkeysFontSize","keyframe","animation","skeletonStyle","$visible","$animated","Skeleton","animated","visible","setVisible","$style","fontStyle","TextSkeleton","LabelSkeleton","HeadingSkeleton","CodeSkeleton","CustomButton","Tab","label","focusedRef","_isReactElement","CustomInline","TabList","setFocusedIndex","tabs","handleTabFocus","numTabs","tabIdx","prevIndex","TabPanel","STATUS_CARD_TONE","warning","success","BUTTON_TONE","ROLES","TextBox","Toast","description","closable","cardTone","buttonTone","role","useMounted","ToastContext","ToastContainer","toastId","ToastProvider","_setState","toastsRef","prefersReducedMotion","variants","startTransition","dismiss","timeoutId","prevState","findIndex","t","toasts","damping","stiffness","useToast","_findPrevItemElement","itemElements","itemKey","segments","pop","j","k","_findNextItemElement","_focusItemElement","TreeContext","Tree","setFocusedElement","setItemElements","stateRef","path_0","s_0","newState","registerItem","path_1","expanded_0","s_1","itemState","setExpanded","nextEl","prevEl","itemState_0","s_2","itemState_1","itemPath","parentKey","parentState","focusedKey","s_3","itemState_2","_itemElements","querySelectorAll","treeItemRootStyle","treeItemRootColorStyle","treeItemBoxStyle","$level","useTree","tree","TreeGroup","li","TreeItemBox","ToggleArrowText","TreeItem","expandedProp","idProp","linkAs","rootRef","treeitemRef","_id","closest","click","visibility","pointerEvents"],"mappings":"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","x_google_ignoreList":[49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71]}