@sanity/ui 0.38.2-next.4 → 0.38.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/sanity-ui.cjs +260 -9740
- package/dist/sanity-ui.cjs.map +1 -1
- package/dist/sanity-ui.js +260 -9614
- package/dist/sanity-ui.js.map +1 -1
- package/package.json +12 -10
- package/src/components/menu/menu.test.tsx +4 -3
- package/src/components/toast/toast.test.tsx +4 -3
- package/src/primitives/avatar/avatar.tsx +7 -1
- package/src/styles/font/responsiveFont.ts +0 -13
- package/src/styles/helpers.ts +1 -1
- package/src/theme/theme.test.tsx +4 -3
- package/src/utils/boundaryElement/boundaryElement.test.tsx +4 -3
- package/src/utils/layer/layer.test.tsx +4 -3
- package/src/utils/portal/portal.test.tsx +4 -3
- package/src/primitives/badge/badge.test.tsx +0 -14
- package/src/primitives/button/button.test.tsx +0 -42
package/dist/sanity-ui.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanity-ui.cjs","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","../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/muted/createMuted.ts","../src/theme/lib/theme/color/selectable/createSelectableTones.ts","../src/theme/lib/theme/color/solid/createSolidTones.ts","../src/theme/lib/theme/color/spot/createSpot.ts","../src/theme/lib/theme/color/factory.ts","../src/theme/studioTheme/helpers.ts","../src/theme/studioTheme/color.ts","../src/theme/studioTheme/fonts.ts","../src/theme/studioTheme/theme.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/margin/marginStyle.ts","../src/styles/padding/paddingStyle.ts","../src/styles/radius/radiusStyle.ts","../src/styles/shadow/shadowStyle.ts","../src/primitives/text/styles.ts","../src/primitives/text/text.tsx","../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/primitives/label/styles.ts","../src/primitives/label/label.tsx","../src/primitives/badge/styles.ts","../src/primitives/badge/badge.tsx","../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/styles.ts","../src/primitives/checkbox/checkbox.tsx","../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/styles.ts","../src/primitives/heading/heading.tsx","../src/primitives/inline/styles.ts","../src/primitives/inline/inline.tsx","../src/primitives/kbd/kbd.tsx","../src/utils/boundaryElement/boundaryElementContext.ts","../src/utils/boundaryElement/boundaryElementProvider.tsx","../src/utils/boundaryElement/useBoundaryElement.ts","../src/utils/elementQuery/helpers.ts","../src/utils/elementQuery/elementQuery.tsx","../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/getPopoverModifiers.ts","../src/primitives/popover/modifiers/usePopoverModifiers.ts","../src/primitives/popover/popover.tsx","../src/primitives/radio/styles.ts","../src/primitives/radio/radio.tsx","../src/primitives/select/styles.ts","../src/primitives/select/select.tsx","../src/primitives/stack/styles.ts","../src/primitives/stack/stack.tsx","../src/primitives/switch/styles.ts","../src/primitives/switch/switch.tsx","../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/styles.ts","../src/components/dialog/dialogContext.ts","../src/components/dialog/useDialog.ts","../src/components/dialog/dialog.tsx","../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/style.ts","../src/primitives/_selectable/selectable.tsx","../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/style.ts","../src/components/tree/useTree.ts","../src/components/tree/treeGroup.tsx","../src/components/tree/treeItem.tsx"],"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","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 {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 {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 {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 {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 {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 {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 {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 {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 React, {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 React from 'react'\nimport {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 React, {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 {ResponsiveMarginStyleProps} from './types'\n\nexport function responsiveMarginStyle(\n props: ResponsiveMarginStyleProps & ThemeProps\n): CSSObject[][] {\n const {theme} = props\n\n return [\n _getResponsiveSpace(theme, ['margin'], props.$margin),\n _getResponsiveSpace(theme, ['marginLeft', 'marginRight'], props.$marginX),\n _getResponsiveSpace(theme, ['marginTop', 'marginBottom'], props.$marginY),\n _getResponsiveSpace(theme, ['marginTop'], props.$marginTop),\n _getResponsiveSpace(theme, ['marginRight'], props.$marginRight),\n _getResponsiveSpace(theme, ['marginBottom'], props.$marginBottom),\n _getResponsiveSpace(theme, ['marginLeft'], props.$marginLeft),\n ].filter(Boolean) as CSSObject[][]\n}\n","import {CSSObject} from '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 {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 React, {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 {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 {useId} from '@reach/auto-id'\nimport React, {forwardRef, useCallback, useEffect, 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 href={src} width=\"1\" height=\"1\" onError={handleImageError} />\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 React, {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 React, {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 React, {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 {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 React, {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 {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 React, {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 React, {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 React, {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 React, {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.ComponentType | React.ReactNode\n iconRight?: React.ComponentType | 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 React, {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 {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 {CheckmarkIcon, RemoveIcon} from '@sanity/icons'\nimport React, {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, 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 React, {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 React, {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 React, {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 {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 React, {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 {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 React, {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 React, {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 React, {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","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 React, {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","import React from 'react'\nimport {Code} from '../primitives/code'\n\n/**\n * DO NOT USE IN PRODUCTION\n * @beta\n */\nexport interface ErrorBoundaryProps {\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 React.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 React, {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 React, {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 React from 'react'\nimport ReactDOM 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 ReactDOM.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 React, {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 React, {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 React, {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 React, {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 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 {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 React, {\n cloneElement,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} 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 {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 React, {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, 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 React, {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 React, {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 {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 React, {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 React, {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 React, {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.ComponentType | React.ReactNode\n iconRight?: React.ComponentType | 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 React, {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 React, {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 React, {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 // prevent unnecessary re-render\n if (state.listFocused === msg.listFocused) return state\n\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 React, {\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.ComponentType | 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 focusedElementRef = useRef<HTMLElement | null>(null)\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\n focusedElementRef.current = focusedElement\n\n const nextListFocused = Boolean(\n listBoxElement && focusedElement && listBoxElement.contains(focusedElement)\n )\n\n dispatch({type: 'root/setListFocused', listFocused: nextListFocused})\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 React, {\n Children,\n forwardRef,\n Fragment,\n isValidElement,\n useCallback,\n useMemo,\n useState,\n} from 'react'\nimport {useArrayProp, useClickOutside} from '../../hooks'\nimport {Box, Popover, Stack, Text} from '../../primitives'\nimport {ExpandButton, Root} from './breadcrumbs.styles'\n\n/**\n * @beta\n */\nexport interface BreadcrumbsProps {\n maxLength?: number\n separator?: React.ReactNode\n space?: number | number[]\n}\n\n/**\n * @beta\n */\nexport const Breadcrumbs = forwardRef(function Breadcrumbs(\n props: BreadcrumbsProps & Omit<React.HTMLProps<HTMLOListElement>, 'as' | 'ref' | 'type'>,\n ref: React.ForwardedRef<HTMLOListElement>\n) {\n const {children, maxLength, separator, space: spaceRaw = 2, ...restProps} = props\n const space = useArrayProp(spaceRaw)\n const [open, setOpen] = useState(false)\n const [expandElement, setExpandElement] = useState<HTMLButtonElement | null>(null)\n const [popoverElement, setPopoverElement] = useState<HTMLDivElement | null>(null)\n\n const collapse = useCallback(() => setOpen(false), [])\n const expand = useCallback(() => setOpen(true), [])\n\n useClickOutside(collapse, [expandElement, popoverElement])\n\n const rawItems = useMemo(\n () =>\n Children.toArray(children).filter((child) => {\n return isValidElement(child)\n }),\n [children]\n )\n\n const items = useMemo(() => {\n const len = rawItems.length\n\n if (maxLength && len > maxLength) {\n const beforeLength = Math.ceil(maxLength / 2)\n const afterLength = Math.floor(maxLength / 2)\n\n return [\n ...rawItems.slice(0, beforeLength - 1),\n <Popover\n constrainSize\n content={\n <Stack as=\"ol\" overflow=\"auto\" padding={space} space={space}>\n {rawItems.slice(beforeLength - 1, len - afterLength)}\n </Stack>\n }\n key=\"button\"\n open={open}\n placement=\"top\"\n portal\n ref={setPopoverElement}\n >\n <ExpandButton\n fontSize={1}\n mode=\"bleed\"\n onClick={open ? collapse : expand}\n padding={1}\n ref={setExpandElement}\n selected={open}\n text=\"…\"\n />\n </Popover>,\n ...rawItems.slice(len - afterLength),\n ]\n }\n\n return rawItems\n }, [collapse, expand, maxLength, open, rawItems, space])\n\n return (\n <Root data-ui=\"Breadcrumbs\" {...restProps} ref={ref}>\n {items.map((item, itemIndex) => (\n <Fragment key={itemIndex}>\n {itemIndex > 0 && (\n <Box aria-hidden as=\"li\" paddingX={space}>\n {separator || <Text muted>/</Text>}\n </Box>\n )}\n <Box as=\"li\">{item}</Box>\n </Fragment>\n ))}\n </Root>\n )\n})\n","import {CSSObject} 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 {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 React, {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 React, {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 React, {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) => {\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 React, {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 React, {\n cloneElement,\n forwardRef,\n useCallback,\n useMemo,\n useState,\n useEffect,\n useRef,\n} 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 {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 styled from 'styled-components'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/radius'\nimport {Box} from '../box'\nimport {selectableBaseStyle, selectableColorStyle, SelectableStyleProps} from './style'\n\n/**\n * @internal\n */\nexport const Selectable = styled(Box)<SelectableStyleProps & ResponsiveRadiusStyleProps>(\n responsiveRadiusStyle,\n selectableBaseStyle,\n selectableColorStyle\n)\n","import {useContext} from 'react'\nimport {isRecord} from '../../lib/isRecord'\nimport {MenuContext, MenuContextValue} from './menuContext'\n\nexport function useMenu(): MenuContextValue {\n const value = useContext(MenuContext)\n\n if (!value) {\n throw new Error('useMenu(): missing context value')\n }\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (!isRecord(value) || value.version !== 0.0) {\n throw new Error('useMenu(): the context value is not compatible')\n }\n\n return value\n}\n","import {ChevronRightIcon} from '@sanity/icons'\nimport React, {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.ComponentType | 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 React, {\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.ComponentType | React.ReactNode\n iconRight?: React.ComponentType | 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 React, {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 React, {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 React, {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.ComponentType | 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 React, {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 React, {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 React from 'react'\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 React, {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 React, {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 {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 {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 React, {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 {useId} from '@reach/auto-id'\nimport {ToggleArrowRightIcon} from '@sanity/icons'\nimport React, {createElement, memo, useCallback, useEffect, 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.ComponentType\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(idProp) || idProp\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"],"names":["fontSize","useMemo","useState","useRef","useEffect","ResizeObserverPolyfill","multiply","clamp","screen","tones","__spreadProps","__spreadValues","_multiply","_screen","hues","tints","skeletonFrom","white","black","bg","key","createContext","useContext","__objRest","React","StyledThemeProvider","useStyledTheme","useLayoutEffect","BASE_STYLE","css","Root","styled","SpanWithTextOverflow","forwardRef","Text","Avatar","ReactIs","useId","useCallback","AvatarCounter","isElement","isFragment","AvatarStack","cloneElement","Box","Label","Badge","Flex","rotate","keyframes","Spinner","SpinnerIcon","Button","isValidElement","isValidElementType","createElement","Card","Input","Checkbox","CheckmarkIcon","RemoveIcon","Code","Refractor","Container","Grid","Heading","Inline","KBD","ElementQuery","_a","LayerChildren","Layer","ReactDOM","SrOnly","VirtualList","handleScroll","PopoverArrow","maxSizeModifier","Popover","usePopper","Radio","Select","SelectIcon","Stack","Switch","InputRoot","Presentation","TextArea","TextInput","CloseIcon","TooltipArrow","Tooltip","InnerAutocomplete","useReducer","value","ChevronDownIcon","Breadcrumbs","Children","Fragment","DialogCard","Dialog","Hotkeys","Menu","MenuButton","ChevronRightIcon","MenuItem","Skeleton","TextSkeleton","Tab","TabList","TabPanel","AnimatePresence","motion","memo","Tree","path","itemState","TreeGroup","TreeItem","ToggleArrowRightIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sanity-ui.cjs","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","../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 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","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 React, {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 React from 'react'\nimport {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 React, {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 React, {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 {useId} from '@reach/auto-id'\nimport React, {forwardRef, useCallback, useEffect, 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 React, {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 React, {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 React, {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 React, {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 React, {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 React, {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 React, {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 React, {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.ComponentType | React.ReactNode\n iconRight?: React.ComponentType | 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 React, {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 React, {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 React, {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 React, {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 React, {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 React, {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 React, {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 React, {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 React, {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 React from 'react'\nimport {Code} from '../primitives/code'\n\n/**\n * DO NOT USE IN PRODUCTION\n * @beta\n */\nexport interface ErrorBoundaryProps {\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 React.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 React, {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 React, {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 React from 'react'\nimport ReactDOM 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 ReactDOM.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 React, {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 React, {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 React, {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 React, {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 React, {\n cloneElement,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} 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 React, {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 React, {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 React, {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 React, {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 React, {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 React, {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.ComponentType | React.ReactNode\n iconRight?: React.ComponentType | 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 React, {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 React, {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 React, {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 // prevent unnecessary re-render\n if (state.listFocused === msg.listFocused) return state\n\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 React, {\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.ComponentType | 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 focusedElementRef = useRef<HTMLElement | null>(null)\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\n focusedElementRef.current = focusedElement\n\n const nextListFocused = Boolean(\n listBoxElement && focusedElement && listBoxElement.contains(focusedElement)\n )\n\n dispatch({type: 'root/setListFocused', listFocused: nextListFocused})\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 React, {\n Children,\n forwardRef,\n Fragment,\n isValidElement,\n useCallback,\n useMemo,\n useState,\n} 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 React, {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 React, {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) => {\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 React, {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 React, {\n cloneElement,\n forwardRef,\n useCallback,\n useMemo,\n useState,\n useEffect,\n useRef,\n} 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 React, {\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.ComponentType | React.ReactNode\n iconRight?: React.ComponentType | 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 React, {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 React, {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 React, {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.ComponentType | 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 React, {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 React, {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 React from 'react'\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 React, {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 React, {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 React, {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 {useId} from '@reach/auto-id'\nimport {ToggleArrowRightIcon} from '@sanity/icons'\nimport React, {createElement, memo, useCallback, useEffect, 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.ComponentType\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(idProp) || idProp\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 React, {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 React, {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 React, {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.ComponentType | 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","map","statement","mediaIndex","_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","position","fontFamily","padding","margin","content","display","height","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","setElement","useState","elements","setElements","elementsRef","useRef","useEffect","prevElements","current","nextElements","includes","handleWindowMouseDown","evt","target","Node","contains","window","addEventListener","removeEventListener","_ResizeObserver","ResizeObserver","ResizeObserverPolyfill","_elementSizeObserver","disposeCache","WeakMap","subscribersCache","subscribe","subscriber","subscribers","get","dispose","has","set","resizeObserver","entry","_contentRect","contentRect","border","width","borderBoxSize","inlineSize","blockSize","observe","unobserve","disconnect","elementRect","sub","idx","indexOf","splice","_createElementSizeObserver","useElementSize","setSize","useGlobalKeyDown","onKeyDown","multiplyChannel","b","s","multiply","r","round","clamp","g","num","max","min","screenChannel","screen","hexToRgb","hex","hexR","slice","hexG","hexB","parseInt","rgbToHex","toString","hslToRgb","hsl","l","c","abs","x","h","m","HSL_RE","parseColor","color","str","isHexChars","startsWith","res","exec","parseFloat","parseHsl","rgba","a","rgb","createButtonTones","opts","base","dark","solid","muted","mode","default","button","primary","positive","caution","critical","createButtonModes","ghost","bleed","createCardStates","name","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","shadow","outline","umbra","penumbra","ambient","skeleton","from","to","tone","bg2","accent","link","code","_objectSpread","input","placeholder","selectable","spot","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","tints","skeletonFrom","mix","mix2","defaultTints","isNeutral","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","global","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","index","_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","$borderTop","borderRight","$borderRight","borderBottom","$borderBottom","borderLeft","$borderLeft","BASE_STYLE","listStyle","BOX_SIZING","BOX_HEIGHT","stretch","fill","responsiveBoxDisplayStyle","$display","responsiveBoxSizingStyle","$sizing","sizing","boxSizing","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","i","_","emSize","p","styles","paddingTop","paddingRight","paddingBottom","paddingLeft","responsiveInputPaddingIconRightStyle","ROOT_STYLE","css","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","SpanWithTextOverflow","span","Text","forwardRef","childrenProp","textOverflow","weight","restProps","_excluded2","avatarStyle","$color","backgroundColor","userSelect","boxShadow","opacity","appearance","zIndex","transition","left","right","top","bottom","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","requestAnimationFrame","cancelAnimationFrame","handleImageError","useCallback","initialsSize","jsxs","viewBox","d","patternContentUnits","href","onError","cx","cy","rx","ry","vectorEffect","Fragment","AvatarCounter","count","counterSize","childrenToElementArray","node","isElement","isFragment","BASE_STYLES","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","Label","_excluded6","$mode","palette","cursor","Badge","_excluded7","Flex","_excluded8","forwardedAs","rotate","keyframes","Spinner","SpinnerIcon","_colorVarsStyle","checkered","_a","_b","_c","_d","_e","_f","_g","_h","buttonTheme","LoadingBox","Button","icon","iconRight","justifyProp","loading","paddingProp","paddingXProp","paddingYProp","paddingTopProp","paddingBottomProp","paddingLeftProp","paddingRightProp","radiusProp","spaceProp","type","_excluded9","boxProps","isValidElement","createElement","cardBaseStyle","$checkered","cardColorStyle","$focusRing","$shadow","shadowStyle","Card","__unstable_checkered","__unstable_focusRing","toneProp","_excluded10","rootTheme","Input","Checkbox","forwardedRef","checked","indeterminate","_excluded11","CheckmarkIcon","RemoveIcon","codeSyntaxHighlightingStyle","pre","Code","language","languageProp","_excluded12","registered","Refractor","hasLanguage","inline","responsiveContainerWidthStyle","$width","maxWidth","Container","_excluded13","Grid","_excluded14","Heading","_excluded15","verticalAlign","Inline","_excluded16","kbd","KBD","_excluded17","BoundaryElementContext","DEFAULT_VALUE","useBoundaryElement","ElementQuery","_excluded18","elementSize","innerWidth","findMaxBreakpoints","findMinBreakpoints","setRef","ErrorBoundary","React","Component","constructor","super","arguments","this","error","componentDidCatch","info","onCatch","render","message","LayerContext","useLayer","LayerProvider","zOffsetProp","parent","maxMediaIndex","registerChild","v","parentRegisterChild","isTopLayer","LayerChildren","_excluded19","Layer","_excluded20","elementKey","defaultContextValue","document","setAttribute","body","appendChild","PortalContext","usePortal","Portal","__unstable_name","portal","portalElement","ReactDOM","createPortal","useUnique","valueRef","objA","objB","keysA","Object","keysB","every","_isEqual","__BROWSER__","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","Element","getComputedStyle","overflowX","overflowY","ItemWrapper","VirtualList","getItemKey","items","onChange","renderItem","_excluded21","wrapperRef","scrollTop","setScrollTop","scrollHeight","setScrollHeight","itemHeight","setItemHeight","firstElement","firstChild","HTMLElement","offsetHeight","_scrollEl","parentNode","scrollEl","handleScroll","passive","ro","entries","scrollY","handleResize","innerHeight","fromIndex","toIndex","ceil","item","_itemIndex","itemIndex","wrapperStyle","BorderPath","path","ShapePath","PopoverArrow","xmlns","usePopoverModifiers","allowedAutoPlacements","arrow","arrowElement","constrainSize","fallbackPlacements","margins","matchReferenceWidth","open","preventOverflow","skidding","tether","tetherOffset","detectOverflowOptions","altAxis","boundary","maxSizeModifier","options","phase","requires","modifiersData","maxSize","popper","maxHeight","rects","reference","y","effect","refElement","offsetWidth","getPopoverModifiers","$preventOverflow","PopoverCard","$constrainSize","Popover","boundaryElementContext","__unstable_margins","boundaryElementProp","placement","portalProp","referenceElement","referenceElementProp","widthProp","_excluded22","setReferenceElement","popperElement","setPopperElement","setArrowElement","popperReferenceElement","modifiers","usePopper","attributes","forceUpdate","childRef","setRootRef","popoverStyle","updateTimeoutRef","clearTimeout","setTimeout","dist","Radio","_excluded23","inputBaseStyle","inputColorStyle","inputTextSizeStyle","textSize","selectStyle","select","IconBox","Select","_excluded24","SelectIcon","Stack","_excluded25","Representation","Track","Thumb","$indeterminate","trackWidth","trackHeight","trackPadding","checkedOffset","indeterminateOffset","$checked","Switch","_excluded26","InputRoot","textarea","Presentation","TextArea","_excluded27","CLEAR_BUTTON_BOX_STYLE","attrs","Prefix","Suffix","LeftBox","RightBox","RightCard","TextInput","clearButton","fontSizeProp","onClear","prefix","suffix","_excluded28","$hasClearButton","$hasIcon","$hasIconRight","handleClearMouseDown","event","preventDefault","stopPropagation","handleClearClick","prefixNode","presentationNode","clearButtonBoxPadding","clearButtonPadding","clearButtonProps","clearButtonNode","CloseIcon","onClick","onMouseDown","suffixNode","Border","Shape","TooltipArrow","Tooltip","fallbackPlacementsProp","_excluded29","isOpen","setIsOpen","handleBlur","handleFocus","handleMouseEnter","handleMouseLeave","handleWindowMouseMove","referenceProps","onBlur","onFocus","onMouseEnter","onMouseLeave","referenceNode","popperNode","ListBox","ResultsPopover","AnimatedSpinnerIcon","AutocompleteOption","onSelect","handleClick","handleKeyDown","currentTarget","role","autocompleteReducer","msg","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","rootElement","setRootElement","resultsPopoverElement","setResultsPopoverElement","inputElementRef","listBoxElementRef","focusedElementRef","valuePropRef","popoverMouseWithinRef","listBoxId","currentOption","find","o","filteredOptions","filteredOptionsLen","activeItemId","expanded","handleRootBlur","concat","focusInside","e","handleRootFocus","listBoxElement","focusedElement","nextListFocused","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","ExpandButton","Breadcrumbs","separator","spaceRaw","_excluded31","setOpen","expandElement","setExpandElement","popoverElement","setPopoverElement","collapse","expand","rawItems","Children","toArray","beforeLength","afterLength","DialogContext","useDialog","background","$position","DialogContainer","DialogCardRoot","DialogLayout","DialogHeader","DialogContent","DialogFooter","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","Key","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","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","Selectable","useMenu","MenuItem","hotkeys","selectedProp","_excluded36","paddingProps","keyframe","animation","skeletonStyle","$visible","$animated","Skeleton","animated","delay","_excluded37","visible","setVisible","timeout","$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","TextBox","Toast","closable","description","_excluded45","cardTone","ToastContext","ToastContainer","toastId","_focusItemElement","TreeContext","Tree","memo","_excluded46","setFocusedElement","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","TreeItemBox","$level","ToggleArrowText","TreeItem","expandedProp","idProp","_excluded48","rootRef","treeitemRef","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","motion","animate","scale","exit","layout","damping","stiffness","innerDispose","outerDispose","cmin","cmax","delta","toFixed","setDark"],"mappings":"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"}
|