@sanity/ui 0.38.3-next.10 → 0.38.3-next.18

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.
@@ -1 +1 @@
1
- {"version":3,"file":"sanity-ui.js","sources":["../src/constants.ts","../src/styles/helpers.ts","../src/styles/font/responsiveFont.ts","../src/styles/font/codeFontStyle.ts","../src/styles/font/headingFontStyle.ts","../src/styles/font/labelFontStyle.ts","../src/styles/font/textAlignStyle.ts","../src/styles/font/textFontStyle.ts","../src/hooks/useArrayProp.ts","../src/hooks/useClickOutside.ts","../node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js","../node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js","../node_modules/@juggle/resize-observer/lib/utils/freeze.js","../node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverSize.js","../node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js","../node_modules/@juggle/resize-observer/lib/utils/element.js","../node_modules/@juggle/resize-observer/lib/utils/global.js","../node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js","../node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js","../node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js","../node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js","../node_modules/@juggle/resize-observer/lib/utils/process.js","../node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js","../node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js","../node_modules/@juggle/resize-observer/lib/utils/scheduler.js","../node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js","../node_modules/@juggle/resize-observer/lib/ResizeObservation.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverController.js","../node_modules/@juggle/resize-observer/lib/ResizeObserver.js","../src/observers/resizeObserver.ts","../src/observers/elementSizeObserver.ts","../src/hooks/useElementSize.ts","../src/hooks/useElementRect/useElementRect.ts","../src/hooks/useGlobalKeyDown.ts","../src/theme/lib/color-fns/blend/multiply.ts","../src/theme/lib/color-fns/blend/screen.ts","../src/theme/lib/color-fns/convert.ts","../src/theme/lib/color-fns/parse.ts","../src/theme/lib/color-fns/helpers/rgba.ts","../src/theme/lib/theme/color/button/createButtonTones.ts","../src/theme/lib/theme/color/button/createButtonModes.ts","../src/theme/lib/theme/color/card/createCardStates.ts","../src/theme/lib/theme/color/defaults.ts","../src/theme/lib/theme/color/input/createInputModes.ts","../src/theme/lib/theme/color/selectable/createSelectableTones.ts","../src/theme/lib/theme/color/spot/createSpot.ts","../src/theme/lib/theme/color/factory.ts","../src/theme/lib/theme/color/solid/createSolidTones.ts","../src/theme/lib/theme/color/muted/createMuted.ts","../src/theme/studioTheme/helpers.ts","../src/theme/studioTheme/color.ts","../src/theme/studioTheme/theme.ts","../src/theme/studioTheme/fonts.ts","../src/theme/defaults.ts","../src/lib/globalScope.ts","../src/theme/themeContext.ts","../src/theme/themeProvider.tsx","../src/lib/isRecord.ts","../src/theme/useRootTheme.ts","../src/theme/themeColorProvider.tsx","../src/theme/useTheme.ts","../src/hooks/useMediaIndex/lib/media.ts","../src/hooks/useMediaIndex/useMediaIndex.ts","../src/hooks/usePrefersDark.ts","../src/hooks/useIsomorphicEffect.ts","../src/hooks/useForwardedRef.ts","../src/hooks/useCustomValidity.ts","../src/styles/border/borderStyle.ts","../src/styles/box/boxStyle.ts","../src/styles/flex/flexStyle.ts","../src/styles/flex/flexItemStyle.ts","../src/styles/focusRing/index.ts","../src/styles/grid/gridStyle.ts","../src/styles/grid/gridItemStyle.ts","../src/styles/input/responsiveInputPaddingStyle.ts","../src/styles/input/textInputStyle.ts","../src/styles/padding/paddingStyle.ts","../src/styles/radius/radiusStyle.ts","../src/styles/shadow/shadowStyle.ts","../src/primitives/text/text.tsx","../src/primitives/text/styles.ts","../src/primitives/avatar/styles.ts","../src/primitives/avatar/avatar.tsx","../src/primitives/avatar/avatarCounter.tsx","../src/primitives/helpers.ts","../src/primitives/avatar/avatarStack.tsx","../src/primitives/box/box.tsx","../src/styles/margin/marginStyle.ts","../src/primitives/label/label.tsx","../src/primitives/label/styles.ts","../src/primitives/badge/badge.tsx","../src/primitives/badge/styles.ts","../src/primitives/flex/flex.tsx","../src/primitives/spinner/spinner.tsx","../src/styles/colorVars/colorVarsStyle.ts","../src/primitives/button/styles.ts","../src/primitives/button/button.tsx","../src/primitives/card/styles.ts","../src/primitives/card/card.tsx","../src/primitives/checkbox/checkbox.tsx","../src/primitives/checkbox/styles.ts","../src/primitives/code/styles.ts","../src/primitives/code/code.tsx","../src/primitives/container/styles.ts","../src/primitives/container/container.tsx","../src/primitives/grid/grid.tsx","../src/primitives/heading/heading.tsx","../src/primitives/heading/styles.ts","../src/primitives/inline/inline.tsx","../src/primitives/inline/styles.ts","../src/primitives/kbd/kbd.tsx","../src/utils/boundaryElement/boundaryElementContext.ts","../src/utils/boundaryElement/boundaryElementProvider.tsx","../src/utils/boundaryElement/useBoundaryElement.ts","../src/utils/elementQuery/elementQuery.tsx","../src/utils/elementQuery/helpers.ts","../src/utils/errorBoundary.tsx","../src/utils/layer/layerContext.ts","../src/utils/layer/useLayer.ts","../src/utils/layer/layerProvider.tsx","../src/utils/layer/layer.tsx","../src/utils/portal/portalContext.ts","../src/utils/portal/usePortal.ts","../src/utils/portal/portal.ts","../src/hooks/_internal/useUnique.ts","../src/utils/portal/portalProvider.tsx","../src/utils/srOnly/srOnly.tsx","../src/helpers/animation.ts","../src/helpers/element.ts","../src/helpers/focus.ts","../src/helpers/scroll.ts","../src/utils/virtualList/virtualList.tsx","../src/primitives/popover/arrow.tsx","../src/primitives/popover/modifiers/usePopoverModifiers.ts","../src/primitives/popover/modifiers/getPopoverModifiers.ts","../src/primitives/popover/popover.tsx","../src/primitives/radio/radio.tsx","../src/primitives/radio/styles.ts","../src/primitives/select/styles.ts","../src/primitives/select/select.tsx","../src/primitives/stack/styles.ts","../src/primitives/stack/stack.tsx","../src/primitives/switch/switch.tsx","../src/primitives/switch/styles.ts","../src/primitives/textArea/textArea.tsx","../src/primitives/textInput/textInput.tsx","../src/primitives/tooltip/tooltipArrow.tsx","../src/primitives/tooltip/tooltip.tsx","../src/components/autocomplete/autocomplete.styles.tsx","../src/components/autocomplete/autocompleteOption.tsx","../src/components/autocomplete/autocompleteReducer.ts","../src/components/autocomplete/constants.ts","../src/components/autocomplete/autocomplete.tsx","../src/components/breadcrumbs/breadcrumbs.styles.ts","../src/components/breadcrumbs/breadcrumbs.tsx","../src/components/dialog/dialogContext.ts","../src/components/dialog/useDialog.ts","../src/components/dialog/dialog.tsx","../src/components/dialog/styles.ts","../src/components/dialog/dialogProvider.tsx","../src/components/hotkeys/hotkeys.tsx","../src/components/menu/menuContext.ts","../src/components/menu/helpers.ts","../src/components/menu/useMenuController.ts","../src/components/menu/menu.tsx","../src/components/menu/menuButton.tsx","../src/components/menu/menuDivider.ts","../src/primitives/_selectable/selectable.tsx","../src/primitives/_selectable/style.ts","../src/components/menu/useMenu.ts","../src/components/menu/menuGroup.tsx","../src/components/menu/menuItem.tsx","../src/components/skeleton/styles.ts","../src/components/skeleton/skeleton.tsx","../src/components/skeleton/textSkeleton.tsx","../src/components/tab/tab.tsx","../src/components/tab/tabList.tsx","../src/components/tab/tabPanel.tsx","../src/components/toast/toast.tsx","../src/components/toast/toastContext.ts","../src/components/toast/toastProvider.tsx","../src/components/toast/useToast.ts","../src/components/tree/helpers.ts","../src/components/tree/treeContext.ts","../src/components/tree/tree.tsx","../src/components/tree/useTree.ts","../src/components/tree/treeGroup.tsx","../src/components/tree/treeItem.tsx","../src/components/tree/style.ts"],"sourcesContent":["export const EMPTY_ARRAY: any[] = []\nexport const EMPTY_RECORD: Record<string, any> = {}\n","import {CSSObject} from 'styled-components'\nimport {EMPTY_ARRAY} from '../constants'\nimport {Theme} from '../theme'\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 return _responsive(theme.sanity.media, spaceIndexes, (spaceIndex) =>\n _fillCSSObject(props, rem(theme.sanity.space[spaceIndex]))\n )\n}\n","import {CSSObject} from 'styled-components'\nimport {ThemeFontSize, ThemeFontKey} from '../../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, theme} = props\n const {fonts, media} = theme.sanity\n const {family, sizes, weights} = fonts[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 'styled-components'\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 'styled-components'\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 'styled-components'\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} from 'styled-components'\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 {theme} = props\n\n return _responsive(theme.sanity.media, props.$align, (textAlign) => {\n return {textAlign}\n })\n}\n","import {CSSObject} from 'styled-components'\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 const __perf_hash__ = JSON.stringify(val ?? defaultVal)\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","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","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","export var freeze = function (obj) { return Object.freeze(obj); };\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 { 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","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","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 { queueMicroTask } from './queueMicroTask';\nvar queueResizeObserver = function (cb) {\n queueMicroTask(function ResizeObserver() {\n requestAnimationFrame(cb);\n });\n};\nexport { queueResizeObserver };\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 window !== 'undefined' && window.ResizeObserver\n ? window.ResizeObserver\n : ResizeObserverPolyfill\n","import {_ResizeObserver} from './resizeObserver'\n\n/**\n * @beta\n */\nexport interface ElementRectValue {\n width: number\n height: number\n}\n\n/**\n * @beta\n */\nexport interface ElementSize {\n content: ElementRectValue\n border: ElementRectValue\n\n /** @deprecated INTERNAL ONLY */\n _contentRect: DOMRectReadOnly\n}\n\n/**\n * @internal\n */\nexport type _ElementSizeSubscriber = (elementRect: ElementSize) => void\n\n/**\n * @internal\n */\nexport interface _ElementSizeObserver {\n subscribe: (element: HTMLElement, subscriber: _ElementSizeSubscriber) => () => void\n}\n\n/**\n * @internal\n */\nexport interface _ElementSizeListener {\n subscribe: (element: HTMLElement, subscriber: _ElementSizeSubscriber) => () => void\n}\n\n// Initialize element size observer\n// NOTE: this should NOT have size effects\n/**\n * @internal\n */\nexport const _elementSizeObserver = _createElementSizeObserver()\n\nfunction _createElementRectValueListener(): _ElementSizeListener {\n return {\n subscribe(element, subscriber) {\n const resizeObserver = new _ResizeObserver(([entry]) => {\n subscriber({\n _contentRect: entry.contentRect,\n border: {\n width: entry.borderBoxSize[0].inlineSize,\n height: entry.borderBoxSize[0].blockSize,\n },\n content: {\n width: entry.contentRect.width,\n height: entry.contentRect.height,\n },\n })\n })\n\n resizeObserver.observe(element)\n\n return () => {\n resizeObserver.unobserve(element)\n resizeObserver.disconnect()\n }\n },\n }\n}\n\nfunction _createElementSizeObserver(): _ElementSizeObserver {\n const disposeCache = new WeakMap<HTMLElement, () => void>()\n const subscribersCache = new WeakMap<HTMLElement, _ElementSizeSubscriber[]>()\n\n return {\n subscribe(element, subscriber) {\n const subscribers = subscribersCache.get(element) || []\n\n let dispose = disposeCache.get(element)\n\n if (!subscribersCache.has(element)) {\n subscribersCache.set(element, subscribers)\n\n const listener = _createElementRectValueListener()\n\n // listen\n dispose = listener.subscribe(element, (elementRect) => {\n for (const sub of subscribers) {\n sub(elementRect)\n }\n })\n }\n\n subscribers.push(subscriber)\n\n return () => {\n // dispose\n\n const idx = subscribers.indexOf(subscriber)\n\n if (idx > -1) {\n subscribers.splice(idx, 1)\n }\n\n if (subscribers.length === 0) {\n // unlisten\n if (dispose) dispose()\n }\n }\n },\n }\n}\n","import {useEffect, useState} from 'react'\nimport {ElementSize, _elementSizeObserver} from '../observers/elementSizeObserver'\n\n/**\n * Subscribe to the size of a DOM element.\n * @beta\n */\nexport function useElementSize(element: HTMLElement | null): ElementSize | null {\n const [size, setSize] = useState<ElementSize | null>(null)\n\n useEffect(() => {\n if (!element) return undefined\n\n return _elementSizeObserver.subscribe(element, setSize)\n }, [element])\n\n return size\n}\n","import {useElementSize} from '../useElementSize'\n\n/**\n * Subscribe to the rect of a DOM element.\n * @beta\n *\n * @deprecated Use `useElementSize` instead\n */\nexport function useElementRect(element: HTMLElement | null): DOMRectReadOnly | null {\n const elementSize = useElementSize(element)\n\n return elementSize?._contentRect || null\n}\n","import {useEffect} from 'react'\n\n/**\n * @beta\n */\nexport function useGlobalKeyDown(onKeyDown: (event: KeyboardEvent) => void): void {\n return useEffect(() => {\n addEventListener('keydown', onKeyDown)\n\n return () => removeEventListener('keydown', onKeyDown)\n }, [onKeyDown])\n}\n","import {RGB} from '../types'\n\nfunction multiplyChannel(b: number, s: number) {\n return b * s\n}\n\n/**\n * Apply the \\`multiply\\` blend mode\n * Source: https://www.w3.org/TR/compositing-1/#blendingmultiply\n * @internal\n */\nexport function multiply(b: RGB, s: RGB): RGB {\n return {\n r: Math.round(clamp(multiplyChannel(b.r / 255, s.r / 255) * 255)),\n g: Math.round(clamp(multiplyChannel(b.g / 255, s.g / 255) * 255)),\n b: Math.round(clamp(multiplyChannel(b.b / 255, s.b / 255) * 255)),\n }\n}\n\nfunction clamp(num: number) {\n return Math.max(Math.min(num, 255), 0)\n}\n","import {RGB} from '../types'\n\nfunction screenChannel(b: number, s: number) {\n return b + s - b * s\n}\n\n/**\n * Apply the \\`screen\\` blend mode\n * Source: https://www.w3.org/TR/compositing-1/#blendingscreen\n * @internal\n */\nexport function screen(b: RGB, s: RGB): RGB {\n return {\n r: Math.round(clamp(screenChannel(b.r / 255, s.r / 255) * 255)),\n g: Math.round(clamp(screenChannel(b.g / 255, s.g / 255) * 255)),\n b: Math.round(clamp(screenChannel(b.b / 255, s.b / 255) * 255)),\n }\n}\n\nfunction clamp(num: number) {\n return Math.max(Math.min(num, 255), 0)\n}\n","import {HSL, RGB} from './types'\n\n/**\n * @internal\n */\nexport function hexToRgb(hex: string): RGB {\n if (hex.length === 4) {\n const hexR = hex.slice(1, 2)\n const hexG = hex.slice(2, 3)\n const hexB = hex.slice(3, 4)\n\n return {\n r: parseInt(hexR + hexR, 16),\n g: parseInt(hexG + hexG, 16),\n b: parseInt(hexB + hexB, 16),\n }\n }\n\n return {\n r: parseInt(hex.slice(1, 3), 16),\n g: parseInt(hex.slice(3, 5), 16),\n b: parseInt(hex.slice(5, 7), 16),\n }\n}\n\n/**\n * @internal\n */\nexport function rgbToHex({r, g, b}: RGB): string {\n return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)\n}\n\n/**\n * @internal\n * @see https://css-tricks.com/converting-color-spaces-in-javascript/\n */\nexport function rgbToHsl({r, g, b}: RGB): HSL {\n // Make r, g, and b fractions of 1\n r /= 255\n g /= 255\n b /= 255\n\n // Find greatest and smallest channel values\n const cmin = Math.min(r, g, b)\n const cmax = Math.max(r, g, b)\n const delta = cmax - cmin\n\n let h = 0\n let s = 0\n let l = 0\n\n // Calculate hue\n // No difference\n if (delta == 0) h = 0\n // Red is max\n else if (cmax == r) h = ((g - b) / delta) % 6\n // Green is max\n else if (cmax == g) h = (b - r) / delta + 2\n // Blue is max\n else h = (r - g) / delta + 4\n\n h = Math.round(h * 60)\n\n // Make negative hues positive behind 360°\n if (h < 0) h += 360\n\n // Calculate lightness\n l = (cmax + cmin) / 2\n\n // Calculate saturation\n s = delta == 0 ? 0 : delta / (1 - Math.abs(2 * l - 1))\n\n // Multiply l and s by 100\n s = +(s * 100).toFixed(1)\n l = +(l * 100).toFixed(1)\n\n return {h, s, l}\n}\n\n/**\n * @internal\n */\nexport function hslToRgb(hsl: HSL): RGB {\n // Must be fractions of 1\n const s = hsl.s / 100\n const l = hsl.l / 100\n\n const c = (1 - Math.abs(2 * l - 1)) * s\n const x = c * (1 - Math.abs(((hsl.h / 60) % 2) - 1))\n const m = l - c / 2\n\n let r = 0\n let g = 0\n let b = 0\n\n if (0 <= hsl.h && hsl.h < 60) {\n r = c\n g = x\n b = 0\n } else if (60 <= hsl.h && hsl.h < 120) {\n r = x\n g = c\n b = 0\n } else if (120 <= hsl.h && hsl.h < 180) {\n r = 0\n g = c\n b = x\n } else if (180 <= hsl.h && hsl.h < 240) {\n r = 0\n g = x\n b = c\n } else if (240 <= hsl.h && hsl.h < 300) {\n r = x\n g = 0\n b = c\n } else if (300 <= hsl.h && hsl.h < 360) {\n r = c\n g = 0\n b = x\n }\n\n return {\n r: Math.round((r + m) * 255),\n g: Math.round((g + m) * 255),\n b: Math.round((b + m) * 255),\n }\n}\n","import {hexToRgb, hslToRgb} from './convert'\nimport {HSL, RGB} from './types'\n\nconst HEX_CHARS = '0123456789ABCDEFabcdef'\n\nconst HSL_RE = /hsl\\(\\s*(\\d+)\\s*,\\s*((\\d+(?:\\.\\d+)?)%)\\s*,\\s*((\\d+(?:\\.\\d+)?)%)\\s*\\)/i\n\nfunction isHexChars(str: string) {\n for (const c of str) {\n if (HEX_CHARS.indexOf(c) === -1) {\n return false\n }\n }\n\n return true\n}\n\nfunction isHex(str: string) {\n if (str[0] !== '#') return false\n\n // Accept both #000 and #000000\n if (!(str.length === 4 || str.length === 7)) return false\n\n return isHexChars(str.slice(1))\n}\n\nfunction parseHsl(str: string): HSL {\n const res = HSL_RE.exec(str)\n\n if (!res) {\n throw new Error(`parseHsl: string is not a HSL color: \"${str}\"`)\n }\n\n return {h: parseInt(res[1]), s: parseFloat(res[3]), l: parseFloat(res[5])}\n}\n\n/**\n * @internal\n */\nexport function parseColor(color: unknown): RGB {\n if (!color) return {r: 0, g: 0, b: 0}\n\n if (typeof color !== 'string') {\n throw new Error('parseColor: expected a string')\n }\n\n if (isHex(color)) {\n return hexToRgb(color)\n }\n\n if (color.startsWith('hsl(')) {\n return hslToRgb(parseHsl(color))\n }\n\n throw new Error(`parseColor: unexpected color format: \"${color}\"`)\n}\n","import {parseColor} from '../parse'\n\n/**\n * @internal\n */\nexport function rgba(color: unknown, a: number): string {\n const rgb = parseColor(color)\n\n return `rgba(${rgb.r},${rgb.g},${rgb.b},${a})`\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorMuted} from '../muted'\nimport {ThemeColorSolid} from '../solid'\nimport {ThemeColorButtonModeKey, ThemeColorButtonTones} from './types'\n\nexport function createButtonTones(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted,\n mode: ThemeColorButtonModeKey\n): ThemeColorButtonTones {\n return {\n default: opts.button({\n base,\n dark,\n solid: solid.default,\n muted: muted.default,\n mode,\n }),\n primary: opts.button({\n base,\n dark,\n solid: solid.primary,\n muted: muted.primary,\n mode,\n }),\n positive: opts.button({\n base,\n dark,\n solid: solid.positive,\n muted: muted.positive,\n mode,\n }),\n caution: opts.button({\n base,\n dark,\n solid: solid.caution,\n muted: muted.caution,\n mode,\n }),\n critical: opts.button({\n base,\n dark,\n solid: solid.critical,\n muted: muted.critical,\n mode,\n }),\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorMuted} from '../muted'\nimport {ThemeColorSolid} from '../solid'\nimport {createButtonTones} from './createButtonTones'\nimport {ThemeColorButton} from './types'\n\nexport function createButtonModes(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted\n): ThemeColorButton {\n return {\n default: createButtonTones(opts, base, dark, solid, muted, 'default'),\n ghost: createButtonTones(opts, base, dark, solid, muted, 'ghost'),\n bleed: createButtonTones(opts, base, dark, solid, muted, 'bleed'),\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorMuted} from '../muted'\nimport {ThemeColorSolid} from '../solid'\nimport {ThemeColorName} from '../types'\nimport {ThemeColorCard} from './types'\n\nexport function createCardStates(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n name: ThemeColorName,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted\n): ThemeColorCard {\n return {\n enabled: opts.card({\n base,\n dark,\n name,\n state: 'enabled',\n solid,\n muted,\n }),\n disabled: opts.card({\n base,\n dark,\n name,\n state: 'disabled',\n solid,\n muted,\n }),\n hovered: opts.card({\n base,\n dark,\n name,\n state: 'hovered',\n solid,\n muted,\n }),\n pressed: opts.card({\n base,\n dark,\n name,\n state: 'pressed',\n solid,\n muted,\n }),\n selected: opts.card({\n base,\n dark,\n name,\n state: 'selected',\n solid,\n muted,\n }),\n }\n}\n","import {ThemeColorBuilderOpts} from './factory'\n\nconst black = 'hsl(0, 0%, 0%)'\nconst white = 'hsl(0, 0%, 100%)'\n\nconst colors = {\n default: {\n lightest: 'hsl(0, 0%, 95%)',\n lighter: 'hsl(0, 0%, 70%)',\n light: 'hsl(0, 0%, 65%)',\n base: 'hsl(0, 0%, 50%)',\n dark: 'hsl(0, 0%, 35%)',\n darker: 'hsl(0, 0%, 20%)',\n darkest: 'hsl(0, 0%, 5%)',\n },\n transparent: {\n lightest: 'hsl(240, 100%, 95%)',\n lighter: 'hsl(240, 100%, 70%)',\n light: 'hsl(240, 100%, 65%)',\n base: 'hsl(240, 100%, 50%)',\n dark: 'hsl(240, 100%, 35%)',\n darker: 'hsl(240, 100%, 20%)',\n darkest: 'hsl(240, 100%, 5%)',\n },\n primary: {\n lightest: 'hsl(240, 100%, 95%)',\n lighter: 'hsl(240, 100%, 70%)',\n light: 'hsl(240, 100%, 65%)',\n base: 'hsl(240, 100%, 50%)',\n dark: 'hsl(240, 100%, 35%)',\n darker: 'hsl(240, 100%, 20%)',\n darkest: 'hsl(240, 100%, 5%)',\n },\n positive: {\n lightest: 'hsl(120, 100%, 95%)',\n lighter: 'hsl(120, 100%, 70%)',\n light: 'hsl(120, 100%, 65%)',\n base: 'hsl(120, 100%, 50%)',\n dark: 'hsl(120, 100%, 35%)',\n darker: 'hsl(120, 100%, 20%)',\n darkest: 'hsl(120, 100%, 5%)',\n },\n caution: {\n lightest: 'hsl(60, 100%, 95%)',\n lighter: 'hsl(60, 100%, 70%)',\n light: 'hsl(60, 100%, 65%)',\n base: 'hsl(60, 100%, 50%)',\n dark: 'hsl(60, 100%, 35%)',\n darker: 'hsl(60, 100%, 20%)',\n darkest: 'hsl(60, 100%, 5%)',\n },\n critical: {\n lightest: 'hsl(0, 100%, 95%)',\n lighter: 'hsl(0, 100%, 70%)',\n light: 'hsl(0, 100%, 65%)',\n base: 'hsl(0, 100%, 50%)',\n dark: 'hsl(0, 100%, 35%)',\n darker: 'hsl(0, 100%, 20%)',\n darkest: 'hsl(0, 100%, 5%)',\n },\n}\n\nconst spots = {\n gray: 'hsl(0, 0%, 50%)',\n red: 'hsl(0, 100%, 50%)',\n orange: 'hsl(30, 100%, 50%)',\n yellow: 'hsl(60, 100%, 50%)',\n green: 'hsl(120, 100%, 50%)',\n cyan: 'hsl(180, 100%, 50%)',\n blue: 'hsl(240, 100%, 50%)',\n purple: 'hsl(270, 100%, 50%)',\n magenta: 'hsl(300, 100%, 50%)',\n}\n\nconst tones = {\n transparent: {\n bg: [colors.transparent.darkest, colors.transparent.lightest],\n fg: [colors.transparent.lightest, colors.transparent.darkest],\n border: [colors.transparent.darker, colors.transparent.lighter],\n focusRing: [colors.transparent.base, colors.transparent.base],\n },\n primary: {\n bg: [colors.primary.darkest, colors.primary.lightest],\n fg: [colors.primary.lightest, colors.primary.darkest],\n border: [colors.primary.darker, colors.primary.lighter],\n focusRing: [colors.primary.base, colors.primary.base],\n },\n positive: {\n bg: [colors.positive.darkest, colors.positive.lightest],\n fg: [colors.positive.lightest, colors.positive.darkest],\n border: [colors.positive.darker, colors.positive.lighter],\n focusRing: [colors.positive.base, colors.positive.base],\n },\n caution: {\n bg: [colors.caution.darkest, colors.caution.lightest],\n fg: [colors.caution.lightest, colors.caution.darkest],\n border: [colors.caution.darker, colors.caution.lighter],\n focusRing: [colors.caution.base, colors.caution.base],\n },\n critical: {\n bg: [colors.critical.darkest, colors.critical.lightest],\n fg: [colors.critical.lightest, colors.critical.darkest],\n border: [colors.critical.darker, colors.critical.lighter],\n focusRing: [colors.critical.base, colors.critical.base],\n },\n}\n\nexport const defaultOpts: ThemeColorBuilderOpts = {\n base: ({dark, name}) => {\n if (name === 'default') {\n return {\n bg: dark ? black : white,\n fg: dark ? white : black,\n border: dark ? colors.default.darkest : colors.default.lightest,\n focusRing: colors.primary.base,\n shadow: {\n outline: black,\n umbra: black,\n penumbra: black,\n ambient: black,\n },\n skeleton: {\n from: dark ? white : black,\n to: dark ? white : black,\n },\n }\n }\n\n // Variants:\n // - primary\n // - positive\n // - caution\n // - critical\n return {\n bg: tones[name].bg[dark ? 0 : 1],\n fg: tones[name].fg[dark ? 0 : 1],\n border: tones[name].border[dark ? 0 : 1],\n focusRing: tones[name].focusRing[dark ? 0 : 1],\n shadow: {\n outline: black,\n umbra: black,\n penumbra: black,\n ambient: black,\n },\n skeleton: {\n from: dark ? white : black,\n to: dark ? white : black,\n },\n }\n },\n\n solid: ({base, dark, state, tone}) => {\n const color = colors[tone]\n\n if (state === 'hovered') {\n return {\n bg: dark ? color.light : color.dark,\n bg2: dark ? color.light : color.dark,\n border: dark ? color.lighter : color.darker,\n fg: dark ? color.darkest : color.lightest,\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n }\n }\n\n return {\n bg: color.base,\n bg2: color.base,\n border: dark ? color.light : color.dark,\n fg: dark ? color.darkest : color.lightest,\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n }\n },\n\n muted: ({base, dark, state, tone}) => {\n const color = colors[tone]\n\n if (state === 'hovered') {\n return {\n bg: dark ? color.darker : color.lighter,\n bg2: dark ? color.darker : color.lighter,\n border: dark ? color.lighter : color.darker,\n fg: dark ? color.lightest : color.darkest,\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n }\n }\n\n return {\n bg: dark ? color.darkest : color.lightest,\n bg2: dark ? color.darkest : color.lightest,\n border: dark ? color.darker : color.lighter,\n fg: dark ? color.lighter : color.darker,\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n }\n },\n\n button: ({base, mode, muted, solid}) => {\n if (mode === 'bleed') {\n return {\n ...muted,\n enabled: {\n bg: 'transparent',\n bg2: 'transparent',\n fg: muted.enabled.fg,\n border: 'transparent',\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n },\n hovered: {\n bg: muted.enabled.bg,\n bg2: muted.enabled.bg,\n fg: muted.hovered.fg,\n border: 'transparent',\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n },\n }\n }\n\n if (mode === 'ghost')\n return {\n ...solid,\n enabled: muted.enabled,\n }\n\n return solid\n },\n\n card: ({base}) => {\n return {\n bg: black,\n bg2: black,\n fg: black,\n border: black,\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n }\n },\n\n input: () => {\n return {\n bg: black,\n fg: black,\n border: black,\n placeholder: black,\n }\n },\n\n selectable: ({muted, state, tone}) => {\n return muted[tone][state]\n },\n\n spot: ({key}) => {\n return spots[key]\n },\n\n syntax: () => ({\n atrule: black,\n attrName: black,\n attrValue: black,\n attribute: black,\n boolean: black,\n builtin: black,\n cdata: black,\n char: black,\n class: black,\n className: black,\n comment: black,\n constant: black,\n deleted: black,\n doctype: black,\n entity: black,\n function: black,\n hexcode: black,\n id: black,\n important: black,\n inserted: black,\n keyword: black,\n number: black,\n operator: black,\n prolog: black,\n property: black,\n pseudoClass: black,\n pseudoElement: black,\n punctuation: black,\n regex: black,\n selector: black,\n string: black,\n symbol: black,\n tag: black,\n unit: black,\n url: black,\n variable: black,\n }),\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorMuted} from '../muted'\nimport {ThemeColorSolid} from '../solid'\nimport {ThemeColorInput} from './types'\n\nexport function createInputModes(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted\n): ThemeColorInput {\n return {\n default: {\n enabled: opts.input({\n base,\n dark,\n mode: 'default',\n state: 'enabled',\n solid: solid.default,\n muted: muted.default,\n }),\n disabled: opts.input({\n base,\n dark,\n mode: 'default',\n state: 'disabled',\n solid: solid.default,\n muted: muted.default,\n }),\n hovered: opts.input({\n base,\n dark,\n mode: 'default',\n state: 'hovered',\n solid: solid.default,\n muted: muted.default,\n }),\n readOnly: opts.input({\n base,\n dark,\n mode: 'default',\n state: 'readOnly',\n solid: solid.default,\n muted: muted.default,\n }),\n },\n invalid: {\n enabled: opts.input({\n base,\n dark,\n mode: 'invalid',\n state: 'enabled',\n solid: solid.default,\n muted: muted.default,\n }),\n disabled: opts.input({\n base,\n dark,\n mode: 'invalid',\n state: 'disabled',\n solid: solid.default,\n muted: muted.default,\n }),\n hovered: opts.input({\n base,\n dark,\n mode: 'invalid',\n state: 'hovered',\n solid: solid.default,\n muted: muted.default,\n }),\n readOnly: opts.input({\n base,\n dark,\n mode: 'invalid',\n state: 'readOnly',\n solid: solid.default,\n muted: muted.default,\n }),\n },\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorMuted} from '../muted'\nimport {ThemeColorSolid} from '../solid'\nimport {ThemeColorSelectable, ThemeColorSelectableStates} from './types'\n\nexport function createSelectableTones(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted\n): ThemeColorSelectable {\n return {\n default: _createSelectableStates(opts, base, dark, solid, muted, 'default'),\n primary: _createSelectableStates(opts, base, dark, solid, muted, 'primary'),\n positive: _createSelectableStates(opts, base, dark, solid, muted, 'positive'),\n caution: _createSelectableStates(opts, base, dark, solid, muted, 'caution'),\n critical: _createSelectableStates(opts, base, dark, solid, muted, 'critical'),\n }\n}\n\nfunction _createSelectableStates(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted,\n tone: 'default' | 'primary' | 'positive' | 'caution' | 'critical'\n): ThemeColorSelectableStates {\n return {\n enabled: opts.selectable({\n base,\n dark,\n solid,\n muted,\n state: 'enabled',\n tone,\n }),\n hovered: opts.selectable({\n base,\n dark,\n solid,\n muted,\n state: 'hovered',\n tone,\n }),\n pressed: opts.selectable({\n base,\n dark,\n solid,\n muted,\n state: 'pressed',\n tone,\n }),\n selected: opts.selectable({\n base,\n dark,\n solid,\n muted,\n state: 'selected',\n tone,\n }),\n disabled: opts.selectable({\n base,\n dark,\n solid,\n muted,\n state: 'disabled',\n tone,\n }),\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorSpot} from './types'\n\nexport function createSpot(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean\n): ThemeColorSpot {\n return {\n gray: opts.spot({base, dark, key: 'gray'}),\n blue: opts.spot({base, dark, key: 'blue'}),\n purple: opts.spot({base, dark, key: 'purple'}),\n magenta: opts.spot({base, dark, key: 'magenta'}),\n red: opts.spot({base, dark, key: 'red'}),\n orange: opts.spot({base, dark, key: 'orange'}),\n yellow: opts.spot({base, dark, key: 'yellow'}),\n green: opts.spot({base, dark, key: 'green'}),\n cyan: opts.spot({base, dark, key: 'cyan'}),\n }\n}\n","import {ThemeColorGenericState} from './_generic'\nimport {ThemeColorBase} from './base'\nimport {ThemeColorButtonModeKey, ThemeColorButtonStates} from './button'\nimport {createButtonModes} from './button/createButtonModes'\nimport {ThemeColorCardState} from './card'\nimport {createCardStates} from './card/createCardStates'\nimport {defaultOpts} from './defaults'\nimport {ThemeColorInputState} from './input'\nimport {createInputModes} from './input/createInputModes'\nimport {ThemeColorMuted, ThemeColorMutedTone} from './muted'\nimport {createMutedTones} from './muted/createMuted'\nimport {ThemeColorSelectableState} from './selectable'\nimport {createSelectableTones} from './selectable/createSelectableTones'\nimport {ThemeColorSolid, ThemeColorSolidTone} from './solid'\nimport {createSolidTones} from './solid/createSolidTones'\nimport {ThemeColorSpotKey} from './spot'\nimport {createSpot} from './spot/createSpot'\nimport {ThemeColorSyntax} from './syntax'\nimport {\n ThemeColorName,\n ThemeColorScheme,\n ThemeColorSchemes,\n ThemeColor,\n ThemeColorToneKey,\n} from './types'\n\n/**\n * @public\n */\nexport interface ThemeColorBuilderOpts {\n base: (opts: {dark: boolean; name: ThemeColorName}) => ThemeColorBase\n solid: (opts: {\n base: ThemeColorBase\n dark: boolean\n tone: ThemeColorToneKey\n name: ThemeColorName\n state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'\n }) => ThemeColorGenericState\n muted: (opts: {\n base: ThemeColorBase\n dark: boolean\n tone: ThemeColorToneKey\n name: ThemeColorName\n state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'\n }) => ThemeColorGenericState\n card: (opts: {\n base: ThemeColorBase\n dark: boolean\n muted: ThemeColorMuted\n name: ThemeColorName\n solid: ThemeColorSolid\n state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'\n }) => ThemeColorCardState\n button: (opts: {\n dark: boolean\n mode: ThemeColorButtonModeKey\n base: ThemeColorBase\n solid: ThemeColorSolidTone\n muted: ThemeColorMutedTone\n }) => ThemeColorButtonStates\n input: (opts: {\n base: ThemeColorBase\n solid: ThemeColorSolidTone\n muted: ThemeColorMutedTone\n dark: boolean\n mode: 'default' | 'invalid'\n state: 'enabled' | 'disabled' | 'hovered' | 'readOnly'\n }) => ThemeColorInputState\n selectable: (opts: {\n dark: boolean\n base: ThemeColorBase\n solid: ThemeColorSolid\n muted: ThemeColorMuted\n state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'\n tone: 'default' | 'primary' | 'positive' | 'caution' | 'critical'\n }) => ThemeColorSelectableState\n syntax: (opts: {base: ThemeColorBase; dark: boolean}) => ThemeColorSyntax\n spot: (opts: {base: ThemeColorBase; dark: boolean; key: ThemeColorSpotKey}) => string\n}\n\n/**\n * @public\n */\nexport type PartialThemeColorBuilderOpts = Partial<ThemeColorBuilderOpts>\n\n/**\n * @public\n */\nexport function createColorTheme(\n partialOpts: PartialThemeColorBuilderOpts = {}\n): ThemeColorSchemes {\n const builders: ThemeColorBuilderOpts = {...defaultOpts, ...partialOpts}\n\n return {\n light: _createColorScheme(builders, false),\n dark: _createColorScheme(builders, true),\n }\n}\n\n/**\n * @internal\n */\nfunction _createColorScheme(opts: ThemeColorBuilderOpts, dark: boolean): ThemeColorScheme {\n return {\n default: _createColor(opts, dark, 'default'),\n transparent: _createColor(opts, dark, 'transparent'),\n primary: _createColor(opts, dark, 'primary'),\n positive: _createColor(opts, dark, 'positive'),\n caution: _createColor(opts, dark, 'caution'),\n critical: _createColor(opts, dark, 'critical'),\n }\n}\n\n/**\n * @internal\n */\nfunction _createColor(\n opts: ThemeColorBuilderOpts,\n dark: boolean,\n name: ThemeColorName\n): ThemeColor {\n const base = opts.base({dark, name})\n const solid = createSolidTones(opts, base, dark, name)\n const muted = createMutedTones(opts, base, dark, name)\n\n return {\n base,\n button: createButtonModes(opts, base, dark, solid, muted),\n card: createCardStates(opts, base, dark, name, solid, muted),\n dark,\n input: createInputModes(opts, base, dark, solid, muted),\n selectable: createSelectableTones(opts, base, dark, solid, muted),\n spot: createSpot(opts, base, dark),\n syntax: opts.syntax({base, dark}),\n solid,\n muted,\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorName} from '../types'\nimport {ThemeColorSolid} from './types'\n\nexport function createSolidTones(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n name: ThemeColorName\n): ThemeColorSolid {\n return {\n default: {\n enabled: opts.solid({base, dark, tone: 'default', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'default', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'default', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'default', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'default', name, state: 'selected'}),\n },\n transparent: {\n enabled: opts.solid({base, dark, tone: 'transparent', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'transparent', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'transparent', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'transparent', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'transparent', name, state: 'selected'}),\n },\n primary: {\n enabled: opts.solid({base, dark, tone: 'primary', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'primary', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'primary', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'primary', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'primary', name, state: 'selected'}),\n },\n positive: {\n enabled: opts.solid({base, dark, tone: 'positive', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'positive', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'positive', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'positive', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'positive', name, state: 'selected'}),\n },\n caution: {\n enabled: opts.solid({base, dark, tone: 'caution', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'caution', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'caution', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'caution', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'caution', name, state: 'selected'}),\n },\n critical: {\n enabled: opts.solid({base, dark, tone: 'critical', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'critical', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'critical', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'critical', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'critical', name, state: 'selected'}),\n },\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorName} from '../types'\nimport {ThemeColorMuted} from './types'\n\nexport function createMutedTones(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n name: ThemeColorName\n): ThemeColorMuted {\n return {\n default: {\n enabled: opts.muted({base, dark, tone: 'default', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'default', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'default', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'default', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'default', name, state: 'selected'}),\n },\n transparent: {\n enabled: opts.muted({base, dark, tone: 'transparent', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'transparent', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'transparent', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'transparent', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'transparent', name, state: 'selected'}),\n },\n primary: {\n enabled: opts.muted({base, dark, tone: 'primary', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'primary', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'primary', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'primary', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'primary', name, state: 'selected'}),\n },\n positive: {\n enabled: opts.muted({base, dark, tone: 'positive', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'positive', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'positive', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'positive', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'positive', name, state: 'selected'}),\n },\n caution: {\n enabled: opts.muted({base, dark, tone: 'caution', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'caution', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'caution', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'caution', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'caution', name, state: 'selected'}),\n },\n critical: {\n enabled: opts.muted({base, dark, tone: 'critical', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'critical', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'critical', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'critical', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'critical', name, state: 'selected'}),\n },\n }\n}\n","import {parseColor, rgbToHex, screen as _screen, multiply as _multiply} from '../lib/color-fns'\n\nexport function multiply(bg: string, fg: string): string {\n const b = parseColor(bg)\n const s = parseColor(fg)\n const hex = rgbToHex(_multiply(b, s))\n\n return hex\n}\n\nexport function screen(bg: string, fg: string): string {\n const b = parseColor(bg)\n const s = parseColor(fg)\n const hex = rgbToHex(_screen(b, s))\n\n return hex\n}\n","import {black, ColorTints, hues, white} from '@sanity/color'\nimport {rgba} from '../lib/color-fns'\nimport {createColorTheme} from '../lib/theme'\nimport {multiply, screen} from './helpers'\n\nconst tones: {[key: string]: ColorTints} = {\n default: hues.gray,\n transparent: hues.gray,\n primary: hues.blue,\n positive: hues.green,\n caution: hues.yellow,\n critical: hues.red,\n}\n\nconst NEUTRAL_TONES = ['default', 'transparent']\n\nexport const color = createColorTheme({\n base: ({dark, name}) => {\n if (name === 'default') {\n const tints = hues.gray\n const skeletonFrom = dark ? tints[900].hex : tints[100].hex\n\n return {\n fg: dark ? white.hex : black.hex,\n bg: dark ? black.hex : white.hex,\n border: tints[dark ? 800 : 200].hex,\n focusRing: hues.blue[dark ? 500 : 500].hex,\n shadow: {\n outline: rgba(tints[500].hex, 0.4),\n umbra: dark ? rgba(tints[950].hex, 0.4) : rgba(tints[500].hex, 0.2),\n penumbra: dark ? rgba(tints[950].hex, 0.28) : rgba(tints[500].hex, 0.14),\n ambient: dark ? rgba(tints[950].hex, 0.24) : rgba(tints[500].hex, 0.12),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (name === 'transparent') {\n const tints = tones.default\n const skeletonFrom = tints[dark ? 800 : 200].hex\n\n return {\n fg: tints[dark ? 100 : 900].hex,\n bg: tints[dark ? 950 : 50].hex,\n border: tints[dark ? 800 : 300].hex,\n focusRing: hues.blue[500].hex,\n shadow: {\n outline: rgba(tints[500].hex, 0.4),\n umbra: dark ? rgba(tints[900].hex, 0.4) : rgba(tints[500].hex, 0.2),\n penumbra: dark ? rgba(tints[900].hex, 0.28) : rgba(tints[500].hex, 0.14),\n ambient: dark ? rgba(tints[900].hex, 0.24) : rgba(tints[500].hex, 0.12),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n const tints = tones[name] || tones.default\n const skeletonFrom = tints[dark ? 800 : 200].hex\n\n return {\n fg: tints[dark ? 100 : 900].hex,\n bg: tints[dark ? 950 : 50].hex,\n border: tints[dark ? 800 : 200].hex,\n focusRing: tints[500].hex,\n shadow: {\n outline: rgba(tints[500].hex, 0.4),\n umbra: dark ? rgba(tints[900].hex, 0.4) : rgba(tints[500].hex, 0.2),\n penumbra: dark ? rgba(tints[900].hex, 0.28) : rgba(tints[500].hex, 0.14),\n ambient: dark ? rgba(tints[900].hex, 0.24) : rgba(tints[500].hex, 0.12),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n solid: ({base, dark, name, state, tone}) => {\n const mix = dark ? screen : multiply\n const mix2 = dark ? multiply : screen\n const defaultTints = tones[name] || tones.default\n const isNeutral = NEUTRAL_TONES.includes(name) && NEUTRAL_TONES.includes(tone)\n\n let tints = tones[tone === 'default' ? name : tone] || defaultTints\n\n if (state === 'disabled') {\n tints = defaultTints\n\n const bg = mix(base.bg, tints[dark ? 800 : 200].hex)\n const skeletonFrom = mix2(bg, tints[dark ? 200 : 800].hex)\n\n return {\n bg,\n bg2: mix2(bg, tints[dark ? 50 : 950].hex),\n border: mix(base.bg, tints[dark ? 800 : 200].hex),\n fg: mix(base.bg, dark ? black.hex : white.hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 950 : 50].hex),\n },\n accent: {\n fg: mix(base.bg, tints[dark ? 950 : 50].hex),\n },\n link: {\n fg: mix(base.bg, tints[dark ? 950 : 50].hex),\n },\n code: {\n bg,\n fg: mix(base.bg, tints[dark ? 950 : 50].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'hovered') {\n const bg = mix(base.bg, tints[dark ? 300 : 600].hex)\n const skeletonFrom = mix2(bg, tints[dark ? 200 : 800].hex)\n\n return {\n bg,\n bg2: mix2(bg, tints[dark ? 50 : 950].hex),\n border: mix(base.bg, tints[dark ? 300 : 600].hex),\n fg: mix(base.bg, dark ? black.hex : white.hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n accent: {\n fg: mix2(bg, hues.red[dark ? 800 : 200].hex),\n },\n link: {\n fg: mix2(bg, hues.blue[dark ? 800 : 200].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'pressed') {\n const bg = mix(base.bg, tints[dark ? 200 : 800].hex)\n const skeletonFrom = mix2(bg, tints[dark ? 200 : 800].hex)\n\n return {\n bg: mix(base.bg, tints[dark ? 200 : 800].hex),\n bg2: mix2(bg, tints[dark ? 50 : 950].hex),\n border: mix(base.bg, tints[dark ? 200 : 800].hex),\n fg: mix(base.bg, dark ? black.hex : white.hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n accent: {\n fg: mix2(bg, hues.red[dark ? 800 : 200].hex),\n },\n link: {\n fg: mix2(bg, hues.blue[dark ? 800 : 200].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'selected') {\n if (isNeutral) {\n tints = tones.primary\n }\n\n const bg = mix(base.bg, tints[dark ? 200 : 800].hex)\n const skeletonFrom = mix2(bg, tints[dark ? 200 : 800].hex)\n\n return {\n bg,\n bg2: mix2(bg, tints[dark ? 50 : 950].hex),\n border: mix(base.bg, tints[dark ? 200 : 800].hex),\n fg: mix(base.bg, dark ? black.hex : white.hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n accent: {\n fg: mix2(bg, hues.red[dark ? 800 : 200].hex),\n },\n link: {\n fg: mix2(bg, hues.blue[dark ? 800 : 200].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n // state: \"enabled\" | unknown\n const bg = mix(base.bg, tints[dark ? 400 : 500].hex)\n const skeletonFrom = mix2(bg, tints[dark ? 200 : 800].hex)\n\n return {\n bg,\n bg2: mix2(bg, tints[dark ? 50 : 950].hex),\n border: mix(base.bg, tints[dark ? 400 : 500].hex),\n fg: mix(base.bg, dark ? black.hex : white.hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 900 : 100].hex),\n },\n accent: {\n fg: mix2(bg, hues.red[dark ? 900 : 100].hex),\n },\n link: {\n fg: mix2(bg, hues.blue[dark ? 900 : 100].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 900 : 100].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n muted: ({base, dark, name, state, tone}) => {\n const mix = dark ? screen : multiply\n const defaultTints = tones[name] || tones.default\n const isNeutral = NEUTRAL_TONES.includes(name) && NEUTRAL_TONES.includes(tone)\n\n let tints = tones[tone === 'default' ? name : tone] || defaultTints\n\n if (state === 'disabled') {\n tints = defaultTints\n\n const bg = base.bg\n const skeletonFrom = mix(bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n border: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(bg, tints[dark ? 800 : 200].hex),\n muted: {\n fg: mix(bg, tints[dark ? 900 : 100].hex),\n },\n accent: {\n fg: mix(bg, tints[dark ? 900 : 100].hex),\n },\n link: {\n fg: mix(bg, tints[dark ? 900 : 100].hex),\n },\n code: {\n bg,\n fg: mix(bg, tints[dark ? 900 : 100].hex),\n },\n skeleton: {\n from: rgba(skeletonFrom, 0.5),\n to: rgba(skeletonFrom, 0.25),\n },\n }\n }\n\n if (state === 'hovered') {\n // if (isNeutral) {\n // tints = tones.primary\n // }\n\n const bg = mix(base.bg, tints[dark ? 950 : 50].hex)\n const skeletonFrom = mix(bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n border: mix(bg, tints[dark ? 900 : 100].hex),\n fg: mix(base.bg, tints[dark ? 200 : 800].hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n accent: {\n fg: mix(base.bg, hues.red[dark ? 400 : 500].hex),\n },\n link: {\n fg: mix(base.bg, hues.blue[dark ? 400 : 600].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'pressed') {\n if (isNeutral) {\n tints = tones.primary\n }\n\n const bg = mix(base.bg, tints[dark ? 900 : 100].hex)\n const skeletonFrom = mix(bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n border: mix(bg, tints[dark ? 900 : 100].hex),\n fg: mix(base.bg, tints[dark ? 200 : 800].hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n accent: {\n fg: mix(bg, hues.red[dark ? 400 : 500].hex),\n },\n link: {\n fg: mix(bg, hues.blue[dark ? 400 : 600].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'selected') {\n if (isNeutral) {\n tints = tones.primary\n }\n\n const bg = mix(base.bg, tints[dark ? 900 : 100].hex)\n const skeletonFrom = mix(bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n border: mix(bg, tints[dark ? 900 : 100].hex),\n fg: mix(base.bg, tints[dark ? 200 : 800].hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n accent: {\n fg: mix(bg, hues.red[dark ? 400 : 500].hex),\n },\n link: {\n fg: mix(bg, hues.blue[dark ? 400 : 600].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n const bg = base.bg\n const skeletonFrom = mix(bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n border: mix(bg, tints[dark ? 900 : 100].hex),\n fg: mix(base.bg, tints[dark ? 300 : 700].hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n accent: {\n fg: mix(base.bg, hues.red[dark ? 400 : 500].hex),\n },\n link: {\n fg: mix(base.bg, hues.blue[dark ? 400 : 600].hex),\n },\n code: {\n bg: mix(base.bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n button: ({base, mode, muted, solid}) => {\n if (mode === 'bleed') {\n return {\n enabled: {\n ...muted.enabled,\n border: muted.enabled.bg,\n },\n hovered: {\n ...muted.hovered,\n border: muted.hovered.bg,\n },\n pressed: {\n ...muted.pressed,\n border: muted.pressed.bg,\n },\n selected: {\n ...muted.selected,\n border: muted.selected.bg,\n },\n disabled: {\n ...muted.disabled,\n border: muted.disabled.bg,\n },\n }\n }\n\n if (mode === 'ghost') {\n return {\n ...solid,\n enabled: {\n ...muted.enabled,\n border: base.border,\n },\n disabled: muted.disabled,\n }\n }\n\n return solid\n },\n\n card: ({base, dark, muted, name, solid, state}) => {\n if (state === 'hovered') {\n return muted[name].hovered\n }\n\n if (state === 'disabled') {\n return muted[name].disabled\n }\n\n const isNeutral = NEUTRAL_TONES.includes(name)\n const tints = tones[name] || tones.default\n const mix = dark ? screen : multiply\n\n if (state === 'pressed') {\n if (isNeutral) {\n return muted.primary.pressed\n }\n\n return muted[name].pressed\n }\n\n if (state === 'selected') {\n if (isNeutral) {\n return solid.primary.enabled\n }\n\n return solid[name].enabled\n }\n\n const bg = base.bg\n const skeletonFrom = mix(base.bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n fg: base.fg,\n border: base.border,\n muted: {\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n accent: {\n fg: mix(base.bg, hues.red[dark ? 400 : 500].hex),\n },\n link: {\n fg: mix(base.bg, hues.blue[dark ? 400 : 600].hex),\n },\n code: {\n bg: mix(base.bg, tints[dark ? 950 : 50].hex),\n fg: tints[dark ? 400 : 600].hex,\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n input: ({base, dark, mode, state}) => {\n const mix = dark ? screen : multiply\n\n if (mode === 'invalid') {\n const tints = tones.critical\n\n return {\n bg: mix(base.bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n border: mix(base.bg, tints[dark ? 800 : 200].hex),\n placeholder: mix(base.bg, tints[dark ? 600 : 400].hex),\n }\n }\n\n if (state === 'hovered') {\n return {\n bg: base.bg,\n fg: base.fg,\n border: mix(base.bg, hues.gray[dark ? 700 : 300].hex),\n placeholder: mix(base.bg, hues.gray[dark ? 600 : 400].hex),\n }\n }\n\n if (state === 'disabled') {\n return {\n bg: mix(base.bg, hues.gray[dark ? 950 : 50].hex),\n fg: mix(base.bg, hues.gray[dark ? 700 : 300].hex),\n border: mix(base.bg, hues.gray[dark ? 900 : 100].hex),\n placeholder: mix(base.bg, hues.gray[dark ? 800 : 200].hex),\n }\n }\n\n if (state === 'readOnly') {\n return {\n bg: mix(base.bg, hues.gray[dark ? 950 : 50].hex),\n fg: mix(base.bg, hues.gray[dark ? 200 : 800].hex),\n border: mix(base.bg, hues.gray[dark ? 800 : 200].hex),\n placeholder: mix(base.bg, hues.gray[dark ? 600 : 400].hex),\n }\n }\n\n return {\n bg: base.bg,\n fg: base.fg,\n border: base.border,\n placeholder: mix(base.bg, hues.gray[dark ? 600 : 400].hex),\n }\n },\n\n selectable: ({base, muted, tone, solid, state}) => {\n if (state === 'enabled') {\n return {\n ...muted[tone].enabled,\n bg: base.bg,\n }\n }\n\n if (state === 'pressed') {\n if (tone === 'default') {\n return muted.primary.pressed\n }\n\n return muted[tone].pressed\n }\n\n if (state === 'selected') {\n if (tone === 'default') {\n return solid.primary.enabled\n }\n\n return solid[tone].enabled\n }\n\n if (state === 'disabled') {\n return {\n ...muted[tone].disabled,\n bg: base.bg,\n }\n }\n\n return muted[tone][state]\n },\n\n spot: ({base, dark, key}) => {\n const mix = dark ? screen : multiply\n\n return mix(base.bg, hues[key][dark ? 400 : 500].hex)\n },\n\n syntax: ({base, dark}) => {\n const mix = dark ? screen : multiply\n const mainShade = dark ? 400 : 600\n const secondaryShade = dark ? 600 : 400\n\n return {\n atrule: mix(base.bg, hues.purple[mainShade].hex),\n attrName: mix(base.bg, hues.green[mainShade].hex),\n attrValue: mix(base.bg, hues.yellow[mainShade].hex),\n attribute: mix(base.bg, hues.yellow[mainShade].hex),\n boolean: mix(base.bg, hues.purple[mainShade].hex),\n builtin: mix(base.bg, hues.purple[mainShade].hex),\n cdata: mix(base.bg, hues.yellow[mainShade].hex),\n char: mix(base.bg, hues.yellow[mainShade].hex),\n class: mix(base.bg, hues.orange[mainShade].hex),\n className: mix(base.bg, hues.cyan[mainShade].hex),\n comment: mix(base.bg, hues.gray[secondaryShade].hex),\n constant: mix(base.bg, hues.purple[mainShade].hex),\n deleted: mix(base.bg, hues.red[mainShade].hex),\n doctype: mix(base.bg, hues.gray[secondaryShade].hex),\n entity: mix(base.bg, hues.red[mainShade].hex),\n function: mix(base.bg, hues.green[mainShade].hex),\n hexcode: mix(base.bg, hues.blue[mainShade].hex),\n id: mix(base.bg, hues.purple[mainShade].hex),\n important: mix(base.bg, hues.purple[mainShade].hex),\n inserted: mix(base.bg, hues.yellow[mainShade].hex),\n keyword: mix(base.bg, hues.magenta[mainShade].hex),\n number: mix(base.bg, hues.purple[mainShade].hex),\n operator: mix(base.bg, hues.magenta[mainShade].hex),\n prolog: mix(base.bg, hues.gray[secondaryShade].hex),\n property: mix(base.bg, hues.blue[mainShade].hex),\n pseudoClass: mix(base.bg, hues.yellow[mainShade].hex),\n pseudoElement: mix(base.bg, hues.yellow[mainShade].hex),\n punctuation: mix(base.bg, hues.gray[mainShade].hex),\n regex: mix(base.bg, hues.blue[mainShade].hex),\n selector: mix(base.bg, hues.red[mainShade].hex),\n string: mix(base.bg, hues.yellow[mainShade].hex),\n symbol: mix(base.bg, hues.purple[mainShade].hex),\n tag: mix(base.bg, hues.red[mainShade].hex),\n unit: mix(base.bg, hues.orange[mainShade].hex),\n url: mix(base.bg, hues.red[mainShade].hex),\n variable: mix(base.bg, hues.red[mainShade].hex),\n }\n },\n})\n","import {RootTheme} from '../types'\nimport {color} from './color'\nimport {fonts} from './fonts'\n\n/**\n * @public\n */\nexport const studioTheme: RootTheme = {\n avatar: {\n sizes: [\n {distance: -3, size: 25},\n {distance: -6, size: 35},\n {distance: -9, size: 55},\n ],\n },\n button: {\n textWeight: 'medium',\n },\n color,\n container: [320, 640, 960, 1280, 1600, 1920],\n focusRing: {\n offset: 1,\n width: 2,\n },\n fonts,\n media: [360, 600, 900, 1200, 1800, 2400],\n radius: [0, 1, 3, 6, 9, 12, 21],\n shadows: [\n null,\n {umbra: [0, 0, 0, 0], penumbra: [0, 0, 0, 0], ambient: [0, 0, 0, 0]},\n {umbra: [0, 3, 5, -1], penumbra: [0, 6, 10, 0], ambient: [0, 1, 18, 0]},\n {umbra: [0, 7, 8, -4], penumbra: [0, 12, 17, 2], ambient: [0, 5, 22, 4]},\n {umbra: [0, 9, 11, -5], penumbra: [0, 18, 28, 2], ambient: [0, 7, 34, 6]},\n {umbra: [0, 11, 15, -7], penumbra: [0, 24, 38, 3], ambient: [0, 9, 46, 8]},\n ],\n space: [0, 4, 8, 12, 20, 32, 52, 84, 136, 220],\n input: {\n checkbox: {\n size: 17,\n },\n radio: {\n size: 17,\n markSize: 9,\n },\n switch: {\n width: 33,\n height: 17,\n padding: 4,\n transitionDurationMs: 150,\n transitionTimingFunction: 'ease-out',\n },\n border: {\n width: 1,\n },\n },\n // styles: {\n // button: {\n // root: {\n // transition: 'background-color 100ms,border-color 100ms,color 100ms',\n // },\n // },\n // card: {\n // root: {\n // transition: 'background-color 100ms,border-color 100ms,color 100ms',\n // },\n // },\n // },\n}\n","import {ThemeFonts} from '../lib/theme'\n\nexport const fonts: ThemeFonts = {\n code: {\n family: 'ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace',\n weights: {\n regular: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n sizes: [\n {\n ascenderHeight: 3,\n descenderHeight: 3,\n fontSize: 10,\n iconSize: 17,\n lineHeight: 13,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 4,\n descenderHeight: 4,\n fontSize: 13,\n iconSize: 21,\n lineHeight: 17,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 5,\n descenderHeight: 5,\n fontSize: 16,\n iconSize: 25,\n lineHeight: 21,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 6,\n descenderHeight: 6,\n fontSize: 19,\n iconSize: 29,\n lineHeight: 25,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 7,\n descenderHeight: 7,\n fontSize: 22,\n iconSize: 33,\n lineHeight: 29,\n letterSpacing: 0,\n },\n ],\n },\n heading: {\n family:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Liberation Sans\", Helvetica, Arial, system-ui, sans-serif',\n weights: {\n regular: 700,\n medium: 800,\n semibold: 900,\n bold: 900,\n },\n sizes: [\n {\n ascenderHeight: 4,\n descenderHeight: 4,\n fontSize: 12,\n iconSize: 17,\n lineHeight: 17,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 5,\n descenderHeight: 5,\n fontSize: 16,\n iconSize: 25,\n lineHeight: 21,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 6,\n descenderHeight: 6,\n fontSize: 21,\n iconSize: 33,\n lineHeight: 27,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 7,\n descenderHeight: 7,\n fontSize: 27,\n iconSize: 41,\n lineHeight: 33,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 8,\n descenderHeight: 8,\n fontSize: 33,\n iconSize: 49,\n lineHeight: 39,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 9,\n descenderHeight: 9,\n fontSize: 38,\n iconSize: 53,\n lineHeight: 45,\n letterSpacing: 0,\n },\n ],\n },\n label: {\n family:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Liberation Sans\", system-ui, sans-serif',\n weights: {\n regular: 600,\n medium: 700,\n semibold: 800,\n bold: 900,\n },\n sizes: [\n {\n ascenderHeight: 2,\n descenderHeight: 2,\n fontSize: 9.8,\n iconSize: 15,\n lineHeight: 11,\n letterSpacing: 0.5,\n },\n {\n ascenderHeight: 2,\n descenderHeight: 2,\n fontSize: 11.25,\n iconSize: 17,\n lineHeight: 12,\n letterSpacing: 0.5,\n },\n {\n ascenderHeight: 2,\n descenderHeight: 2,\n fontSize: 12.75,\n iconSize: 19,\n lineHeight: 13,\n letterSpacing: 0.5,\n },\n {\n ascenderHeight: 2,\n descenderHeight: 2,\n fontSize: 14,\n iconSize: 21,\n lineHeight: 14,\n letterSpacing: 0.5,\n },\n {\n ascenderHeight: 2,\n descenderHeight: 2,\n fontSize: 15.5,\n iconSize: 23,\n lineHeight: 15,\n letterSpacing: 0.5,\n },\n ],\n },\n text: {\n family:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Liberation Sans\", Helvetica, Arial, system-ui, sans-serif',\n weights: {\n regular: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n sizes: [\n {\n ascenderHeight: 3,\n descenderHeight: 3,\n fontSize: 10,\n iconSize: 17,\n lineHeight: 13,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 4,\n descenderHeight: 4,\n fontSize: 13,\n iconSize: 21,\n lineHeight: 17,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 5,\n descenderHeight: 5,\n fontSize: 16,\n iconSize: 25,\n lineHeight: 21,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 6,\n descenderHeight: 6,\n fontSize: 19,\n iconSize: 29,\n lineHeight: 25,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 7,\n descenderHeight: 7,\n fontSize: 22,\n iconSize: 33,\n lineHeight: 29,\n letterSpacing: 0,\n },\n ],\n },\n}\n","import {ThemeLayer} from './lib/theme/layer'\n\nexport const DEFAULT_THEME_LAYER: ThemeLayer = {\n dialog: {zOffset: 600},\n popover: {zOffset: 400},\n tooltip: {zOffset: 200},\n}\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","import {createContext} from 'react'\nimport {globalScope} from '../lib/globalScope'\nimport {ThemeContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/theme')\n\nglobalScope[key] = globalScope[key] || createContext<ThemeContextValue | null>(null)\n\n/**\n * @internal\n */\nexport const ThemeContext: React.Context<ThemeContextValue | null> = globalScope[key]\n","import {useContext, useMemo} from 'react'\nimport {ThemeProvider as StyledThemeProvider} from 'styled-components'\nimport {DEFAULT_THEME_LAYER} from './defaults'\nimport {ThemeColorSchemeKey, ThemeColorName} from './lib/theme'\nimport {ThemeContext} from './themeContext'\nimport {RootTheme, Theme, ThemeContextValue} from './types'\n\n/**\n * @public\n */\nexport interface ThemeProviderProps {\n children?: React.ReactNode\n scheme?: ThemeColorSchemeKey\n theme?: RootTheme\n tone?: ThemeColorName\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: themeProp = parentTheme?.theme || null,\n tone = parentTheme?.tone || 'default',\n } = props\n\n const theme: Theme | null = useMemo(() => {\n if (!themeProp) return null\n\n const {color: rootColor, layer: rootLayer, ...restTheme} = themeProp\n const colorScheme = rootColor[scheme] || rootColor.light\n const color = colorScheme[tone] || colorScheme.default\n const layer = rootLayer || DEFAULT_THEME_LAYER\n\n return {sanity: {...restTheme, color, layer}}\n }, [scheme, themeProp, tone])\n\n const value: ThemeContextValue | null = useMemo(\n () =>\n themeProp && {\n version: 0.0,\n theme: themeProp,\n scheme,\n tone,\n },\n [themeProp, scheme, tone]\n )\n\n if (!theme) {\n return <pre>ThemeProvider: no \"theme\" property provided</pre>\n }\n\n return (\n <ThemeContext.Provider value={value}>\n <StyledThemeProvider theme={theme}>{children}</StyledThemeProvider>\n </ThemeContext.Provider>\n )\n}\n","export function isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === 'object')\n}\n","import {useContext} from 'react'\nimport {isRecord} from '../lib/isRecord'\nimport {ThemeContext} from './themeContext'\nimport {ThemeContextValue} from './types'\n\n/**\n * @public\n */\nexport function useRootTheme(): ThemeContextValue {\n const value: unknown = useContext(ThemeContext)\n\n if (!value) {\n throw new Error('useRootTheme(): 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('useRootTheme(): the context value is not compatible')\n }\n\n return value as any as ThemeContextValue\n}\n","import {ThemeColorName, ThemeColorSchemeKey} from './lib/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?: ThemeColorName\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 {useTheme as useStyledTheme} from 'styled-components'\n\nimport {Theme} from './types'\n\n/**\n * @public\n */\nexport function useTheme(): Theme {\n return useStyledTheme() as Theme\n}\n","/**\n * @internal\n */\nexport interface _MediaManager {\n getCurrentIndex: () => number\n subscribe: (subscriber: (index: number) => void) => () => void\n}\n\nconst MEDIA_MANAGER_CACHE = new WeakMap<number[], _MediaManager>()\n\nfunction _getMediaQuery(media: number[], index: number) {\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 _createMediaManager(media: number[]): _MediaManager {\n const mediaLen = media.length\n const sizes: {mq: MediaQueryList; index: number}[] = []\n\n if (typeof window !== 'undefined') {\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 const getCurrentIndex = () => {\n for (const {index, mq} of sizes) {\n if (mq.matches) return index\n }\n\n return 0\n }\n\n const subscribe = (subscriber: (index: number) => void) => {\n const disposeFns: (() => void)[] = []\n\n for (const {index, mq} of sizes) {\n const handleChange = () => {\n if (mq.matches) subscriber(index)\n }\n\n if (mq.addEventListener) {\n mq.addEventListener('change', handleChange)\n } else {\n mq.addListener(handleChange)\n }\n\n disposeFns.push(() => {\n if (mq.removeEventListener) {\n mq.removeEventListener('change', handleChange)\n } else {\n mq.removeListener(handleChange)\n }\n })\n }\n\n return () => {\n for (const disposeFn of disposeFns) {\n disposeFn()\n }\n }\n }\n\n return {getCurrentIndex, subscribe}\n}\n\n/**\n * @internal\n */\nexport function _getMediaManager(media: number[]): _MediaManager {\n let manager = MEDIA_MANAGER_CACHE.get(media)\n\n if (!manager) {\n manager = _createMediaManager(media)\n MEDIA_MANAGER_CACHE.set(media, manager)\n }\n\n return manager\n}\n","import {useEffect, useMemo, useState} from 'react'\nimport {useTheme} from '../../theme'\nimport {_getMediaManager} from './lib/media'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function useMediaIndex(): number {\n const theme = useTheme()\n const {media} = theme.sanity\n const manager = useMemo(() => _getMediaManager(media), [media])\n const [index, setIndex] = useState(manager.getCurrentIndex)\n\n useEffect(() => manager.subscribe(setIndex), [manager])\n\n return index\n}\n","import {useEffect, useMemo, useState} from 'react'\n\n/**\n * @public\n */\nexport function usePrefersDark(): boolean {\n const mq = useMemo(() => {\n if (typeof window === 'undefined') return undefined\n\n return window.matchMedia('(prefers-color-scheme: dark)')\n }, [])\n\n const [dark, setDark] = useState(mq?.matches || false)\n\n useEffect(() => {\n if (!mq) return undefined\n\n setDark(mq.matches)\n\n const handleChange = () => setDark(mq.matches)\n\n mq.addEventListener('change', handleChange)\n\n return () => mq.removeEventListener('change', handleChange)\n }, [mq])\n\n return dark\n}\n","import {useEffect, useLayoutEffect} from 'react'\n\n/**\n * @beta\n */\nexport const useIsomorphicEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect\n","import {useRef} from 'react'\nimport {useIsomorphicEffect} from './useIsomorphicEffect'\n\n/**\n * @beta\n */\nexport function useForwardedRef<T>(ref: React.ForwardedRef<T>): React.MutableRefObject<T | null> {\n const innerRef = useRef<T | null>(null)\n\n useIsomorphicEffect(() => {\n if (!ref) return\n\n if (typeof ref === 'function') {\n ref(innerRef.current)\n } else {\n ref.current = innerRef.current\n }\n })\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} from 'styled-components'\nimport {_responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveBorderStyleProps} from './types'\n\nconst BORDER_VALUE = '1px solid var(--card-border-color)'\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 {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$border, (value) =>\n value ? {'&&': {border: BORDER_VALUE}} : {'&&': {border: 0}}\n )\n}\n\nfunction borderTop(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$borderTop, (value) =>\n value ? {'&&': {borderTop: BORDER_VALUE}} : {'&&': {borderTop: 0}}\n )\n}\n\nfunction borderRight(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$borderRight, (value) =>\n value ? {'&&': {borderRight: BORDER_VALUE}} : {'&&': {borderRight: 0}}\n )\n}\n\nfunction borderBottom(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$borderBottom, (value) =>\n value ? {'&&': {borderBottom: BORDER_VALUE}} : {'&&': {borderBottom: 0}}\n )\n}\n\nfunction borderLeft(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$borderLeft, (value) =>\n value ? {'&&': {borderLeft: BORDER_VALUE}} : {'&&': {borderLeft: 0}}\n )\n}\n","import {Property} from 'csstype'\nimport {CSSObject} from 'styled-components'\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 {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$display, (display) => ({\n '&:not([hidden])': {display},\n }))\n}\n\nfunction responsiveBoxSizingStyle(props: ResponsiveBoxStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$sizing, (sizing) => ({\n boxSizing: BOX_SIZING[sizing],\n }))\n}\n\nfunction responsiveBoxHeightStyle(props: ResponsiveBoxStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$height, (height) => ({\n height: BOX_HEIGHT[height],\n }))\n}\n\nfunction responsiveBoxOverflowStyle(props: ResponsiveBoxStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$overflow, (overflow) => ({\n overflow,\n }))\n}\n","import {CSSObject} from 'styled-components'\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 {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$align, (align) => {\n return {alignItems: align}\n })\n}\n\nfunction responsiveFlexGapStyle(props: ResponsiveFlexStyleProps & ThemeProps) {\n const {theme} = props\n const {media, space} = theme.sanity\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 {theme} = props\n const {media} = theme.sanity\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 {theme} = props\n const {media} = theme.sanity\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 {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$direction, (direction) => {\n return {flexDirection: direction}\n })\n}\n","import {CSSObject} from 'styled-components'\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 {theme} = props\n const {media} = theme.sanity\n\n if (!props.$flex) return EMPTY_ARRAY\n\n return _responsive(media, props.$flex, (flex) => ({flex}))\n}\n","export 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: {offset: number; width: number}\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} from 'styled-components'\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 {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$autoFlow, (autoFlow) => ({\n gridAutoFlow: autoFlow,\n }))\n}\n\nfunction responsiveGridAutoRowsStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\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 {theme} = props\n const {media} = theme.sanity\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 {theme} = props\n const {media} = theme.sanity\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 {theme} = props\n const {media} = theme.sanity\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 {theme} = props\n const {media, space} = theme.sanity\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 {theme} = props\n const {media, space} = theme.sanity\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 {theme} = props\n const {media, space} = theme.sanity\n\n return _responsive(media, props.$gapY, (gapY) => ({\n rowGap: gapY ? rem(space[gapY]) : undefined,\n }))\n}\n","import {CSSObject} from 'styled-components'\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 {theme} = props\n const {media} = theme.sanity\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 {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$rowStart, (rowStart) => ({\n gridRowStart: rowStart,\n }))\n}\n\nfunction responsiveGridItemRowEndStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$rowEnd, (rowEnd) => ({gridRowEnd: rowEnd}))\n}\n\nfunction responsiveGridItemColumnStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\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 {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$columnStart, (columnStart) => ({\n gridColumnStart: columnStart,\n }))\n}\n\nfunction responsiveGridItemColumnEndStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$columnEnd, (columnEnd) => ({\n gridColumnEnd: columnEnd,\n }))\n}\n","import {CSSObject} from 'styled-components'\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, theme} = props\n const {fonts, media, space: spaceScale} = theme.sanity\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 = fonts.text.sizes[_fontSize[i]] || fonts.text.sizes[2]\n const emSize = size.lineHeight - size.ascenderHeight - size.descenderHeight\n const p = spaceScale[_padding[i]]\n const s = spaceScale[_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 {css, CSSObject, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeColorSchemeKey, ThemeFontWeightKey} from '../../theme'\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 $border?: boolean\n $hasPrefix?: boolean\n $hasSuffix?: boolean\n $scheme: ThemeColorSchemeKey\n $tone: CardTone\n}\n\nconst ROOT_STYLE = css`\n &:not([hidden]) {\n display: flex;\n }\n\n align-items: center;\n`\n\nexport function textInputRootStyle(): FlattenSimpleInterpolation {\n return ROOT_STYLE\n}\n\nexport function textInputBaseStyle(\n props: TextInputInputStyleProps & ThemeProps\n): FlattenSimpleInterpolation {\n const {theme, $scheme, $tone, $weight} = props\n const font = theme.sanity.fonts.text\n const color = theme.sanity.color.input\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.family};\n font-weight: ${($weight && font.weights[$weight]) || font.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.default.enabled.fg};\n --input-placeholder-color: ${color.default.enabled.placeholder};\n\n /* enabled */\n &:not(:invalid):not(:disabled):not(:read-only) {\n --input-fg-color: ${color.default.enabled.fg};\n --input-placeholder-color: ${color.default.enabled.placeholder};\n }\n\n /* disabled */\n &:not(:invalid):disabled {\n --input-fg-color: ${color.default.disabled.fg};\n --input-placeholder-color: ${color.default.disabled.placeholder};\n }\n\n /* invalid */\n &:invalid {\n --input-fg-color: ${color.invalid.enabled.fg};\n --input-placeholder-color: ${color.invalid.enabled.placeholder};\n }\n\n /* readOnly */\n &:read-only {\n --input-fg-color: ${color.default.readOnly.fg};\n --input-placeholder-color: ${color.default.readOnly.placeholder};\n }\n }\n `\n}\n\nexport function textInputFontSizeStyle(props: TextInputInputStyleProps & ThemeProps): CSSObject[] {\n const {theme} = props\n const {fonts, media} = theme.sanity\n\n return _responsive(media, props.$fontSize, (sizeIndex) => {\n const size = fonts.text.sizes[sizeIndex] || fonts.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): FlattenSimpleInterpolation {\n const {$border, $hasPrefix, $hasSuffix, $scheme, $tone, theme} = props\n const {focusRing, input} = theme.sanity\n const color = theme.sanity.color.input\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.default.enabled.bg};\n --card-fg-color: ${color.default.enabled.fg};\n\n /* enabled */\n *:not(:disabled) + & {\n --input-box-shadow: ${$border\n ? focusRingBorderStyle({color: color.default.enabled.border, width: input.border.width})\n : undefined};\n }\n\n /* invalid */\n *:not(:disabled):invalid + & {\n --card-bg-color: ${color.invalid.enabled.bg};\n --card-fg-color: ${color.invalid.enabled.fg};\n --input-box-shadow: ${$border\n ? focusRingBorderStyle({color: color.invalid.enabled.border, width: input.border.width})\n : 'none'};\n }\n\n /* focused */\n *:not(:disabled):focus + & {\n --input-box-shadow: ${focusRingStyle({\n border: $border\n ? {color: color.default.enabled.border, width: input.border.width}\n : undefined,\n focusRing,\n })};\n }\n\n /* disabled */\n *:disabled + & {\n --card-bg-color: ${color.default.disabled.bg} !important;\n --card-fg-color: ${color.default.disabled.fg} !important;\n --input-box-shadow: ${$border\n ? focusRingBorderStyle({\n color: color.default.disabled.border,\n width: input.border.width,\n })\n : 'none'};\n }\n\n /* readOnly */\n *:read-only + & {\n --card-bg-color: ${color.default.readOnly.bg} !important;\n --card-fg-color: ${color.default.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.default.hovered.bg};\n --card-fg-color: ${color.default.hovered.fg};\n }\n\n *:not(:disabled):not(:read-only):not(:invalid):not(:focus):hover + & {\n --input-box-shadow: ${$border\n ? focusRingBorderStyle({\n color: color.default.hovered.border,\n width: input.border.width,\n })\n : 'none'};\n }\n }\n }\n `\n}\n","import {CSSObject} from 'styled-components'\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} from 'styled-components'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveRadiusStyleProps} from './types'\n\nexport function responsiveRadiusStyle(props: ResponsiveRadiusStyleProps & ThemeProps): CSSObject[] {\n const {theme} = props\n const {media, radius} = theme.sanity\n\n return _responsive(media, props.$radius, (radiusIndex) => ({\n borderRadius: rem(radius[radiusIndex]),\n }))\n}\n","import {CSSObject} from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {BoxShadow, ThemeShadow} from '../../theme'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveShadowStyleProps} from './types'\n\nfunction toBoxShadow(shadow: BoxShadow, color: string) {\n return `${shadow.map(rem).join(' ')} ${color}`\n}\n\nfunction shadowStyle(shadow: ThemeShadow | null): CSSObject {\n if (!shadow) return EMPTY_RECORD\n\n const outline = `0 0 0 ${rem(1)} 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 {theme} = props\n const {media, shadows} = theme.sanity\n\n return _responsive(media, props.$shadow, (shadow) => shadowStyle(shadows[shadow]))\n}\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {\n ResponsiveFontStyleProps,\n responsiveTextAlignStyle,\n responsiveTextFont,\n} from '../../styles/internal'\nimport {ThemeFontWeightKey} from '../../theme'\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 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`\n\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 {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\n\nexport function textBaseStyle(\n props: {$accent?: boolean; $muted?: boolean} & ThemeProps\n): FlattenSimpleInterpolation {\n const {$accent, $muted, theme} = props\n const {weights} = theme.sanity.fonts.text\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: ${theme.sanity.fonts.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: 0 0 0 1px var(--card-bg-color), 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: ${weights.bold};\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\n }\n `\n}\n","import {CSSObject} from 'styled-components'\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}\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, theme} = props\n const {focusRing} = theme.sanity\n\n return {\n backgroundColor: $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 '-webkit-font-smoothing': '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}),\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 {theme} = props\n const {avatar, media} = theme.sanity\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 avatarInitialsStyle(props: ThemeProps): CSSObject {\n const {theme} = props\n const {base} = theme.sanity.color\n\n return {\n width: '100%',\n height: '100%',\n color: base.fg,\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: '3px',\n\n '[data-status=\"editing\"] &': {\n strokeSasharray: '2 4',\n strokeLinecap: 'round',\n },\n }\n}\n","import {forwardRef, useCallback, useEffect, useId, useMemo, useState} from 'react'\nimport ReactIs from 'react-is'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {ThemeColorSpotKey, useTheme} from '../../theme'\nimport {AvatarPosition, AvatarSize, AvatarStatus} from '../../types'\nimport {Text} from '../text'\nimport {avatarStyle, responsiveAvatarSizeStyle} from './styles'\n\n/**\n * @public\n */\nexport interface AvatarProps {\n animateArrowFrom?: AvatarPosition\n arrowPosition?: AvatarPosition\n as?: React.ElementType | keyof JSX.IntrinsicElements\n color?: ThemeColorSpotKey\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: string; $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\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 as: asProp,\n color: colorKey = 'gray',\n src,\n title,\n initials,\n onImageLoadError,\n arrowPosition: arrowPositionProp,\n animateArrowFrom,\n status = 'online',\n size: sizeProp = 0,\n ...restProps\n } = props\n const as = ReactIs.isValidElementType(asProp) ? asProp : 'div'\n const size = useArrayProp(sizeProp)\n const theme = useTheme()\n const color = theme.sanity.color.spot[colorKey] || theme.sanity.color.spot.gray\n\n // @todo: remove this\n const avatarSize = theme.sanity.avatar.sizes[size[0]] || theme.sanity.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(() => size.map((s) => (s === 0 ? 0 : s + 1)), [size])\n\n return (\n <Root\n as={as}\n data-as={typeof as === 'string' ? as : undefined}\n data-ui=\"Avatar\"\n {...restProps}\n $size={size}\n $color={color}\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 <svg 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 <BgStroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n vectorEffect=\"non-scaling-stroke\"\n />\n <Stroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n stroke={color}\n vectorEffect=\"non-scaling-stroke\"\n />\n </svg>\n )}\n\n {(imageFailed || !src) && initials && (\n <>\n <Initials>\n <Text as=\"span\" size={initialsSize}>\n <strong>{initials}</strong>\n </Text>\n </Initials>\n </>\n )}\n </Root>\n )\n})\n","import {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 {Text} from '../text'\n\nfunction _responsiveAvatarCounterSizeStyle(props: {$size: AvatarSize[]} & ThemeProps) {\n const {theme} = props\n const {avatar, media} = theme.sanity\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 {theme} = props\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: 0 0 0 1px var(--card-bg-color), inset 0 0 0 1.5px var(--card-hairline-hard-color);\n padding: 0 ${rem(theme.sanity.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 = 0} = props\n const size = useArrayProp(sizeProp)\n const counterSize = useMemo(() => size.map((s) => (s === 0 ? 0 : s + 1)), [size])\n\n return (\n <Root $size={size} data-ui=\"AvatarCounter\" ref={ref}>\n <Text as=\"span\" size={counterSize}>\n <strong>{count}</strong>\n </Text>\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 {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 {theme} = props\n const {avatar, media} = theme.sanity\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 = 0,\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} />\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}\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 * @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 {CSSObject} from 'styled-components'\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 {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {responsiveLabelFont, responsiveTextAlignStyle} from '../../styles/internal'\nimport {ThemeFontWeightKey} from '../../theme'\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`\n\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 {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\n\nexport function labelBaseStyle(\n props: {$accent?: boolean; $muted: boolean} & ThemeProps\n): FlattenSimpleInterpolation {\n const {$accent, $muted, theme} = props\n const {fonts} = theme.sanity\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: ${fonts.code.family};\n border-radius: 1px;\n }\n\n & a {\n text-decoration: none;\n border-radius: 1px;\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\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 {Label} from '../label'\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 mode?: BadgeMode\n tone?: BadgeTone\n}\n\nconst Root = styled(Box)<BadgeStyleProps & ResponsiveRadiusStyleProps>(\n responsiveRadiusStyle,\n badgeStyle\n)\n\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,\n mode = 'default',\n padding = 1,\n radius = 2,\n tone = 'default',\n ...restProps\n } = props\n\n return (\n <Root\n data-ui=\"Badge\"\n {...restProps}\n $mode={mode}\n $tone={tone}\n $radius={useArrayProp(radius)}\n padding={useArrayProp(padding)}\n ref={ref}\n >\n <Label size={fontSize}>{children}</Label>\n </Root>\n )\n})\n","import {CSSObject} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {BadgeStyleProps} from './types'\n\nexport function badgeStyle(props: BadgeStyleProps & ThemeProps): CSSObject {\n const {$mode, $tone, theme} = props\n const palette = theme.sanity.color[$mode === 'outline' ? 'muted' : 'solid']\n const color = palette[$tone] || palette.default\n\n return {\n backgroundColor: color.enabled.bg,\n color: color.enabled.fg,\n boxShadow: `inset 0 0 0 1px ${color.enabled.border}`,\n cursor: 'default',\n\n '&:not([hidden])': {\n display: 'inline-block',\n },\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 * @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 * @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 {CSSObject} from 'styled-components'\nimport {ThemeColorBase, ThemeColorGenericState} from '../../theme'\n\n/**\n * @internal\n */\nexport function _colorVarsStyle(\n base: ThemeColorBase,\n color: ThemeColorGenericState,\n checkered = false\n): CSSObject {\n return {\n // Base\n // @todo: rename to \"--base-\"?\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 '--card-focus-ring-color': base.focusRing,\n\n // Card\n '--card-bg-color': color.bg,\n '--card-bg-image': checkered\n ? `repeating-conic-gradient(${color.bg} 0% 25%, ${color.bg2 || color.bg} 0% 50%)`\n : undefined,\n '--card-fg-color': color.fg,\n '--card-border-color': color.border,\n '--card-muted-fg-color': color.muted?.fg,\n '--card-accent-fg-color': color.accent?.fg,\n '--card-link-fg-color': color.link?.fg,\n '--card-code-bg-color': color.code?.bg,\n '--card-code-fg-color': color.code?.fg,\n '--card-skeleton-color-from': color.skeleton?.from,\n '--card-skeleton-color-to': color.skeleton?.to,\n\n // @todo: deprecate\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 {css, CSSObject, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {_colorVarsStyle} from '../../styles/colorVars'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/internal'\nimport {ButtonMode, ButtonTone} from '../../types'\n\n/**\n * @internal\n */\nexport function buttonBaseStyles(): FlattenSimpleInterpolation {\n return css`\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\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\nconst buttonTheme = {border: {width: 1}}\n\n/**\n * @internal\n */\nexport function buttonColorStyles(\n props: {$mode: ButtonMode; $tone: ButtonTone} & ThemeProps\n): CSSObject[] {\n const {$mode, theme} = props\n const {focusRing} = theme.sanity\n const base = theme.sanity.color.base\n const mode = theme.sanity.color.button[$mode] || theme.sanity.color.button.default\n const color = mode[props.$tone] || mode.default\n const border = {width: buttonTheme.border.width, color: 'var(--card-border-color)'}\n\n return [\n _colorVarsStyle(base, color.enabled),\n {\n backgroundColor: 'var(--card-bg-color)',\n color: 'var(--card-fg-color)',\n boxShadow: focusRingBorderStyle(border),\n '&:disabled, &[data-disabled=\"true\"]': _colorVarsStyle(base, color.disabled),\n \"&:not([data-disabled='true'])\": {\n '&:focus': {\n boxShadow: focusRingStyle({base, border, focusRing}),\n },\n '&:focus:not(:focus-visible)': {\n boxShadow: focusRingBorderStyle(border),\n },\n '@media (hover: hover)': {\n '&:hover': _colorVarsStyle(base, color.hovered),\n '&:active': _colorVarsStyle(base, color.pressed),\n },\n '&[data-selected]': _colorVarsStyle(base, color.pressed),\n },\n },\n theme.sanity.styles?.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} from '../../theme'\nimport {ButtonMode, ButtonTextAlign, ButtonTone, 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 text?: React.ReactNode\n tone?: ButtonTone\n type?: 'button' | 'reset' | 'submit'\n}\n\nconst Root = styled.button<\n {$mode: ButtonMode; $tone: ButtonTone} & ResponsiveRadiusStyleProps & 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'>,\n ref: React.ForwardedRef<HTMLButtonElement>\n) {\n const {\n children,\n disabled,\n fontSize,\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 ...restProps\n } = props\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 theme = useTheme()\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 >\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}>\n {icon && (\n <Text size={fontSize}>\n {isValidElement(icon) && icon}\n {isValidElementType(icon) && createElement(icon)}\n </Text>\n )}\n\n {text && (\n <Box\n flex={iconRight ? 1 : undefined}\n marginLeft={icon ? space : undefined}\n marginRight={iconRight ? space : undefined}\n >\n <Text\n align={textAlign}\n size={fontSize}\n textOverflow=\"ellipsis\"\n weight={theme.sanity.button.textWeight}\n >\n {text}\n </Text>\n </Box>\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 {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {_colorVarsStyle} from '../../styles/colorVars'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/focusRing'\nimport {CardStyleProps} from './types'\n\nexport function cardStyle(\n props: CardStyleProps & ThemeProps\n): Array<FlattenSimpleInterpolation | (() => FlattenSimpleInterpolation)> {\n return [cardBaseStyle(props), cardColorStyle(props)]\n}\n\nexport function cardBaseStyle(props: CardStyleProps & ThemeProps): FlattenSimpleInterpolation {\n const {$checkered, theme} = props\n const space = theme.sanity.space\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: 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): FlattenSimpleInterpolation {\n const {$checkered, $focusRing, theme} = props\n const {focusRing} = theme.sanity\n const {base, card} = theme.sanity.color\n const border = {width: 0, color: 'var(--card-border-color)'}\n\n return css`\n ${_colorVarsStyle(base, card.enabled, $checkered)}\n\n background-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 ${_colorVarsStyle(base, card.disabled, $checkered)}\n }\n\n &:not(:disabled) {\n &[data-pressed] {\n ${_colorVarsStyle(base, card.pressed, $checkered)}\n }\n\n &[data-selected] {\n ${_colorVarsStyle(base, card.selected, $checkered)}\n }\n\n @media (hover: hover) {\n &:not([data-pressed]):not([data-selected]) {\n &:hover {\n ${_colorVarsStyle(base, card.hovered, $checkered)}\n }\n\n &:active {\n ${_colorVarsStyle(base, card.pressed, $checkered)}\n }\n }\n }\n\n &:focus {\n --card-focus-ring-box-shadow: ${$focusRing\n ? focusRingStyle({base, border, focusRing})\n : undefined};\n }\n\n &:focus:not(:focus-visible) {\n --card-focus-ring-box-shadow: ${$focusRing ? focusRingBorderStyle(border) : 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 ${_colorVarsStyle(base, card.disabled, $checkered)}\n }\n\n &:not([data-disabled]) {\n &[data-pressed] {\n ${_colorVarsStyle(base, card.pressed, $checkered)}\n }\n\n &[data-selected] {\n ${_colorVarsStyle(base, card.selected, $checkered)}\n }\n\n @media (hover: hover) {\n &:not([data-pressed]):not([data-selected]) {\n &:hover {\n ${_colorVarsStyle(base, card.hovered, $checkered)}\n }\n\n &:active {\n ${_colorVarsStyle(base, card.pressed, $checkered)}\n }\n }\n }\n\n &:focus {\n --card-focus-ring-box-shadow: ${$focusRing\n ? focusRingStyle({base, border, focusRing})\n : undefined};\n }\n\n &:focus:not(:focus-visible) {\n --card-focus-ring-box-shadow: ${$focusRing ? focusRingBorderStyle(border) : undefined};\n }\n }\n }\n\n ${theme.sanity.styles?.card?.root}\n `\n}\n","import {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, ThemeColorSchemeKey, 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 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 * @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 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 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 $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 {CheckmarkIcon, RemoveIcon} from '@sanity/icons'\nimport {forwardRef, useEffect} from 'react'\nimport styled from 'styled-components'\nimport {useForwardedRef, 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 * @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 = useForwardedRef(forwardedRef)\n\n useCustomValidity(ref, customValidity)\n\n useEffect(() => {\n if (ref.current) {\n // Set the indeterminate state\n ref.current.indeterminate = indeterminate || false\n }\n }, [indeterminate, ref])\n\n return (\n <Root className={className} data-ui=\"Checkbox\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : 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 {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {rem, ThemeProps} from '../../styles'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/internal'\n\nexport function checkboxBaseStyles(): FlattenSimpleInterpolation {\n return css`\n position: relative;\n display: inline-block;\n `\n}\n\nexport function inputElementStyles(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const color = theme.sanity.color.input\n const {focusRing, input, radius} = theme.sanity\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.default.enabled.border,\n width: input.border.width,\n })};\n border-radius: ${rem(radius[2])};\n line-height: 1;\n background-color: ${color.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: 2 !important;\n }\n }\n }\n\n &:not(:disabled):focus + span {\n box-shadow: ${focusRingStyle({\n border: {width: input.border.width, color: color.default.enabled.border},\n focusRing,\n })};\n }\n\n &:not(:disabled):focus:not(:focus-visible) + span {\n box-shadow: ${focusRingBorderStyle({\n color: color.default.enabled.border,\n width: input.border.width,\n })};\n }\n\n &:checked + span > svg:first-child {\n opacity: 1;\n }\n\n &[data-read-only] + span {\n background-color: ${color.default.readOnly.bg};\n box-shadow: ${focusRingBorderStyle({\n width: input.border.width,\n color: color.default.readOnly.border,\n })};\n color: ${color.default.readOnly.fg};\n }\n\n &:not([data-read-only]):disabled + span {\n background-color: ${color.default.disabled.bg};\n box-shadow: ${focusRingBorderStyle({\n width: input.border.width,\n color: color.default.disabled.border,\n })};\n color: ${color.default.disabled.fg};\n }\n\n &:indeterminate + span > svg:last-child {\n opacity: 1;\n }\n `\n}\n","import {css, FlattenInterpolation, ThemeProps as StyledThemeProps} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {Theme} from '../../theme'\n\nfunction codeSyntaxHighlightingStyle({theme}: ThemeProps) {\n const color = theme.sanity.color.syntax\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(): FlattenInterpolation<StyledThemeProps<Theme>> {\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 & [data-sanity-icon] {\n vertical-align: baseline;\n }\n `\n}\n","import {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 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} from 'styled-components'\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 {theme} = props\n const {container, media} = theme.sanity\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 * @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 * @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 {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 {ThemeFontWeightKey} from '../../theme'\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`\n\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 {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {HeadingStyleProps} from './types'\n\nexport function headingBaseStyle(\n props: HeadingStyleProps & ThemeProps\n): FlattenSimpleInterpolation {\n const {$accent, $muted, theme} = props\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: ${theme.sanity.fonts.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: 0 0 0 1px var(--card-bg-color), 0 0 0 3px var(--card-focus-ring-color);\n }\n\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\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 space?: number | number[]\n}\n\nconst Root = styled(Box)<ResponsiveInlineSpaceStyleProps>(inlineBaseStyle, inlineSpaceStyle)\n\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 data-ui=\"Inline\" {...restProps} $space={useArrayProp(space)} forwardedAs={as} ref={ref}>\n {children}\n </Root>\n )\n})\n","import {CSSObject} from 'styled-components'\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 {theme} = props\n\n return _responsive(theme.sanity.media, props.$space, (spaceIndex) => {\n const space = rem(theme.sanity.space[spaceIndex])\n\n return {\n margin: `-${space} 0 0 -${space}`,\n '& > div': {padding: `${space} 0 0 ${space}`},\n }\n })\n}\n","import {forwardRef} from 'react'\nimport styled, {css} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/internal'\nimport {Box} from '../box'\nimport {Code} from '../code'\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?: number | number[]\n}\n\nfunction kbdStyle() {\n return css`\n background: var(--card-bg-color);\n font: inherit;\n box-shadow: inset 0 0 0 1px var(--card-hairline-hard-color);\n\n &:not([hidden]) {\n display: inline-block;\n }\n `\n}\n\nconst Root = styled.kbd<ResponsiveRadiusStyleProps>(responsiveRadiusStyle, kbdStyle)\n\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 = 1, 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 <Code as=\"span\" muted size={fontSize}>\n {children}\n </Code>\n </Box>\n </Root>\n )\n})\n","import {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\nimport {BoundaryElementContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/boundaryElement')\n\nglobalScope[key] = globalScope[key] || createContext<BoundaryElementContextValue | null>(null)\n\nexport const BoundaryElementContext: React.Context<BoundaryElementContextValue | null> =\n globalScope[key]\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","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","import {forwardRef, useCallback, useMemo, useState} from 'react'\nimport {useElementSize, useForwardedRef} from '../../hooks'\nimport {useTheme} 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 ref: React.ForwardedRef<HTMLDivElement>\n) {\n const theme = useTheme()\n const {children, media = theme.sanity.media, ...restProps} = props\n\n const forwardedRef = useForwardedRef(ref)\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 const setRef = useCallback(\n (el: HTMLDivElement | null) => {\n forwardedRef.current = el\n setElement(el)\n },\n [forwardedRef]\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","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 {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 {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\nimport {LayerContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/layer')\n\nglobalScope[key] = globalScope[key] || createContext<LayerContextValue | null>(null)\n\nexport const LayerContext: React.Context<LayerContextValue | null> = globalScope[key]\n","import {useContext} from 'react'\nimport {isRecord} from '../../lib/isRecord'\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 // 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('useLayer(): the context value is not compatible')\n }\n\n return value\n}\n","import {useCallback, useContext, useEffect, useMemo, useState} from 'react'\nimport {useMediaIndex, useArrayProp} from '../../hooks'\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 const parent = useContext(LayerContext)\n const zOffset = useArrayProp(zOffsetProp)\n const maxMediaIndex = zOffset.length - 1\n const mediaIndex = Math.min(useMediaIndex(), maxMediaIndex)\n const zIndex = parent ? parent.zIndex + zOffset[mediaIndex] : zOffset[mediaIndex]\n const [size, setSize] = useState(0)\n\n const registerChild = useCallback(() => {\n setSize((v) => v + 1)\n\n return () => setSize((v) => v - 1)\n }, [])\n\n const parentRegisterChild = parent?.registerChild\n\n useEffect(() => {\n if (!parentRegisterChild) return\n\n return parentRegisterChild()\n }, [parentRegisterChild])\n\n const value: LayerContextValue = useMemo(\n () => ({version: 0.0, isTopLayer: size === 0, registerChild, size, zIndex}),\n [size, registerChild, zIndex]\n )\n\n return <LayerContext.Provider value={value}>{children}</LayerContext.Provider>\n}\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {LayerProvider} from './layerProvider'\nimport {useLayer} from './useLayer'\n\n/**\n * @public\n */\nexport interface LayerProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n zOffset?: number | number[]\n}\n\ninterface LayerChildrenProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n}\n\nconst Root = styled.div`\n position: relative;\n`\n\nconst LayerChildren = forwardRef(function LayerChildren(\n props: LayerChildrenProps & Omit<React.HTMLProps<HTMLDivElement>, 'as'>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {children, style = EMPTY_RECORD, ...restProps} = props\n const {zIndex} = useLayer()\n\n return (\n <Root {...restProps} data-ui=\"Layer\" 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 {createContext} from 'react'\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 window === '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\nglobalScope[key] = globalScope[key] || createContext<PortalContextValue>(defaultContextValue)\n\nexport const PortalContext: React.Context<PortalContextValue> = globalScope[key]\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} 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\nconst __BROWSER__ = typeof window !== 'undefined'\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\n const value: PortalContextValue = useMemo(() => {\n return {\n version: 0.0,\n boundaryElement: boundaryElement || null,\n element: element || (__BROWSER__ && document.body) || null,\n elements,\n }\n }, [boundaryElement, element, elements])\n\n return <PortalContext.Provider value={value}>{children}</PortalContext.Provider>\n}\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`\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","/**\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","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 {forwardRef, useEffect, useMemo, useRef, useState} from 'react'\nimport styled from 'styled-components'\nimport {_isScrollable} from '../../helpers'\nimport {useForwardedRef} from '../../hooks'\nimport {_ResizeObserver} from '../../observers'\nimport {StackProps} from '../../primitives'\nimport {useTheme} 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 ref: React.ForwardedRef<HTMLDivElement>\n): React.ReactElement {\n const {as = 'div', gap = 0, getItemKey, items = [], onChange, renderItem, ...restProps} = props\n const {space} = useTheme().sanity\n const forwardedRef = useForwardedRef(ref)\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 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 (!forwardedRef.current) return\n\n let _scrollEl = forwardedRef.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 }, [forwardedRef])\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={forwardedRef}>\n <div ref={wrapperRef} style={wrapperStyle}>\n {children}\n </div>\n </Root>\n )\n})\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\n\nconst Root = styled.div`\n position: absolute;\n pointer-events: none;\n width: 27px;\n height: 27px;\n fill: none;\n\n :empty + & {\n display: none;\n }\n\n & > svg {\n display: block;\n transform-origin: 13.5px 13.5px;\n }\n\n [data-popper-placement^='top'] > div > & {\n bottom: -27px;\n }\n\n [data-popper-placement^='right'] > div > & {\n left: -27px;\n\n & > svg {\n transform: rotate(90deg);\n }\n }\n\n [data-popper-placement^='left'] > div > & {\n right: -27px;\n\n & > svg {\n transform: rotate(-90deg);\n }\n }\n\n [data-popper-placement^='bottom'] > div > & {\n top: -27px;\n\n & > svg {\n transform: rotate(180deg);\n }\n }\n`\n\nconst BorderPath = styled.path`\n fill: var(--card-shadow-outline-color);\n`\n\nconst ShapePath = styled.path`\n fill: var(--card-bg-color);\n`\n\nexport const PopoverArrow = forwardRef(function PopoverArrow(\n props: Omit<React.HTMLProps<HTMLDivElement>, 'as'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n return (\n <Root data-ui=\"PopoverArrow\" {...props} ref={ref}>\n <svg\n width=\"27\"\n height=\"11\"\n viewBox=\"0 0 27 11\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <BorderPath d=\"M1.18708 1C3.29803 1.0011 5.29585 1.95479 6.62414 3.59561L11.1683 9.20895C12.369 10.6922 14.631 10.6922 15.8317 9.20894L20.3759 3.59561C21.7042 1.95478 23.702 1.0011 25.8129 1H21.9436C21.0533 1.49255 20.2545 2.15618 19.5986 2.96641L15.0545 8.57975C14.254 9.56855 12.746 9.56855 11.9455 8.57975L7.40139 2.96642C6.74548 2.15618 5.94673 1.49255 5.05643 1H1.18708Z\" />\n <ShapePath d=\"M1.18342 0C3.59749 0 5.88246 1.0901 7.40138 2.96642L11.9455 8.57975C12.746 9.56855 14.254 9.56855 15.0545 8.57975L19.5986 2.96641C21.1175 1.0901 23.4025 0 25.8166 0H27H0H1.18342Z\" />\n </svg>\n </Root>\n )\n})\n","import {useMemo} from 'react'\nimport {Modifier} from 'react-popper'\n\nimport {getPopoverModifiers} from './getPopoverModifiers'\nimport {PopoverModifiersProps} from './types'\n\nexport function usePopoverModifiers(props: PopoverModifiersProps): Modifier<any, any>[] {\n const {\n allowedAutoPlacements,\n arrow,\n arrowElement,\n boundaryElement,\n constrainSize,\n distance,\n fallbackPlacements,\n margins,\n matchReferenceWidth,\n open,\n preventOverflow,\n skidding,\n tether,\n tetherOffset,\n } = props\n\n return useMemo(() => {\n return getPopoverModifiers({\n allowedAutoPlacements,\n arrow,\n arrowElement,\n boundaryElement,\n constrainSize,\n distance,\n fallbackPlacements,\n margins,\n matchReferenceWidth,\n open,\n preventOverflow,\n skidding,\n tether,\n tetherOffset,\n })\n }, [\n allowedAutoPlacements,\n arrow,\n arrowElement,\n boundaryElement,\n constrainSize,\n distance,\n fallbackPlacements,\n margins,\n matchReferenceWidth,\n open,\n preventOverflow,\n skidding,\n tether,\n tetherOffset,\n ])\n}\n","import maxSizeModifier from 'popper-max-size-modifier'\nimport {Modifier} from 'react-popper'\nimport {PopoverModifiersProps} from './types'\n\n/*\n\nThe order of popper phases:\n\n- beforeRead\n- read\n- afterRead\n- beforeMain\n- main\n- afterMain\n- beforeWrite\n- write\n- afterWrite\n\n*/\n\nexport function getPopoverModifiers(props: PopoverModifiersProps): Modifier<any, any>[] {\n const {\n allowedAutoPlacements,\n arrow,\n arrowElement,\n boundaryElement,\n constrainSize,\n distance,\n fallbackPlacements,\n margins,\n matchReferenceWidth,\n open,\n preventOverflow,\n skidding,\n tether,\n tetherOffset,\n } = props\n\n // NOTE: For later viewers:\n // Prior to adding this change, the popover would get `maxWidth: 0` the 2nd time it\n // was opened, when used with `constrainSize`. I was looking for a way to \"reset\"\n // the size of the popover as measured by Popper.js, and this seems to be a workaround.\n if (!open) {\n return []\n }\n\n const detectOverflowOptions = {\n altAxis: !constrainSize,\n boundary: boundaryElement || undefined,\n padding: 8,\n tether,\n tetherOffset,\n }\n\n return [\n constrainSize && {\n ...maxSizeModifier,\n options: detectOverflowOptions,\n },\n constrainSize && {\n name: 'applyMaxSize',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['maxSize'],\n fn({state}: any) {\n const {width, height} = state.modifiersData.maxSize\n\n state.styles.popper = {\n ...state.styles.popper,\n maxWidth: `${width}px`,\n maxHeight: `${height}px`,\n }\n },\n },\n arrow && {\n name: 'arrow',\n options: {\n element: arrowElement,\n padding: 4,\n },\n },\n (constrainSize || preventOverflow) && {\n name: 'preventOverflow',\n options: detectOverflowOptions,\n },\n {\n name: 'offset',\n options: {\n offset: [skidding, distance],\n },\n },\n margins && {\n name: 'margins',\n enabled: true,\n phase: 'beforeRead',\n fn: ({state}: any) => {\n const {rects} = state\n\n if (rects.reference) {\n rects.reference.x += margins[3]\n rects.reference.y += margins[1]\n rects.reference.width -= margins[1] + margins[3]\n rects.reference.height -= margins[0] + margins[2]\n }\n },\n },\n {\n name: 'flip',\n options: {\n allowedAutoPlacements,\n boundary: boundaryElement || undefined,\n fallbackPlacements,\n padding: 8,\n },\n },\n matchReferenceWidth && {\n name: 'matchWidth',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn({state}: any) {\n const {width} = state.rects.reference\n\n state.styles.popper.width = `${width}px`\n },\n effect: ({state}: any) => {\n const refElement = state.elements.reference\n\n if (refElement instanceof HTMLElement) {\n state.elements.popper.style.width = `${\n refElement.offsetWidth - (margins ? margins[1] + margins[3] : 0)\n }px`\n }\n },\n },\n ].filter(Boolean) as Modifier<any, any>[]\n}\n","import {cloneElement, forwardRef, useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {usePopper} from 'react-popper'\nimport styled, {css} from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {useArrayProp, useForwardedRef} from '../../hooks'\nimport {ThemeColorSchemeKey, useTheme} from '../../theme'\nimport {CardTone, Placement, PopoverMargins} from '../../types'\nimport {Layer, LayerProps, Portal, useBoundaryElement, usePortal} from '../../utils'\nimport {Card} from '../card'\nimport {ResponsiveWidthStyleProps} from '../container'\nimport {responsiveContainerWidthStyle} from '../container/styles'\nimport {ResponsiveRadiusProps, ResponsiveShadowProps, ResponsiveWidthProps} from '../types'\nimport {PopoverArrow} from './arrow'\nimport {usePopoverModifiers} from './modifiers'\n\n/**\n * @public\n */\nexport interface PopoverProps\n extends Omit<LayerProps, 'as'>,\n ResponsiveRadiusProps,\n ResponsiveShadowProps,\n ResponsiveWidthProps {\n /**\n * @beta\n */\n __unstable_margins?: PopoverMargins\n allowedAutoPlacements?: Placement[]\n arrow?: boolean\n boundaryElement?: HTMLElement | null\n children?: React.ReactElement\n constrainSize?: boolean\n content?: React.ReactNode\n disabled?: boolean\n fallbackPlacements?: Placement[]\n open?: boolean\n padding?: number | number[]\n placement?: Placement\n portal?: boolean | string\n preventOverflow?: boolean\n referenceElement?: HTMLElement | null\n matchReferenceWidth?: boolean\n scheme?: ThemeColorSchemeKey\n tether?: boolean\n tetherOffset?: number | ((...args: any[]) => number)\n tone?: CardTone\n}\n\nconst Root = styled(Layer)<{$preventOverflow?: boolean}>(\n ({$preventOverflow}) => css`\n pointer-events: none;\n display: flex;\n flex-direction: column;\n max-width: calc(100% - 16px);\n\n & > * {\n min-height: 0;\n }\n\n /* Hide the popover when the reference element is out of bounds */\n ${$preventOverflow &&\n css`\n &[data-popper-reference-hidden='true'] {\n display: none;\n }\n `}\n `\n)\n\nconst PopoverCard = styled(Card)<\n ResponsiveWidthStyleProps & {\n $constrainSize?: boolean\n $preventOverflow?: boolean\n $width: (number | 'auto')[]\n }\n>(\n ({$constrainSize}) => css`\n flex: 1;\n max-height: ${$constrainSize && '100%'};\n pointer-events: all;\n\n && {\n display: flex;\n }\n\n flex-direction: column;\n\n & > * {\n min-height: 0;\n }\n\n ${responsiveContainerWidthStyle}\n `\n)\n\n/**\n * @public\n */\nexport const Popover = forwardRef(function Popover(\n props: PopoverProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content' | 'width'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const boundaryElementContext = useBoundaryElement()\n const theme = useTheme()\n const {\n __unstable_margins: margins,\n allowedAutoPlacements,\n arrow = true,\n boundaryElement: boundaryElementProp = boundaryElementContext.element,\n children: child,\n content,\n constrainSize,\n disabled,\n fallbackPlacements,\n open = false,\n padding,\n placement = 'bottom',\n portal: portalProp = false,\n preventOverflow,\n radius = 3,\n referenceElement: referenceElementProp,\n matchReferenceWidth,\n shadow = 3,\n scheme,\n style = EMPTY_RECORD,\n tether,\n tetherOffset,\n tone = 'inherit',\n width: widthProp = 0,\n zOffset = theme.sanity.layer?.popover.zOffset,\n ...restProps\n } = props\n const forwardedRef = useForwardedRef(ref)\n const portal = usePortal()\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null)\n const [popperElement, setPopperElement] = useState<HTMLElement | null>(null)\n const [arrowElement, setArrowElement] = useState<HTMLElement | null>(null)\n const popperReferenceElement = referenceElementProp || referenceElement\n const width = useArrayProp(matchReferenceWidth ? 'auto' : widthProp)\n\n const modifiers = usePopoverModifiers({\n allowedAutoPlacements,\n arrow,\n arrowElement,\n boundaryElement: boundaryElementProp || portal.boundaryElement,\n constrainSize,\n distance: arrow ? 4 : 0,\n fallbackPlacements,\n margins,\n matchReferenceWidth,\n open,\n preventOverflow,\n skidding: 0,\n tether,\n tetherOffset,\n })\n\n const popper = usePopper(popperReferenceElement, popperElement, {\n placement,\n modifiers,\n })\n\n const {attributes, forceUpdate, styles} = popper\n\n const setRef = useCallback(\n (el: HTMLElement | null) => {\n const childRef = (child as any).ref\n\n setReferenceElement(el)\n\n if (typeof childRef === 'function') {\n childRef(el)\n } else if (childRef) {\n childRef.current = el\n }\n },\n [child]\n )\n\n const setRootRef = useCallback(\n (el: HTMLDivElement | null) => {\n setPopperElement(el)\n forwardedRef.current = el\n },\n [forwardedRef]\n )\n\n const popoverStyle = useMemo(() => ({...style, ...styles.popper}), [style, styles])\n\n const updateTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n useEffect(() => {\n if (updateTimeoutRef.current) {\n clearTimeout(updateTimeoutRef.current)\n updateTimeoutRef.current = null\n }\n\n updateTimeoutRef.current = setTimeout(() => {\n if (forceUpdate) {\n try {\n forceUpdate()\n } catch (_) {\n // ignore caught error\n }\n }\n }, 0)\n }, [content, forceUpdate, open, popperReferenceElement])\n\n if (disabled) {\n return child || <></>\n }\n\n const node = (\n <Root\n data-ui=\"Popover\"\n {...restProps}\n $preventOverflow={preventOverflow}\n ref={setRootRef}\n style={popoverStyle}\n zOffset={zOffset}\n {...attributes.popper}\n >\n <PopoverCard\n $constrainSize={constrainSize}\n $width={width}\n data-ui=\"PopoverCard\"\n padding={padding}\n radius={radius}\n scheme={scheme}\n shadow={shadow}\n tone={tone}\n >\n {arrow && <PopoverArrow ref={setArrowElement} style={styles.arrow} />}\n {content}\n </PopoverCard>\n </Root>\n )\n\n return (\n <>\n {child && !referenceElementProp ? cloneElement(child, {ref: setRef}) : child || <></>}\n\n {open && (\n <>\n {portalProp && (\n <Portal __unstable_name={typeof portalProp === 'string' ? portalProp : undefined}>\n {node}\n </Portal>\n )}\n\n {!portalProp && node}\n </>\n )}\n </>\n )\n})\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useForwardedRef, 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 * @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 = useForwardedRef(forwardedRef)\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 {...restProps}\n disabled={disabled || readOnly}\n readOnly={readOnly}\n ref={ref}\n type=\"radio\"\n />\n <span />\n </Root>\n )\n})\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {rem, ThemeProps} from '../../styles'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/internal'\n\nexport function radioBaseStyle(): FlattenSimpleInterpolation {\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): FlattenSimpleInterpolation {\n const {theme} = props\n const {focusRing, input} = theme.sanity\n const color = theme.sanity.color.input\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.default.enabled.bg};\n box-shadow: ${focusRingBorderStyle({\n color: color.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.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.default.enabled.border},\n focusRing,\n })};\n }\n\n &:not(:disabled):focus:not(:focus-visible) + span {\n box-shadow: ${focusRingBorderStyle({\n color: color.default.enabled.border,\n width: input.border.width,\n })};\n }\n\n &:checked + span::after {\n opacity: 1;\n }\n\n /* read only */\n &[data-read-only] + span {\n box-shadow: 0 0 0 1px ${color.default.readOnly.border};\n background: ${color.default.readOnly.bg};\n\n &::after {\n background: ${color.default.readOnly.fg};\n }\n }\n\n /* disabled */\n &:not([data-read-only]):disabled + span {\n box-shadow: 0 0 0 1px ${color.default.disabled.border};\n background: ${color.default.disabled.bg};\n\n &::after {\n background: ${color.default.disabled.fg};\n }\n }\n `\n}\n","import {css, CSSObject, FlattenSimpleInterpolation} from 'styled-components'\nimport {rem, _responsive, ThemeProps} from '../../styles'\nimport {\n focusRingBorderStyle,\n focusRingStyle,\n responsiveInputPaddingIconRightStyle,\n responsiveRadiusStyle,\n ResponsiveRadiusStyleProps,\n} from '../../styles/internal'\nimport {ThemeFontSize} from '../../theme'\n\nfunction rootStyle(): FlattenSimpleInterpolation {\n return css`\n position: relative;\n width: stretch;\n\n &:not([hidden]) {\n display: inline-block;\n }\n `\n}\n\nfunction inputBaseStyle(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const font = theme.sanity.fonts.text\n\n return css`\n -webkit-font-smoothing: antialiased;\n appearance: none;\n border: 0;\n font-family: ${font.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 {theme} = props\n const {focusRing, input} = theme.sanity\n const color = theme.sanity.color.input\n\n return css`\n /* enabled */\n background-color: ${color.default.enabled.bg};\n color: ${color.default.enabled.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.default.enabled.border,\n width: input.border.width,\n })};\n\n /* hovered */\n @media (hover: hover) {\n &:not(:disabled):hover {\n background-color: ${color.default.hovered.bg};\n color: ${color.default.hovered.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.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.default.enabled.border},\n focusRing,\n })};\n }\n\n /* read-only */\n &[data-read-only] {\n background-color: ${color.default.readOnly.bg};\n color: ${color.default.readOnly.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.default.readOnly.border,\n width: input.border.width,\n })};\n }\n\n /* disabled */\n &:not([data-read-only]):disabled {\n background-color: ${color.default.disabled.bg};\n color: ${color.default.disabled.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.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 {theme, $fontSize} = props\n const {sizes} = theme.sanity.fonts.text\n\n return _responsive(theme.sanity.media, $fontSize, (sizeIndex) =>\n textSize(sizes[sizeIndex] || 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) => FlattenSimpleInterpolation)\n> {\n return [\n responsiveRadiusStyle,\n inputBaseStyle,\n inputColorStyle,\n inputTextSizeStyle,\n responsiveInputPaddingIconRightStyle,\n ]\n}\n\nfunction iconBoxStyle(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const color = theme.sanity.color.input\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.default.enabled.fg};\n\n /* hover */\n @media (hover: hover) {\n select:not(disabled):not(:read-only):hover + && {\n --card-fg-color: ${color.default.hovered.fg};\n }\n }\n\n /* disabled */\n select:disabled + && {\n --card-fg-color: ${color.default.disabled.fg};\n }\n\n /* read-only */\n select[data-read-only] + && {\n --card-fg-color: ${color.default.readOnly.fg};\n }\n `\n}\n\nexport const selectStyle = {\n root: rootStyle,\n input: inputStyle,\n iconBox: iconBoxStyle,\n}\n","import {SelectIcon} from '@sanity/icons'\nimport {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useForwardedRef, useCustomValidity, useArrayProp} from '../../hooks'\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?: number | number[]\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: number[]\n $space: number[]\n}>(selectStyle.input)\n\nconst IconBox = styled(Box)(selectStyle.iconBox)\n\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 = 1,\n readOnly,\n space = 3,\n ...restProps\n } = props\n\n const ref = useForwardedRef(forwardedRef)\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 <SelectIcon />\n </Text>\n </IconBox>\n </Root>\n )\n})\n","import {CSSObject} from 'styled-components'\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 {theme} = props\n const {media, space} = theme.sanity\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 * @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 {forwardRef, useEffect} from 'react'\nimport styled from 'styled-components'\nimport {useForwardedRef} from '../../hooks'\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 * @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 = useForwardedRef(forwardedRef)\n\n useEffect(() => {\n if (ref.current) {\n // Set the indeterminate state\n ref.current.indeterminate = indeterminate || false\n }\n }, [indeterminate, ref])\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 {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {rem, ThemeProps} from '../../styles'\nimport {focusRingStyle} from '../../styles/internal'\n\n/* Root */\nexport function switchBaseStyles(): FlattenSimpleInterpolation {\n return css`\n position: relative;\n &:not([hidden]) {\n display: inline-block;\n }\n `\n}\n\n/* Input */\nexport function switchInputStyles(): FlattenSimpleInterpolation {\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): FlattenSimpleInterpolation {\n const {theme} = props\n const {focusRing, input} = theme.sanity\n const color = theme.sanity.color.button.default\n\n return css`\n --switch-bg-color: ${color.default.enabled.bg};\n --switch-fg-color: ${color.default.enabled.fg};\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})};\n }\n\n input:focus:not(:focus-visible) + && {\n --switch-box-shadow: none;\n }\n\n input:checked + && {\n --switch-bg-color: ${color.positive.enabled.bg};\n --switch-fg-color: ${color.positive.enabled.fg};\n }\n\n @media (hover: hover) {\n input:not(:disabled):hover + && {\n --switch-bg-color: ${color.default.hovered.bg};\n --switch-fg-color: ${color.default.hovered.fg};\n }\n\n input:not(:disabled):checked:hover + && {\n --switch-bg-color: ${color.positive.hovered.bg};\n --switch-fg-color: ${color.positive.hovered.fg};\n }\n }\n\n input:not([data-read-only]):disabled + && {\n --switch-bg-color: ${color.default.disabled.bg};\n --switch-fg-color: ${color.default.disabled.fg};\n }\n `\n}\n\n/* Track */\nexport function switchTrackStyles(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const {input} = theme.sanity\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): FlattenSimpleInterpolation {\n const {$indeterminate, theme} = props\n const {input} = theme.sanity\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\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} from 'react'\nimport styled from 'styled-components'\nimport {useForwardedRef, 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 {ThemeFontWeightKey, 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 * @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 = 1,\n weight,\n ...restProps\n } = props\n\n const ref = useForwardedRef(forwardedRef)\n\n const rootTheme = useRootTheme()\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 $border={border}\n $radius={useArrayProp(radius)}\n $scheme={rootTheme.scheme}\n $tone={rootTheme.tone}\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n />\n </InputRoot>\n </Root>\n )\n})\n","import {CloseIcon} from '@sanity/icons'\nimport {createElement, forwardRef, isValidElement, useCallback, useMemo} from 'react'\nimport {isValidElementType} from 'react-is'\nimport styled from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {useArrayProp, useForwardedRef, 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 {ThemeFontWeightKey, useRootTheme} from '../../theme'\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\n/**\n * @public\n */\nexport interface TextInputProps {\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?: number | number[]\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\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 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 = 1,\n readOnly,\n space: spaceProp = 3,\n suffix,\n customValidity,\n type = 'text',\n weight,\n ...restProps\n } = props\n\n const ref = useForwardedRef(forwardedRef)\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 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 $border={border}\n $hasPrefix={$hasPrefix}\n $hasSuffix={$hasSuffix}\n $radius={radius}\n $scheme={rootTheme.scheme}\n $tone={rootTheme.tone}\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 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 <Button\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 {forwardRef} from 'react'\nimport styled from 'styled-components'\n\nconst Root = styled.div`\n position: absolute;\n width: 15px;\n height: 15px;\n fill: none;\n\n :empty + & {\n display: none;\n }\n\n & > svg {\n &:not([hidden]) {\n display: block;\n }\n transform-origin: 7.5px 7.5px;\n }\n\n [data-popper-placement^='top'] > div > & {\n bottom: -15px;\n }\n\n [data-popper-placement^='right'] > div > & {\n left: -15px;\n\n & > svg {\n transform: rotate(90deg);\n }\n }\n\n [data-popper-placement^='left'] > div > & {\n right: -15px;\n\n & > svg {\n transform: rotate(-90deg);\n }\n }\n\n [data-popper-placement^='bottom'] > div > & {\n top: -15px;\n\n & > svg {\n transform: rotate(180deg);\n }\n }\n`\n\nconst Border = styled.path`\n fill: var(--card-shadow-outline-color);\n`\n\nconst Shape = styled.path`\n fill: var(--card-bg-color);\n`\n\ninterface TooltipArrowProps {}\n\nexport const TooltipArrow = forwardRef(function TooltipArrow(\n props: TooltipArrowProps & Omit<React.HTMLProps<HTMLDivElement>, 'as'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {...restProps} = props\n\n return (\n <Root {...restProps} ref={ref}>\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\">\n <Border d=\"M11.5266 1C11.032 1.32802 10.5837 1.73105 10.1995 2.20057L9.04792 3.6081C8.24771 4.58614 6.7523 4.58614 5.95209 3.6081L4.80047 2.20057C4.41632 1.73105 3.96796 1.32802 3.47341 1H0.156727C1.65639 1 3.07687 1.67313 4.02651 2.83381L5.17813 4.24134C6.37844 5.70839 8.62156 5.70839 9.82187 4.24134L10.9735 2.83381C11.9231 1.67313 13.3436 1 14.8433 1H11.5266Z\" />\n <Shape d=\"M0.156725 0C1.95632 0 3.66089 0.80776 4.80047 2.20057L5.95209 3.6081C6.75229 4.58614 8.24771 4.58614 9.04791 3.6081L10.1995 2.20057C11.3391 0.80776 13.0437 0 14.8433 0H15H0H0.156725Z\" />\n </svg>\n </Root>\n )\n})\n","import {cloneElement, forwardRef, useCallback, useEffect, useRef, useState} from 'react'\nimport {usePopper} from 'react-popper'\nimport styled from 'styled-components'\nimport {useArrayProp, useForwardedRef} from '../../hooks'\nimport {ThemeColorSchemeKey, useTheme} from '../../theme'\nimport {Placement} from '../../types'\nimport {Layer, LayerProps, Portal, useBoundaryElement} from '../../utils'\nimport {Card} from '../card'\nimport {TooltipArrow} from './tooltipArrow'\n\n/**\n * @public\n */\nexport interface TooltipProps extends Omit<LayerProps, 'as'> {\n allowedAutoPlacements?: Placement[]\n boundaryElement?: HTMLElement | null\n children?: React.ReactElement\n content?: React.ReactNode\n disabled?: boolean\n fallbackPlacements?: Placement[]\n placement?: Placement\n portal?: boolean | string\n scheme?: ThemeColorSchemeKey\n}\n\nconst Root = styled(Layer)`\n pointer-events: none;\n`\n\n/**\n * @public\n */\nexport const Tooltip = forwardRef(function Tooltip(\n props: TooltipProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const boundaryElementContext = useBoundaryElement()\n const theme = useTheme()\n const {\n allowedAutoPlacements,\n boundaryElement = boundaryElementContext?.element,\n children,\n content,\n disabled,\n fallbackPlacements: fallbackPlacementsProp,\n placement = 'bottom',\n portal,\n scheme,\n zOffset = theme.sanity.layer?.tooltip.zOffset,\n ...restProps\n } = props\n const fallbackPlacements = useArrayProp(fallbackPlacementsProp)\n const forwardedRef = useForwardedRef(ref)\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null)\n const [popperElement, setPopperElement] = useState<HTMLDivElement | null>(null)\n const [arrowElement, setArrowElement] = useState<HTMLDivElement | null>(null)\n const popper = usePopper(referenceElement, popperElement, {\n placement,\n modifiers: [\n {\n name: 'arrow',\n options: {\n element: arrowElement,\n padding: 4,\n },\n },\n {\n name: 'preventOverflow',\n options: {\n altAxis: true,\n boundary: boundaryElement || undefined,\n padding: 4,\n },\n },\n {\n name: 'offset',\n options: {offset: [0, 3]},\n },\n {\n name: 'flip',\n options: {\n allowedAutoPlacements,\n fallbackPlacements,\n },\n },\n ],\n })\n const {forceUpdate} = popper\n const [isOpen, setIsOpen] = useState(false)\n const handleBlur = useCallback(() => setIsOpen(false), [])\n const handleFocus = useCallback(() => setIsOpen(true), [])\n const handleMouseEnter = useCallback(() => setIsOpen(true), [])\n const handleMouseLeave = useCallback(() => setIsOpen(false), [])\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 (!isOpen) 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 setIsOpen(false)\n window.removeEventListener('mousemove', handleWindowMouseMove)\n }\n }\n\n window.addEventListener('mousemove', handleWindowMouseMove)\n\n return () => {\n window.removeEventListener('mousemove', handleWindowMouseMove)\n }\n }, [isOpen, referenceElement])\n\n const updateTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n useEffect(() => {\n if (updateTimeoutRef.current) {\n clearTimeout(updateTimeoutRef.current)\n updateTimeoutRef.current = null\n }\n\n updateTimeoutRef.current = setTimeout(() => {\n if (forceUpdate) {\n try {\n forceUpdate()\n } catch (_) {\n // ignore caught error\n }\n }\n }, 0)\n }, [forceUpdate, content])\n\n // Close when `disabled` changes to `true`\n useEffect(() => {\n if (disabled) setIsOpen(false)\n }, [disabled])\n\n // Close when `content` changes to falsy\n useEffect(() => {\n if (!content) setIsOpen(false)\n }, [content])\n\n const setRef = (el: HTMLDivElement | null) => {\n setPopperElement(el)\n forwardedRef.current = el\n }\n\n if (!children) return <></>\n\n if (disabled) return children\n\n const referenceProps = {\n onBlur: handleBlur,\n onFocus: handleFocus,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n ref: setReferenceElement,\n }\n\n const referenceNode = cloneElement(children, referenceProps)\n\n const popperNode = (\n <Root\n data-ui=\"Tooltip\"\n {...restProps}\n {...popper.attributes.popper}\n ref={setRef}\n style={popper.styles.popper}\n zOffset={zOffset}\n >\n <Card radius={2} scheme={scheme} shadow={3}>\n {content}\n <TooltipArrow ref={setArrowElement} style={popper.styles.arrow} />\n </Card>\n </Root>\n )\n\n return (\n <>\n {referenceNode}\n\n {isOpen && (\n <>\n {portal && (\n <Portal __unstable_name={typeof portal === 'string' ? portal : undefined}>\n {popperNode}\n </Portal>\n )}\n\n {!portal && popperNode}\n </>\n )}\n </>\n )\n})\n","import {SpinnerIcon} from '@sanity/icons'\nimport styled, {keyframes} from 'styled-components'\nimport {Box, Popover} 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\n/**\n * @internal\n */\nexport const ResultsPopover = styled(Popover)`\n & > div {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n\n &[data-popper-reference-hidden='true'] {\n display: none;\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, PopoverMargins} 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_MARGINS: PopoverMargins = [0, 1, 1, 1]\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[] = ['top-start']\n","import {ChevronDownIcon} from '@sanity/icons'\nimport {\n cloneElement,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react'\nimport {EMPTY_ARRAY, EMPTY_RECORD} from '../../constants'\nimport {_hasFocus, _raf, focusFirstDescendant} from '../../helpers'\nimport {useForwardedRef, useArrayProp} from '../../hooks'\nimport {Box, BoxProps, Button, Card, PopoverProps, Stack, Text, TextInput} from '../../primitives'\nimport {AnimatedSpinnerIcon, ListBox, ResultsPopover, 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_MARGINS,\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?: React.ElementType | React.ReactNode\n id: string\n /**\n * @beta\n */\n listBox?: BoxProps\n loading?: boolean\n onChange?: (value: string) => void\n onQueryChange?: (query: string | null) => void\n onSelect?: (value: string) => void\n /**\n * @beta\n */\n openButton?: boolean | AutocompleteOpenButtonProps\n options?: Option[]\n padding?: number | number[]\n popover?: Omit<PopoverProps, 'content' | 'onMouseEnter' | 'onMouseLeave' | 'open'> &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content' | 'ref' | 'width'>\n prefix?: React.ReactNode\n radius?: number | number[]\n /**\n * @beta\n */\n relatedElements?: HTMLElement[]\n renderOption?: (option: Option) => React.ReactElement\n /**\n * @beta\n */\n renderPopover?: (\n props: {\n content: React.ReactElement | null\n hidden: boolean\n inputElement: HTMLInputElement | null\n onMouseEnter: () => void\n onMouseLeave: () => void\n },\n ref: React.Ref<HTMLDivElement>\n ) => React.ReactNode\n renderValue?: (value: string, option?: Option) => string\n suffix?: React.ReactNode\n value?: string\n}\n\nconst defaultRenderValue = (value: string, option?: BaseAutocompleteOption) =>\n option ? option.value : value\n\nconst defaultFilterOption = (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 React.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: React.Ref<HTMLInputElement>\n) {\n const {\n border = true,\n customValidity,\n disabled,\n filterOption: filterOptionProp,\n fontSize = 2,\n icon,\n id,\n listBox = {},\n loading,\n onBlur,\n onChange,\n onFocus,\n onQueryChange,\n onSelect,\n openButton,\n options: optionsProp,\n padding: paddingProp = 3,\n popover = {},\n prefix,\n radius = 3,\n readOnly,\n relatedElements,\n renderOption: renderOptionProp,\n renderPopover,\n renderValue = defaultRenderValue,\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 const filterOption =\n typeof filterOptionProp === 'function' ? filterOptionProp : defaultFilterOption\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const [resultsPopoverElement, setResultsPopoverElement] = useState<HTMLDivElement | null>(null)\n const inputElementRef = useRef<HTMLInputElement | null>(null)\n const listBoxElementRef = useRef<HTMLDivElement | null>(null)\n const listFocusedRef = useRef(false)\n const valueRef = useRef(value)\n const valuePropRef = useRef(valueProp)\n const forwardedRef = useForwardedRef(ref)\n const popoverMouseWithinRef = useRef(false)\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: React.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 rootElement ? [rootElement] : [],\n resultsPopoverElement ? [resultsPopoverElement] : []\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, resultsPopoverElement, rootElement]\n )\n\n const handleRootFocus = useCallback((event: React.FocusEvent) => {\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: React.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: React.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: React.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 !== 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 !== value) {\n dispatch({type: 'value/change', value: valueProp || null})\n }\n }, [valueProp, value])\n\n // Reset active item when closing\n useEffect(() => {\n if (!focused) {\n if (valueRef.current) {\n dispatch({type: 'root/setActiveValue', value: valueRef.current})\n }\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 setRef = useCallback(\n (el: HTMLInputElement | null) => {\n inputElementRef.current = el\n forwardedRef.current = el\n },\n [forwardedRef]\n )\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(\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 openButtonProps: AutocompleteOpenButtonProps = useMemo(\n () => (typeof openButton === 'object' ? openButton : EMPTY_RECORD),\n [openButton]\n )\n\n const handleOpenClick = useCallback(\n (event: React.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={setRef}\n role=\"combobox\"\n spellCheck={false}\n suffix={suffix || openButtonNode}\n value={inputValue}\n />\n )\n\n const handleListBoxKeyDown = useCallback(\n (event: React.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 setResultsPopoverElement\n )\n }\n\n if (filteredOptionsLen === 0) {\n return null\n }\n\n return (\n <ResultsPopover\n __unstable_margins={AUTOCOMPLETE_POPOVER_MARGINS}\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 placement={AUTOCOMPLETE_POPOVER_PLACEMENT}\n portal\n radius={radius}\n ref={setResultsPopoverElement}\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={setRootElement}\n >\n {input}\n {results}\n </Root>\n )\n})\n\n/**\n * @public\n */\nexport const Autocomplete = InnerAutocomplete as <Option extends BaseAutocompleteOption>(\n props: AutocompleteProps<Option> &\n Omit<\n React.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?: React.Ref<HTMLInputElement>\n }\n) => React.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 {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\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\nglobalScope[key] = globalScope[key] || createContext<DialogContextValue>({version: 0.0})\n\n/**\n * @internal\n */\nexport const DialogContext: React.Context<DialogContextValue> = globalScope[key]\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 {forwardRef, useCallback, useEffect, useRef, useState} from 'react'\nimport styled from 'styled-components'\nimport {focusFirstDescendant, focusLastDescendant} from '../../helpers'\nimport {useArrayProp, useClickOutside, useForwardedRef, useGlobalKeyDown} from '../../hooks'\nimport {Box, Button, Card, Container, Flex, Text} from '../../primitives'\nimport {ResponsivePaddingProps, ResponsiveWidthProps} from '../../primitives/types'\nimport {responsivePaddingStyle, ResponsivePaddingStyleProps} from '../../styles/internal'\nimport {ThemeColorSchemeKey, useTheme} from '../../theme'\nimport {DialogPosition} from '../../types'\nimport {Layer, Portal, useLayer} from '../../utils'\nimport {\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?: number | number[]\n cardShadow?: number | number[]\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 position?: DialogPosition | DialogPosition[]\n scheme?: ThemeColorSchemeKey\n zOffset?: number | number[]\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 radius: number | number[]\n scheme?: ThemeColorSchemeKey\n shadow: number | number[]\n}\n\nconst Root = styled(Layer)<ResponsiveDialogPositionStyleProps & ResponsivePaddingStyleProps>(\n responsivePaddingStyle,\n dialogStyle,\n responsiveDialogPositionStyle\n)\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`\n\nconst DialogLayout = styled(Flex)`\n flex: 1;\n min-height: 0;\n width: 100%;\n`\n\nconst DialogHeader = styled(Card)`\n position: relative;\n z-index: 2;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n bottom: -1px;\n border-bottom: 1px solid var(--card-hairline-soft-color);\n }\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 border-top: 1px solid var(--card-hairline-soft-color);\n`\n\nconst DialogCard = forwardRef(function DialogCard(\n props: DialogCardProps,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n __unstable_autoFocus: autoFocus,\n __unstable_hideCloseButton: hideCloseButton,\n children,\n contentRef,\n footer,\n header,\n id,\n onClickOutside,\n onClose,\n radius: radiusProp,\n scheme,\n shadow: shadowProp,\n width: widthProp,\n } = props\n const radius = useArrayProp(radiusProp)\n const shadow = useArrayProp(shadowProp)\n const width = useArrayProp(widthProp)\n const forwardedRef = useForwardedRef(ref)\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const localContentRef = 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 useEffect(() => {\n if (!autoFocus) return\n\n // On mount: focus the first interactive element in the contents\n if (forwardedRef.current) {\n focusFirstDescendant(forwardedRef.current)\n }\n }, [autoFocus, forwardedRef])\n\n useGlobalKeyDown(\n useCallback(\n (event: KeyboardEvent) => {\n if (!isTopLayer || !onClose) return\n\n if (event.key === 'Escape') {\n event.preventDefault()\n event.stopPropagation()\n onClose()\n }\n },\n [isTopLayer, onClose]\n )\n )\n\n useClickOutside(\n useCallback(() => {\n if (!isTopLayer || !onClickOutside) return\n\n onClickOutside()\n }, [isTopLayer, onClickOutside]),\n [rootElement]\n )\n\n const setRef = useCallback(\n (el: HTMLDivElement | null) => {\n setRootElement(el)\n forwardedRef.current = el\n },\n [forwardedRef]\n )\n\n const setContentRef = useCallback(\n (el: HTMLDivElement | null) => {\n localContentRef.current = el\n if (typeof contentRef === 'function') contentRef(el)\n else if (contentRef) contentRef.current = el\n },\n [contentRef]\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>\n <Box flex={1} padding={4}>\n {header && (\n <Text id={labelId} weight=\"semibold\">\n {header}\n </Text>\n )}\n </Box>\n {showCloseButton && (\n <Box padding={2}>\n <Button\n aria-label=\"Close dialog\"\n disabled={!onClose}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onClose}\n padding={3}\n />\n </Box>\n )}\n </Flex>\n </DialogHeader>\n )}\n\n <DialogContent flex={1} ref={setContentRef} tabIndex={-1}>\n {children}\n </DialogContent>\n\n {footer && <DialogFooter>{footer}</DialogFooter>}\n </DialogLayout>\n </DialogCardRoot>\n </DialogContainer>\n )\n})\n\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 theme = useTheme()\n const {\n __unstable_autoFocus: autoFocus = true,\n __unstable_hideCloseButton: hideCloseButton = false,\n cardRadius: cardRadiusProp = 3,\n cardShadow = 4,\n children,\n contentRef,\n footer,\n header,\n id,\n onClickOutside,\n onClose,\n padding: paddingProp = 4,\n portal,\n position: positionProp = dialog.position || 'fixed',\n scheme,\n width: widthProp = 0,\n zOffset: zOffsetProp = dialog.zOffset || theme.sanity.layer?.dialog.zOffset,\n ...restProps\n } = props\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\n const handleFocus = useCallback((event: React.FocusEvent<HTMLDivElement>) => {\n const target = event.target\n const cardElement = cardRef.current\n\n if (!cardElement) {\n return\n }\n\n if (target === preDivRef.current) {\n focusLastDescendant(cardElement)\n\n return\n }\n\n if (target === postDivRef.current) {\n focusFirstDescendant(cardElement)\n\n return\n }\n }, [])\n\n const labelId = `${id}_label`\n\n return (\n <Portal __unstable_name={portal}>\n <Root\n {...restProps}\n $padding={padding}\n $position={position}\n aria-labelledby={labelId}\n aria-modal\n data-ui=\"Dialog\"\n id={id}\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 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 {CSSObject} 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 = theme.sanity.color.base\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.shadow.umbra,\n }\n}\n\nexport function responsiveDialogPositionStyle(\n props: ResponsiveDialogPositionStyleProps & ThemeProps\n): CSSObject[] {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$position, (position) => ({'&&': {position}}))\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'\n\n/**\n * @public\n */\nexport interface HotkeysProps {\n fontSize?: number | number[]\n padding?: number | number[]\n radius?: number | number[]\n space?: number | number[]\n keys?: string[]\n}\n\nconst Root = styled.kbd`\n &:not([hidden]) {\n display: block;\n }\n font: inherit;\n`\n\nconst Key = styled(KBD)`\n &:not([hidden]) {\n display: block;\n }\n`\n\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 = 1, ...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 {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\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\nglobalScope[key] = globalScope[key] || createContext<MenuContextValue | null>(null)\n\nexport const MenuContext: React.Context<MenuContextValue | null> = globalScope[key]\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 rootElement?.focus()\n setActiveIndex(-1)\n }, [rootElement, setActiveIndex])\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, useMemo} from 'react'\nimport styled from 'styled-components'\nimport {useClickOutside, useForwardedRef, 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 * @public\n */\nexport const Menu = forwardRef(function Menu(\n props: MenuProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'role' | 'tabIndex'>,\n ref: 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 forwardedRef = useForwardedRef(ref)\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 forwardedRef.current = el\n },\n [forwardedRef, 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 {cloneElement, forwardRef, useCallback, useMemo, useState, useEffect, useRef} from 'react'\nimport {isElement} from 'react-is'\nimport {Popover, PopoverProps} from '../../primitives'\nimport {ThemeColorSchemeKey} from '../../theme'\nimport {Placement} 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 /**\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?: number | number[]\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 * @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 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 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 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 = isElement(menuProp) ? cloneElement(menuProp, menuProps) : null\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 isElement(buttonProp)\n ? cloneElement(buttonProp, {\n 'data-ui': 'MenuButton',\n id,\n onClick: handleButtonClick,\n onKeyDown: handleButtonKeyDown,\n 'aria-haspopup': true,\n 'aria-expanded': open,\n ref: setButtonRef,\n selected: open,\n })\n : null,\n [buttonProp, handleButtonClick, handleButtonKeyDown, id, open, setButtonRef]\n )\n\n const popoverProps: PopoverProps = useMemo(() => {\n return {\n boundaryElement: deprecated_boundaryElement,\n placement: deprecated_placement,\n portal: deprecated_portal,\n radius: deprecated_popoverRadius,\n preventOverflow: deprecated_preventOverflow,\n scheme: deprecated_popoverScheme,\n ...(popover || {}),\n }\n }, [\n deprecated_boundaryElement,\n deprecated_preventOverflow,\n deprecated_placement,\n popover,\n deprecated_popoverRadius,\n deprecated_portal,\n deprecated_popoverScheme,\n ])\n\n return (\n <Popover {...popoverProps} content={menu} data-ui=\"MenuButton__popover\" open={open}>\n {button || <></>}\n </Popover>\n )\n})\n","import styled, {StyledComponent} from 'styled-components'\nimport {Theme} from '../../theme'\n\n/**\n * @public\n */\nexport const MenuDivider: StyledComponent<'hr', Theme> = styled.hr`\n height: 1px;\n border: 0;\n background: var(--card-hairline-soft-color);\n margin: 0;\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 {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {_colorVarsStyle} from '../../styles/colorVars'\nimport {SelectableTone} from '../../types/selectable'\n\n/**\n * @internal\n */\nexport interface SelectableStyleProps {\n $tone: SelectableTone\n}\n\nexport function selectableBaseStyle(): FlattenSimpleInterpolation {\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: 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): FlattenSimpleInterpolation {\n const {$tone, theme} = props\n const {base, muted, selectable} = theme.sanity.color\n // @todo: remove use of `muted` here\n const tone = selectable ? selectable[$tone] || selectable.default : muted[$tone] || muted.default\n\n return css`\n ${_colorVarsStyle(base, 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 ${_colorVarsStyle(base, tone.disabled)}\n }\n\n &:not(:disabled) {\n &[aria-pressed='true'] {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n\n &[data-selected],\n &[aria-selected='true'] > & {\n ${_colorVarsStyle(base, tone.selected)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) {\n &:hover {\n ${_colorVarsStyle(base, tone.hovered)}\n }\n\n &:active {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n }\n }\n }\n }\n\n /* &:is(a) */\n &[data-as='a'] {\n &[data-disabled] {\n ${_colorVarsStyle(base, tone.disabled)}\n }\n\n &:not([data-disabled]) {\n &[data-pressed] {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n\n &[data-selected] {\n ${_colorVarsStyle(base, tone.selected)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) {\n &:hover {\n ${_colorVarsStyle(base, tone.hovered)}\n }\n\n &:active {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n }\n }\n }\n }\n\n ${theme.sanity.styles?.card?.root}\n `\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 {SelectableTone} from '../../types/selectable'\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?: number | number[]\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,\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 {\n activeElement,\n mount,\n onClickOutside,\n onEscape,\n onItemClick,\n onItemMouseEnter = menu.onMouseEnter,\n registerElement,\n } = menu\n const [rootElement, setRootElement] = useState<HTMLButtonElement | 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 onClick={handleClick}\n onKeyDown={handleKeyDown}\n onMouseEnter={handleMouseEnter}\n ref={setRootElement}\n tabIndex={-1}\n type={as === 'button' ? 'button' : undefined}\n >\n <Box padding={padding}>\n <Flex>\n {icon && (\n <Text size={fontSize}>\n {isValidElement(icon) && icon}\n {isValidElementType(icon) && createElement(icon)}\n </Text>\n )}\n\n <Box flex={1} marginLeft={icon ? space : undefined}>\n <Text size={fontSize} textOverflow=\"ellipsis\">\n {text}\n </Text>\n </Box>\n\n <Box marginLeft={space}>\n <Text size={fontSize}>\n <ChevronRightIcon />\n </Text>\n </Box>\n </Flex>\n </Box>\n </Selectable>\n </Popover>\n )\n}\n","import {\n createElement,\n forwardRef,\n isValidElement,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {useArrayProp, useForwardedRef} from '../../hooks'\nimport {Box, Flex, Text} from '../../primitives'\nimport {Selectable} from '../../primitives/_selectable'\nimport {ResponsivePaddingProps, ResponsiveRadiusProps} from '../../primitives/types'\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 = 2,\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 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\n useEffect(() => mount(rootElement, selectedProp), [mount, rootElement, selectedProp])\n\n const ref = useForwardedRef(forwardedRef)\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 setRef = useCallback(\n (el: HTMLDivElement | null) => {\n ref.current = el\n setRootElement(el)\n },\n [ref]\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={tone}\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 <Box as=\"span\" {...paddingProps}>\n <Flex as=\"span\">\n {icon && (\n <Text size={fontSize}>\n {isValidElement(icon) && icon}\n {isValidElementType(icon) && createElement(icon)}\n </Text>\n )}\n\n {text && (\n <Box\n flex={1}\n marginLeft={icon ? space : undefined}\n marginRight={iconRight ? space : undefined}\n >\n <Text size={fontSize} textOverflow=\"ellipsis\">\n {text}\n </Text>\n </Box>\n )}\n\n {hotkeys && (\n <Box marginLeft={space} style={{marginTop: -4, marginBottom: -4}}>\n <Hotkeys fontSize={fontSize} keys={hotkeys} />\n </Box>\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\" {...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 {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {_responsive} from '../../styles'\nimport {Theme, ThemeFontKey} from '../../theme'\nimport {Skeleton, SkeletonProps} from './skeleton'\n\nconst Root = styled(Skeleton)<{$size: number[]; $style: ThemeFontKey}>(\n ({$size, $style, theme}: {$size: number[]; $style: ThemeFontKey; theme: Theme}) => {\n const {media} = theme.sanity\n const font = theme.sanity.fonts[$style]\n\n const styles = _responsive(media, $size, (sizeIndex) => {\n const fontSize = font.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/**\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, useRef} from 'react'\nimport {useForwardedRef} from '../../hooks'\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\n/**\n * @public\n */\nexport const Tab = forwardRef(function Tab(\n props: TabProps &\n Omit<React.HTMLProps<HTMLButtonElement>, 'aria-controls' | 'as' | 'id' | 'label' | 'type'>,\n forwardedRef: React.ForwardedRef<HTMLButtonElement>\n) {\n const {\n icon,\n id,\n focused,\n fontSize,\n label,\n onClick,\n onFocus,\n padding = 2,\n selected,\n ...restProps\n } = props\n const elementRef = useRef<HTMLButtonElement | null>(null)\n const focusedRef = useRef(false)\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 const ref = useForwardedRef(forwardedRef)\n\n useEffect(() => {\n if (focused && !focusedRef.current) {\n if (elementRef.current) elementRef.current.focus()\n focusedRef.current = true\n }\n }, [focused])\n\n const setRef = (el: HTMLButtonElement | null) => {\n elementRef.current = el\n ref.current = el\n }\n\n return (\n <Button\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={setRef}\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 {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/**\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 <Inline data-ui=\"TabList\" {...restProps} onKeyDown={handleKeyDown} ref={ref} role=\"tablist\">\n {tabs}\n </Inline>\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 styled from 'styled-components'\nimport {Box, Button, Card, Flex, Stack, Text} from '../../primitives'\nimport {ThemeColorToneKey} from '../../theme'\n\n/**\n * @public\n */\nexport interface ToastProps {\n closable?: boolean\n description?: React.ReactNode\n onClose?: () => void\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}\n\nconst ROLES = {\n error: 'alert',\n warning: 'alert',\n success: 'alert',\n info: 'alert',\n}\n\nconst Root = styled(Card)`\n pointer-events: all;\n`\n\nconst TextBox = styled(Flex)`\n overflow-x: auto;\n`\n\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, title, status, ...restProps} = props\n const cardTone = status ? STATUS_CARD_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={2}\n shadow={2}\n tone={cardTone}\n >\n <Flex align=\"flex-start\">\n <TextBox flex={1} padding={3}>\n <Stack space={3}>\n {title && <Text weight=\"semibold\">{title}</Text>}\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 onClick={onClose}\n style={{verticalAlign: 'top'}}\n />\n </Box>\n )}\n </Flex>\n </Root>\n )\n}\n","import {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\nimport {ToastContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/toast')\n\nglobalScope[key] = globalScope[key] || createContext<ToastContextValue | null>(null)\n\nexport const ToastContext: React.Context<ToastContextValue | null> = globalScope[key]\n","import {AnimatePresence, motion} from 'framer-motion'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport styled from 'styled-components'\nimport {Box} from '../../primitives'\nimport {Layer} from '../../utils'\nimport {Toast} from './toast'\nimport {ToastContext} from './toastContext'\nimport {ToastContextValue, ToastParams} from './types'\n\ninterface ToastState {\n toasts: {\n dismiss: () => void\n id: string\n params: ToastParams\n }[]\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>({toasts: []})\n const toastsRef = useRef<{[key: string]: {timeoutId: NodeJS.Timeout}}>({})\n\n const push = useCallback((params: ToastParams) => {\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) => {\n const idx = prevState.toasts.findIndex((t) => t.id === id)\n\n if (idx > -1) {\n const toasts = prevState.toasts.slice(0)\n\n toasts.splice(idx, 1)\n\n return {...prevState, 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) => {\n return {\n ...prevState,\n toasts: prevState.toasts\n .filter((t) => t.id !== id)\n .concat([\n {\n dismiss,\n id,\n params: {...params, duration},\n },\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 // 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 const value: ToastContextValue = useMemo(() => ({version: 0.0, push}), [push])\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n\n <Root data-ui=\"ToastProvider\" zOffset={zOffset}>\n <ToastContainer>\n <Box padding={padding} paddingX={paddingX} paddingY={paddingY}>\n <AnimatePresence initial={false}>\n {state.toasts.map(({dismiss, id, params}) => (\n <motion.div\n animate={{opacity: 1, y: 0, scale: 1}}\n exit={{opacity: 0, scale: 0.5, transition: {duration: 0.2}}}\n initial={{opacity: 0, y: 32, scale: 0.25}}\n key={id}\n layout=\"position\"\n transition={{type: 'spring', damping: 30, stiffness: 400}}\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 </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 {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\nimport {TreeContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/tree')\n\nglobalScope[key] = globalScope[key] || createContext<TreeContextValue | null>(null)\n\n/**\n * @internal\n */\nexport const TreeContext: React.Context<TreeContextValue | null> = globalScope[key]\n","import {forwardRef, memo, useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {useForwardedRef} from '../../hooks'\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 ref: React.ForwardedRef<HTMLDivElement>\n ): React.ReactElement {\n const {children, space = 1, ...restProps} = props\n const forwardedRef = useForwardedRef(ref)\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 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 useEffect(() => {\n if (!forwardedRef.current) return\n const _itemElements = Array.from(\n forwardedRef.current.querySelectorAll('[data-ui=\"TreeItem\"]')\n ) as HTMLElement[]\n\n setItemElements(_itemElements)\n }, [children, forwardedRef])\n\n return (\n <TreeContext.Provider value={contextValue}>\n <Stack\n as=\"ul\"\n data-ui=\"Tree\"\n {...restProps}\n onKeyDown={handleKeyDown}\n ref={forwardedRef}\n role=\"tree\"\n space={space}\n >\n {children}\n </Stack>\n </TreeContext.Provider>\n )\n })\n)\n\nTree.displayName = 'Tree'\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 {createElement, memo, useCallback, useEffect, useId, useMemo, useRef} from 'react'\nimport styled from 'styled-components'\nimport {Box, Flex, Text} from '../../primitives'\nimport {ThemeFontWeightKey} from '../../theme'\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 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,\n href,\n icon,\n id: idProp,\n muted,\n onClick,\n padding = 3,\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__box' ||\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 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","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {rem, ThemeProps} from '../../styles'\nimport {_colorVarsStyle} from '../../styles/colorVars'\n\nexport function treeItemRootStyle(): FlattenSimpleInterpolation {\n return css`\n &[role='none'] > [role='treeitem'] {\n outline: none;\n cursor: default;\n border-radius: 3px;\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\n &:focus > div {\n position: relative;\n }\n }\n `\n}\n\nexport function treeItemRootColorStyle(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const $tone = 'default'\n const {base, muted, selectable} = theme.sanity.color\n // @todo: remove use of `muted` here\n const tone = selectable ? selectable[$tone] || selectable.default : muted[$tone] || muted.default\n\n return css`\n /* <div role=\"none\"><a data-ui=\"TreeItem__box\" role=\"treeitem\" tabIndex=\"0\"></div> */\n &[role='none'] {\n & > [role='treeitem'] {\n ${_colorVarsStyle(base, tone.enabled)}\n\n background-color: var(--card-bg-color);\n color: var(--treeitem-fg-color);\n }\n\n &[data-selected] > [role='treeitem'] {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) > [role='treeitem']:not(:focus):hover {\n ${_colorVarsStyle(base, tone.hovered)}\n }\n\n & > [role='treeitem']:focus {\n ${_colorVarsStyle(base, tone.selected)}\n }\n }\n }\n\n /* <div role=\"treeitem\" tabIndex=\"0\"><div data-ui=\"TreeItem__box\"></div> */\n &[role='treeitem'] {\n & > [data-ui='TreeItem__box'] {\n ${_colorVarsStyle(base, tone.enabled)}\n\n background-color: var(--card-bg-color);\n color: var(--card-fg-color);\n }\n\n &[data-selected] > [data-ui='TreeItem__box'] {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]):not(:focus) > [data-ui='TreeItem__box']:hover {\n ${_colorVarsStyle(base, tone.hovered)}\n }\n\n &:focus > [data-ui='TreeItem__box'] {\n ${_colorVarsStyle(base, tone.selected)}\n }\n }\n }\n `\n}\n\nexport interface TreeItemBoxStyleProps {\n $level: number\n}\n\nexport function treeItemBoxStyle(\n props: TreeItemBoxStyleProps & ThemeProps\n): FlattenSimpleInterpolation {\n const {$level, theme} = props\n const {space} = theme.sanity\n\n return css`\n padding-left: ${rem(space[2] * $level)};\n\n &[data-as='a'] {\n text-decoration: none;\n }\n `\n}\n"],"names":["EMPTY_ARRAY","EMPTY_RECORD","_fillCSSObject","keys","value","reduce","style","key","rem","pixelValue","_responsive","media","values","callback","map","statement","mediaIndex","concat","_getArrayProp","val","defaultVal","Array","isArray","_getResponsiveSpace","theme","props","spaceIndexes","Error","length","sanity","spaceIndex","space","responsiveFont","fontKey","$size","$weight","fonts","family","sizes","weights","fontWeight","regular","defaultSize","base","position","fontFamily","padding","margin","content","display","height","warned","console","warn","resp","sizeIndex","size","ascenderHeight","descenderHeight","fontSize","iconSize","letterSpacing","lineHeight","negHeight","capHeight","iconOffset","customIconSize","Math","floor","customIconOffset","transform","marginTop","marginBottom","responsiveCodeFontStyle","responsiveHeadingFont","responsiveLabelFont","responsiveTextAlignStyle","$align","textAlign","responsiveTextFont","useArrayProp","__perf_hash__","JSON","stringify","useMemo","_getElements","element","elementsArg","ret","el","push","filter","Boolean","useClickOutside","listener","boundaryElement","arguments","undefined","setElement","useState","elements","setElements","elementsRef","useRef","useEffect","prevElements","current","nextElements","includes","handleWindowMouseDown","evt","target","Node","contains","window","addEventListener","removeEventListener","ResizeObserverBoxOptions","resizeObservers","msg","trigger","freeze","obj","Object","ResizeObserverSize","inlineSize","blockSize","this","DOMRectReadOnly","x","y","width","top","left","bottom","right","prototype","toJSON","_a","fromRect","rectangle","isSVG","SVGElement","isHidden","getBBox","_b","offsetWidth","offsetHeight","getClientRects","isElement","Element","scope","ownerDocument","defaultView","global","cache","WeakMap","scrollRegexp","verticalRegexp","IE","test","navigator","userAgent","parseDimension","pixel","parseFloat","switchSizes","zeroBoxes","devicePixelContentBoxSize","borderBoxSize","contentBoxSize","contentRect","calculateBoxSizes","forceRecalculation","has","get","set","cs","getComputedStyle","svg","ownerSVGElement","removePadding","boxSizing","writingMode","canScrollVertically","overflowY","canScrollHorizontally","overflowX","paddingTop","paddingRight","paddingBottom","paddingLeft","borderTop","borderTopWidth","borderRight","borderRightWidth","borderBottom","borderBottomWidth","horizontalPadding","verticalPadding","horizontalBorderArea","borderLeftWidth","verticalBorderArea","horizontalScrollbarThickness","clientHeight","verticalScrollbarThickness","clientWidth","widthReduction","heightReduction","contentWidth","contentHeight","borderBoxWidth","borderBoxHeight","boxes","round","devicePixelRatio","calculateBoxSize","observedBox","DEVICE_PIXEL_CONTENT_BOX","BORDER_BOX","ResizeObserverEntry","calculateDepthForNode","node","Infinity","depth","parent","parentNode","broadcastActiveObservations","shallowestDepth","callbacks","forEach","ro","activeTargets","entries","ot","entry","targetDepth","lastReportedSize","call","observer","splice","_i","callbacks_1","gatherActiveObservationsAtDepth","skippedTargets","observationTargets","isActive","process","event","some","ErrorEvent","message","document","createEvent","initEvent","dispatchEvent","queueMicroTask","toggle_1","el_1","createTextNode","MutationObserver","cb","observe","characterData","textContent","watching","observerConfig","attributes","childList","subtree","events","time","timeout","Date","now","scheduled","scheduler","Scheduler","_this","stopped","schedule","run","until","elementsHaveResized","start","requestAnimationFrame","stop","body","name","disconnect","updateCount","n","ResizeObservation","CONTENT_BOX","tagName","type","isReplacedElement","ResizeObserverDetail","resizeObserver","observerMap","getObservationIndex","i","ResizeObserverController","connect","detail","options","firstObservation","box","unobserve","index","lastObservation","indexOf","slice","ResizeObserver","TypeError","toString","_ResizeObserver","ResizeObserverPolyfill","_elementSizeObserver","disposeCache","subscribersCache","subscribe","subscriber","subscribers","dispose","_ref","_contentRect","border","elementRect","sub","idx","_createElementSizeObserver","useElementSize","setSize","useElementRect","elementSize","useGlobalKeyDown","onKeyDown","multiplyChannel","b","s","multiply","r","clamp","g","num","max","min","screenChannel","screen","hexToRgb","hex","hexR","hexG","hexB","parseInt","rgbToHex","_ref2","rgbToHsl","_ref3","cmin","cmax","delta","h","l","abs","toFixed","hslToRgb","hsl","c","m","HSL_RE","parseColor","color","str","isHexChars","startsWith","res","exec","parseHsl","rgba","a","rgb","createButtonTones","opts","dark","solid","muted","mode","default","button","primary","positive","caution","critical","createButtonModes","ghost","bleed","createCardStates","enabled","card","state","disabled","hovered","pressed","selected","black","white","colors","lightest","lighter","light","darker","darkest","transparent","spots","gray","red","orange","yellow","green","cyan","blue","purple","magenta","tones","bg","fg","focusRing","defaultOpts","_ref4","shadow","outline","umbra","penumbra","ambient","skeleton","from","to","_ref5","tone","bg2","accent","link","code","_ref6","_ref7","_objectSpread","_ref8","input","placeholder","selectable","_ref9","spot","_ref10","syntax","atrule","attrName","attrValue","attribute","boolean","builtin","cdata","char","class","className","comment","constant","deleted","doctype","entity","function","hexcode","id","important","inserted","keyword","number","operator","prolog","property","pseudoClass","pseudoElement","punctuation","regex","selector","string","symbol","tag","unit","url","variable","createInputModes","readOnly","invalid","createSelectableTones","_createSelectableStates","createSpot","createColorTheme","partialOpts","builders","_createColorScheme","_createColor","createSolidTones","createMutedTones","_multiply","_screen","hues","NEUTRAL_TONES","_ref11","tints","skeletonFrom","_ref12","mix","mix2","defaultTints","isNeutral","_ref13","_ref14","_ref15","_ref16","_ref17","_ref18","_ref19","mainShade","secondaryShade","studioTheme","avatar","distance","textWeight","container","offset","medium","semibold","bold","heading","label","text","radius","shadows","checkbox","radio","markSize","switch","transitionDurationMs","transitionTimingFunction","DEFAULT_THEME_LAYER","dialog","zOffset","popover","tooltip","globalScope","globalThis","self","getGlobalScope","Symbol","for","createContext","ThemeContext","ThemeProvider","parentTheme","useContext","children","scheme","themeProp","rootColor","layer","rootLayer","restTheme","_excluded","colorScheme","version","jsx","Provider","StyledThemeProvider","isRecord","useRootTheme","ThemeColorProvider","root","useTheme","useStyledTheme","MEDIA_MANAGER_CACHE","_getMediaQuery","_getMediaManager","manager","mediaLen","mediaQuery","mq","matchMedia","getCurrentIndex","matches","disposeFns","handleChange","addListener","removeListener","disposeFn","_createMediaManager","useMediaIndex","setIndex","usePrefersDark","setDark","useIsomorphicEffect","useLayoutEffect","useForwardedRef","ref","innerRef","useCustomValidity","customValidity","setCustomValidity","BORDER_VALUE","$border","$borderTop","$borderRight","$borderBottom","borderLeft","$borderLeft","BASE_STYLE","listStyle","BOX_SIZING","BOX_HEIGHT","stretch","fill","responsiveBoxDisplayStyle","$display","responsiveBoxSizingStyle","$sizing","sizing","responsiveBoxHeightStyle","$height","responsiveBoxOverflowStyle","$overflow","overflow","responsiveFlexAlignStyle","align","alignItems","responsiveFlexGapStyle","$gap","gap","responsiveFlexWrapStyle","$wrap","wrap","flexWrap","responsiveFlexJustifyStyle","$justify","justify","justifyContent","responsiveFlexDirectionStyle","$direction","direction","flexDirection","minWidth","minHeight","flexItemStyle","responsiveFlexItemStyle","$flex","flex","focusRingBorderStyle","focusRingStyle","focusRingOutsetWidth","focusRingInsetWidth","bgColor","join","GRID_CSS","GRID_AUTO_COLUMS","auto","fr","GRID_AUTO_ROWS","responsiveGridAutoFlowStyle","$autoFlow","autoFlow","gridAutoFlow","responsiveGridAutoRowsStyle","$autoRows","autoRows","gridAutoRows","responsiveGridAutoColsStyle","$autoCols","autoCols","gridAutoColumns","responsiveGridColumnsStyle","$columns","columns","gridTemplateColumns","responsiveGridRowsStyle","$rows","rows","gridTemplateRows","responsiveGridGapStyle","gridGap","responsiveGridGapXStyle","$gapX","gapX","columnGap","responsiveGridGapYStyle","$gapY","gapY","rowGap","GRID_ITEM_ROW","full","GRID_ITEM_COLUMN","responsiveGridItemRowStyle","$row","row","gridRow","responsiveGridItemRowStartStyle","$rowStart","rowStart","gridRowStart","responsiveGridItemRowEndStyle","$rowEnd","rowEnd","gridRowEnd","responsiveGridItemColumnStyle","$column","column","gridColumn","responsiveGridItemColumnStartStyle","$columnStart","columnStart","gridColumnStart","responsiveGridItemColumnEndStyle","$columnEnd","columnEnd","gridColumnEnd","responsiveInputPaddingStyle","$fontSize","$iconLeft","$iconRight","$padding","$space","spaceScale","len","_padding","_space","_fontSize","_","emSize","p","styles","responsiveInputPaddingIconRightStyle","ROOT_STYLE","css","_templateObject","_taggedTemplateLiteral","textInputRootStyle","textInputBaseStyle","$scheme","$tone","font","textInputFontSizeStyle","textInputRepresentationStyle","$hasPrefix","$hasSuffix","responsivePaddingStyle","$paddingX","$paddingY","$paddingTop","$paddingRight","$paddingBottom","$paddingLeft","responsiveRadiusStyle","$radius","radiusIndex","borderRadius","toBoxShadow","Root","styled","div","$accent","$muted","_templateObject6","SpanWithTextOverflow","span","_templateObject7","Text","forwardRef","childrenProp","textOverflow","weight","restProps","_excluded2","avatarStyle","$color","backgroundColor","userSelect","boxShadow","opacity","appearance","zIndex","transition","strokeWidth","stroke","strokeSasharray","strokeLinecap","textTransform","avatarSize","Arrow","BgStroke","ellipse","Stroke","Initials","Avatar","as","asProp","colorKey","src","title","initials","onImageLoadError","arrowPosition","arrowPositionProp","animateArrowFrom","status","sizeProp","_excluded3","ReactIs","isValidElementType","_sizeRem","_radius","elementId","useId","setArrowPosition","imageFailed","setImageFailed","imageId","raf","cancelAnimationFrame","handleImageError","useCallback","initialsSize","jsxs","viewBox","d","patternContentUnits","href","onError","cx","cy","rx","ry","vectorEffect","Fragment","_templateObject8","AvatarCounter","count","counterSize","childrenToElementArray","isFragment","BASE_STYLES","_templateObject9","marginLeft","AvatarStack","maxLength","maxLengthProp","_excluded4","child","extraCount","visibleChildren","childIndex","cloneElement","String","$margin","$marginX","$marginY","$marginTop","$marginRight","$marginBottom","$marginLeft","Box","marginX","marginY","marginRight","paddingX","paddingY","_excluded5","_templateObject13","Label","_excluded6","$mode","palette","cursor","Badge","_excluded7","Flex","_excluded8","forwardedAs","rotate","keyframes","_templateObject14","_templateObject15","Spinner","SpinnerIcon","_colorVarsStyle","checkered","_c","_d","_e","_f","_g","_h","buttonTheme","_templateObject16","LoadingBox","_templateObject17","Button","icon","iconRight","justifyProp","loading","paddingProp","paddingXProp","paddingYProp","paddingTopProp","paddingBottomProp","paddingLeftProp","paddingRightProp","radiusProp","spaceProp","_excluded9","boxProps","isValidElement","createElement","cardBaseStyle","$checkered","_templateObject18","cardColorStyle","$focusRing","_templateObject20","$shadow","shadowStyle","Card","__unstable_checkered","__unstable_focusRing","toneProp","_excluded10","rootTheme","_templateObject21","Input","Checkbox","forwardedRef","checked","indeterminate","_excluded11","CheckmarkIcon","RemoveIcon","codeSyntaxHighlightingStyle","_ref20","pre","Code","language","languageProp","_excluded12","registered","Refractor","hasLanguage","inline","responsiveContainerWidthStyle","$width","maxWidth","Container","_excluded13","Grid","_excluded14","_templateObject25","_templateObject27","Heading","_excluded15","verticalAlign","Inline","_excluded16","kbd","_templateObject28","KBD","_excluded17","BoundaryElementContext","BoundaryElementProvider","DEFAULT_VALUE","useBoundaryElement","ElementQuery","_excluded18","innerWidth","findMaxBreakpoints","findMinBreakpoints","setRef","ErrorBoundary","Component","constructor","super","error","componentDidCatch","info","onCatch","render","LayerContext","useLayer","LayerProvider","zOffsetProp","maxMediaIndex","registerChild","v","parentRegisterChild","isTopLayer","_templateObject29","LayerChildren","_excluded19","Layer","_excluded20","elementKey","defaultContextValue","setAttribute","appendChild","PortalContext","usePortal","Portal","__unstable_name","portal","portalElement","createPortal","useUnique","valueRef","objA","objB","keysA","keysB","every","_isEqual","__BROWSER__","PortalProvider","__unstable_elements","elementsProp","_templateObject30","SrOnly","_raf","fn","frameId","_raf2","innerDispose","outerDispose","_isEnterToClickElement","isHTMLAnchorElement","isHTMLButtonElement","isHTMLElement","nodeType","ELEMENT_NODE","nodeName","isHTMLInputElement","isHTMLSelectElement","isHTMLTextAreaElement","_hasFocus","activeElement","isFocusable","tabIndex","getAttribute","rel","attemptFocus","focus","focusFirstDescendant","childNodes","focusLastDescendant","_isScrollable","_templateObject31","ItemWrapper","_templateObject32","VirtualList","getItemKey","items","onChange","renderItem","_excluded21","wrapperRef","scrollTop","setScrollTop","scrollHeight","setScrollHeight","itemHeight","setItemHeight","firstElement","firstChild","HTMLElement","_scrollEl","scrollEl","handleScroll","passive","scrollY","handleResize","innerHeight","fromIndex","toIndex","ceil","item","_itemIndex","itemIndex","wrapperStyle","_templateObject33","BorderPath","path","_templateObject34","ShapePath","_templateObject35","PopoverArrow","xmlns","usePopoverModifiers","allowedAutoPlacements","arrow","arrowElement","constrainSize","fallbackPlacements","margins","matchReferenceWidth","open","preventOverflow","skidding","tether","tetherOffset","detectOverflowOptions","altAxis","boundary","maxSizeModifier","phase","requires","_ref21","modifiersData","maxSize","popper","maxHeight","_ref22","rects","reference","_ref23","effect","_ref24","refElement","getPopoverModifiers","_ref25","$preventOverflow","_templateObject36","_templateObject37","PopoverCard","_ref26","$constrainSize","Popover","boundaryElementContext","__unstable_margins","boundaryElementProp","placement","portalProp","referenceElement","referenceElementProp","widthProp","_excluded22","setReferenceElement","popperElement","setPopperElement","setArrowElement","popperReferenceElement","modifiers","usePopper","forceUpdate","childRef","setRootRef","popoverStyle","updateTimeoutRef","clearTimeout","setTimeout","_templateObject39","dist","Radio","_excluded23","inputBaseStyle","_templateObject42","inputColorStyle","inputTextSizeStyle","textSize","selectStyle","_templateObject41","_templateObject44","select","IconBox","Select","_excluded24","SelectIcon","Stack","_excluded25","_templateObject45","_templateObject46","Representation","Track","_templateObject48","Thumb","$indeterminate","trackWidth","trackHeight","trackPadding","checkedOffset","indeterminateOffset","$checked","_templateObject50","Switch","_excluded26","InputRoot","_templateObject52","textarea","Presentation","TextArea","_excluded27","CLEAR_BUTTON_BOX_STYLE","attrs","_templateObject53","Prefix","_templateObject54","Suffix","_templateObject55","LeftBox","_templateObject56","RightBox","_templateObject57","RightCard","_templateObject58","TextInput","clearButton","fontSizeProp","onClear","prefix","suffix","_excluded28","$hasClearButton","$hasIcon","$hasIconRight","handleClearMouseDown","preventDefault","stopPropagation","handleClearClick","prefixNode","presentationNode","clearButtonBoxPadding","clearButtonPadding","clearButtonProps","clearButtonNode","CloseIcon","onClick","onMouseDown","suffixNode","_templateObject59","Border","_templateObject60","Shape","_templateObject61","TooltipArrow","_templateObject62","Tooltip","fallbackPlacementsProp","_excluded29","isOpen","setIsOpen","handleBlur","handleFocus","handleMouseEnter","handleMouseLeave","handleWindowMouseMove","referenceNode","onBlur","onFocus","onMouseEnter","onMouseLeave","popperNode","_templateObject63","ListBox","_templateObject64","ResultsPopover","_templateObject65","_templateObject66","AnimatedSpinnerIcon","_templateObject67","AutocompleteOption","onSelect","handleClick","handleKeyDown","currentTarget","role","autocompleteReducer","activeValue","focused","query","listFocused","AUTOCOMPLETE_LISTBOX_IGNORE_KEYS","AUTOCOMPLETE_POPOVER_MARGINS","AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS","defaultRenderValue","option","defaultFilterOption","toLowerCase","InnerAutocomplete","filterOption","filterOptionProp","listBox","onQueryChange","openButton","optionsProp","relatedElements","renderOption","renderOptionProp","renderPopover","renderValue","valueProp","_excluded30","dispatch","useReducer","defaultRenderOption","_ref27","rootElement","setRootElement","resultsPopoverElement","setResultsPopoverElement","inputElementRef","listBoxElementRef","listFocusedRef","valuePropRef","popoverMouseWithinRef","listBoxId","currentOption","find","o","filteredOptions","filteredOptionsLen","activeItemId","expanded","handleRootBlur","focusInside","e","handleRootFocus","listBoxElement","focusedElement","handleOptionSelect","handleRootKeyDown","activeOption","activeIndex","nextActiveOption","listEl","handleInputChange","nextQuery","handleInputFocus","handlePopoverMouseEnter","handlePopoverMouseLeave","handleClearButtonClick","handleClearButtonFocus","listElement","activeItemElement","openButtonBoxPadding","openButtonPadding","openButtonProps","handleOpenClick","openButtonNode","ChevronDownIcon","inputValue","autoCapitalize","autoComplete","autoCorrect","inputMode","spellCheck","handleListBoxKeyDown","active","results","hidden","inputElement","Autocomplete","ol","_templateObject68","ExpandButton","_templateObject69","Breadcrumbs","separator","spaceRaw","_excluded31","setOpen","expandElement","setExpandElement","popoverElement","setPopoverElement","collapse","expand","rawItems","Children","toArray","beforeLength","afterLength","DialogContext","useDialog","_ref28","background","$position","DialogContainer","_templateObject70","DialogCardRoot","_templateObject71","DialogLayout","_templateObject72","DialogHeader","_templateObject73","DialogContent","_templateObject74","DialogFooter","_templateObject75","DialogCard","__unstable_autoFocus","autoFocus","__unstable_hideCloseButton","hideCloseButton","contentRef","footer","header","onClickOutside","onClose","shadowProp","localContentRef","labelId","showCloseButton","showHeader","setContentRef","Dialog","cardRadius","cardRadiusProp","cardShadow","positionProp","_excluded32","preDivRef","postDivRef","cardRef","cardElement","DialogProvider","contextValue","_templateObject76","Key","_templateObject77","Hotkeys","_excluded33","MenuContext","_isFocusable","_getFocusableElements","_getDOMPath","parentElement","unshift","EMPTY_PATH","useMenuController","originElement","shouldFocus","_setActiveIndex","activeIndexRef","mounted","setActiveIndex","nextActiveIndex","mount","sort","aIndex","bIndex","_sortElements","selectedIndex","focusableElements","focusableLen","focusedIndex","currentIndex","handleItemMouseEnter","handleItemMouseLeave","rafId","_activeIndex","_templateObject78","Menu","focusFirst","focusLast","onEscape","onItemClick","onItemSelect","registerElement","_excluded34","handleRefChange","onItemMouseEnter","onItemMouseLeave","MenuButton","__unstable_disableRestoreFocusOnClose","disableRestoreFocusOnClose","deprecated_boundaryElement","buttonProp","menu","menuProp","deprecated_placement","popoverScheme","deprecated_popoverScheme","deprecated_portal","popoverRadius","deprecated_popoverRadius","deprecated_preventOverflow","setShouldFocus","buttonElement","setButtonElement","menuElements","setChildMenuElements","openRef","handleButtonClick","handleButtonKeyDown","handleMenuClickOutside","handleMenuEscape","relatedTarget","handleItemClick","els","_el","menuProps","onBlurCapture","setButtonRef","popoverProps","MenuDivider","hr","_templateObject79","Selectable","_templateObject80","_templateObject81","useMenu","MenuGroup","_excluded35","shouldFocusRef","withinMenu","setWithinMenu","handleMenuKeyDown","handleChildItemClick","handleMenuMouseEnter","childMenu","ChevronRightIcon","MenuItem","hotkeys","selectedProp","_excluded36","paddingProps","keyframe","_templateObject82","animation","_templateObject83","skeletonStyle","_templateObject84","_ref29","$visible","_ref30","$animated","_templateObject85","Skeleton","animated","delay","_excluded37","visible","setVisible","_ref31","$style","TextSkeleton","_excluded38","LabelSkeleton","_excluded39","HeadingSkeleton","_excluded40","CodeSkeleton","_excluded41","Tab","_excluded42","elementRef","focusedRef","_isReactElement","TabList","_excluded43","setFocusedIndex","tabs","handleTabFocus","numTabs","tabIdx","prevIndex","TabPanel","_excluded44","STATUS_CARD_TONE","warning","success","ROLES","_templateObject86","TextBox","_templateObject87","Toast","closable","description","_excluded45","cardTone","ToastContext","_templateObject88","ToastContainer","_templateObject89","toastId","ToastProvider","setState","toasts","toastsRef","params","duration","dismiss","timeoutId","prevState","findIndex","t","AnimatePresence","initial","_ref32","motion","animate","scale","exit","layout","damping","stiffness","useToast","_focusItemElement","TreeContext","Tree","memo","_excluded46","setFocusedElement","focusedElementRef","itemElements","setItemElements","stateRef","registerItem","path2","newState","setExpanded","itemState","level","focusedKey","itemKey","itemPath","split","pop","parentKey","parentState","prevEl","segments","j","_findPrevItemElement","nextEl","_findNextItemElement","_itemElements","querySelectorAll","useTree","tree","displayName","TreeGroup","_excluded47","li","_templateObject90","_templateObject91","TreeItemBox","$level","ToggleArrowText","_templateObject93","TreeItem","expandedProp","idProp","_excluded48","rootRef","treeitemRef","_id","closest","click","visibility","pointerEvents","ToggleArrowRightIcon"],"mappings":"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"}
1
+ {"version":3,"file":"sanity-ui.js","sources":["../src/constants.ts","../src/styles/helpers.ts","../src/styles/font/responsiveFont.ts","../src/styles/font/codeFontStyle.ts","../src/styles/font/headingFontStyle.ts","../src/styles/font/labelFontStyle.ts","../src/styles/font/textAlignStyle.ts","../src/styles/font/textFontStyle.ts","../src/hooks/useArrayProp.ts","../src/hooks/useClickOutside.ts","../../../../node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js","../../../../node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js","../../../../node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js","../../../../node_modules/@juggle/resize-observer/lib/utils/freeze.js","../../../../node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js","../../../../node_modules/@juggle/resize-observer/lib/ResizeObserverSize.js","../../../../node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js","../../../../node_modules/@juggle/resize-observer/lib/utils/element.js","../../../../node_modules/@juggle/resize-observer/lib/utils/global.js","../../../../node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js","../../../../node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js","../../../../node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js","../../../../node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js","../../../../node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js","../../../../node_modules/@juggle/resize-observer/lib/utils/process.js","../../../../node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js","../../../../node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js","../../../../node_modules/@juggle/resize-observer/lib/utils/scheduler.js","../../../../node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js","../../../../node_modules/@juggle/resize-observer/lib/ResizeObservation.js","../../../../node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js","../../../../node_modules/@juggle/resize-observer/lib/ResizeObserverController.js","../../../../node_modules/@juggle/resize-observer/lib/ResizeObserver.js","../src/observers/resizeObserver.ts","../src/observers/elementSizeObserver.ts","../src/hooks/useElementSize.ts","../src/hooks/useGlobalKeyDown.ts","../src/theme/lib/color-fns/blend/multiply.ts","../src/theme/lib/color-fns/blend/screen.ts","../src/theme/lib/color-fns/convert.ts","../src/theme/lib/color-fns/parse.ts","../src/theme/lib/color-fns/helpers/rgba.ts","../src/theme/lib/theme/color/button/createButtonTones.ts","../src/theme/lib/theme/color/button/createButtonModes.ts","../src/theme/lib/theme/color/card/createCardStates.ts","../src/theme/lib/theme/color/defaults.ts","../src/theme/lib/theme/color/input/createInputModes.ts","../src/theme/lib/theme/color/selectable/createSelectableTones.ts","../src/theme/lib/theme/color/spot/createSpot.ts","../src/theme/lib/theme/color/factory.ts","../src/theme/lib/theme/color/solid/createSolidTones.ts","../src/theme/lib/theme/color/muted/createMuted.ts","../src/theme/studioTheme/helpers.ts","../src/theme/studioTheme/color.ts","../src/theme/studioTheme/theme.ts","../src/theme/studioTheme/fonts.ts","../src/theme/defaults.ts","../src/lib/globalScope.ts","../src/theme/themeContext.ts","../src/theme/themeProvider.tsx","../src/lib/isRecord.ts","../src/theme/useRootTheme.ts","../src/theme/themeColorProvider.tsx","../src/theme/useTheme.ts","../src/hooks/useMediaIndex/lib/media.ts","../src/hooks/useMediaIndex/useMediaIndex.ts","../src/hooks/useIsomorphicEffect.ts","../src/hooks/useForwardedRef.ts","../src/hooks/useCustomValidity.ts","../src/styles/border/borderStyle.ts","../src/styles/box/boxStyle.ts","../src/styles/flex/flexStyle.ts","../src/styles/flex/flexItemStyle.ts","../src/styles/focusRing/index.ts","../src/styles/grid/gridStyle.ts","../src/styles/grid/gridItemStyle.ts","../src/styles/input/responsiveInputPaddingStyle.ts","../src/styles/input/textInputStyle.ts","../src/styles/padding/paddingStyle.ts","../src/styles/radius/radiusStyle.ts","../src/styles/shadow/shadowStyle.ts","../src/primitives/text/text.tsx","../src/primitives/text/styles.ts","../src/primitives/avatar/styles.ts","../src/primitives/avatar/avatar.tsx","../src/primitives/avatar/avatarCounter.tsx","../src/primitives/helpers.ts","../src/primitives/avatar/avatarStack.tsx","../src/primitives/box/box.tsx","../src/styles/margin/marginStyle.ts","../src/primitives/label/label.tsx","../src/primitives/label/styles.ts","../src/primitives/badge/badge.tsx","../src/primitives/badge/styles.ts","../src/primitives/flex/flex.tsx","../src/primitives/spinner/spinner.tsx","../src/styles/colorVars/colorVarsStyle.ts","../src/primitives/button/styles.ts","../src/primitives/button/button.tsx","../src/primitives/card/styles.ts","../src/primitives/card/card.tsx","../src/primitives/checkbox/checkbox.tsx","../src/primitives/checkbox/styles.ts","../src/primitives/code/styles.ts","../src/primitives/code/code.tsx","../src/primitives/container/styles.ts","../src/primitives/container/container.tsx","../src/primitives/grid/grid.tsx","../src/primitives/heading/heading.tsx","../src/primitives/heading/styles.ts","../src/primitives/inline/inline.tsx","../src/primitives/inline/styles.ts","../src/primitives/kbd/kbd.tsx","../src/utils/boundaryElement/boundaryElementContext.ts","../src/utils/boundaryElement/useBoundaryElement.ts","../src/utils/elementQuery/elementQuery.tsx","../src/utils/elementQuery/helpers.ts","../src/utils/errorBoundary.tsx","../src/utils/layer/layerContext.ts","../src/utils/layer/useLayer.ts","../src/utils/layer/layerProvider.tsx","../src/utils/layer/layer.tsx","../src/utils/portal/portalContext.ts","../src/utils/portal/usePortal.ts","../src/utils/portal/portal.ts","../src/hooks/_internal/useUnique.ts","../src/utils/portal/portalProvider.tsx","../src/utils/srOnly/srOnly.tsx","../src/helpers/animation.ts","../src/helpers/element.ts","../src/helpers/focus.ts","../src/helpers/scroll.ts","../src/utils/virtualList/virtualList.tsx","../src/primitives/popover/arrow.tsx","../src/primitives/popover/modifiers/usePopoverModifiers.ts","../src/primitives/popover/modifiers/getPopoverModifiers.ts","../src/primitives/popover/popover.tsx","../src/primitives/radio/radio.tsx","../src/primitives/radio/styles.ts","../src/primitives/select/styles.ts","../src/primitives/select/select.tsx","../src/primitives/stack/styles.ts","../src/primitives/stack/stack.tsx","../src/primitives/switch/switch.tsx","../src/primitives/switch/styles.ts","../src/primitives/textArea/textArea.tsx","../src/primitives/textInput/textInput.tsx","../src/primitives/tooltip/tooltipArrow.tsx","../src/primitives/tooltip/tooltip.tsx","../src/components/autocomplete/autocomplete.styles.tsx","../src/components/autocomplete/autocompleteOption.tsx","../src/components/autocomplete/autocompleteReducer.ts","../src/components/autocomplete/constants.ts","../src/components/autocomplete/autocomplete.tsx","../src/components/breadcrumbs/breadcrumbs.styles.ts","../src/components/breadcrumbs/breadcrumbs.tsx","../src/components/dialog/dialogContext.ts","../src/components/dialog/useDialog.ts","../src/components/dialog/dialog.tsx","../src/components/dialog/styles.ts","../src/components/hotkeys/hotkeys.tsx","../src/components/menu/menuContext.ts","../src/components/menu/helpers.ts","../src/components/menu/useMenuController.ts","../src/components/menu/menu.tsx","../src/components/menu/menuButton.tsx","../src/components/menu/menuDivider.ts","../src/primitives/_selectable/selectable.tsx","../src/primitives/_selectable/style.ts","../src/components/menu/useMenu.ts","../src/components/menu/menuItem.tsx","../src/components/skeleton/styles.ts","../src/components/skeleton/skeleton.tsx","../src/components/skeleton/textSkeleton.tsx","../src/components/tab/tab.tsx","../src/components/tab/tabList.tsx","../src/components/tab/tabPanel.tsx","../src/components/toast/toast.tsx","../src/components/toast/toastContext.ts","../src/components/toast/toastProvider.tsx","../src/components/tree/helpers.ts","../src/components/tree/treeContext.ts","../src/components/tree/tree.tsx","../src/components/tree/useTree.ts","../src/components/tree/treeGroup.tsx","../src/components/tree/treeItem.tsx","../src/components/tree/style.ts","../src/utils/boundaryElement/boundaryElementProvider.tsx","../src/components/dialog/dialogProvider.tsx","../src/components/menu/menuGroup.tsx","../src/hooks/useElementRect/useElementRect.ts","../src/hooks/usePrefersDark.ts","../src/components/toast/useToast.ts"],"sourcesContent":["export const EMPTY_ARRAY: any[] = []\nexport const EMPTY_RECORD: Record<string, any> = {}\n","import {CSSObject} from 'styled-components'\nimport {EMPTY_ARRAY} from '../constants'\nimport {Theme} from '../theme'\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 return _responsive(theme.sanity.media, spaceIndexes, (spaceIndex) =>\n _fillCSSObject(props, rem(theme.sanity.space[spaceIndex]))\n )\n}\n","import {CSSObject} from 'styled-components'\nimport {ThemeFontSize, ThemeFontKey} from '../../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, theme} = props\n const {fonts, media} = theme.sanity\n const {family, sizes, weights} = fonts[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 'styled-components'\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 'styled-components'\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 'styled-components'\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} from 'styled-components'\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 {theme} = props\n\n return _responsive(theme.sanity.media, props.$align, (textAlign) => {\n return {textAlign}\n })\n}\n","import {CSSObject} from 'styled-components'\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 const __perf_hash__ = JSON.stringify(val ?? defaultVal)\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","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","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","export var freeze = function (obj) { return Object.freeze(obj); };\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 { 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","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","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 { queueMicroTask } from './queueMicroTask';\nvar queueResizeObserver = function (cb) {\n queueMicroTask(function ResizeObserver() {\n requestAnimationFrame(cb);\n });\n};\nexport { queueResizeObserver };\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 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 {useEffect} from 'react'\n\n/**\n * @beta\n */\nexport function useGlobalKeyDown(onKeyDown: (event: KeyboardEvent) => void): void {\n return useEffect(() => {\n addEventListener('keydown', onKeyDown)\n\n return () => removeEventListener('keydown', onKeyDown)\n }, [onKeyDown])\n}\n","import {RGB} from '../types'\n\nfunction multiplyChannel(b: number, s: number) {\n return b * s\n}\n\n/**\n * Apply the \\`multiply\\` blend mode\n * Source: https://www.w3.org/TR/compositing-1/#blendingmultiply\n * @internal\n */\nexport function multiply(b: RGB, s: RGB): RGB {\n return {\n r: Math.round(clamp(multiplyChannel(b.r / 255, s.r / 255) * 255)),\n g: Math.round(clamp(multiplyChannel(b.g / 255, s.g / 255) * 255)),\n b: Math.round(clamp(multiplyChannel(b.b / 255, s.b / 255) * 255)),\n }\n}\n\nfunction clamp(num: number) {\n return Math.max(Math.min(num, 255), 0)\n}\n","import {RGB} from '../types'\n\nfunction screenChannel(b: number, s: number) {\n return b + s - b * s\n}\n\n/**\n * Apply the \\`screen\\` blend mode\n * Source: https://www.w3.org/TR/compositing-1/#blendingscreen\n * @internal\n */\nexport function screen(b: RGB, s: RGB): RGB {\n return {\n r: Math.round(clamp(screenChannel(b.r / 255, s.r / 255) * 255)),\n g: Math.round(clamp(screenChannel(b.g / 255, s.g / 255) * 255)),\n b: Math.round(clamp(screenChannel(b.b / 255, s.b / 255) * 255)),\n }\n}\n\nfunction clamp(num: number) {\n return Math.max(Math.min(num, 255), 0)\n}\n","import {HSL, RGB} from './types'\n\n/**\n * @internal\n */\nexport function hexToRgb(hex: string): RGB {\n if (hex.length === 4) {\n const hexR = hex.slice(1, 2)\n const hexG = hex.slice(2, 3)\n const hexB = hex.slice(3, 4)\n\n return {\n r: parseInt(hexR + hexR, 16),\n g: parseInt(hexG + hexG, 16),\n b: parseInt(hexB + hexB, 16),\n }\n }\n\n return {\n r: parseInt(hex.slice(1, 3), 16),\n g: parseInt(hex.slice(3, 5), 16),\n b: parseInt(hex.slice(5, 7), 16),\n }\n}\n\n/**\n * @internal\n */\nexport function rgbToHex({r, g, b}: RGB): string {\n return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)\n}\n\n/**\n * @internal\n * @see https://css-tricks.com/converting-color-spaces-in-javascript/\n */\nexport function rgbToHsl({r, g, b}: RGB): HSL {\n // Make r, g, and b fractions of 1\n r /= 255\n g /= 255\n b /= 255\n\n // Find greatest and smallest channel values\n const cmin = Math.min(r, g, b)\n const cmax = Math.max(r, g, b)\n const delta = cmax - cmin\n\n let h = 0\n let s = 0\n let l = 0\n\n // Calculate hue\n // No difference\n if (delta == 0) h = 0\n // Red is max\n else if (cmax == r) h = ((g - b) / delta) % 6\n // Green is max\n else if (cmax == g) h = (b - r) / delta + 2\n // Blue is max\n else h = (r - g) / delta + 4\n\n h = Math.round(h * 60)\n\n // Make negative hues positive behind 360°\n if (h < 0) h += 360\n\n // Calculate lightness\n l = (cmax + cmin) / 2\n\n // Calculate saturation\n s = delta == 0 ? 0 : delta / (1 - Math.abs(2 * l - 1))\n\n // Multiply l and s by 100\n s = +(s * 100).toFixed(1)\n l = +(l * 100).toFixed(1)\n\n return {h, s, l}\n}\n\n/**\n * @internal\n */\nexport function hslToRgb(hsl: HSL): RGB {\n // Must be fractions of 1\n const s = hsl.s / 100\n const l = hsl.l / 100\n\n const c = (1 - Math.abs(2 * l - 1)) * s\n const x = c * (1 - Math.abs(((hsl.h / 60) % 2) - 1))\n const m = l - c / 2\n\n let r = 0\n let g = 0\n let b = 0\n\n if (0 <= hsl.h && hsl.h < 60) {\n r = c\n g = x\n b = 0\n } else if (60 <= hsl.h && hsl.h < 120) {\n r = x\n g = c\n b = 0\n } else if (120 <= hsl.h && hsl.h < 180) {\n r = 0\n g = c\n b = x\n } else if (180 <= hsl.h && hsl.h < 240) {\n r = 0\n g = x\n b = c\n } else if (240 <= hsl.h && hsl.h < 300) {\n r = x\n g = 0\n b = c\n } else if (300 <= hsl.h && hsl.h < 360) {\n r = c\n g = 0\n b = x\n }\n\n return {\n r: Math.round((r + m) * 255),\n g: Math.round((g + m) * 255),\n b: Math.round((b + m) * 255),\n }\n}\n","import {hexToRgb, hslToRgb} from './convert'\nimport {HSL, RGB} from './types'\n\nconst HEX_CHARS = '0123456789ABCDEFabcdef'\n\nconst HSL_RE = /hsl\\(\\s*(\\d+)\\s*,\\s*((\\d+(?:\\.\\d+)?)%)\\s*,\\s*((\\d+(?:\\.\\d+)?)%)\\s*\\)/i\n\nfunction isHexChars(str: string) {\n for (const c of str) {\n if (HEX_CHARS.indexOf(c) === -1) {\n return false\n }\n }\n\n return true\n}\n\nfunction isHex(str: string) {\n if (str[0] !== '#') return false\n\n // Accept both #000 and #000000\n if (!(str.length === 4 || str.length === 7)) return false\n\n return isHexChars(str.slice(1))\n}\n\nfunction parseHsl(str: string): HSL {\n const res = HSL_RE.exec(str)\n\n if (!res) {\n throw new Error(`parseHsl: string is not a HSL color: \"${str}\"`)\n }\n\n return {h: parseInt(res[1]), s: parseFloat(res[3]), l: parseFloat(res[5])}\n}\n\n/**\n * @internal\n */\nexport function parseColor(color: unknown): RGB {\n if (!color) return {r: 0, g: 0, b: 0}\n\n if (typeof color !== 'string') {\n throw new Error('parseColor: expected a string')\n }\n\n if (isHex(color)) {\n return hexToRgb(color)\n }\n\n if (color.startsWith('hsl(')) {\n return hslToRgb(parseHsl(color))\n }\n\n throw new Error(`parseColor: unexpected color format: \"${color}\"`)\n}\n","import {parseColor} from '../parse'\n\n/**\n * @internal\n */\nexport function rgba(color: unknown, a: number): string {\n const rgb = parseColor(color)\n\n return `rgba(${rgb.r},${rgb.g},${rgb.b},${a})`\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorMuted} from '../muted'\nimport {ThemeColorSolid} from '../solid'\nimport {ThemeColorButtonModeKey, ThemeColorButtonTones} from './types'\n\nexport function createButtonTones(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted,\n mode: ThemeColorButtonModeKey\n): ThemeColorButtonTones {\n return {\n default: opts.button({\n base,\n dark,\n solid: solid.default,\n muted: muted.default,\n mode,\n }),\n primary: opts.button({\n base,\n dark,\n solid: solid.primary,\n muted: muted.primary,\n mode,\n }),\n positive: opts.button({\n base,\n dark,\n solid: solid.positive,\n muted: muted.positive,\n mode,\n }),\n caution: opts.button({\n base,\n dark,\n solid: solid.caution,\n muted: muted.caution,\n mode,\n }),\n critical: opts.button({\n base,\n dark,\n solid: solid.critical,\n muted: muted.critical,\n mode,\n }),\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorMuted} from '../muted'\nimport {ThemeColorSolid} from '../solid'\nimport {createButtonTones} from './createButtonTones'\nimport {ThemeColorButton} from './types'\n\nexport function createButtonModes(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted\n): ThemeColorButton {\n return {\n default: createButtonTones(opts, base, dark, solid, muted, 'default'),\n ghost: createButtonTones(opts, base, dark, solid, muted, 'ghost'),\n bleed: createButtonTones(opts, base, dark, solid, muted, 'bleed'),\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorMuted} from '../muted'\nimport {ThemeColorSolid} from '../solid'\nimport {ThemeColorName} from '../types'\nimport {ThemeColorCard} from './types'\n\nexport function createCardStates(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n name: ThemeColorName,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted\n): ThemeColorCard {\n return {\n enabled: opts.card({\n base,\n dark,\n name,\n state: 'enabled',\n solid,\n muted,\n }),\n disabled: opts.card({\n base,\n dark,\n name,\n state: 'disabled',\n solid,\n muted,\n }),\n hovered: opts.card({\n base,\n dark,\n name,\n state: 'hovered',\n solid,\n muted,\n }),\n pressed: opts.card({\n base,\n dark,\n name,\n state: 'pressed',\n solid,\n muted,\n }),\n selected: opts.card({\n base,\n dark,\n name,\n state: 'selected',\n solid,\n muted,\n }),\n }\n}\n","import {ThemeColorBuilderOpts} from './factory'\n\nconst black = 'hsl(0, 0%, 0%)'\nconst white = 'hsl(0, 0%, 100%)'\n\nconst colors = {\n default: {\n lightest: 'hsl(0, 0%, 95%)',\n lighter: 'hsl(0, 0%, 70%)',\n light: 'hsl(0, 0%, 65%)',\n base: 'hsl(0, 0%, 50%)',\n dark: 'hsl(0, 0%, 35%)',\n darker: 'hsl(0, 0%, 20%)',\n darkest: 'hsl(0, 0%, 5%)',\n },\n transparent: {\n lightest: 'hsl(240, 100%, 95%)',\n lighter: 'hsl(240, 100%, 70%)',\n light: 'hsl(240, 100%, 65%)',\n base: 'hsl(240, 100%, 50%)',\n dark: 'hsl(240, 100%, 35%)',\n darker: 'hsl(240, 100%, 20%)',\n darkest: 'hsl(240, 100%, 5%)',\n },\n primary: {\n lightest: 'hsl(240, 100%, 95%)',\n lighter: 'hsl(240, 100%, 70%)',\n light: 'hsl(240, 100%, 65%)',\n base: 'hsl(240, 100%, 50%)',\n dark: 'hsl(240, 100%, 35%)',\n darker: 'hsl(240, 100%, 20%)',\n darkest: 'hsl(240, 100%, 5%)',\n },\n positive: {\n lightest: 'hsl(120, 100%, 95%)',\n lighter: 'hsl(120, 100%, 70%)',\n light: 'hsl(120, 100%, 65%)',\n base: 'hsl(120, 100%, 50%)',\n dark: 'hsl(120, 100%, 35%)',\n darker: 'hsl(120, 100%, 20%)',\n darkest: 'hsl(120, 100%, 5%)',\n },\n caution: {\n lightest: 'hsl(60, 100%, 95%)',\n lighter: 'hsl(60, 100%, 70%)',\n light: 'hsl(60, 100%, 65%)',\n base: 'hsl(60, 100%, 50%)',\n dark: 'hsl(60, 100%, 35%)',\n darker: 'hsl(60, 100%, 20%)',\n darkest: 'hsl(60, 100%, 5%)',\n },\n critical: {\n lightest: 'hsl(0, 100%, 95%)',\n lighter: 'hsl(0, 100%, 70%)',\n light: 'hsl(0, 100%, 65%)',\n base: 'hsl(0, 100%, 50%)',\n dark: 'hsl(0, 100%, 35%)',\n darker: 'hsl(0, 100%, 20%)',\n darkest: 'hsl(0, 100%, 5%)',\n },\n}\n\nconst spots = {\n gray: 'hsl(0, 0%, 50%)',\n red: 'hsl(0, 100%, 50%)',\n orange: 'hsl(30, 100%, 50%)',\n yellow: 'hsl(60, 100%, 50%)',\n green: 'hsl(120, 100%, 50%)',\n cyan: 'hsl(180, 100%, 50%)',\n blue: 'hsl(240, 100%, 50%)',\n purple: 'hsl(270, 100%, 50%)',\n magenta: 'hsl(300, 100%, 50%)',\n}\n\nconst tones = {\n transparent: {\n bg: [colors.transparent.darkest, colors.transparent.lightest],\n fg: [colors.transparent.lightest, colors.transparent.darkest],\n border: [colors.transparent.darker, colors.transparent.lighter],\n focusRing: [colors.transparent.base, colors.transparent.base],\n },\n primary: {\n bg: [colors.primary.darkest, colors.primary.lightest],\n fg: [colors.primary.lightest, colors.primary.darkest],\n border: [colors.primary.darker, colors.primary.lighter],\n focusRing: [colors.primary.base, colors.primary.base],\n },\n positive: {\n bg: [colors.positive.darkest, colors.positive.lightest],\n fg: [colors.positive.lightest, colors.positive.darkest],\n border: [colors.positive.darker, colors.positive.lighter],\n focusRing: [colors.positive.base, colors.positive.base],\n },\n caution: {\n bg: [colors.caution.darkest, colors.caution.lightest],\n fg: [colors.caution.lightest, colors.caution.darkest],\n border: [colors.caution.darker, colors.caution.lighter],\n focusRing: [colors.caution.base, colors.caution.base],\n },\n critical: {\n bg: [colors.critical.darkest, colors.critical.lightest],\n fg: [colors.critical.lightest, colors.critical.darkest],\n border: [colors.critical.darker, colors.critical.lighter],\n focusRing: [colors.critical.base, colors.critical.base],\n },\n}\n\nexport const defaultOpts: ThemeColorBuilderOpts = {\n base: ({dark, name}) => {\n if (name === 'default') {\n return {\n bg: dark ? black : white,\n fg: dark ? white : black,\n border: dark ? colors.default.darkest : colors.default.lightest,\n focusRing: colors.primary.base,\n shadow: {\n outline: black,\n umbra: black,\n penumbra: black,\n ambient: black,\n },\n skeleton: {\n from: dark ? white : black,\n to: dark ? white : black,\n },\n }\n }\n\n // Variants:\n // - primary\n // - positive\n // - caution\n // - critical\n return {\n bg: tones[name].bg[dark ? 0 : 1],\n fg: tones[name].fg[dark ? 0 : 1],\n border: tones[name].border[dark ? 0 : 1],\n focusRing: tones[name].focusRing[dark ? 0 : 1],\n shadow: {\n outline: black,\n umbra: black,\n penumbra: black,\n ambient: black,\n },\n skeleton: {\n from: dark ? white : black,\n to: dark ? white : black,\n },\n }\n },\n\n solid: ({base, dark, state, tone}) => {\n const color = colors[tone]\n\n if (state === 'hovered') {\n return {\n bg: dark ? color.light : color.dark,\n bg2: dark ? color.light : color.dark,\n border: dark ? color.lighter : color.darker,\n fg: dark ? color.darkest : color.lightest,\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n }\n }\n\n return {\n bg: color.base,\n bg2: color.base,\n border: dark ? color.light : color.dark,\n fg: dark ? color.darkest : color.lightest,\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n }\n },\n\n muted: ({base, dark, state, tone}) => {\n const color = colors[tone]\n\n if (state === 'hovered') {\n return {\n bg: dark ? color.darker : color.lighter,\n bg2: dark ? color.darker : color.lighter,\n border: dark ? color.lighter : color.darker,\n fg: dark ? color.lightest : color.darkest,\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n }\n }\n\n return {\n bg: dark ? color.darkest : color.lightest,\n bg2: dark ? color.darkest : color.lightest,\n border: dark ? color.darker : color.lighter,\n fg: dark ? color.lighter : color.darker,\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n }\n },\n\n button: ({base, mode, muted, solid}) => {\n if (mode === 'bleed') {\n return {\n ...muted,\n enabled: {\n bg: 'transparent',\n bg2: 'transparent',\n fg: muted.enabled.fg,\n border: 'transparent',\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n },\n hovered: {\n bg: muted.enabled.bg,\n bg2: muted.enabled.bg,\n fg: muted.hovered.fg,\n border: 'transparent',\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n },\n }\n }\n\n if (mode === 'ghost')\n return {\n ...solid,\n enabled: muted.enabled,\n }\n\n return solid\n },\n\n card: ({base}) => {\n return {\n bg: black,\n bg2: black,\n fg: black,\n border: black,\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n }\n },\n\n input: () => {\n return {\n bg: black,\n fg: black,\n border: black,\n placeholder: black,\n }\n },\n\n selectable: ({muted, state, tone}) => {\n return muted[tone][state]\n },\n\n spot: ({key}) => {\n return spots[key]\n },\n\n syntax: () => ({\n atrule: black,\n attrName: black,\n attrValue: black,\n attribute: black,\n boolean: black,\n builtin: black,\n cdata: black,\n char: black,\n class: black,\n className: black,\n comment: black,\n constant: black,\n deleted: black,\n doctype: black,\n entity: black,\n function: black,\n hexcode: black,\n id: black,\n important: black,\n inserted: black,\n keyword: black,\n number: black,\n operator: black,\n prolog: black,\n property: black,\n pseudoClass: black,\n pseudoElement: black,\n punctuation: black,\n regex: black,\n selector: black,\n string: black,\n symbol: black,\n tag: black,\n unit: black,\n url: black,\n variable: black,\n }),\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorMuted} from '../muted'\nimport {ThemeColorSolid} from '../solid'\nimport {ThemeColorInput} from './types'\n\nexport function createInputModes(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted\n): ThemeColorInput {\n return {\n default: {\n enabled: opts.input({\n base,\n dark,\n mode: 'default',\n state: 'enabled',\n solid: solid.default,\n muted: muted.default,\n }),\n disabled: opts.input({\n base,\n dark,\n mode: 'default',\n state: 'disabled',\n solid: solid.default,\n muted: muted.default,\n }),\n hovered: opts.input({\n base,\n dark,\n mode: 'default',\n state: 'hovered',\n solid: solid.default,\n muted: muted.default,\n }),\n readOnly: opts.input({\n base,\n dark,\n mode: 'default',\n state: 'readOnly',\n solid: solid.default,\n muted: muted.default,\n }),\n },\n invalid: {\n enabled: opts.input({\n base,\n dark,\n mode: 'invalid',\n state: 'enabled',\n solid: solid.default,\n muted: muted.default,\n }),\n disabled: opts.input({\n base,\n dark,\n mode: 'invalid',\n state: 'disabled',\n solid: solid.default,\n muted: muted.default,\n }),\n hovered: opts.input({\n base,\n dark,\n mode: 'invalid',\n state: 'hovered',\n solid: solid.default,\n muted: muted.default,\n }),\n readOnly: opts.input({\n base,\n dark,\n mode: 'invalid',\n state: 'readOnly',\n solid: solid.default,\n muted: muted.default,\n }),\n },\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorMuted} from '../muted'\nimport {ThemeColorSolid} from '../solid'\nimport {ThemeColorSelectable, ThemeColorSelectableStates} from './types'\n\nexport function createSelectableTones(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted\n): ThemeColorSelectable {\n return {\n default: _createSelectableStates(opts, base, dark, solid, muted, 'default'),\n primary: _createSelectableStates(opts, base, dark, solid, muted, 'primary'),\n positive: _createSelectableStates(opts, base, dark, solid, muted, 'positive'),\n caution: _createSelectableStates(opts, base, dark, solid, muted, 'caution'),\n critical: _createSelectableStates(opts, base, dark, solid, muted, 'critical'),\n }\n}\n\nfunction _createSelectableStates(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted,\n tone: 'default' | 'primary' | 'positive' | 'caution' | 'critical'\n): ThemeColorSelectableStates {\n return {\n enabled: opts.selectable({\n base,\n dark,\n solid,\n muted,\n state: 'enabled',\n tone,\n }),\n hovered: opts.selectable({\n base,\n dark,\n solid,\n muted,\n state: 'hovered',\n tone,\n }),\n pressed: opts.selectable({\n base,\n dark,\n solid,\n muted,\n state: 'pressed',\n tone,\n }),\n selected: opts.selectable({\n base,\n dark,\n solid,\n muted,\n state: 'selected',\n tone,\n }),\n disabled: opts.selectable({\n base,\n dark,\n solid,\n muted,\n state: 'disabled',\n tone,\n }),\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorSpot} from './types'\n\nexport function createSpot(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean\n): ThemeColorSpot {\n return {\n gray: opts.spot({base, dark, key: 'gray'}),\n blue: opts.spot({base, dark, key: 'blue'}),\n purple: opts.spot({base, dark, key: 'purple'}),\n magenta: opts.spot({base, dark, key: 'magenta'}),\n red: opts.spot({base, dark, key: 'red'}),\n orange: opts.spot({base, dark, key: 'orange'}),\n yellow: opts.spot({base, dark, key: 'yellow'}),\n green: opts.spot({base, dark, key: 'green'}),\n cyan: opts.spot({base, dark, key: 'cyan'}),\n }\n}\n","import {ThemeColorGenericState} from './_generic'\nimport {ThemeColorBase} from './base'\nimport {ThemeColorButtonModeKey, ThemeColorButtonStates} from './button'\nimport {createButtonModes} from './button/createButtonModes'\nimport {ThemeColorCardState} from './card'\nimport {createCardStates} from './card/createCardStates'\nimport {defaultOpts} from './defaults'\nimport {ThemeColorInputState} from './input'\nimport {createInputModes} from './input/createInputModes'\nimport {ThemeColorMuted, ThemeColorMutedTone} from './muted'\nimport {createMutedTones} from './muted/createMuted'\nimport {ThemeColorSelectableState} from './selectable'\nimport {createSelectableTones} from './selectable/createSelectableTones'\nimport {ThemeColorSolid, ThemeColorSolidTone} from './solid'\nimport {createSolidTones} from './solid/createSolidTones'\nimport {ThemeColorSpotKey} from './spot'\nimport {createSpot} from './spot/createSpot'\nimport {ThemeColorSyntax} from './syntax'\nimport {\n ThemeColorName,\n ThemeColorScheme,\n ThemeColorSchemes,\n ThemeColor,\n ThemeColorToneKey,\n} from './types'\n\n/**\n * @public\n */\nexport interface ThemeColorBuilderOpts {\n base: (opts: {dark: boolean; name: ThemeColorName}) => ThemeColorBase\n solid: (opts: {\n base: ThemeColorBase\n dark: boolean\n tone: ThemeColorToneKey\n name: ThemeColorName\n state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'\n }) => ThemeColorGenericState\n muted: (opts: {\n base: ThemeColorBase\n dark: boolean\n tone: ThemeColorToneKey\n name: ThemeColorName\n state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'\n }) => ThemeColorGenericState\n card: (opts: {\n base: ThemeColorBase\n dark: boolean\n muted: ThemeColorMuted\n name: ThemeColorName\n solid: ThemeColorSolid\n state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'\n }) => ThemeColorCardState\n button: (opts: {\n dark: boolean\n mode: ThemeColorButtonModeKey\n base: ThemeColorBase\n solid: ThemeColorSolidTone\n muted: ThemeColorMutedTone\n }) => ThemeColorButtonStates\n input: (opts: {\n base: ThemeColorBase\n solid: ThemeColorSolidTone\n muted: ThemeColorMutedTone\n dark: boolean\n mode: 'default' | 'invalid'\n state: 'enabled' | 'disabled' | 'hovered' | 'readOnly'\n }) => ThemeColorInputState\n selectable: (opts: {\n dark: boolean\n base: ThemeColorBase\n solid: ThemeColorSolid\n muted: ThemeColorMuted\n state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'\n tone: 'default' | 'primary' | 'positive' | 'caution' | 'critical'\n }) => ThemeColorSelectableState\n syntax: (opts: {base: ThemeColorBase; dark: boolean}) => ThemeColorSyntax\n spot: (opts: {base: ThemeColorBase; dark: boolean; key: ThemeColorSpotKey}) => string\n}\n\n/**\n * @public\n */\nexport type PartialThemeColorBuilderOpts = Partial<ThemeColorBuilderOpts>\n\n/**\n * @public\n */\nexport function createColorTheme(\n partialOpts: PartialThemeColorBuilderOpts = {}\n): ThemeColorSchemes {\n const builders: ThemeColorBuilderOpts = {...defaultOpts, ...partialOpts}\n\n return {\n light: _createColorScheme(builders, false),\n dark: _createColorScheme(builders, true),\n }\n}\n\n/**\n * @internal\n */\nfunction _createColorScheme(opts: ThemeColorBuilderOpts, dark: boolean): ThemeColorScheme {\n return {\n default: _createColor(opts, dark, 'default'),\n transparent: _createColor(opts, dark, 'transparent'),\n primary: _createColor(opts, dark, 'primary'),\n positive: _createColor(opts, dark, 'positive'),\n caution: _createColor(opts, dark, 'caution'),\n critical: _createColor(opts, dark, 'critical'),\n }\n}\n\n/**\n * @internal\n */\nfunction _createColor(\n opts: ThemeColorBuilderOpts,\n dark: boolean,\n name: ThemeColorName\n): ThemeColor {\n const base = opts.base({dark, name})\n const solid = createSolidTones(opts, base, dark, name)\n const muted = createMutedTones(opts, base, dark, name)\n\n return {\n base,\n button: createButtonModes(opts, base, dark, solid, muted),\n card: createCardStates(opts, base, dark, name, solid, muted),\n dark,\n input: createInputModes(opts, base, dark, solid, muted),\n selectable: createSelectableTones(opts, base, dark, solid, muted),\n spot: createSpot(opts, base, dark),\n syntax: opts.syntax({base, dark}),\n solid,\n muted,\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorName} from '../types'\nimport {ThemeColorSolid} from './types'\n\nexport function createSolidTones(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n name: ThemeColorName\n): ThemeColorSolid {\n return {\n default: {\n enabled: opts.solid({base, dark, tone: 'default', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'default', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'default', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'default', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'default', name, state: 'selected'}),\n },\n transparent: {\n enabled: opts.solid({base, dark, tone: 'transparent', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'transparent', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'transparent', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'transparent', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'transparent', name, state: 'selected'}),\n },\n primary: {\n enabled: opts.solid({base, dark, tone: 'primary', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'primary', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'primary', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'primary', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'primary', name, state: 'selected'}),\n },\n positive: {\n enabled: opts.solid({base, dark, tone: 'positive', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'positive', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'positive', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'positive', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'positive', name, state: 'selected'}),\n },\n caution: {\n enabled: opts.solid({base, dark, tone: 'caution', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'caution', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'caution', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'caution', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'caution', name, state: 'selected'}),\n },\n critical: {\n enabled: opts.solid({base, dark, tone: 'critical', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'critical', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'critical', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'critical', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'critical', name, state: 'selected'}),\n },\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorName} from '../types'\nimport {ThemeColorMuted} from './types'\n\nexport function createMutedTones(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n name: ThemeColorName\n): ThemeColorMuted {\n return {\n default: {\n enabled: opts.muted({base, dark, tone: 'default', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'default', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'default', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'default', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'default', name, state: 'selected'}),\n },\n transparent: {\n enabled: opts.muted({base, dark, tone: 'transparent', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'transparent', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'transparent', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'transparent', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'transparent', name, state: 'selected'}),\n },\n primary: {\n enabled: opts.muted({base, dark, tone: 'primary', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'primary', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'primary', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'primary', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'primary', name, state: 'selected'}),\n },\n positive: {\n enabled: opts.muted({base, dark, tone: 'positive', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'positive', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'positive', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'positive', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'positive', name, state: 'selected'}),\n },\n caution: {\n enabled: opts.muted({base, dark, tone: 'caution', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'caution', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'caution', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'caution', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'caution', name, state: 'selected'}),\n },\n critical: {\n enabled: opts.muted({base, dark, tone: 'critical', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'critical', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'critical', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'critical', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'critical', name, state: 'selected'}),\n },\n }\n}\n","import {parseColor, rgbToHex, screen as _screen, multiply as _multiply} from '../lib/color-fns'\n\nexport function multiply(bg: string, fg: string): string {\n const b = parseColor(bg)\n const s = parseColor(fg)\n const hex = rgbToHex(_multiply(b, s))\n\n return hex\n}\n\nexport function screen(bg: string, fg: string): string {\n const b = parseColor(bg)\n const s = parseColor(fg)\n const hex = rgbToHex(_screen(b, s))\n\n return hex\n}\n","import {black, ColorTints, hues, white} from '@sanity/color'\nimport {rgba} from '../lib/color-fns'\nimport {createColorTheme} from '../lib/theme'\nimport {multiply, screen} from './helpers'\n\nconst tones: {[key: string]: ColorTints} = {\n default: hues.gray,\n transparent: hues.gray,\n primary: hues.blue,\n positive: hues.green,\n caution: hues.yellow,\n critical: hues.red,\n}\n\nconst NEUTRAL_TONES = ['default', 'transparent']\n\nexport const color = createColorTheme({\n base: ({dark, name}) => {\n if (name === 'default') {\n const tints = hues.gray\n const skeletonFrom = dark ? tints[900].hex : tints[100].hex\n\n return {\n fg: dark ? white.hex : black.hex,\n bg: dark ? black.hex : white.hex,\n border: tints[dark ? 800 : 200].hex,\n focusRing: hues.blue[dark ? 500 : 500].hex,\n shadow: {\n outline: rgba(tints[500].hex, 0.4),\n umbra: dark ? rgba(tints[950].hex, 0.4) : rgba(tints[500].hex, 0.2),\n penumbra: dark ? rgba(tints[950].hex, 0.28) : rgba(tints[500].hex, 0.14),\n ambient: dark ? rgba(tints[950].hex, 0.24) : rgba(tints[500].hex, 0.12),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (name === 'transparent') {\n const tints = tones.default\n const skeletonFrom = tints[dark ? 800 : 200].hex\n\n return {\n fg: tints[dark ? 100 : 900].hex,\n bg: tints[dark ? 950 : 50].hex,\n border: tints[dark ? 800 : 300].hex,\n focusRing: hues.blue[500].hex,\n shadow: {\n outline: rgba(tints[500].hex, 0.4),\n umbra: dark ? rgba(tints[900].hex, 0.4) : rgba(tints[500].hex, 0.2),\n penumbra: dark ? rgba(tints[900].hex, 0.28) : rgba(tints[500].hex, 0.14),\n ambient: dark ? rgba(tints[900].hex, 0.24) : rgba(tints[500].hex, 0.12),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n const tints = tones[name] || tones.default\n const skeletonFrom = tints[dark ? 800 : 200].hex\n\n return {\n fg: tints[dark ? 100 : 900].hex,\n bg: tints[dark ? 950 : 50].hex,\n border: tints[dark ? 800 : 200].hex,\n focusRing: tints[500].hex,\n shadow: {\n outline: rgba(tints[500].hex, 0.4),\n umbra: dark ? rgba(tints[900].hex, 0.4) : rgba(tints[500].hex, 0.2),\n penumbra: dark ? rgba(tints[900].hex, 0.28) : rgba(tints[500].hex, 0.14),\n ambient: dark ? rgba(tints[900].hex, 0.24) : rgba(tints[500].hex, 0.12),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n solid: ({base, dark, name, state, tone}) => {\n const mix = dark ? screen : multiply\n const mix2 = dark ? multiply : screen\n const defaultTints = tones[name] || tones.default\n const isNeutral = NEUTRAL_TONES.includes(name) && NEUTRAL_TONES.includes(tone)\n\n let tints = tones[tone === 'default' ? name : tone] || defaultTints\n\n if (state === 'disabled') {\n tints = defaultTints\n\n const bg = mix(base.bg, tints[dark ? 800 : 200].hex)\n const skeletonFrom = mix2(bg, tints[dark ? 200 : 800].hex)\n\n return {\n bg,\n bg2: mix2(bg, tints[dark ? 50 : 950].hex),\n border: mix(base.bg, tints[dark ? 800 : 200].hex),\n fg: mix(base.bg, dark ? black.hex : white.hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 950 : 50].hex),\n },\n accent: {\n fg: mix(base.bg, tints[dark ? 950 : 50].hex),\n },\n link: {\n fg: mix(base.bg, tints[dark ? 950 : 50].hex),\n },\n code: {\n bg,\n fg: mix(base.bg, tints[dark ? 950 : 50].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'hovered') {\n const bg = mix(base.bg, tints[dark ? 300 : 600].hex)\n const skeletonFrom = mix2(bg, tints[dark ? 200 : 800].hex)\n\n return {\n bg,\n bg2: mix2(bg, tints[dark ? 50 : 950].hex),\n border: mix(base.bg, tints[dark ? 300 : 600].hex),\n fg: mix(base.bg, dark ? black.hex : white.hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n accent: {\n fg: mix2(bg, hues.red[dark ? 800 : 200].hex),\n },\n link: {\n fg: mix2(bg, hues.blue[dark ? 800 : 200].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'pressed') {\n const bg = mix(base.bg, tints[dark ? 200 : 800].hex)\n const skeletonFrom = mix2(bg, tints[dark ? 200 : 800].hex)\n\n return {\n bg: mix(base.bg, tints[dark ? 200 : 800].hex),\n bg2: mix2(bg, tints[dark ? 50 : 950].hex),\n border: mix(base.bg, tints[dark ? 200 : 800].hex),\n fg: mix(base.bg, dark ? black.hex : white.hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n accent: {\n fg: mix2(bg, hues.red[dark ? 800 : 200].hex),\n },\n link: {\n fg: mix2(bg, hues.blue[dark ? 800 : 200].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'selected') {\n if (isNeutral) {\n tints = tones.primary\n }\n\n const bg = mix(base.bg, tints[dark ? 200 : 800].hex)\n const skeletonFrom = mix2(bg, tints[dark ? 200 : 800].hex)\n\n return {\n bg,\n bg2: mix2(bg, tints[dark ? 50 : 950].hex),\n border: mix(base.bg, tints[dark ? 200 : 800].hex),\n fg: mix(base.bg, dark ? black.hex : white.hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n accent: {\n fg: mix2(bg, hues.red[dark ? 800 : 200].hex),\n },\n link: {\n fg: mix2(bg, hues.blue[dark ? 800 : 200].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n // state: \"enabled\" | unknown\n const bg = mix(base.bg, tints[dark ? 400 : 500].hex)\n const skeletonFrom = mix2(bg, tints[dark ? 200 : 800].hex)\n\n return {\n bg,\n bg2: mix2(bg, tints[dark ? 50 : 950].hex),\n border: mix(base.bg, tints[dark ? 400 : 500].hex),\n fg: mix(base.bg, dark ? black.hex : white.hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 900 : 100].hex),\n },\n accent: {\n fg: mix2(bg, hues.red[dark ? 900 : 100].hex),\n },\n link: {\n fg: mix2(bg, hues.blue[dark ? 900 : 100].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 900 : 100].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n muted: ({base, dark, name, state, tone}) => {\n const mix = dark ? screen : multiply\n const defaultTints = tones[name] || tones.default\n const isNeutral = NEUTRAL_TONES.includes(name) && NEUTRAL_TONES.includes(tone)\n\n let tints = tones[tone === 'default' ? name : tone] || defaultTints\n\n if (state === 'disabled') {\n tints = defaultTints\n\n const bg = base.bg\n const skeletonFrom = mix(bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n border: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(bg, tints[dark ? 800 : 200].hex),\n muted: {\n fg: mix(bg, tints[dark ? 900 : 100].hex),\n },\n accent: {\n fg: mix(bg, tints[dark ? 900 : 100].hex),\n },\n link: {\n fg: mix(bg, tints[dark ? 900 : 100].hex),\n },\n code: {\n bg,\n fg: mix(bg, tints[dark ? 900 : 100].hex),\n },\n skeleton: {\n from: rgba(skeletonFrom, 0.5),\n to: rgba(skeletonFrom, 0.25),\n },\n }\n }\n\n if (state === 'hovered') {\n // if (isNeutral) {\n // tints = tones.primary\n // }\n\n const bg = mix(base.bg, tints[dark ? 950 : 50].hex)\n const skeletonFrom = mix(bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n border: mix(bg, tints[dark ? 900 : 100].hex),\n fg: mix(base.bg, tints[dark ? 200 : 800].hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n accent: {\n fg: mix(base.bg, hues.red[dark ? 400 : 500].hex),\n },\n link: {\n fg: mix(base.bg, hues.blue[dark ? 400 : 600].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'pressed') {\n if (isNeutral) {\n tints = tones.primary\n }\n\n const bg = mix(base.bg, tints[dark ? 900 : 100].hex)\n const skeletonFrom = mix(bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n border: mix(bg, tints[dark ? 900 : 100].hex),\n fg: mix(base.bg, tints[dark ? 200 : 800].hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n accent: {\n fg: mix(bg, hues.red[dark ? 400 : 500].hex),\n },\n link: {\n fg: mix(bg, hues.blue[dark ? 400 : 600].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'selected') {\n if (isNeutral) {\n tints = tones.primary\n }\n\n const bg = mix(base.bg, tints[dark ? 900 : 100].hex)\n const skeletonFrom = mix(bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n border: mix(bg, tints[dark ? 900 : 100].hex),\n fg: mix(base.bg, tints[dark ? 200 : 800].hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n accent: {\n fg: mix(bg, hues.red[dark ? 400 : 500].hex),\n },\n link: {\n fg: mix(bg, hues.blue[dark ? 400 : 600].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n const bg = base.bg\n const skeletonFrom = mix(bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n border: mix(bg, tints[dark ? 900 : 100].hex),\n fg: mix(base.bg, tints[dark ? 300 : 700].hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n accent: {\n fg: mix(base.bg, hues.red[dark ? 400 : 500].hex),\n },\n link: {\n fg: mix(base.bg, hues.blue[dark ? 400 : 600].hex),\n },\n code: {\n bg: mix(base.bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n button: ({base, mode, muted, solid}) => {\n if (mode === 'bleed') {\n return {\n enabled: {\n ...muted.enabled,\n border: muted.enabled.bg,\n },\n hovered: {\n ...muted.hovered,\n border: muted.hovered.bg,\n },\n pressed: {\n ...muted.pressed,\n border: muted.pressed.bg,\n },\n selected: {\n ...muted.selected,\n border: muted.selected.bg,\n },\n disabled: {\n ...muted.disabled,\n border: muted.disabled.bg,\n },\n }\n }\n\n if (mode === 'ghost') {\n return {\n ...solid,\n enabled: {\n ...muted.enabled,\n border: base.border,\n },\n disabled: muted.disabled,\n }\n }\n\n return solid\n },\n\n card: ({base, dark, muted, name, solid, state}) => {\n if (state === 'hovered') {\n return muted[name].hovered\n }\n\n if (state === 'disabled') {\n return muted[name].disabled\n }\n\n const isNeutral = NEUTRAL_TONES.includes(name)\n const tints = tones[name] || tones.default\n const mix = dark ? screen : multiply\n\n if (state === 'pressed') {\n if (isNeutral) {\n return muted.primary.pressed\n }\n\n return muted[name].pressed\n }\n\n if (state === 'selected') {\n if (isNeutral) {\n return solid.primary.enabled\n }\n\n return solid[name].enabled\n }\n\n const bg = base.bg\n const skeletonFrom = mix(base.bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n fg: base.fg,\n border: base.border,\n muted: {\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n accent: {\n fg: mix(base.bg, hues.red[dark ? 400 : 500].hex),\n },\n link: {\n fg: mix(base.bg, hues.blue[dark ? 400 : 600].hex),\n },\n code: {\n bg: mix(base.bg, tints[dark ? 950 : 50].hex),\n fg: tints[dark ? 400 : 600].hex,\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n input: ({base, dark, mode, state}) => {\n const mix = dark ? screen : multiply\n\n if (mode === 'invalid') {\n const tints = tones.critical\n\n return {\n bg: mix(base.bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n border: mix(base.bg, tints[dark ? 800 : 200].hex),\n placeholder: mix(base.bg, tints[dark ? 600 : 400].hex),\n }\n }\n\n if (state === 'hovered') {\n return {\n bg: base.bg,\n fg: base.fg,\n border: mix(base.bg, hues.gray[dark ? 700 : 300].hex),\n placeholder: mix(base.bg, hues.gray[dark ? 600 : 400].hex),\n }\n }\n\n if (state === 'disabled') {\n return {\n bg: mix(base.bg, hues.gray[dark ? 950 : 50].hex),\n fg: mix(base.bg, hues.gray[dark ? 700 : 300].hex),\n border: mix(base.bg, hues.gray[dark ? 900 : 100].hex),\n placeholder: mix(base.bg, hues.gray[dark ? 800 : 200].hex),\n }\n }\n\n if (state === 'readOnly') {\n return {\n bg: mix(base.bg, hues.gray[dark ? 950 : 50].hex),\n fg: mix(base.bg, hues.gray[dark ? 200 : 800].hex),\n border: mix(base.bg, hues.gray[dark ? 800 : 200].hex),\n placeholder: mix(base.bg, hues.gray[dark ? 600 : 400].hex),\n }\n }\n\n return {\n bg: base.bg,\n fg: base.fg,\n border: base.border,\n placeholder: mix(base.bg, hues.gray[dark ? 600 : 400].hex),\n }\n },\n\n selectable: ({base, muted, tone, solid, state}) => {\n if (state === 'enabled') {\n return {\n ...muted[tone].enabled,\n bg: base.bg,\n }\n }\n\n if (state === 'pressed') {\n if (tone === 'default') {\n return muted.primary.pressed\n }\n\n return muted[tone].pressed\n }\n\n if (state === 'selected') {\n if (tone === 'default') {\n return solid.primary.enabled\n }\n\n return solid[tone].enabled\n }\n\n if (state === 'disabled') {\n return {\n ...muted[tone].disabled,\n bg: base.bg,\n }\n }\n\n return muted[tone][state]\n },\n\n spot: ({base, dark, key}) => {\n const mix = dark ? screen : multiply\n\n return mix(base.bg, hues[key][dark ? 400 : 500].hex)\n },\n\n syntax: ({base, dark}) => {\n const mix = dark ? screen : multiply\n const mainShade = dark ? 400 : 600\n const secondaryShade = dark ? 600 : 400\n\n return {\n atrule: mix(base.bg, hues.purple[mainShade].hex),\n attrName: mix(base.bg, hues.green[mainShade].hex),\n attrValue: mix(base.bg, hues.yellow[mainShade].hex),\n attribute: mix(base.bg, hues.yellow[mainShade].hex),\n boolean: mix(base.bg, hues.purple[mainShade].hex),\n builtin: mix(base.bg, hues.purple[mainShade].hex),\n cdata: mix(base.bg, hues.yellow[mainShade].hex),\n char: mix(base.bg, hues.yellow[mainShade].hex),\n class: mix(base.bg, hues.orange[mainShade].hex),\n className: mix(base.bg, hues.cyan[mainShade].hex),\n comment: mix(base.bg, hues.gray[secondaryShade].hex),\n constant: mix(base.bg, hues.purple[mainShade].hex),\n deleted: mix(base.bg, hues.red[mainShade].hex),\n doctype: mix(base.bg, hues.gray[secondaryShade].hex),\n entity: mix(base.bg, hues.red[mainShade].hex),\n function: mix(base.bg, hues.green[mainShade].hex),\n hexcode: mix(base.bg, hues.blue[mainShade].hex),\n id: mix(base.bg, hues.purple[mainShade].hex),\n important: mix(base.bg, hues.purple[mainShade].hex),\n inserted: mix(base.bg, hues.yellow[mainShade].hex),\n keyword: mix(base.bg, hues.magenta[mainShade].hex),\n number: mix(base.bg, hues.purple[mainShade].hex),\n operator: mix(base.bg, hues.magenta[mainShade].hex),\n prolog: mix(base.bg, hues.gray[secondaryShade].hex),\n property: mix(base.bg, hues.blue[mainShade].hex),\n pseudoClass: mix(base.bg, hues.yellow[mainShade].hex),\n pseudoElement: mix(base.bg, hues.yellow[mainShade].hex),\n punctuation: mix(base.bg, hues.gray[mainShade].hex),\n regex: mix(base.bg, hues.blue[mainShade].hex),\n selector: mix(base.bg, hues.red[mainShade].hex),\n string: mix(base.bg, hues.yellow[mainShade].hex),\n symbol: mix(base.bg, hues.purple[mainShade].hex),\n tag: mix(base.bg, hues.red[mainShade].hex),\n unit: mix(base.bg, hues.orange[mainShade].hex),\n url: mix(base.bg, hues.red[mainShade].hex),\n variable: mix(base.bg, hues.red[mainShade].hex),\n }\n },\n})\n","import {RootTheme} from '../types'\nimport {color} from './color'\nimport {fonts} from './fonts'\n\n/**\n * @public\n */\nexport const studioTheme: RootTheme = {\n avatar: {\n sizes: [\n {distance: -3, size: 25},\n {distance: -6, size: 35},\n {distance: -9, size: 55},\n ],\n },\n button: {\n textWeight: 'medium',\n },\n color,\n container: [320, 640, 960, 1280, 1600, 1920],\n focusRing: {\n offset: 1,\n width: 2,\n },\n fonts,\n media: [360, 600, 900, 1200, 1800, 2400],\n radius: [0, 1, 3, 6, 9, 12, 21],\n shadows: [\n null,\n {umbra: [0, 0, 0, 0], penumbra: [0, 0, 0, 0], ambient: [0, 0, 0, 0]},\n {umbra: [0, 3, 5, -1], penumbra: [0, 6, 10, 0], ambient: [0, 1, 18, 0]},\n {umbra: [0, 7, 8, -4], penumbra: [0, 12, 17, 2], ambient: [0, 5, 22, 4]},\n {umbra: [0, 9, 11, -5], penumbra: [0, 18, 28, 2], ambient: [0, 7, 34, 6]},\n {umbra: [0, 11, 15, -7], penumbra: [0, 24, 38, 3], ambient: [0, 9, 46, 8]},\n ],\n space: [0, 4, 8, 12, 20, 32, 52, 84, 136, 220],\n input: {\n checkbox: {\n size: 17,\n },\n radio: {\n size: 17,\n markSize: 9,\n },\n switch: {\n width: 33,\n height: 17,\n padding: 4,\n transitionDurationMs: 150,\n transitionTimingFunction: 'ease-out',\n },\n border: {\n width: 1,\n },\n },\n // styles: {\n // button: {\n // root: {\n // transition: 'background-color 100ms,border-color 100ms,color 100ms',\n // },\n // },\n // card: {\n // root: {\n // transition: 'background-color 100ms,border-color 100ms,color 100ms',\n // },\n // },\n // },\n}\n","import {ThemeFonts} from '../lib/theme'\n\nexport const fonts: ThemeFonts = {\n code: {\n family: 'ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace',\n weights: {\n regular: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n sizes: [\n {\n ascenderHeight: 3,\n descenderHeight: 3,\n fontSize: 10,\n iconSize: 17,\n lineHeight: 13,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 4,\n descenderHeight: 4,\n fontSize: 13,\n iconSize: 21,\n lineHeight: 17,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 5,\n descenderHeight: 5,\n fontSize: 16,\n iconSize: 25,\n lineHeight: 21,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 6,\n descenderHeight: 6,\n fontSize: 19,\n iconSize: 29,\n lineHeight: 25,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 7,\n descenderHeight: 7,\n fontSize: 22,\n iconSize: 33,\n lineHeight: 29,\n letterSpacing: 0,\n },\n ],\n },\n heading: {\n family:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Liberation Sans\", Helvetica, Arial, system-ui, sans-serif',\n weights: {\n regular: 700,\n medium: 800,\n semibold: 900,\n bold: 900,\n },\n sizes: [\n {\n ascenderHeight: 4,\n descenderHeight: 4,\n fontSize: 12,\n iconSize: 17,\n lineHeight: 17,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 5,\n descenderHeight: 5,\n fontSize: 16,\n iconSize: 25,\n lineHeight: 21,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 6,\n descenderHeight: 6,\n fontSize: 21,\n iconSize: 33,\n lineHeight: 27,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 7,\n descenderHeight: 7,\n fontSize: 27,\n iconSize: 41,\n lineHeight: 33,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 8,\n descenderHeight: 8,\n fontSize: 33,\n iconSize: 49,\n lineHeight: 39,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 9,\n descenderHeight: 9,\n fontSize: 38,\n iconSize: 53,\n lineHeight: 45,\n letterSpacing: 0,\n },\n ],\n },\n label: {\n family:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Liberation Sans\", system-ui, sans-serif',\n weights: {\n regular: 600,\n medium: 700,\n semibold: 800,\n bold: 900,\n },\n sizes: [\n {\n ascenderHeight: 2,\n descenderHeight: 2,\n fontSize: 9.8,\n iconSize: 15,\n lineHeight: 11,\n letterSpacing: 0.5,\n },\n {\n ascenderHeight: 2,\n descenderHeight: 2,\n fontSize: 11.25,\n iconSize: 17,\n lineHeight: 12,\n letterSpacing: 0.5,\n },\n {\n ascenderHeight: 2,\n descenderHeight: 2,\n fontSize: 12.75,\n iconSize: 19,\n lineHeight: 13,\n letterSpacing: 0.5,\n },\n {\n ascenderHeight: 2,\n descenderHeight: 2,\n fontSize: 14,\n iconSize: 21,\n lineHeight: 14,\n letterSpacing: 0.5,\n },\n {\n ascenderHeight: 2,\n descenderHeight: 2,\n fontSize: 15.5,\n iconSize: 23,\n lineHeight: 15,\n letterSpacing: 0.5,\n },\n ],\n },\n text: {\n family:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Liberation Sans\", Helvetica, Arial, system-ui, sans-serif',\n weights: {\n regular: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n sizes: [\n {\n ascenderHeight: 3,\n descenderHeight: 3,\n fontSize: 10,\n iconSize: 17,\n lineHeight: 13,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 4,\n descenderHeight: 4,\n fontSize: 13,\n iconSize: 21,\n lineHeight: 17,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 5,\n descenderHeight: 5,\n fontSize: 16,\n iconSize: 25,\n lineHeight: 21,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 6,\n descenderHeight: 6,\n fontSize: 19,\n iconSize: 29,\n lineHeight: 25,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 7,\n descenderHeight: 7,\n fontSize: 22,\n iconSize: 33,\n lineHeight: 29,\n letterSpacing: 0,\n },\n ],\n },\n}\n","import {ThemeLayer} from './lib/theme/layer'\n\nexport const DEFAULT_THEME_LAYER: ThemeLayer = {\n dialog: {zOffset: 600},\n popover: {zOffset: 400},\n tooltip: {zOffset: 200},\n}\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","import {createContext} from 'react'\nimport {globalScope} from '../lib/globalScope'\nimport {ThemeContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/theme')\n\nglobalScope[key] = globalScope[key] || createContext<ThemeContextValue | null>(null)\n\n/**\n * @internal\n */\nexport const ThemeContext: React.Context<ThemeContextValue | null> = globalScope[key]\n","import {useContext, useMemo} from 'react'\nimport {ThemeProvider as StyledThemeProvider} from 'styled-components'\nimport {DEFAULT_THEME_LAYER} from './defaults'\nimport {ThemeColorSchemeKey, ThemeColorName} from './lib/theme'\nimport {ThemeContext} from './themeContext'\nimport {RootTheme, Theme, ThemeContextValue} from './types'\n\n/**\n * @public\n */\nexport interface ThemeProviderProps {\n children?: React.ReactNode\n scheme?: ThemeColorSchemeKey\n theme?: RootTheme\n tone?: ThemeColorName\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: themeProp = parentTheme?.theme || null,\n tone = parentTheme?.tone || 'default',\n } = props\n\n const theme: Theme | null = useMemo(() => {\n if (!themeProp) return null\n\n const {color: rootColor, layer: rootLayer, ...restTheme} = themeProp\n const colorScheme = rootColor[scheme] || rootColor.light\n const color = colorScheme[tone] || colorScheme.default\n const layer = rootLayer || DEFAULT_THEME_LAYER\n\n return {sanity: {...restTheme, color, layer}}\n }, [scheme, themeProp, tone])\n\n const value: ThemeContextValue | null = useMemo(\n () =>\n themeProp && {\n version: 0.0,\n theme: themeProp,\n scheme,\n tone,\n },\n [themeProp, scheme, tone]\n )\n\n if (!theme) {\n return <pre>ThemeProvider: no \"theme\" property provided</pre>\n }\n\n return (\n <ThemeContext.Provider value={value}>\n <StyledThemeProvider theme={theme}>{children}</StyledThemeProvider>\n </ThemeContext.Provider>\n )\n}\n","export function isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === 'object')\n}\n","import {useContext} from 'react'\nimport {isRecord} from '../lib/isRecord'\nimport {ThemeContext} from './themeContext'\nimport {ThemeContextValue} from './types'\n\n/**\n * @public\n */\nexport function useRootTheme(): ThemeContextValue {\n const value: unknown = useContext(ThemeContext)\n\n if (!value) {\n throw new Error('useRootTheme(): 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('useRootTheme(): the context value is not compatible')\n }\n\n return value as any as ThemeContextValue\n}\n","import {ThemeColorName, ThemeColorSchemeKey} from './lib/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?: ThemeColorName\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 {useTheme as useStyledTheme} from 'styled-components'\n\nimport {Theme} from './types'\n\n/**\n * @public\n */\nexport function useTheme(): Theme {\n return useStyledTheme() as Theme\n}\n","/**\n * @internal\n */\nexport interface _MediaManager {\n getCurrentIndex: () => number\n subscribe: (subscriber: (index: number) => void) => () => void\n}\n\nconst MEDIA_MANAGER_CACHE = new WeakMap<number[], _MediaManager>()\n\nfunction _getMediaQuery(media: number[], index: number) {\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 _createMediaManager(media: number[]): _MediaManager {\n const mediaLen = media.length\n const sizes: {mq: MediaQueryList; index: number}[] = []\n\n if (typeof window !== 'undefined') {\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 const getCurrentIndex = () => {\n for (const {index, mq} of sizes) {\n if (mq.matches) return index\n }\n\n return 0\n }\n\n const subscribe = (subscriber: (index: number) => void) => {\n const disposeFns: (() => void)[] = []\n\n for (const {index, mq} of sizes) {\n const handleChange = () => {\n if (mq.matches) subscriber(index)\n }\n\n if (mq.addEventListener) {\n mq.addEventListener('change', handleChange)\n } else {\n mq.addListener(handleChange)\n }\n\n disposeFns.push(() => {\n if (mq.removeEventListener) {\n mq.removeEventListener('change', handleChange)\n } else {\n mq.removeListener(handleChange)\n }\n })\n }\n\n return () => {\n for (const disposeFn of disposeFns) {\n disposeFn()\n }\n }\n }\n\n return {getCurrentIndex, subscribe}\n}\n\n/**\n * @internal\n */\nexport function _getMediaManager(media: number[]): _MediaManager {\n let manager = MEDIA_MANAGER_CACHE.get(media)\n\n if (!manager) {\n manager = _createMediaManager(media)\n MEDIA_MANAGER_CACHE.set(media, manager)\n }\n\n return manager\n}\n","import {useEffect, useMemo, useState} from 'react'\nimport {useTheme} from '../../theme'\nimport {_getMediaManager} from './lib/media'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function useMediaIndex(): number {\n const theme = useTheme()\n const {media} = theme.sanity\n const manager = useMemo(() => _getMediaManager(media), [media])\n const [index, setIndex] = useState(manager.getCurrentIndex)\n\n useEffect(() => manager.subscribe(setIndex), [manager])\n\n return index\n}\n","import {useEffect, useLayoutEffect} from 'react'\n\n/**\n * @beta\n */\nexport const useIsomorphicEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect\n","import {useRef} from 'react'\nimport {useIsomorphicEffect} from './useIsomorphicEffect'\n\n/**\n * @beta\n */\nexport function useForwardedRef<T>(ref: React.ForwardedRef<T>): React.MutableRefObject<T | null> {\n const innerRef = useRef<T | null>(null)\n\n useIsomorphicEffect(() => {\n if (!ref) return\n\n if (typeof ref === 'function') {\n ref(innerRef.current)\n } else {\n ref.current = innerRef.current\n }\n })\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} from 'styled-components'\nimport {_responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveBorderStyleProps} from './types'\n\nconst BORDER_VALUE = '1px solid var(--card-border-color)'\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 {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$border, (value) =>\n value ? {'&&': {border: BORDER_VALUE}} : {'&&': {border: 0}}\n )\n}\n\nfunction borderTop(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$borderTop, (value) =>\n value ? {'&&': {borderTop: BORDER_VALUE}} : {'&&': {borderTop: 0}}\n )\n}\n\nfunction borderRight(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$borderRight, (value) =>\n value ? {'&&': {borderRight: BORDER_VALUE}} : {'&&': {borderRight: 0}}\n )\n}\n\nfunction borderBottom(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$borderBottom, (value) =>\n value ? {'&&': {borderBottom: BORDER_VALUE}} : {'&&': {borderBottom: 0}}\n )\n}\n\nfunction borderLeft(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$borderLeft, (value) =>\n value ? {'&&': {borderLeft: BORDER_VALUE}} : {'&&': {borderLeft: 0}}\n )\n}\n","import {Property} from 'csstype'\nimport {CSSObject} from 'styled-components'\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 {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$display, (display) => ({\n '&:not([hidden])': {display},\n }))\n}\n\nfunction responsiveBoxSizingStyle(props: ResponsiveBoxStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$sizing, (sizing) => ({\n boxSizing: BOX_SIZING[sizing],\n }))\n}\n\nfunction responsiveBoxHeightStyle(props: ResponsiveBoxStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$height, (height) => ({\n height: BOX_HEIGHT[height],\n }))\n}\n\nfunction responsiveBoxOverflowStyle(props: ResponsiveBoxStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$overflow, (overflow) => ({\n overflow,\n }))\n}\n","import {CSSObject} from 'styled-components'\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 {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$align, (align) => {\n return {alignItems: align}\n })\n}\n\nfunction responsiveFlexGapStyle(props: ResponsiveFlexStyleProps & ThemeProps) {\n const {theme} = props\n const {media, space} = theme.sanity\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 {theme} = props\n const {media} = theme.sanity\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 {theme} = props\n const {media} = theme.sanity\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 {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$direction, (direction) => {\n return {flexDirection: direction}\n })\n}\n","import {CSSObject} from 'styled-components'\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 {theme} = props\n const {media} = theme.sanity\n\n if (!props.$flex) return EMPTY_ARRAY\n\n return _responsive(media, props.$flex, (flex) => ({flex}))\n}\n","export 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: {offset: number; width: number}\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} from 'styled-components'\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 {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$autoFlow, (autoFlow) => ({\n gridAutoFlow: autoFlow,\n }))\n}\n\nfunction responsiveGridAutoRowsStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\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 {theme} = props\n const {media} = theme.sanity\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 {theme} = props\n const {media} = theme.sanity\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 {theme} = props\n const {media} = theme.sanity\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 {theme} = props\n const {media, space} = theme.sanity\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 {theme} = props\n const {media, space} = theme.sanity\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 {theme} = props\n const {media, space} = theme.sanity\n\n return _responsive(media, props.$gapY, (gapY) => ({\n rowGap: gapY ? rem(space[gapY]) : undefined,\n }))\n}\n","import {CSSObject} from 'styled-components'\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 {theme} = props\n const {media} = theme.sanity\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 {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$rowStart, (rowStart) => ({\n gridRowStart: rowStart,\n }))\n}\n\nfunction responsiveGridItemRowEndStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$rowEnd, (rowEnd) => ({gridRowEnd: rowEnd}))\n}\n\nfunction responsiveGridItemColumnStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\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 {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$columnStart, (columnStart) => ({\n gridColumnStart: columnStart,\n }))\n}\n\nfunction responsiveGridItemColumnEndStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$columnEnd, (columnEnd) => ({\n gridColumnEnd: columnEnd,\n }))\n}\n","import {CSSObject} from 'styled-components'\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, theme} = props\n const {fonts, media, space: spaceScale} = theme.sanity\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 = fonts.text.sizes[_fontSize[i]] || fonts.text.sizes[2]\n const emSize = size.lineHeight - size.ascenderHeight - size.descenderHeight\n const p = spaceScale[_padding[i]]\n const s = spaceScale[_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 {css, CSSObject, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeColorSchemeKey, ThemeFontWeightKey} from '../../theme'\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 $border?: boolean\n $hasPrefix?: boolean\n $hasSuffix?: boolean\n $scheme: ThemeColorSchemeKey\n $tone: CardTone\n}\n\nconst ROOT_STYLE = css`\n &:not([hidden]) {\n display: flex;\n }\n\n align-items: center;\n`\n\nexport function textInputRootStyle(): FlattenSimpleInterpolation {\n return ROOT_STYLE\n}\n\nexport function textInputBaseStyle(\n props: TextInputInputStyleProps & ThemeProps\n): FlattenSimpleInterpolation {\n const {theme, $scheme, $tone, $weight} = props\n const font = theme.sanity.fonts.text\n const color = theme.sanity.color.input\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.family};\n font-weight: ${($weight && font.weights[$weight]) || font.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.default.enabled.fg};\n --input-placeholder-color: ${color.default.enabled.placeholder};\n\n /* enabled */\n &:not(:invalid):not(:disabled):not(:read-only) {\n --input-fg-color: ${color.default.enabled.fg};\n --input-placeholder-color: ${color.default.enabled.placeholder};\n }\n\n /* disabled */\n &:not(:invalid):disabled {\n --input-fg-color: ${color.default.disabled.fg};\n --input-placeholder-color: ${color.default.disabled.placeholder};\n }\n\n /* invalid */\n &:invalid {\n --input-fg-color: ${color.invalid.enabled.fg};\n --input-placeholder-color: ${color.invalid.enabled.placeholder};\n }\n\n /* readOnly */\n &:read-only {\n --input-fg-color: ${color.default.readOnly.fg};\n --input-placeholder-color: ${color.default.readOnly.placeholder};\n }\n }\n `\n}\n\nexport function textInputFontSizeStyle(props: TextInputInputStyleProps & ThemeProps): CSSObject[] {\n const {theme} = props\n const {fonts, media} = theme.sanity\n\n return _responsive(media, props.$fontSize, (sizeIndex) => {\n const size = fonts.text.sizes[sizeIndex] || fonts.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): FlattenSimpleInterpolation {\n const {$border, $hasPrefix, $hasSuffix, $scheme, $tone, theme} = props\n const {focusRing, input} = theme.sanity\n const color = theme.sanity.color.input\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.default.enabled.bg};\n --card-fg-color: ${color.default.enabled.fg};\n\n /* enabled */\n *:not(:disabled) + & {\n --input-box-shadow: ${$border\n ? focusRingBorderStyle({color: color.default.enabled.border, width: input.border.width})\n : undefined};\n }\n\n /* invalid */\n *:not(:disabled):invalid + & {\n --card-bg-color: ${color.invalid.enabled.bg};\n --card-fg-color: ${color.invalid.enabled.fg};\n --input-box-shadow: ${$border\n ? focusRingBorderStyle({color: color.invalid.enabled.border, width: input.border.width})\n : 'none'};\n }\n\n /* focused */\n *:not(:disabled):focus + & {\n --input-box-shadow: ${focusRingStyle({\n border: $border\n ? {color: color.default.enabled.border, width: input.border.width}\n : undefined,\n focusRing,\n })};\n }\n\n /* disabled */\n *:disabled + & {\n --card-bg-color: ${color.default.disabled.bg} !important;\n --card-fg-color: ${color.default.disabled.fg} !important;\n --input-box-shadow: ${$border\n ? focusRingBorderStyle({\n color: color.default.disabled.border,\n width: input.border.width,\n })\n : 'none'};\n }\n\n /* readOnly */\n *:read-only + & {\n --card-bg-color: ${color.default.readOnly.bg} !important;\n --card-fg-color: ${color.default.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.default.hovered.bg};\n --card-fg-color: ${color.default.hovered.fg};\n }\n\n *:not(:disabled):not(:read-only):not(:invalid):not(:focus):hover + & {\n --input-box-shadow: ${$border\n ? focusRingBorderStyle({\n color: color.default.hovered.border,\n width: input.border.width,\n })\n : 'none'};\n }\n }\n }\n `\n}\n","import {CSSObject} from 'styled-components'\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} from 'styled-components'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveRadiusStyleProps} from './types'\n\nexport function responsiveRadiusStyle(props: ResponsiveRadiusStyleProps & ThemeProps): CSSObject[] {\n const {theme} = props\n const {media, radius} = theme.sanity\n\n return _responsive(media, props.$radius, (radiusIndex) => ({\n borderRadius: rem(radius[radiusIndex]),\n }))\n}\n","import {CSSObject} from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {BoxShadow, ThemeShadow} from '../../theme'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveShadowStyleProps} from './types'\n\nfunction toBoxShadow(shadow: BoxShadow, color: string) {\n return `${shadow.map(rem).join(' ')} ${color}`\n}\n\nfunction shadowStyle(shadow: ThemeShadow | null): CSSObject {\n if (!shadow) return EMPTY_RECORD\n\n const outline = `0 0 0 ${rem(1)} 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 {theme} = props\n const {media, shadows} = theme.sanity\n\n return _responsive(media, props.$shadow, (shadow) => shadowStyle(shadows[shadow]))\n}\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {\n ResponsiveFontStyleProps,\n responsiveTextAlignStyle,\n responsiveTextFont,\n} from '../../styles/internal'\nimport {ThemeFontWeightKey} from '../../theme'\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 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`\n\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 {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\n\nexport function textBaseStyle(\n props: {$accent?: boolean; $muted?: boolean} & ThemeProps\n): FlattenSimpleInterpolation {\n const {$accent, $muted, theme} = props\n const {weights} = theme.sanity.fonts.text\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: ${theme.sanity.fonts.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: 0 0 0 1px var(--card-bg-color), 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: ${weights.bold};\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\n }\n `\n}\n","import {CSSObject} from 'styled-components'\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}\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, theme} = props\n const {focusRing} = theme.sanity\n\n return {\n backgroundColor: $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 '-webkit-font-smoothing': '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}),\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 {theme} = props\n const {avatar, media} = theme.sanity\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 avatarInitialsStyle(props: ThemeProps): CSSObject {\n const {theme} = props\n const {base} = theme.sanity.color\n\n return {\n width: '100%',\n height: '100%',\n color: base.fg,\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: '3px',\n\n '[data-status=\"editing\"] &': {\n strokeSasharray: '2 4',\n strokeLinecap: 'round',\n },\n }\n}\n","import {forwardRef, useCallback, useEffect, useId, useMemo, useState} from 'react'\nimport ReactIs from 'react-is'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {ThemeColorSpotKey, useTheme} from '../../theme'\nimport {AvatarPosition, AvatarSize, AvatarStatus} from '../../types'\nimport {Text} from '../text'\nimport {avatarStyle, responsiveAvatarSizeStyle} from './styles'\n\n/**\n * @public\n */\nexport interface AvatarProps {\n animateArrowFrom?: AvatarPosition\n arrowPosition?: AvatarPosition\n as?: React.ElementType | keyof JSX.IntrinsicElements\n color?: ThemeColorSpotKey\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: string; $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\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 as: asProp,\n color: colorKey = 'gray',\n src,\n title,\n initials,\n onImageLoadError,\n arrowPosition: arrowPositionProp,\n animateArrowFrom,\n status = 'online',\n size: sizeProp = 0,\n ...restProps\n } = props\n const as = ReactIs.isValidElementType(asProp) ? asProp : 'div'\n const size = useArrayProp(sizeProp)\n const theme = useTheme()\n const color = theme.sanity.color.spot[colorKey] || theme.sanity.color.spot.gray\n\n // @todo: remove this\n const avatarSize = theme.sanity.avatar.sizes[size[0]] || theme.sanity.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(() => size.map((s) => (s === 0 ? 0 : s + 1)), [size])\n\n return (\n <Root\n as={as}\n data-as={typeof as === 'string' ? as : undefined}\n data-ui=\"Avatar\"\n {...restProps}\n $size={size}\n $color={color}\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 <svg 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 <BgStroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n vectorEffect=\"non-scaling-stroke\"\n />\n <Stroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n stroke={color}\n vectorEffect=\"non-scaling-stroke\"\n />\n </svg>\n )}\n\n {(imageFailed || !src) && initials && (\n <>\n <Initials>\n <Text as=\"span\" size={initialsSize}>\n <strong>{initials}</strong>\n </Text>\n </Initials>\n </>\n )}\n </Root>\n )\n})\n","import {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 {Text} from '../text'\n\nfunction _responsiveAvatarCounterSizeStyle(props: {$size: AvatarSize[]} & ThemeProps) {\n const {theme} = props\n const {avatar, media} = theme.sanity\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 {theme} = props\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: 0 0 0 1px var(--card-bg-color), inset 0 0 0 1.5px var(--card-hairline-hard-color);\n padding: 0 ${rem(theme.sanity.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 = 0} = props\n const size = useArrayProp(sizeProp)\n const counterSize = useMemo(() => size.map((s) => (s === 0 ? 0 : s + 1)), [size])\n\n return (\n <Root $size={size} data-ui=\"AvatarCounter\" ref={ref}>\n <Text as=\"span\" size={counterSize}>\n <strong>{count}</strong>\n </Text>\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 {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 {theme} = props\n const {avatar, media} = theme.sanity\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 = 0,\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} />\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}\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 * @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 {CSSObject} from 'styled-components'\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 {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {responsiveLabelFont, responsiveTextAlignStyle} from '../../styles/internal'\nimport {ThemeFontWeightKey} from '../../theme'\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`\n\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 {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\n\nexport function labelBaseStyle(\n props: {$accent?: boolean; $muted: boolean} & ThemeProps\n): FlattenSimpleInterpolation {\n const {$accent, $muted, theme} = props\n const {fonts} = theme.sanity\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: ${fonts.code.family};\n border-radius: 1px;\n }\n\n & a {\n text-decoration: none;\n border-radius: 1px;\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\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 {Label} from '../label'\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 mode?: BadgeMode\n tone?: BadgeTone\n}\n\nconst Root = styled(Box)<BadgeStyleProps & ResponsiveRadiusStyleProps>(\n responsiveRadiusStyle,\n badgeStyle\n)\n\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,\n mode = 'default',\n padding = 1,\n radius = 2,\n tone = 'default',\n ...restProps\n } = props\n\n return (\n <Root\n data-ui=\"Badge\"\n {...restProps}\n $mode={mode}\n $tone={tone}\n $radius={useArrayProp(radius)}\n padding={useArrayProp(padding)}\n ref={ref}\n >\n <Label size={fontSize}>{children}</Label>\n </Root>\n )\n})\n","import {CSSObject} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {BadgeStyleProps} from './types'\n\nexport function badgeStyle(props: BadgeStyleProps & ThemeProps): CSSObject {\n const {$mode, $tone, theme} = props\n const palette = theme.sanity.color[$mode === 'outline' ? 'muted' : 'solid']\n const color = palette[$tone] || palette.default\n\n return {\n backgroundColor: color.enabled.bg,\n color: color.enabled.fg,\n boxShadow: `inset 0 0 0 1px ${color.enabled.border}`,\n cursor: 'default',\n\n '&:not([hidden])': {\n display: 'inline-block',\n },\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 * @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 * @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 {CSSObject} from 'styled-components'\nimport {ThemeColorBase, ThemeColorGenericState} from '../../theme'\n\n/**\n * @internal\n */\nexport function _colorVarsStyle(\n base: ThemeColorBase,\n color: ThemeColorGenericState,\n checkered = false\n): CSSObject {\n return {\n // Base\n // @todo: rename to \"--base-\"?\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 '--card-focus-ring-color': base.focusRing,\n\n // Card\n '--card-bg-color': color.bg,\n '--card-bg-image': checkered\n ? `repeating-conic-gradient(${color.bg} 0% 25%, ${color.bg2 || color.bg} 0% 50%)`\n : undefined,\n '--card-fg-color': color.fg,\n '--card-border-color': color.border,\n '--card-muted-fg-color': color.muted?.fg,\n '--card-accent-fg-color': color.accent?.fg,\n '--card-link-fg-color': color.link?.fg,\n '--card-code-bg-color': color.code?.bg,\n '--card-code-fg-color': color.code?.fg,\n '--card-skeleton-color-from': color.skeleton?.from,\n '--card-skeleton-color-to': color.skeleton?.to,\n\n // @todo: deprecate\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 {css, CSSObject, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {_colorVarsStyle} from '../../styles/colorVars'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/internal'\nimport {ButtonMode, ButtonTone} from '../../types'\n\n/**\n * @internal\n */\nexport function buttonBaseStyles(): FlattenSimpleInterpolation {\n return css`\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\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\nconst buttonTheme = {border: {width: 1}}\n\n/**\n * @internal\n */\nexport function buttonColorStyles(\n props: {$mode: ButtonMode; $tone: ButtonTone} & ThemeProps\n): CSSObject[] {\n const {$mode, theme} = props\n const {focusRing} = theme.sanity\n const base = theme.sanity.color.base\n const mode = theme.sanity.color.button[$mode] || theme.sanity.color.button.default\n const color = mode[props.$tone] || mode.default\n const border = {width: buttonTheme.border.width, color: 'var(--card-border-color)'}\n\n return [\n _colorVarsStyle(base, color.enabled),\n {\n backgroundColor: 'var(--card-bg-color)',\n color: 'var(--card-fg-color)',\n boxShadow: focusRingBorderStyle(border),\n '&:disabled, &[data-disabled=\"true\"]': _colorVarsStyle(base, color.disabled),\n \"&:not([data-disabled='true'])\": {\n '&:focus': {\n boxShadow: focusRingStyle({base, border, focusRing}),\n },\n '&:focus:not(:focus-visible)': {\n boxShadow: focusRingBorderStyle(border),\n },\n '@media (hover: hover)': {\n '&:hover': _colorVarsStyle(base, color.hovered),\n '&:active': _colorVarsStyle(base, color.pressed),\n },\n '&[data-selected]': _colorVarsStyle(base, color.pressed),\n },\n },\n theme.sanity.styles?.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} from '../../theme'\nimport {ButtonMode, ButtonTextAlign, ButtonTone, 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 text?: React.ReactNode\n tone?: ButtonTone\n type?: 'button' | 'reset' | 'submit'\n}\n\nconst Root = styled.button<\n {$mode: ButtonMode; $tone: ButtonTone} & ResponsiveRadiusStyleProps & 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'>,\n ref: React.ForwardedRef<HTMLButtonElement>\n) {\n const {\n children,\n disabled,\n fontSize,\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 ...restProps\n } = props\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 theme = useTheme()\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 >\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}>\n {icon && (\n <Text size={fontSize}>\n {isValidElement(icon) && icon}\n {isValidElementType(icon) && createElement(icon)}\n </Text>\n )}\n\n {text && (\n <Box\n flex={iconRight ? 1 : undefined}\n marginLeft={icon ? space : undefined}\n marginRight={iconRight ? space : undefined}\n >\n <Text\n align={textAlign}\n size={fontSize}\n textOverflow=\"ellipsis\"\n weight={theme.sanity.button.textWeight}\n >\n {text}\n </Text>\n </Box>\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 {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {_colorVarsStyle} from '../../styles/colorVars'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/focusRing'\nimport {CardStyleProps} from './types'\n\nexport function cardStyle(\n props: CardStyleProps & ThemeProps\n): Array<FlattenSimpleInterpolation | (() => FlattenSimpleInterpolation)> {\n return [cardBaseStyle(props), cardColorStyle(props)]\n}\n\nexport function cardBaseStyle(props: CardStyleProps & ThemeProps): FlattenSimpleInterpolation {\n const {$checkered, theme} = props\n const space = theme.sanity.space\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: 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): FlattenSimpleInterpolation {\n const {$checkered, $focusRing, theme} = props\n const {focusRing} = theme.sanity\n const {base, card} = theme.sanity.color\n const border = {width: 0, color: 'var(--card-border-color)'}\n\n return css`\n ${_colorVarsStyle(base, card.enabled, $checkered)}\n\n background-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 ${_colorVarsStyle(base, card.disabled, $checkered)}\n }\n\n &:not(:disabled) {\n &[data-pressed] {\n ${_colorVarsStyle(base, card.pressed, $checkered)}\n }\n\n &[data-selected] {\n ${_colorVarsStyle(base, card.selected, $checkered)}\n }\n\n @media (hover: hover) {\n &:not([data-pressed]):not([data-selected]) {\n &:hover {\n ${_colorVarsStyle(base, card.hovered, $checkered)}\n }\n\n &:active {\n ${_colorVarsStyle(base, card.pressed, $checkered)}\n }\n }\n }\n\n &:focus {\n --card-focus-ring-box-shadow: ${$focusRing\n ? focusRingStyle({base, border, focusRing})\n : undefined};\n }\n\n &:focus:not(:focus-visible) {\n --card-focus-ring-box-shadow: ${$focusRing ? focusRingBorderStyle(border) : 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 ${_colorVarsStyle(base, card.disabled, $checkered)}\n }\n\n &:not([data-disabled]) {\n &[data-pressed] {\n ${_colorVarsStyle(base, card.pressed, $checkered)}\n }\n\n &[data-selected] {\n ${_colorVarsStyle(base, card.selected, $checkered)}\n }\n\n @media (hover: hover) {\n &:not([data-pressed]):not([data-selected]) {\n &:hover {\n ${_colorVarsStyle(base, card.hovered, $checkered)}\n }\n\n &:active {\n ${_colorVarsStyle(base, card.pressed, $checkered)}\n }\n }\n }\n\n &:focus {\n --card-focus-ring-box-shadow: ${$focusRing\n ? focusRingStyle({base, border, focusRing})\n : undefined};\n }\n\n &:focus:not(:focus-visible) {\n --card-focus-ring-box-shadow: ${$focusRing ? focusRingBorderStyle(border) : undefined};\n }\n }\n }\n\n ${theme.sanity.styles?.card?.root}\n `\n}\n","import {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, ThemeColorSchemeKey, 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 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 * @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 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 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 $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 {CheckmarkIcon, RemoveIcon} from '@sanity/icons'\nimport {forwardRef, useEffect} from 'react'\nimport styled from 'styled-components'\nimport {useForwardedRef, 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 * @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 = useForwardedRef(forwardedRef)\n\n useCustomValidity(ref, customValidity)\n\n useEffect(() => {\n if (ref.current) {\n // Set the indeterminate state\n ref.current.indeterminate = indeterminate || false\n }\n }, [indeterminate, ref])\n\n return (\n <Root className={className} data-ui=\"Checkbox\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : 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 {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {rem, ThemeProps} from '../../styles'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/internal'\n\nexport function checkboxBaseStyles(): FlattenSimpleInterpolation {\n return css`\n position: relative;\n display: inline-block;\n `\n}\n\nexport function inputElementStyles(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const color = theme.sanity.color.input\n const {focusRing, input, radius} = theme.sanity\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.default.enabled.border,\n width: input.border.width,\n })};\n border-radius: ${rem(radius[2])};\n line-height: 1;\n background-color: ${color.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: 2 !important;\n }\n }\n }\n\n &:not(:disabled):focus + span {\n box-shadow: ${focusRingStyle({\n border: {width: input.border.width, color: color.default.enabled.border},\n focusRing,\n })};\n }\n\n &:not(:disabled):focus:not(:focus-visible) + span {\n box-shadow: ${focusRingBorderStyle({\n color: color.default.enabled.border,\n width: input.border.width,\n })};\n }\n\n &:checked + span > svg:first-child {\n opacity: 1;\n }\n\n &[data-read-only] + span {\n background-color: ${color.default.readOnly.bg};\n box-shadow: ${focusRingBorderStyle({\n width: input.border.width,\n color: color.default.readOnly.border,\n })};\n color: ${color.default.readOnly.fg};\n }\n\n &:not([data-read-only]):disabled + span {\n background-color: ${color.default.disabled.bg};\n box-shadow: ${focusRingBorderStyle({\n width: input.border.width,\n color: color.default.disabled.border,\n })};\n color: ${color.default.disabled.fg};\n }\n\n &:indeterminate + span > svg:last-child {\n opacity: 1;\n }\n `\n}\n","import {css, FlattenInterpolation, ThemeProps as StyledThemeProps} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {Theme} from '../../theme'\n\nfunction codeSyntaxHighlightingStyle({theme}: ThemeProps) {\n const color = theme.sanity.color.syntax\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(): FlattenInterpolation<StyledThemeProps<Theme>> {\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 & [data-sanity-icon] {\n vertical-align: baseline;\n }\n `\n}\n","import {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 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} from 'styled-components'\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 {theme} = props\n const {container, media} = theme.sanity\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 * @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 * @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 {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 {ThemeFontWeightKey} from '../../theme'\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`\n\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 {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {HeadingStyleProps} from './types'\n\nexport function headingBaseStyle(\n props: HeadingStyleProps & ThemeProps\n): FlattenSimpleInterpolation {\n const {$accent, $muted, theme} = props\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: ${theme.sanity.fonts.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: 0 0 0 1px var(--card-bg-color), 0 0 0 3px var(--card-focus-ring-color);\n }\n\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\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 space?: number | number[]\n}\n\nconst Root = styled(Box)<ResponsiveInlineSpaceStyleProps>(inlineBaseStyle, inlineSpaceStyle)\n\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 data-ui=\"Inline\" {...restProps} $space={useArrayProp(space)} forwardedAs={as} ref={ref}>\n {children}\n </Root>\n )\n})\n","import {CSSObject} from 'styled-components'\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 {theme} = props\n\n return _responsive(theme.sanity.media, props.$space, (spaceIndex) => {\n const space = rem(theme.sanity.space[spaceIndex])\n\n return {\n margin: `-${space} 0 0 -${space}`,\n '& > div': {padding: `${space} 0 0 ${space}`},\n }\n })\n}\n","import {forwardRef} from 'react'\nimport styled, {css} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/internal'\nimport {Box} from '../box'\nimport {Code} from '../code'\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?: number | number[]\n}\n\nfunction kbdStyle() {\n return css`\n background: var(--card-bg-color);\n font: inherit;\n box-shadow: inset 0 0 0 1px var(--card-hairline-hard-color);\n\n &:not([hidden]) {\n display: inline-block;\n }\n `\n}\n\nconst Root = styled.kbd<ResponsiveRadiusStyleProps>(responsiveRadiusStyle, kbdStyle)\n\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 = 1, 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 <Code as=\"span\" muted size={fontSize}>\n {children}\n </Code>\n </Box>\n </Root>\n )\n})\n","import {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\nimport {BoundaryElementContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/boundaryElement')\n\nglobalScope[key] = globalScope[key] || createContext<BoundaryElementContextValue | null>(null)\n\nexport const BoundaryElementContext: React.Context<BoundaryElementContextValue | null> =\n globalScope[key]\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","import {forwardRef, useCallback, useMemo, useState} from 'react'\nimport {useElementSize, useForwardedRef} from '../../hooks'\nimport {useTheme} 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 ref: React.ForwardedRef<HTMLDivElement>\n) {\n const theme = useTheme()\n const {children, media = theme.sanity.media, ...restProps} = props\n\n const forwardedRef = useForwardedRef(ref)\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 const setRef = useCallback(\n (el: HTMLDivElement | null) => {\n forwardedRef.current = el\n setElement(el)\n },\n [forwardedRef]\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","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 {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 {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\nimport {LayerContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/layer')\n\nglobalScope[key] = globalScope[key] || createContext<LayerContextValue | null>(null)\n\nexport const LayerContext: React.Context<LayerContextValue | null> = globalScope[key]\n","import {useContext} from 'react'\nimport {isRecord} from '../../lib/isRecord'\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 // 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('useLayer(): the context value is not compatible')\n }\n\n return value\n}\n","import {useCallback, useContext, useEffect, useMemo, useState} from 'react'\nimport {useMediaIndex, useArrayProp} from '../../hooks'\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 const parent = useContext(LayerContext)\n const zOffset = useArrayProp(zOffsetProp)\n const maxMediaIndex = zOffset.length - 1\n const mediaIndex = Math.min(useMediaIndex(), maxMediaIndex)\n const zIndex = parent ? parent.zIndex + zOffset[mediaIndex] : zOffset[mediaIndex]\n const [size, setSize] = useState(0)\n\n const registerChild = useCallback(() => {\n setSize((v) => v + 1)\n\n return () => setSize((v) => v - 1)\n }, [])\n\n const parentRegisterChild = parent?.registerChild\n\n useEffect(() => {\n if (!parentRegisterChild) return\n\n return parentRegisterChild()\n }, [parentRegisterChild])\n\n const value: LayerContextValue = useMemo(\n () => ({version: 0.0, isTopLayer: size === 0, registerChild, size, zIndex}),\n [size, registerChild, zIndex]\n )\n\n return <LayerContext.Provider value={value}>{children}</LayerContext.Provider>\n}\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {LayerProvider} from './layerProvider'\nimport {useLayer} from './useLayer'\n\n/**\n * @public\n */\nexport interface LayerProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n zOffset?: number | number[]\n}\n\ninterface LayerChildrenProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n}\n\nconst Root = styled.div`\n position: relative;\n`\n\nconst LayerChildren = forwardRef(function LayerChildren(\n props: LayerChildrenProps & Omit<React.HTMLProps<HTMLDivElement>, 'as'>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {children, style = EMPTY_RECORD, ...restProps} = props\n const {zIndex} = useLayer()\n\n return (\n <Root {...restProps} data-ui=\"Layer\" 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 {createContext} from 'react'\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 window === '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\nglobalScope[key] = globalScope[key] || createContext<PortalContextValue>(defaultContextValue)\n\nexport const PortalContext: React.Context<PortalContextValue> = globalScope[key]\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} 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\nconst __BROWSER__ = typeof window !== 'undefined'\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\n const value: PortalContextValue = useMemo(() => {\n return {\n version: 0.0,\n boundaryElement: boundaryElement || null,\n element: element || (__BROWSER__ && document.body) || null,\n elements,\n }\n }, [boundaryElement, element, elements])\n\n return <PortalContext.Provider value={value}>{children}</PortalContext.Provider>\n}\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`\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","/**\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","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 {forwardRef, useEffect, useMemo, useRef, useState} from 'react'\nimport styled from 'styled-components'\nimport {_isScrollable} from '../../helpers'\nimport {useForwardedRef} from '../../hooks'\nimport {_ResizeObserver} from '../../observers'\nimport {StackProps} from '../../primitives'\nimport {useTheme} 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 ref: React.ForwardedRef<HTMLDivElement>\n): React.ReactElement {\n const {as = 'div', gap = 0, getItemKey, items = [], onChange, renderItem, ...restProps} = props\n const {space} = useTheme().sanity\n const forwardedRef = useForwardedRef(ref)\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 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 (!forwardedRef.current) return\n\n let _scrollEl = forwardedRef.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 }, [forwardedRef])\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={forwardedRef}>\n <div ref={wrapperRef} style={wrapperStyle}>\n {children}\n </div>\n </Root>\n )\n})\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\n\nconst Root = styled.div`\n position: absolute;\n pointer-events: none;\n width: 27px;\n height: 27px;\n fill: none;\n\n :empty + & {\n display: none;\n }\n\n & > svg {\n display: block;\n transform-origin: 13.5px 13.5px;\n }\n\n [data-popper-placement^='top'] > div > & {\n bottom: -27px;\n }\n\n [data-popper-placement^='right'] > div > & {\n left: -27px;\n\n & > svg {\n transform: rotate(90deg);\n }\n }\n\n [data-popper-placement^='left'] > div > & {\n right: -27px;\n\n & > svg {\n transform: rotate(-90deg);\n }\n }\n\n [data-popper-placement^='bottom'] > div > & {\n top: -27px;\n\n & > svg {\n transform: rotate(180deg);\n }\n }\n`\n\nconst BorderPath = styled.path`\n fill: var(--card-shadow-outline-color);\n`\n\nconst ShapePath = styled.path`\n fill: var(--card-bg-color);\n`\n\nexport const PopoverArrow = forwardRef(function PopoverArrow(\n props: Omit<React.HTMLProps<HTMLDivElement>, 'as'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n return (\n <Root data-ui=\"PopoverArrow\" {...props} ref={ref}>\n <svg\n width=\"27\"\n height=\"11\"\n viewBox=\"0 0 27 11\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <BorderPath d=\"M1.18708 1C3.29803 1.0011 5.29585 1.95479 6.62414 3.59561L11.1683 9.20895C12.369 10.6922 14.631 10.6922 15.8317 9.20894L20.3759 3.59561C21.7042 1.95478 23.702 1.0011 25.8129 1H21.9436C21.0533 1.49255 20.2545 2.15618 19.5986 2.96641L15.0545 8.57975C14.254 9.56855 12.746 9.56855 11.9455 8.57975L7.40139 2.96642C6.74548 2.15618 5.94673 1.49255 5.05643 1H1.18708Z\" />\n <ShapePath d=\"M1.18342 0C3.59749 0 5.88246 1.0901 7.40138 2.96642L11.9455 8.57975C12.746 9.56855 14.254 9.56855 15.0545 8.57975L19.5986 2.96641C21.1175 1.0901 23.4025 0 25.8166 0H27H0H1.18342Z\" />\n </svg>\n </Root>\n )\n})\n","import {useMemo} from 'react'\nimport {Modifier} from 'react-popper'\n\nimport {getPopoverModifiers} from './getPopoverModifiers'\nimport {PopoverModifiersProps} from './types'\n\nexport function usePopoverModifiers(props: PopoverModifiersProps): Modifier<any, any>[] {\n const {\n allowedAutoPlacements,\n arrow,\n arrowElement,\n boundaryElement,\n constrainSize,\n distance,\n fallbackPlacements,\n margins,\n matchReferenceWidth,\n open,\n preventOverflow,\n skidding,\n tether,\n tetherOffset,\n } = props\n\n return useMemo(() => {\n return getPopoverModifiers({\n allowedAutoPlacements,\n arrow,\n arrowElement,\n boundaryElement,\n constrainSize,\n distance,\n fallbackPlacements,\n margins,\n matchReferenceWidth,\n open,\n preventOverflow,\n skidding,\n tether,\n tetherOffset,\n })\n }, [\n allowedAutoPlacements,\n arrow,\n arrowElement,\n boundaryElement,\n constrainSize,\n distance,\n fallbackPlacements,\n margins,\n matchReferenceWidth,\n open,\n preventOverflow,\n skidding,\n tether,\n tetherOffset,\n ])\n}\n","import maxSizeModifier from 'popper-max-size-modifier'\nimport {Modifier} from 'react-popper'\nimport {PopoverModifiersProps} from './types'\n\n/*\n\nThe order of popper phases:\n\n- beforeRead\n- read\n- afterRead\n- beforeMain\n- main\n- afterMain\n- beforeWrite\n- write\n- afterWrite\n\n*/\n\nexport function getPopoverModifiers(props: PopoverModifiersProps): Modifier<any, any>[] {\n const {\n allowedAutoPlacements,\n arrow,\n arrowElement,\n boundaryElement,\n constrainSize,\n distance,\n fallbackPlacements,\n margins,\n matchReferenceWidth,\n open,\n preventOverflow,\n skidding,\n tether,\n tetherOffset,\n } = props\n\n // NOTE: For later viewers:\n // Prior to adding this change, the popover would get `maxWidth: 0` the 2nd time it\n // was opened, when used with `constrainSize`. I was looking for a way to \"reset\"\n // the size of the popover as measured by Popper.js, and this seems to be a workaround.\n if (!open) {\n return []\n }\n\n const detectOverflowOptions = {\n altAxis: !constrainSize,\n boundary: boundaryElement || undefined,\n padding: 8,\n tether,\n tetherOffset,\n }\n\n return [\n constrainSize && {\n ...maxSizeModifier,\n options: detectOverflowOptions,\n },\n constrainSize && {\n name: 'applyMaxSize',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['maxSize'],\n fn({state}: any) {\n const {width, height} = state.modifiersData.maxSize\n\n state.styles.popper = {\n ...state.styles.popper,\n maxWidth: `${width}px`,\n maxHeight: `${height}px`,\n }\n },\n },\n arrow && {\n name: 'arrow',\n options: {\n element: arrowElement,\n padding: 4,\n },\n },\n (constrainSize || preventOverflow) && {\n name: 'preventOverflow',\n options: detectOverflowOptions,\n },\n {\n name: 'offset',\n options: {\n offset: [skidding, distance],\n },\n },\n margins && {\n name: 'margins',\n enabled: true,\n phase: 'beforeRead',\n fn: ({state}: any) => {\n const {rects} = state\n\n if (rects.reference) {\n rects.reference.x += margins[3]\n rects.reference.y += margins[1]\n rects.reference.width -= margins[1] + margins[3]\n rects.reference.height -= margins[0] + margins[2]\n }\n },\n },\n {\n name: 'flip',\n options: {\n allowedAutoPlacements,\n boundary: boundaryElement || undefined,\n fallbackPlacements,\n padding: 8,\n },\n },\n matchReferenceWidth && {\n name: 'matchWidth',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn({state}: any) {\n const {width} = state.rects.reference\n\n state.styles.popper.width = `${width}px`\n },\n effect: ({state}: any) => {\n const refElement = state.elements.reference\n\n if (refElement instanceof HTMLElement) {\n state.elements.popper.style.width = `${\n refElement.offsetWidth - (margins ? margins[1] + margins[3] : 0)\n }px`\n }\n },\n },\n ].filter(Boolean) as Modifier<any, any>[]\n}\n","import {cloneElement, forwardRef, useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {usePopper} from 'react-popper'\nimport styled, {css} from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {useArrayProp, useForwardedRef} from '../../hooks'\nimport {ThemeColorSchemeKey, useTheme} from '../../theme'\nimport {CardTone, Placement, PopoverMargins} from '../../types'\nimport {Layer, LayerProps, Portal, useBoundaryElement, usePortal} from '../../utils'\nimport {Card} from '../card'\nimport {ResponsiveWidthStyleProps} from '../container'\nimport {responsiveContainerWidthStyle} from '../container/styles'\nimport {ResponsiveRadiusProps, ResponsiveShadowProps, ResponsiveWidthProps} from '../types'\nimport {PopoverArrow} from './arrow'\nimport {usePopoverModifiers} from './modifiers'\n\n/**\n * @public\n */\nexport interface PopoverProps\n extends Omit<LayerProps, 'as'>,\n ResponsiveRadiusProps,\n ResponsiveShadowProps,\n ResponsiveWidthProps {\n /**\n * @beta\n */\n __unstable_margins?: PopoverMargins\n allowedAutoPlacements?: Placement[]\n arrow?: boolean\n boundaryElement?: HTMLElement | null\n children?: React.ReactElement\n constrainSize?: boolean\n content?: React.ReactNode\n disabled?: boolean\n fallbackPlacements?: Placement[]\n open?: boolean\n padding?: number | number[]\n placement?: Placement\n portal?: boolean | string\n preventOverflow?: boolean\n referenceElement?: HTMLElement | null\n matchReferenceWidth?: boolean\n scheme?: ThemeColorSchemeKey\n tether?: boolean\n tetherOffset?: number | ((...args: any[]) => number)\n tone?: CardTone\n}\n\nconst Root = styled(Layer)<{$preventOverflow?: boolean}>(\n ({$preventOverflow}) => css`\n pointer-events: none;\n display: flex;\n flex-direction: column;\n max-width: calc(100% - 16px);\n\n & > * {\n min-height: 0;\n }\n\n /* Hide the popover when the reference element is out of bounds */\n ${$preventOverflow &&\n css`\n &[data-popper-reference-hidden='true'] {\n display: none;\n }\n `}\n `\n)\n\nconst PopoverCard = styled(Card)<\n ResponsiveWidthStyleProps & {\n $constrainSize?: boolean\n $preventOverflow?: boolean\n $width: (number | 'auto')[]\n }\n>(\n ({$constrainSize}) => css`\n flex: 1;\n max-height: ${$constrainSize && '100%'};\n pointer-events: all;\n\n && {\n display: flex;\n }\n\n flex-direction: column;\n\n & > * {\n min-height: 0;\n }\n\n ${responsiveContainerWidthStyle}\n `\n)\n\n/**\n * @public\n */\nexport const Popover = forwardRef(function Popover(\n props: PopoverProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content' | 'width'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const boundaryElementContext = useBoundaryElement()\n const theme = useTheme()\n const {\n __unstable_margins: margins,\n allowedAutoPlacements,\n arrow = true,\n boundaryElement: boundaryElementProp = boundaryElementContext.element,\n children: child,\n content,\n constrainSize,\n disabled,\n fallbackPlacements,\n open = false,\n padding,\n placement = 'bottom',\n portal: portalProp = false,\n preventOverflow,\n radius = 3,\n referenceElement: referenceElementProp,\n matchReferenceWidth,\n shadow = 3,\n scheme,\n style = EMPTY_RECORD,\n tether,\n tetherOffset,\n tone = 'inherit',\n width: widthProp = 0,\n zOffset = theme.sanity.layer?.popover.zOffset,\n ...restProps\n } = props\n const forwardedRef = useForwardedRef(ref)\n const portal = usePortal()\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null)\n const [popperElement, setPopperElement] = useState<HTMLElement | null>(null)\n const [arrowElement, setArrowElement] = useState<HTMLElement | null>(null)\n const popperReferenceElement = referenceElementProp || referenceElement\n const width = useArrayProp(matchReferenceWidth ? 'auto' : widthProp)\n\n const modifiers = usePopoverModifiers({\n allowedAutoPlacements,\n arrow,\n arrowElement,\n boundaryElement: boundaryElementProp || portal.boundaryElement,\n constrainSize,\n distance: arrow ? 4 : 0,\n fallbackPlacements,\n margins,\n matchReferenceWidth,\n open,\n preventOverflow,\n skidding: 0,\n tether,\n tetherOffset,\n })\n\n const popper = usePopper(popperReferenceElement, popperElement, {\n placement,\n modifiers,\n })\n\n const {attributes, forceUpdate, styles} = popper\n\n const setRef = useCallback(\n (el: HTMLElement | null) => {\n const childRef = (child as any).ref\n\n setReferenceElement(el)\n\n if (typeof childRef === 'function') {\n childRef(el)\n } else if (childRef) {\n childRef.current = el\n }\n },\n [child]\n )\n\n const setRootRef = useCallback(\n (el: HTMLDivElement | null) => {\n setPopperElement(el)\n forwardedRef.current = el\n },\n [forwardedRef]\n )\n\n const popoverStyle = useMemo(() => ({...style, ...styles.popper}), [style, styles])\n\n const updateTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n useEffect(() => {\n if (updateTimeoutRef.current) {\n clearTimeout(updateTimeoutRef.current)\n updateTimeoutRef.current = null\n }\n\n updateTimeoutRef.current = setTimeout(() => {\n if (forceUpdate) {\n try {\n forceUpdate()\n } catch (_) {\n // ignore caught error\n }\n }\n }, 0)\n }, [content, forceUpdate, open, popperReferenceElement])\n\n if (disabled) {\n return child || <></>\n }\n\n const node = (\n <Root\n data-ui=\"Popover\"\n {...restProps}\n $preventOverflow={preventOverflow}\n ref={setRootRef}\n style={popoverStyle}\n zOffset={zOffset}\n {...attributes.popper}\n >\n <PopoverCard\n $constrainSize={constrainSize}\n $width={width}\n data-ui=\"PopoverCard\"\n padding={padding}\n radius={radius}\n scheme={scheme}\n shadow={shadow}\n tone={tone}\n >\n {arrow && <PopoverArrow ref={setArrowElement} style={styles.arrow} />}\n {content}\n </PopoverCard>\n </Root>\n )\n\n return (\n <>\n {child && !referenceElementProp ? cloneElement(child, {ref: setRef}) : child || <></>}\n\n {open && (\n <>\n {portalProp && (\n <Portal __unstable_name={typeof portalProp === 'string' ? portalProp : undefined}>\n {node}\n </Portal>\n )}\n\n {!portalProp && node}\n </>\n )}\n </>\n )\n})\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useForwardedRef, 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 * @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 = useForwardedRef(forwardedRef)\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 {...restProps}\n disabled={disabled || readOnly}\n readOnly={readOnly}\n ref={ref}\n type=\"radio\"\n />\n <span />\n </Root>\n )\n})\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {rem, ThemeProps} from '../../styles'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/internal'\n\nexport function radioBaseStyle(): FlattenSimpleInterpolation {\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): FlattenSimpleInterpolation {\n const {theme} = props\n const {focusRing, input} = theme.sanity\n const color = theme.sanity.color.input\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.default.enabled.bg};\n box-shadow: ${focusRingBorderStyle({\n color: color.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.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.default.enabled.border},\n focusRing,\n })};\n }\n\n &:not(:disabled):focus:not(:focus-visible) + span {\n box-shadow: ${focusRingBorderStyle({\n color: color.default.enabled.border,\n width: input.border.width,\n })};\n }\n\n &:checked + span::after {\n opacity: 1;\n }\n\n /* read only */\n &[data-read-only] + span {\n box-shadow: 0 0 0 1px ${color.default.readOnly.border};\n background: ${color.default.readOnly.bg};\n\n &::after {\n background: ${color.default.readOnly.fg};\n }\n }\n\n /* disabled */\n &:not([data-read-only]):disabled + span {\n box-shadow: 0 0 0 1px ${color.default.disabled.border};\n background: ${color.default.disabled.bg};\n\n &::after {\n background: ${color.default.disabled.fg};\n }\n }\n `\n}\n","import {css, CSSObject, FlattenSimpleInterpolation} from 'styled-components'\nimport {rem, _responsive, ThemeProps} from '../../styles'\nimport {\n focusRingBorderStyle,\n focusRingStyle,\n responsiveInputPaddingIconRightStyle,\n responsiveRadiusStyle,\n ResponsiveRadiusStyleProps,\n} from '../../styles/internal'\nimport {ThemeFontSize} from '../../theme'\n\nfunction rootStyle(): FlattenSimpleInterpolation {\n return css`\n position: relative;\n width: stretch;\n\n &:not([hidden]) {\n display: inline-block;\n }\n `\n}\n\nfunction inputBaseStyle(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const font = theme.sanity.fonts.text\n\n return css`\n -webkit-font-smoothing: antialiased;\n appearance: none;\n border: 0;\n font-family: ${font.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 {theme} = props\n const {focusRing, input} = theme.sanity\n const color = theme.sanity.color.input\n\n return css`\n /* enabled */\n background-color: ${color.default.enabled.bg};\n color: ${color.default.enabled.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.default.enabled.border,\n width: input.border.width,\n })};\n\n /* hovered */\n @media (hover: hover) {\n &:not(:disabled):hover {\n background-color: ${color.default.hovered.bg};\n color: ${color.default.hovered.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.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.default.enabled.border},\n focusRing,\n })};\n }\n\n /* read-only */\n &[data-read-only] {\n background-color: ${color.default.readOnly.bg};\n color: ${color.default.readOnly.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.default.readOnly.border,\n width: input.border.width,\n })};\n }\n\n /* disabled */\n &:not([data-read-only]):disabled {\n background-color: ${color.default.disabled.bg};\n color: ${color.default.disabled.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.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 {theme, $fontSize} = props\n const {sizes} = theme.sanity.fonts.text\n\n return _responsive(theme.sanity.media, $fontSize, (sizeIndex) =>\n textSize(sizes[sizeIndex] || 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) => FlattenSimpleInterpolation)\n> {\n return [\n responsiveRadiusStyle,\n inputBaseStyle,\n inputColorStyle,\n inputTextSizeStyle,\n responsiveInputPaddingIconRightStyle,\n ]\n}\n\nfunction iconBoxStyle(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const color = theme.sanity.color.input\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.default.enabled.fg};\n\n /* hover */\n @media (hover: hover) {\n select:not(disabled):not(:read-only):hover + && {\n --card-fg-color: ${color.default.hovered.fg};\n }\n }\n\n /* disabled */\n select:disabled + && {\n --card-fg-color: ${color.default.disabled.fg};\n }\n\n /* read-only */\n select[data-read-only] + && {\n --card-fg-color: ${color.default.readOnly.fg};\n }\n `\n}\n\nexport const selectStyle = {\n root: rootStyle,\n input: inputStyle,\n iconBox: iconBoxStyle,\n}\n","import {SelectIcon} from '@sanity/icons'\nimport {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useForwardedRef, useCustomValidity, useArrayProp} from '../../hooks'\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?: number | number[]\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: number[]\n $space: number[]\n}>(selectStyle.input)\n\nconst IconBox = styled(Box)(selectStyle.iconBox)\n\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 = 1,\n readOnly,\n space = 3,\n ...restProps\n } = props\n\n const ref = useForwardedRef(forwardedRef)\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 <SelectIcon />\n </Text>\n </IconBox>\n </Root>\n )\n})\n","import {CSSObject} from 'styled-components'\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 {theme} = props\n const {media, space} = theme.sanity\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 * @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 {forwardRef, useEffect} from 'react'\nimport styled from 'styled-components'\nimport {useForwardedRef} from '../../hooks'\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 * @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 = useForwardedRef(forwardedRef)\n\n useEffect(() => {\n if (ref.current) {\n // Set the indeterminate state\n ref.current.indeterminate = indeterminate || false\n }\n }, [indeterminate, ref])\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 {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {rem, ThemeProps} from '../../styles'\nimport {focusRingStyle} from '../../styles/internal'\n\n/* Root */\nexport function switchBaseStyles(): FlattenSimpleInterpolation {\n return css`\n position: relative;\n &:not([hidden]) {\n display: inline-block;\n }\n `\n}\n\n/* Input */\nexport function switchInputStyles(): FlattenSimpleInterpolation {\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): FlattenSimpleInterpolation {\n const {theme} = props\n const {focusRing, input} = theme.sanity\n const color = theme.sanity.color.button.default\n\n return css`\n --switch-bg-color: ${color.default.enabled.bg};\n --switch-fg-color: ${color.default.enabled.fg};\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})};\n }\n\n input:focus:not(:focus-visible) + && {\n --switch-box-shadow: none;\n }\n\n input:checked + && {\n --switch-bg-color: ${color.positive.enabled.bg};\n --switch-fg-color: ${color.positive.enabled.fg};\n }\n\n @media (hover: hover) {\n input:not(:disabled):hover + && {\n --switch-bg-color: ${color.default.hovered.bg};\n --switch-fg-color: ${color.default.hovered.fg};\n }\n\n input:not(:disabled):checked:hover + && {\n --switch-bg-color: ${color.positive.hovered.bg};\n --switch-fg-color: ${color.positive.hovered.fg};\n }\n }\n\n input:not([data-read-only]):disabled + && {\n --switch-bg-color: ${color.default.disabled.bg};\n --switch-fg-color: ${color.default.disabled.fg};\n }\n `\n}\n\n/* Track */\nexport function switchTrackStyles(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const {input} = theme.sanity\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): FlattenSimpleInterpolation {\n const {$indeterminate, theme} = props\n const {input} = theme.sanity\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\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} from 'react'\nimport styled from 'styled-components'\nimport {useForwardedRef, 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 {ThemeFontWeightKey, 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 * @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 = 1,\n weight,\n ...restProps\n } = props\n\n const ref = useForwardedRef(forwardedRef)\n\n const rootTheme = useRootTheme()\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 $border={border}\n $radius={useArrayProp(radius)}\n $scheme={rootTheme.scheme}\n $tone={rootTheme.tone}\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n />\n </InputRoot>\n </Root>\n )\n})\n","import {CloseIcon} from '@sanity/icons'\nimport {createElement, forwardRef, isValidElement, useCallback, useMemo} from 'react'\nimport {isValidElementType} from 'react-is'\nimport styled from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {useArrayProp, useForwardedRef, 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 {ThemeFontWeightKey, useRootTheme} from '../../theme'\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 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?: number | number[]\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\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 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 = 1,\n readOnly,\n space: spaceProp = 3,\n suffix,\n customValidity,\n type = 'text',\n weight,\n ...restProps\n } = props\n\n const ref = useForwardedRef(forwardedRef)\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 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 $border={border}\n $hasPrefix={$hasPrefix}\n $hasSuffix={$hasSuffix}\n $radius={radius}\n $scheme={rootTheme.scheme}\n $tone={rootTheme.tone}\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 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 <Button\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 {forwardRef} from 'react'\nimport styled from 'styled-components'\n\nconst Root = styled.div`\n position: absolute;\n width: 15px;\n height: 15px;\n fill: none;\n\n :empty + & {\n display: none;\n }\n\n & > svg {\n &:not([hidden]) {\n display: block;\n }\n transform-origin: 7.5px 7.5px;\n }\n\n [data-popper-placement^='top'] > div > & {\n bottom: -15px;\n }\n\n [data-popper-placement^='right'] > div > & {\n left: -15px;\n\n & > svg {\n transform: rotate(90deg);\n }\n }\n\n [data-popper-placement^='left'] > div > & {\n right: -15px;\n\n & > svg {\n transform: rotate(-90deg);\n }\n }\n\n [data-popper-placement^='bottom'] > div > & {\n top: -15px;\n\n & > svg {\n transform: rotate(180deg);\n }\n }\n`\n\nconst Border = styled.path`\n fill: var(--card-shadow-outline-color);\n`\n\nconst Shape = styled.path`\n fill: var(--card-bg-color);\n`\n\ninterface TooltipArrowProps {}\n\nexport const TooltipArrow = forwardRef(function TooltipArrow(\n props: TooltipArrowProps & Omit<React.HTMLProps<HTMLDivElement>, 'as'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {...restProps} = props\n\n return (\n <Root {...restProps} ref={ref}>\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\">\n <Border d=\"M11.5266 1C11.032 1.32802 10.5837 1.73105 10.1995 2.20057L9.04792 3.6081C8.24771 4.58614 6.7523 4.58614 5.95209 3.6081L4.80047 2.20057C4.41632 1.73105 3.96796 1.32802 3.47341 1H0.156727C1.65639 1 3.07687 1.67313 4.02651 2.83381L5.17813 4.24134C6.37844 5.70839 8.62156 5.70839 9.82187 4.24134L10.9735 2.83381C11.9231 1.67313 13.3436 1 14.8433 1H11.5266Z\" />\n <Shape d=\"M0.156725 0C1.95632 0 3.66089 0.80776 4.80047 2.20057L5.95209 3.6081C6.75229 4.58614 8.24771 4.58614 9.04791 3.6081L10.1995 2.20057C11.3391 0.80776 13.0437 0 14.8433 0H15H0H0.156725Z\" />\n </svg>\n </Root>\n )\n})\n","import {cloneElement, forwardRef, useCallback, useEffect, useRef, useState} from 'react'\nimport {usePopper} from 'react-popper'\nimport styled from 'styled-components'\nimport {useArrayProp, useForwardedRef} from '../../hooks'\nimport {ThemeColorSchemeKey, useTheme} from '../../theme'\nimport {Placement} from '../../types'\nimport {Layer, LayerProps, Portal, useBoundaryElement} from '../../utils'\nimport {Card} from '../card'\nimport {TooltipArrow} from './tooltipArrow'\n\n/**\n * @public\n */\nexport interface TooltipProps extends Omit<LayerProps, 'as'> {\n allowedAutoPlacements?: Placement[]\n boundaryElement?: HTMLElement | null\n children?: React.ReactElement\n content?: React.ReactNode\n disabled?: boolean\n fallbackPlacements?: Placement[]\n placement?: Placement\n portal?: boolean | string\n scheme?: ThemeColorSchemeKey\n}\n\nconst Root = styled(Layer)`\n pointer-events: none;\n`\n\n/**\n * @public\n */\nexport const Tooltip = forwardRef(function Tooltip(\n props: TooltipProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const boundaryElementContext = useBoundaryElement()\n const theme = useTheme()\n const {\n allowedAutoPlacements,\n boundaryElement = boundaryElementContext?.element,\n children,\n content,\n disabled,\n fallbackPlacements: fallbackPlacementsProp,\n placement = 'bottom',\n portal,\n scheme,\n zOffset = theme.sanity.layer?.tooltip.zOffset,\n ...restProps\n } = props\n const fallbackPlacements = useArrayProp(fallbackPlacementsProp)\n const forwardedRef = useForwardedRef(ref)\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null)\n const [popperElement, setPopperElement] = useState<HTMLDivElement | null>(null)\n const [arrowElement, setArrowElement] = useState<HTMLDivElement | null>(null)\n const popper = usePopper(referenceElement, popperElement, {\n placement,\n modifiers: [\n {\n name: 'arrow',\n options: {\n element: arrowElement,\n padding: 4,\n },\n },\n {\n name: 'preventOverflow',\n options: {\n altAxis: true,\n boundary: boundaryElement || undefined,\n padding: 4,\n },\n },\n {\n name: 'offset',\n options: {offset: [0, 3]},\n },\n {\n name: 'flip',\n options: {\n allowedAutoPlacements,\n fallbackPlacements,\n },\n },\n ],\n })\n const {forceUpdate} = popper\n const [isOpen, setIsOpen] = useState(false)\n const handleBlur = useCallback(() => setIsOpen(false), [])\n const handleFocus = useCallback(() => setIsOpen(true), [])\n const handleMouseEnter = useCallback(() => setIsOpen(true), [])\n const handleMouseLeave = useCallback(() => setIsOpen(false), [])\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 (!isOpen) 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 setIsOpen(false)\n window.removeEventListener('mousemove', handleWindowMouseMove)\n }\n }\n\n window.addEventListener('mousemove', handleWindowMouseMove)\n\n return () => {\n window.removeEventListener('mousemove', handleWindowMouseMove)\n }\n }, [isOpen, referenceElement])\n\n const updateTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n useEffect(() => {\n if (updateTimeoutRef.current) {\n clearTimeout(updateTimeoutRef.current)\n updateTimeoutRef.current = null\n }\n\n updateTimeoutRef.current = setTimeout(() => {\n if (forceUpdate) {\n try {\n forceUpdate()\n } catch (_) {\n // ignore caught error\n }\n }\n }, 0)\n }, [forceUpdate, content])\n\n // Close when `disabled` changes to `true`\n useEffect(() => {\n if (disabled) setIsOpen(false)\n }, [disabled])\n\n // Close when `content` changes to falsy\n useEffect(() => {\n if (!content) setIsOpen(false)\n }, [content])\n\n const setRef = (el: HTMLDivElement | null) => {\n setPopperElement(el)\n forwardedRef.current = el\n }\n\n if (!children) return <></>\n\n if (disabled) return children\n\n const referenceProps = {\n onBlur: handleBlur,\n onFocus: handleFocus,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n ref: setReferenceElement,\n }\n\n const referenceNode = cloneElement(children, referenceProps)\n\n const popperNode = (\n <Root\n data-ui=\"Tooltip\"\n {...restProps}\n {...popper.attributes.popper}\n ref={setRef}\n style={popper.styles.popper}\n zOffset={zOffset}\n >\n <Card radius={2} scheme={scheme} shadow={3}>\n {content}\n <TooltipArrow ref={setArrowElement} style={popper.styles.arrow} />\n </Card>\n </Root>\n )\n\n return (\n <>\n {referenceNode}\n\n {isOpen && (\n <>\n {portal && (\n <Portal __unstable_name={typeof portal === 'string' ? portal : undefined}>\n {popperNode}\n </Portal>\n )}\n\n {!portal && popperNode}\n </>\n )}\n </>\n )\n})\n","import {SpinnerIcon} from '@sanity/icons'\nimport styled, {keyframes} from 'styled-components'\nimport {Box, Popover} 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\n/**\n * @internal\n */\nexport const ResultsPopover = styled(Popover)`\n & > div {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n\n &[data-popper-reference-hidden='true'] {\n display: none;\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, PopoverMargins} 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_MARGINS: PopoverMargins = [0, 1, 1, 1]\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[] = ['top-start']\n","import {ChevronDownIcon} from '@sanity/icons'\nimport {cloneElement, forwardRef, useCallback, useEffect, useMemo, useReducer, useRef} from 'react'\nimport {EMPTY_ARRAY, EMPTY_RECORD} from '../../constants'\nimport {_hasFocus, _raf, focusFirstDescendant} from '../../helpers'\nimport {useForwardedRef, useArrayProp} from '../../hooks'\nimport {Box, BoxProps, Button, Card, PopoverProps, Stack, Text, TextInput} from '../../primitives'\nimport {AnimatedSpinnerIcon, ListBox, ResultsPopover, 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_MARGINS,\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?: React.ElementType | React.ReactNode\n id: string\n /**\n * @beta\n */\n listBox?: BoxProps\n loading?: boolean\n onChange?: (value: string) => void\n onQueryChange?: (query: string | null) => void\n onSelect?: (value: string) => void\n /**\n * @beta\n */\n openButton?: boolean | AutocompleteOpenButtonProps\n options?: Option[]\n padding?: number | number[]\n popover?: Omit<PopoverProps, 'content' | 'onMouseEnter' | 'onMouseLeave' | 'open'> &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content' | 'ref' | 'width'>\n prefix?: React.ReactNode\n radius?: number | number[]\n /**\n * @beta\n */\n relatedElements?: HTMLElement[]\n renderOption?: (option: Option) => React.ReactElement\n /**\n * @beta\n */\n renderPopover?: (\n props: {\n content: React.ReactElement | null\n hidden: boolean\n inputElement: HTMLInputElement | null\n onMouseEnter: () => void\n onMouseLeave: () => void\n },\n ref: React.Ref<HTMLDivElement>\n ) => React.ReactNode\n renderValue?: (value: string, option?: Option) => string\n suffix?: React.ReactNode\n value?: string\n}\n\nconst defaultRenderValue = (value: string, option?: BaseAutocompleteOption) =>\n option ? option.value : value\n\nconst defaultFilterOption = (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 React.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: React.Ref<HTMLInputElement>\n) {\n const {\n border = true,\n customValidity,\n disabled,\n filterOption: filterOptionProp,\n fontSize = 2,\n icon,\n id,\n listBox = {},\n loading,\n onBlur,\n onChange,\n onFocus,\n onQueryChange,\n onSelect,\n openButton,\n options: optionsProp,\n padding: paddingProp = 3,\n popover = {},\n prefix,\n radius = 3,\n readOnly,\n relatedElements,\n renderOption: renderOptionProp,\n renderPopover,\n renderValue = defaultRenderValue,\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 const filterOption =\n typeof filterOptionProp === 'function' ? filterOptionProp : defaultFilterOption\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 const forwardedRef = useForwardedRef(ref)\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: React.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: React.FocusEvent) => {\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: React.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: React.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: React.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 setRef = useCallback(\n (el: HTMLInputElement | null) => {\n inputElementRef.current = el\n forwardedRef.current = el\n },\n [forwardedRef]\n )\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(\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 openButtonProps: AutocompleteOpenButtonProps = useMemo(\n () => (typeof openButton === 'object' ? openButton : EMPTY_RECORD),\n [openButton]\n )\n\n const handleOpenClick = useCallback(\n (event: React.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={setRef}\n role=\"combobox\"\n spellCheck={false}\n suffix={suffix || openButtonNode}\n value={inputValue}\n />\n )\n\n const handleListBoxKeyDown = useCallback(\n (event: React.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 <ResultsPopover\n __unstable_margins={AUTOCOMPLETE_POPOVER_MARGINS}\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 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 * @public\n */\nexport const Autocomplete = InnerAutocomplete as <Option extends BaseAutocompleteOption>(\n props: AutocompleteProps<Option> &\n Omit<\n React.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?: React.Ref<HTMLInputElement>\n }\n) => React.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 {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\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\nglobalScope[key] = globalScope[key] || createContext<DialogContextValue>({version: 0.0})\n\n/**\n * @internal\n */\nexport const DialogContext: React.Context<DialogContextValue> = globalScope[key]\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 {forwardRef, useCallback, useEffect, useRef, useState} from 'react'\nimport styled from 'styled-components'\nimport {focusFirstDescendant, focusLastDescendant} from '../../helpers'\nimport {useArrayProp, useClickOutside, useForwardedRef, useGlobalKeyDown} from '../../hooks'\nimport {Box, Button, Card, Container, Flex, Text} from '../../primitives'\nimport {ResponsivePaddingProps, ResponsiveWidthProps} from '../../primitives/types'\nimport {responsivePaddingStyle, ResponsivePaddingStyleProps} from '../../styles/internal'\nimport {ThemeColorSchemeKey, useTheme} from '../../theme'\nimport {DialogPosition} from '../../types'\nimport {Layer, Portal, useLayer} from '../../utils'\nimport {\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?: number | number[]\n cardShadow?: number | number[]\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 position?: DialogPosition | DialogPosition[]\n scheme?: ThemeColorSchemeKey\n zOffset?: number | number[]\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 radius: number | number[]\n scheme?: ThemeColorSchemeKey\n shadow: number | number[]\n}\n\nconst Root = styled(Layer)<ResponsiveDialogPositionStyleProps & ResponsivePaddingStyleProps>(\n responsivePaddingStyle,\n dialogStyle,\n responsiveDialogPositionStyle\n)\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`\n\nconst DialogLayout = styled(Flex)`\n flex: 1;\n min-height: 0;\n width: 100%;\n`\n\nconst DialogHeader = styled(Card)`\n position: relative;\n z-index: 2;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n bottom: -1px;\n border-bottom: 1px solid var(--card-hairline-soft-color);\n }\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 border-top: 1px solid var(--card-hairline-soft-color);\n`\n\nconst DialogCard = forwardRef(function DialogCard(\n props: DialogCardProps,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n __unstable_autoFocus: autoFocus,\n __unstable_hideCloseButton: hideCloseButton,\n children,\n contentRef,\n footer,\n header,\n id,\n onClickOutside,\n onClose,\n radius: radiusProp,\n scheme,\n shadow: shadowProp,\n width: widthProp,\n } = props\n const radius = useArrayProp(radiusProp)\n const shadow = useArrayProp(shadowProp)\n const width = useArrayProp(widthProp)\n const forwardedRef = useForwardedRef(ref)\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const localContentRef = 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 useEffect(() => {\n if (!autoFocus) return\n\n // On mount: focus the first interactive element in the contents\n if (forwardedRef.current) {\n focusFirstDescendant(forwardedRef.current)\n }\n }, [autoFocus, forwardedRef])\n\n useGlobalKeyDown(\n useCallback(\n (event: KeyboardEvent) => {\n if (!isTopLayer || !onClose) return\n\n if (event.key === 'Escape') {\n event.preventDefault()\n event.stopPropagation()\n onClose()\n }\n },\n [isTopLayer, onClose]\n )\n )\n\n useClickOutside(\n useCallback(() => {\n if (!isTopLayer || !onClickOutside) return\n\n onClickOutside()\n }, [isTopLayer, onClickOutside]),\n [rootElement]\n )\n\n const setRef = useCallback(\n (el: HTMLDivElement | null) => {\n setRootElement(el)\n forwardedRef.current = el\n },\n [forwardedRef]\n )\n\n const setContentRef = useCallback(\n (el: HTMLDivElement | null) => {\n localContentRef.current = el\n if (typeof contentRef === 'function') contentRef(el)\n else if (contentRef) contentRef.current = el\n },\n [contentRef]\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>\n <Box flex={1} padding={4}>\n {header && (\n <Text id={labelId} weight=\"semibold\">\n {header}\n </Text>\n )}\n </Box>\n {showCloseButton && (\n <Box padding={2}>\n <Button\n aria-label=\"Close dialog\"\n disabled={!onClose}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onClose}\n padding={3}\n />\n </Box>\n )}\n </Flex>\n </DialogHeader>\n )}\n\n <DialogContent flex={1} ref={setContentRef} tabIndex={-1}>\n {children}\n </DialogContent>\n\n {footer && <DialogFooter>{footer}</DialogFooter>}\n </DialogLayout>\n </DialogCardRoot>\n </DialogContainer>\n )\n})\n\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 theme = useTheme()\n const {\n __unstable_autoFocus: autoFocus = true,\n __unstable_hideCloseButton: hideCloseButton = false,\n cardRadius: cardRadiusProp = 3,\n cardShadow = 4,\n children,\n contentRef,\n footer,\n header,\n id,\n onClickOutside,\n onClose,\n padding: paddingProp = 4,\n portal,\n position: positionProp = dialog.position || 'fixed',\n scheme,\n width: widthProp = 0,\n zOffset: zOffsetProp = dialog.zOffset || theme.sanity.layer?.dialog.zOffset,\n ...restProps\n } = props\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\n const handleFocus = useCallback((event: React.FocusEvent<HTMLDivElement>) => {\n const target = event.target\n const cardElement = cardRef.current\n\n if (!cardElement) {\n return\n }\n\n if (target === preDivRef.current) {\n focusLastDescendant(cardElement)\n\n return\n }\n\n if (target === postDivRef.current) {\n focusFirstDescendant(cardElement)\n\n return\n }\n }, [])\n\n const labelId = `${id}_label`\n\n return (\n <Portal __unstable_name={portal}>\n <Root\n {...restProps}\n $padding={padding}\n $position={position}\n aria-labelledby={labelId}\n aria-modal\n data-ui=\"Dialog\"\n id={id}\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 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 {CSSObject} 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 = theme.sanity.color.base\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.shadow.umbra,\n }\n}\n\nexport function responsiveDialogPositionStyle(\n props: ResponsiveDialogPositionStyleProps & ThemeProps\n): CSSObject[] {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$position, (position) => ({'&&': {position}}))\n}\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {Inline, KBD} from '../../primitives'\n\n/**\n * @public\n */\nexport interface HotkeysProps {\n fontSize?: number | number[]\n padding?: number | number[]\n radius?: number | number[]\n space?: number | number[]\n keys?: string[]\n}\n\nconst Root = styled.kbd`\n &:not([hidden]) {\n display: block;\n }\n font: inherit;\n`\n\nconst Key = styled(KBD)`\n &:not([hidden]) {\n display: block;\n }\n`\n\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 = 1, ...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 {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\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\nglobalScope[key] = globalScope[key] || createContext<MenuContextValue | null>(null)\n\nexport const MenuContext: React.Context<MenuContextValue | null> = globalScope[key]\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 rootElement?.focus()\n setActiveIndex(-1)\n }, [rootElement, setActiveIndex])\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, useMemo} from 'react'\nimport styled from 'styled-components'\nimport {useClickOutside, useForwardedRef, 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 * @public\n */\nexport const Menu = forwardRef(function Menu(\n props: MenuProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'role' | 'tabIndex'>,\n ref: 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 forwardedRef = useForwardedRef(ref)\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 forwardedRef.current = el\n },\n [forwardedRef, 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 {cloneElement, forwardRef, useCallback, useMemo, useState, useEffect, useRef} from 'react'\nimport {isElement} from 'react-is'\nimport {Popover, PopoverProps} from '../../primitives'\nimport {ThemeColorSchemeKey} from '../../theme'\nimport {Placement} 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 /**\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?: number | number[]\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 * @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 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 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 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 = isElement(menuProp) ? cloneElement(menuProp, menuProps) : null\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 isElement(buttonProp)\n ? cloneElement(buttonProp, {\n 'data-ui': 'MenuButton',\n id,\n onClick: handleButtonClick,\n onKeyDown: handleButtonKeyDown,\n 'aria-haspopup': true,\n 'aria-expanded': open,\n ref: setButtonRef,\n selected: open,\n })\n : null,\n [buttonProp, handleButtonClick, handleButtonKeyDown, id, open, setButtonRef]\n )\n\n const popoverProps: PopoverProps = useMemo(() => {\n return {\n boundaryElement: deprecated_boundaryElement,\n placement: deprecated_placement,\n portal: deprecated_portal,\n radius: deprecated_popoverRadius,\n preventOverflow: deprecated_preventOverflow,\n scheme: deprecated_popoverScheme,\n ...(popover || {}),\n }\n }, [\n deprecated_boundaryElement,\n deprecated_preventOverflow,\n deprecated_placement,\n popover,\n deprecated_popoverRadius,\n deprecated_portal,\n deprecated_popoverScheme,\n ])\n\n return (\n <Popover {...popoverProps} content={menu} data-ui=\"MenuButton__popover\" open={open}>\n {button || <></>}\n </Popover>\n )\n})\n","import styled, {StyledComponent} from 'styled-components'\nimport {Theme} from '../../theme'\n\n/**\n * @public\n */\nexport const MenuDivider: StyledComponent<'hr', Theme> = styled.hr`\n height: 1px;\n border: 0;\n background: var(--card-hairline-soft-color);\n margin: 0;\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 {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {_colorVarsStyle} from '../../styles/colorVars'\nimport {SelectableTone} from '../../types/selectable'\n\n/**\n * @internal\n */\nexport interface SelectableStyleProps {\n $tone: SelectableTone\n}\n\nexport function selectableBaseStyle(): FlattenSimpleInterpolation {\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: 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): FlattenSimpleInterpolation {\n const {$tone, theme} = props\n const {base, muted, selectable} = theme.sanity.color\n // @todo: remove use of `muted` here\n const tone = selectable ? selectable[$tone] || selectable.default : muted[$tone] || muted.default\n\n return css`\n ${_colorVarsStyle(base, 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 ${_colorVarsStyle(base, tone.disabled)}\n }\n\n &:not(:disabled) {\n &[aria-pressed='true'] {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n\n &[data-selected],\n &[aria-selected='true'] > & {\n ${_colorVarsStyle(base, tone.selected)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) {\n &:hover {\n ${_colorVarsStyle(base, tone.hovered)}\n }\n\n &:active {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n }\n }\n }\n }\n\n /* &:is(a) */\n &[data-as='a'] {\n &[data-disabled] {\n ${_colorVarsStyle(base, tone.disabled)}\n }\n\n &:not([data-disabled]) {\n &[data-pressed] {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n\n &[data-selected] {\n ${_colorVarsStyle(base, tone.selected)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) {\n &:hover {\n ${_colorVarsStyle(base, tone.hovered)}\n }\n\n &:active {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n }\n }\n }\n }\n\n ${theme.sanity.styles?.card?.root}\n `\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 {\n createElement,\n forwardRef,\n isValidElement,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {useArrayProp, useForwardedRef} from '../../hooks'\nimport {Box, Flex, Text} from '../../primitives'\nimport {Selectable} from '../../primitives/_selectable'\nimport {ResponsivePaddingProps, ResponsiveRadiusProps} from '../../primitives/types'\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 = 2,\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 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\n useEffect(() => mount(rootElement, selectedProp), [mount, rootElement, selectedProp])\n\n const ref = useForwardedRef(forwardedRef)\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 setRef = useCallback(\n (el: HTMLDivElement | null) => {\n ref.current = el\n setRootElement(el)\n },\n [ref]\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={tone}\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 <Box as=\"span\" {...paddingProps}>\n <Flex as=\"span\">\n {icon && (\n <Text size={fontSize}>\n {isValidElement(icon) && icon}\n {isValidElementType(icon) && createElement(icon)}\n </Text>\n )}\n\n {text && (\n <Box\n flex={1}\n marginLeft={icon ? space : undefined}\n marginRight={iconRight ? space : undefined}\n >\n <Text size={fontSize} textOverflow=\"ellipsis\">\n {text}\n </Text>\n </Box>\n )}\n\n {hotkeys && (\n <Box marginLeft={space} style={{marginTop: -4, marginBottom: -4}}>\n <Hotkeys fontSize={fontSize} keys={hotkeys} />\n </Box>\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\" {...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 {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {_responsive} from '../../styles'\nimport {Theme, ThemeFontKey} from '../../theme'\nimport {Skeleton, SkeletonProps} from './skeleton'\n\nconst Root = styled(Skeleton)<{$size: number[]; $style: ThemeFontKey}>(\n ({$size, $style, theme}: {$size: number[]; $style: ThemeFontKey; theme: Theme}) => {\n const {media} = theme.sanity\n const font = theme.sanity.fonts[$style]\n\n const styles = _responsive(media, $size, (sizeIndex) => {\n const fontSize = font.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/**\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, useRef} from 'react'\nimport {useForwardedRef} from '../../hooks'\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\n/**\n * @public\n */\nexport const Tab = forwardRef(function Tab(\n props: TabProps &\n Omit<React.HTMLProps<HTMLButtonElement>, 'aria-controls' | 'as' | 'id' | 'label' | 'type'>,\n forwardedRef: React.ForwardedRef<HTMLButtonElement>\n) {\n const {\n icon,\n id,\n focused,\n fontSize,\n label,\n onClick,\n onFocus,\n padding = 2,\n selected,\n ...restProps\n } = props\n const elementRef = useRef<HTMLButtonElement | null>(null)\n const focusedRef = useRef(false)\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 const ref = useForwardedRef(forwardedRef)\n\n useEffect(() => {\n if (focused && !focusedRef.current) {\n if (elementRef.current) elementRef.current.focus()\n focusedRef.current = true\n }\n }, [focused])\n\n const setRef = (el: HTMLButtonElement | null) => {\n elementRef.current = el\n ref.current = el\n }\n\n return (\n <Button\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={setRef}\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 {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/**\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 <Inline data-ui=\"TabList\" {...restProps} onKeyDown={handleKeyDown} ref={ref} role=\"tablist\">\n {tabs}\n </Inline>\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 styled from 'styled-components'\nimport {Box, Button, Card, Flex, Stack, Text} from '../../primitives'\nimport {ThemeColorToneKey} from '../../theme'\n\n/**\n * @public\n */\nexport interface ToastProps {\n closable?: boolean\n description?: React.ReactNode\n onClose?: () => void\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}\n\nconst ROLES = {\n error: 'alert',\n warning: 'alert',\n success: 'alert',\n info: 'alert',\n}\n\nconst Root = styled(Card)`\n pointer-events: all;\n`\n\nconst TextBox = styled(Flex)`\n overflow-x: auto;\n`\n\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, title, status, ...restProps} = props\n const cardTone = status ? STATUS_CARD_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={2}\n shadow={2}\n tone={cardTone}\n >\n <Flex align=\"flex-start\">\n <TextBox flex={1} padding={3}>\n <Stack space={3}>\n {title && <Text weight=\"semibold\">{title}</Text>}\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 onClick={onClose}\n style={{verticalAlign: 'top'}}\n />\n </Box>\n )}\n </Flex>\n </Root>\n )\n}\n","import {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\nimport {ToastContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/toast')\n\nglobalScope[key] = globalScope[key] || createContext<ToastContextValue | null>(null)\n\nexport const ToastContext: React.Context<ToastContextValue | null> = globalScope[key]\n","import {AnimatePresence, motion} from 'framer-motion'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport styled from 'styled-components'\nimport {Box} from '../../primitives'\nimport {Layer} from '../../utils'\nimport {Toast} from './toast'\nimport {ToastContext} from './toastContext'\nimport {ToastContextValue, ToastParams} from './types'\n\ninterface ToastState {\n toasts: {\n dismiss: () => void\n id: string\n params: ToastParams\n }[]\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>({toasts: []})\n const toastsRef = useRef<{[key: string]: {timeoutId: NodeJS.Timeout}}>({})\n\n const push = useCallback((params: ToastParams) => {\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) => {\n const idx = prevState.toasts.findIndex((t) => t.id === id)\n\n if (idx > -1) {\n const toasts = prevState.toasts.slice(0)\n\n toasts.splice(idx, 1)\n\n return {...prevState, 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) => {\n return {\n ...prevState,\n toasts: prevState.toasts\n .filter((t) => t.id !== id)\n .concat([\n {\n dismiss,\n id,\n params: {...params, duration},\n },\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 // 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 const value: ToastContextValue = useMemo(() => ({version: 0.0, push}), [push])\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n\n <Root data-ui=\"ToastProvider\" zOffset={zOffset}>\n <ToastContainer>\n <Box padding={padding} paddingX={paddingX} paddingY={paddingY}>\n <AnimatePresence initial={false}>\n {state.toasts.map(({dismiss, id, params}) => (\n <motion.div\n animate={{opacity: 1, y: 0, scale: 1}}\n exit={{opacity: 0, scale: 0.5, transition: {duration: 0.2}}}\n initial={{opacity: 0, y: 32, scale: 0.25}}\n key={id}\n layout=\"position\"\n transition={{type: 'spring', damping: 30, stiffness: 400}}\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 </ToastContext.Provider>\n )\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 {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\nimport {TreeContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/tree')\n\nglobalScope[key] = globalScope[key] || createContext<TreeContextValue | null>(null)\n\n/**\n * @internal\n */\nexport const TreeContext: React.Context<TreeContextValue | null> = globalScope[key]\n","import {forwardRef, memo, useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {useForwardedRef} from '../../hooks'\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 ref: React.ForwardedRef<HTMLDivElement>\n ): React.ReactElement {\n const {children, space = 1, ...restProps} = props\n const forwardedRef = useForwardedRef(ref)\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 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 useEffect(() => {\n if (!forwardedRef.current) return\n const _itemElements = Array.from(\n forwardedRef.current.querySelectorAll('[data-ui=\"TreeItem\"]')\n ) as HTMLElement[]\n\n setItemElements(_itemElements)\n }, [children, forwardedRef])\n\n return (\n <TreeContext.Provider value={contextValue}>\n <Stack\n as=\"ul\"\n data-ui=\"Tree\"\n {...restProps}\n onKeyDown={handleKeyDown}\n ref={forwardedRef}\n role=\"tree\"\n space={space}\n >\n {children}\n </Stack>\n </TreeContext.Provider>\n )\n })\n)\n\nTree.displayName = 'Tree'\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 {createElement, memo, useCallback, useEffect, useId, useMemo, useRef} from 'react'\nimport styled from 'styled-components'\nimport {Box, Flex, Text} from '../../primitives'\nimport {ThemeFontWeightKey} from '../../theme'\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 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,\n href,\n icon,\n id: idProp,\n muted,\n onClick,\n padding = 3,\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__box' ||\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 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","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {rem, ThemeProps} from '../../styles'\nimport {_colorVarsStyle} from '../../styles/colorVars'\n\nexport function treeItemRootStyle(): FlattenSimpleInterpolation {\n return css`\n &[role='none'] > [role='treeitem'] {\n outline: none;\n cursor: default;\n border-radius: 3px;\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\n &:focus > div {\n position: relative;\n }\n }\n `\n}\n\nexport function treeItemRootColorStyle(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const $tone = 'default'\n const {base, muted, selectable} = theme.sanity.color\n // @todo: remove use of `muted` here\n const tone = selectable ? selectable[$tone] || selectable.default : muted[$tone] || muted.default\n\n return css`\n /* <div role=\"none\"><a data-ui=\"TreeItem__box\" role=\"treeitem\" tabIndex=\"0\"></div> */\n &[role='none'] {\n & > [role='treeitem'] {\n ${_colorVarsStyle(base, tone.enabled)}\n\n background-color: var(--card-bg-color);\n color: var(--treeitem-fg-color);\n }\n\n &[data-selected] > [role='treeitem'] {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) > [role='treeitem']:not(:focus):hover {\n ${_colorVarsStyle(base, tone.hovered)}\n }\n\n & > [role='treeitem']:focus {\n ${_colorVarsStyle(base, tone.selected)}\n }\n }\n }\n\n /* <div role=\"treeitem\" tabIndex=\"0\"><div data-ui=\"TreeItem__box\"></div> */\n &[role='treeitem'] {\n & > [data-ui='TreeItem__box'] {\n ${_colorVarsStyle(base, tone.enabled)}\n\n background-color: var(--card-bg-color);\n color: var(--card-fg-color);\n }\n\n &[data-selected] > [data-ui='TreeItem__box'] {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]):not(:focus) > [data-ui='TreeItem__box']:hover {\n ${_colorVarsStyle(base, tone.hovered)}\n }\n\n &:focus > [data-ui='TreeItem__box'] {\n ${_colorVarsStyle(base, tone.selected)}\n }\n }\n }\n `\n}\n\nexport interface TreeItemBoxStyleProps {\n $level: number\n}\n\nexport function treeItemBoxStyle(\n props: TreeItemBoxStyleProps & ThemeProps\n): FlattenSimpleInterpolation {\n const {$level, theme} = props\n const {space} = theme.sanity\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 {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","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 {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 {SelectableTone} from '../../types/selectable'\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?: number | number[]\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,\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 {\n activeElement,\n mount,\n onClickOutside,\n onEscape,\n onItemClick,\n onItemMouseEnter = menu.onMouseEnter,\n registerElement,\n } = menu\n const [rootElement, setRootElement] = useState<HTMLButtonElement | 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 onClick={handleClick}\n onKeyDown={handleKeyDown}\n onMouseEnter={handleMouseEnter}\n ref={setRootElement}\n tabIndex={-1}\n type={as === 'button' ? 'button' : undefined}\n >\n <Box padding={padding}>\n <Flex>\n {icon && (\n <Text size={fontSize}>\n {isValidElement(icon) && icon}\n {isValidElementType(icon) && createElement(icon)}\n </Text>\n )}\n\n <Box flex={1} marginLeft={icon ? space : undefined}>\n <Text size={fontSize} textOverflow=\"ellipsis\">\n {text}\n </Text>\n </Box>\n\n <Box marginLeft={space}>\n <Text size={fontSize}>\n <ChevronRightIcon />\n </Text>\n </Box>\n </Flex>\n </Box>\n </Selectable>\n </Popover>\n )\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, useMemo, useState} from 'react'\n\n/**\n * @public\n */\nexport function usePrefersDark(): boolean {\n const mq = useMemo(() => {\n if (typeof window === 'undefined') return undefined\n\n return window.matchMedia('(prefers-color-scheme: dark)')\n }, [])\n\n const [dark, setDark] = useState(mq?.matches || false)\n\n useEffect(() => {\n if (!mq) return undefined\n\n setDark(mq.matches)\n\n const handleChange = () => setDark(mq.matches)\n\n mq.addEventListener('change', handleChange)\n\n return () => mq.removeEventListener('change', handleChange)\n }, [mq])\n\n return dark\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"],"names":["EMPTY_ARRAY","EMPTY_RECORD","_fillCSSObject","keys","value","reduce","style","key","rem","pixelValue","_responsive","media","values","callback","statements","map","statement","mediaIndex","concat","_getArrayProp","val","defaultVal","Array","isArray","_getResponsiveSpace","theme","props","spaceIndexes","Error","length","sanity","spaceIndex","space","responsiveFont","fontKey","$size","$weight","fonts","family","sizes","weights","fontWeight","regular","defaultSize","base","position","fontFamily","padding","margin","content","display","height","warned","console","warn","resp","sizeIndex","size","ascenderHeight","descenderHeight","fontSize","iconSize","letterSpacing","lineHeight","negHeight","capHeight","iconOffset","customIconSize","Math","floor","customIconOffset","transform","marginTop","marginBottom","responsiveCodeFontStyle","responsiveHeadingFont","responsiveLabelFont","responsiveTextAlignStyle","$align","textAlign","responsiveTextFont","useArrayProp","__perf_hash__","JSON","stringify","useMemo","_getElements","element","elementsArg","ret","el","push","filter","Boolean","useClickOutside","listener","boundaryElement","arguments","undefined","setElement","useState","elements","setElements","elementsRef","useRef","useEffect","prevElements","current","nextElements","includes","handleWindowMouseDown","evt","target","Node","contains","window","addEventListener","removeEventListener","ResizeObserverBoxOptions","resizeObservers","msg","trigger","freeze","obj","Object","ResizeObserverSize","inlineSize","blockSize","this","DOMRectReadOnly","x","y","width","top","left","bottom","right","prototype","toJSON","_a","fromRect","rectangle","isSVG","SVGElement","isHidden","getBBox","_b","offsetWidth","offsetHeight","getClientRects","isElement","Element","scope","ownerDocument","defaultView","global","cache","WeakMap","scrollRegexp","verticalRegexp","IE","test","navigator","userAgent","parseDimension","pixel","parseFloat","switchSizes","zeroBoxes","devicePixelContentBoxSize","borderBoxSize","contentBoxSize","contentRect","calculateBoxSizes","forceRecalculation","has","get","set","cs","getComputedStyle","svg","ownerSVGElement","removePadding","boxSizing","writingMode","canScrollVertically","overflowY","canScrollHorizontally","overflowX","paddingTop","paddingRight","paddingBottom","paddingLeft","borderTop","borderTopWidth","borderRight","borderRightWidth","borderBottom","borderBottomWidth","horizontalPadding","verticalPadding","horizontalBorderArea","borderLeftWidth","verticalBorderArea","horizontalScrollbarThickness","clientHeight","verticalScrollbarThickness","clientWidth","widthReduction","heightReduction","contentWidth","contentHeight","borderBoxWidth","borderBoxHeight","boxes","round","devicePixelRatio","calculateBoxSize","observedBox","DEVICE_PIXEL_CONTENT_BOX","BORDER_BOX","ResizeObserverEntry","calculateDepthForNode","node","Infinity","depth","parent","parentNode","broadcastActiveObservations","shallowestDepth","callbacks","forEach","ro","activeTargets","entries","ot","entry","targetDepth","lastReportedSize","call","observer","splice","_i","callbacks_1","gatherActiveObservationsAtDepth","skippedTargets","observationTargets","isActive","process","event","hasActiveObservations","some","ErrorEvent","message","document","createEvent","initEvent","dispatchEvent","queueMicroTask","toggle_1","el_1","createTextNode","MutationObserver","cb","observe","characterData","textContent","watching","observerConfig","attributes","childList","subtree","events","time","timeout","Date","now","scheduled","scheduler","Scheduler","_this","stopped","schedule","run","until","elementsHaveResized","start","requestAnimationFrame","stop","body","name","disconnect","updateCount","n","ResizeObservation","CONTENT_BOX","tagName","type","isReplacedElement","ResizeObserverDetail","resizeObserver","observerMap","getObservationIndex","i","ResizeObserverController","connect","detail","options","firstObservation","box","unobserve","index","lastObservation","indexOf","slice","ResizeObserver","TypeError","toString","_ResizeObserver","ResizeObserverPolyfill","_elementSizeObserver","disposeCache","subscribersCache","subscribe","subscriber","subscribers","dispose","_ref","_contentRect","border","elementRect","sub","idx","_createElementSizeObserver","useElementSize","setSize","useGlobalKeyDown","onKeyDown","multiplyChannel","b","s","multiply","r","clamp","g","num","max","min","screenChannel","screen","hexToRgb","hex","hexR","hexG","hexB","parseInt","rgbToHex","_ref2","hslToRgb","hsl","l","c","abs","h","m","HSL_RE","parseColor","color","str","HEX_CHARS","isHexChars","startsWith","res","exec","parseHsl","rgba","a","rgb","createButtonTones","opts","dark","solid","muted","mode","default","button","primary","positive","caution","critical","createButtonModes","ghost","bleed","createCardStates","enabled","card","state","disabled","hovered","pressed","selected","black","white","colors","lightest","lighter","light","darker","darkest","transparent","spots","gray","red","orange","yellow","green","cyan","blue","purple","magenta","tones","bg","fg","focusRing","defaultOpts","_ref4","shadow","outline","umbra","penumbra","ambient","skeleton","from","to","_ref5","tone","bg2","accent","link","code","_ref6","_ref7","_objectSpread","_ref8","input","placeholder","selectable","_ref9","spot","_ref10","syntax","atrule","attrName","attrValue","attribute","boolean","builtin","cdata","char","class","className","comment","constant","deleted","doctype","entity","function","hexcode","id","important","inserted","keyword","number","operator","prolog","property","pseudoClass","pseudoElement","punctuation","regex","selector","string","symbol","tag","unit","url","variable","createInputModes","readOnly","invalid","createSelectableTones","_createSelectableStates","createSpot","createColorTheme","partialOpts","builders","_createColorScheme","_createColor","createSolidTones","createMutedTones","_multiply","_screen","hues","NEUTRAL_TONES","_ref11","tints","skeletonFrom","_ref12","mix","mix2","defaultTints","isNeutral","_ref13","_ref14","_ref15","_ref16","_ref17","_ref18","_ref19","mainShade","secondaryShade","studioTheme","avatar","distance","textWeight","container","offset","medium","semibold","bold","heading","label","text","radius","shadows","checkbox","radio","markSize","switch","transitionDurationMs","transitionTimingFunction","DEFAULT_THEME_LAYER","dialog","zOffset","popover","tooltip","globalScope","globalThis","self","getGlobalScope","Symbol","for","createContext","ThemeContext","ThemeProvider","parentTheme","useContext","children","scheme","themeProp","rootColor","layer","rootLayer","restTheme","_excluded","colorScheme","version","jsx","Provider","StyledThemeProvider","isRecord","useRootTheme","ThemeColorProvider","root","useTheme","useStyledTheme","MEDIA_MANAGER_CACHE","_getMediaQuery","_getMediaManager","manager","mediaLen","mediaQuery","mq","matchMedia","getCurrentIndex","matches","disposeFns","handleChange","addListener","removeListener","disposeFn","_createMediaManager","useMediaIndex","setIndex","useIsomorphicEffect","useLayoutEffect","useForwardedRef","ref","innerRef","useCustomValidity","customValidity","setCustomValidity","BORDER_VALUE","$border","$borderTop","$borderRight","$borderBottom","borderLeft","$borderLeft","BASE_STYLE","listStyle","BOX_SIZING","BOX_HEIGHT","stretch","fill","responsiveBoxDisplayStyle","$display","responsiveBoxSizingStyle","$sizing","sizing","responsiveBoxHeightStyle","$height","responsiveBoxOverflowStyle","$overflow","overflow","responsiveFlexAlignStyle","align","alignItems","responsiveFlexGapStyle","$gap","gap","responsiveFlexWrapStyle","$wrap","wrap","flexWrap","responsiveFlexJustifyStyle","$justify","justify","justifyContent","responsiveFlexDirectionStyle","$direction","direction","flexDirection","minWidth","minHeight","flexItemStyle","responsiveFlexItemStyle","$flex","flex","focusRingBorderStyle","focusRingStyle","focusRingOutsetWidth","focusRingInsetWidth","bgColor","join","GRID_CSS","GRID_AUTO_COLUMS","auto","fr","GRID_AUTO_ROWS","responsiveGridAutoFlowStyle","$autoFlow","autoFlow","gridAutoFlow","responsiveGridAutoRowsStyle","$autoRows","autoRows","gridAutoRows","responsiveGridAutoColsStyle","$autoCols","autoCols","gridAutoColumns","responsiveGridColumnsStyle","$columns","columns","gridTemplateColumns","responsiveGridRowsStyle","$rows","rows","gridTemplateRows","responsiveGridGapStyle","gridGap","responsiveGridGapXStyle","$gapX","gapX","columnGap","responsiveGridGapYStyle","$gapY","gapY","rowGap","GRID_ITEM_ROW","full","GRID_ITEM_COLUMN","responsiveGridItemRowStyle","$row","row","gridRow","responsiveGridItemRowStartStyle","$rowStart","rowStart","gridRowStart","responsiveGridItemRowEndStyle","$rowEnd","rowEnd","gridRowEnd","responsiveGridItemColumnStyle","$column","column","gridColumn","responsiveGridItemColumnStartStyle","$columnStart","columnStart","gridColumnStart","responsiveGridItemColumnEndStyle","$columnEnd","columnEnd","gridColumnEnd","responsiveInputPaddingStyle","$fontSize","$iconLeft","$iconRight","$padding","$space","spaceScale","len","_padding","_space","_fontSize","_","emSize","p","styles","responsiveInputPaddingIconRightStyle","ROOT_STYLE","css","_templateObject","_taggedTemplateLiteral","textInputRootStyle","textInputBaseStyle","$scheme","$tone","font","_templateObject2","textInputFontSizeStyle","textInputRepresentationStyle","$hasPrefix","$hasSuffix","responsivePaddingStyle","$paddingX","$paddingY","$paddingTop","$paddingRight","$paddingBottom","$paddingLeft","responsiveRadiusStyle","$radius","radiusIndex","borderRadius","toBoxShadow","Root","styled","div","$accent","$muted","_templateObject4","_templateObject5","_templateObject6","SpanWithTextOverflow","span","_templateObject7","Text","forwardRef","childrenProp","textOverflow","weight","restProps","_excluded2","avatarStyle","$color","backgroundColor","userSelect","boxShadow","opacity","appearance","zIndex","transition","strokeWidth","stroke","strokeSasharray","strokeLinecap","textTransform","avatarSize","Arrow","BgStroke","ellipse","Stroke","Initials","Avatar","as","asProp","colorKey","src","title","initials","onImageLoadError","arrowPosition","arrowPositionProp","animateArrowFrom","status","sizeProp","_excluded3","ReactIs","isValidElementType","_sizeRem","_radius","elementId","useId","setArrowPosition","imageFailed","setImageFailed","imageId","raf","cancelAnimationFrame","handleImageError","useCallback","initialsSize","jsxs","viewBox","d","patternContentUnits","href","onError","cx","cy","rx","ry","vectorEffect","Fragment","_templateObject8","AvatarCounter","count","counterSize","childrenToElementArray","childrenArray","isFragment","BASE_STYLES","_templateObject9","marginLeft","AvatarStack","maxLength","maxLengthProp","_excluded4","child","extraCount","visibleChildren","childIndex","cloneElement","String","$margin","$marginX","$marginY","$marginTop","$marginRight","$marginBottom","$marginLeft","Box","marginX","marginY","marginRight","paddingX","paddingY","_excluded5","_templateObject10","_templateObject11","_templateObject12","_templateObject13","Label","_excluded6","$mode","palette","cursor","Badge","_excluded7","Flex","_excluded8","forwardedAs","rotate","keyframes","_templateObject14","Spinner","SpinnerIcon","_colorVarsStyle","checkered","_c","_d","_e","_f","_g","_h","buttonTheme","_templateObject16","LoadingBox","_templateObject17","Button","icon","iconRight","justifyProp","loading","paddingProp","paddingXProp","paddingYProp","paddingTopProp","paddingBottomProp","paddingLeftProp","paddingRightProp","radiusProp","spaceProp","_excluded9","boxProps","isValidElement","createElement","cardBaseStyle","$checkered","cardColorStyle","$focusRing","_templateObject20","$shadow","shadowStyle","Card","__unstable_checkered","__unstable_focusRing","toneProp","_excluded10","rootTheme","_templateObject21","Input","_templateObject22","Checkbox","forwardedRef","checked","indeterminate","_excluded11","CheckmarkIcon","RemoveIcon","codeSyntaxHighlightingStyle","_ref20","pre","_templateObject23","Code","language","languageProp","_excluded12","registered","Refractor","hasLanguage","inline","responsiveContainerWidthStyle","$width","maxWidth","Container","_excluded13","Grid","_excluded14","_templateObject25","_templateObject26","_templateObject27","Heading","_excluded15","verticalAlign","Inline","_excluded16","kbd","_templateObject28","KBD","_excluded17","BoundaryElementContext","DEFAULT_VALUE","useBoundaryElement","ElementQuery","_excluded18","elementSize","innerWidth","findMaxBreakpoints","findMinBreakpoints","setRef","ErrorBoundary","Component","constructor","super","error","getDerivedStateFromError","componentDidCatch","info","onCatch","render","LayerContext","useLayer","LayerProvider","zOffsetProp","maxMediaIndex","registerChild","v","parentRegisterChild","isTopLayer","_templateObject29","LayerChildren","_excluded19","Layer","_excluded20","elementKey","defaultContextValue","setAttribute","appendChild","PortalContext","usePortal","Portal","__unstable_name","portal","portalElement","createPortal","useUnique","valueRef","objA","objB","keysA","keysB","every","_isEqual","__BROWSER__","_templateObject30","SrOnly","_raf","fn","frameId","_isEnterToClickElement","isHTMLAnchorElement","isHTMLButtonElement","isHTMLElement","nodeType","ELEMENT_NODE","nodeName","isHTMLInputElement","isHTMLSelectElement","isHTMLTextAreaElement","_hasFocus","activeElement","isFocusable","tabIndex","getAttribute","rel","attemptFocus","focus","focusFirstDescendant","childNodes","focusLastDescendant","_isScrollable","_templateObject31","ItemWrapper","_templateObject32","VirtualList","getItemKey","items","onChange","renderItem","_excluded21","wrapperRef","scrollTop","setScrollTop","scrollHeight","setScrollHeight","itemHeight","setItemHeight","firstElement","firstChild","HTMLElement","_scrollEl","scrollEl","handleScroll","passive","scrollY","handleResize","innerHeight","fromIndex","toIndex","ceil","item","_itemIndex","itemIndex","wrapperStyle","_templateObject33","BorderPath","path","_templateObject34","ShapePath","_templateObject35","PopoverArrow","xmlns","usePopoverModifiers","allowedAutoPlacements","arrow","arrowElement","constrainSize","fallbackPlacements","margins","matchReferenceWidth","open","preventOverflow","skidding","tether","tetherOffset","detectOverflowOptions","altAxis","boundary","maxSizeModifier","phase","requires","_ref21","modifiersData","maxSize","popper","maxHeight","_ref22","rects","reference","_ref23","effect","_ref24","refElement","getPopoverModifiers","_ref25","$preventOverflow","_templateObject36","_templateObject37","PopoverCard","_ref26","$constrainSize","_templateObject38","Popover","boundaryElementContext","__unstable_margins","boundaryElementProp","placement","portalProp","referenceElement","referenceElementProp","widthProp","_excluded22","setReferenceElement","popperElement","setPopperElement","setArrowElement","popperReferenceElement","modifiers","usePopper","forceUpdate","childRef","setRootRef","popoverStyle","updateTimeoutRef","clearTimeout","setTimeout","_templateObject39","dist","Radio","_excluded23","inputBaseStyle","inputColorStyle","_templateObject43","inputTextSizeStyle","textSize","selectStyle","_templateObject41","_templateObject44","select","IconBox","Select","_excluded24","SelectIcon","Stack","_excluded25","_templateObject45","_templateObject46","Representation","_templateObject47","Track","_templateObject48","Thumb","$indeterminate","trackWidth","trackHeight","trackPadding","checkedOffset","indeterminateOffset","$checked","_templateObject50","Switch","_excluded26","InputRoot","_templateObject52","textarea","Presentation","TextArea","_excluded27","CLEAR_BUTTON_BOX_STYLE","attrs","_templateObject53","Prefix","_templateObject54","Suffix","_templateObject55","LeftBox","_templateObject56","RightBox","_templateObject57","RightCard","_templateObject58","TextInput","clearButton","fontSizeProp","onClear","prefix","suffix","_excluded28","$hasClearButton","$hasIcon","$hasIconRight","handleClearMouseDown","preventDefault","stopPropagation","handleClearClick","prefixNode","presentationNode","clearButtonBoxPadding","clearButtonPadding","clearButtonProps","clearButtonNode","CloseIcon","onClick","onMouseDown","suffixNode","_templateObject59","Border","_templateObject60","Shape","_templateObject61","TooltipArrow","_templateObject62","Tooltip","fallbackPlacementsProp","_excluded29","isOpen","setIsOpen","handleBlur","handleFocus","handleMouseEnter","handleMouseLeave","handleWindowMouseMove","referenceProps","onBlur","onFocus","onMouseEnter","onMouseLeave","referenceNode","popperNode","_templateObject63","ListBox","_templateObject64","ResultsPopover","_templateObject65","_templateObject66","AnimatedSpinnerIcon","_templateObject67","AutocompleteOption","onSelect","handleClick","handleKeyDown","currentTarget","role","autocompleteReducer","activeValue","focused","query","listFocused","AUTOCOMPLETE_LISTBOX_IGNORE_KEYS","AUTOCOMPLETE_POPOVER_MARGINS","AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS","defaultRenderValue","option","defaultFilterOption","toLowerCase","InnerAutocomplete","filterOption","filterOptionProp","listBox","onQueryChange","openButton","optionsProp","relatedElements","renderOption","renderOptionProp","renderPopover","renderValue","valueProp","_excluded30","dispatch","useReducer","defaultRenderOption","_ref27","rootElementRef","resultsPopoverElementRef","inputElementRef","listBoxElementRef","listFocusedRef","valuePropRef","popoverMouseWithinRef","listBoxId","currentOption","find","o","filteredOptions","filteredOptionsLen","activeItemId","expanded","handleRootBlur","focusInside","e","handleRootFocus","listBoxElement","focusedElement","handleOptionSelect","handleRootKeyDown","activeOption","activeIndex","nextActiveOption","listEl","handleInputChange","nextQuery","handleInputFocus","handlePopoverMouseEnter","handlePopoverMouseLeave","handleClearButtonClick","handleClearButtonFocus","listElement","activeItemElement","openButtonBoxPadding","openButtonPadding","openButtonProps","handleOpenClick","openButtonNode","ChevronDownIcon","inputValue","autoCapitalize","autoComplete","autoCorrect","inputMode","spellCheck","handleListBoxKeyDown","active","results","hidden","inputElement","Autocomplete","ol","_templateObject68","ExpandButton","_templateObject69","Breadcrumbs","separator","spaceRaw","_excluded31","setOpen","expandElement","setExpandElement","popoverElement","setPopoverElement","collapse","expand","rawItems","Children","toArray","beforeLength","afterLength","DialogContext","useDialog","_ref28","background","$position","DialogContainer","_templateObject70","DialogCardRoot","_templateObject71","DialogLayout","_templateObject72","DialogHeader","_templateObject73","DialogContent","_templateObject74","DialogFooter","_templateObject75","DialogCard","__unstable_autoFocus","autoFocus","__unstable_hideCloseButton","hideCloseButton","contentRef","footer","header","onClickOutside","onClose","shadowProp","rootElement","setRootElement","localContentRef","labelId","showCloseButton","showHeader","setContentRef","Dialog","cardRadius","cardRadiusProp","cardShadow","positionProp","_excluded32","preDivRef","postDivRef","cardRef","cardElement","_templateObject76","Key","_templateObject77","Hotkeys","_excluded33","MenuContext","_isFocusable","_getFocusableElements","_getDOMPath","parentElement","unshift","EMPTY_PATH","useMenuController","originElement","shouldFocus","_setActiveIndex","activeIndexRef","mounted","setActiveIndex","nextActiveIndex","mount","sort","aIndex","bIndex","_sortElements","selectedIndex","focusableElements","focusableLen","focusedIndex","currentIndex","handleItemMouseEnter","handleItemMouseLeave","rafId","_activeIndex","_templateObject78","Menu","focusFirst","focusLast","onEscape","onItemClick","onItemSelect","registerElement","_excluded34","handleRefChange","onItemMouseEnter","onItemMouseLeave","MenuButton","__unstable_disableRestoreFocusOnClose","disableRestoreFocusOnClose","deprecated_boundaryElement","buttonProp","menu","menuProp","deprecated_placement","popoverScheme","deprecated_popoverScheme","deprecated_portal","popoverRadius","deprecated_popoverRadius","deprecated_preventOverflow","setShouldFocus","buttonElement","setButtonElement","menuElements","setChildMenuElements","openRef","handleButtonClick","handleButtonKeyDown","handleMenuClickOutside","handleMenuEscape","relatedTarget","handleItemClick","els","_el","menuProps","onBlurCapture","setButtonRef","popoverProps","MenuDivider","hr","_templateObject79","Selectable","_templateObject80","_templateObject81","useMenu","MenuItem","hotkeys","selectedProp","_excluded36","paddingProps","keyframe","_templateObject82","animation","_templateObject83","skeletonStyle","_templateObject84","_ref29","$visible","_ref30","$animated","_templateObject85","Skeleton","animated","delay","_excluded37","visible","setVisible","_ref31","$style","TextSkeleton","_excluded38","LabelSkeleton","_excluded39","HeadingSkeleton","_excluded40","CodeSkeleton","_excluded41","Tab","_excluded42","elementRef","focusedRef","_isReactElement","TabList","_excluded43","setFocusedIndex","tabs","handleTabFocus","numTabs","tabIdx","prevIndex","TabPanel","_excluded44","STATUS_CARD_TONE","warning","success","ROLES","_templateObject86","TextBox","_templateObject87","Toast","closable","description","_excluded45","cardTone","ToastContext","_templateObject88","ToastContainer","_templateObject89","toastId","_focusItemElement","TreeContext","Tree","memo","_excluded46","setFocusedElement","focusedElementRef","itemElements","setItemElements","setState","stateRef","registerItem","path2","newState","setExpanded","itemState","contextValue","level","focusedKey","itemKey","itemPath","split","pop","parentKey","parentState","prevEl","segments","j","_findPrevItemElement","nextEl","_findNextItemElement","_itemElements","querySelectorAll","useTree","tree","displayName","TreeGroup","_excluded47","li","_templateObject90","_templateObject91","TreeItemBox","$level","_templateObject92","ToggleArrowText","_templateObject93","TreeItem","expandedProp","idProp","_excluded48","rootRef","treeitemRef","_id","closest","click","visibility","pointerEvents","ToggleArrowRightIcon","_excluded35","shouldFocusRef","withinMenu","setWithinMenu","handleMenuKeyDown","handleChildItemClick","handleMenuMouseEnter","childMenu","ChevronRightIcon","__unstable_elements","elementsProp","toasts","toastsRef","params","duration","dismiss","timeoutId","prevState","findIndex","t","AnimatePresence","initial","_ref32","motion","animate","scale","exit","layout","damping","stiffness","innerDispose","outerDispose","_ref3","cmin","cmax","delta","toFixed","setDark"],"mappings":"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"}