@sanity/ui 2.3.1 → 2.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +63 -59
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +62 -58
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +63 -59
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/core/components/menu/menuButton.tsx +30 -17
- package/src/core/components/menu/menuGroup.tsx +5 -5
- package/src/core/components/menu/menuItem.tsx +9 -10
- package/src/core/components/tree/treeItem.tsx +9 -6
- package/src/core/hooks/useCustomValidity.ts +1 -3
- package/src/core/hooks/useDelayed.test.ts +1 -0
- package/src/core/primitives/button/button.tsx +10 -10
- package/src/core/primitives/textInput/textInput.tsx +13 -21
- package/src/core/primitives/tooltip/tooltip.tsx +12 -19
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","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/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/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/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/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/helpers.ts","../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/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","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 */\nexport function useArrayProp<T extends ArrayPropPrimitive = ArrayPropPrimitive>(\n val: T | T[] | undefined,\n defaultVal?: T[],\n): T[] {\n // JSON.stringify is fast, but it's not faster than useMemo's referencial equality check\n const __perf_hash__ = useMemo(() => JSON.stringify(val ?? defaultVal), [defaultVal, val])\n\n return useMemo(\n () => _getArrayProp(val, defaultVal),\n\n // Improve performance: Keep object identify for a given hash of the value\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [__perf_hash__],\n )\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","/* 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\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 {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 if (ref.current) {\n ref.current.setCustomValidity(customValidity || '')\n }\n }, [customValidity, ref])\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} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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 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={useArrayProp(align)}\n $muted={muted}\n $size={useArrayProp(size)}\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 ReactIs from 'react-is'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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 = ReactIs.isValidElementType(asProp) ? asProp : 'div'\n const size = useArrayProp(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 {useArrayProp} from '../../hooks'\nimport {rem, _responsive, ThemeProps} 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 = useArrayProp(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 {isElement, isFragment} from 'react-is'\n\nexport function childrenToElementArray(\n children: React.ReactNode,\n): Array<React.ReactElement | string> {\n const childrenArray = Array.isArray(children) ? children : [children]\n\n return childrenArray.filter(\n (node) => isElement(node) || isFragment(node) || typeof node === 'string',\n ) as Array<React.ReactElement | string>\n}\n","import {getTheme_v2} from '@sanity/ui/theme'\nimport {cloneElement, forwardRef} from 'react'\nimport {styled, css} from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {useArrayProp} from '../../hooks'\nimport {rem, _responsive, ThemeProps} from '../../styles'\nimport {AvatarSize} from '../../types'\nimport {childrenToElementArray} from '../helpers'\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 = childrenToElementArray(childrenProp).filter(\n (child) => typeof child !== 'string',\n ) as React.ReactElement[]\n const maxLength = Math.max(maxLengthProp, 0)\n const size = useArrayProp(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} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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 return (\n <Root\n data-as={typeof asProp === 'string' ? asProp : undefined}\n data-ui=\"Box\"\n {...restProps}\n $column={useArrayProp(column)}\n $columnStart={useArrayProp(columnStart)}\n $columnEnd={useArrayProp(columnEnd)}\n $display={useArrayProp(display)}\n $flex={useArrayProp(flex)}\n $height={useArrayProp(height)}\n $margin={useArrayProp(margin)}\n $marginX={useArrayProp(marginX)}\n $marginY={useArrayProp(marginY)}\n $marginTop={useArrayProp(marginTop)}\n $marginRight={useArrayProp(marginRight)}\n $marginBottom={useArrayProp(marginBottom)}\n $marginLeft={useArrayProp(marginLeft)}\n $overflow={useArrayProp(overflow)}\n $padding={useArrayProp(padding)}\n $paddingX={useArrayProp(paddingX)}\n $paddingY={useArrayProp(paddingY)}\n $paddingTop={useArrayProp(paddingTop)}\n $paddingRight={useArrayProp(paddingRight)}\n $paddingBottom={useArrayProp(paddingBottom)}\n $paddingLeft={useArrayProp(paddingLeft)}\n $row={useArrayProp(row)}\n $rowStart={useArrayProp(rowStart)}\n $rowEnd={useArrayProp(rowEnd)}\n $sizing={useArrayProp(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} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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 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={useArrayProp(align)}\n $muted={muted}\n ref={ref}\n $size={useArrayProp(size)}\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} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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 return (\n <Root\n data-ui=\"Badge\"\n {...restProps}\n $tone={tone}\n $radius={useArrayProp(radius)}\n padding={useArrayProp(padding)}\n ref={ref}\n >\n <Text size={fontSize}>{children}</Text>\n </Root>\n )\n})\n","import {forwardRef} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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 return (\n <Root\n data-ui=\"Flex\"\n {...restProps}\n $align={useArrayProp(align)}\n $direction={useArrayProp(direction)}\n $gap={useArrayProp(gap)}\n $justify={useArrayProp(justify)}\n $wrap={useArrayProp(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 {createElement, forwardRef, isValidElement, useMemo} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {ThemeProps} 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,\n iconRight,\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 = useArrayProp(justifyProp)\n const padding = useArrayProp(paddingProp)\n const paddingX = useArrayProp(paddingXProp)\n const paddingY = useArrayProp(paddingYProp)\n const paddingTop = useArrayProp(paddingTopProp)\n const paddingBottom = useArrayProp(paddingBottomProp)\n const paddingLeft = useArrayProp(paddingLeftProp)\n const paddingRight = useArrayProp(paddingRightProp)\n const radius = useArrayProp(radiusProp)\n const space = useArrayProp(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 {(icon || text || iconRight) && (\n <Box as=\"span\" {...boxProps}>\n <Flex as=\"span\" justify={justify} gap={space}>\n {icon && (\n <Text size={fontSize}>\n {isValidElement(icon) && icon}\n {isValidElementType(icon) && createElement(icon)}\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 {iconRight && (\n <Text size={fontSize}>\n {isValidElement(iconRight) && iconRight}\n {isValidElementType(iconRight) && createElement(iconRight)}\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} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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 // 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={useArrayProp(border)}\n $borderTop={useArrayProp(borderTop)}\n $borderRight={useArrayProp(borderRight)}\n $borderBottom={useArrayProp(borderBottom)}\n $borderLeft={useArrayProp(borderLeft)}\n $checkered={checkered}\n $focusRing={focusRing}\n $muted={muted}\n $radius={useArrayProp(radius)}\n $shadow={useArrayProp(shadow)}\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 {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} from 'react'\nimport Refractor from 'react-refractor'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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\n return (\n <Root data-ui=\"Code\" {...restProps} $size={useArrayProp(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} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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\n return (\n <Root\n data-ui=\"Container\"\n {...restProps}\n $width={useArrayProp(width)}\n forwardedAs={as}\n ref={ref}\n />\n )\n})\n","import {forwardRef} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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 return (\n <Root\n data-as={typeof as === 'string' ? as : undefined}\n data-ui=\"Grid\"\n {...restProps}\n $autoRows={useArrayProp(autoRows)}\n $autoCols={useArrayProp(autoCols)}\n $autoFlow={useArrayProp(autoFlow)}\n $columns={useArrayProp(columns)}\n $gap={useArrayProp(gap)}\n $gapX={useArrayProp(gapX)}\n $gapY={useArrayProp(gapY)}\n $rows={useArrayProp(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} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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 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={useArrayProp(align)}\n $muted={muted}\n $size={useArrayProp(size)}\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} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {Box, BoxProps} from '../box'\nimport {childrenToElementArray} from '../helpers'\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 children = useMemo(\n () =>\n childrenToElementArray(childrenProp)\n .filter(Boolean)\n .map((child, idx) => <div key={idx}>{child}</div>),\n [childrenProp],\n )\n\n return (\n <Root\n data-ui=\"Inline\"\n {...restProps}\n $space={useArrayProp(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} from 'react'\nimport {styled, css} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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\n return (\n <Root data-ui=\"KBD\" {...restProps} $radius={useArrayProp(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, useArrayProp} from '../../hooks'\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 = useArrayProp(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 {useArrayProp, useElementSize, useMediaIndex, usePrefersReducedMotion} from '../../hooks'\nimport {origin} from '../../middleware/origin'\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 = useArrayProp(paddingProp)\n const radius = useArrayProp(radiusProp)\n const shadow = useArrayProp(shadowProp)\n const widthArrayProp = useArrayProp(widthProp)\n const zOffset = useArrayProp(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, useRef} from 'react'\nimport {styled} from 'styled-components'\nimport {useCustomValidity, useArrayProp} from '../../hooks'\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 return (\n <Root data-ui=\"Select\">\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-ui=\"Select\"\n {...restProps}\n $fontSize={useArrayProp(fontSize)}\n $padding={useArrayProp(padding)}\n $radius={useArrayProp(radius)}\n $space={useArrayProp(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} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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\n return (\n <Root\n data-as={typeof as === 'string' ? as : undefined}\n data-ui=\"Stack\"\n {...restProps}\n $space={useArrayProp(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, useRef} from 'react'\nimport {styled} from 'styled-components'\nimport {useCustomValidity, useArrayProp} from '../../hooks'\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 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={useArrayProp(fontSize)}\n $padding={useArrayProp(padding)}\n $scheme={rootTheme.scheme}\n $space={useArrayProp(0)}\n $tone={rootTheme.tone}\n $weight={weight}\n disabled={disabled}\n ref={ref}\n />\n <Presentation\n $radius={useArrayProp(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 {\n createElement,\n forwardRef,\n isValidElement,\n useCallback,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {styled} from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {useArrayProp, useCustomValidity} from '../../hooks'\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,\n iconRight,\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 = useArrayProp(fontSizeProp)\n const padding = useArrayProp(paddingProp)\n const radius = useArrayProp(radiusProp)\n const space = useArrayProp(spaceProp)\n\n // Transient properties\n const $hasClearButton = Boolean(clearButton)\n const $hasIcon = Boolean(icon)\n const $hasIconRight = Boolean(iconRight)\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 {icon && (\n <LeftBox padding={padding}>\n <Text size={fontSize}>\n {isValidElement(icon) && icon}\n {isValidElementType(icon) && createElement(icon)}\n </Text>\n </LeftBox>\n )}\n\n {!$hasClearButton && iconRight && (\n <RightBox padding={padding}>\n <Text size={fontSize}>\n {isValidElement(iconRight) && iconRight}\n {isValidElementType(iconRight) && createElement(iconRight)}\n </Text>\n </RightBox>\n )}\n </Presentation>\n ),\n [\n __unstable_disableFocusRing,\n border,\n fontSize,\n icon,\n iconRight,\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 type ForwardedRef,\n useId,\n useSyncExternalStore,\n useImperativeHandle,\n} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp, usePrefersReducedMotion} from '../../hooks'\nimport {useDelayedState} from '../../hooks/useDelayedState'\nimport {origin} from '../../middleware/origin'\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 = useArrayProp(fallbackPlacementsProp)\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: ForwardedRef<HTMLElement | null> = (childProp as any)?.ref\n\n const setReference = useCallback(\n (node: HTMLElement | null) => {\n if (typeof childRef === 'function') {\n childRef(node)\n } else if (childRef) {\n childRef.current = node\n }\n\n // childRef.current = node\n setReferenceElement(node)\n },\n [childRef],\n )\n\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: setReference,\n })\n }, [\n childProp,\n handleBlur,\n handleClick,\n handleContextMenu,\n handleFocus,\n handleMouseEnter,\n handleMouseLeave,\n setReference,\n ])\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 {useArrayProp} from '../../hooks'\nimport {\n Box,\n BoxProps,\n Button,\n Card,\n Popover,\n PopoverProps,\n Stack,\n Text,\n TextInput,\n} from '../../primitives'\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 = useArrayProp(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 {useArrayProp, useClickOutside} from '../../hooks'\nimport {Box, Popover, Stack, Text} from '../../primitives'\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 = useArrayProp(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(\n () =>\n Children.toArray(children).filter((child) => {\n return isValidElement(child)\n }),\n [children],\n )\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 {forwardRef, useCallback, useEffect, useImperativeHandle, useRef, useState} from 'react'\nimport {styled} from 'styled-components'\nimport {\n containsOrEqualsElement,\n focusFirstDescendant,\n focusLastDescendant,\n isHTMLElement,\n} from '../../helpers'\nimport {useArrayProp, useClickOutside, useGlobalKeyDown, usePrefersReducedMotion} from '../../hooks'\nimport {Box, Button, Card, Container, Flex, Text} from '../../primitives'\nimport {ResponsivePaddingProps, ResponsiveWidthProps} from '../../primitives/types'\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 = useArrayProp(radiusProp)\n const shadow = useArrayProp(shadowProp)\n const width = useArrayProp(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 = useArrayProp(cardRadiusProp)\n const padding = useArrayProp(paddingProp)\n const position = useArrayProp(positionProp)\n const width = useArrayProp(widthProp)\n const zOffset = useArrayProp(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} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {Inline, KBD} from '../../primitives'\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 = useArrayProp(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 {cloneElement, forwardRef, useCallback, useMemo, useState, useEffect, useRef} 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 ref: 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 setButtonRef = useCallback(\n (el: HTMLButtonElement | null) => {\n if (typeof ref === 'function') {\n ref(el)\n } else if (ref) {\n ref.current = el\n }\n\n setButtonElement(el)\n },\n [ref],\n )\n\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: setButtonRef,\n selected: open,\n }),\n [buttonProp, handleButtonClick, handleButtonKeyDown, handleMouseDown, id, open, setButtonRef],\n )\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 {createElement, isValidElement, useCallback, useEffect, useRef, useState} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {useArrayProp} from '../../hooks'\nimport {Box, Flex, Popover, PopoverProps, Text} from '../../primitives'\nimport {Selectable} from '../../primitives/_selectable'\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,\n onClick,\n padding = 3,\n popover,\n radius = 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\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={useArrayProp(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 {icon && (\n <Text size={fontSize}>\n {isValidElement(icon) && icon}\n {isValidElementType(icon) && createElement(icon)}\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 createElement,\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 {useArrayProp} from '../../hooks'\nimport {Box, Flex, Text} from '../../primitives'\nimport {Selectable} from '../../primitives/_selectable'\nimport {ResponsivePaddingProps, ResponsiveRadiusProps} from '../../primitives/types'\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,\n iconRight,\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 = useArrayProp(fontSize).map((s) => s - 1)\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={useArrayProp(radius)}\n $padding={useArrayProp(0)}\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 {(icon || text || iconRight) && (\n <Flex as=\"span\" gap={space} align=\"center\" {...paddingProps}>\n {icon && (\n <Text size={fontSize}>\n {isValidElement(icon) && icon}\n {isValidElementType(icon) && createElement(icon)}\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 {iconRight && (\n <Text size={fontSize}>\n {isValidElement(iconRight) && iconRight}\n {isValidElementType(iconRight) && createElement(iconRight)}\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, useState} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {Box} from '../../primitives'\nimport {BoxProps, ResponsiveRadiusProps} from '../../primitives'\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 return (\n <Root\n {...restProps}\n $animated={animated}\n $radius={useArrayProp(radius)}\n $visible={visible}\n ref={ref}\n />\n )\n})\n","import {ThemeFontKey, getTheme_v2} from '@sanity/ui/theme'\nimport {forwardRef} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {ThemeProps, _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 = useArrayProp(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 = useArrayProp(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 = useArrayProp(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 = useArrayProp(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, ref])\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 {createElement, 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,\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={{visibility: icon || children ? 'visible' : 'hidden', pointerEvents: 'none'}}\n >\n {icon && (\n <Text muted={muted} size={fontSize} weight={weight}>\n {createElement(icon)}\n </Text>\n )}\n {!icon && (\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","_hexToRgb","_hslToRgb","_multiply","_parseColor","_rgbToHex","_rgbToHsl","_rgba","_screen","key","size","fontSize","ResizeObserverBoxOptions","ResizeObserverSize","DOMRectReadOnly","global","borderTop","borderRight","borderBottom","borderLeft","ResizeObserverEntry","callbacks","Scheduler","ResizeObservation","ResizeObserverDetail","ResizeObserverController","ResizeObserver","ResizeObserverPolyfill","StyledThemeProvider","useStyledTheme","getServerSnapshot","MEDIA_QUERY_CACHE","getMatchMedia","subscribe","getSnapshot","BASE_STYLE","border","Root","SpanWithTextOverflow","Arrow","isElement","rotate","Input","_a","emptySubscribe","handleScroll","DEFAULT_FALLBACK_PLACEMENTS","MotionCard","arrow","rootStyle","InputRoot","Presentation","_b","msg","value","listFocused","Fragment","state","path","itemState"],"mappings":"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","x_google_ignoreList":[11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33]}
|
|
1
|
+
{"version":3,"file":"index.esm.js","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/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/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/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/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/helpers.ts","../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/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","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 */\nexport function useArrayProp<T extends ArrayPropPrimitive = ArrayPropPrimitive>(\n val: T | T[] | undefined,\n defaultVal?: T[],\n): T[] {\n // JSON.stringify is fast, but it's not faster than useMemo's referencial equality check\n const __perf_hash__ = useMemo(() => JSON.stringify(val ?? defaultVal), [defaultVal, val])\n\n return useMemo(\n () => _getArrayProp(val, defaultVal),\n\n // Improve performance: Keep object identify for a given hash of the value\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [__perf_hash__],\n )\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","/* 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\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 {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 {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} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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 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={useArrayProp(align)}\n $muted={muted}\n $size={useArrayProp(size)}\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 ReactIs from 'react-is'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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 = ReactIs.isValidElementType(asProp) ? asProp : 'div'\n const size = useArrayProp(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 {useArrayProp} from '../../hooks'\nimport {rem, _responsive, ThemeProps} 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 = useArrayProp(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 {isElement, isFragment} from 'react-is'\n\nexport function childrenToElementArray(\n children: React.ReactNode,\n): Array<React.ReactElement | string> {\n const childrenArray = Array.isArray(children) ? children : [children]\n\n return childrenArray.filter(\n (node) => isElement(node) || isFragment(node) || typeof node === 'string',\n ) as Array<React.ReactElement | string>\n}\n","import {getTheme_v2} from '@sanity/ui/theme'\nimport {cloneElement, forwardRef} from 'react'\nimport {styled, css} from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {useArrayProp} from '../../hooks'\nimport {rem, _responsive, ThemeProps} from '../../styles'\nimport {AvatarSize} from '../../types'\nimport {childrenToElementArray} from '../helpers'\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 = childrenToElementArray(childrenProp).filter(\n (child) => typeof child !== 'string',\n ) as React.ReactElement[]\n const maxLength = Math.max(maxLengthProp, 0)\n const size = useArrayProp(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} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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 return (\n <Root\n data-as={typeof asProp === 'string' ? asProp : undefined}\n data-ui=\"Box\"\n {...restProps}\n $column={useArrayProp(column)}\n $columnStart={useArrayProp(columnStart)}\n $columnEnd={useArrayProp(columnEnd)}\n $display={useArrayProp(display)}\n $flex={useArrayProp(flex)}\n $height={useArrayProp(height)}\n $margin={useArrayProp(margin)}\n $marginX={useArrayProp(marginX)}\n $marginY={useArrayProp(marginY)}\n $marginTop={useArrayProp(marginTop)}\n $marginRight={useArrayProp(marginRight)}\n $marginBottom={useArrayProp(marginBottom)}\n $marginLeft={useArrayProp(marginLeft)}\n $overflow={useArrayProp(overflow)}\n $padding={useArrayProp(padding)}\n $paddingX={useArrayProp(paddingX)}\n $paddingY={useArrayProp(paddingY)}\n $paddingTop={useArrayProp(paddingTop)}\n $paddingRight={useArrayProp(paddingRight)}\n $paddingBottom={useArrayProp(paddingBottom)}\n $paddingLeft={useArrayProp(paddingLeft)}\n $row={useArrayProp(row)}\n $rowStart={useArrayProp(rowStart)}\n $rowEnd={useArrayProp(rowEnd)}\n $sizing={useArrayProp(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} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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 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={useArrayProp(align)}\n $muted={muted}\n ref={ref}\n $size={useArrayProp(size)}\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} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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 return (\n <Root\n data-ui=\"Badge\"\n {...restProps}\n $tone={tone}\n $radius={useArrayProp(radius)}\n padding={useArrayProp(padding)}\n ref={ref}\n >\n <Text size={fontSize}>{children}</Text>\n </Root>\n )\n})\n","import {forwardRef} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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 return (\n <Root\n data-ui=\"Flex\"\n {...restProps}\n $align={useArrayProp(align)}\n $direction={useArrayProp(direction)}\n $gap={useArrayProp(gap)}\n $justify={useArrayProp(justify)}\n $wrap={useArrayProp(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 {useArrayProp} from '../../hooks'\nimport {ThemeProps} 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 = useArrayProp(justifyProp)\n const padding = useArrayProp(paddingProp)\n const paddingX = useArrayProp(paddingXProp)\n const paddingY = useArrayProp(paddingYProp)\n const paddingTop = useArrayProp(paddingTopProp)\n const paddingBottom = useArrayProp(paddingBottomProp)\n const paddingLeft = useArrayProp(paddingLeftProp)\n const paddingRight = useArrayProp(paddingRightProp)\n const radius = useArrayProp(radiusProp)\n const space = useArrayProp(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} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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 // 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={useArrayProp(border)}\n $borderTop={useArrayProp(borderTop)}\n $borderRight={useArrayProp(borderRight)}\n $borderBottom={useArrayProp(borderBottom)}\n $borderLeft={useArrayProp(borderLeft)}\n $checkered={checkered}\n $focusRing={focusRing}\n $muted={muted}\n $radius={useArrayProp(radius)}\n $shadow={useArrayProp(shadow)}\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 {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} from 'react'\nimport Refractor from 'react-refractor'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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\n return (\n <Root data-ui=\"Code\" {...restProps} $size={useArrayProp(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} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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\n return (\n <Root\n data-ui=\"Container\"\n {...restProps}\n $width={useArrayProp(width)}\n forwardedAs={as}\n ref={ref}\n />\n )\n})\n","import {forwardRef} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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 return (\n <Root\n data-as={typeof as === 'string' ? as : undefined}\n data-ui=\"Grid\"\n {...restProps}\n $autoRows={useArrayProp(autoRows)}\n $autoCols={useArrayProp(autoCols)}\n $autoFlow={useArrayProp(autoFlow)}\n $columns={useArrayProp(columns)}\n $gap={useArrayProp(gap)}\n $gapX={useArrayProp(gapX)}\n $gapY={useArrayProp(gapY)}\n $rows={useArrayProp(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} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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 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={useArrayProp(align)}\n $muted={muted}\n $size={useArrayProp(size)}\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} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {Box, BoxProps} from '../box'\nimport {childrenToElementArray} from '../helpers'\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 children = useMemo(\n () =>\n childrenToElementArray(childrenProp)\n .filter(Boolean)\n .map((child, idx) => <div key={idx}>{child}</div>),\n [childrenProp],\n )\n\n return (\n <Root\n data-ui=\"Inline\"\n {...restProps}\n $space={useArrayProp(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} from 'react'\nimport {styled, css} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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\n return (\n <Root data-ui=\"KBD\" {...restProps} $radius={useArrayProp(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, useArrayProp} from '../../hooks'\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 = useArrayProp(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 {useArrayProp, useElementSize, useMediaIndex, usePrefersReducedMotion} from '../../hooks'\nimport {origin} from '../../middleware/origin'\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 = useArrayProp(paddingProp)\n const radius = useArrayProp(radiusProp)\n const shadow = useArrayProp(shadowProp)\n const widthArrayProp = useArrayProp(widthProp)\n const zOffset = useArrayProp(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, useRef} from 'react'\nimport {styled} from 'styled-components'\nimport {useCustomValidity, useArrayProp} from '../../hooks'\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 return (\n <Root data-ui=\"Select\">\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-ui=\"Select\"\n {...restProps}\n $fontSize={useArrayProp(fontSize)}\n $padding={useArrayProp(padding)}\n $radius={useArrayProp(radius)}\n $space={useArrayProp(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} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\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\n return (\n <Root\n data-as={typeof as === 'string' ? as : undefined}\n data-ui=\"Stack\"\n {...restProps}\n $space={useArrayProp(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, useRef} from 'react'\nimport {styled} from 'styled-components'\nimport {useCustomValidity, useArrayProp} from '../../hooks'\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 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={useArrayProp(fontSize)}\n $padding={useArrayProp(padding)}\n $scheme={rootTheme.scheme}\n $space={useArrayProp(0)}\n $tone={rootTheme.tone}\n $weight={weight}\n disabled={disabled}\n ref={ref}\n />\n <Presentation\n $radius={useArrayProp(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 {useArrayProp, useCustomValidity} from '../../hooks'\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 = useArrayProp(fontSizeProp)\n const padding = useArrayProp(paddingProp)\n const radius = useArrayProp(radiusProp)\n const space = useArrayProp(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 {useArrayProp, usePrefersReducedMotion} from '../../hooks'\nimport {useDelayedState} from '../../hooks/useDelayedState'\nimport {origin} from '../../middleware/origin'\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 = useArrayProp(fallbackPlacementsProp)\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 {useArrayProp} from '../../hooks'\nimport {\n Box,\n BoxProps,\n Button,\n Card,\n Popover,\n PopoverProps,\n Stack,\n Text,\n TextInput,\n} from '../../primitives'\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 = useArrayProp(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 {useArrayProp, useClickOutside} from '../../hooks'\nimport {Box, Popover, Stack, Text} from '../../primitives'\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 = useArrayProp(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(\n () =>\n Children.toArray(children).filter((child) => {\n return isValidElement(child)\n }),\n [children],\n )\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 {forwardRef, useCallback, useEffect, useImperativeHandle, useRef, useState} from 'react'\nimport {styled} from 'styled-components'\nimport {\n containsOrEqualsElement,\n focusFirstDescendant,\n focusLastDescendant,\n isHTMLElement,\n} from '../../helpers'\nimport {useArrayProp, useClickOutside, useGlobalKeyDown, usePrefersReducedMotion} from '../../hooks'\nimport {Box, Button, Card, Container, Flex, Text} from '../../primitives'\nimport {ResponsivePaddingProps, ResponsiveWidthProps} from '../../primitives/types'\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 = useArrayProp(radiusProp)\n const shadow = useArrayProp(shadowProp)\n const width = useArrayProp(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 = useArrayProp(cardRadiusProp)\n const padding = useArrayProp(paddingProp)\n const position = useArrayProp(positionProp)\n const width = useArrayProp(widthProp)\n const zOffset = useArrayProp(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} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {Inline, KBD} from '../../primitives'\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 = useArrayProp(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: 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, useRef, useState} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {useArrayProp} from '../../hooks'\nimport {Box, Flex, Popover, PopoverProps, Text} from '../../primitives'\nimport {Selectable} from '../../primitives/_selectable'\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 = 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\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={useArrayProp(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 {useArrayProp} from '../../hooks'\nimport {Box, Flex, Text} from '../../primitives'\nimport {Selectable} from '../../primitives/_selectable'\nimport {ResponsivePaddingProps, ResponsiveRadiusProps} from '../../primitives/types'\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 = useArrayProp(fontSize).map((s) => s - 1)\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={useArrayProp(radius)}\n $padding={useArrayProp(0)}\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, useState} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {Box} from '../../primitives'\nimport {BoxProps, ResponsiveRadiusProps} from '../../primitives'\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 return (\n <Root\n {...restProps}\n $animated={animated}\n $radius={useArrayProp(radius)}\n $visible={visible}\n ref={ref}\n />\n )\n})\n","import {ThemeFontKey, getTheme_v2} from '@sanity/ui/theme'\nimport {forwardRef} from 'react'\nimport {styled} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {ThemeProps, _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 = useArrayProp(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 = useArrayProp(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 = useArrayProp(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 = useArrayProp(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, ref])\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","_hexToRgb","_hslToRgb","_multiply","_parseColor","_rgbToHex","_rgbToHsl","_rgba","_screen","key","size","fontSize","ResizeObserverBoxOptions","ResizeObserverSize","DOMRectReadOnly","global","borderTop","borderRight","borderBottom","borderLeft","ResizeObserverEntry","callbacks","Scheduler","ResizeObservation","ResizeObserverDetail","ResizeObserverController","ResizeObserver","ResizeObserverPolyfill","StyledThemeProvider","useStyledTheme","getServerSnapshot","MEDIA_QUERY_CACHE","getMatchMedia","subscribe","getSnapshot","BASE_STYLE","border","Root","SpanWithTextOverflow","Arrow","isElement","rotate","Input","_a","emptySubscribe","handleScroll","DEFAULT_FALLBACK_PLACEMENTS","MotionCard","arrow","rootStyle","InputRoot","Presentation","_b","msg","value","listFocused","Fragment","state","path","itemState"],"mappings":"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","x_google_ignoreList":[11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33]}
|