@sanity/ui 0.38.2 → 0.38.3-next.5
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/README.md +4 -5
- package/dist/sanity-ui.cjs +1 -1320
- package/dist/sanity-ui.cjs.map +1 -1
- package/dist/sanity-ui.js +1 -1320
- package/dist/sanity-ui.js.map +1 -1
- package/dist/types/src/index.d.ts +227 -239
- package/package.json +10 -11
- package/src/__workshop__/color/overview.tsx +1 -1
- package/src/components/autocomplete/__workshop__/async.tsx +1 -1
- package/src/components/autocomplete/__workshop__/constrainedHeight.tsx +1 -1
- package/src/components/autocomplete/__workshop__/custom.tsx +1 -1
- package/src/components/autocomplete/__workshop__/example.tsx +1 -1
- package/src/components/autocomplete/__workshop__/focusAndBlur.tsx +1 -1
- package/src/components/autocomplete/__workshop__/fullscreen.tsx +1 -1
- package/src/components/autocomplete/autocomplete.tsx +2 -2
- package/src/components/autocomplete/autocompleteOption.tsx +1 -1
- package/src/components/breadcrumbs/__workshop__/example.tsx +0 -1
- package/src/components/breadcrumbs/breadcrumbs.tsx +1 -9
- package/src/components/dialog/__workshop__/autoFocus.tsx +0 -1
- package/src/components/dialog/__workshop__/layering.tsx +0 -1
- package/src/components/dialog/__workshop__/nested.tsx +1 -1
- package/src/components/dialog/__workshop__/onScroll.tsx +1 -1
- package/src/components/dialog/__workshop__/position.tsx +0 -1
- package/src/components/dialog/__workshop__/props.tsx +1 -1
- package/src/components/dialog/__workshop__/provider.tsx +0 -1
- package/src/components/dialog/dialog.tsx +1 -1
- package/src/components/dialog/dialogProvider.tsx +1 -1
- package/src/components/hotkeys/__workshop__/plain.tsx +0 -1
- package/src/components/hotkeys/hotkeys.tsx +1 -1
- package/src/components/menu/__workshop__/asComponent.tsx +1 -1
- package/src/components/menu/__workshop__/closableMenuButton.tsx +1 -1
- package/src/components/menu/__workshop__/constrainedInBoundary.tsx +1 -1
- package/src/components/menu/__workshop__/customMenuItem.tsx +0 -1
- package/src/components/menu/__workshop__/disableFocusOnClose.tsx +0 -1
- package/src/components/menu/__workshop__/groups.tsx +0 -1
- package/src/components/menu/__workshop__/menuButton.tsx +0 -1
- package/src/components/menu/__workshop__/menuGroupRight.tsx +0 -1
- package/src/components/menu/__workshop__/nestedMenu.tsx +0 -1
- package/src/components/menu/__workshop__/onCloseMenuButton.tsx +1 -1
- package/src/components/menu/__workshop__/selectedItem.tsx +1 -1
- package/src/components/menu/__workshop__/tones.tsx +0 -1
- package/src/components/menu/__workshop__/withoutArrow.tsx +0 -1
- package/src/components/menu/menu.test.tsx +1 -1
- package/src/components/menu/menu.tsx +1 -1
- package/src/components/menu/menuButton.tsx +1 -9
- package/src/components/menu/menuGroup.tsx +2 -2
- package/src/components/menu/menuItem.tsx +3 -3
- package/src/components/menu/useMenuController.ts +1 -1
- package/src/components/skeleton/__workshop__/delay.tsx +0 -1
- package/src/components/skeleton/__workshop__/skeleton.tsx +0 -1
- package/src/components/skeleton/skeleton.tsx +1 -1
- package/src/components/skeleton/textSkeleton.tsx +1 -1
- package/src/components/tab/__workshop__/example.tsx +1 -1
- package/src/components/tab/tab.tsx +2 -2
- package/src/components/tab/tabList.tsx +1 -1
- package/src/components/tab/tabPanel.tsx +1 -1
- package/src/components/toast/__workshop__/hook.tsx +0 -1
- package/src/components/toast/__workshop__/toast.tsx +0 -1
- package/src/components/toast/toast.test.tsx +0 -1
- package/src/components/toast/toast.tsx +0 -1
- package/src/components/toast/toastProvider.tsx +1 -1
- package/src/components/tree/__workshop__/basic.tsx +1 -1
- package/src/components/tree/tree.tsx +1 -1
- package/src/components/tree/treeGroup.tsx +1 -1
- package/src/components/tree/treeItem.tsx +4 -4
- package/src/hooks/useElementRect/__workshop__/example.tsx +0 -1
- package/src/hooks/useForwardedRef.ts +1 -1
- package/src/hooks/useMediaIndex/__workshop__/test.tsx +0 -1
- package/src/icons/__workshop__/overview.tsx +1 -1
- package/src/primitives/avatar/__workshop__/asButton.tsx +0 -1
- package/src/primitives/avatar/__workshop__/stack.tsx +0 -1
- package/src/primitives/avatar/avatar.tsx +2 -3
- package/src/primitives/avatar/avatarCounter.tsx +1 -1
- package/src/primitives/avatar/avatarStack.tsx +1 -1
- package/src/primitives/badge/__workshop__/props.tsx +0 -1
- package/src/primitives/badge/__workshop__/tones.tsx +0 -1
- package/src/primitives/badge/badge.tsx +1 -1
- package/src/primitives/box/__workshop__/props.tsx +0 -1
- package/src/primitives/box/__workshop__/responsive.tsx +0 -1
- package/src/primitives/box/box.tsx +1 -1
- package/src/primitives/button/__workshop__/custom.tsx +0 -1
- package/src/primitives/button/__workshop__/customIcons.tsx +0 -1
- package/src/primitives/button/__workshop__/mixedChildren.tsx +0 -1
- package/src/primitives/button/__workshop__/props.tsx +0 -1
- package/src/primitives/button/__workshop__/sanityUploadButton.tsx +0 -1
- package/src/primitives/button/__workshop__/stacked.tsx +0 -1
- package/src/primitives/button/__workshop__/styled1.tsx +0 -1
- package/src/primitives/button/__workshop__/styled2.tsx +0 -1
- package/src/primitives/button/__workshop__/uploadButton.tsx +1 -1
- package/src/primitives/button/button.tsx +3 -3
- package/src/primitives/card/__workshop__/allTones.tsx +0 -1
- package/src/primitives/card/__workshop__/asButton.tsx +0 -1
- package/src/primitives/card/__workshop__/asComponent.tsx +1 -1
- package/src/primitives/card/__workshop__/checkered.tsx +0 -1
- package/src/primitives/card/__workshop__/interactive.tsx +0 -1
- package/src/primitives/card/__workshop__/listNavigation.tsx +0 -1
- package/src/primitives/card/__workshop__/props.tsx +0 -1
- package/src/primitives/card/__workshop__/selected.tsx +0 -1
- package/src/primitives/card/__workshop__/styled.tsx +0 -1
- package/src/primitives/card/card.tsx +1 -1
- package/src/primitives/checkbox/__workshop__/example.tsx +1 -1
- package/src/primitives/checkbox/__workshop__/props.tsx +0 -1
- package/src/primitives/checkbox/__workshop__/readOnly.tsx +0 -1
- package/src/primitives/checkbox/__workshop__/tones.tsx +0 -1
- package/src/primitives/checkbox/checkbox.tsx +1 -1
- package/src/primitives/code/__workshop__/opticalAlignment.tsx +0 -1
- package/src/primitives/code/__workshop__/props.tsx +0 -1
- package/src/primitives/code/code.tsx +1 -1
- package/src/primitives/container/__workshop__/example.tsx +0 -1
- package/src/primitives/container/container.tsx +1 -1
- package/src/primitives/flex/__workshop__/example.tsx +0 -1
- package/src/primitives/flex/__workshop__/gap.tsx +0 -1
- package/src/primitives/flex/flex.tsx +1 -1
- package/src/primitives/grid/__workshop__/responsive.tsx +0 -1
- package/src/primitives/grid/grid.tsx +1 -1
- package/src/primitives/heading/__workshop__/opticalAlignment.tsx +0 -1
- package/src/primitives/heading/__workshop__/plain.tsx +0 -1
- package/src/primitives/heading/heading.tsx +1 -1
- package/src/primitives/inline/__workshop__/plain.tsx +0 -1
- package/src/primitives/inline/inline.tsx +1 -1
- package/src/primitives/kbd/__workshop__/plain.tsx +0 -1
- package/src/primitives/kbd/kbd.tsx +1 -1
- package/src/primitives/label/__workshop__/opticalAlignment.tsx +0 -1
- package/src/primitives/label/__workshop__/plain.tsx +0 -1
- package/src/primitives/label/label.tsx +1 -1
- package/src/primitives/popover/__workshop__/MarginsStory.tsx +0 -1
- package/src/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +0 -1
- package/src/primitives/popover/__workshop__/PlainStory.tsx +1 -1
- package/src/primitives/popover/__workshop__/RecursiveStory.tsx +1 -1
- package/src/primitives/popover/__workshop__/RightAlignedStory.tsx +1 -1
- package/src/primitives/popover/__workshop__/TestStory.tsx +1 -1
- package/src/primitives/popover/arrow.tsx +1 -1
- package/src/primitives/popover/popover.tsx +1 -9
- package/src/primitives/radio/__workshop__/example.tsx +1 -1
- package/src/primitives/radio/__workshop__/plain.tsx +0 -1
- package/src/primitives/radio/radio.tsx +1 -1
- package/src/primitives/select/__workshop__/plain.tsx +0 -1
- package/src/primitives/select/__workshop__/readOnly.tsx +0 -1
- package/src/primitives/select/select.tsx +1 -1
- package/src/primitives/spinner/__workshop__/Props.tsx +0 -1
- package/src/primitives/spinner/spinner.tsx +1 -1
- package/src/primitives/stack/__workshop__/plain.tsx +0 -1
- package/src/primitives/stack/stack.tsx +1 -1
- package/src/primitives/switch/__workshop__/example.tsx +1 -1
- package/src/primitives/switch/__workshop__/props.tsx +1 -1
- package/src/primitives/switch/switch.tsx +1 -1
- package/src/primitives/text/__workshop__/colored.tsx +0 -1
- package/src/primitives/text/__workshop__/example.tsx +0 -1
- package/src/primitives/text/__workshop__/opticalAlignment.tsx +0 -1
- package/src/primitives/text/text.tsx +1 -1
- package/src/primitives/textArea/__workshop__/plain.tsx +0 -1
- package/src/primitives/textArea/textArea.tsx +1 -1
- package/src/primitives/textInput/__workshop__/clearButton.tsx +1 -1
- package/src/primitives/textInput/__workshop__/customValidity.tsx +0 -1
- package/src/primitives/textInput/__workshop__/multipleTones.tsx +0 -1
- package/src/primitives/textInput/__workshop__/plain.tsx +1 -1
- package/src/primitives/textInput/__workshop__/readOnly.tsx +0 -1
- package/src/primitives/textInput/__workshop__/states.tsx +0 -1
- package/src/primitives/textInput/__workshop__/tones.tsx +0 -1
- package/src/primitives/textInput/__workshop__/typed.tsx +1 -1
- package/src/primitives/textInput/textInput.tsx +3 -3
- package/src/primitives/tooltip/__workshop__/props.tsx +0 -1
- package/src/primitives/tooltip/tooltip.tsx +1 -1
- package/src/primitives/tooltip/tooltipArrow.tsx +1 -1
- package/src/styles/font/responsiveFont.ts +13 -0
- package/src/theme/__workshop__/canvas.tsx +1 -1
- package/src/theme/__workshop__/color.tsx +0 -1
- package/src/theme/__workshop__/layer.tsx +1 -1
- package/src/theme/__workshop__/nestedProvider.tsx +0 -1
- package/src/theme/theme.test.tsx +0 -1
- package/src/theme/themeColorProvider.tsx +0 -1
- package/src/theme/themeProvider.tsx +1 -1
- package/src/utils/boundaryElement/__workshop__/plain.tsx +1 -1
- package/src/utils/boundaryElement/boundaryElement.test.tsx +0 -1
- package/src/utils/boundaryElement/boundaryElementProvider.tsx +1 -1
- package/src/utils/elementQuery/__workshop__/customMedia.tsx +0 -1
- package/src/utils/elementQuery/elementQuery.tsx +1 -1
- package/src/utils/errorBoundary.tsx +4 -4
- package/src/utils/layer/__workshop__/_debug.tsx +0 -1
- package/src/utils/layer/__workshop__/multipleRoots.tsx +0 -1
- package/src/utils/layer/__workshop__/plain.tsx +1 -1
- package/src/utils/layer/__workshop__/responsiveZOffset.tsx +0 -1
- package/src/utils/layer/layer.test.tsx +0 -1
- package/src/utils/layer/layer.tsx +1 -1
- package/src/utils/layer/layerProvider.tsx +1 -1
- package/src/utils/portal/__workshop__/named.tsx +1 -1
- package/src/utils/portal/portal.test.tsx +0 -1
- package/src/utils/portal/portal.ts +2 -3
- package/src/utils/portal/portalProvider.tsx +1 -1
- package/src/utils/srOnly/srOnly.tsx +1 -1
- package/src/utils/virtualList/__workshop__/changingProps.tsx +1 -1
- package/src/utils/virtualList/__workshop__/elementScroll.tsx +1 -1
- package/src/utils/virtualList/__workshop__/infiniteList.tsx +1 -1
- package/src/utils/virtualList/__workshop__/windowScrolll.tsx +1 -1
- package/src/utils/virtualList/virtualList.tsx +1 -1
package/dist/sanity-ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanity-ui.js","sources":["../src/constants.ts","../src/styles/helpers.ts","../src/styles/font/responsiveFont.ts","../src/styles/font/codeFontStyle.ts","../src/styles/font/headingFontStyle.ts","../src/styles/font/labelFontStyle.ts","../src/styles/font/textAlignStyle.ts","../src/styles/font/textFontStyle.ts","../src/hooks/useArrayProp.ts","../src/hooks/useClickOutside.ts","../src/observers/resizeObserver.ts","../src/observers/elementSizeObserver.ts","../src/hooks/useElementSize.ts","../src/hooks/useElementRect/useElementRect.ts","../src/hooks/useGlobalKeyDown.ts","../src/theme/lib/color-fns/blend/multiply.ts","../src/theme/lib/color-fns/blend/screen.ts","../src/theme/lib/color-fns/convert.ts","../src/theme/lib/color-fns/parse.ts","../src/theme/lib/color-fns/helpers/rgba.ts","../src/theme/lib/theme/color/button/createButtonTones.ts","../src/theme/lib/theme/color/button/createButtonModes.ts","../src/theme/lib/theme/color/card/createCardStates.ts","../src/theme/lib/theme/color/defaults.ts","../src/theme/lib/theme/color/input/createInputModes.ts","../src/theme/lib/theme/color/selectable/createSelectableTones.ts","../src/theme/lib/theme/color/spot/createSpot.ts","../src/theme/lib/theme/color/factory.ts","../src/theme/lib/theme/color/solid/createSolidTones.ts","../src/theme/lib/theme/color/muted/createMuted.ts","../src/theme/studioTheme/helpers.ts","../src/theme/studioTheme/color.ts","../src/theme/studioTheme/theme.ts","../src/theme/studioTheme/fonts.ts","../src/theme/defaults.ts","../src/lib/globalScope.ts","../src/theme/themeContext.ts","../src/theme/themeProvider.tsx","../src/lib/isRecord.ts","../src/theme/useRootTheme.ts","../src/theme/themeColorProvider.tsx","../src/theme/useTheme.ts","../src/hooks/useMediaIndex/lib/media.ts","../src/hooks/useMediaIndex/useMediaIndex.ts","../src/hooks/usePrefersDark.ts","../src/hooks/useIsomorphicEffect.ts","../src/hooks/useForwardedRef.ts","../src/hooks/useCustomValidity.ts","../src/styles/border/borderStyle.ts","../src/styles/box/boxStyle.ts","../src/styles/flex/flexStyle.ts","../src/styles/flex/flexItemStyle.ts","../src/styles/focusRing/index.ts","../src/styles/grid/gridStyle.ts","../src/styles/grid/gridItemStyle.ts","../src/styles/input/responsiveInputPaddingStyle.ts","../src/styles/input/textInputStyle.ts","../src/styles/padding/paddingStyle.ts","../src/styles/radius/radiusStyle.ts","../src/styles/shadow/shadowStyle.ts","../src/primitives/text/text.tsx","../src/primitives/text/styles.ts","../src/primitives/avatar/styles.ts","../src/primitives/avatar/avatar.tsx","../src/primitives/avatar/avatarCounter.tsx","../src/primitives/helpers.ts","../src/primitives/avatar/avatarStack.tsx","../src/primitives/box/box.tsx","../src/styles/margin/marginStyle.ts","../src/primitives/label/label.tsx","../src/primitives/label/styles.ts","../src/primitives/badge/badge.tsx","../src/primitives/badge/styles.ts","../src/primitives/flex/flex.tsx","../src/primitives/spinner/spinner.tsx","../src/styles/colorVars/colorVarsStyle.ts","../src/primitives/button/styles.ts","../src/primitives/button/button.tsx","../src/primitives/card/styles.ts","../src/primitives/card/card.tsx","../src/primitives/checkbox/checkbox.tsx","../src/primitives/checkbox/styles.ts","../src/primitives/code/styles.ts","../src/primitives/code/code.tsx","../src/primitives/container/styles.ts","../src/primitives/container/container.tsx","../src/primitives/grid/grid.tsx","../src/primitives/heading/heading.tsx","../src/primitives/heading/styles.ts","../src/primitives/inline/inline.tsx","../src/primitives/inline/styles.ts","../src/primitives/kbd/kbd.tsx","../src/utils/boundaryElement/boundaryElementContext.ts","../src/utils/boundaryElement/boundaryElementProvider.tsx","../src/utils/boundaryElement/useBoundaryElement.ts","../src/utils/elementQuery/elementQuery.tsx","../src/utils/elementQuery/helpers.ts","../src/utils/errorBoundary.tsx","../src/utils/layer/layerContext.ts","../src/utils/layer/useLayer.ts","../src/utils/layer/layerProvider.tsx","../src/utils/layer/layer.tsx","../src/utils/portal/portalContext.ts","../src/utils/portal/usePortal.ts","../src/utils/portal/portal.ts","../src/hooks/_internal/useUnique.ts","../src/utils/portal/portalProvider.tsx","../src/utils/srOnly/srOnly.tsx","../src/helpers/animation.ts","../src/helpers/element.ts","../src/helpers/focus.ts","../src/helpers/scroll.ts","../src/utils/virtualList/virtualList.tsx","../src/primitives/popover/arrow.tsx","../src/primitives/popover/modifiers/usePopoverModifiers.ts","../src/primitives/popover/modifiers/getPopoverModifiers.ts","../src/primitives/popover/popover.tsx","../src/primitives/radio/radio.tsx","../src/primitives/radio/styles.ts","../src/primitives/select/styles.ts","../src/primitives/select/select.tsx","../src/primitives/stack/styles.ts","../src/primitives/stack/stack.tsx","../src/primitives/switch/switch.tsx","../src/primitives/switch/styles.ts","../src/primitives/textArea/textArea.tsx","../src/primitives/textInput/textInput.tsx","../src/primitives/tooltip/tooltipArrow.tsx","../src/primitives/tooltip/tooltip.tsx","../src/components/autocomplete/autocomplete.styles.tsx","../src/components/autocomplete/autocompleteOption.tsx","../src/components/autocomplete/autocompleteReducer.ts","../src/components/autocomplete/constants.ts","../src/components/autocomplete/autocomplete.tsx","../src/components/breadcrumbs/breadcrumbs.styles.ts","../src/components/breadcrumbs/breadcrumbs.tsx","../src/components/dialog/dialogContext.ts","../src/components/dialog/useDialog.ts","../src/components/dialog/dialog.tsx","../src/components/dialog/styles.ts","../src/components/dialog/dialogProvider.tsx","../src/components/hotkeys/hotkeys.tsx","../src/components/menu/menuContext.ts","../src/components/menu/helpers.ts","../src/components/menu/useMenuController.ts","../src/components/menu/menu.tsx","../src/components/menu/menuButton.tsx","../src/components/menu/menuDivider.ts","../src/primitives/_selectable/selectable.tsx","../src/primitives/_selectable/style.ts","../src/components/menu/useMenu.ts","../src/components/menu/menuGroup.tsx","../src/components/menu/menuItem.tsx","../src/components/skeleton/styles.ts","../src/components/skeleton/skeleton.tsx","../src/components/skeleton/textSkeleton.tsx","../src/components/tab/tab.tsx","../src/components/tab/tabList.tsx","../src/components/tab/tabPanel.tsx","../src/components/toast/toast.tsx","../src/components/toast/toastContext.ts","../src/components/toast/toastProvider.tsx","../src/components/toast/useToast.ts","../src/components/tree/helpers.ts","../src/components/tree/treeContext.ts","../src/components/tree/tree.tsx","../src/components/tree/useTree.ts","../src/components/tree/treeGroup.tsx","../src/components/tree/treeItem.tsx","../src/components/tree/style.ts"],"sourcesContent":["export const EMPTY_ARRAY: any[] = []\nexport const EMPTY_RECORD: Record<string, any> = {}\n","import {CSSObject} from 'styled-components'\nimport {EMPTY_ARRAY} from '../constants'\nimport {Theme} from '../theme'\n\n/**\n * @internal\n */\nexport function _fillCSSObject(keys: string[], value: string | number | CSSObject): CSSObject {\n return keys.reduce<CSSObject>((style, key) => {\n style[key] = value\n\n return style\n }, {})\n}\n\n/**\n * @public\n */\nexport function rem(pixelValue: number): string | 0 {\n if (pixelValue === 0) return 0\n\n return `${pixelValue / 16}rem`\n}\n\n/**\n * @internal\n */\nexport function _responsive<T>(\n media: number[],\n values: T[],\n callback: (value: T, index: number, array: T[]) => CSSObject\n): CSSObject[] {\n const statements = values?.map(callback) || []\n\n return statements.map((statement, mediaIndex) => {\n if (mediaIndex === 0) return statement\n\n return {[`@media screen and (min-width: ${media[mediaIndex - 1]}px)`]: statement}\n })\n}\n\n/**\n * @internal\n */\nexport function _getArrayProp<T = number>(val: T | T[] | undefined, defaultVal?: T[]): T[] {\n if (val === undefined) return defaultVal || EMPTY_ARRAY\n\n return Array.isArray(val) ? val : [val]\n}\n\n/**\n * @internal\n */\nexport function _getResponsiveSpace(\n theme: Theme,\n props: string[],\n spaceIndexes: number[] = EMPTY_ARRAY\n): CSSObject[] | null {\n if (!Array.isArray(spaceIndexes)) {\n throw new Error('the property must be array of numbers')\n }\n\n if (spaceIndexes.length === 0) {\n return null\n }\n\n return _responsive(theme.sanity.media, spaceIndexes, (spaceIndex) =>\n _fillCSSObject(props, rem(theme.sanity.space[spaceIndex]))\n )\n}\n","import {CSSObject} from 'styled-components'\nimport {ThemeFontSize, ThemeFontKey} from '../../theme'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveFontStyleProps} from './types'\n\n/**\n * A utility function getting responsive font styles.\n * @internal\n */\nexport function responsiveFont(\n fontKey: ThemeFontKey,\n props: ResponsiveFontStyleProps & ThemeProps\n): CSSObject[] {\n const {$size, $weight, theme} = props\n const {fonts, media} = theme.sanity\n const {family, sizes, weights} = fonts[fontKey]\n const fontWeight = ($weight && weights[$weight]) || weights.regular\n\n // @todo: make this configurable\n const defaultSize = sizes[2]\n\n const base: CSSObject = {\n position: 'relative',\n fontFamily: family,\n fontWeight,\n padding: '1px 0',\n margin: 0,\n\n '&:before': {\n content: '\"\"',\n display: 'block',\n height: 0,\n },\n\n '&:after': {\n content: '\"\"',\n display: 'block',\n height: 0,\n },\n\n '& > code, & > span': {\n display: 'block',\n },\n\n '&:not([hidden])': {\n display: 'block',\n },\n }\n\n 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 {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, 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 {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 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","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, {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 styled from 'styled-components'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/radius'\nimport {Box} from '../box'\nimport {selectableBaseStyle, selectableColorStyle, SelectableStyleProps} from './style'\n\n/**\n * @internal\n */\nexport const Selectable = styled(Box)<SelectableStyleProps & ResponsiveRadiusStyleProps>(\n responsiveRadiusStyle,\n selectableBaseStyle,\n selectableColorStyle\n)\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {_colorVarsStyle} from '../../styles/colorVars'\nimport {SelectableTone} from '../../types/selectable'\n\n/**\n * @internal\n */\nexport interface SelectableStyleProps {\n $tone: SelectableTone\n}\n\nexport function selectableBaseStyle(): FlattenSimpleInterpolation {\n return css`\n background-color: inherit;\n color: inherit;\n\n &[data-as='button'] {\n -webkit-font-smoothing: inherit;\n appearance: none;\n outline: none;\n font: inherit;\n text-align: inherit;\n border: 0;\n width: stretch;\n }\n\n /* &:is(a) */\n &[data-as='a'] {\n text-decoration: none;\n }\n `\n}\n\nexport function selectableColorStyle(\n props: SelectableStyleProps & ThemeProps\n): FlattenSimpleInterpolation {\n const {$tone, theme} = props\n const {base, muted, selectable} = theme.sanity.color\n // @todo: remove use of `muted` here\n const tone = selectable ? selectable[$tone] || selectable.default : muted[$tone] || muted.default\n\n return css`\n ${_colorVarsStyle(base, tone.enabled)}\n\n background-color: var(--card-bg-color);\n color: var(--card-fg-color);\n outline: none;\n\n /* &:is(button) */\n &[data-as='button'] {\n &:disabled {\n ${_colorVarsStyle(base, tone.disabled)}\n }\n\n &:not(:disabled) {\n &[aria-pressed='true'] {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n\n &[data-selected],\n &[aria-selected='true'] > & {\n ${_colorVarsStyle(base, tone.selected)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) {\n &:hover {\n ${_colorVarsStyle(base, tone.hovered)}\n }\n\n &:active {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n }\n }\n }\n }\n\n /* &:is(a) */\n &[data-as='a'] {\n &[data-disabled] {\n ${_colorVarsStyle(base, tone.disabled)}\n }\n\n &:not([data-disabled]) {\n &[data-pressed] {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n\n &[data-selected] {\n ${_colorVarsStyle(base, tone.selected)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) {\n &:hover {\n ${_colorVarsStyle(base, tone.hovered)}\n }\n\n &:active {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n }\n }\n }\n }\n\n ${theme.sanity.styles?.card?.root}\n `\n}\n","import {useContext} from 'react'\nimport {isRecord} from '../../lib/isRecord'\nimport {MenuContext, MenuContextValue} from './menuContext'\n\nexport function useMenu(): MenuContextValue {\n const value = useContext(MenuContext)\n\n if (!value) {\n throw new Error('useMenu(): missing context value')\n }\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (!isRecord(value) || value.version !== 0.0) {\n throw new Error('useMenu(): the context value is not compatible')\n }\n\n return value\n}\n","import {ChevronRightIcon} from '@sanity/icons'\nimport 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 {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"],"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","useElementRect","elementSize","useGlobalKeyDown","onKeyDown","multiplyChannel","b","s","multiply","r","round","clamp","g","num","max","min","screenChannel","screen","hexToRgb","hex","hexR","slice","hexG","hexB","parseInt","rgbToHex","toString","rgbToHsl","cmin","cmax","delta","h","l","abs","toFixed","hslToRgb","hsl","c","x","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","usePrefersDark","setDark","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","BoundaryElementProvider","DEFAULT_VALUE","useBoundaryElement","ElementQuery","_excluded18","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__","PortalProvider","__unstable_elements","elementsProp","SrOnly","_raf","fn","frameId","_raf2","innerDispose","outerDispose","_isEnterToClickElement","isHTMLAnchorElement","isHTMLButtonElement","isHTMLElement","nodeType","ELEMENT_NODE","nodeName","isHTMLInputElement","isHTMLSelectElement","isHTMLTextAreaElement","_hasFocus","activeElement","isFocusable","tabIndex","getAttribute","rel","attemptFocus","focus","focusFirstDescendant","childNodes","focusLastDescendant","_isScrollable","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","referenceNode","onBlur","onFocus","onMouseEnter","onMouseLeave","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","DialogProvider","contextValue","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","MenuGroup","_excluded35","shouldFocusRef","withinMenu","setWithinMenu","handleMenuKeyDown","handleChildItemClick","handleMenuMouseEnter","childMenu","ChevronRightIcon","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","ToastProvider","setState","toasts","toastsRef","params","duration","dismiss","timeoutId","prevState","findIndex","t","AnimatePresence","initial","motion","animate","scale","exit","layout","damping","stiffness","useToast","_focusItemElement","TreeContext","Tree","memo","_excluded46","setFocusedElement","itemElements","setItemElements","stateRef","registerItem","path2","newState","setExpanded","itemState","level","focusedKey","itemKey","itemPath","split","pop","parentKey","parentState","prevEl","segments","j","_findPrevItemElement","nextEl","_findNextItemElement","_itemElements","querySelectorAll","useTree","tree","displayName","TreeGroup","_excluded47","li","TreeItemBox","$level","ToggleArrowText","TreeItem","expandedProp","idProp","_excluded48","rootRef","treeitemRef","closest","click","visibility","pointerEvents","ToggleArrowRightIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sanity-ui.js","sources":["../src/constants.ts","../src/styles/helpers.ts","../src/styles/font/responsiveFont.ts","../src/styles/font/codeFontStyle.ts","../src/styles/font/headingFontStyle.ts","../src/styles/font/labelFontStyle.ts","../src/styles/font/textAlignStyle.ts","../src/styles/font/textFontStyle.ts","../src/hooks/useArrayProp.ts","../src/hooks/useClickOutside.ts","../src/observers/resizeObserver.ts","../src/observers/elementSizeObserver.ts","../src/hooks/useElementSize.ts","../src/hooks/useElementRect/useElementRect.ts","../src/hooks/useGlobalKeyDown.ts","../src/theme/lib/color-fns/blend/multiply.ts","../src/theme/lib/color-fns/blend/screen.ts","../src/theme/lib/color-fns/convert.ts","../src/theme/lib/color-fns/parse.ts","../src/theme/lib/color-fns/helpers/rgba.ts","../src/theme/lib/theme/color/button/createButtonTones.ts","../src/theme/lib/theme/color/button/createButtonModes.ts","../src/theme/lib/theme/color/card/createCardStates.ts","../src/theme/lib/theme/color/defaults.ts","../src/theme/lib/theme/color/input/createInputModes.ts","../src/theme/lib/theme/color/selectable/createSelectableTones.ts","../src/theme/lib/theme/color/spot/createSpot.ts","../src/theme/lib/theme/color/factory.ts","../src/theme/lib/theme/color/solid/createSolidTones.ts","../src/theme/lib/theme/color/muted/createMuted.ts","../src/theme/studioTheme/helpers.ts","../src/theme/studioTheme/color.ts","../src/theme/studioTheme/theme.ts","../src/theme/studioTheme/fonts.ts","../src/theme/defaults.ts","../src/lib/globalScope.ts","../src/theme/themeContext.ts","../src/theme/themeProvider.tsx","../src/lib/isRecord.ts","../src/theme/useRootTheme.ts","../src/theme/themeColorProvider.tsx","../src/theme/useTheme.ts","../src/hooks/useMediaIndex/lib/media.ts","../src/hooks/useMediaIndex/useMediaIndex.ts","../src/hooks/usePrefersDark.ts","../src/hooks/useIsomorphicEffect.ts","../src/hooks/useForwardedRef.ts","../src/hooks/useCustomValidity.ts","../src/styles/border/borderStyle.ts","../src/styles/box/boxStyle.ts","../src/styles/flex/flexStyle.ts","../src/styles/flex/flexItemStyle.ts","../src/styles/focusRing/index.ts","../src/styles/grid/gridStyle.ts","../src/styles/grid/gridItemStyle.ts","../src/styles/input/responsiveInputPaddingStyle.ts","../src/styles/input/textInputStyle.ts","../src/styles/padding/paddingStyle.ts","../src/styles/radius/radiusStyle.ts","../src/styles/shadow/shadowStyle.ts","../src/primitives/text/text.tsx","../src/primitives/text/styles.ts","../src/primitives/avatar/styles.ts","../src/primitives/avatar/avatar.tsx","../src/primitives/avatar/avatarCounter.tsx","../src/primitives/helpers.ts","../src/primitives/avatar/avatarStack.tsx","../src/primitives/box/box.tsx","../src/styles/margin/marginStyle.ts","../src/primitives/label/label.tsx","../src/primitives/label/styles.ts","../src/primitives/badge/badge.tsx","../src/primitives/badge/styles.ts","../src/primitives/flex/flex.tsx","../src/primitives/spinner/spinner.tsx","../src/styles/colorVars/colorVarsStyle.ts","../src/primitives/button/styles.ts","../src/primitives/button/button.tsx","../src/primitives/card/styles.ts","../src/primitives/card/card.tsx","../src/primitives/checkbox/checkbox.tsx","../src/primitives/checkbox/styles.ts","../src/primitives/code/styles.ts","../src/primitives/code/code.tsx","../src/primitives/container/styles.ts","../src/primitives/container/container.tsx","../src/primitives/grid/grid.tsx","../src/primitives/heading/heading.tsx","../src/primitives/heading/styles.ts","../src/primitives/inline/inline.tsx","../src/primitives/inline/styles.ts","../src/primitives/kbd/kbd.tsx","../src/utils/boundaryElement/boundaryElementContext.ts","../src/utils/boundaryElement/boundaryElementProvider.tsx","../src/utils/boundaryElement/useBoundaryElement.ts","../src/utils/elementQuery/elementQuery.tsx","../src/utils/elementQuery/helpers.ts","../src/utils/errorBoundary.tsx","../src/utils/layer/layerContext.ts","../src/utils/layer/useLayer.ts","../src/utils/layer/layerProvider.tsx","../src/utils/layer/layer.tsx","../src/utils/portal/portalContext.ts","../src/utils/portal/usePortal.ts","../src/utils/portal/portal.ts","../src/hooks/_internal/useUnique.ts","../src/utils/portal/portalProvider.tsx","../src/utils/srOnly/srOnly.tsx","../src/helpers/animation.ts","../src/helpers/element.ts","../src/helpers/focus.ts","../src/helpers/scroll.ts","../src/utils/virtualList/virtualList.tsx","../src/primitives/popover/arrow.tsx","../src/primitives/popover/modifiers/usePopoverModifiers.ts","../src/primitives/popover/modifiers/getPopoverModifiers.ts","../src/primitives/popover/popover.tsx","../src/primitives/radio/radio.tsx","../src/primitives/radio/styles.ts","../src/primitives/select/styles.ts","../src/primitives/select/select.tsx","../src/primitives/stack/styles.ts","../src/primitives/stack/stack.tsx","../src/primitives/switch/switch.tsx","../src/primitives/switch/styles.ts","../src/primitives/textArea/textArea.tsx","../src/primitives/textInput/textInput.tsx","../src/primitives/tooltip/tooltipArrow.tsx","../src/primitives/tooltip/tooltip.tsx","../src/components/autocomplete/autocomplete.styles.tsx","../src/components/autocomplete/autocompleteOption.tsx","../src/components/autocomplete/autocompleteReducer.ts","../src/components/autocomplete/constants.ts","../src/components/autocomplete/autocomplete.tsx","../src/components/breadcrumbs/breadcrumbs.styles.ts","../src/components/breadcrumbs/breadcrumbs.tsx","../src/components/dialog/dialogContext.ts","../src/components/dialog/useDialog.ts","../src/components/dialog/dialog.tsx","../src/components/dialog/styles.ts","../src/components/dialog/dialogProvider.tsx","../src/components/hotkeys/hotkeys.tsx","../src/components/menu/menuContext.ts","../src/components/menu/helpers.ts","../src/components/menu/useMenuController.ts","../src/components/menu/menu.tsx","../src/components/menu/menuButton.tsx","../src/components/menu/menuDivider.ts","../src/primitives/_selectable/selectable.tsx","../src/primitives/_selectable/style.ts","../src/components/menu/useMenu.ts","../src/components/menu/menuGroup.tsx","../src/components/menu/menuItem.tsx","../src/components/skeleton/styles.ts","../src/components/skeleton/skeleton.tsx","../src/components/skeleton/textSkeleton.tsx","../src/components/tab/tab.tsx","../src/components/tab/tabList.tsx","../src/components/tab/tabPanel.tsx","../src/components/toast/toast.tsx","../src/components/toast/toastContext.ts","../src/components/toast/toastProvider.tsx","../src/components/toast/useToast.ts","../src/components/tree/helpers.ts","../src/components/tree/treeContext.ts","../src/components/tree/tree.tsx","../src/components/tree/useTree.ts","../src/components/tree/treeGroup.tsx","../src/components/tree/treeItem.tsx","../src/components/tree/style.ts"],"sourcesContent":["export const EMPTY_ARRAY: any[] = []\nexport const EMPTY_RECORD: Record<string, any> = {}\n","import {CSSObject} from 'styled-components'\nimport {EMPTY_ARRAY} from '../constants'\nimport {Theme} from '../theme'\n\n/**\n * @internal\n */\nexport function _fillCSSObject(keys: string[], value: string | number | CSSObject): CSSObject {\n return keys.reduce<CSSObject>((style, key) => {\n style[key] = value\n\n return style\n }, {})\n}\n\n/**\n * @public\n */\nexport function rem(pixelValue: number): string | 0 {\n if (pixelValue === 0) return 0\n\n return `${pixelValue / 16}rem`\n}\n\n/**\n * @internal\n */\nexport function _responsive<T>(\n media: number[],\n values: T[],\n callback: (value: T, index: number, array: T[]) => CSSObject\n): CSSObject[] {\n const statements = values?.map(callback) || []\n\n return statements.map((statement, mediaIndex) => {\n if (mediaIndex === 0) return statement\n\n return {[`@media screen and (min-width: ${media[mediaIndex - 1]}px)`]: statement}\n })\n}\n\n/**\n * @internal\n */\nexport function _getArrayProp<T = number>(val: T | T[] | undefined, defaultVal?: T[]): T[] {\n if (val === undefined) return defaultVal || EMPTY_ARRAY\n\n return Array.isArray(val) ? val : [val]\n}\n\n/**\n * @internal\n */\nexport function _getResponsiveSpace(\n theme: Theme,\n props: string[],\n spaceIndexes: number[] = EMPTY_ARRAY\n): CSSObject[] | null {\n if (!Array.isArray(spaceIndexes)) {\n throw new Error('the property must be array of numbers')\n }\n\n if (spaceIndexes.length === 0) {\n return null\n }\n\n return _responsive(theme.sanity.media, spaceIndexes, (spaceIndex) =>\n _fillCSSObject(props, rem(theme.sanity.space[spaceIndex]))\n )\n}\n","import {CSSObject} from 'styled-components'\nimport {ThemeFontSize, ThemeFontKey} from '../../theme'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveFontStyleProps} from './types'\n\n/**\n * A utility function getting responsive font styles.\n * @internal\n */\nexport function responsiveFont(\n fontKey: ThemeFontKey,\n props: ResponsiveFontStyleProps & ThemeProps\n): CSSObject[] {\n const {$size, $weight, theme} = props\n const {fonts, media} = theme.sanity\n const {family, sizes, weights} = fonts[fontKey]\n const fontWeight = ($weight && weights[$weight]) || weights.regular\n\n // @todo: make this configurable\n const defaultSize = sizes[2]\n\n const base: CSSObject = {\n position: 'relative',\n fontFamily: family,\n fontWeight,\n padding: '1px 0',\n margin: 0,\n\n '&:before': {\n content: '\"\"',\n display: 'block',\n height: 0,\n },\n\n '&:after': {\n content: '\"\"',\n display: 'block',\n height: 0,\n },\n\n '& > code, & > span': {\n display: 'block',\n },\n\n '&:not([hidden])': {\n display: 'block',\n },\n }\n\n // @TODO fix the real condition that is causing $size to be undefined sometimes\n if (!$size) {\n // @ts-expect-error: `warned` isn't typed, the underlying issue should be solved rather than typing it\n if (!responsiveFont.warned) {\n // eslint-disable-next-line no-console\n console.warn('No size specified for responsive font', {fontKey, $size, props, base})\n // @ts-expect-error: `warned` isn't typed, the underlying issue should be solved rather than typing it\n responsiveFont.warned = true\n }\n\n return [base]\n }\n\n const resp = _responsive(media, $size, (sizeIndex) => fontSize(sizes[sizeIndex] || defaultSize))\n\n return [base, ...resp]\n}\n\nexport function fontSize(size: ThemeFontSize): CSSObject {\n const {ascenderHeight, descenderHeight, fontSize, iconSize, letterSpacing, lineHeight} = size\n const negHeight = ascenderHeight + descenderHeight\n const capHeight = lineHeight - negHeight\n const iconOffset = (capHeight - iconSize) / 2\n const customIconSize = Math.floor((fontSize * 1.125) / 2) * 2 + 1\n const customIconOffset = (capHeight - customIconSize) / 2\n\n return {\n fontSize: rem(fontSize),\n lineHeight: `calc(${lineHeight} / ${fontSize})`,\n letterSpacing: rem(letterSpacing),\n transform: `translateY(${rem(descenderHeight)})`,\n\n '&:before': {\n marginTop: `calc(${rem(0 - negHeight)} - 1px)`,\n },\n\n '&:after': {\n marginBottom: '-1px',\n },\n\n '& svg:not([data-sanity-icon])': {\n fontSize: `calc(${customIconSize} / 16 * 1rem)`,\n margin: rem(customIconOffset),\n },\n\n '& [data-sanity-icon]': {\n fontSize: `calc(${iconSize} / 16 * 1rem)`,\n margin: rem(iconOffset),\n },\n }\n}\n","import {CSSObject} from 'styled-components'\nimport {ThemeProps} from '../types'\nimport {responsiveFont} from './responsiveFont'\nimport {ResponsiveFontStyleProps} from './types'\n\n/**\n * Get responsive CSS for the `code` font style.\n * @internal\n */\nexport function responsiveCodeFontStyle(props: ResponsiveFontStyleProps & ThemeProps): CSSObject[] {\n return responsiveFont('code', props)\n}\n","import {CSSObject} from 'styled-components'\nimport {ThemeProps} from '../types'\nimport {responsiveFont} from './responsiveFont'\nimport {ResponsiveFontStyleProps} from './types'\n\n/**\n * Get responsive CSS for the `heading` font style.\n * @internal\n */\nexport function responsiveHeadingFont(props: ResponsiveFontStyleProps & ThemeProps): CSSObject[] {\n return responsiveFont('heading', props)\n}\n","import {CSSObject} from 'styled-components'\nimport {ThemeProps} from '../types'\nimport {responsiveFont} from './responsiveFont'\nimport {ResponsiveFontStyleProps} from './types'\n\n/**\n * Get responsive CSS for the `label` font style.\n * @internal\n */\nexport function responsiveLabelFont(props: ResponsiveFontStyleProps & ThemeProps): CSSObject[] {\n return responsiveFont('label', props)\n}\n","import {CSSObject} from 'styled-components'\nimport {_responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveTextAlignStyleProps} from './types'\n\n/**\n * Get responsive text align styles.\n * @internal\n */\nexport function responsiveTextAlignStyle(\n props: ResponsiveTextAlignStyleProps & ThemeProps\n): CSSObject[] {\n const {theme} = props\n\n return _responsive(theme.sanity.media, props.$align, (textAlign) => {\n return {textAlign}\n })\n}\n","import {CSSObject} from 'styled-components'\nimport {ThemeProps} from '../types'\nimport {responsiveFont} from './responsiveFont'\nimport {ResponsiveFontStyleProps} from './types'\n\n/**\n * Get responsive CSS for the `text` font style.\n * @internal\n */\nexport function responsiveTextFont(props: ResponsiveFontStyleProps & ThemeProps): CSSObject[] {\n return responsiveFont('text', props)\n}\n","import {useMemo} from 'react'\nimport {_getArrayProp} from '../styles'\n\n/** @beta */\nexport type ArrayPropPrimitive = string | number | boolean | undefined | null\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function useArrayProp<T extends ArrayPropPrimitive = ArrayPropPrimitive>(\n val: T | T[] | undefined,\n defaultVal?: T[]\n): T[] {\n const __perf_hash__ = JSON.stringify(val ?? defaultVal)\n\n return useMemo(\n () => _getArrayProp(val, defaultVal),\n\n // Improve performance: Keep object identify for a given hash of the value\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [__perf_hash__]\n )\n}\n","import {useEffect, useRef, useState} from 'react'\nimport {EMPTY_ARRAY} from '../constants'\n\n/**\n * @public\n */\nexport type ClickOutsideListener = (event: MouseEvent) => void\n\nfunction _getElements(\n element: HTMLElement | null,\n elementsArg: Array<HTMLElement | HTMLElement[] | null>\n): HTMLElement[] {\n const ret = [element]\n\n for (const el of elementsArg) {\n if (Array.isArray(el)) {\n ret.push(...el)\n } else {\n ret.push(el)\n }\n }\n\n return ret.filter(Boolean) as HTMLElement[]\n}\n\n/**\n * @public\n */\nexport function useClickOutside(\n listener: ClickOutsideListener,\n elementsArg: Array<HTMLElement | HTMLElement[] | null> = EMPTY_ARRAY,\n boundaryElement?: HTMLElement | null\n): (el: HTMLElement | null) => void {\n const [element, setElement] = useState<HTMLElement | null>(null)\n const [elements, setElements] = useState(() => _getElements(element, elementsArg))\n const elementsRef = useRef(elements)\n\n useEffect(() => {\n const prevElements = elementsRef.current\n const nextElements = _getElements(element, elementsArg)\n\n if (prevElements.length !== nextElements.length) {\n setElements(nextElements)\n elementsRef.current = nextElements\n\n return\n }\n\n for (const el of prevElements) {\n if (!nextElements.includes(el)) {\n setElements(nextElements)\n elementsRef.current = nextElements\n\n return\n }\n }\n\n for (const el of nextElements) {\n if (!prevElements.includes(el)) {\n setElements(nextElements)\n elementsRef.current = nextElements\n\n return\n }\n }\n }, [element, elementsArg])\n\n useEffect(() => {\n if (!listener) return undefined\n\n const handleWindowMouseDown = (evt: MouseEvent) => {\n const target = evt.target\n\n if (!(target instanceof Node)) {\n return\n }\n\n if (boundaryElement && !boundaryElement.contains(target)) {\n return\n }\n\n for (const el of elements) {\n if (target === el || el.contains(target)) {\n return\n }\n }\n\n listener(evt)\n }\n\n window.addEventListener('mousedown', handleWindowMouseDown)\n\n return () => {\n window.removeEventListener('mousedown', handleWindowMouseDown)\n }\n }, [boundaryElement, listener, elements])\n\n return setElement\n}\n","import {ResizeObserver as ResizeObserverPolyfill} from '@juggle/resize-observer'\n\n/**\n * @internal\n */\nexport const _ResizeObserver: typeof ResizeObserver =\n typeof window !== 'undefined' && window.ResizeObserver\n ? window.ResizeObserver\n : ResizeObserverPolyfill\n","import {_ResizeObserver} from './resizeObserver'\n\n/**\n * @beta\n */\nexport interface ElementRectValue {\n width: number\n height: number\n}\n\n/**\n * @beta\n */\nexport interface ElementSize {\n content: ElementRectValue\n border: ElementRectValue\n\n /** @deprecated INTERNAL ONLY */\n _contentRect: DOMRectReadOnly\n}\n\n/**\n * @internal\n */\nexport type _ElementSizeSubscriber = (elementRect: ElementSize) => void\n\n/**\n * @internal\n */\nexport interface _ElementSizeObserver {\n subscribe: (element: HTMLElement, subscriber: _ElementSizeSubscriber) => () => void\n}\n\n/**\n * @internal\n */\nexport interface _ElementSizeListener {\n subscribe: (element: HTMLElement, subscriber: _ElementSizeSubscriber) => () => void\n}\n\n// Initialize element size observer\n// NOTE: this should NOT have size effects\n/**\n * @internal\n */\nexport const _elementSizeObserver = _createElementSizeObserver()\n\nfunction _createElementRectValueListener(): _ElementSizeListener {\n return {\n subscribe(element, subscriber) {\n const resizeObserver = new _ResizeObserver(([entry]) => {\n subscriber({\n _contentRect: entry.contentRect,\n border: {\n width: entry.borderBoxSize[0].inlineSize,\n height: entry.borderBoxSize[0].blockSize,\n },\n content: {\n width: entry.contentRect.width,\n height: entry.contentRect.height,\n },\n })\n })\n\n resizeObserver.observe(element)\n\n return () => {\n resizeObserver.unobserve(element)\n resizeObserver.disconnect()\n }\n },\n }\n}\n\nfunction _createElementSizeObserver(): _ElementSizeObserver {\n const disposeCache = new WeakMap<HTMLElement, () => void>()\n const subscribersCache = new WeakMap<HTMLElement, _ElementSizeSubscriber[]>()\n\n return {\n subscribe(element, subscriber) {\n const subscribers = subscribersCache.get(element) || []\n\n let dispose = disposeCache.get(element)\n\n if (!subscribersCache.has(element)) {\n subscribersCache.set(element, subscribers)\n\n const listener = _createElementRectValueListener()\n\n // listen\n dispose = listener.subscribe(element, (elementRect) => {\n for (const sub of subscribers) {\n sub(elementRect)\n }\n })\n }\n\n subscribers.push(subscriber)\n\n return () => {\n // dispose\n\n const idx = subscribers.indexOf(subscriber)\n\n if (idx > -1) {\n subscribers.splice(idx, 1)\n }\n\n if (subscribers.length === 0) {\n // unlisten\n if (dispose) dispose()\n }\n }\n },\n }\n}\n","import {useEffect, useState} from 'react'\nimport {ElementSize, _elementSizeObserver} from '../observers/elementSizeObserver'\n\n/**\n * Subscribe to the size of a DOM element.\n * @beta\n */\nexport function useElementSize(element: HTMLElement | null): ElementSize | null {\n const [size, setSize] = useState<ElementSize | null>(null)\n\n useEffect(() => {\n if (!element) return undefined\n\n return _elementSizeObserver.subscribe(element, setSize)\n }, [element])\n\n return size\n}\n","import {useElementSize} from '../useElementSize'\n\n/**\n * Subscribe to the rect of a DOM element.\n * @beta\n *\n * @deprecated Use `useElementSize` instead\n */\nexport function useElementRect(element: HTMLElement | null): DOMRectReadOnly | null {\n const elementSize = useElementSize(element)\n\n return elementSize?._contentRect || null\n}\n","import {useEffect} from 'react'\n\n/**\n * @beta\n */\nexport function useGlobalKeyDown(onKeyDown: (event: KeyboardEvent) => void): void {\n return useEffect(() => {\n addEventListener('keydown', onKeyDown)\n\n return () => removeEventListener('keydown', onKeyDown)\n }, [onKeyDown])\n}\n","import {RGB} from '../types'\n\nfunction multiplyChannel(b: number, s: number) {\n return b * s\n}\n\n/**\n * Apply the \\`multiply\\` blend mode\n * Source: https://www.w3.org/TR/compositing-1/#blendingmultiply\n * @internal\n */\nexport function multiply(b: RGB, s: RGB): RGB {\n return {\n r: Math.round(clamp(multiplyChannel(b.r / 255, s.r / 255) * 255)),\n g: Math.round(clamp(multiplyChannel(b.g / 255, s.g / 255) * 255)),\n b: Math.round(clamp(multiplyChannel(b.b / 255, s.b / 255) * 255)),\n }\n}\n\nfunction clamp(num: number) {\n return Math.max(Math.min(num, 255), 0)\n}\n","import {RGB} from '../types'\n\nfunction screenChannel(b: number, s: number) {\n return b + s - b * s\n}\n\n/**\n * Apply the \\`screen\\` blend mode\n * Source: https://www.w3.org/TR/compositing-1/#blendingscreen\n * @internal\n */\nexport function screen(b: RGB, s: RGB): RGB {\n return {\n r: Math.round(clamp(screenChannel(b.r / 255, s.r / 255) * 255)),\n g: Math.round(clamp(screenChannel(b.g / 255, s.g / 255) * 255)),\n b: Math.round(clamp(screenChannel(b.b / 255, s.b / 255) * 255)),\n }\n}\n\nfunction clamp(num: number) {\n return Math.max(Math.min(num, 255), 0)\n}\n","import {HSL, RGB} from './types'\n\n/**\n * @internal\n */\nexport function hexToRgb(hex: string): RGB {\n if (hex.length === 4) {\n const hexR = hex.slice(1, 2)\n const hexG = hex.slice(2, 3)\n const hexB = hex.slice(3, 4)\n\n return {\n r: parseInt(hexR + hexR, 16),\n g: parseInt(hexG + hexG, 16),\n b: parseInt(hexB + hexB, 16),\n }\n }\n\n return {\n r: parseInt(hex.slice(1, 3), 16),\n g: parseInt(hex.slice(3, 5), 16),\n b: parseInt(hex.slice(5, 7), 16),\n }\n}\n\n/**\n * @internal\n */\nexport function rgbToHex({r, g, b}: RGB): string {\n return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)\n}\n\n/**\n * @internal\n * @see https://css-tricks.com/converting-color-spaces-in-javascript/\n */\nexport function rgbToHsl({r, g, b}: RGB): HSL {\n // Make r, g, and b fractions of 1\n r /= 255\n g /= 255\n b /= 255\n\n // Find greatest and smallest channel values\n const cmin = Math.min(r, g, b)\n const cmax = Math.max(r, g, b)\n const delta = cmax - cmin\n\n let h = 0\n let s = 0\n let l = 0\n\n // Calculate hue\n // No difference\n if (delta == 0) h = 0\n // Red is max\n else if (cmax == r) h = ((g - b) / delta) % 6\n // Green is max\n else if (cmax == g) h = (b - r) / delta + 2\n // Blue is max\n else h = (r - g) / delta + 4\n\n h = Math.round(h * 60)\n\n // Make negative hues positive behind 360°\n if (h < 0) h += 360\n\n // Calculate lightness\n l = (cmax + cmin) / 2\n\n // Calculate saturation\n s = delta == 0 ? 0 : delta / (1 - Math.abs(2 * l - 1))\n\n // Multiply l and s by 100\n s = +(s * 100).toFixed(1)\n l = +(l * 100).toFixed(1)\n\n return {h, s, l}\n}\n\n/**\n * @internal\n */\nexport function hslToRgb(hsl: HSL): RGB {\n // Must be fractions of 1\n const s = hsl.s / 100\n const l = hsl.l / 100\n\n const c = (1 - Math.abs(2 * l - 1)) * s\n const x = c * (1 - Math.abs(((hsl.h / 60) % 2) - 1))\n const m = l - c / 2\n\n let r = 0\n let g = 0\n let b = 0\n\n if (0 <= hsl.h && hsl.h < 60) {\n r = c\n g = x\n b = 0\n } else if (60 <= hsl.h && hsl.h < 120) {\n r = x\n g = c\n b = 0\n } else if (120 <= hsl.h && hsl.h < 180) {\n r = 0\n g = c\n b = x\n } else if (180 <= hsl.h && hsl.h < 240) {\n r = 0\n g = x\n b = c\n } else if (240 <= hsl.h && hsl.h < 300) {\n r = x\n g = 0\n b = c\n } else if (300 <= hsl.h && hsl.h < 360) {\n r = c\n g = 0\n b = x\n }\n\n return {\n r: Math.round((r + m) * 255),\n g: Math.round((g + m) * 255),\n b: Math.round((b + m) * 255),\n }\n}\n","import {hexToRgb, hslToRgb} from './convert'\nimport {HSL, RGB} from './types'\n\nconst HEX_CHARS = '0123456789ABCDEFabcdef'\n\nconst HSL_RE = /hsl\\(\\s*(\\d+)\\s*,\\s*((\\d+(?:\\.\\d+)?)%)\\s*,\\s*((\\d+(?:\\.\\d+)?)%)\\s*\\)/i\n\nfunction isHexChars(str: string) {\n for (const c of str) {\n if (HEX_CHARS.indexOf(c) === -1) {\n return false\n }\n }\n\n return true\n}\n\nfunction isHex(str: string) {\n if (str[0] !== '#') return false\n\n // Accept both #000 and #000000\n if (!(str.length === 4 || str.length === 7)) return false\n\n return isHexChars(str.slice(1))\n}\n\nfunction parseHsl(str: string): HSL {\n const res = HSL_RE.exec(str)\n\n if (!res) {\n throw new Error(`parseHsl: string is not a HSL color: \"${str}\"`)\n }\n\n return {h: parseInt(res[1]), s: parseFloat(res[3]), l: parseFloat(res[5])}\n}\n\n/**\n * @internal\n */\nexport function parseColor(color: unknown): RGB {\n if (!color) return {r: 0, g: 0, b: 0}\n\n if (typeof color !== 'string') {\n throw new Error('parseColor: expected a string')\n }\n\n if (isHex(color)) {\n return hexToRgb(color)\n }\n\n if (color.startsWith('hsl(')) {\n return hslToRgb(parseHsl(color))\n }\n\n throw new Error(`parseColor: unexpected color format: \"${color}\"`)\n}\n","import {parseColor} from '../parse'\n\n/**\n * @internal\n */\nexport function rgba(color: unknown, a: number): string {\n const rgb = parseColor(color)\n\n return `rgba(${rgb.r},${rgb.g},${rgb.b},${a})`\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorMuted} from '../muted'\nimport {ThemeColorSolid} from '../solid'\nimport {ThemeColorButtonModeKey, ThemeColorButtonTones} from './types'\n\nexport function createButtonTones(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted,\n mode: ThemeColorButtonModeKey\n): ThemeColorButtonTones {\n return {\n default: opts.button({\n base,\n dark,\n solid: solid.default,\n muted: muted.default,\n mode,\n }),\n primary: opts.button({\n base,\n dark,\n solid: solid.primary,\n muted: muted.primary,\n mode,\n }),\n positive: opts.button({\n base,\n dark,\n solid: solid.positive,\n muted: muted.positive,\n mode,\n }),\n caution: opts.button({\n base,\n dark,\n solid: solid.caution,\n muted: muted.caution,\n mode,\n }),\n critical: opts.button({\n base,\n dark,\n solid: solid.critical,\n muted: muted.critical,\n mode,\n }),\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorMuted} from '../muted'\nimport {ThemeColorSolid} from '../solid'\nimport {createButtonTones} from './createButtonTones'\nimport {ThemeColorButton} from './types'\n\nexport function createButtonModes(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted\n): ThemeColorButton {\n return {\n default: createButtonTones(opts, base, dark, solid, muted, 'default'),\n ghost: createButtonTones(opts, base, dark, solid, muted, 'ghost'),\n bleed: createButtonTones(opts, base, dark, solid, muted, 'bleed'),\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorMuted} from '../muted'\nimport {ThemeColorSolid} from '../solid'\nimport {ThemeColorName} from '../types'\nimport {ThemeColorCard} from './types'\n\nexport function createCardStates(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n name: ThemeColorName,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted\n): ThemeColorCard {\n return {\n enabled: opts.card({\n base,\n dark,\n name,\n state: 'enabled',\n solid,\n muted,\n }),\n disabled: opts.card({\n base,\n dark,\n name,\n state: 'disabled',\n solid,\n muted,\n }),\n hovered: opts.card({\n base,\n dark,\n name,\n state: 'hovered',\n solid,\n muted,\n }),\n pressed: opts.card({\n base,\n dark,\n name,\n state: 'pressed',\n solid,\n muted,\n }),\n selected: opts.card({\n base,\n dark,\n name,\n state: 'selected',\n solid,\n muted,\n }),\n }\n}\n","import {ThemeColorBuilderOpts} from './factory'\n\nconst black = 'hsl(0, 0%, 0%)'\nconst white = 'hsl(0, 0%, 100%)'\n\nconst colors = {\n default: {\n lightest: 'hsl(0, 0%, 95%)',\n lighter: 'hsl(0, 0%, 70%)',\n light: 'hsl(0, 0%, 65%)',\n base: 'hsl(0, 0%, 50%)',\n dark: 'hsl(0, 0%, 35%)',\n darker: 'hsl(0, 0%, 20%)',\n darkest: 'hsl(0, 0%, 5%)',\n },\n transparent: {\n lightest: 'hsl(240, 100%, 95%)',\n lighter: 'hsl(240, 100%, 70%)',\n light: 'hsl(240, 100%, 65%)',\n base: 'hsl(240, 100%, 50%)',\n dark: 'hsl(240, 100%, 35%)',\n darker: 'hsl(240, 100%, 20%)',\n darkest: 'hsl(240, 100%, 5%)',\n },\n primary: {\n lightest: 'hsl(240, 100%, 95%)',\n lighter: 'hsl(240, 100%, 70%)',\n light: 'hsl(240, 100%, 65%)',\n base: 'hsl(240, 100%, 50%)',\n dark: 'hsl(240, 100%, 35%)',\n darker: 'hsl(240, 100%, 20%)',\n darkest: 'hsl(240, 100%, 5%)',\n },\n positive: {\n lightest: 'hsl(120, 100%, 95%)',\n lighter: 'hsl(120, 100%, 70%)',\n light: 'hsl(120, 100%, 65%)',\n base: 'hsl(120, 100%, 50%)',\n dark: 'hsl(120, 100%, 35%)',\n darker: 'hsl(120, 100%, 20%)',\n darkest: 'hsl(120, 100%, 5%)',\n },\n caution: {\n lightest: 'hsl(60, 100%, 95%)',\n lighter: 'hsl(60, 100%, 70%)',\n light: 'hsl(60, 100%, 65%)',\n base: 'hsl(60, 100%, 50%)',\n dark: 'hsl(60, 100%, 35%)',\n darker: 'hsl(60, 100%, 20%)',\n darkest: 'hsl(60, 100%, 5%)',\n },\n critical: {\n lightest: 'hsl(0, 100%, 95%)',\n lighter: 'hsl(0, 100%, 70%)',\n light: 'hsl(0, 100%, 65%)',\n base: 'hsl(0, 100%, 50%)',\n dark: 'hsl(0, 100%, 35%)',\n darker: 'hsl(0, 100%, 20%)',\n darkest: 'hsl(0, 100%, 5%)',\n },\n}\n\nconst spots = {\n gray: 'hsl(0, 0%, 50%)',\n red: 'hsl(0, 100%, 50%)',\n orange: 'hsl(30, 100%, 50%)',\n yellow: 'hsl(60, 100%, 50%)',\n green: 'hsl(120, 100%, 50%)',\n cyan: 'hsl(180, 100%, 50%)',\n blue: 'hsl(240, 100%, 50%)',\n purple: 'hsl(270, 100%, 50%)',\n magenta: 'hsl(300, 100%, 50%)',\n}\n\nconst tones = {\n transparent: {\n bg: [colors.transparent.darkest, colors.transparent.lightest],\n fg: [colors.transparent.lightest, colors.transparent.darkest],\n border: [colors.transparent.darker, colors.transparent.lighter],\n focusRing: [colors.transparent.base, colors.transparent.base],\n },\n primary: {\n bg: [colors.primary.darkest, colors.primary.lightest],\n fg: [colors.primary.lightest, colors.primary.darkest],\n border: [colors.primary.darker, colors.primary.lighter],\n focusRing: [colors.primary.base, colors.primary.base],\n },\n positive: {\n bg: [colors.positive.darkest, colors.positive.lightest],\n fg: [colors.positive.lightest, colors.positive.darkest],\n border: [colors.positive.darker, colors.positive.lighter],\n focusRing: [colors.positive.base, colors.positive.base],\n },\n caution: {\n bg: [colors.caution.darkest, colors.caution.lightest],\n fg: [colors.caution.lightest, colors.caution.darkest],\n border: [colors.caution.darker, colors.caution.lighter],\n focusRing: [colors.caution.base, colors.caution.base],\n },\n critical: {\n bg: [colors.critical.darkest, colors.critical.lightest],\n fg: [colors.critical.lightest, colors.critical.darkest],\n border: [colors.critical.darker, colors.critical.lighter],\n focusRing: [colors.critical.base, colors.critical.base],\n },\n}\n\nexport const defaultOpts: ThemeColorBuilderOpts = {\n base: ({dark, name}) => {\n if (name === 'default') {\n return {\n bg: dark ? black : white,\n fg: dark ? white : black,\n border: dark ? colors.default.darkest : colors.default.lightest,\n focusRing: colors.primary.base,\n shadow: {\n outline: black,\n umbra: black,\n penumbra: black,\n ambient: black,\n },\n skeleton: {\n from: dark ? white : black,\n to: dark ? white : black,\n },\n }\n }\n\n // Variants:\n // - primary\n // - positive\n // - caution\n // - critical\n return {\n bg: tones[name].bg[dark ? 0 : 1],\n fg: tones[name].fg[dark ? 0 : 1],\n border: tones[name].border[dark ? 0 : 1],\n focusRing: tones[name].focusRing[dark ? 0 : 1],\n shadow: {\n outline: black,\n umbra: black,\n penumbra: black,\n ambient: black,\n },\n skeleton: {\n from: dark ? white : black,\n to: dark ? white : black,\n },\n }\n },\n\n solid: ({base, dark, state, tone}) => {\n const color = colors[tone]\n\n if (state === 'hovered') {\n return {\n bg: dark ? color.light : color.dark,\n bg2: dark ? color.light : color.dark,\n border: dark ? color.lighter : color.darker,\n fg: dark ? color.darkest : color.lightest,\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n }\n }\n\n return {\n bg: color.base,\n bg2: color.base,\n border: dark ? color.light : color.dark,\n fg: dark ? color.darkest : color.lightest,\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n }\n },\n\n muted: ({base, dark, state, tone}) => {\n const color = colors[tone]\n\n if (state === 'hovered') {\n return {\n bg: dark ? color.darker : color.lighter,\n bg2: dark ? color.darker : color.lighter,\n border: dark ? color.lighter : color.darker,\n fg: dark ? color.lightest : color.darkest,\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n }\n }\n\n return {\n bg: dark ? color.darkest : color.lightest,\n bg2: dark ? color.darkest : color.lightest,\n border: dark ? color.darker : color.lighter,\n fg: dark ? color.lighter : color.darker,\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n }\n },\n\n button: ({base, mode, muted, solid}) => {\n if (mode === 'bleed') {\n return {\n ...muted,\n enabled: {\n bg: 'transparent',\n bg2: 'transparent',\n fg: muted.enabled.fg,\n border: 'transparent',\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n },\n hovered: {\n bg: muted.enabled.bg,\n bg2: muted.enabled.bg,\n fg: muted.hovered.fg,\n border: 'transparent',\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n },\n }\n }\n\n if (mode === 'ghost')\n return {\n ...solid,\n enabled: muted.enabled,\n }\n\n return solid\n },\n\n card: ({base}) => {\n return {\n bg: black,\n bg2: black,\n fg: black,\n border: black,\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n }\n },\n\n input: () => {\n return {\n bg: black,\n fg: black,\n border: black,\n placeholder: black,\n }\n },\n\n selectable: ({muted, state, tone}) => {\n return muted[tone][state]\n },\n\n spot: ({key}) => {\n return spots[key]\n },\n\n syntax: () => ({\n atrule: black,\n attrName: black,\n attrValue: black,\n attribute: black,\n boolean: black,\n builtin: black,\n cdata: black,\n char: black,\n class: black,\n className: black,\n comment: black,\n constant: black,\n deleted: black,\n doctype: black,\n entity: black,\n function: black,\n hexcode: black,\n id: black,\n important: black,\n inserted: black,\n keyword: black,\n number: black,\n operator: black,\n prolog: black,\n property: black,\n pseudoClass: black,\n pseudoElement: black,\n punctuation: black,\n regex: black,\n selector: black,\n string: black,\n symbol: black,\n tag: black,\n unit: black,\n url: black,\n variable: black,\n }),\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorMuted} from '../muted'\nimport {ThemeColorSolid} from '../solid'\nimport {ThemeColorInput} from './types'\n\nexport function createInputModes(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted\n): ThemeColorInput {\n return {\n default: {\n enabled: opts.input({\n base,\n dark,\n mode: 'default',\n state: 'enabled',\n solid: solid.default,\n muted: muted.default,\n }),\n disabled: opts.input({\n base,\n dark,\n mode: 'default',\n state: 'disabled',\n solid: solid.default,\n muted: muted.default,\n }),\n hovered: opts.input({\n base,\n dark,\n mode: 'default',\n state: 'hovered',\n solid: solid.default,\n muted: muted.default,\n }),\n readOnly: opts.input({\n base,\n dark,\n mode: 'default',\n state: 'readOnly',\n solid: solid.default,\n muted: muted.default,\n }),\n },\n invalid: {\n enabled: opts.input({\n base,\n dark,\n mode: 'invalid',\n state: 'enabled',\n solid: solid.default,\n muted: muted.default,\n }),\n disabled: opts.input({\n base,\n dark,\n mode: 'invalid',\n state: 'disabled',\n solid: solid.default,\n muted: muted.default,\n }),\n hovered: opts.input({\n base,\n dark,\n mode: 'invalid',\n state: 'hovered',\n solid: solid.default,\n muted: muted.default,\n }),\n readOnly: opts.input({\n base,\n dark,\n mode: 'invalid',\n state: 'readOnly',\n solid: solid.default,\n muted: muted.default,\n }),\n },\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorMuted} from '../muted'\nimport {ThemeColorSolid} from '../solid'\nimport {ThemeColorSelectable, ThemeColorSelectableStates} from './types'\n\nexport function createSelectableTones(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted\n): ThemeColorSelectable {\n return {\n default: _createSelectableStates(opts, base, dark, solid, muted, 'default'),\n primary: _createSelectableStates(opts, base, dark, solid, muted, 'primary'),\n positive: _createSelectableStates(opts, base, dark, solid, muted, 'positive'),\n caution: _createSelectableStates(opts, base, dark, solid, muted, 'caution'),\n critical: _createSelectableStates(opts, base, dark, solid, muted, 'critical'),\n }\n}\n\nfunction _createSelectableStates(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted,\n tone: 'default' | 'primary' | 'positive' | 'caution' | 'critical'\n): ThemeColorSelectableStates {\n return {\n enabled: opts.selectable({\n base,\n dark,\n solid,\n muted,\n state: 'enabled',\n tone,\n }),\n hovered: opts.selectable({\n base,\n dark,\n solid,\n muted,\n state: 'hovered',\n tone,\n }),\n pressed: opts.selectable({\n base,\n dark,\n solid,\n muted,\n state: 'pressed',\n tone,\n }),\n selected: opts.selectable({\n base,\n dark,\n solid,\n muted,\n state: 'selected',\n tone,\n }),\n disabled: opts.selectable({\n base,\n dark,\n solid,\n muted,\n state: 'disabled',\n tone,\n }),\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorSpot} from './types'\n\nexport function createSpot(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean\n): ThemeColorSpot {\n return {\n gray: opts.spot({base, dark, key: 'gray'}),\n blue: opts.spot({base, dark, key: 'blue'}),\n purple: opts.spot({base, dark, key: 'purple'}),\n magenta: opts.spot({base, dark, key: 'magenta'}),\n red: opts.spot({base, dark, key: 'red'}),\n orange: opts.spot({base, dark, key: 'orange'}),\n yellow: opts.spot({base, dark, key: 'yellow'}),\n green: opts.spot({base, dark, key: 'green'}),\n cyan: opts.spot({base, dark, key: 'cyan'}),\n }\n}\n","import {ThemeColorGenericState} from './_generic'\nimport {ThemeColorBase} from './base'\nimport {ThemeColorButtonModeKey, ThemeColorButtonStates} from './button'\nimport {createButtonModes} from './button/createButtonModes'\nimport {ThemeColorCardState} from './card'\nimport {createCardStates} from './card/createCardStates'\nimport {defaultOpts} from './defaults'\nimport {ThemeColorInputState} from './input'\nimport {createInputModes} from './input/createInputModes'\nimport {ThemeColorMuted, ThemeColorMutedTone} from './muted'\nimport {createMutedTones} from './muted/createMuted'\nimport {ThemeColorSelectableState} from './selectable'\nimport {createSelectableTones} from './selectable/createSelectableTones'\nimport {ThemeColorSolid, ThemeColorSolidTone} from './solid'\nimport {createSolidTones} from './solid/createSolidTones'\nimport {ThemeColorSpotKey} from './spot'\nimport {createSpot} from './spot/createSpot'\nimport {ThemeColorSyntax} from './syntax'\nimport {\n ThemeColorName,\n ThemeColorScheme,\n ThemeColorSchemes,\n ThemeColor,\n ThemeColorToneKey,\n} from './types'\n\n/**\n * @public\n */\nexport interface ThemeColorBuilderOpts {\n base: (opts: {dark: boolean; name: ThemeColorName}) => ThemeColorBase\n solid: (opts: {\n base: ThemeColorBase\n dark: boolean\n tone: ThemeColorToneKey\n name: ThemeColorName\n state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'\n }) => ThemeColorGenericState\n muted: (opts: {\n base: ThemeColorBase\n dark: boolean\n tone: ThemeColorToneKey\n name: ThemeColorName\n state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'\n }) => ThemeColorGenericState\n card: (opts: {\n base: ThemeColorBase\n dark: boolean\n muted: ThemeColorMuted\n name: ThemeColorName\n solid: ThemeColorSolid\n state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'\n }) => ThemeColorCardState\n button: (opts: {\n dark: boolean\n mode: ThemeColorButtonModeKey\n base: ThemeColorBase\n solid: ThemeColorSolidTone\n muted: ThemeColorMutedTone\n }) => ThemeColorButtonStates\n input: (opts: {\n base: ThemeColorBase\n solid: ThemeColorSolidTone\n muted: ThemeColorMutedTone\n dark: boolean\n mode: 'default' | 'invalid'\n state: 'enabled' | 'disabled' | 'hovered' | 'readOnly'\n }) => ThemeColorInputState\n selectable: (opts: {\n dark: boolean\n base: ThemeColorBase\n solid: ThemeColorSolid\n muted: ThemeColorMuted\n state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'\n tone: 'default' | 'primary' | 'positive' | 'caution' | 'critical'\n }) => ThemeColorSelectableState\n syntax: (opts: {base: ThemeColorBase; dark: boolean}) => ThemeColorSyntax\n spot: (opts: {base: ThemeColorBase; dark: boolean; key: ThemeColorSpotKey}) => string\n}\n\n/**\n * @public\n */\nexport type PartialThemeColorBuilderOpts = Partial<ThemeColorBuilderOpts>\n\n/**\n * @public\n */\nexport function createColorTheme(\n partialOpts: PartialThemeColorBuilderOpts = {}\n): ThemeColorSchemes {\n const builders: ThemeColorBuilderOpts = {...defaultOpts, ...partialOpts}\n\n return {\n light: _createColorScheme(builders, false),\n dark: _createColorScheme(builders, true),\n }\n}\n\n/**\n * @internal\n */\nfunction _createColorScheme(opts: ThemeColorBuilderOpts, dark: boolean): ThemeColorScheme {\n return {\n default: _createColor(opts, dark, 'default'),\n transparent: _createColor(opts, dark, 'transparent'),\n primary: _createColor(opts, dark, 'primary'),\n positive: _createColor(opts, dark, 'positive'),\n caution: _createColor(opts, dark, 'caution'),\n critical: _createColor(opts, dark, 'critical'),\n }\n}\n\n/**\n * @internal\n */\nfunction _createColor(\n opts: ThemeColorBuilderOpts,\n dark: boolean,\n name: ThemeColorName\n): ThemeColor {\n const base = opts.base({dark, name})\n const solid = createSolidTones(opts, base, dark, name)\n const muted = createMutedTones(opts, base, dark, name)\n\n return {\n base,\n button: createButtonModes(opts, base, dark, solid, muted),\n card: createCardStates(opts, base, dark, name, solid, muted),\n dark,\n input: createInputModes(opts, base, dark, solid, muted),\n selectable: createSelectableTones(opts, base, dark, solid, muted),\n spot: createSpot(opts, base, dark),\n syntax: opts.syntax({base, dark}),\n solid,\n muted,\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorName} from '../types'\nimport {ThemeColorSolid} from './types'\n\nexport function createSolidTones(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n name: ThemeColorName\n): ThemeColorSolid {\n return {\n default: {\n enabled: opts.solid({base, dark, tone: 'default', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'default', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'default', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'default', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'default', name, state: 'selected'}),\n },\n transparent: {\n enabled: opts.solid({base, dark, tone: 'transparent', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'transparent', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'transparent', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'transparent', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'transparent', name, state: 'selected'}),\n },\n primary: {\n enabled: opts.solid({base, dark, tone: 'primary', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'primary', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'primary', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'primary', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'primary', name, state: 'selected'}),\n },\n positive: {\n enabled: opts.solid({base, dark, tone: 'positive', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'positive', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'positive', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'positive', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'positive', name, state: 'selected'}),\n },\n caution: {\n enabled: opts.solid({base, dark, tone: 'caution', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'caution', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'caution', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'caution', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'caution', name, state: 'selected'}),\n },\n critical: {\n enabled: opts.solid({base, dark, tone: 'critical', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'critical', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'critical', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'critical', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'critical', name, state: 'selected'}),\n },\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorName} from '../types'\nimport {ThemeColorMuted} from './types'\n\nexport function createMutedTones(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n name: ThemeColorName\n): ThemeColorMuted {\n return {\n default: {\n enabled: opts.muted({base, dark, tone: 'default', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'default', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'default', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'default', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'default', name, state: 'selected'}),\n },\n transparent: {\n enabled: opts.muted({base, dark, tone: 'transparent', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'transparent', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'transparent', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'transparent', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'transparent', name, state: 'selected'}),\n },\n primary: {\n enabled: opts.muted({base, dark, tone: 'primary', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'primary', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'primary', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'primary', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'primary', name, state: 'selected'}),\n },\n positive: {\n enabled: opts.muted({base, dark, tone: 'positive', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'positive', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'positive', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'positive', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'positive', name, state: 'selected'}),\n },\n caution: {\n enabled: opts.muted({base, dark, tone: 'caution', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'caution', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'caution', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'caution', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'caution', name, state: 'selected'}),\n },\n critical: {\n enabled: opts.muted({base, dark, tone: 'critical', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'critical', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'critical', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'critical', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'critical', name, state: 'selected'}),\n },\n }\n}\n","import {parseColor, rgbToHex, screen as _screen, multiply as _multiply} from '../lib/color-fns'\n\nexport function multiply(bg: string, fg: string): string {\n const b = parseColor(bg)\n const s = parseColor(fg)\n const hex = rgbToHex(_multiply(b, s))\n\n return hex\n}\n\nexport function screen(bg: string, fg: string): string {\n const b = parseColor(bg)\n const s = parseColor(fg)\n const hex = rgbToHex(_screen(b, s))\n\n return hex\n}\n","import {black, ColorTints, hues, white} from '@sanity/color'\nimport {rgba} from '../lib/color-fns'\nimport {createColorTheme} from '../lib/theme'\nimport {multiply, screen} from './helpers'\n\nconst tones: {[key: string]: ColorTints} = {\n default: hues.gray,\n transparent: hues.gray,\n primary: hues.blue,\n positive: hues.green,\n caution: hues.yellow,\n critical: hues.red,\n}\n\nconst NEUTRAL_TONES = ['default', 'transparent']\n\nexport const color = createColorTheme({\n base: ({dark, name}) => {\n if (name === 'default') {\n const tints = hues.gray\n const skeletonFrom = dark ? tints[900].hex : tints[100].hex\n\n return {\n fg: dark ? white.hex : black.hex,\n bg: dark ? black.hex : white.hex,\n border: tints[dark ? 800 : 200].hex,\n focusRing: hues.blue[dark ? 500 : 500].hex,\n shadow: {\n outline: rgba(tints[500].hex, 0.4),\n umbra: dark ? rgba(tints[950].hex, 0.4) : rgba(tints[500].hex, 0.2),\n penumbra: dark ? rgba(tints[950].hex, 0.28) : rgba(tints[500].hex, 0.14),\n ambient: dark ? rgba(tints[950].hex, 0.24) : rgba(tints[500].hex, 0.12),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (name === 'transparent') {\n const tints = tones.default\n const skeletonFrom = tints[dark ? 800 : 200].hex\n\n return {\n fg: tints[dark ? 100 : 900].hex,\n bg: tints[dark ? 950 : 50].hex,\n border: tints[dark ? 800 : 300].hex,\n focusRing: hues.blue[500].hex,\n shadow: {\n outline: rgba(tints[500].hex, 0.4),\n umbra: dark ? rgba(tints[900].hex, 0.4) : rgba(tints[500].hex, 0.2),\n penumbra: dark ? rgba(tints[900].hex, 0.28) : rgba(tints[500].hex, 0.14),\n ambient: dark ? rgba(tints[900].hex, 0.24) : rgba(tints[500].hex, 0.12),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n const tints = tones[name] || tones.default\n const skeletonFrom = tints[dark ? 800 : 200].hex\n\n return {\n fg: tints[dark ? 100 : 900].hex,\n bg: tints[dark ? 950 : 50].hex,\n border: tints[dark ? 800 : 200].hex,\n focusRing: tints[500].hex,\n shadow: {\n outline: rgba(tints[500].hex, 0.4),\n umbra: dark ? rgba(tints[900].hex, 0.4) : rgba(tints[500].hex, 0.2),\n penumbra: dark ? rgba(tints[900].hex, 0.28) : rgba(tints[500].hex, 0.14),\n ambient: dark ? rgba(tints[900].hex, 0.24) : rgba(tints[500].hex, 0.12),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n solid: ({base, dark, name, state, tone}) => {\n const mix = dark ? screen : multiply\n const mix2 = dark ? multiply : screen\n const defaultTints = tones[name] || tones.default\n const isNeutral = NEUTRAL_TONES.includes(name) && NEUTRAL_TONES.includes(tone)\n\n let tints = tones[tone === 'default' ? name : tone] || defaultTints\n\n if (state === 'disabled') {\n tints = defaultTints\n\n const bg = mix(base.bg, tints[dark ? 800 : 200].hex)\n const skeletonFrom = mix2(bg, tints[dark ? 200 : 800].hex)\n\n return {\n bg,\n bg2: mix2(bg, tints[dark ? 50 : 950].hex),\n border: mix(base.bg, tints[dark ? 800 : 200].hex),\n fg: mix(base.bg, dark ? black.hex : white.hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 950 : 50].hex),\n },\n accent: {\n fg: mix(base.bg, tints[dark ? 950 : 50].hex),\n },\n link: {\n fg: mix(base.bg, tints[dark ? 950 : 50].hex),\n },\n code: {\n bg,\n fg: mix(base.bg, tints[dark ? 950 : 50].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'hovered') {\n const bg = mix(base.bg, tints[dark ? 300 : 600].hex)\n const skeletonFrom = mix2(bg, tints[dark ? 200 : 800].hex)\n\n return {\n bg,\n bg2: mix2(bg, tints[dark ? 50 : 950].hex),\n border: mix(base.bg, tints[dark ? 300 : 600].hex),\n fg: mix(base.bg, dark ? black.hex : white.hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n accent: {\n fg: mix2(bg, hues.red[dark ? 800 : 200].hex),\n },\n link: {\n fg: mix2(bg, hues.blue[dark ? 800 : 200].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'pressed') {\n const bg = mix(base.bg, tints[dark ? 200 : 800].hex)\n const skeletonFrom = mix2(bg, tints[dark ? 200 : 800].hex)\n\n return {\n bg: mix(base.bg, tints[dark ? 200 : 800].hex),\n bg2: mix2(bg, tints[dark ? 50 : 950].hex),\n border: mix(base.bg, tints[dark ? 200 : 800].hex),\n fg: mix(base.bg, dark ? black.hex : white.hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n accent: {\n fg: mix2(bg, hues.red[dark ? 800 : 200].hex),\n },\n link: {\n fg: mix2(bg, hues.blue[dark ? 800 : 200].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'selected') {\n if (isNeutral) {\n tints = tones.primary\n }\n\n const bg = mix(base.bg, tints[dark ? 200 : 800].hex)\n const skeletonFrom = mix2(bg, tints[dark ? 200 : 800].hex)\n\n return {\n bg,\n bg2: mix2(bg, tints[dark ? 50 : 950].hex),\n border: mix(base.bg, tints[dark ? 200 : 800].hex),\n fg: mix(base.bg, dark ? black.hex : white.hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n accent: {\n fg: mix2(bg, hues.red[dark ? 800 : 200].hex),\n },\n link: {\n fg: mix2(bg, hues.blue[dark ? 800 : 200].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n // state: \"enabled\" | unknown\n const bg = mix(base.bg, tints[dark ? 400 : 500].hex)\n const skeletonFrom = mix2(bg, tints[dark ? 200 : 800].hex)\n\n return {\n bg,\n bg2: mix2(bg, tints[dark ? 50 : 950].hex),\n border: mix(base.bg, tints[dark ? 400 : 500].hex),\n fg: mix(base.bg, dark ? black.hex : white.hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 900 : 100].hex),\n },\n accent: {\n fg: mix2(bg, hues.red[dark ? 900 : 100].hex),\n },\n link: {\n fg: mix2(bg, hues.blue[dark ? 900 : 100].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 900 : 100].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n muted: ({base, dark, name, state, tone}) => {\n const mix = dark ? screen : multiply\n const defaultTints = tones[name] || tones.default\n const isNeutral = NEUTRAL_TONES.includes(name) && NEUTRAL_TONES.includes(tone)\n\n let tints = tones[tone === 'default' ? name : tone] || defaultTints\n\n if (state === 'disabled') {\n tints = defaultTints\n\n const bg = base.bg\n const skeletonFrom = mix(bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n border: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(bg, tints[dark ? 800 : 200].hex),\n muted: {\n fg: mix(bg, tints[dark ? 900 : 100].hex),\n },\n accent: {\n fg: mix(bg, tints[dark ? 900 : 100].hex),\n },\n link: {\n fg: mix(bg, tints[dark ? 900 : 100].hex),\n },\n code: {\n bg,\n fg: mix(bg, tints[dark ? 900 : 100].hex),\n },\n skeleton: {\n from: rgba(skeletonFrom, 0.5),\n to: rgba(skeletonFrom, 0.25),\n },\n }\n }\n\n if (state === 'hovered') {\n // if (isNeutral) {\n // tints = tones.primary\n // }\n\n const bg = mix(base.bg, tints[dark ? 950 : 50].hex)\n const skeletonFrom = mix(bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n border: mix(bg, tints[dark ? 900 : 100].hex),\n fg: mix(base.bg, tints[dark ? 200 : 800].hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n accent: {\n fg: mix(base.bg, hues.red[dark ? 400 : 500].hex),\n },\n link: {\n fg: mix(base.bg, hues.blue[dark ? 400 : 600].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'pressed') {\n if (isNeutral) {\n tints = tones.primary\n }\n\n const bg = mix(base.bg, tints[dark ? 900 : 100].hex)\n const skeletonFrom = mix(bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n border: mix(bg, tints[dark ? 900 : 100].hex),\n fg: mix(base.bg, tints[dark ? 200 : 800].hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n accent: {\n fg: mix(bg, hues.red[dark ? 400 : 500].hex),\n },\n link: {\n fg: mix(bg, hues.blue[dark ? 400 : 600].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'selected') {\n if (isNeutral) {\n tints = tones.primary\n }\n\n const bg = mix(base.bg, tints[dark ? 900 : 100].hex)\n const skeletonFrom = mix(bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n border: mix(bg, tints[dark ? 900 : 100].hex),\n fg: mix(base.bg, tints[dark ? 200 : 800].hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n accent: {\n fg: mix(bg, hues.red[dark ? 400 : 500].hex),\n },\n link: {\n fg: mix(bg, hues.blue[dark ? 400 : 600].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n const bg = base.bg\n const skeletonFrom = mix(bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n border: mix(bg, tints[dark ? 900 : 100].hex),\n fg: mix(base.bg, tints[dark ? 300 : 700].hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n accent: {\n fg: mix(base.bg, hues.red[dark ? 400 : 500].hex),\n },\n link: {\n fg: mix(base.bg, hues.blue[dark ? 400 : 600].hex),\n },\n code: {\n bg: mix(base.bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n button: ({base, mode, muted, solid}) => {\n if (mode === 'bleed') {\n return {\n enabled: {\n ...muted.enabled,\n border: muted.enabled.bg,\n },\n hovered: {\n ...muted.hovered,\n border: muted.hovered.bg,\n },\n pressed: {\n ...muted.pressed,\n border: muted.pressed.bg,\n },\n selected: {\n ...muted.selected,\n border: muted.selected.bg,\n },\n disabled: {\n ...muted.disabled,\n border: muted.disabled.bg,\n },\n }\n }\n\n if (mode === 'ghost') {\n return {\n ...solid,\n enabled: {\n ...muted.enabled,\n border: base.border,\n },\n disabled: muted.disabled,\n }\n }\n\n return solid\n },\n\n card: ({base, dark, muted, name, solid, state}) => {\n if (state === 'hovered') {\n return muted[name].hovered\n }\n\n if (state === 'disabled') {\n return muted[name].disabled\n }\n\n const isNeutral = NEUTRAL_TONES.includes(name)\n const tints = tones[name] || tones.default\n const mix = dark ? screen : multiply\n\n if (state === 'pressed') {\n if (isNeutral) {\n return muted.primary.pressed\n }\n\n return muted[name].pressed\n }\n\n if (state === 'selected') {\n if (isNeutral) {\n return solid.primary.enabled\n }\n\n return solid[name].enabled\n }\n\n const bg = base.bg\n const skeletonFrom = mix(base.bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n fg: base.fg,\n border: base.border,\n muted: {\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n accent: {\n fg: mix(base.bg, hues.red[dark ? 400 : 500].hex),\n },\n link: {\n fg: mix(base.bg, hues.blue[dark ? 400 : 600].hex),\n },\n code: {\n bg: mix(base.bg, tints[dark ? 950 : 50].hex),\n fg: tints[dark ? 400 : 600].hex,\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n input: ({base, dark, mode, state}) => {\n const mix = dark ? screen : multiply\n\n if (mode === 'invalid') {\n const tints = tones.critical\n\n return {\n bg: mix(base.bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n border: mix(base.bg, tints[dark ? 800 : 200].hex),\n placeholder: mix(base.bg, tints[dark ? 600 : 400].hex),\n }\n }\n\n if (state === 'hovered') {\n return {\n bg: base.bg,\n fg: base.fg,\n border: mix(base.bg, hues.gray[dark ? 700 : 300].hex),\n placeholder: mix(base.bg, hues.gray[dark ? 600 : 400].hex),\n }\n }\n\n if (state === 'disabled') {\n return {\n bg: mix(base.bg, hues.gray[dark ? 950 : 50].hex),\n fg: mix(base.bg, hues.gray[dark ? 700 : 300].hex),\n border: mix(base.bg, hues.gray[dark ? 900 : 100].hex),\n placeholder: mix(base.bg, hues.gray[dark ? 800 : 200].hex),\n }\n }\n\n if (state === 'readOnly') {\n return {\n bg: mix(base.bg, hues.gray[dark ? 950 : 50].hex),\n fg: mix(base.bg, hues.gray[dark ? 200 : 800].hex),\n border: mix(base.bg, hues.gray[dark ? 800 : 200].hex),\n placeholder: mix(base.bg, hues.gray[dark ? 600 : 400].hex),\n }\n }\n\n return {\n bg: base.bg,\n fg: base.fg,\n border: base.border,\n placeholder: mix(base.bg, hues.gray[dark ? 600 : 400].hex),\n }\n },\n\n selectable: ({base, muted, tone, solid, state}) => {\n if (state === 'enabled') {\n return {\n ...muted[tone].enabled,\n bg: base.bg,\n }\n }\n\n if (state === 'pressed') {\n if (tone === 'default') {\n return muted.primary.pressed\n }\n\n return muted[tone].pressed\n }\n\n if (state === 'selected') {\n if (tone === 'default') {\n return solid.primary.enabled\n }\n\n return solid[tone].enabled\n }\n\n if (state === 'disabled') {\n return {\n ...muted[tone].disabled,\n bg: base.bg,\n }\n }\n\n return muted[tone][state]\n },\n\n spot: ({base, dark, key}) => {\n const mix = dark ? screen : multiply\n\n return mix(base.bg, hues[key][dark ? 400 : 500].hex)\n },\n\n syntax: ({base, dark}) => {\n const mix = dark ? screen : multiply\n const mainShade = dark ? 400 : 600\n const secondaryShade = dark ? 600 : 400\n\n return {\n atrule: mix(base.bg, hues.purple[mainShade].hex),\n attrName: mix(base.bg, hues.green[mainShade].hex),\n attrValue: mix(base.bg, hues.yellow[mainShade].hex),\n attribute: mix(base.bg, hues.yellow[mainShade].hex),\n boolean: mix(base.bg, hues.purple[mainShade].hex),\n builtin: mix(base.bg, hues.purple[mainShade].hex),\n cdata: mix(base.bg, hues.yellow[mainShade].hex),\n char: mix(base.bg, hues.yellow[mainShade].hex),\n class: mix(base.bg, hues.orange[mainShade].hex),\n className: mix(base.bg, hues.cyan[mainShade].hex),\n comment: mix(base.bg, hues.gray[secondaryShade].hex),\n constant: mix(base.bg, hues.purple[mainShade].hex),\n deleted: mix(base.bg, hues.red[mainShade].hex),\n doctype: mix(base.bg, hues.gray[secondaryShade].hex),\n entity: mix(base.bg, hues.red[mainShade].hex),\n function: mix(base.bg, hues.green[mainShade].hex),\n hexcode: mix(base.bg, hues.blue[mainShade].hex),\n id: mix(base.bg, hues.purple[mainShade].hex),\n important: mix(base.bg, hues.purple[mainShade].hex),\n inserted: mix(base.bg, hues.yellow[mainShade].hex),\n keyword: mix(base.bg, hues.magenta[mainShade].hex),\n number: mix(base.bg, hues.purple[mainShade].hex),\n operator: mix(base.bg, hues.magenta[mainShade].hex),\n prolog: mix(base.bg, hues.gray[secondaryShade].hex),\n property: mix(base.bg, hues.blue[mainShade].hex),\n pseudoClass: mix(base.bg, hues.yellow[mainShade].hex),\n pseudoElement: mix(base.bg, hues.yellow[mainShade].hex),\n punctuation: mix(base.bg, hues.gray[mainShade].hex),\n regex: mix(base.bg, hues.blue[mainShade].hex),\n selector: mix(base.bg, hues.red[mainShade].hex),\n string: mix(base.bg, hues.yellow[mainShade].hex),\n symbol: mix(base.bg, hues.purple[mainShade].hex),\n tag: mix(base.bg, hues.red[mainShade].hex),\n unit: mix(base.bg, hues.orange[mainShade].hex),\n url: mix(base.bg, hues.red[mainShade].hex),\n variable: mix(base.bg, hues.red[mainShade].hex),\n }\n },\n})\n","import {RootTheme} from '../types'\nimport {color} from './color'\nimport {fonts} from './fonts'\n\n/**\n * @public\n */\nexport const studioTheme: RootTheme = {\n avatar: {\n sizes: [\n {distance: -3, size: 25},\n {distance: -6, size: 35},\n {distance: -9, size: 55},\n ],\n },\n button: {\n textWeight: 'medium',\n },\n color,\n container: [320, 640, 960, 1280, 1600, 1920],\n focusRing: {\n offset: 1,\n width: 2,\n },\n fonts,\n media: [360, 600, 900, 1200, 1800, 2400],\n radius: [0, 1, 3, 6, 9, 12, 21],\n shadows: [\n null,\n {umbra: [0, 0, 0, 0], penumbra: [0, 0, 0, 0], ambient: [0, 0, 0, 0]},\n {umbra: [0, 3, 5, -1], penumbra: [0, 6, 10, 0], ambient: [0, 1, 18, 0]},\n {umbra: [0, 7, 8, -4], penumbra: [0, 12, 17, 2], ambient: [0, 5, 22, 4]},\n {umbra: [0, 9, 11, -5], penumbra: [0, 18, 28, 2], ambient: [0, 7, 34, 6]},\n {umbra: [0, 11, 15, -7], penumbra: [0, 24, 38, 3], ambient: [0, 9, 46, 8]},\n ],\n space: [0, 4, 8, 12, 20, 32, 52, 84, 136, 220],\n input: {\n checkbox: {\n size: 17,\n },\n radio: {\n size: 17,\n markSize: 9,\n },\n switch: {\n width: 33,\n height: 17,\n padding: 4,\n transitionDurationMs: 150,\n transitionTimingFunction: 'ease-out',\n },\n border: {\n width: 1,\n },\n },\n // styles: {\n // button: {\n // root: {\n // transition: 'background-color 100ms,border-color 100ms,color 100ms',\n // },\n // },\n // card: {\n // root: {\n // transition: 'background-color 100ms,border-color 100ms,color 100ms',\n // },\n // },\n // },\n}\n","import {ThemeFonts} from '../lib/theme'\n\nexport const fonts: ThemeFonts = {\n code: {\n family: 'ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace',\n weights: {\n regular: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n sizes: [\n {\n ascenderHeight: 3,\n descenderHeight: 3,\n fontSize: 10,\n iconSize: 17,\n lineHeight: 13,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 4,\n descenderHeight: 4,\n fontSize: 13,\n iconSize: 21,\n lineHeight: 17,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 5,\n descenderHeight: 5,\n fontSize: 16,\n iconSize: 25,\n lineHeight: 21,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 6,\n descenderHeight: 6,\n fontSize: 19,\n iconSize: 29,\n lineHeight: 25,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 7,\n descenderHeight: 7,\n fontSize: 22,\n iconSize: 33,\n lineHeight: 29,\n letterSpacing: 0,\n },\n ],\n },\n heading: {\n family:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Liberation Sans\", Helvetica, Arial, system-ui, sans-serif',\n weights: {\n regular: 700,\n medium: 800,\n semibold: 900,\n bold: 900,\n },\n sizes: [\n {\n ascenderHeight: 4,\n descenderHeight: 4,\n fontSize: 12,\n iconSize: 17,\n lineHeight: 17,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 5,\n descenderHeight: 5,\n fontSize: 16,\n iconSize: 25,\n lineHeight: 21,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 6,\n descenderHeight: 6,\n fontSize: 21,\n iconSize: 33,\n lineHeight: 27,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 7,\n descenderHeight: 7,\n fontSize: 27,\n iconSize: 41,\n lineHeight: 33,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 8,\n descenderHeight: 8,\n fontSize: 33,\n iconSize: 49,\n lineHeight: 39,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 9,\n descenderHeight: 9,\n fontSize: 38,\n iconSize: 53,\n lineHeight: 45,\n letterSpacing: 0,\n },\n ],\n },\n label: {\n family:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Liberation Sans\", system-ui, sans-serif',\n weights: {\n regular: 600,\n medium: 700,\n semibold: 800,\n bold: 900,\n },\n sizes: [\n {\n ascenderHeight: 2,\n descenderHeight: 2,\n fontSize: 9.8,\n iconSize: 15,\n lineHeight: 11,\n letterSpacing: 0.5,\n },\n {\n ascenderHeight: 2,\n descenderHeight: 2,\n fontSize: 11.25,\n iconSize: 17,\n lineHeight: 12,\n letterSpacing: 0.5,\n },\n {\n ascenderHeight: 2,\n descenderHeight: 2,\n fontSize: 12.75,\n iconSize: 19,\n lineHeight: 13,\n letterSpacing: 0.5,\n },\n {\n ascenderHeight: 2,\n descenderHeight: 2,\n fontSize: 14,\n iconSize: 21,\n lineHeight: 14,\n letterSpacing: 0.5,\n },\n {\n ascenderHeight: 2,\n descenderHeight: 2,\n fontSize: 15.5,\n iconSize: 23,\n lineHeight: 15,\n letterSpacing: 0.5,\n },\n ],\n },\n text: {\n family:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Liberation Sans\", Helvetica, Arial, system-ui, sans-serif',\n weights: {\n regular: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n sizes: [\n {\n ascenderHeight: 3,\n descenderHeight: 3,\n fontSize: 10,\n iconSize: 17,\n lineHeight: 13,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 4,\n descenderHeight: 4,\n fontSize: 13,\n iconSize: 21,\n lineHeight: 17,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 5,\n descenderHeight: 5,\n fontSize: 16,\n iconSize: 25,\n lineHeight: 21,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 6,\n descenderHeight: 6,\n fontSize: 19,\n iconSize: 29,\n lineHeight: 25,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 7,\n descenderHeight: 7,\n fontSize: 22,\n iconSize: 33,\n lineHeight: 29,\n letterSpacing: 0,\n },\n ],\n },\n}\n","import {ThemeLayer} from './lib/theme/layer'\n\nexport const DEFAULT_THEME_LAYER: ThemeLayer = {\n dialog: {zOffset: 600},\n popover: {zOffset: 400},\n tooltip: {zOffset: 200},\n}\n","/**\n * Gets the global scope instance in a given environment.\n *\n * The strategy is to return the most modern, and if not, the most common:\n * - The `globalThis` variable is the modern approach to accessing the global scope\n * - The `window` variable is the global scope in a web browser\n * - The `self` variable is the global scope in workers and others\n * - The `global` variable is the global scope in Node.js\n */\nfunction getGlobalScope() {\n if (typeof globalThis !== 'undefined') return globalThis\n if (typeof window !== 'undefined') return window\n if (typeof self !== 'undefined') return self\n if (typeof global !== 'undefined') return global\n\n throw new Error('@sanity/ui: could not locate global scope')\n}\n\nexport const globalScope = getGlobalScope() as any\n","import {createContext} from 'react'\nimport {globalScope} from '../lib/globalScope'\nimport {ThemeContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/theme')\n\nglobalScope[key] = globalScope[key] || createContext<ThemeContextValue | null>(null)\n\n/**\n * @internal\n */\nexport const ThemeContext: React.Context<ThemeContextValue | null> = globalScope[key]\n","import {useContext, useMemo} from 'react'\nimport {ThemeProvider as StyledThemeProvider} from 'styled-components'\nimport {DEFAULT_THEME_LAYER} from './defaults'\nimport {ThemeColorSchemeKey, ThemeColorName} from './lib/theme'\nimport {ThemeContext} from './themeContext'\nimport {RootTheme, Theme, ThemeContextValue} from './types'\n\n/**\n * @public\n */\nexport interface ThemeProviderProps {\n children?: React.ReactNode\n scheme?: ThemeColorSchemeKey\n theme?: RootTheme\n tone?: ThemeColorName\n}\n\n/**\n * @public\n */\nexport function ThemeProvider(props: ThemeProviderProps): React.ReactElement {\n const parentTheme = useContext(ThemeContext)\n const {\n children,\n scheme = parentTheme?.scheme || 'light',\n theme: themeProp = parentTheme?.theme || null,\n tone = parentTheme?.tone || 'default',\n } = props\n\n const theme: Theme | null = useMemo(() => {\n if (!themeProp) return null\n\n const {color: rootColor, layer: rootLayer, ...restTheme} = themeProp\n const colorScheme = rootColor[scheme] || rootColor.light\n const color = colorScheme[tone] || colorScheme.default\n const layer = rootLayer || DEFAULT_THEME_LAYER\n\n return {sanity: {...restTheme, color, layer}}\n }, [scheme, themeProp, tone])\n\n const value: ThemeContextValue | null = useMemo(\n () =>\n themeProp && {\n version: 0.0,\n theme: themeProp,\n scheme,\n tone,\n },\n [themeProp, scheme, tone]\n )\n\n if (!theme) {\n return <pre>ThemeProvider: no \"theme\" property provided</pre>\n }\n\n return (\n <ThemeContext.Provider value={value}>\n <StyledThemeProvider theme={theme}>{children}</StyledThemeProvider>\n </ThemeContext.Provider>\n )\n}\n","export function isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === 'object')\n}\n","import {useContext} from 'react'\nimport {isRecord} from '../lib/isRecord'\nimport {ThemeContext} from './themeContext'\nimport {ThemeContextValue} from './types'\n\n/**\n * @public\n */\nexport function useRootTheme(): ThemeContextValue {\n const value: unknown = useContext(ThemeContext)\n\n if (!value) {\n throw new Error('useRootTheme(): missing context value')\n }\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (!isRecord(value) || value.version !== 0.0) {\n throw new Error('useRootTheme(): the context value is not compatible')\n }\n\n return value as any as ThemeContextValue\n}\n","import {ThemeColorName, ThemeColorSchemeKey} from './lib/theme'\nimport {ThemeProvider} from './themeProvider'\nimport {useRootTheme} from './useRootTheme'\n\n/**\n * @public\n */\nexport interface ThemeColorProviderProps {\n children?: React.ReactNode\n scheme?: ThemeColorSchemeKey\n tone?: ThemeColorName\n}\n\n/**\n * @public\n */\nexport function ThemeColorProvider(props: ThemeColorProviderProps): React.ReactElement {\n const {children, scheme, tone} = props\n const root = useRootTheme()\n\n return (\n <ThemeProvider scheme={scheme || root.scheme} theme={root.theme} tone={tone}>\n {children}\n </ThemeProvider>\n )\n}\n","import {useTheme as useStyledTheme} from 'styled-components'\n\nimport {Theme} from './types'\n\n/**\n * @public\n */\nexport function useTheme(): Theme {\n return useStyledTheme() as Theme\n}\n","/**\n * @internal\n */\nexport interface _MediaManager {\n getCurrentIndex: () => number\n subscribe: (subscriber: (index: number) => void) => () => void\n}\n\nconst MEDIA_MANAGER_CACHE = new WeakMap<number[], _MediaManager>()\n\nfunction _getMediaQuery(media: number[], index: number) {\n if (index === 0) {\n return `screen and (max-width: ${media[index] - 1}px)`\n }\n\n if (index === media.length) {\n return `screen and (min-width: ${media[index - 1]}px)`\n }\n\n return `screen and (min-width: ${media[index - 1]}px) and (max-width: ${media[index] - 1}px)`\n}\n\nfunction _createMediaManager(media: number[]): _MediaManager {\n const mediaLen = media.length\n const sizes: {mq: MediaQueryList; index: number}[] = []\n\n if (typeof window !== 'undefined') {\n for (let index = mediaLen; index > -1; index -= 1) {\n const mediaQuery = _getMediaQuery(media, index)\n\n sizes.push({index, mq: window.matchMedia(mediaQuery)})\n }\n }\n\n const getCurrentIndex = () => {\n for (const {index, mq} of sizes) {\n if (mq.matches) return index\n }\n\n return 0\n }\n\n const subscribe = (subscriber: (index: number) => void) => {\n const disposeFns: (() => void)[] = []\n\n for (const {index, mq} of sizes) {\n const handleChange = () => {\n if (mq.matches) subscriber(index)\n }\n\n if (mq.addEventListener) {\n mq.addEventListener('change', handleChange)\n } else {\n mq.addListener(handleChange)\n }\n\n disposeFns.push(() => {\n if (mq.removeEventListener) {\n mq.removeEventListener('change', handleChange)\n } else {\n mq.removeListener(handleChange)\n }\n })\n }\n\n return () => {\n for (const disposeFn of disposeFns) {\n disposeFn()\n }\n }\n }\n\n return {getCurrentIndex, subscribe}\n}\n\n/**\n * @internal\n */\nexport function _getMediaManager(media: number[]): _MediaManager {\n let manager = MEDIA_MANAGER_CACHE.get(media)\n\n if (!manager) {\n manager = _createMediaManager(media)\n MEDIA_MANAGER_CACHE.set(media, manager)\n }\n\n return manager\n}\n","import {useEffect, useMemo, useState} from 'react'\nimport {useTheme} from '../../theme'\nimport {_getMediaManager} from './lib/media'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function useMediaIndex(): number {\n const theme = useTheme()\n const {media} = theme.sanity\n const manager = useMemo(() => _getMediaManager(media), [media])\n const [index, setIndex] = useState(manager.getCurrentIndex)\n\n useEffect(() => manager.subscribe(setIndex), [manager])\n\n return index\n}\n","import {useEffect, useMemo, useState} from 'react'\n\n/**\n * @public\n */\nexport function usePrefersDark(): boolean {\n const mq = useMemo(() => {\n if (typeof window === 'undefined') return undefined\n\n return window.matchMedia('(prefers-color-scheme: dark)')\n }, [])\n\n const [dark, setDark] = useState(mq?.matches || false)\n\n useEffect(() => {\n if (!mq) return undefined\n\n setDark(mq.matches)\n\n const handleChange = () => setDark(mq.matches)\n\n mq.addEventListener('change', handleChange)\n\n return () => mq.removeEventListener('change', handleChange)\n }, [mq])\n\n return dark\n}\n","import {useEffect, useLayoutEffect} from 'react'\n\n/**\n * @beta\n */\nexport const useIsomorphicEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect\n","import {useRef} from 'react'\nimport {useIsomorphicEffect} from './useIsomorphicEffect'\n\n/**\n * @beta\n */\nexport function useForwardedRef<T>(ref: React.ForwardedRef<T>): React.MutableRefObject<T | null> {\n const innerRef = useRef<T | null>(null)\n\n useIsomorphicEffect(() => {\n if (!ref) return\n\n if (typeof ref === 'function') {\n ref(innerRef.current)\n } else {\n ref.current = innerRef.current\n }\n })\n\n return innerRef\n}\n","import {useEffect} from 'react'\n\n/**\n * @beta\n */\nexport function useCustomValidity(\n ref: {current: null | {setCustomValidity: (validity: string) => void}},\n customValidity: string | undefined\n): void {\n useEffect(() => {\n if (ref.current) {\n ref.current.setCustomValidity(customValidity || '')\n }\n }, [customValidity, ref])\n}\n","import {CSSObject} from 'styled-components'\nimport {_responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveBorderStyleProps} from './types'\n\nconst BORDER_VALUE = '1px solid var(--card-border-color)'\n\nexport function responsiveBorderStyle(): Array<\n (props: ResponsiveBorderStyleProps & ThemeProps) => CSSObject[]\n> {\n return [border, borderTop, borderRight, borderBottom, borderLeft]\n}\n\nfunction border(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$border, (value) =>\n value ? {'&&': {border: BORDER_VALUE}} : {'&&': {border: 0}}\n )\n}\n\nfunction borderTop(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$borderTop, (value) =>\n value ? {'&&': {borderTop: BORDER_VALUE}} : {'&&': {borderTop: 0}}\n )\n}\n\nfunction borderRight(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$borderRight, (value) =>\n value ? {'&&': {borderRight: BORDER_VALUE}} : {'&&': {borderRight: 0}}\n )\n}\n\nfunction borderBottom(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$borderBottom, (value) =>\n value ? {'&&': {borderBottom: BORDER_VALUE}} : {'&&': {borderBottom: 0}}\n )\n}\n\nfunction borderLeft(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$borderLeft, (value) =>\n value ? {'&&': {borderLeft: BORDER_VALUE}} : {'&&': {borderLeft: 0}}\n )\n}\n","import {Property} from 'csstype'\nimport {CSSObject} from 'styled-components'\nimport {_responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveBoxStyleProps} from './types'\n\nconst BASE_STYLE: CSSObject = {\n '&[data-as=\"ul\"],&[data-as=\"ol\"]': {\n listStyle: 'none',\n },\n}\n\nconst BOX_SIZING: {[key: string]: Property.BoxSizing} = {\n content: 'content-box',\n border: 'border-box',\n}\n\nconst BOX_HEIGHT = {\n stretch: 'stretch',\n fill: '100%',\n}\n\nexport function boxStyle(): CSSObject {\n return BASE_STYLE\n}\n\nexport function responsiveBoxStyle(): Array<\n (props: ResponsiveBoxStyleProps & ThemeProps) => CSSObject[]\n> {\n return [\n responsiveBoxSizingStyle,\n responsiveBoxHeightStyle,\n responsiveBoxOverflowStyle,\n responsiveBoxDisplayStyle,\n ]\n}\n\nfunction responsiveBoxDisplayStyle(props: ResponsiveBoxStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$display, (display) => ({\n '&:not([hidden])': {display},\n }))\n}\n\nfunction responsiveBoxSizingStyle(props: ResponsiveBoxStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$sizing, (sizing) => ({\n boxSizing: BOX_SIZING[sizing],\n }))\n}\n\nfunction responsiveBoxHeightStyle(props: ResponsiveBoxStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$height, (height) => ({\n height: BOX_HEIGHT[height],\n }))\n}\n\nfunction responsiveBoxOverflowStyle(props: ResponsiveBoxStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$overflow, (overflow) => ({\n overflow,\n }))\n}\n","import {CSSObject} from 'styled-components'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveFlexStyleProps} from './types'\n\nconst BASE_STYLE: CSSObject = {\n '&&:not([hidden])': {\n display: 'flex',\n },\n}\n\nexport function responsiveFlexStyle(): Array<\n CSSObject | ((props: ResponsiveFlexStyleProps & ThemeProps) => CSSObject[])\n> {\n return [\n BASE_STYLE,\n responsiveFlexAlignStyle,\n responsiveFlexGapStyle,\n responsiveFlexWrapStyle,\n responsiveFlexJustifyStyle,\n responsiveFlexDirectionStyle,\n ]\n}\n\nexport function responsiveFlexAlignStyle(\n props: ResponsiveFlexStyleProps & ThemeProps\n): CSSObject[] {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$align, (align) => {\n return {alignItems: align}\n })\n}\n\nfunction responsiveFlexGapStyle(props: ResponsiveFlexStyleProps & ThemeProps) {\n const {theme} = props\n const {media, space} = theme.sanity\n\n return _responsive(media, props.$gap, (gap) => ({\n gap: gap ? rem(space[gap]) : undefined,\n }))\n}\n\nexport function responsiveFlexWrapStyle(props: ResponsiveFlexStyleProps & ThemeProps): CSSObject[] {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$wrap, (wrap) => {\n return {flexWrap: wrap}\n })\n}\n\nexport function responsiveFlexJustifyStyle(\n props: ResponsiveFlexStyleProps & ThemeProps\n): CSSObject[] {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$justify, (justify) => {\n return {justifyContent: justify}\n })\n}\n\nexport function responsiveFlexDirectionStyle(\n props: ResponsiveFlexStyleProps & ThemeProps\n): CSSObject[] {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$direction, (direction) => {\n return {flexDirection: direction}\n })\n}\n","import {CSSObject} from 'styled-components'\nimport {EMPTY_ARRAY} from '../../constants'\nimport {_responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveFlexItemStyleProps} from './types'\n\nconst BASE_STYLE: CSSObject = {\n minWidth: 0,\n minHeight: 0,\n}\n\nexport function flexItemStyle(): Array<\n CSSObject | ((props: ResponsiveFlexItemStyleProps & ThemeProps) => CSSObject[])\n> {\n return [BASE_STYLE, responsiveFlexItemStyle]\n}\n\nexport function responsiveFlexItemStyle(\n props: ResponsiveFlexItemStyleProps & ThemeProps\n): CSSObject[] {\n const {theme} = props\n const {media} = theme.sanity\n\n if (!props.$flex) return EMPTY_ARRAY\n\n return _responsive(media, props.$flex, (flex) => ({flex}))\n}\n","export function focusRingBorderStyle(border: {color: string; width: number}): string {\n return `inset 0 0 0 ${border.width}px ${border.color}`\n}\n\nexport function focusRingStyle(opts: {\n base?: {bg: string}\n border?: {color: string; width: number}\n focusRing: {offset: number; width: number}\n}): string {\n const {base, border, focusRing} = opts\n const focusRingOutsetWidth = focusRing.offset + focusRing.width\n const focusRingInsetWidth = 0 - focusRing.offset\n const bgColor = base ? base.bg : 'var(--card-bg-color)'\n\n return [\n focusRingInsetWidth > 0 && `inset 0 0 0 ${focusRingInsetWidth}px var(--card-focus-ring-color)`,\n border && focusRingBorderStyle(border),\n focusRingInsetWidth < 0 && `0 0 0 ${0 - focusRingInsetWidth}px ${bgColor}`,\n focusRingOutsetWidth > 0 && `0 0 0 ${focusRingOutsetWidth}px var(--card-focus-ring-color)`,\n ]\n .filter(Boolean)\n .join(',')\n}\n","import {CSSObject} from 'styled-components'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveGridStyleProps} from './types'\n\nconst GRID_CSS = {\n '&&:not([hidden])': {\n display: 'grid',\n },\n '&[data-as=\"ul\"],&[data-as=\"ol\"]': {\n listStyle: 'none',\n },\n}\n\nconst GRID_AUTO_COLUMS = {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n}\n\nconst GRID_AUTO_ROWS = {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n}\n\nexport function responsiveGridStyle(): Array<\n CSSObject | ((props: ResponsiveGridStyleProps & ThemeProps) => CSSObject[])\n> {\n return [\n GRID_CSS,\n responsiveGridAutoFlowStyle,\n responsiveGridAutoRowsStyle,\n responsiveGridAutoColsStyle,\n responsiveGridColumnsStyle,\n responsiveGridRowsStyle,\n responsiveGridGapStyle,\n responsiveGridGapXStyle,\n responsiveGridGapYStyle,\n ]\n}\n\nfunction responsiveGridAutoFlowStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$autoFlow, (autoFlow) => ({\n gridAutoFlow: autoFlow,\n }))\n}\n\nfunction responsiveGridAutoRowsStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$autoRows, (autoRows) => ({\n gridAutoRows: autoRows && GRID_AUTO_ROWS[autoRows],\n }))\n}\n\nfunction responsiveGridAutoColsStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$autoCols, (autoCols) => ({\n gridAutoColumns: autoCols && GRID_AUTO_COLUMS[autoCols],\n }))\n}\n\nfunction responsiveGridColumnsStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$columns, (columns) => ({\n gridTemplateColumns: columns && `repeat(${columns},minmax(0,1fr));`,\n }))\n}\n\nfunction responsiveGridRowsStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$rows, (rows) => ({\n gridTemplateRows: rows && `repeat(${rows},minmax(0,1fr));`,\n }))\n}\n\nfunction responsiveGridGapStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {theme} = props\n const {media, space} = theme.sanity\n\n return _responsive(media, props.$gap, (gap) => ({\n gridGap: gap ? rem(space[gap]) : undefined,\n }))\n}\n\nfunction responsiveGridGapXStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {theme} = props\n const {media, space} = theme.sanity\n\n return _responsive(media, props.$gapX, (gapX) => ({\n columnGap: gapX ? rem(space[gapX]) : undefined,\n }))\n}\n\nfunction responsiveGridGapYStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {theme} = props\n const {media, space} = theme.sanity\n\n return _responsive(media, props.$gapY, (gapY) => ({\n rowGap: gapY ? rem(space[gapY]) : undefined,\n }))\n}\n","import {CSSObject} from 'styled-components'\nimport {_responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveGridItemStyleProps} from './types'\n\nexport function responsiveGridItemStyle(): Array<\n (props: ResponsiveGridItemStyleProps & ThemeProps) => CSSObject[]\n> {\n return [\n responsiveGridItemRowStyle,\n responsiveGridItemRowStartStyle,\n responsiveGridItemRowEndStyle,\n responsiveGridItemColumnStyle,\n responsiveGridItemColumnStartStyle,\n responsiveGridItemColumnEndStyle,\n ]\n}\n\nconst GRID_ITEM_ROW = {\n auto: 'auto',\n full: '1 / -1',\n}\n\nconst GRID_ITEM_COLUMN = {\n auto: 'auto',\n full: '1 / -1',\n}\n\nfunction responsiveGridItemRowStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$row, (row) => {\n if (typeof row === 'number') {\n return {gridRow: `span ${row} / span ${row}`}\n }\n\n return {gridRow: GRID_ITEM_ROW[row]}\n })\n}\n\nfunction responsiveGridItemRowStartStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$rowStart, (rowStart) => ({\n gridRowStart: rowStart,\n }))\n}\n\nfunction responsiveGridItemRowEndStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$rowEnd, (rowEnd) => ({gridRowEnd: rowEnd}))\n}\n\nfunction responsiveGridItemColumnStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$column, (column) => {\n if (typeof column === 'number') {\n return {gridColumn: `span ${column} / span ${column}`}\n }\n\n return {gridColumn: GRID_ITEM_COLUMN[column]}\n })\n}\n\nfunction responsiveGridItemColumnStartStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$columnStart, (columnStart) => ({\n gridColumnStart: columnStart,\n }))\n}\n\nfunction responsiveGridItemColumnEndStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$columnEnd, (columnEnd) => ({\n gridColumnEnd: columnEnd,\n }))\n}\n","import {CSSObject} from 'styled-components'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\n\nexport interface TextInputResponsivePaddingStyleProps {\n $fontSize: number[]\n $iconLeft?: boolean\n $iconRight?: boolean\n $padding: number[]\n $space: number[]\n}\n\nexport function responsiveInputPaddingStyle(\n props: TextInputResponsivePaddingStyleProps & ThemeProps\n): CSSObject[] {\n const {$fontSize, $iconLeft, $iconRight, $padding, $space, theme} = props\n const {fonts, media, space: spaceScale} = theme.sanity\n const len = Math.max($padding.length, $space.length, $fontSize.length)\n const _padding: number[] = []\n const _space: number[] = []\n const _fontSize: number[] = []\n\n for (let i = 0; i < len; i += 1) {\n _fontSize[i] = $fontSize[i] === undefined ? _fontSize[i - 1] : $fontSize[i]\n _padding[i] = $padding[i] === undefined ? _padding[i - 1] : $padding[i]\n _space[i] = $space[i] === undefined ? _space[i - 1] : $space[i]\n }\n\n return _responsive(media, _padding, (_, i) => {\n const size = fonts.text.sizes[_fontSize[i]] || fonts.text.sizes[2]\n const emSize = size.lineHeight - size.ascenderHeight - size.descenderHeight\n const p = spaceScale[_padding[i]]\n const s = spaceScale[_space[i]]\n\n const styles = {\n paddingTop: rem(p - size.ascenderHeight),\n paddingRight: rem(p),\n paddingBottom: rem(p - size.descenderHeight),\n paddingLeft: rem(p),\n }\n\n if ($iconRight) styles.paddingRight = rem(p + emSize + s)\n if ($iconLeft) styles.paddingLeft = rem(p + emSize + s)\n\n return styles\n })\n}\n\nexport function responsiveInputPaddingIconsStyle(\n props: {\n $fontSize: number[]\n $padding: number[]\n $space: number[]\n } & ThemeProps\n): CSSObject[] {\n return responsiveInputPaddingStyle({...props, $iconLeft: true, $iconRight: true})\n}\n\nexport function responsiveInputPaddingIconLeftStyle(\n props: {\n $fontSize: number[]\n $padding: number[]\n $space: number[]\n } & ThemeProps\n): CSSObject[] {\n return responsiveInputPaddingStyle({...props, $iconLeft: true})\n}\n\nexport function responsiveInputPaddingIconRightStyle(\n props: {\n $fontSize: number[]\n $padding: number[]\n $space: number[]\n } & ThemeProps\n): CSSObject[] {\n return responsiveInputPaddingStyle({...props, $iconRight: true})\n}\n","import {css, CSSObject, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeColorSchemeKey, ThemeFontWeightKey} from '../../theme'\nimport {CardTone} from '../../types'\nimport {focusRingBorderStyle, focusRingStyle} from '../focusRing'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\n\n/**\n * @internal\n */\nexport interface TextInputInputStyleProps {\n $fontSize: number[]\n $scheme: ThemeColorSchemeKey\n $tone: CardTone\n $weight?: ThemeFontWeightKey\n}\n\n/**\n * @internal\n */\nexport interface TextInputRepresentationStyleProps {\n $border?: boolean\n $hasPrefix?: boolean\n $hasSuffix?: boolean\n $scheme: ThemeColorSchemeKey\n $tone: CardTone\n}\n\nconst ROOT_STYLE = css`\n &:not([hidden]) {\n display: flex;\n }\n\n align-items: center;\n`\n\nexport function textInputRootStyle(): FlattenSimpleInterpolation {\n return ROOT_STYLE\n}\n\nexport function textInputBaseStyle(\n props: TextInputInputStyleProps & ThemeProps\n): FlattenSimpleInterpolation {\n const {theme, $scheme, $tone, $weight} = props\n const font = theme.sanity.fonts.text\n const color = theme.sanity.color.input\n\n return css`\n appearance: none;\n background: none;\n border: 0;\n border-radius: 0;\n outline: none;\n width: 100%;\n box-sizing: border-box;\n font-family: ${font.family};\n font-weight: ${($weight && font.weights[$weight]) || font.weights.regular};\n margin: 0;\n position: relative;\n z-index: 1;\n display: block;\n\n /* NOTE: This is a hack to disable Chrome’s autofill styles */\n &:-webkit-autofill,\n &:-webkit-autofill:hover,\n &:-webkit-autofill:focus,\n &:-webkit-autofill:active {\n -webkit-text-fill-color: var(--input-fg-color) !important;\n transition: background-color 5000s;\n transition-delay: 86400s /* 24h */;\n }\n\n /* &:is(textarea) */\n &[data-as='textarea'] {\n resize: none;\n }\n\n color: var(--input-fg-color);\n\n &::placeholder {\n color: var(--input-placeholder-color);\n }\n\n &[data-scheme='${$scheme}'][data-tone='${$tone}'] {\n --input-fg-color: ${color.default.enabled.fg};\n --input-placeholder-color: ${color.default.enabled.placeholder};\n\n /* enabled */\n &:not(:invalid):not(:disabled):not(:read-only) {\n --input-fg-color: ${color.default.enabled.fg};\n --input-placeholder-color: ${color.default.enabled.placeholder};\n }\n\n /* disabled */\n &:not(:invalid):disabled {\n --input-fg-color: ${color.default.disabled.fg};\n --input-placeholder-color: ${color.default.disabled.placeholder};\n }\n\n /* invalid */\n &:invalid {\n --input-fg-color: ${color.invalid.enabled.fg};\n --input-placeholder-color: ${color.invalid.enabled.placeholder};\n }\n\n /* readOnly */\n &:read-only {\n --input-fg-color: ${color.default.readOnly.fg};\n --input-placeholder-color: ${color.default.readOnly.placeholder};\n }\n }\n `\n}\n\nexport function textInputFontSizeStyle(props: TextInputInputStyleProps & ThemeProps): CSSObject[] {\n const {theme} = props\n const {fonts, media} = theme.sanity\n\n return _responsive(media, props.$fontSize, (sizeIndex) => {\n const size = fonts.text.sizes[sizeIndex] || fonts.text.sizes[2]\n\n return {\n fontSize: rem(size.fontSize),\n lineHeight: size.lineHeight / size.fontSize,\n }\n })\n}\n\nexport function textInputRepresentationStyle(\n props: TextInputRepresentationStyleProps & ThemeProps\n): FlattenSimpleInterpolation {\n const {$border, $hasPrefix, $hasSuffix, $scheme, $tone, theme} = props\n const {focusRing, input} = theme.sanity\n const color = theme.sanity.color.input\n\n return css`\n --input-box-shadow: none;\n\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: block;\n pointer-events: none;\n z-index: 0;\n\n background-color: var(--card-bg-color);\n box-shadow: var(--input-box-shadow);\n\n border-top-left-radius: ${$hasPrefix ? 0 : undefined};\n border-bottom-left-radius: ${$hasPrefix ? 0 : undefined};\n border-top-right-radius: ${$hasSuffix ? 0 : undefined};\n border-bottom-right-radius: ${$hasSuffix ? 0 : undefined};\n\n &[data-scheme='${$scheme}'][data-tone='${$tone}'] {\n --card-bg-color: ${color.default.enabled.bg};\n --card-fg-color: ${color.default.enabled.fg};\n\n /* enabled */\n *:not(:disabled) + & {\n --input-box-shadow: ${$border\n ? focusRingBorderStyle({color: color.default.enabled.border, width: input.border.width})\n : undefined};\n }\n\n /* invalid */\n *:not(:disabled):invalid + & {\n --card-bg-color: ${color.invalid.enabled.bg};\n --card-fg-color: ${color.invalid.enabled.fg};\n --input-box-shadow: ${$border\n ? focusRingBorderStyle({color: color.invalid.enabled.border, width: input.border.width})\n : 'none'};\n }\n\n /* focused */\n *:not(:disabled):focus + & {\n --input-box-shadow: ${focusRingStyle({\n border: $border\n ? {color: color.default.enabled.border, width: input.border.width}\n : undefined,\n focusRing,\n })};\n }\n\n /* disabled */\n *:disabled + & {\n --card-bg-color: ${color.default.disabled.bg} !important;\n --card-fg-color: ${color.default.disabled.fg} !important;\n --input-box-shadow: ${$border\n ? focusRingBorderStyle({\n color: color.default.disabled.border,\n width: input.border.width,\n })\n : 'none'};\n }\n\n /* readOnly */\n *:read-only + & {\n --card-bg-color: ${color.default.readOnly.bg} !important;\n --card-fg-color: ${color.default.readOnly.fg} !important;\n }\n\n /* hovered */\n @media (hover: hover) {\n *:not(:disabled):not(:read-only):not(:invalid):hover + & {\n --card-bg-color: ${color.default.hovered.bg};\n --card-fg-color: ${color.default.hovered.fg};\n }\n\n *:not(:disabled):not(:read-only):not(:invalid):not(:focus):hover + & {\n --input-box-shadow: ${$border\n ? focusRingBorderStyle({\n color: color.default.hovered.border,\n width: input.border.width,\n })\n : 'none'};\n }\n }\n }\n `\n}\n","import {CSSObject} from 'styled-components'\nimport {_getResponsiveSpace} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsivePaddingStyleProps} from './types'\n\nexport function responsivePaddingStyle(\n props: ResponsivePaddingStyleProps & ThemeProps\n): CSSObject[][] {\n const {theme} = props\n\n return [\n _getResponsiveSpace(theme, ['padding'], props.$padding),\n _getResponsiveSpace(theme, ['paddingLeft', 'paddingRight'], props.$paddingX),\n _getResponsiveSpace(theme, ['paddingTop', 'paddingBottom'], props.$paddingY),\n _getResponsiveSpace(theme, ['paddingTop'], props.$paddingTop),\n _getResponsiveSpace(theme, ['paddingRight'], props.$paddingRight),\n _getResponsiveSpace(theme, ['paddingBottom'], props.$paddingBottom),\n _getResponsiveSpace(theme, ['paddingLeft'], props.$paddingLeft),\n ].filter(Boolean) as CSSObject[][]\n}\n","import {CSSObject} from 'styled-components'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveRadiusStyleProps} from './types'\n\nexport function responsiveRadiusStyle(props: ResponsiveRadiusStyleProps & ThemeProps): CSSObject[] {\n const {theme} = props\n const {media, radius} = theme.sanity\n\n return _responsive(media, props.$radius, (radiusIndex) => ({\n borderRadius: rem(radius[radiusIndex]),\n }))\n}\n","import {CSSObject} from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {BoxShadow, ThemeShadow} from '../../theme'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveShadowStyleProps} from './types'\n\nfunction toBoxShadow(shadow: BoxShadow, color: string) {\n return `${shadow.map(rem).join(' ')} ${color}`\n}\n\nfunction shadowStyle(shadow: ThemeShadow | null): CSSObject {\n if (!shadow) return EMPTY_RECORD\n\n const outline = `0 0 0 ${rem(1)} var(--card-shadow-outline-color)`\n const umbra = toBoxShadow(shadow.umbra, 'var(--card-shadow-umbra-color)')\n const penumbra = toBoxShadow(shadow.penumbra, 'var(--card-shadow-penumbra-color)')\n const ambient = toBoxShadow(shadow.ambient, 'var(--card-shadow-ambient-color)')\n\n return {boxShadow: `${outline}, ${umbra}, ${penumbra}, ${ambient}`}\n}\n\nexport function responsiveShadowStyle(props: ResponsiveShadowStyleProps & ThemeProps): CSSObject[] {\n const {theme} = props\n const {media, shadows} = theme.sanity\n\n return _responsive(media, props.$shadow, (shadow) => shadowStyle(shadows[shadow]))\n}\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {\n ResponsiveFontStyleProps,\n responsiveTextAlignStyle,\n responsiveTextFont,\n} from '../../styles/internal'\nimport {ThemeFontWeightKey} from '../../theme'\nimport {TextAlign} from '../../types'\nimport {textBaseStyle} from './styles'\n\n/**\n * @public\n */\nexport interface TextProps {\n accent?: boolean\n align?: TextAlign | TextAlign[]\n as?: React.ElementType | keyof JSX.IntrinsicElements\n muted?: boolean\n size?: number | number[]\n /**\n * Controls how overflowing text is treated.\n * Use `textOverflow=\"ellipsis\"` to render text as a single line which is concatenated with a `…` symbol.\n * @beta\n */\n textOverflow?: 'ellipsis'\n weight?: ThemeFontWeightKey\n}\n\nconst Root = styled.div<ResponsiveFontStyleProps>(\n responsiveTextFont,\n responsiveTextAlignStyle,\n textBaseStyle\n)\n\nconst SpanWithTextOverflow = styled.span`\n display: block;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n`\n\n/**\n * @public\n */\nexport const Text = forwardRef(function Text(\n props: TextProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'size'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n accent = false,\n align,\n children: childrenProp,\n muted = false,\n size = 2,\n textOverflow,\n weight,\n ...restProps\n } = props\n\n let children = childrenProp\n\n if (textOverflow === 'ellipsis') {\n children = <SpanWithTextOverflow>{children}</SpanWithTextOverflow>\n }\n\n return (\n <Root\n data-ui=\"Text\"\n {...restProps}\n $accent={accent}\n $align={useArrayProp(align)}\n $muted={muted}\n ref={ref}\n $size={useArrayProp(size)}\n $weight={weight}\n >\n <span>{children}</span>\n </Root>\n )\n})\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\n\nexport function textBaseStyle(\n props: {$accent?: boolean; $muted?: boolean} & ThemeProps\n): FlattenSimpleInterpolation {\n const {$accent, $muted, theme} = props\n const {weights} = theme.sanity.fonts.text\n\n return css`\n color: var(--card-fg-color);\n\n ${$accent &&\n css`\n color: var(--card-accent-fg-color);\n `}\n\n ${$muted &&\n css`\n color: var(--card-muted-fg-color);\n `}\n\n & code {\n font-family: ${theme.sanity.fonts.code.family};\n border-radius: 1px;\n background-color: var(--card-code-bg-color);\n color: var(--card-code-fg-color);\n }\n\n & a {\n text-decoration: none;\n border-radius: 1px;\n color: var(--card-link-color);\n outline: none;\n\n @media (hover: hover) {\n &:hover {\n text-decoration: underline;\n }\n }\n\n &:focus {\n box-shadow: 0 0 0 1px var(--card-bg-color), 0 0 0 3px var(--card-focus-ring-color);\n }\n\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n }\n\n & strong {\n font-weight: ${weights.bold};\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\n }\n `\n}\n","import {CSSObject} from 'styled-components'\nimport {rem, _responsive, ThemeProps} from '../../styles'\nimport {focusRingStyle} from '../../styles/internal'\nimport {AvatarRootStyleProps, ResponsiveAvatarSizeStyleProps} from './types'\n\nexport const avatarStyle = {\n root: avatarRootStyle,\n arrow: avatarArrowStyle,\n bgStroke: avatarBgStrokeStyle,\n stroke: avatarStrokeStyle,\n initials: avatarInitialsStyle,\n}\n\nfunction avatarArrowStyle(): CSSObject {\n return {\n position: 'absolute',\n boxSizing: 'border-box',\n zIndex: 0,\n opacity: 0,\n transition: 'all 0.2s linear',\n transform: 'rotate(-90deg) translate3d(0, 6px, 0)',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n\n '& > svg': {\n width: '11px',\n height: '7px',\n position: 'absolute',\n top: '-5px',\n left: '50%',\n transform: 'translateX(-6px)',\n\n '&:not([hidden])': {\n display: 'block',\n },\n },\n\n \"[data-arrow-position='inside'] > &\": {\n transform: 'rotate(-90deg) translate3d(0, 6px, 0)',\n opacity: 0,\n },\n\n \"[data-arrow-position='top'] > &\": {\n opacity: 1,\n transform: 'rotate(0deg)',\n },\n\n \"[data-arrow-position='bottom'] > &\": {\n opacity: 1,\n transform: 'rotate(-180deg)',\n },\n }\n}\n\nexport function avatarRootStyle(props: AvatarRootStyleProps & ThemeProps): CSSObject {\n const {$color, theme} = props\n const {focusRing} = theme.sanity\n\n return {\n backgroundColor: $color,\n position: 'relative',\n boxSizing: 'border-box',\n userSelect: 'none',\n boxShadow: '0 0 0 1px var(--card-bg-color)',\n\n '&[data-status=\"inactive\"]': {\n opacity: 0.5,\n },\n\n '&>svg': {\n '&:not([hidden])': {\n display: 'block',\n },\n },\n\n /* &:is(button) */\n '&[data-as=\"button\"]': {\n '-webkit-font-smoothing': 'inherit',\n appearance: 'none',\n margin: 0,\n padding: 0,\n border: 0,\n font: 'inherit',\n color: 'inherit',\n outline: 'none',\n\n '&:focus': {\n boxShadow: focusRingStyle({focusRing}),\n },\n\n '&:focus:not(:focus-visible)': {\n boxShadow: 'none',\n },\n },\n }\n}\n\nexport function responsiveAvatarSizeStyle(\n props: ResponsiveAvatarSizeStyleProps & ThemeProps\n): CSSObject[] {\n const {theme} = props\n const {avatar, media} = theme.sanity\n\n return _responsive(media, props.$size, (size) => {\n const avatarSize = avatar.sizes[size] || avatar.sizes[0]\n\n return {\n width: rem(avatarSize.size),\n height: rem(avatarSize.size),\n borderRadius: rem(avatarSize.size / 2),\n\n '&>svg': {\n width: rem(avatarSize.size),\n height: rem(avatarSize.size),\n borderRadius: rem(avatarSize.size / 2),\n },\n }\n })\n}\n\nexport function avatarInitialsStyle(props: ThemeProps): CSSObject {\n const {theme} = props\n const {base} = theme.sanity.color\n\n return {\n width: '100%',\n height: '100%',\n color: base.fg,\n alignItems: 'center',\n justifyContent: 'center',\n textTransform: 'uppercase',\n textAlign: 'center',\n borderRadius: '50%',\n\n '&:not([hidden])': {\n display: 'flex',\n },\n }\n}\n\nfunction avatarBgStrokeStyle(): CSSObject {\n return {\n strokeWidth: '4px',\n stroke: 'var(--card-bg-color)',\n }\n}\n\nfunction avatarStrokeStyle(): CSSObject {\n return {\n strokeWidth: '3px',\n\n '[data-status=\"editing\"] &': {\n strokeSasharray: '2 4',\n strokeLinecap: 'round',\n },\n }\n}\n","import {forwardRef, useCallback, useEffect, useId, useMemo, useState} from 'react'\nimport ReactIs from 'react-is'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {ThemeColorSpotKey, useTheme} from '../../theme'\nimport {AvatarPosition, AvatarSize, AvatarStatus} from '../../types'\nimport {Text} from '../text'\nimport {avatarStyle, responsiveAvatarSizeStyle} from './styles'\n\n/**\n * @public\n */\nexport interface AvatarProps {\n animateArrowFrom?: AvatarPosition\n arrowPosition?: AvatarPosition\n as?: React.ElementType | keyof JSX.IntrinsicElements\n color?: ThemeColorSpotKey\n initials?: string\n onImageLoadError?: (event: Error) => void\n size?: AvatarSize | AvatarSize[]\n src?: string\n /**\n * The status of the entity this Avatar represents.\n * @alpha\n */\n status?: AvatarStatus\n title?: string\n}\n\nconst Root = styled.div<{$color: string; $size: AvatarSize[]}>(\n responsiveAvatarSizeStyle,\n avatarStyle.root\n)\n\nconst Arrow = styled.div(avatarStyle.arrow)\n\nconst BgStroke = styled.ellipse(avatarStyle.bgStroke)\n\nconst Stroke = styled.ellipse(avatarStyle.stroke)\n\nconst Initials = styled.div(avatarStyle.initials)\n\n/**\n * @public\n */\nexport const Avatar = forwardRef(function Avatar(\n props: AvatarProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'ref'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n as: asProp,\n color: colorKey = 'gray',\n src,\n title,\n initials,\n onImageLoadError,\n arrowPosition: arrowPositionProp,\n animateArrowFrom,\n status = 'online',\n size: sizeProp = 0,\n ...restProps\n } = props\n const as = ReactIs.isValidElementType(asProp) ? asProp : 'div'\n const size = useArrayProp(sizeProp)\n const theme = useTheme()\n const color = theme.sanity.color.spot[colorKey] || theme.sanity.color.spot.gray\n\n // @todo: remove this\n const avatarSize = theme.sanity.avatar.sizes[size[0]] || theme.sanity.avatar.sizes[0]\n const _sizeRem = avatarSize.size\n const _radius = _sizeRem / 2\n\n const elementId = useId()\n const [arrowPosition, setArrowPosition] = useState<AvatarPosition | undefined>(\n animateArrowFrom || arrowPositionProp || 'inside'\n )\n\n const [imageFailed, setImageFailed] = useState<boolean>(false)\n\n const imageId = `avatar-image-${elementId}`\n\n useEffect(() => {\n if (arrowPosition === arrowPositionProp) return undefined\n\n // Start animation in the next frame\n const raf = requestAnimationFrame(() => setArrowPosition(arrowPositionProp))\n\n return () => cancelAnimationFrame(raf)\n }, [arrowPosition, arrowPositionProp])\n\n useEffect(() => {\n if (src) setImageFailed(false)\n }, [src])\n\n const handleImageError = useCallback(() => {\n setImageFailed(true)\n\n if (onImageLoadError) {\n onImageLoadError(new Error('Avatar: the image failed to load'))\n }\n }, [onImageLoadError])\n\n const initialsSize = useMemo(() => size.map((s) => (s === 0 ? 0 : s + 1)), [size])\n\n return (\n <Root\n as={as}\n data-as={typeof as === 'string' ? as : undefined}\n data-ui=\"Avatar\"\n {...restProps}\n $size={size}\n $color={color}\n aria-label={title}\n data-arrow-position={arrowPosition}\n data-status={status}\n ref={ref}\n title={title}\n >\n <Arrow>\n <svg width=\"11\" height=\"7\" viewBox=\"0 0 11 7\" fill=\"none\">\n <path\n d=\"M6.67948 1.50115L11 7L0 7L4.32052 1.50115C4.92109 0.736796 6.07891 0.736795 6.67948 1.50115Z\"\n fill={color}\n />\n </svg>\n </Arrow>\n\n {!imageFailed && src && (\n <svg viewBox={`0 0 ${_sizeRem} ${_sizeRem}`} fill=\"none\">\n <defs>\n <pattern id={imageId} patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <image\n href={src}\n width=\"1\"\n height=\"1\"\n // eslint-disable-next-line react/no-unknown-property\n onError={handleImageError}\n />\n </pattern>\n </defs>\n\n <circle cx={_radius} cy={_radius} r={_radius} fill={`url(#${imageId})`} />\n <BgStroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n vectorEffect=\"non-scaling-stroke\"\n />\n <Stroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n stroke={color}\n vectorEffect=\"non-scaling-stroke\"\n />\n </svg>\n )}\n\n {(imageFailed || !src) && initials && (\n <>\n <Initials>\n <Text as=\"span\" size={initialsSize}>\n <strong>{initials}</strong>\n </Text>\n </Initials>\n </>\n )}\n </Root>\n )\n})\n","import {forwardRef, useMemo} from 'react'\nimport styled, {css} from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {useArrayProp} from '../../hooks'\nimport {rem, _responsive, ThemeProps} from '../../styles'\nimport {AvatarSize} from '../../types'\nimport {Text} from '../text'\n\nfunction _responsiveAvatarCounterSizeStyle(props: {$size: AvatarSize[]} & ThemeProps) {\n const {theme} = props\n const {avatar, media} = theme.sanity\n\n return _responsive(media, props.$size, (size) => {\n const avatarSize = avatar.sizes[size]\n\n if (!avatarSize) return EMPTY_RECORD\n\n return {\n borderRadius: rem(avatarSize.size / 2),\n minWidth: rem(avatarSize.size),\n height: rem(avatarSize.size),\n }\n })\n}\n\nfunction _avatarCounterBaseStyle(props: ThemeProps) {\n const {theme} = props\n\n return css`\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n user-select: none;\n color: inherit;\n color: var(--card-fg-color);\n background: var(--card-bg-color);\n box-shadow: 0 0 0 1px var(--card-bg-color), inset 0 0 0 1.5px var(--card-hairline-hard-color);\n padding: 0 ${rem(theme.sanity.space[2])};\n\n &:not([hidden]) {\n display: flex;\n }\n `\n}\n\nconst Root = styled.div<{$size: AvatarSize[]}>(\n _responsiveAvatarCounterSizeStyle,\n _avatarCounterBaseStyle\n)\n\n/**\n * @public\n */\nexport interface AvatarCounterProps {\n count: number\n size?: AvatarSize | AvatarSize[]\n /** @deprecated No longer supported. */\n tone?: 'navbar'\n}\n\n/**\n * @public\n */\nexport const AvatarCounter = forwardRef(function AvatarCounter(\n props: AvatarCounterProps,\n ref: React.Ref<HTMLDivElement>\n) {\n const {count, size: sizeProp = 0} = props\n const size = useArrayProp(sizeProp)\n const counterSize = useMemo(() => size.map((s) => (s === 0 ? 0 : s + 1)), [size])\n\n return (\n <Root $size={size} data-ui=\"AvatarCounter\" ref={ref}>\n <Text as=\"span\" size={counterSize}>\n <strong>{count}</strong>\n </Text>\n </Root>\n )\n})\n","import {isElement, isFragment} from 'react-is'\n\nexport function childrenToElementArray(\n children: React.ReactNode\n): Array<React.ReactElement | string> {\n const childrenArray = Array.isArray(children) ? children : [children]\n\n return childrenArray.filter(\n (node) => isElement(node) || isFragment(node) || typeof node === 'string'\n ) as Array<React.ReactElement | string>\n}\n","import {cloneElement, forwardRef} from 'react'\nimport styled, {css} from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {useArrayProp} from '../../hooks'\nimport {rem, _responsive, ThemeProps} from '../../styles'\nimport {AvatarSize} from '../../types'\nimport {childrenToElementArray} from '../helpers'\nimport {AvatarCounter} from './avatarCounter'\n\nconst BASE_STYLES = css`\n white-space: nowrap;\n\n & > div {\n vertical-align: top;\n\n &:not([hidden]) {\n display: inline-block;\n }\n }\n`\n\nfunction avatarStackStyle() {\n return BASE_STYLES\n}\n\nfunction responsiveAvatarStackSizeStyle(props: {$size: AvatarSize[]} & ThemeProps) {\n const {theme} = props\n const {avatar, media} = theme.sanity\n\n return _responsive(media, props.$size, (size) => {\n const avatarSize = avatar.sizes[size]\n\n if (!avatarSize) return EMPTY_RECORD\n\n return {\n '& > div + div': {\n marginLeft: rem(avatarSize.distance),\n },\n }\n })\n}\n\nconst Root = styled.div<{$size: AvatarSize[]}>(responsiveAvatarStackSizeStyle, avatarStackStyle)\n\n/**\n * @public\n */\nexport interface AvatarStackProps {\n children: React.ReactNode\n maxLength?: number\n size?: AvatarSize | AvatarSize[]\n /** @deprecated No longer supported. */\n tone?: 'navbar'\n}\n\n/**\n * @public\n */\nexport const AvatarStack = forwardRef(function AvatarStack(\n props: AvatarStackProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'ref'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n children: childrenProp,\n maxLength: maxLengthProp = 4,\n size: sizeProp = 0,\n ...restProps\n } = props\n const children = childrenToElementArray(childrenProp).filter(\n (child) => typeof child !== 'string'\n ) as React.ReactElement[]\n const maxLength = Math.max(maxLengthProp, 0)\n const size = useArrayProp(sizeProp)\n\n const len = children.length\n const visibleCount = maxLength - 1\n const extraCount = len - visibleCount\n const visibleChildren = extraCount > 1 ? children.slice(extraCount, len) : children\n\n return (\n <Root data-ui=\"AvatarStack\" {...restProps} ref={ref} $size={size}>\n {len === 0 && (\n <div>\n <AvatarCounter count={len} />\n </div>\n )}\n\n {len !== 0 && extraCount > 1 && (\n <div>\n <AvatarCounter count={extraCount} size={size} />\n </div>\n )}\n\n {visibleChildren.map((child, childIndex) => (\n <div key={String(childIndex)}>{cloneElement(child, {size})}</div>\n ))}\n </Root>\n )\n})\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {\n boxStyle,\n flexItemStyle,\n FlexItemStyleProps,\n responsiveBoxStyle,\n ResponsiveBoxStyleProps,\n responsiveGridItemStyle,\n ResponsiveGridItemStyleProps,\n responsivePaddingStyle,\n ResponsivePaddingStyleProps,\n responsiveMarginStyle,\n ResponsiveMarginStyleProps,\n} from '../../styles/internal'\nimport {\n ResponsiveBoxProps,\n ResponsiveFlexItemProps,\n ResponsiveGridItemProps,\n ResponsiveMarginProps,\n ResponsivePaddingProps,\n} from '../types'\n\n/**\n * @public\n */\nexport interface BoxProps\n extends ResponsiveFlexItemProps,\n ResponsiveBoxProps,\n ResponsiveGridItemProps,\n ResponsiveMarginProps,\n ResponsivePaddingProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n}\n\nconst Root = styled.div<\n FlexItemStyleProps &\n ResponsiveBoxStyleProps &\n ResponsiveGridItemStyleProps &\n ResponsiveMarginStyleProps &\n ResponsivePaddingStyleProps\n>(\n boxStyle,\n flexItemStyle,\n responsiveBoxStyle,\n responsiveGridItemStyle,\n responsiveMarginStyle,\n responsivePaddingStyle\n)\n\n/**\n * @public\n */\nexport const Box = forwardRef(function Box(\n props: BoxProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n as: asProp = 'div',\n column,\n columnStart,\n columnEnd,\n display = 'block',\n flex,\n height,\n margin = 0,\n marginX,\n marginY,\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n overflow,\n padding = 0,\n paddingX,\n paddingY,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n row,\n rowStart,\n rowEnd,\n sizing,\n ...restProps\n } = props\n\n return (\n <Root\n data-as={typeof asProp === 'string' ? asProp : undefined}\n data-ui=\"Box\"\n {...restProps}\n $column={useArrayProp(column)}\n $columnStart={useArrayProp(columnStart)}\n $columnEnd={useArrayProp(columnEnd)}\n $display={useArrayProp(display)}\n $flex={useArrayProp(flex)}\n $height={useArrayProp(height)}\n $margin={useArrayProp(margin)}\n $marginX={useArrayProp(marginX)}\n $marginY={useArrayProp(marginY)}\n $marginTop={useArrayProp(marginTop)}\n $marginRight={useArrayProp(marginRight)}\n $marginBottom={useArrayProp(marginBottom)}\n $marginLeft={useArrayProp(marginLeft)}\n $overflow={useArrayProp(overflow)}\n $padding={useArrayProp(padding)}\n $paddingX={useArrayProp(paddingX)}\n $paddingY={useArrayProp(paddingY)}\n $paddingTop={useArrayProp(paddingTop)}\n $paddingRight={useArrayProp(paddingRight)}\n $paddingBottom={useArrayProp(paddingBottom)}\n $paddingLeft={useArrayProp(paddingLeft)}\n $row={useArrayProp(row)}\n $rowStart={useArrayProp(rowStart)}\n $rowEnd={useArrayProp(rowEnd)}\n $sizing={useArrayProp(sizing)}\n as={asProp}\n ref={ref}\n >\n {props.children}\n </Root>\n )\n})\n","import {CSSObject} from 'styled-components'\nimport {_getResponsiveSpace} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveMarginStyleProps} from './types'\n\nexport function responsiveMarginStyle(\n props: ResponsiveMarginStyleProps & ThemeProps\n): CSSObject[][] {\n const {theme} = props\n\n return [\n _getResponsiveSpace(theme, ['margin'], props.$margin),\n _getResponsiveSpace(theme, ['marginLeft', 'marginRight'], props.$marginX),\n _getResponsiveSpace(theme, ['marginTop', 'marginBottom'], props.$marginY),\n _getResponsiveSpace(theme, ['marginTop'], props.$marginTop),\n _getResponsiveSpace(theme, ['marginRight'], props.$marginRight),\n _getResponsiveSpace(theme, ['marginBottom'], props.$marginBottom),\n _getResponsiveSpace(theme, ['marginLeft'], props.$marginLeft),\n ].filter(Boolean) as CSSObject[][]\n}\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {responsiveLabelFont, responsiveTextAlignStyle} from '../../styles/internal'\nimport {ThemeFontWeightKey} from '../../theme'\nimport {TextAlign} from '../../types'\nimport {labelBaseStyle} from './styles'\n\n/**\n * @public\n */\nexport interface LabelProps {\n accent?: boolean\n align?: TextAlign | TextAlign[]\n as?: React.ElementType | keyof JSX.IntrinsicElements\n muted?: boolean\n size?: number | number[]\n /**\n * Controls how overflowing text is treated.\n * Use `textOverflow=\"ellipsis\"` to render text as a single line which is concatenated with a `…` symbol.\n * @beta\n */\n textOverflow?: 'ellipsis'\n weight?: ThemeFontWeightKey\n}\n\nconst Root = styled.div<{\n $accent?: boolean\n $align: TextAlign[]\n $muted: boolean\n $size: number[]\n}>(responsiveLabelFont, responsiveTextAlignStyle, labelBaseStyle)\n\nconst SpanWithTextOverflow = styled.span`\n display: block;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n`\n\n/**\n * @public\n */\nexport const Label = forwardRef(function Label(\n props: LabelProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'size'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n accent,\n align,\n children: childrenProp,\n muted = false,\n size = 2,\n textOverflow,\n weight,\n ...restProps\n } = props\n\n let children = childrenProp\n\n if (textOverflow === 'ellipsis') {\n children = <SpanWithTextOverflow>{children}</SpanWithTextOverflow>\n } else {\n children = <span>{children}</span>\n }\n\n return (\n <Root\n data-ui=\"Label\"\n {...restProps}\n $accent={accent}\n $align={useArrayProp(align)}\n $muted={muted}\n $size={useArrayProp(size)}\n $weight={weight}\n ref={ref}\n >\n {children}\n </Root>\n )\n})\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\n\nexport function labelBaseStyle(\n props: {$accent?: boolean; $muted: boolean} & ThemeProps\n): FlattenSimpleInterpolation {\n const {$accent, $muted, theme} = props\n const {fonts} = theme.sanity\n\n return css`\n text-transform: uppercase;\n\n ${$accent &&\n css`\n color: var(--card-accent-fg-color);\n `}\n\n ${$muted &&\n css`\n color: var(--card-muted-fg-color);\n `}\n\n & code {\n font-family: ${fonts.code.family};\n border-radius: 1px;\n }\n\n & a {\n text-decoration: none;\n border-radius: 1px;\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\n }\n `\n}\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/internal'\nimport {BadgeMode, BadgeTone} from '../../types'\nimport {Box, BoxProps} from '../box'\nimport {Label} from '../label'\nimport {ResponsiveRadiusProps} from '../types'\nimport {badgeStyle} from './styles'\nimport {BadgeStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface BadgeProps extends BoxProps, ResponsiveRadiusProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n fontSize?: number | number[]\n mode?: BadgeMode\n tone?: BadgeTone\n}\n\nconst Root = styled(Box)<BadgeStyleProps & ResponsiveRadiusStyleProps>(\n responsiveRadiusStyle,\n badgeStyle\n)\n\n/**\n * @public\n */\nexport const Badge = forwardRef(function Badge(\n props: BadgeProps & React.HTMLProps<HTMLDivElement>,\n ref\n) {\n const {\n children,\n fontSize,\n mode = 'default',\n padding = 1,\n radius = 2,\n tone = 'default',\n ...restProps\n } = props\n\n return (\n <Root\n data-ui=\"Badge\"\n {...restProps}\n $mode={mode}\n $tone={tone}\n $radius={useArrayProp(radius)}\n padding={useArrayProp(padding)}\n ref={ref}\n >\n <Label size={fontSize}>{children}</Label>\n </Root>\n )\n})\n","import {CSSObject} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {BadgeStyleProps} from './types'\n\nexport function badgeStyle(props: BadgeStyleProps & ThemeProps): CSSObject {\n const {$mode, $tone, theme} = props\n const palette = theme.sanity.color[$mode === 'outline' ? 'muted' : 'solid']\n const color = palette[$tone] || palette.default\n\n return {\n backgroundColor: color.enabled.bg,\n color: color.enabled.fg,\n boxShadow: `inset 0 0 0 1px ${color.enabled.border}`,\n cursor: 'default',\n\n '&:not([hidden])': {\n display: 'inline-block',\n },\n }\n}\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {\n flexItemStyle,\n FlexItemStyleProps,\n responsiveFlexStyle,\n ResponsiveFlexStyleProps,\n} from '../../styles/internal'\nimport {Box, BoxProps} from '../box'\nimport {ResponsiveFlexProps, ResponsiveFlexItemProps} from '../types'\n\n/**\n * @public\n */\nexport interface FlexProps\n extends Omit<BoxProps, 'display'>,\n ResponsiveFlexProps,\n ResponsiveFlexItemProps {\n gap?: number | number[]\n}\n\nconst Root = styled(Box)<FlexItemStyleProps & ResponsiveFlexStyleProps>(\n flexItemStyle,\n responsiveFlexStyle\n)\n\n/**\n * @public\n */\nexport const Flex = forwardRef(function Flex(\n props: FlexProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'wrap'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {align, as, direction = 'row', gap, justify, wrap, ...restProps} = props\n\n return (\n <Root\n data-ui=\"Flex\"\n {...restProps}\n $align={useArrayProp(align)}\n $direction={useArrayProp(direction)}\n $gap={useArrayProp(gap)}\n $justify={useArrayProp(justify)}\n $wrap={useArrayProp(wrap)}\n forwardedAs={as}\n ref={ref}\n />\n )\n})\n","import {SpinnerIcon} from '@sanity/icons'\nimport {forwardRef} from 'react'\nimport styled, {keyframes} from 'styled-components'\nimport {Text} from '../text'\n\n/**\n * @public\n */\nexport interface SpinnerProps {\n muted?: boolean\n size?: number | number[]\n}\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n`\n\nconst Root = styled(Text)`\n & > span > svg {\n animation: ${rotate} 500ms linear infinite;\n }\n`\n\n/**\n * @public\n */\nexport const Spinner = forwardRef(function Spinner(\n props: SpinnerProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'size'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n return (\n <Root data-ui=\"Spinner\" {...props} ref={ref}>\n <SpinnerIcon />\n </Root>\n )\n})\n","import {CSSObject} from 'styled-components'\nimport {ThemeColorBase, ThemeColorGenericState} from '../../theme'\n\n/**\n * @internal\n */\nexport function _colorVarsStyle(\n base: ThemeColorBase,\n color: ThemeColorGenericState,\n checkered = false\n): CSSObject {\n return {\n // Base\n // @todo: rename to \"--base-\"?\n '--card-shadow-outline-color': base.shadow.outline,\n '--card-shadow-umbra-color': base.shadow.umbra,\n '--card-shadow-penumbra-color': base.shadow.penumbra,\n '--card-shadow-ambient-color': base.shadow.ambient,\n '--card-focus-ring-color': base.focusRing,\n\n // Card\n '--card-bg-color': color.bg,\n '--card-bg-image': checkered\n ? `repeating-conic-gradient(${color.bg} 0% 25%, ${color.bg2 || color.bg} 0% 50%)`\n : undefined,\n '--card-fg-color': color.fg,\n '--card-border-color': color.border,\n '--card-muted-fg-color': color.muted?.fg,\n '--card-accent-fg-color': color.accent?.fg,\n '--card-link-fg-color': color.link?.fg,\n '--card-code-bg-color': color.code?.bg,\n '--card-code-fg-color': color.code?.fg,\n '--card-skeleton-color-from': color.skeleton?.from,\n '--card-skeleton-color-to': color.skeleton?.to,\n\n // @todo: deprecate\n '--card-link-color': color.link?.fg,\n '--card-hairline-soft-color': color.border,\n '--card-hairline-hard-color': color.border,\n }\n}\n","import {css, CSSObject, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {_colorVarsStyle} from '../../styles/colorVars'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/internal'\nimport {ButtonMode, ButtonTone} from '../../types'\n\n/**\n * @internal\n */\nexport function buttonBaseStyles(): FlattenSimpleInterpolation {\n return css`\n -webkit-font-smoothing: inherit;\n appearance: none;\n display: inline-flex;\n align-items: center;\n font: inherit;\n border: 0;\n outline: none;\n user-select: none;\n text-decoration: none;\n border: 0;\n box-sizing: border-box;\n padding: 0;\n margin: 0;\n white-space: nowrap;\n text-align: left;\n position: relative;\n\n & > span {\n display: block;\n flex: 1;\n min-width: 0;\n border-radius: inherit;\n }\n\n &::-moz-focus-inner {\n border: 0;\n padding: 0;\n }\n `\n}\n\nconst buttonTheme = {border: {width: 1}}\n\n/**\n * @internal\n */\nexport function buttonColorStyles(\n props: {$mode: ButtonMode; $tone: ButtonTone} & ThemeProps\n): CSSObject[] {\n const {$mode, theme} = props\n const {focusRing} = theme.sanity\n const base = theme.sanity.color.base\n const mode = theme.sanity.color.button[$mode] || theme.sanity.color.button.default\n const color = mode[props.$tone] || mode.default\n const border = {width: buttonTheme.border.width, color: 'var(--card-border-color)'}\n\n return [\n _colorVarsStyle(base, color.enabled),\n {\n backgroundColor: 'var(--card-bg-color)',\n color: 'var(--card-fg-color)',\n boxShadow: focusRingBorderStyle(border),\n '&:disabled, &[data-disabled=\"true\"]': _colorVarsStyle(base, color.disabled),\n \"&:not([data-disabled='true'])\": {\n '&:focus': {\n boxShadow: focusRingStyle({base, border, focusRing}),\n },\n '&:focus:not(:focus-visible)': {\n boxShadow: focusRingBorderStyle(border),\n },\n '@media (hover: hover)': {\n '&:hover': _colorVarsStyle(base, color.hovered),\n '&:active': _colorVarsStyle(base, color.pressed),\n },\n '&[data-selected]': _colorVarsStyle(base, color.pressed),\n },\n },\n theme.sanity.styles?.button?.root,\n ].filter(Boolean) as CSSObject[]\n}\n","import {createElement, forwardRef, isValidElement, useMemo} from 'react'\nimport {isValidElementType} from 'react-is'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {ThemeProps} from '../../styles'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/internal'\nimport {useTheme} from '../../theme'\nimport {ButtonMode, ButtonTextAlign, ButtonTone, FlexJustify} from '../../types'\nimport {Box} from '../box'\nimport {Flex} from '../flex'\nimport {Spinner} from '../spinner'\nimport {Text} from '../text'\nimport {ResponsivePaddingProps, ResponsiveRadiusProps} from '../types'\nimport {buttonBaseStyles, buttonColorStyles} from './styles'\n\n/**\n * @public\n */\nexport interface ButtonProps extends ResponsivePaddingProps, ResponsiveRadiusProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n fontSize?: number | number[]\n mode?: ButtonMode\n icon?: React.ElementType | React.ReactNode\n iconRight?: React.ElementType | React.ReactNode\n justify?: FlexJustify | FlexJustify[]\n /**\n * @beta Do not use in production, as this might change.\n */\n loading?: boolean\n selected?: boolean\n space?: number | number[]\n textAlign?: ButtonTextAlign\n text?: React.ReactNode\n tone?: ButtonTone\n type?: 'button' | 'reset' | 'submit'\n}\n\nconst Root = styled.button<\n {$mode: ButtonMode; $tone: ButtonTone} & ResponsiveRadiusStyleProps & ThemeProps\n>(responsiveRadiusStyle, buttonBaseStyles, buttonColorStyles)\n\nconst LoadingBox = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--card-bg-color);\n border-radius: inherit;\n z-index: 1;\n box-shadow: inherit;\n`\n\n/**\n * @public\n */\nexport const Button = forwardRef(function Button(\n props: ButtonProps & Omit<React.HTMLProps<HTMLButtonElement>, 'as'>,\n ref: React.ForwardedRef<HTMLButtonElement>\n) {\n const {\n children,\n disabled,\n fontSize,\n icon,\n iconRight,\n justify: justifyProp = 'center',\n loading,\n mode = 'default',\n padding: paddingProp = 3,\n paddingX: paddingXProp,\n paddingY: paddingYProp,\n paddingTop: paddingTopProp,\n paddingBottom: paddingBottomProp,\n paddingLeft: paddingLeftProp,\n paddingRight: paddingRightProp,\n radius: radiusProp = 2,\n selected,\n space: spaceProp = 3,\n text,\n textAlign,\n tone = 'default',\n type = 'button',\n ...restProps\n } = props\n\n const justify = useArrayProp(justifyProp)\n const padding = useArrayProp(paddingProp)\n const paddingX = useArrayProp(paddingXProp)\n const paddingY = useArrayProp(paddingYProp)\n const paddingTop = useArrayProp(paddingTopProp)\n const paddingBottom = useArrayProp(paddingBottomProp)\n const paddingLeft = useArrayProp(paddingLeftProp)\n const paddingRight = useArrayProp(paddingRightProp)\n const radius = useArrayProp(radiusProp)\n const space = useArrayProp(spaceProp)\n\n const theme = useTheme()\n\n const boxProps = useMemo(\n () => ({\n // flex: 1,\n padding,\n paddingX,\n paddingY,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n }),\n [padding, paddingX, paddingY, paddingTop, paddingBottom, paddingLeft, paddingRight]\n )\n\n return (\n <Root\n data-ui=\"Button\"\n {...restProps}\n $mode={mode}\n $radius={radius}\n $tone={tone}\n data-disabled={Boolean(loading || disabled)}\n data-selected={selected ? '' : undefined}\n disabled={Boolean(loading || disabled)}\n ref={ref}\n type={type}\n >\n {Boolean(loading) && (\n <LoadingBox>\n <Spinner />\n </LoadingBox>\n )}\n\n {(icon || text || iconRight) && (\n <Box as=\"span\" {...boxProps}>\n <Flex as=\"span\" justify={justify}>\n {icon && (\n <Text size={fontSize}>\n {isValidElement(icon) && icon}\n {isValidElementType(icon) && createElement(icon)}\n </Text>\n )}\n\n {text && (\n <Box\n flex={iconRight ? 1 : undefined}\n marginLeft={icon ? space : undefined}\n marginRight={iconRight ? space : undefined}\n >\n <Text\n align={textAlign}\n size={fontSize}\n textOverflow=\"ellipsis\"\n weight={theme.sanity.button.textWeight}\n >\n {text}\n </Text>\n </Box>\n )}\n\n {iconRight && (\n <Text size={fontSize}>\n {isValidElement(iconRight) && iconRight}\n {isValidElementType(iconRight) && createElement(iconRight)}\n </Text>\n )}\n </Flex>\n </Box>\n )}\n\n {children && (\n <Box as=\"span\" {...boxProps}>\n {children}\n </Box>\n )}\n </Root>\n )\n})\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {_colorVarsStyle} from '../../styles/colorVars'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/focusRing'\nimport {CardStyleProps} from './types'\n\nexport function cardStyle(\n props: CardStyleProps & ThemeProps\n): Array<FlattenSimpleInterpolation | (() => FlattenSimpleInterpolation)> {\n return [cardBaseStyle(props), cardColorStyle(props)]\n}\n\nexport function cardBaseStyle(props: CardStyleProps & ThemeProps): FlattenSimpleInterpolation {\n const {$checkered, theme} = props\n const space = theme.sanity.space\n\n return css`\n ${$checkered &&\n css`\n background-size: ${space[3]}px ${space[3]}px;\n background-position: 50% 50%;\n background-image: var(--card-bg-image);\n `}\n\n &[data-as='button'] {\n -webkit-font-smoothing: inherit;\n appearance: none;\n outline: none;\n font: inherit;\n text-align: inherit;\n border: 0;\n width: stretch;\n }\n\n /* &:is(a) */\n &[data-as='a'] {\n outline: none;\n text-decoration: none;\n }\n\n /* &:is(pre) */\n &[data-as='pre'] {\n font: inherit;\n }\n `\n}\n\nexport function cardColorStyle(props: CardStyleProps & ThemeProps): FlattenSimpleInterpolation {\n const {$checkered, $focusRing, theme} = props\n const {focusRing} = theme.sanity\n const {base, card} = theme.sanity.color\n const border = {width: 0, color: 'var(--card-border-color)'}\n\n return css`\n ${_colorVarsStyle(base, card.enabled, $checkered)}\n\n background-color: var(--card-bg-color);\n color: var(--card-fg-color);\n\n /* &:is(button) */\n &[data-as='button'] {\n --card-focus-ring-box-shadow: none;\n\n cursor: default;\n box-shadow: var(--card-focus-ring-box-shadow);\n\n &:disabled {\n ${_colorVarsStyle(base, card.disabled, $checkered)}\n }\n\n &:not(:disabled) {\n &[data-pressed] {\n ${_colorVarsStyle(base, card.pressed, $checkered)}\n }\n\n &[data-selected] {\n ${_colorVarsStyle(base, card.selected, $checkered)}\n }\n\n @media (hover: hover) {\n &:not([data-pressed]):not([data-selected]) {\n &:hover {\n ${_colorVarsStyle(base, card.hovered, $checkered)}\n }\n\n &:active {\n ${_colorVarsStyle(base, card.pressed, $checkered)}\n }\n }\n }\n\n &:focus {\n --card-focus-ring-box-shadow: ${$focusRing\n ? focusRingStyle({base, border, focusRing})\n : undefined};\n }\n\n &:focus:not(:focus-visible) {\n --card-focus-ring-box-shadow: ${$focusRing ? focusRingBorderStyle(border) : undefined};\n }\n }\n }\n\n /* &:is(a) */\n &[data-as='a'] {\n cursor: pointer;\n box-shadow: var(--card-focus-ring-box-shadow);\n\n &[data-disabled] {\n ${_colorVarsStyle(base, card.disabled, $checkered)}\n }\n\n &:not([data-disabled]) {\n &[data-pressed] {\n ${_colorVarsStyle(base, card.pressed, $checkered)}\n }\n\n &[data-selected] {\n ${_colorVarsStyle(base, card.selected, $checkered)}\n }\n\n @media (hover: hover) {\n &:not([data-pressed]):not([data-selected]) {\n &:hover {\n ${_colorVarsStyle(base, card.hovered, $checkered)}\n }\n\n &:active {\n ${_colorVarsStyle(base, card.pressed, $checkered)}\n }\n }\n }\n\n &:focus {\n --card-focus-ring-box-shadow: ${$focusRing\n ? focusRingStyle({base, border, focusRing})\n : undefined};\n }\n\n &:focus:not(:focus-visible) {\n --card-focus-ring-box-shadow: ${$focusRing ? focusRingBorderStyle(border) : undefined};\n }\n }\n }\n\n ${theme.sanity.styles?.card?.root}\n `\n}\n","import {forwardRef} from 'react'\nimport {isValidElementType} from 'react-is'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {\n responsiveBorderStyle,\n ResponsiveBorderStyleProps,\n responsiveRadiusStyle,\n ResponsiveRadiusStyleProps,\n responsiveShadowStyle,\n ResponsiveShadowStyleProps,\n} from '../../styles/internal'\nimport {ThemeColorProvider, ThemeColorSchemeKey, useRootTheme} from '../../theme'\nimport {CardTone} from '../../types'\nimport {Box, BoxProps} from '../box'\nimport {ResponsiveBorderProps, ResponsiveRadiusProps, ResponsiveShadowProps} from '../types'\nimport {cardStyle} from './styles'\nimport {CardStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface CardProps\n extends BoxProps,\n ResponsiveBorderProps,\n ResponsiveRadiusProps,\n ResponsiveShadowProps {\n /**\n * Do not use in production.\n * @beta\n */\n __unstable_checkered?: boolean\n /**\n * Do not use in production.\n * @beta\n */\n __unstable_focusRing?: boolean\n pressed?: boolean\n scheme?: ThemeColorSchemeKey\n tone?: CardTone\n}\n\nconst Root = styled(Box)<\n CardStyleProps &\n ResponsiveRadiusStyleProps &\n ResponsiveBorderStyleProps &\n ResponsiveShadowStyleProps\n>(responsiveBorderStyle, responsiveRadiusStyle, responsiveShadowStyle, cardStyle)\n\n/**\n * @public\n */\nexport const Card = forwardRef(function Card(\n props: CardProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n __unstable_checkered: checkered = false,\n __unstable_focusRing: focusRing = false,\n as: asProp,\n border,\n borderTop,\n borderRight,\n borderBottom,\n borderLeft,\n pressed,\n radius = 0,\n scheme,\n selected,\n shadow,\n tone: toneProp = 'default',\n ...restProps\n } = props\n\n const as = isValidElementType(asProp) ? asProp : 'div'\n const rootTheme = useRootTheme()\n const tone = toneProp === 'inherit' ? rootTheme.tone : toneProp\n\n return (\n <ThemeColorProvider scheme={scheme} tone={tone}>\n <Root\n data-as={typeof as === 'string' ? as : undefined}\n data-scheme={rootTheme.scheme}\n data-ui=\"Card\"\n data-tone={tone}\n {...restProps}\n $border={useArrayProp(border)}\n $borderTop={useArrayProp(borderTop)}\n $borderRight={useArrayProp(borderRight)}\n $borderBottom={useArrayProp(borderBottom)}\n $borderLeft={useArrayProp(borderLeft)}\n $checkered={checkered}\n $focusRing={focusRing}\n $radius={useArrayProp(radius)}\n $shadow={useArrayProp(shadow)}\n $tone={tone}\n data-checkered={checkered ? '' : undefined}\n data-pressed={pressed ? '' : undefined}\n data-selected={selected ? '' : undefined}\n forwardedAs={as}\n ref={ref}\n selected={selected}\n />\n </ThemeColorProvider>\n )\n})\n","import {CheckmarkIcon, RemoveIcon} from '@sanity/icons'\nimport {forwardRef, useEffect} from 'react'\nimport styled from 'styled-components'\nimport {useForwardedRef, useCustomValidity} from '../../hooks'\nimport {checkboxBaseStyles, inputElementStyles} from './styles'\n\n/**\n * @public\n */\nexport interface CheckboxProps {\n indeterminate?: boolean\n customValidity?: string\n}\n\nconst Root = styled.div(checkboxBaseStyles)\nconst Input = styled.input(inputElementStyles)\n\n/**\n * @public\n */\nexport const Checkbox = forwardRef(function Checkbox(\n props: Omit<React.HTMLProps<HTMLInputElement>, 'as' | 'type'> & CheckboxProps,\n forwardedRef: React.ForwardedRef<HTMLInputElement>\n) {\n const {\n checked,\n className,\n disabled,\n indeterminate,\n customValidity,\n readOnly,\n style,\n ...restProps\n } = props\n const ref = useForwardedRef(forwardedRef)\n\n useCustomValidity(ref, customValidity)\n\n useEffect(() => {\n if (ref.current) {\n // Set the indeterminate state\n ref.current.indeterminate = indeterminate || false\n }\n }, [indeterminate, ref])\n\n return (\n <Root className={className} data-ui=\"Checkbox\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n {...restProps}\n checked={checked}\n disabled={disabled || readOnly}\n type=\"checkbox\"\n readOnly={readOnly}\n ref={ref}\n />\n <span>\n <CheckmarkIcon />\n <RemoveIcon />\n </span>\n </Root>\n )\n})\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {rem, ThemeProps} from '../../styles'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/internal'\n\nexport function checkboxBaseStyles(): FlattenSimpleInterpolation {\n return css`\n position: relative;\n display: inline-block;\n `\n}\n\nexport function inputElementStyles(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const color = theme.sanity.color.input\n const {focusRing, input, radius} = theme.sanity\n\n return css`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n outline: none;\n opacity: 0;\n z-index: 1;\n padding: 0;\n margin: 0;\n\n & + span {\n position: relative;\n display: block;\n height: ${rem(input.checkbox.size)};\n width: ${rem(input.checkbox.size)};\n box-sizing: border-box;\n box-shadow: ${focusRingBorderStyle({\n color: color.default.enabled.border,\n width: input.border.width,\n })};\n border-radius: ${rem(radius[2])};\n line-height: 1;\n background-color: ${color.default.enabled.bg};\n\n & > svg {\n display: block;\n position: absolute;\n opacity: 0;\n height: 100%;\n width: 100%;\n\n & > path {\n vector-effect: non-scaling-stroke;\n stroke-width: 2 !important;\n }\n }\n }\n\n &:not(:disabled):focus + span {\n box-shadow: ${focusRingStyle({\n border: {width: input.border.width, color: color.default.enabled.border},\n focusRing,\n })};\n }\n\n &:not(:disabled):focus:not(:focus-visible) + span {\n box-shadow: ${focusRingBorderStyle({\n color: color.default.enabled.border,\n width: input.border.width,\n })};\n }\n\n &:checked + span > svg:first-child {\n opacity: 1;\n }\n\n &[data-read-only] + span {\n background-color: ${color.default.readOnly.bg};\n box-shadow: ${focusRingBorderStyle({\n width: input.border.width,\n color: color.default.readOnly.border,\n })};\n color: ${color.default.readOnly.fg};\n }\n\n &:not([data-read-only]):disabled + span {\n background-color: ${color.default.disabled.bg};\n box-shadow: ${focusRingBorderStyle({\n width: input.border.width,\n color: color.default.disabled.border,\n })};\n color: ${color.default.disabled.fg};\n }\n\n &:indeterminate + span > svg:last-child {\n opacity: 1;\n }\n `\n}\n","import {css, FlattenInterpolation, ThemeProps as StyledThemeProps} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {Theme} from '../../theme'\n\nfunction codeSyntaxHighlightingStyle({theme}: ThemeProps) {\n const color = theme.sanity.color.syntax\n\n return {\n '&.atrule': {color: color.atrule},\n '&.attr-name': {color: color.attrName},\n '&.attr-value': {color: color.attrValue},\n '&.attribute': {color: color.attribute},\n '&.boolean': {color: color.boolean},\n '&.builtin': {color: color.builtin},\n '&.cdata': {color: color.cdata},\n '&.char': {color: color.char},\n '&.class': {color: color.class},\n '&.class-name': {color: color.className},\n '&.comment': {color: color.comment},\n '&.constant': {color: color.constant},\n '&.deleted': {color: color.deleted},\n '&.doctype': {color: color.doctype},\n '&.entity': {color: color.entity},\n '&.function': {color: color.function},\n '&.hexcode': {color: color.hexcode},\n '&.id': {color: color.id},\n '&.important': {color: color.important},\n '&.inserted': {color: color.inserted},\n '&.keyword': {color: color.keyword},\n '&.number': {color: color.number},\n '&.operator': {color: color.operator},\n '&.prolog': {color: color.prolog},\n '&.property': {color: color.property},\n '&.pseudo-class': {color: color.pseudoClass},\n '&.pseudo-element': {color: color.pseudoElement},\n '&.punctuation': {color: color.punctuation},\n '&.regex': {color: color.regex},\n '&.selector': {color: color.selector},\n '&.string': {color: color.string},\n '&.symbol': {color: color.symbol},\n '&.tag': {color: color.tag},\n '&.unit': {color: color.unit},\n '&.url': {color: color.url},\n '&.variable': {color: color.variable},\n }\n}\n\nexport function codeBaseStyle(): FlattenInterpolation<StyledThemeProps<Theme>> {\n return css`\n color: var(--card-code-fg-color);\n\n & code {\n font-family: inherit;\n\n &.refractor .token {\n ${codeSyntaxHighlightingStyle}\n }\n }\n\n & a {\n color: inherit;\n text-decoration: underline;\n border-radius: 1px;\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\n }\n `\n}\n","import {forwardRef} from 'react'\nimport Refractor from 'react-refractor'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {responsiveCodeFontStyle, ResponsiveFontStyleProps} from '../../styles/internal'\nimport {codeBaseStyle} from './styles'\n\n/**\n * @public\n */\nexport interface CodeProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n language?: string\n size?: number | number[]\n weight?: string\n}\n\nconst Root = styled.pre<ResponsiveFontStyleProps>(codeBaseStyle, responsiveCodeFontStyle)\n\n/**\n * @public\n */\nexport const Code = forwardRef(function Code(\n props: CodeProps & Omit<React.HTMLProps<HTMLElement>, 'as' | 'size'>,\n ref: React.ForwardedRef<HTMLElement>\n) {\n const {children, language: languageProp, size = 2, weight, ...restProps} = props\n const language = typeof languageProp === 'string' ? languageProp : undefined\n const registered = language ? Refractor.hasLanguage(language as any) : false\n\n return (\n <Root data-ui=\"Code\" {...restProps} $size={useArrayProp(size)} $weight={weight} ref={ref}>\n {!(language && registered) && <code>{children}</code>}\n {language && registered && <Refractor inline language={language} value={String(children)} />}\n </Root>\n )\n})\n","import {CSSObject} from 'styled-components'\nimport {rem, _responsive, ThemeProps} from '../../styles'\nimport {ResponsiveWidthStyleProps} from './types'\n\nconst BASE_STYLE: CSSObject = {\n width: '100%',\n margin: '0 auto',\n}\n\nexport function containerBaseStyle(): CSSObject {\n return BASE_STYLE\n}\n\nexport function responsiveContainerWidthStyle(\n props: ResponsiveWidthStyleProps & ThemeProps\n): CSSObject[] {\n const {theme} = props\n const {container, media} = theme.sanity\n\n return _responsive(media, props.$width, (val) => ({\n maxWidth: val === 'auto' ? 'none' : rem(container[val]),\n }))\n}\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {Box, BoxProps} from '../box'\nimport {ResponsiveWidthProps} from '../types'\nimport {containerBaseStyle, responsiveContainerWidthStyle} from './styles'\nimport {ResponsiveWidthStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface ContainerProps extends BoxProps, ResponsiveWidthProps {}\n\nconst Root = styled(Box)<ResponsiveWidthStyleProps>(\n containerBaseStyle,\n responsiveContainerWidthStyle\n)\n\n/**\n * @public\n */\nexport const Container = forwardRef(function Container(\n props: ContainerProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'width'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {as, width = 2, ...restProps} = props\n\n return (\n <Root\n data-ui=\"Container\"\n {...restProps}\n $width={useArrayProp(width)}\n forwardedAs={as}\n ref={ref}\n />\n )\n})\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {responsiveGridStyle, ResponsiveGridStyleProps} from '../../styles/internal'\nimport {Box, BoxProps} from '../box'\nimport {ResponsiveGridProps} from '../types'\n\n/**\n * @public\n */\nexport interface GridProps extends Omit<BoxProps, 'display'>, ResponsiveGridProps {}\n\nconst Root = styled(Box)<ResponsiveGridStyleProps>(responsiveGridStyle)\n\n/**\n * @public\n */\nexport const Grid = forwardRef(function Grid(\n props: GridProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'rows'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {as, autoRows, autoCols, autoFlow, columns, gap, gapX, gapY, rows, children, ...restProps} =\n props\n\n return (\n <Root\n data-as={typeof as === 'string' ? as : undefined}\n data-ui=\"Grid\"\n {...restProps}\n $autoRows={useArrayProp(autoRows)}\n $autoCols={useArrayProp(autoCols)}\n $autoFlow={useArrayProp(autoFlow)}\n $columns={useArrayProp(columns)}\n $gap={useArrayProp(gap)}\n $gapX={useArrayProp(gapX)}\n $gapY={useArrayProp(gapY)}\n $rows={useArrayProp(rows)}\n forwardedAs={as}\n ref={ref}\n >\n {children}\n </Root>\n )\n})\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {\n ResponsiveFontStyleProps,\n responsiveHeadingFont,\n responsiveTextAlignStyle,\n ResponsiveTextAlignStyleProps,\n} from '../../styles/internal'\nimport {ThemeFontWeightKey} from '../../theme'\nimport {TextAlign} from '../../types'\nimport {headingBaseStyle} from './styles'\nimport {HeadingStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface HeadingProps {\n accent?: boolean\n align?: TextAlign | TextAlign[]\n as?: React.ElementType | keyof JSX.IntrinsicElements\n muted?: boolean\n size?: number | number[]\n /**\n * Controls how overflowing text is treated.\n * Use `textOverflow=\"ellipsis\"` to render text as a single line which is concatenated with a `…` symbol.\n * @beta\n */\n textOverflow?: 'ellipsis'\n weight?: ThemeFontWeightKey\n}\n\nconst Root = styled.div<\n HeadingStyleProps & ResponsiveTextAlignStyleProps & ResponsiveFontStyleProps\n>(headingBaseStyle, responsiveTextAlignStyle, responsiveHeadingFont)\n\nconst SpanWithTextOverflow = styled.span`\n display: block;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n`\n\n/**\n * @public\n */\nexport const Heading = forwardRef(function Heading(\n props: HeadingProps & Omit<React.HTMLProps<HTMLElement>, 'as' | 'size'>,\n ref: React.ForwardedRef<HTMLElement>\n) {\n const {\n accent = false,\n align,\n children: childrenProp,\n muted = false,\n size = 2,\n textOverflow,\n weight,\n ...restProps\n } = props\n\n let children = childrenProp\n\n if (textOverflow === 'ellipsis') {\n children = <SpanWithTextOverflow>{children}</SpanWithTextOverflow>\n }\n\n return (\n <Root\n data-ui=\"Heading\"\n {...restProps}\n $accent={accent}\n $align={useArrayProp(align)}\n $muted={muted}\n $size={useArrayProp(size)}\n $weight={weight}\n ref={ref}\n >\n <span>{children}</span>\n </Root>\n )\n})\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {HeadingStyleProps} from './types'\n\nexport function headingBaseStyle(\n props: HeadingStyleProps & ThemeProps\n): FlattenSimpleInterpolation {\n const {$accent, $muted, theme} = props\n\n return css`\n ${$accent &&\n css`\n color: var(--card-accent-fg-color);\n `}\n\n ${$muted &&\n css`\n color: var(--card-muted-fg-color);\n `}\n\n & code {\n font-family: ${theme.sanity.fonts.code.family};\n border-radius: 1px;\n }\n\n & a {\n text-decoration: none;\n border-radius: 1px;\n color: var(--card-link-color);\n outline: none;\n\n @media (hover: hover) {\n &:hover {\n text-decoration: underline;\n }\n }\n\n &:focus {\n box-shadow: 0 0 0 1px var(--card-bg-color), 0 0 0 3px var(--card-focus-ring-color);\n }\n\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\n }\n `\n}\n","import {forwardRef, useMemo} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {Box, BoxProps} from '../box'\nimport {childrenToElementArray} from '../helpers'\nimport {inlineBaseStyle, inlineSpaceStyle} from './styles'\nimport {ResponsiveInlineSpaceStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface InlineProps extends Omit<BoxProps, 'display'> {\n space?: number | number[]\n}\n\nconst Root = styled(Box)<ResponsiveInlineSpaceStyleProps>(inlineBaseStyle, inlineSpaceStyle)\n\n/**\n * @public\n */\nexport const Inline = forwardRef(function Inline(\n props: InlineProps & React.HTMLProps<HTMLDivElement>,\n ref\n) {\n const {as, children: childrenProp, space, ...restProps} = props\n\n const children = useMemo(\n () =>\n childrenToElementArray(childrenProp)\n .filter(Boolean)\n .map((child, idx) => <div key={idx}>{child}</div>),\n [childrenProp]\n )\n\n return (\n <Root data-ui=\"Inline\" {...restProps} $space={useArrayProp(space)} forwardedAs={as} ref={ref}>\n {children}\n </Root>\n )\n})\n","import {CSSObject} from 'styled-components'\nimport {rem, _responsive, ThemeProps} from '../../styles'\nimport {ResponsiveInlineSpaceStyleProps} from './types'\n\nexport function inlineBaseStyle(): CSSObject {\n return {\n lineHeight: 0,\n\n '&&:not([hidden])': {\n display: 'block',\n },\n\n '& > div': {\n display: 'inline-block',\n verticalAlign: 'middle',\n },\n }\n}\n\nexport function inlineSpaceStyle(props: ResponsiveInlineSpaceStyleProps & ThemeProps): CSSObject[] {\n const {theme} = props\n\n return _responsive(theme.sanity.media, props.$space, (spaceIndex) => {\n const space = rem(theme.sanity.space[spaceIndex])\n\n return {\n margin: `-${space} 0 0 -${space}`,\n '& > div': {padding: `${space} 0 0 ${space}`},\n }\n })\n}\n","import {forwardRef} from 'react'\nimport styled, {css} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/internal'\nimport {Box} from '../box'\nimport {Code} from '../code'\n\n/**\n * @public\n */\nexport interface KBDProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n fontSize?: number | number[]\n padding?: number | number[]\n radius?: number | number[]\n}\n\nfunction kbdStyle() {\n return css`\n background: var(--card-bg-color);\n font: inherit;\n box-shadow: inset 0 0 0 1px var(--card-hairline-hard-color);\n\n &:not([hidden]) {\n display: inline-block;\n }\n `\n}\n\nconst Root = styled.kbd<ResponsiveRadiusStyleProps>(responsiveRadiusStyle, kbdStyle)\n\n/**\n * @public\n */\nexport const KBD = forwardRef(function KBD(\n props: KBDProps & Omit<React.HTMLProps<HTMLElement>, 'as' | 'ref' | 'size'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {children, fontSize = 1, padding = 1, radius = 2, ...restProps} = props\n\n return (\n <Root data-ui=\"KBD\" {...restProps} $radius={useArrayProp(radius)} ref={ref}>\n <Box as=\"span\" padding={padding}>\n <Code as=\"span\" muted size={fontSize}>\n {children}\n </Code>\n </Box>\n </Root>\n )\n})\n","import {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\nimport {BoundaryElementContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/boundaryElement')\n\nglobalScope[key] = globalScope[key] || createContext<BoundaryElementContextValue | null>(null)\n\nexport const BoundaryElementContext: React.Context<BoundaryElementContextValue | null> =\n globalScope[key]\n","import {useMemo} from 'react'\nimport {BoundaryElementContext} from './boundaryElementContext'\nimport {BoundaryElementContextValue} from './types'\n\n/**\n * @public\n */\nexport interface BoundaryElementProviderProps {\n children: React.ReactNode\n element: HTMLElement | null\n}\n\n/**\n * @public\n */\nexport function BoundaryElementProvider(props: BoundaryElementProviderProps): React.ReactElement {\n const {children, element} = props\n const value: BoundaryElementContextValue = useMemo(() => ({version: 0.0, element}), [element])\n\n return <BoundaryElementContext.Provider value={value}>{children}</BoundaryElementContext.Provider>\n}\n","import {useContext} from 'react'\nimport {isRecord} from '../../lib/isRecord'\nimport {BoundaryElementContext} from './boundaryElementContext'\nimport {BoundaryElementContextValue} from './types'\n\nconst DEFAULT_VALUE: BoundaryElementContextValue = {\n version: 0.0,\n element: null,\n}\n\n/**\n * @public\n */\nexport function useBoundaryElement(): BoundaryElementContextValue {\n const value = useContext(BoundaryElementContext)\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (value && (!isRecord(value) || value.version !== 0.0)) {\n throw new Error('useBoundaryElement(): the context value is not compatible')\n }\n\n return value || DEFAULT_VALUE\n}\n","import {forwardRef, useCallback, useMemo, useState} from 'react'\nimport {useElementSize, useForwardedRef} from '../../hooks'\nimport {useTheme} from '../../theme'\nimport {findMaxBreakpoints, findMinBreakpoints} from './helpers'\n\n/**\n * DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface MediaQueryProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n media?: number[]\n}\n\n/**\n * DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const ElementQuery = forwardRef(function ElementQuery(\n props: MediaQueryProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'media'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const theme = useTheme()\n const {children, media = theme.sanity.media, ...restProps} = props\n\n const forwardedRef = useForwardedRef(ref)\n const [element, setElement] = useState<HTMLDivElement | null>(null)\n const elementSize = useElementSize(element)\n const width = useMemo(() => elementSize?.border.width ?? window.innerWidth, [elementSize])\n\n const max = useMemo(() => findMaxBreakpoints(media, width), [media, width])\n const min = useMemo(() => findMinBreakpoints(media, width), [media, width])\n\n const setRef = useCallback(\n (el: HTMLDivElement | null) => {\n forwardedRef.current = el\n setElement(el)\n },\n [forwardedRef]\n )\n\n return (\n <div\n data-ui=\"ElementQuery\"\n {...restProps}\n data-eq-max={max.length ? max.join(' ') : undefined}\n data-eq-min={min.length ? min.join(' ') : undefined}\n ref={setRef}\n >\n {children}\n </div>\n )\n})\n","export function findMaxBreakpoints(media: number[], width: number): number[] {\n const ret: number[] = []\n\n for (let i = 0; i < media.length; i += 1) {\n const bp = media[i]\n\n if (bp > width) {\n ret.push(i)\n }\n }\n\n return ret\n}\n\nexport function findMinBreakpoints(media: number[], width: number): number[] {\n const ret: number[] = []\n\n for (let i = 0; i < media.length; i += 1) {\n const bp = media[i]\n\n if (bp <= width) {\n ret.push(i)\n }\n }\n\n return ret\n}\n","import {Component, PropsWithChildren} from 'react'\nimport {Code} from '../primitives/code'\n\n/**\n * DO NOT USE IN PRODUCTION\n * @beta\n */\nexport type ErrorBoundaryProps = PropsWithChildren<{\n onCatch: (params: {error: Error; info: React.ErrorInfo}) => void\n}>\n\n/**\n * DO NOT USE IN PRODUCTION\n * @beta\n */\nexport interface ErrorBoundaryState {\n error: Error | null\n}\n\n/**\n * DO NOT USE IN PRODUCTION\n * @beta\n */\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = {error: null}\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n // Update state so the next render will show the fallback UI.\n return {error}\n }\n\n componentDidCatch(error: Error, info: React.ErrorInfo): void {\n this.props.onCatch({error, info})\n }\n\n render(): React.ReactNode {\n const {error} = this.state\n\n if (error) {\n const message = typeof error?.message === 'string' ? error.message : 'Error'\n\n return <Code>{message}</Code>\n }\n\n return this.props.children\n }\n}\n","import {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\nimport {LayerContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/layer')\n\nglobalScope[key] = globalScope[key] || createContext<LayerContextValue | null>(null)\n\nexport const LayerContext: React.Context<LayerContextValue | null> = globalScope[key]\n","import {useContext} from 'react'\nimport {isRecord} from '../../lib/isRecord'\nimport {LayerContext} from './layerContext'\nimport {LayerContextValue} from './types'\n\n/**\n * @public\n */\nexport function useLayer(): LayerContextValue {\n const value = useContext(LayerContext)\n\n if (!value) {\n throw new Error('useLayer(): missing context value')\n }\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (!isRecord(value) || value.version !== 0.0) {\n throw new Error('useLayer(): the context value is not compatible')\n }\n\n return value\n}\n","import {useCallback, useContext, useEffect, useMemo, useState} from 'react'\nimport {useMediaIndex, useArrayProp} from '../../hooks'\nimport {LayerContext} from './layerContext'\nimport {LayerContextValue} from './types'\n\n/**\n * @public\n */\nexport interface LayerProviderProps {\n children?: React.ReactNode\n zOffset?: number | number[]\n}\n\n/**\n * @public\n */\nexport function LayerProvider(props: LayerProviderProps): React.ReactElement {\n const {children, zOffset: zOffsetProp = 0} = props\n const parent = useContext(LayerContext)\n const zOffset = useArrayProp(zOffsetProp)\n const maxMediaIndex = zOffset.length - 1\n const mediaIndex = Math.min(useMediaIndex(), maxMediaIndex)\n const zIndex = parent ? parent.zIndex + zOffset[mediaIndex] : zOffset[mediaIndex]\n const [size, setSize] = useState(0)\n\n const registerChild = useCallback(() => {\n setSize((v) => v + 1)\n\n return () => setSize((v) => v - 1)\n }, [])\n\n const parentRegisterChild = parent?.registerChild\n\n useEffect(() => {\n if (!parentRegisterChild) return\n\n return parentRegisterChild()\n }, [parentRegisterChild])\n\n const value: LayerContextValue = useMemo(\n () => ({version: 0.0, isTopLayer: size === 0, registerChild, size, zIndex}),\n [size, registerChild, zIndex]\n )\n\n return <LayerContext.Provider value={value}>{children}</LayerContext.Provider>\n}\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {LayerProvider} from './layerProvider'\nimport {useLayer} from './useLayer'\n\n/**\n * @public\n */\nexport interface LayerProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n zOffset?: number | number[]\n}\n\ninterface LayerChildrenProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n}\n\nconst Root = styled.div`\n position: relative;\n`\n\nconst LayerChildren = forwardRef(function LayerChildren(\n props: LayerChildrenProps & Omit<React.HTMLProps<HTMLDivElement>, 'as'>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {children, style = EMPTY_RECORD, ...restProps} = props\n const {zIndex} = useLayer()\n\n return (\n <Root {...restProps} data-ui=\"Layer\" ref={ref} style={{...style, zIndex}}>\n {children}\n </Root>\n )\n})\n\n/**\n * @public\n */\nexport const Layer = forwardRef(function Layer(\n props: LayerProps & Omit<React.HTMLProps<HTMLDivElement>, 'as'>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {children, zOffset = 1, ...restProps} = props\n\n return (\n <LayerProvider zOffset={zOffset}>\n <LayerChildren {...restProps} ref={ref}>\n {children}\n </LayerChildren>\n </LayerProvider>\n )\n})\n","import {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\nimport {PortalContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/portal')\nconst elementKey = Symbol.for('@sanity/ui/context/portal/element')\n\nglobalScope[elementKey] = null\n\nexport const defaultContextValue: PortalContextValue = {\n version: 0.0,\n boundaryElement: null,\n get element() {\n if (typeof window === 'undefined') {\n return null\n }\n\n if (globalScope[elementKey]) {\n return globalScope[elementKey]\n }\n\n globalScope[elementKey] = document.createElement('div')\n globalScope[elementKey].setAttribute('data-portal', '')\n\n document.body.appendChild(globalScope[elementKey])\n\n return globalScope[elementKey]\n },\n}\n\nglobalScope[key] = globalScope[key] || createContext<PortalContextValue>(defaultContextValue)\n\nexport const PortalContext: React.Context<PortalContextValue> = globalScope[key]\n","import {useContext} from 'react'\nimport {isRecord} from '../../lib/isRecord'\nimport {PortalContext} from './portalContext'\nimport {PortalContextValue} from './types'\n\n/**\n * @public\n */\nexport function usePortal(): PortalContextValue {\n const value = useContext(PortalContext)\n\n if (!value) {\n throw new Error('usePortal(): missing context value')\n }\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (!isRecord(value) || value.version !== 0.0) {\n throw new Error('usePortal(): the context value is not compatible')\n }\n\n return value\n}\n","import {createPortal} from 'react-dom'\nimport {usePortal} from './usePortal'\n\n/**\n * @public\n */\nexport interface PortalProps {\n children: React.ReactNode\n /**\n * @beta This API might change. DO NOT USE IN PRODUCTION.\n */\n __unstable_name?: string\n}\n\n/**\n * @public\n */\nexport function Portal(props: PortalProps): React.ReactPortal | null {\n const {children, __unstable_name: name} = props\n const portal = usePortal()\n const portalElement =\n (name ? portal.elements && portal.elements[name] : portal.element) || portal.elements?.default\n\n if (!portalElement) {\n return null\n }\n\n return createPortal(children, portalElement)\n}\n","import {useRef} from 'react'\n\n/**\n * This is a React hook to make sure that a record identity is the same on every render. Uses strict\n * equality comparison (eg by identity), and only goes one level deep.\n *\n * @internal\n */\ntype Comparable = Record<string | number | symbol, unknown> | undefined | null\n\nexport function useUnique<ValueType extends Comparable = Comparable>(value: ValueType): ValueType {\n const valueRef = useRef<ValueType>(value)\n\n if (!_isEqual(valueRef.current, value)) {\n valueRef.current = value\n }\n\n return valueRef.current\n}\n\nfunction _isEqual(objA: Comparable, objB: Comparable): boolean {\n if (!objA || !objB) {\n return objA === objB\n }\n\n const keysA = Object.keys(objA)\n const keysB = Object.keys(objB)\n\n if (keysA.length !== keysB.length) {\n return false\n }\n\n return keysA.every((key) => objA[key] === objB[key])\n}\n","import {useMemo} from 'react'\nimport {useUnique} from '../../hooks/_internal'\nimport {PortalContext} from './portalContext'\nimport {PortalContextValue} from './types'\n\n/**\n * @public\n */\nexport interface PortalProviderProps {\n /**\n * @deprecated Use `<BoundaryElementProvider element={...} />` instead\n */\n boundaryElement?: HTMLElement | null\n children: React.ReactNode\n element?: HTMLElement | null\n /**\n * @beta\n */\n __unstable_elements?: Record<string, HTMLElement | null | undefined>\n}\n\nconst __BROWSER__ = typeof window !== 'undefined'\n\n/**\n * @public\n */\nexport function PortalProvider(props: PortalProviderProps): React.ReactElement {\n const {boundaryElement, children, element, __unstable_elements: elementsProp} = props\n const elements = useUnique(elementsProp)\n\n const value: PortalContextValue = useMemo(() => {\n return {\n version: 0.0,\n boundaryElement: boundaryElement || null,\n element: element || (__BROWSER__ && document.body) || null,\n elements,\n }\n }, [boundaryElement, element, elements])\n\n return <PortalContext.Provider value={value}>{children}</PortalContext.Provider>\n}\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\n\n/**\n * @public\n */\nexport interface SrOnlyProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n children?: React.ReactNode\n}\n\nconst Root = styled.div`\n display: block;\n width: 0;\n height: 0;\n position: absolute;\n overflow: hidden;\n`\n\n/**\n * @public\n */\nexport const SrOnly = forwardRef(function SrOnly(\n props: SrOnlyProps & Omit<React.HTMLProps<HTMLDivElement>, 'aria-hidden' | 'as'>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {as, children} = props\n\n return (\n <Root aria-hidden as={as} data-ui=\"SrOnly\" ref={ref}>\n {children}\n </Root>\n )\n})\n","/**\n * @internal\n */\nexport function _raf(fn: () => void): () => void {\n const frameId = requestAnimationFrame(fn)\n\n return () => {\n cancelAnimationFrame(frameId)\n }\n}\n\n/**\n * @internal\n */\nexport function _raf2(fn: () => void): () => void {\n let innerDispose: (() => void) | null = null\n\n const outerDispose = _raf(() => {\n innerDispose = _raf(fn)\n })\n\n return () => {\n if (innerDispose) innerDispose()\n\n outerDispose()\n }\n}\n","/**\n * @internal\n */\nexport function _isEnterToClickElement(element: HTMLElement): boolean {\n return isHTMLAnchorElement(element) || isHTMLButtonElement(element)\n}\n\n/**\n * @internal\n */\nexport function isHTMLElement(node: unknown): node is HTMLElement {\n return node instanceof Node && node.nodeType === Node.ELEMENT_NODE\n}\n\n/**\n * @internal\n */\nexport function isHTMLAnchorElement(element: unknown): element is HTMLAnchorElement {\n return isHTMLElement(element) && element.nodeName === 'A'\n}\n\n/**\n * @internal\n */\nexport function isHTMLInputElement(element: unknown): element is HTMLInputElement {\n return isHTMLElement(element) && element.nodeName === 'INPUT'\n}\n\n/**\n * @internal\n */\nexport function isHTMLButtonElement(element: unknown): element is HTMLButtonElement {\n return isHTMLElement(element) && element.nodeName === 'BUTTON'\n}\n\n/**\n * @internal\n */\nexport function isHTMLSelectElement(element: unknown): element is HTMLSelectElement {\n return isHTMLElement(element) && element.nodeName === 'SELECT'\n}\n\n/**\n * @internal\n */\nexport function isHTMLTextAreaElement(element: unknown): element is HTMLTextAreaElement {\n return isHTMLElement(element) && element.nodeName === 'TEXTAREA'\n}\n","import {\n isHTMLElement,\n isHTMLAnchorElement,\n isHTMLInputElement,\n isHTMLButtonElement,\n isHTMLSelectElement,\n isHTMLTextAreaElement,\n} from './element'\n\n// export const globalFocusState = {\n// IgnoreUtilFocusChanges: false,\n// }\n\n/**\n * @internal\n */\nexport function _hasFocus(element: HTMLElement): boolean {\n return Boolean(document.activeElement) && element.contains(document.activeElement)\n}\n\n/**\n * @internal\n */\nexport function isFocusable(element: HTMLElement): boolean {\n if (\n element.tabIndex > 0 ||\n (element.tabIndex === 0 && element.getAttribute('tabIndex') !== null)\n ) {\n return true\n }\n\n if (isHTMLAnchorElement(element)) {\n return Boolean(element.href) && element.rel !== 'ignore'\n }\n\n if (isHTMLInputElement(element)) {\n return element.type !== 'hidden' && element.type !== 'file' && !element.disabled\n }\n\n if (\n isHTMLButtonElement(element) ||\n isHTMLSelectElement(element) ||\n isHTMLTextAreaElement(element)\n ) {\n return !element.disabled\n }\n\n return false\n}\n\n/**\n * @internal\n */\nexport function attemptFocus(element: HTMLElement): boolean {\n if (!isFocusable(element)) {\n return false\n }\n\n // globalFocusState.IgnoreUtilFocusChanges = true\n\n try {\n element.focus()\n } catch (_) {\n // ignore\n }\n\n // globalFocusState.IgnoreUtilFocusChanges = false\n\n return document.activeElement === element\n}\n\n/**\n * @internal\n */\nexport function focusFirstDescendant(element: HTMLElement): boolean {\n for (let i = 0; i < element.childNodes.length; i++) {\n const child = element.childNodes[i]\n\n if (isHTMLElement(child) && (attemptFocus(child) || focusFirstDescendant(child))) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * @internal\n */\nexport function focusLastDescendant(element: HTMLElement): boolean {\n for (let i = element.childNodes.length - 1; i >= 0; i--) {\n const child = element.childNodes[i]\n\n if (isHTMLElement(child) && (attemptFocus(child) || focusLastDescendant(child))) {\n return true\n }\n }\n\n return false\n}\n","/**\n * @internal\n */\nexport function _isScrollable(el: Node): boolean {\n if (!(el instanceof Element)) return false\n\n const style = window.getComputedStyle(el)\n\n return (\n style.overflowX.includes('auto') ||\n style.overflowX.includes('scroll') ||\n style.overflowY.includes('auto') ||\n style.overflowY.includes('scroll')\n )\n}\n","import {forwardRef, useEffect, useMemo, useRef, useState} from 'react'\nimport styled from 'styled-components'\nimport {_isScrollable} from '../../helpers'\nimport {useForwardedRef} from '../../hooks'\nimport {_ResizeObserver} from '../../observers'\nimport {StackProps} from '../../primitives'\nimport {useTheme} from '../../theme'\n\n/**\n * @beta\n */\nexport interface VirtualListChangeOpts {\n fromIndex: number\n gap: number\n itemHeight: number\n scrollHeight: number\n scrollTop: number\n toIndex: number\n}\n\n/**\n * @beta\n */\nexport interface VirtualListProps<Item = any> {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n gap?: number\n getItemKey?: (item: Item, itemIndex: number) => string\n items?: Item[]\n onChange?: (opts: VirtualListChangeOpts) => void\n renderItem?: (item: Item) => React.ReactNode\n}\n\nconst Root = styled.div`\n position: relative;\n`\n\nconst ItemWrapper = styled.div`\n position: absolute;\n left: 0;\n right: 0;\n`\n\n/**\n * @beta\n */\nexport const VirtualList = forwardRef(function VirtualList(\n props: VirtualListProps &\n StackProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'onChange' | 'ref'>,\n ref: React.ForwardedRef<HTMLDivElement>\n): React.ReactElement {\n const {as = 'div', gap = 0, getItemKey, items = [], onChange, renderItem, ...restProps} = props\n const {space} = useTheme().sanity\n const forwardedRef = useForwardedRef(ref)\n const wrapperRef = useRef<HTMLDivElement | null>(null)\n const [scrollTop, setScrollTop] = useState(0)\n const [scrollHeight, setScrollHeight] = useState(0)\n const [itemHeight, setItemHeight] = useState(-1)\n\n useEffect(() => {\n if (!wrapperRef.current) return\n\n const firstElement = wrapperRef.current.firstChild\n\n if (firstElement instanceof HTMLElement) {\n setItemHeight(firstElement.offsetHeight)\n }\n }, [renderItem])\n\n useEffect(() => {\n if (!forwardedRef.current) return\n\n let _scrollEl = forwardedRef.current.parentNode\n\n while (_scrollEl && !_isScrollable(_scrollEl)) {\n _scrollEl = _scrollEl.parentNode\n }\n\n if (_scrollEl) {\n const scrollEl = _scrollEl\n\n if (!(scrollEl instanceof HTMLElement)) return\n\n const handleScroll = () => {\n setScrollTop(scrollEl.scrollTop)\n }\n\n scrollEl.addEventListener('scroll', handleScroll, {passive: true})\n\n const ro = new _ResizeObserver((entries) => {\n setScrollHeight(entries[0].contentRect.height)\n })\n\n ro.observe(scrollEl)\n\n handleScroll()\n\n return () => {\n scrollEl.removeEventListener('scroll', handleScroll)\n\n ro.unobserve(scrollEl)\n ro.disconnect()\n }\n }\n\n const handleScroll = () => {\n setScrollTop(window.scrollY)\n }\n\n const handleResize = () => {\n setScrollHeight(window.innerHeight)\n }\n\n window.addEventListener('scroll', handleScroll, {passive: true})\n window.addEventListener('resize', handleResize)\n\n setScrollHeight(window.innerHeight)\n\n handleScroll()\n\n return () => {\n window.removeEventListener('scroll', handleScroll)\n window.removeEventListener('resize', handleResize)\n }\n }, [forwardedRef])\n\n const len = items.length\n const height = itemHeight ? len * (itemHeight + space[gap]) - space[gap] : 0\n const fromIndex = height ? Math.max(Math.floor((scrollTop / height) * len) - 2, 0) : 0\n const toIndex = height ? Math.ceil(((scrollTop + scrollHeight) / height) * len) + 1 : 0\n\n useEffect(() => {\n if (!onChange) return\n onChange({fromIndex, gap: space[gap], itemHeight, scrollHeight, scrollTop, toIndex})\n }, [fromIndex, gap, itemHeight, onChange, scrollHeight, scrollTop, space, toIndex])\n\n const children = useMemo(() => {\n if (!renderItem || items.length === 0) return null\n\n if (itemHeight === -1) {\n return [<ItemWrapper key={0}>{renderItem(items[0])}</ItemWrapper>]\n }\n\n return items.slice(fromIndex, toIndex).map((item, _itemIndex) => {\n const itemIndex = fromIndex + _itemIndex\n const node = renderItem(item)\n const key = getItemKey ? getItemKey(item, itemIndex) : itemIndex\n\n return (\n <ItemWrapper key={key} style={{top: itemIndex * (itemHeight + space[gap])}}>\n {node}\n </ItemWrapper>\n )\n })\n }, [fromIndex, gap, getItemKey, itemHeight, items, renderItem, space, toIndex])\n\n const wrapperStyle = useMemo(() => ({height}), [height])\n\n return (\n <Root as={as} data-ui=\"VirtualList\" {...restProps} ref={forwardedRef}>\n <div ref={wrapperRef} style={wrapperStyle}>\n {children}\n </div>\n </Root>\n )\n})\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\n\nconst Root = styled.div`\n position: absolute;\n pointer-events: none;\n width: 27px;\n height: 27px;\n fill: none;\n\n :empty + & {\n display: none;\n }\n\n & > svg {\n display: block;\n transform-origin: 13.5px 13.5px;\n }\n\n [data-popper-placement^='top'] > div > & {\n bottom: -27px;\n }\n\n [data-popper-placement^='right'] > div > & {\n left: -27px;\n\n & > svg {\n transform: rotate(90deg);\n }\n }\n\n [data-popper-placement^='left'] > div > & {\n right: -27px;\n\n & > svg {\n transform: rotate(-90deg);\n }\n }\n\n [data-popper-placement^='bottom'] > div > & {\n top: -27px;\n\n & > svg {\n transform: rotate(180deg);\n }\n }\n`\n\nconst BorderPath = styled.path`\n fill: var(--card-shadow-outline-color);\n`\n\nconst ShapePath = styled.path`\n fill: var(--card-bg-color);\n`\n\nexport const PopoverArrow = forwardRef(function PopoverArrow(\n props: Omit<React.HTMLProps<HTMLDivElement>, 'as'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n return (\n <Root data-ui=\"PopoverArrow\" {...props} ref={ref}>\n <svg\n width=\"27\"\n height=\"11\"\n viewBox=\"0 0 27 11\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <BorderPath d=\"M1.18708 1C3.29803 1.0011 5.29585 1.95479 6.62414 3.59561L11.1683 9.20895C12.369 10.6922 14.631 10.6922 15.8317 9.20894L20.3759 3.59561C21.7042 1.95478 23.702 1.0011 25.8129 1H21.9436C21.0533 1.49255 20.2545 2.15618 19.5986 2.96641L15.0545 8.57975C14.254 9.56855 12.746 9.56855 11.9455 8.57975L7.40139 2.96642C6.74548 2.15618 5.94673 1.49255 5.05643 1H1.18708Z\" />\n <ShapePath d=\"M1.18342 0C3.59749 0 5.88246 1.0901 7.40138 2.96642L11.9455 8.57975C12.746 9.56855 14.254 9.56855 15.0545 8.57975L19.5986 2.96641C21.1175 1.0901 23.4025 0 25.8166 0H27H0H1.18342Z\" />\n </svg>\n </Root>\n )\n})\n","import {useMemo} from 'react'\nimport {Modifier} from 'react-popper'\n\nimport {getPopoverModifiers} from './getPopoverModifiers'\nimport {PopoverModifiersProps} from './types'\n\nexport function usePopoverModifiers(props: PopoverModifiersProps): Modifier<any, any>[] {\n const {\n allowedAutoPlacements,\n arrow,\n arrowElement,\n boundaryElement,\n constrainSize,\n distance,\n fallbackPlacements,\n margins,\n matchReferenceWidth,\n open,\n preventOverflow,\n skidding,\n tether,\n tetherOffset,\n } = props\n\n return useMemo(() => {\n return getPopoverModifiers({\n allowedAutoPlacements,\n arrow,\n arrowElement,\n boundaryElement,\n constrainSize,\n distance,\n fallbackPlacements,\n margins,\n matchReferenceWidth,\n open,\n preventOverflow,\n skidding,\n tether,\n tetherOffset,\n })\n }, [\n allowedAutoPlacements,\n arrow,\n arrowElement,\n boundaryElement,\n constrainSize,\n distance,\n fallbackPlacements,\n margins,\n matchReferenceWidth,\n open,\n preventOverflow,\n skidding,\n tether,\n tetherOffset,\n ])\n}\n","import maxSizeModifier from 'popper-max-size-modifier'\nimport {Modifier} from 'react-popper'\nimport {PopoverModifiersProps} from './types'\n\n/*\n\nThe order of popper phases:\n\n- beforeRead\n- read\n- afterRead\n- beforeMain\n- main\n- afterMain\n- beforeWrite\n- write\n- afterWrite\n\n*/\n\nexport function getPopoverModifiers(props: PopoverModifiersProps): Modifier<any, any>[] {\n const {\n allowedAutoPlacements,\n arrow,\n arrowElement,\n boundaryElement,\n constrainSize,\n distance,\n fallbackPlacements,\n margins,\n matchReferenceWidth,\n open,\n preventOverflow,\n skidding,\n tether,\n tetherOffset,\n } = props\n\n // NOTE: For later viewers:\n // Prior to adding this change, the popover would get `maxWidth: 0` the 2nd time it\n // was opened, when used with `constrainSize`. I was looking for a way to \"reset\"\n // the size of the popover as measured by Popper.js, and this seems to be a workaround.\n if (!open) {\n return []\n }\n\n const detectOverflowOptions = {\n altAxis: !constrainSize,\n boundary: boundaryElement || undefined,\n padding: 8,\n tether,\n tetherOffset,\n }\n\n return [\n constrainSize && {\n ...maxSizeModifier,\n options: detectOverflowOptions,\n },\n constrainSize && {\n name: 'applyMaxSize',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['maxSize'],\n fn({state}: any) {\n const {width, height} = state.modifiersData.maxSize\n\n state.styles.popper = {\n ...state.styles.popper,\n maxWidth: `${width}px`,\n maxHeight: `${height}px`,\n }\n },\n },\n arrow && {\n name: 'arrow',\n options: {\n element: arrowElement,\n padding: 4,\n },\n },\n (constrainSize || preventOverflow) && {\n name: 'preventOverflow',\n options: detectOverflowOptions,\n },\n {\n name: 'offset',\n options: {\n offset: [skidding, distance],\n },\n },\n margins && {\n name: 'margins',\n enabled: true,\n phase: 'beforeRead',\n fn: ({state}: any) => {\n const {rects} = state\n\n if (rects.reference) {\n rects.reference.x += margins[3]\n rects.reference.y += margins[1]\n rects.reference.width -= margins[1] + margins[3]\n rects.reference.height -= margins[0] + margins[2]\n }\n },\n },\n {\n name: 'flip',\n options: {\n allowedAutoPlacements,\n boundary: boundaryElement || undefined,\n fallbackPlacements,\n padding: 8,\n },\n },\n matchReferenceWidth && {\n name: 'matchWidth',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn({state}: any) {\n const {width} = state.rects.reference\n\n state.styles.popper.width = `${width}px`\n },\n effect: ({state}: any) => {\n const refElement = state.elements.reference\n\n if (refElement instanceof HTMLElement) {\n state.elements.popper.style.width = `${\n refElement.offsetWidth - (margins ? margins[1] + margins[3] : 0)\n }px`\n }\n },\n },\n ].filter(Boolean) as Modifier<any, any>[]\n}\n","import {cloneElement, forwardRef, useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {usePopper} from 'react-popper'\nimport styled, {css} from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {useArrayProp, useForwardedRef} from '../../hooks'\nimport {ThemeColorSchemeKey, useTheme} from '../../theme'\nimport {CardTone, Placement, PopoverMargins} from '../../types'\nimport {Layer, LayerProps, Portal, useBoundaryElement, usePortal} from '../../utils'\nimport {Card} from '../card'\nimport {ResponsiveWidthStyleProps} from '../container'\nimport {responsiveContainerWidthStyle} from '../container/styles'\nimport {ResponsiveRadiusProps, ResponsiveShadowProps, ResponsiveWidthProps} from '../types'\nimport {PopoverArrow} from './arrow'\nimport {usePopoverModifiers} from './modifiers'\n\n/**\n * @public\n */\nexport interface PopoverProps\n extends Omit<LayerProps, 'as'>,\n ResponsiveRadiusProps,\n ResponsiveShadowProps,\n ResponsiveWidthProps {\n /**\n * @beta\n */\n __unstable_margins?: PopoverMargins\n allowedAutoPlacements?: Placement[]\n arrow?: boolean\n boundaryElement?: HTMLElement | null\n children?: React.ReactElement\n constrainSize?: boolean\n content?: React.ReactNode\n disabled?: boolean\n fallbackPlacements?: Placement[]\n open?: boolean\n padding?: number | number[]\n placement?: Placement\n portal?: boolean | string\n preventOverflow?: boolean\n referenceElement?: HTMLElement | null\n matchReferenceWidth?: boolean\n scheme?: ThemeColorSchemeKey\n tether?: boolean\n tetherOffset?: number | ((...args: any[]) => number)\n tone?: CardTone\n}\n\nconst Root = styled(Layer)<{$preventOverflow?: boolean}>(\n ({$preventOverflow}) => css`\n pointer-events: none;\n display: flex;\n flex-direction: column;\n max-width: calc(100% - 16px);\n\n & > * {\n min-height: 0;\n }\n\n /* Hide the popover when the reference element is out of bounds */\n ${$preventOverflow &&\n css`\n &[data-popper-reference-hidden='true'] {\n display: none;\n }\n `}\n `\n)\n\nconst PopoverCard = styled(Card)<\n ResponsiveWidthStyleProps & {\n $constrainSize?: boolean\n $preventOverflow?: boolean\n $width: (number | 'auto')[]\n }\n>(\n ({$constrainSize}) => css`\n flex: 1;\n max-height: ${$constrainSize && '100%'};\n pointer-events: all;\n\n && {\n display: flex;\n }\n\n flex-direction: column;\n\n & > * {\n min-height: 0;\n }\n\n ${responsiveContainerWidthStyle}\n `\n)\n\n/**\n * @public\n */\nexport const Popover = forwardRef(function Popover(\n props: PopoverProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content' | 'width'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const boundaryElementContext = useBoundaryElement()\n const theme = useTheme()\n const {\n __unstable_margins: margins,\n allowedAutoPlacements,\n arrow = true,\n boundaryElement: boundaryElementProp = boundaryElementContext.element,\n children: child,\n content,\n constrainSize,\n disabled,\n fallbackPlacements,\n open = false,\n padding,\n placement = 'bottom',\n portal: portalProp = false,\n preventOverflow,\n radius = 3,\n referenceElement: referenceElementProp,\n matchReferenceWidth,\n shadow = 3,\n scheme,\n style = EMPTY_RECORD,\n tether,\n tetherOffset,\n tone = 'inherit',\n width: widthProp = 0,\n zOffset = theme.sanity.layer?.popover.zOffset,\n ...restProps\n } = props\n const forwardedRef = useForwardedRef(ref)\n const portal = usePortal()\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null)\n const [popperElement, setPopperElement] = useState<HTMLElement | null>(null)\n const [arrowElement, setArrowElement] = useState<HTMLElement | null>(null)\n const popperReferenceElement = referenceElementProp || referenceElement\n const width = useArrayProp(matchReferenceWidth ? 'auto' : widthProp)\n\n const modifiers = usePopoverModifiers({\n allowedAutoPlacements,\n arrow,\n arrowElement,\n boundaryElement: boundaryElementProp || portal.boundaryElement,\n constrainSize,\n distance: arrow ? 4 : 0,\n fallbackPlacements,\n margins,\n matchReferenceWidth,\n open,\n preventOverflow,\n skidding: 0,\n tether,\n tetherOffset,\n })\n\n const popper = usePopper(popperReferenceElement, popperElement, {\n placement,\n modifiers,\n })\n\n const {attributes, forceUpdate, styles} = popper\n\n const setRef = useCallback(\n (el: HTMLElement | null) => {\n const childRef = (child as any).ref\n\n setReferenceElement(el)\n\n if (typeof childRef === 'function') {\n childRef(el)\n } else if (childRef) {\n childRef.current = el\n }\n },\n [child]\n )\n\n const setRootRef = useCallback(\n (el: HTMLDivElement | null) => {\n setPopperElement(el)\n forwardedRef.current = el\n },\n [forwardedRef]\n )\n\n const popoverStyle = useMemo(() => ({...style, ...styles.popper}), [style, styles])\n\n const updateTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n useEffect(() => {\n if (updateTimeoutRef.current) {\n clearTimeout(updateTimeoutRef.current)\n updateTimeoutRef.current = null\n }\n\n updateTimeoutRef.current = setTimeout(() => {\n if (forceUpdate) {\n try {\n forceUpdate()\n } catch (_) {\n // ignore caught error\n }\n }\n }, 0)\n }, [content, forceUpdate, open, popperReferenceElement])\n\n if (disabled) {\n return child || <></>\n }\n\n const node = (\n <Root\n data-ui=\"Popover\"\n {...restProps}\n $preventOverflow={preventOverflow}\n ref={setRootRef}\n style={popoverStyle}\n zOffset={zOffset}\n {...attributes.popper}\n >\n <PopoverCard\n $constrainSize={constrainSize}\n $width={width}\n data-ui=\"PopoverCard\"\n padding={padding}\n radius={radius}\n scheme={scheme}\n shadow={shadow}\n tone={tone}\n >\n {arrow && <PopoverArrow ref={setArrowElement} style={styles.arrow} />}\n {content}\n </PopoverCard>\n </Root>\n )\n\n return (\n <>\n {child && !referenceElementProp ? cloneElement(child, {ref: setRef}) : child || <></>}\n\n {open && (\n <>\n {portalProp && (\n <Portal __unstable_name={typeof portalProp === 'string' ? portalProp : undefined}>\n {node}\n </Portal>\n )}\n\n {!portalProp && node}\n </>\n )}\n </>\n )\n})\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useForwardedRef, useCustomValidity} from '../../hooks'\nimport {radioBaseStyle, inputElementStyle} from './styles'\n\n/**\n * @public\n */\nexport interface RadioProps {\n customValidity?: string\n}\n\nconst Root = styled.div(radioBaseStyle)\nconst Input = styled.input(inputElementStyle)\n\n/**\n * @public\n */\nexport const Radio = forwardRef(function Radio(\n props: Omit<React.HTMLProps<HTMLInputElement>, 'as' | 'type'> & RadioProps,\n forwardedRef: React.ForwardedRef<HTMLInputElement>\n) {\n const {className, disabled, style, customValidity, readOnly, ...restProps} = props\n const ref = useForwardedRef(forwardedRef)\n\n useCustomValidity(ref, customValidity)\n\n return (\n <Root className={className} data-ui=\"Radio\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n {...restProps}\n disabled={disabled || readOnly}\n readOnly={readOnly}\n ref={ref}\n type=\"radio\"\n />\n <span />\n </Root>\n )\n})\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {rem, ThemeProps} from '../../styles'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/internal'\n\nexport function radioBaseStyle(): FlattenSimpleInterpolation {\n return css`\n position: relative;\n\n &:not([hidden]) {\n display: inline-block;\n }\n\n &[data-read-only] {\n outline: 1px solid red;\n }\n `\n}\n\nexport function inputElementStyle(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const {focusRing, input} = theme.sanity\n const color = theme.sanity.color.input\n const dist = (input.radio.size - input.radio.markSize) / 2\n\n return css`\n appearance: none;\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0;\n height: 100%;\n width: 100%;\n outline: none;\n z-index: 1;\n padding: 0;\n margin: 0;\n border-radius: ${rem(input.radio.size / 2)};\n border: none;\n\n /* enabled */\n & + span {\n display: block;\n position: relative;\n height: ${rem(input.radio.size)};\n width: ${rem(input.radio.size)};\n border-radius: ${rem(input.radio.size / 2)};\n background: ${color.default.enabled.bg};\n box-shadow: ${focusRingBorderStyle({\n color: color.default.enabled.border,\n width: input.border.width,\n })};\n\n &::after {\n content: '';\n position: absolute;\n top: ${rem(dist)};\n left: ${rem(dist)};\n height: ${rem(input.radio.markSize)};\n width: ${rem(input.radio.markSize)};\n border-radius: ${rem(input.radio.markSize / 2)};\n background: ${color.default.enabled.fg};\n opacity: 0;\n }\n }\n\n /* focused */\n &:not(:disabled):focus + span {\n box-shadow: ${focusRingStyle({\n border: {width: input.border.width, color: color.default.enabled.border},\n focusRing,\n })};\n }\n\n &:not(:disabled):focus:not(:focus-visible) + span {\n box-shadow: ${focusRingBorderStyle({\n color: color.default.enabled.border,\n width: input.border.width,\n })};\n }\n\n &:checked + span::after {\n opacity: 1;\n }\n\n /* read only */\n &[data-read-only] + span {\n box-shadow: 0 0 0 1px ${color.default.readOnly.border};\n background: ${color.default.readOnly.bg};\n\n &::after {\n background: ${color.default.readOnly.fg};\n }\n }\n\n /* disabled */\n &:not([data-read-only]):disabled + span {\n box-shadow: 0 0 0 1px ${color.default.disabled.border};\n background: ${color.default.disabled.bg};\n\n &::after {\n background: ${color.default.disabled.fg};\n }\n }\n `\n}\n","import {css, CSSObject, FlattenSimpleInterpolation} from 'styled-components'\nimport {rem, _responsive, ThemeProps} from '../../styles'\nimport {\n focusRingBorderStyle,\n focusRingStyle,\n responsiveInputPaddingIconRightStyle,\n responsiveRadiusStyle,\n ResponsiveRadiusStyleProps,\n} from '../../styles/internal'\nimport {ThemeFontSize} from '../../theme'\n\nfunction rootStyle(): FlattenSimpleInterpolation {\n return css`\n position: relative;\n width: stretch;\n\n &:not([hidden]) {\n display: inline-block;\n }\n `\n}\n\nfunction inputBaseStyle(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const font = theme.sanity.fonts.text\n\n return css`\n -webkit-font-smoothing: antialiased;\n appearance: none;\n border: 0;\n font-family: ${font.family};\n color: inherit;\n width: 100%;\n outline: none;\n margin: 0;\n\n &:disabled {\n opacity: 1;\n }\n `\n}\n\nfunction inputColorStyle(props: ThemeProps) {\n const {theme} = props\n const {focusRing, input} = theme.sanity\n const color = theme.sanity.color.input\n\n return css`\n /* enabled */\n background-color: ${color.default.enabled.bg};\n color: ${color.default.enabled.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.default.enabled.border,\n width: input.border.width,\n })};\n\n /* hovered */\n @media (hover: hover) {\n &:not(:disabled):hover {\n background-color: ${color.default.hovered.bg};\n color: ${color.default.hovered.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.default.hovered.border,\n width: input.border.width,\n })};\n }\n }\n\n /* focused */\n &:not(:disabled):focus {\n box-shadow: ${focusRingStyle({\n border: {width: input.border.width, color: color.default.enabled.border},\n focusRing,\n })};\n }\n\n /* read-only */\n &[data-read-only] {\n background-color: ${color.default.readOnly.bg};\n color: ${color.default.readOnly.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.default.readOnly.border,\n width: input.border.width,\n })};\n }\n\n /* disabled */\n &:not([data-read-only]):disabled {\n background-color: ${color.default.disabled.bg};\n color: ${color.default.disabled.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.default.disabled.border,\n width: input.border.width,\n })};\n }\n `\n}\n\nfunction textSize(size: ThemeFontSize) {\n return {fontSize: rem(size.fontSize), lineHeight: rem(size.lineHeight)}\n}\n\nfunction inputTextSizeStyle(props: {$fontSize: number[]} & ThemeProps) {\n const {theme, $fontSize} = props\n const {sizes} = theme.sanity.fonts.text\n\n return _responsive(theme.sanity.media, $fontSize, (sizeIndex) =>\n textSize(sizes[sizeIndex] || sizes[2])\n )\n}\n\nfunction inputStyle(): Array<\n | ((\n props: ResponsiveRadiusStyleProps & {\n $fontSize: number[]\n $padding: number[]\n $space: number[]\n } & ThemeProps\n ) => CSSObject[])\n | ((props: ThemeProps) => FlattenSimpleInterpolation)\n> {\n return [\n responsiveRadiusStyle,\n inputBaseStyle,\n inputColorStyle,\n inputTextSizeStyle,\n responsiveInputPaddingIconRightStyle,\n ]\n}\n\nfunction iconBoxStyle(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const color = theme.sanity.color.input\n\n return css`\n pointer-events: none;\n position: absolute;\n top: 0;\n right: 0;\n\n /* enabled */\n --card-fg-color: ${color.default.enabled.fg};\n\n /* hover */\n @media (hover: hover) {\n select:not(disabled):not(:read-only):hover + && {\n --card-fg-color: ${color.default.hovered.fg};\n }\n }\n\n /* disabled */\n select:disabled + && {\n --card-fg-color: ${color.default.disabled.fg};\n }\n\n /* read-only */\n select[data-read-only] + && {\n --card-fg-color: ${color.default.readOnly.fg};\n }\n `\n}\n\nexport const selectStyle = {\n root: rootStyle,\n input: inputStyle,\n iconBox: iconBoxStyle,\n}\n","import {SelectIcon} from '@sanity/icons'\nimport {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useForwardedRef, useCustomValidity, useArrayProp} from '../../hooks'\nimport {Box} from '../box'\nimport {Text} from '../text'\nimport {selectStyle} from './styles'\n\n/**\n * @public\n */\nexport interface SelectProps {\n fontSize?: number | number[]\n padding?: number | number[]\n radius?: number | number[]\n space?: number | number[]\n customValidity?: string\n}\n\nconst Root = styled.div(selectStyle.root)\n\nconst Input = styled.select<{\n $fontSize: number[]\n $padding: number[]\n $radius: number[]\n $space: number[]\n}>(selectStyle.input)\n\nconst IconBox = styled(Box)(selectStyle.iconBox)\n\n/**\n * @public\n */\nexport const Select = forwardRef(function Select(\n props: SelectProps & Omit<React.HTMLProps<HTMLSelectElement>, 'as'>,\n forwardedRef: React.ForwardedRef<HTMLSelectElement>\n) {\n const {\n children,\n customValidity,\n disabled,\n fontSize = 2,\n padding = 3,\n radius = 1,\n readOnly,\n space = 3,\n ...restProps\n } = props\n\n const ref = useForwardedRef(forwardedRef)\n\n useCustomValidity(ref, customValidity)\n\n return (\n <Root data-ui=\"Select\">\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-ui=\"Select\"\n {...restProps}\n $fontSize={useArrayProp(fontSize)}\n $padding={useArrayProp(padding)}\n $radius={useArrayProp(radius)}\n $space={useArrayProp(space)}\n disabled={disabled || readOnly}\n ref={ref}\n >\n {children}\n </Input>\n\n <IconBox padding={padding}>\n <Text size={fontSize}>\n <SelectIcon />\n </Text>\n </IconBox>\n </Root>\n )\n})\n","import {CSSObject} from 'styled-components'\nimport {rem, _responsive, ThemeProps} from '../../styles'\n\nexport interface ResponsiveStackSpaceStyleProps {\n $space: number[]\n}\n\nconst BASE_STYLE: CSSObject = {\n '&&:not([hidden])': {\n display: 'grid',\n },\n '&[data-as=\"ul\"],&[data-as=\"ol\"]': {\n listStyle: 'none',\n },\n gridTemplateColumns: 'minmax(0, 1fr)',\n gridAutoRows: 'min-content',\n}\n\nexport function stackBaseStyle(): CSSObject {\n return BASE_STYLE\n}\n\nexport function responsiveStackSpaceStyle(\n props: ResponsiveStackSpaceStyleProps & ThemeProps\n): CSSObject[] {\n const {theme} = props\n const {media, space} = theme.sanity\n\n return _responsive(media, props.$space, (spaceIndex) => ({\n gridGap: rem(space[spaceIndex]),\n }))\n}\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {Box, BoxProps} from '../box'\nimport {stackBaseStyle, responsiveStackSpaceStyle, ResponsiveStackSpaceStyleProps} from './styles'\n\n/**\n * @public\n */\nexport interface StackProps extends BoxProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n space?: number | number[]\n}\n\nconst Root = styled(Box)<ResponsiveStackSpaceStyleProps>(stackBaseStyle, responsiveStackSpaceStyle)\n\n/**\n * @public\n */\nexport const Stack = forwardRef(function Stack(\n props: StackProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'ref'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {as, space, ...restProps} = props\n\n return (\n <Root\n data-as={typeof as === 'string' ? as : undefined}\n data-ui=\"Stack\"\n {...restProps}\n $space={useArrayProp(space)}\n forwardedAs={as}\n ref={ref}\n />\n )\n})\n","import {forwardRef, useEffect} from 'react'\nimport styled from 'styled-components'\nimport {useForwardedRef} from '../../hooks'\nimport {\n switchBaseStyles,\n switchRepresentationStyles,\n switchThumbStyles,\n switchTrackStyles,\n switchInputStyles,\n} from './styles'\n\n/**\n * @public\n */\nexport interface SwitchProps {\n indeterminate?: boolean\n}\n\nconst Root = styled.span(switchBaseStyles)\nconst Input = styled.input(switchInputStyles)\nconst Representation = styled.span(switchRepresentationStyles)\nconst Track = styled.span(switchTrackStyles)\nconst Thumb = styled.span<{$checked?: boolean; $indeterminate?: boolean}>(switchThumbStyles)\n\n/**\n * @public\n */\nexport const Switch = forwardRef(function Switch(\n props: Omit<React.HTMLProps<HTMLInputElement>, 'as' | 'type'> & SwitchProps,\n forwardedRef: React.ForwardedRef<HTMLInputElement>\n) {\n const {checked, className, disabled, indeterminate, readOnly, style, ...restProps} = props\n const ref = useForwardedRef(forwardedRef)\n\n useEffect(() => {\n if (ref.current) {\n // Set the indeterminate state\n ref.current.indeterminate = indeterminate || false\n }\n }, [indeterminate, ref])\n\n return (\n <Root className={className} data-ui=\"Switch\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n {...restProps}\n checked={indeterminate !== true && checked}\n disabled={disabled || readOnly}\n type=\"checkbox\"\n ref={ref}\n />\n <Representation aria-hidden data-name=\"representation\">\n <Track />\n <Thumb $checked={checked} $indeterminate={indeterminate} />\n </Representation>\n </Root>\n )\n})\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {rem, ThemeProps} from '../../styles'\nimport {focusRingStyle} from '../../styles/internal'\n\n/* Root */\nexport function switchBaseStyles(): FlattenSimpleInterpolation {\n return css`\n position: relative;\n &:not([hidden]) {\n display: inline-block;\n }\n `\n}\n\n/* Input */\nexport function switchInputStyles(): FlattenSimpleInterpolation {\n // Visually hide the input element while keeping it interactive\n return css`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n opacity: 0;\n height: 100%;\n width: 100%;\n outline: none;\n padding: 0;\n margin: 0;\n\n /* Place the input element above the representation element */\n z-index: 1;\n `\n}\n\n/* Representation */\nexport function switchRepresentationStyles(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const {focusRing, input} = theme.sanity\n const color = theme.sanity.color.button.default\n\n return css`\n --switch-bg-color: ${color.default.enabled.bg};\n --switch-fg-color: ${color.default.enabled.fg};\n --switch-box-shadow: none;\n\n &:not([hidden]) {\n display: block;\n }\n position: relative;\n width: ${rem(input.switch.width)};\n height: ${rem(input.switch.height)};\n border-radius: ${rem(input.switch.height / 2)};\n\n /* Make sure it’s not possible to interact with the wrapper element */\n pointer-events: none;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1;\n box-shadow: var(--switch-box-shadow);\n border-radius: inherit;\n }\n\n /* Focus styles */\n input:focus + && {\n --switch-box-shadow: ${focusRingStyle({focusRing})};\n }\n\n input:focus:not(:focus-visible) + && {\n --switch-box-shadow: none;\n }\n\n input:checked + && {\n --switch-bg-color: ${color.positive.enabled.bg};\n --switch-fg-color: ${color.positive.enabled.fg};\n }\n\n @media (hover: hover) {\n input:not(:disabled):hover + && {\n --switch-bg-color: ${color.default.hovered.bg};\n --switch-fg-color: ${color.default.hovered.fg};\n }\n\n input:not(:disabled):checked:hover + && {\n --switch-bg-color: ${color.positive.hovered.bg};\n --switch-fg-color: ${color.positive.hovered.fg};\n }\n }\n\n input:not([data-read-only]):disabled + && {\n --switch-bg-color: ${color.default.disabled.bg};\n --switch-fg-color: ${color.default.disabled.fg};\n }\n `\n}\n\n/* Track */\nexport function switchTrackStyles(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const {input} = theme.sanity\n\n return css`\n &:not([hidden]) {\n display: block;\n }\n background-color: var(--switch-bg-color);\n position: absolute;\n left: 0;\n top: 0;\n width: ${rem(input.switch.width)};\n height: ${rem(input.switch.height)};\n border-radius: ${rem(input.switch.height / 2)};\n `\n}\n\n/* Thumb */\nexport function switchThumbStyles(\n props: {$checked?: boolean; $indeterminate?: boolean} & ThemeProps\n): FlattenSimpleInterpolation {\n const {$indeterminate, theme} = props\n const {input} = theme.sanity\n const trackWidth = input.switch.width\n const trackHeight = input.switch.height\n const trackPadding = input.switch.padding\n const size = trackHeight - input.switch.padding * 2\n const checkedOffset = trackWidth - trackPadding * 2 - size\n const indeterminateOffset = trackWidth / 2 - size / 2 - trackPadding\n const checked = $indeterminate !== true && props.$checked === true\n\n return css`\n &:not([hidden]) {\n display: block;\n }\n position: absolute;\n left: ${rem(trackPadding)};\n top: ${rem(trackPadding)};\n height: ${rem(size)};\n width: ${rem(size)};\n border-radius: ${rem(size / 2)};\n transition-property: transform;\n transition-duration: ${input.switch.transitionDurationMs}ms;\n transition-timing-function: ${input.switch.transitionTimingFunction};\n background: var(--switch-fg-color);\n transform: translate3d(0, 0, 0);\n\n ${checked &&\n css`\n transform: translate3d(${checkedOffset}px, 0, 0);\n `}\n\n ${$indeterminate &&\n css`\n transform: translate3d(${indeterminateOffset}px, 0, 0);\n `}\n `\n}\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useForwardedRef, useCustomValidity, useArrayProp} from '../../hooks'\nimport {\n responsiveInputPaddingStyle,\n responsiveRadiusStyle,\n ResponsiveRadiusStyleProps,\n TextInputResponsivePaddingStyleProps,\n TextInputInputStyleProps,\n TextInputRepresentationStyleProps,\n textInputRootStyle,\n textInputBaseStyle,\n textInputFontSizeStyle,\n textInputRepresentationStyle,\n} from '../../styles/internal'\nimport {ThemeFontWeightKey, useRootTheme} from '../../theme'\nimport {ResponsiveRadiusProps} from '../types'\n\n/**\n * @public\n */\nexport interface TextAreaProps extends ResponsiveRadiusProps {\n border?: boolean\n customValidity?: string\n fontSize?: number | number[]\n padding?: number | number[]\n weight?: ThemeFontWeightKey\n}\n\nconst Root = styled.span(textInputRootStyle)\n\nconst InputRoot = styled.span`\n flex: 1;\n min-width: 0;\n display: block;\n position: relative;\n`\n\nconst Input = styled.textarea<TextInputResponsivePaddingStyleProps & TextInputInputStyleProps>(\n responsiveInputPaddingStyle,\n textInputBaseStyle,\n textInputFontSizeStyle\n)\n\nconst Presentation = styled.div<ResponsiveRadiusStyleProps & TextInputRepresentationStyleProps>(\n responsiveRadiusStyle,\n textInputRepresentationStyle\n)\n\n/**\n * @public\n */\nexport const TextArea = forwardRef(function TextArea(\n props: TextAreaProps & Omit<React.HTMLProps<HTMLTextAreaElement>, 'as'>,\n forwardedRef: React.ForwardedRef<HTMLTextAreaElement>\n) {\n const {\n border = true,\n customValidity,\n disabled = false,\n fontSize = 2,\n padding = 3,\n radius = 1,\n weight,\n ...restProps\n } = props\n\n const ref = useForwardedRef(forwardedRef)\n\n const rootTheme = useRootTheme()\n\n useCustomValidity(ref, customValidity)\n\n return (\n <Root data-ui=\"TextArea\">\n <InputRoot>\n <Input\n data-as=\"textarea\"\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n {...restProps}\n $fontSize={useArrayProp(fontSize)}\n $padding={useArrayProp(padding)}\n $scheme={rootTheme.scheme}\n $space={useArrayProp(0)}\n $tone={rootTheme.tone}\n $weight={weight}\n disabled={disabled}\n ref={ref}\n />\n <Presentation\n $border={border}\n $radius={useArrayProp(radius)}\n $scheme={rootTheme.scheme}\n $tone={rootTheme.tone}\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n />\n </InputRoot>\n </Root>\n )\n})\n","import {CloseIcon} from '@sanity/icons'\nimport {createElement, forwardRef, isValidElement, useCallback, useMemo} from 'react'\nimport {isValidElementType} from 'react-is'\nimport styled from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {useArrayProp, useForwardedRef, useCustomValidity} from '../../hooks'\nimport {\n responsiveRadiusStyle,\n ResponsiveRadiusStyleProps,\n responsiveInputPaddingStyle,\n TextInputInputStyleProps,\n TextInputRepresentationStyleProps,\n TextInputResponsivePaddingStyleProps,\n textInputBaseStyle,\n textInputFontSizeStyle,\n textInputRepresentationStyle,\n textInputRootStyle,\n} from '../../styles/internal'\nimport {ThemeFontWeightKey, useRootTheme} from '../../theme'\nimport {Box} from '../box'\nimport {Button, ButtonProps} from '../button'\nimport {Card} from '../card'\nimport {Text} from '../text'\n\n/**\n * @public\n */\nexport type TextInputClearButtonProps = Omit<ButtonProps, 'as'> &\n Omit<React.HTMLProps<HTMLButtonElement>, 'as' | 'onClick' | 'onMouseDown' | 'ref'>\n\n/**\n * @public\n */\nexport type TextInputType =\n | 'date'\n | 'datetime-local'\n | 'email'\n | 'url'\n | 'month'\n | 'number'\n | 'password'\n | 'tel'\n | 'time'\n | 'text'\n | 'week'\n\n/**\n * @public\n */\nexport interface TextInputProps {\n border?: boolean\n /**\n * @beta\n */\n clearButton?: boolean | TextInputClearButtonProps\n customValidity?: string\n fontSize?: number | number[]\n icon?: React.ElementType | React.ReactNode\n iconRight?: React.ElementType | React.ReactNode\n /**\n * @beta\n */\n onClear?: () => void\n padding?: number | number[]\n prefix?: React.ReactNode\n radius?: number | number[]\n space?: number | number[]\n suffix?: React.ReactNode\n type?: TextInputType\n weight?: ThemeFontWeightKey\n}\n\nconst CLEAR_BUTTON_BOX_STYLE: React.CSSProperties = {zIndex: 2}\n\nconst Root = styled(Card).attrs({forwardedAs: 'span'})(textInputRootStyle)\n\nconst InputRoot = styled.span`\n flex: 1;\n min-width: 0;\n display: block;\n position: relative;\n`\n\nconst Prefix = styled(Card).attrs({forwardedAs: 'span'})`\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n\n & > span {\n display: block;\n margin: -1px;\n }\n`\n\nconst Suffix = styled(Card).attrs({forwardedAs: 'span'})`\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n\n & > span {\n display: block;\n margin: -1px;\n }\n`\n\nconst Input = styled.input<TextInputResponsivePaddingStyleProps & TextInputInputStyleProps>(\n responsiveInputPaddingStyle,\n textInputBaseStyle,\n textInputFontSizeStyle\n)\n\nconst Presentation = styled.span<ResponsiveRadiusStyleProps & TextInputRepresentationStyleProps>(\n responsiveRadiusStyle,\n textInputRepresentationStyle\n)\n\nconst LeftBox = styled(Box)`\n position: absolute;\n top: 0;\n left: 0;\n`\n\nconst RightBox = styled(Box)`\n position: absolute;\n top: 0;\n right: 0;\n`\n\nconst RightCard = styled(Card)`\n background-color: transparent;\n position: absolute;\n top: 0;\n right: 0;\n`\n\n/**\n * @public\n */\nexport const TextInput = forwardRef(function TextInput(\n props: TextInputProps & Omit<React.HTMLProps<HTMLInputElement>, 'as' | 'prefix' | 'type'>,\n forwardedRef: React.Ref<HTMLInputElement>\n) {\n const {\n border = true,\n clearButton,\n disabled = false,\n fontSize: fontSizeProp = 2,\n icon,\n iconRight,\n onClear,\n padding: paddingProp = 3,\n prefix,\n radius: radiusProp = 1,\n readOnly,\n space: spaceProp = 3,\n suffix,\n customValidity,\n type = 'text',\n weight,\n ...restProps\n } = props\n\n const ref = useForwardedRef(forwardedRef)\n\n const rootTheme = useRootTheme()\n\n const fontSize = useArrayProp(fontSizeProp)\n const padding = useArrayProp(paddingProp)\n const radius = useArrayProp(radiusProp)\n const space = useArrayProp(spaceProp)\n\n // Transient properties\n const $hasClearButton = Boolean(clearButton)\n const $hasIcon = Boolean(icon)\n const $hasIconRight = Boolean(iconRight)\n const $hasSuffix = Boolean(suffix)\n const $hasPrefix = Boolean(prefix)\n\n useCustomValidity(ref, customValidity)\n\n // Prevent the clear button from taking the focus away from the input\n const handleClearMouseDown = useCallback((event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault()\n event.stopPropagation()\n }, [])\n\n const handleClearClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (onClear) onClear()\n\n // Focus the input, in case focus has been lost when clicking the clear button\n ref.current?.focus()\n },\n [onClear, ref]\n )\n\n // Render prefix (memoized)\n const prefixNode = useMemo(\n () =>\n prefix && (\n <Prefix borderTop borderLeft borderBottom radius={radius} sizing=\"border\" tone=\"inherit\">\n <span>{prefix}</span>\n </Prefix>\n ),\n [prefix, radius]\n )\n\n // Render presentation (memoized)\n const presentationNode = useMemo(\n () => (\n <Presentation\n $border={border}\n $hasPrefix={$hasPrefix}\n $hasSuffix={$hasSuffix}\n $radius={radius}\n $scheme={rootTheme.scheme}\n $tone={rootTheme.tone}\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n >\n {icon && (\n <LeftBox padding={padding}>\n <Text size={fontSize}>\n {isValidElement(icon) && icon}\n {isValidElementType(icon) && createElement(icon)}\n </Text>\n </LeftBox>\n )}\n\n {!$hasClearButton && iconRight && (\n <RightBox padding={padding}>\n <Text size={fontSize}>\n {isValidElement(iconRight) && iconRight}\n {isValidElementType(iconRight) && createElement(iconRight)}\n </Text>\n </RightBox>\n )}\n </Presentation>\n ),\n [\n border,\n fontSize,\n icon,\n iconRight,\n padding,\n radius,\n rootTheme,\n $hasClearButton,\n $hasPrefix,\n $hasSuffix,\n ]\n )\n\n // Render clear button (memoized)\n const clearButtonBoxPadding = useMemo(\n () =>\n padding.map((v) => {\n if (v === 0) return 0\n if (v === 1) return 1\n if (v === 2) return 1\n\n return v - 2\n }),\n [padding]\n )\n const clearButtonPadding = useMemo(\n () =>\n padding.map((v) => {\n if (v === 0) return 0\n if (v === 1) return 0\n if (v === 2) return 1\n\n return v - 1\n }),\n [padding]\n )\n const clearButtonProps: TextInputClearButtonProps = useMemo(\n () => (typeof clearButton === 'object' ? clearButton : EMPTY_RECORD),\n [clearButton]\n )\n const clearButtonNode = useMemo(\n () =>\n !disabled &&\n !readOnly &&\n clearButton && (\n <RightCard\n forwardedAs=\"span\"\n padding={clearButtonBoxPadding}\n style={CLEAR_BUTTON_BOX_STYLE}\n tone={customValidity ? 'critical' : 'inherit'}\n >\n <Button\n data-qa=\"clear-button\"\n fontSize={fontSize}\n icon={CloseIcon}\n mode=\"bleed\"\n padding={clearButtonPadding}\n radius={radius}\n {...clearButtonProps}\n onClick={handleClearClick}\n onMouseDown={handleClearMouseDown}\n />\n </RightCard>\n ),\n [\n clearButton,\n clearButtonBoxPadding,\n clearButtonPadding,\n clearButtonProps,\n customValidity,\n disabled,\n fontSize,\n handleClearClick,\n handleClearMouseDown,\n radius,\n readOnly,\n ]\n )\n\n // Render suffix (memoized)\n const suffixNode = useMemo(\n () =>\n suffix && (\n <Suffix borderTop borderRight borderBottom radius={radius} sizing=\"border\" tone=\"inherit\">\n <span>{suffix}</span>\n </Suffix>\n ),\n [radius, suffix]\n )\n\n return (\n <Root data-ui=\"TextInput\" tone={rootTheme.tone}>\n {prefixNode}\n\n <InputRoot>\n <Input\n data-as=\"input\"\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n {...restProps}\n $fontSize={fontSize}\n $iconLeft={$hasIcon}\n $iconRight={$hasIconRight || $hasClearButton}\n $padding={padding}\n $scheme={rootTheme.scheme}\n $space={space}\n $tone={rootTheme.tone}\n $weight={weight}\n disabled={disabled}\n readOnly={readOnly}\n ref={ref}\n type={type}\n />\n\n {presentationNode}\n {clearButtonNode}\n </InputRoot>\n\n {suffixNode}\n </Root>\n )\n})\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\n\nconst Root = styled.div`\n position: absolute;\n width: 15px;\n height: 15px;\n fill: none;\n\n :empty + & {\n display: none;\n }\n\n & > svg {\n &:not([hidden]) {\n display: block;\n }\n transform-origin: 7.5px 7.5px;\n }\n\n [data-popper-placement^='top'] > div > & {\n bottom: -15px;\n }\n\n [data-popper-placement^='right'] > div > & {\n left: -15px;\n\n & > svg {\n transform: rotate(90deg);\n }\n }\n\n [data-popper-placement^='left'] > div > & {\n right: -15px;\n\n & > svg {\n transform: rotate(-90deg);\n }\n }\n\n [data-popper-placement^='bottom'] > div > & {\n top: -15px;\n\n & > svg {\n transform: rotate(180deg);\n }\n }\n`\n\nconst Border = styled.path`\n fill: var(--card-shadow-outline-color);\n`\n\nconst Shape = styled.path`\n fill: var(--card-bg-color);\n`\n\ninterface TooltipArrowProps {}\n\nexport const TooltipArrow = forwardRef(function TooltipArrow(\n props: TooltipArrowProps & Omit<React.HTMLProps<HTMLDivElement>, 'as'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {...restProps} = props\n\n return (\n <Root {...restProps} ref={ref}>\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\">\n <Border d=\"M11.5266 1C11.032 1.32802 10.5837 1.73105 10.1995 2.20057L9.04792 3.6081C8.24771 4.58614 6.7523 4.58614 5.95209 3.6081L4.80047 2.20057C4.41632 1.73105 3.96796 1.32802 3.47341 1H0.156727C1.65639 1 3.07687 1.67313 4.02651 2.83381L5.17813 4.24134C6.37844 5.70839 8.62156 5.70839 9.82187 4.24134L10.9735 2.83381C11.9231 1.67313 13.3436 1 14.8433 1H11.5266Z\" />\n <Shape d=\"M0.156725 0C1.95632 0 3.66089 0.80776 4.80047 2.20057L5.95209 3.6081C6.75229 4.58614 8.24771 4.58614 9.04791 3.6081L10.1995 2.20057C11.3391 0.80776 13.0437 0 14.8433 0H15H0H0.156725Z\" />\n </svg>\n </Root>\n )\n})\n","import {cloneElement, forwardRef, useCallback, useEffect, useRef, useState} from 'react'\nimport {usePopper} from 'react-popper'\nimport styled from 'styled-components'\nimport {useArrayProp, useForwardedRef} from '../../hooks'\nimport {ThemeColorSchemeKey, useTheme} from '../../theme'\nimport {Placement} from '../../types'\nimport {Layer, LayerProps, Portal, useBoundaryElement} from '../../utils'\nimport {Card} from '../card'\nimport {TooltipArrow} from './tooltipArrow'\n\n/**\n * @public\n */\nexport interface TooltipProps extends Omit<LayerProps, 'as'> {\n allowedAutoPlacements?: Placement[]\n boundaryElement?: HTMLElement | null\n children?: React.ReactElement\n content?: React.ReactNode\n disabled?: boolean\n fallbackPlacements?: Placement[]\n placement?: Placement\n portal?: boolean | string\n scheme?: ThemeColorSchemeKey\n}\n\nconst Root = styled(Layer)`\n pointer-events: none;\n`\n\n/**\n * @public\n */\nexport const Tooltip = forwardRef(function Tooltip(\n props: TooltipProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const boundaryElementContext = useBoundaryElement()\n const theme = useTheme()\n const {\n allowedAutoPlacements,\n boundaryElement = boundaryElementContext?.element,\n children,\n content,\n disabled,\n fallbackPlacements: fallbackPlacementsProp,\n placement = 'bottom',\n portal,\n scheme,\n zOffset = theme.sanity.layer?.tooltip.zOffset,\n ...restProps\n } = props\n const fallbackPlacements = useArrayProp(fallbackPlacementsProp)\n const forwardedRef = useForwardedRef(ref)\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null)\n const [popperElement, setPopperElement] = useState<HTMLDivElement | null>(null)\n const [arrowElement, setArrowElement] = useState<HTMLDivElement | null>(null)\n const popper = usePopper(referenceElement, popperElement, {\n placement,\n modifiers: [\n {\n name: 'arrow',\n options: {\n element: arrowElement,\n padding: 4,\n },\n },\n {\n name: 'preventOverflow',\n options: {\n altAxis: true,\n boundary: boundaryElement || undefined,\n padding: 4,\n },\n },\n {\n name: 'offset',\n options: {offset: [0, 3]},\n },\n {\n name: 'flip',\n options: {\n allowedAutoPlacements,\n fallbackPlacements,\n },\n },\n ],\n })\n const {forceUpdate} = popper\n const [isOpen, setIsOpen] = useState(false)\n const handleBlur = useCallback(() => setIsOpen(false), [])\n const handleFocus = useCallback(() => setIsOpen(true), [])\n const handleMouseEnter = useCallback(() => setIsOpen(true), [])\n const handleMouseLeave = useCallback(() => setIsOpen(false), [])\n\n // Detect whether the mouse is moving outside of the reference element. This is sometimes\n // necessary, because the tooltip might not always close as it should (e.g. when clicking\n // the reference element triggers a CPU-heavy operation.)\n useEffect(() => {\n if (!isOpen) return\n\n function handleWindowMouseMove(event: MouseEvent) {\n if (!referenceElement) return\n\n const isHoveringReference =\n referenceElement === event.target ||\n (event.target instanceof Node && referenceElement.contains(event.target))\n\n if (!isHoveringReference) {\n setIsOpen(false)\n window.removeEventListener('mousemove', handleWindowMouseMove)\n }\n }\n\n window.addEventListener('mousemove', handleWindowMouseMove)\n\n return () => {\n window.removeEventListener('mousemove', handleWindowMouseMove)\n }\n }, [isOpen, referenceElement])\n\n const updateTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n useEffect(() => {\n if (updateTimeoutRef.current) {\n clearTimeout(updateTimeoutRef.current)\n updateTimeoutRef.current = null\n }\n\n updateTimeoutRef.current = setTimeout(() => {\n if (forceUpdate) {\n try {\n forceUpdate()\n } catch (_) {\n // ignore caught error\n }\n }\n }, 0)\n }, [forceUpdate, content])\n\n // Close when `disabled` changes to `true`\n useEffect(() => {\n if (disabled) setIsOpen(false)\n }, [disabled])\n\n // Close when `content` changes to falsy\n useEffect(() => {\n if (!content) setIsOpen(false)\n }, [content])\n\n const setRef = (el: HTMLDivElement | null) => {\n setPopperElement(el)\n forwardedRef.current = el\n }\n\n if (!children) return <></>\n\n if (disabled) return children\n\n const referenceProps = {\n onBlur: handleBlur,\n onFocus: handleFocus,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n ref: setReferenceElement,\n }\n\n const referenceNode = cloneElement(children, referenceProps)\n\n const popperNode = (\n <Root\n data-ui=\"Tooltip\"\n {...restProps}\n {...popper.attributes.popper}\n ref={setRef}\n style={popper.styles.popper}\n zOffset={zOffset}\n >\n <Card radius={2} scheme={scheme} shadow={3}>\n {content}\n <TooltipArrow ref={setArrowElement} style={popper.styles.arrow} />\n </Card>\n </Root>\n )\n\n return (\n <>\n {referenceNode}\n\n {isOpen && (\n <>\n {portal && (\n <Portal __unstable_name={typeof portal === 'string' ? portal : undefined}>\n {popperNode}\n </Portal>\n )}\n\n {!portal && popperNode}\n </>\n )}\n </>\n )\n})\n","import {SpinnerIcon} from '@sanity/icons'\nimport styled, {keyframes} from 'styled-components'\nimport {Box, Popover} from '../../primitives'\n\n/**\n * @internal\n */\nexport const Root = styled.div`\n line-height: 0;\n`\n\n/**\n * @internal\n */\nexport const ListBox = styled(Box)`\n & > ul {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n`\n\n/**\n * @internal\n */\nexport const ResultsPopover = styled(Popover)`\n & > div {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n\n &[data-popper-reference-hidden='true'] {\n display: none;\n }\n`\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n`\n\n/**\n * @internal\n */\nexport const AnimatedSpinnerIcon = styled(SpinnerIcon)`\n animation: ${rotate} 500ms linear infinite;\n`\n","import {useCallback} from 'react'\nimport {_isEnterToClickElement} from '../../helpers'\n\nexport interface AutocompleteOptionProps {\n children: React.ReactNode\n id: string\n onSelect: (v: string) => void\n selected: boolean\n value: string\n}\n\nexport function AutocompleteOption(props: AutocompleteOptionProps): React.ReactElement {\n const {children, id, onSelect, selected, value} = props\n\n const handleClick = useCallback(() => {\n // Calling the `onSelect` in a timeout is a fix to\n // allow the `click` event to propagate in some cases\n setTimeout(() => {\n onSelect(value)\n }, 0)\n }, [onSelect, value])\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLLIElement>) => {\n if (event.key === 'Enter' && !_isEnterToClickElement(event.currentTarget)) {\n handleClick()\n }\n },\n [handleClick]\n )\n\n return (\n <li\n aria-selected={selected}\n data-ui=\"AutocompleteOption\"\n id={id}\n role=\"option\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {children}\n </li>\n )\n}\n","import {AutocompleteMsg, AutocompleteState} from './types'\n\n/**\n * @internal\n */\nexport function autocompleteReducer(\n state: AutocompleteState,\n msg: AutocompleteMsg\n): AutocompleteState {\n if (msg.type === 'input/change') {\n return {...state, activeValue: null, focused: true, query: msg.query}\n }\n\n if (msg.type === 'input/focus') {\n return {...state, focused: true}\n }\n\n if (msg.type === 'root/blur') {\n return {...state, focused: false, query: null}\n }\n\n if (msg.type === 'root/clear') {\n return {...state, activeValue: null, query: null, value: null}\n }\n\n if (msg.type === 'root/escape') {\n return {...state, focused: false, query: null}\n }\n\n if (msg.type === 'root/open') {\n return {...state, query: state.query || msg.query}\n }\n\n if (msg.type === 'root/setActiveValue') {\n return {...state, activeValue: msg.value, listFocused: msg.listFocused || state.listFocused}\n }\n\n if (msg.type === 'root/setListFocused') {\n // 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 {\n cloneElement,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react'\nimport {EMPTY_ARRAY, EMPTY_RECORD} from '../../constants'\nimport {_hasFocus, _raf, focusFirstDescendant} from '../../helpers'\nimport {useForwardedRef, useArrayProp} from '../../hooks'\nimport {Box, BoxProps, Button, Card, PopoverProps, Stack, Text, TextInput} from '../../primitives'\nimport {AnimatedSpinnerIcon, ListBox, ResultsPopover, Root} from './autocomplete.styles'\nimport {AutocompleteOption} from './autocompleteOption'\nimport {autocompleteReducer} from './autocompleteReducer'\nimport {\n AUTOCOMPLETE_LISTBOX_IGNORE_KEYS,\n AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS,\n AUTOCOMPLETE_POPOVER_MARGINS,\n AUTOCOMPLETE_POPOVER_PLACEMENT,\n} from './constants'\nimport {AutocompleteOpenButtonProps, BaseAutocompleteOption} from './types'\n\n/**\n * @public\n */\nexport interface AutocompleteProps<Option extends BaseAutocompleteOption = BaseAutocompleteOption> {\n border?: boolean\n customValidity?: string\n filterOption?: (query: string, option: Option) => boolean\n fontSize?: number | number[]\n icon?: React.ElementType | React.ReactNode\n id: string\n /**\n * @beta\n */\n listBox?: BoxProps\n loading?: boolean\n onChange?: (value: string) => void\n onQueryChange?: (query: string | null) => void\n onSelect?: (value: string) => void\n /**\n * @beta\n */\n openButton?: boolean | AutocompleteOpenButtonProps\n options?: Option[]\n padding?: number | number[]\n popover?: Omit<PopoverProps, 'content' | 'onMouseEnter' | 'onMouseLeave' | 'open'> &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content' | 'ref' | 'width'>\n prefix?: React.ReactNode\n radius?: number | number[]\n /**\n * @beta\n */\n relatedElements?: HTMLElement[]\n renderOption?: (option: Option) => React.ReactElement\n /**\n * @beta\n */\n renderPopover?: (\n props: {\n content: React.ReactElement | null\n hidden: boolean\n inputElement: HTMLInputElement | null\n onMouseEnter: () => void\n onMouseLeave: () => void\n },\n ref: React.Ref<HTMLDivElement>\n ) => React.ReactNode\n renderValue?: (value: string, option?: Option) => string\n suffix?: React.ReactNode\n value?: string\n}\n\nconst defaultRenderValue = (value: string, option?: BaseAutocompleteOption) =>\n option ? option.value : value\n\nconst defaultFilterOption = (query: string, option: BaseAutocompleteOption) =>\n option.value.toLowerCase().indexOf(query.toLowerCase()) > -1\n\nconst InnerAutocomplete = forwardRef(function InnerAutocomplete<\n Option extends BaseAutocompleteOption\n>(\n props: AutocompleteProps<Option> &\n Omit<\n React.HTMLProps<HTMLInputElement>,\n | 'aria-activedescendant'\n | 'aria-autocomplete'\n | 'aria-expanded'\n | 'aria-owns'\n | 'as'\n | 'autoCapitalize'\n | 'autoComplete'\n | 'autoCorrect'\n | 'id'\n | 'inputMode'\n | 'onChange'\n | 'onSelect'\n | 'prefix'\n | 'ref'\n | 'role'\n | 'spellCheck'\n | 'type'\n | 'value'\n >,\n ref: React.Ref<HTMLInputElement>\n) {\n const {\n border = true,\n customValidity,\n disabled,\n filterOption: filterOptionProp,\n fontSize = 2,\n icon,\n id,\n listBox = {},\n loading,\n onBlur,\n onChange,\n onFocus,\n onQueryChange,\n onSelect,\n openButton,\n options: optionsProp,\n padding: paddingProp = 3,\n popover = {},\n prefix,\n radius = 3,\n readOnly,\n relatedElements,\n renderOption: renderOptionProp,\n renderPopover,\n renderValue = defaultRenderValue,\n suffix,\n value: valueProp,\n ...restProps\n } = props\n\n const [state, dispatch] = useReducer(autocompleteReducer, {\n activeValue: valueProp || null,\n focused: false,\n listFocused: false,\n query: null,\n value: valueProp || null,\n })\n\n const {activeValue, focused, listFocused, query, value} = state\n\n const defaultRenderOption = useCallback(\n ({value}: BaseAutocompleteOption) => (\n <Card data-as=\"button\" padding={paddingProp} radius={2} tone=\"inherit\">\n <Text size={fontSize} textOverflow=\"ellipsis\">\n {value}\n </Text>\n </Card>\n ),\n [fontSize, paddingProp]\n )\n\n const renderOption =\n typeof renderOptionProp === 'function' ? renderOptionProp : defaultRenderOption\n const filterOption =\n typeof filterOptionProp === 'function' ? filterOptionProp : defaultFilterOption\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const [resultsPopoverElement, setResultsPopoverElement] = useState<HTMLDivElement | null>(null)\n const inputElementRef = useRef<HTMLInputElement | null>(null)\n const listBoxElementRef = useRef<HTMLDivElement | null>(null)\n const 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 {Children, forwardRef, Fragment, isValidElement, useCallback, useMemo, useState} from 'react'\nimport {useArrayProp, useClickOutside} from '../../hooks'\nimport {Box, Popover, Stack, Text} from '../../primitives'\nimport {ExpandButton, Root} from './breadcrumbs.styles'\n\n/**\n * @beta\n */\nexport interface BreadcrumbsProps {\n maxLength?: number\n separator?: React.ReactNode\n space?: number | number[]\n}\n\n/**\n * @beta\n */\nexport const Breadcrumbs = forwardRef(function Breadcrumbs(\n props: BreadcrumbsProps & Omit<React.HTMLProps<HTMLOListElement>, 'as' | 'ref' | 'type'>,\n ref: React.ForwardedRef<HTMLOListElement>\n) {\n const {children, maxLength, separator, space: spaceRaw = 2, ...restProps} = props\n const space = useArrayProp(spaceRaw)\n const [open, setOpen] = useState(false)\n const [expandElement, setExpandElement] = useState<HTMLButtonElement | null>(null)\n const [popoverElement, setPopoverElement] = useState<HTMLDivElement | null>(null)\n\n const collapse = useCallback(() => setOpen(false), [])\n const expand = useCallback(() => setOpen(true), [])\n\n useClickOutside(collapse, [expandElement, popoverElement])\n\n const rawItems = useMemo(\n () =>\n Children.toArray(children).filter((child) => {\n return isValidElement(child)\n }),\n [children]\n )\n\n const items = useMemo(() => {\n const len = rawItems.length\n\n if (maxLength && len > maxLength) {\n const beforeLength = Math.ceil(maxLength / 2)\n const afterLength = Math.floor(maxLength / 2)\n\n return [\n ...rawItems.slice(0, beforeLength - 1),\n <Popover\n constrainSize\n content={\n <Stack as=\"ol\" overflow=\"auto\" padding={space} space={space}>\n {rawItems.slice(beforeLength - 1, len - afterLength)}\n </Stack>\n }\n key=\"button\"\n open={open}\n placement=\"top\"\n portal\n ref={setPopoverElement}\n >\n <ExpandButton\n fontSize={1}\n mode=\"bleed\"\n onClick={open ? collapse : expand}\n padding={1}\n ref={setExpandElement}\n selected={open}\n text=\"…\"\n />\n </Popover>,\n ...rawItems.slice(len - afterLength),\n ]\n }\n\n return rawItems\n }, [collapse, expand, maxLength, open, rawItems, space])\n\n return (\n <Root data-ui=\"Breadcrumbs\" {...restProps} ref={ref}>\n {items.map((item, itemIndex) => (\n <Fragment key={itemIndex}>\n {itemIndex > 0 && (\n <Box aria-hidden as=\"li\" paddingX={space}>\n {separator || <Text muted>/</Text>}\n </Box>\n )}\n <Box as=\"li\">{item}</Box>\n </Fragment>\n ))}\n </Root>\n )\n})\n","import {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\nimport {DialogPosition} from '../../types'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface DialogContextValue {\n version: 0.0\n position?: DialogPosition | DialogPosition[]\n zOffset?: number | number[]\n}\n\nconst key = Symbol.for('@sanity/ui/context/dialog')\n\nglobalScope[key] = globalScope[key] || createContext<DialogContextValue>({version: 0.0})\n\n/**\n * @internal\n */\nexport const DialogContext: React.Context<DialogContextValue> = globalScope[key]\n","import {useContext} from 'react'\nimport {DialogContext, DialogContextValue} from './dialogContext'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function useDialog(): DialogContextValue {\n return useContext(DialogContext)\n}\n","import {CloseIcon} from '@sanity/icons'\nimport {forwardRef, useCallback, useEffect, useRef, useState} from 'react'\nimport styled from 'styled-components'\nimport {focusFirstDescendant, focusLastDescendant} from '../../helpers'\nimport {useArrayProp, useClickOutside, useForwardedRef, useGlobalKeyDown} from '../../hooks'\nimport {Box, Button, Card, Container, Flex, Text} from '../../primitives'\nimport {ResponsivePaddingProps, ResponsiveWidthProps} from '../../primitives/types'\nimport {responsivePaddingStyle, ResponsivePaddingStyleProps} from '../../styles/internal'\nimport {ThemeColorSchemeKey, useTheme} from '../../theme'\nimport {DialogPosition} from '../../types'\nimport {Layer, Portal, useLayer} from '../../utils'\nimport {\n dialogStyle,\n responsiveDialogPositionStyle,\n ResponsiveDialogPositionStyleProps,\n} from './styles'\nimport {useDialog} from './useDialog'\n\n/**\n * @public\n */\nexport interface DialogProps extends ResponsivePaddingProps, ResponsiveWidthProps {\n /**\n * @beta\n */\n __unstable_autoFocus?: boolean\n /**\n * @beta\n */\n __unstable_hideCloseButton?: boolean\n cardRadius?: number | number[]\n cardShadow?: number | number[]\n contentRef?: React.ForwardedRef<HTMLDivElement>\n footer?: React.ReactNode\n header?: React.ReactNode\n id: string\n onClickOutside?: () => void\n onClose?: () => void\n portal?: string\n position?: DialogPosition | DialogPosition[]\n scheme?: ThemeColorSchemeKey\n zOffset?: number | number[]\n}\n\ninterface DialogCardProps extends ResponsiveWidthProps {\n /**\n * @beta\n */\n __unstable_autoFocus: boolean\n /**\n * @beta\n */\n __unstable_hideCloseButton: boolean\n children: React.ReactNode\n contentRef?: React.ForwardedRef<HTMLDivElement>\n footer: React.ReactNode\n header: React.ReactNode\n id: string\n onClickOutside?: () => void\n onClose?: () => void\n radius: number | number[]\n scheme?: ThemeColorSchemeKey\n shadow: number | number[]\n}\n\nconst Root = styled(Layer)<ResponsiveDialogPositionStyleProps & ResponsivePaddingStyleProps>(\n responsivePaddingStyle,\n dialogStyle,\n responsiveDialogPositionStyle\n)\n\nconst DialogContainer = styled(Container)`\n &:not([hidden]) {\n display: flex;\n }\n width: 100%;\n height: 100%;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`\n\nconst DialogCardRoot = styled(Card)`\n &:not([hidden]) {\n display: flex;\n }\n width: 100%;\n min-height: 0;\n max-height: 100%;\n overflow: hidden;\n`\n\nconst DialogLayout = styled(Flex)`\n flex: 1;\n min-height: 0;\n width: 100%;\n`\n\nconst DialogHeader = styled(Card)`\n position: relative;\n z-index: 2;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n bottom: -1px;\n border-bottom: 1px solid var(--card-hairline-soft-color);\n }\n`\n\nconst DialogContent = styled(Box)`\n position: relative;\n z-index: 1;\n overflow: auto;\n outline: none;\n`\n\nconst DialogFooter = styled(Box)`\n position: relative;\n z-index: 3;\n border-top: 1px solid var(--card-hairline-soft-color);\n`\n\nconst DialogCard = forwardRef(function DialogCard(\n props: DialogCardProps,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n __unstable_autoFocus: autoFocus,\n __unstable_hideCloseButton: hideCloseButton,\n children,\n contentRef,\n footer,\n header,\n id,\n onClickOutside,\n onClose,\n radius: radiusProp,\n scheme,\n shadow: shadowProp,\n width: widthProp,\n } = props\n const radius = useArrayProp(radiusProp)\n const shadow = useArrayProp(shadowProp)\n const width = useArrayProp(widthProp)\n const forwardedRef = useForwardedRef(ref)\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const localContentRef = useRef<HTMLDivElement | null>(null)\n const layer = useLayer()\n const {isTopLayer} = layer\n const labelId = `${id}_label`\n const showCloseButton = Boolean(onClose) && hideCloseButton === false\n const showHeader = Boolean(header) || showCloseButton\n\n useEffect(() => {\n if (!autoFocus) return\n\n // On mount: focus the first interactive element in the contents\n if (forwardedRef.current) {\n focusFirstDescendant(forwardedRef.current)\n }\n }, [autoFocus, forwardedRef])\n\n useGlobalKeyDown(\n useCallback(\n (event: KeyboardEvent) => {\n if (!isTopLayer || !onClose) return\n\n if (event.key === 'Escape') {\n event.preventDefault()\n event.stopPropagation()\n onClose()\n }\n },\n [isTopLayer, onClose]\n )\n )\n\n useClickOutside(\n useCallback(() => {\n if (!isTopLayer || !onClickOutside) return\n\n onClickOutside()\n }, [isTopLayer, onClickOutside]),\n [rootElement]\n )\n\n const setRef = useCallback(\n (el: HTMLDivElement | null) => {\n setRootElement(el)\n forwardedRef.current = el\n },\n [forwardedRef]\n )\n\n const setContentRef = useCallback(\n (el: HTMLDivElement | null) => {\n localContentRef.current = el\n if (typeof contentRef === 'function') contentRef(el)\n else if (contentRef) contentRef.current = el\n },\n [contentRef]\n )\n\n return (\n <DialogContainer data-ui=\"DialogCard\" width={width}>\n <DialogCardRoot radius={radius} ref={setRef} scheme={scheme} shadow={shadow}>\n <DialogLayout direction=\"column\">\n {showHeader && (\n <DialogHeader>\n <Flex>\n <Box flex={1} padding={4}>\n {header && (\n <Text id={labelId} weight=\"semibold\">\n {header}\n </Text>\n )}\n </Box>\n {showCloseButton && (\n <Box padding={2}>\n <Button\n aria-label=\"Close dialog\"\n disabled={!onClose}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onClose}\n padding={3}\n />\n </Box>\n )}\n </Flex>\n </DialogHeader>\n )}\n\n <DialogContent flex={1} ref={setContentRef} tabIndex={-1}>\n {children}\n </DialogContent>\n\n {footer && <DialogFooter>{footer}</DialogFooter>}\n </DialogLayout>\n </DialogCardRoot>\n </DialogContainer>\n )\n})\n\n/**\n * @public\n */\nexport const Dialog = forwardRef(function Dialog(\n props: DialogProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'id' | 'width'>,\n ref: React.Ref<HTMLDivElement>\n) {\n const dialog = useDialog()\n const theme = useTheme()\n const {\n __unstable_autoFocus: autoFocus = true,\n __unstable_hideCloseButton: hideCloseButton = false,\n cardRadius: cardRadiusProp = 3,\n cardShadow = 4,\n children,\n contentRef,\n footer,\n header,\n id,\n onClickOutside,\n onClose,\n padding: paddingProp = 4,\n portal,\n position: positionProp = dialog.position || 'fixed',\n scheme,\n width: widthProp = 0,\n zOffset: zOffsetProp = dialog.zOffset || theme.sanity.layer?.dialog.zOffset,\n ...restProps\n } = props\n const cardRadius = useArrayProp(cardRadiusProp)\n const padding = useArrayProp(paddingProp)\n const position = useArrayProp(positionProp)\n const width = useArrayProp(widthProp)\n const zOffset = useArrayProp(zOffsetProp)\n const preDivRef = useRef<HTMLDivElement | null>(null)\n const postDivRef = useRef<HTMLDivElement | null>(null)\n const cardRef = useRef<HTMLDivElement | null>(null)\n\n const handleFocus = useCallback((event: React.FocusEvent<HTMLDivElement>) => {\n const target = event.target\n const cardElement = cardRef.current\n\n if (!cardElement) {\n return\n }\n\n if (target === preDivRef.current) {\n focusLastDescendant(cardElement)\n\n return\n }\n\n if (target === postDivRef.current) {\n focusFirstDescendant(cardElement)\n\n return\n }\n }, [])\n\n const labelId = `${id}_label`\n\n return (\n <Portal __unstable_name={portal}>\n <Root\n {...restProps}\n $padding={padding}\n $position={position}\n aria-labelledby={labelId}\n aria-modal\n data-ui=\"Dialog\"\n id={id}\n onFocus={handleFocus}\n ref={ref}\n role=\"dialog\"\n zOffset={zOffset}\n >\n <div ref={preDivRef} tabIndex={0} />\n <DialogCard\n __unstable_autoFocus={autoFocus}\n __unstable_hideCloseButton={hideCloseButton}\n contentRef={contentRef}\n footer={footer}\n header={header}\n id={id}\n onClickOutside={onClickOutside}\n onClose={onClose}\n radius={cardRadius}\n ref={cardRef}\n scheme={scheme}\n shadow={cardShadow}\n width={width}\n >\n {children}\n </DialogCard>\n <div ref={postDivRef} tabIndex={0} />\n </Root>\n </Portal>\n )\n})\n","import {CSSObject} from 'styled-components'\nimport {_responsive, ThemeProps} from '../../styles'\nimport {DialogPosition} from '../../types'\n\n/**\n * @internal\n */\nexport interface ResponsiveDialogPositionStyleProps {\n $position: DialogPosition[]\n}\n\nexport function dialogStyle({theme}: ThemeProps): CSSObject {\n const color = theme.sanity.color.base\n\n return {\n '&:not([hidden])': {\n display: 'flex',\n },\n\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n alignItems: 'center',\n justifyContent: 'center',\n outline: 'none',\n background: color.shadow.umbra,\n }\n}\n\nexport function responsiveDialogPositionStyle(\n props: ResponsiveDialogPositionStyleProps & ThemeProps\n): CSSObject[] {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$position, (position) => ({'&&': {position}}))\n}\n","import {useMemo} from 'react'\nimport {DialogPosition} from '../../types'\nimport {DialogContext, DialogContextValue} from './dialogContext'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface DialogProviderProps {\n children?: React.ReactNode\n position?: DialogPosition | DialogPosition[]\n zOffset?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function DialogProvider(props: DialogProviderProps): React.ReactElement {\n const {children, position, zOffset} = props\n\n const contextValue: DialogContextValue = useMemo(\n () => ({\n version: 0.0,\n position,\n zOffset,\n }),\n [position, zOffset]\n )\n\n return <DialogContext.Provider value={contextValue}>{children}</DialogContext.Provider>\n}\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {Inline, KBD} from '../../primitives'\n\n/**\n * @public\n */\nexport interface HotkeysProps {\n fontSize?: number | number[]\n padding?: number | number[]\n radius?: number | number[]\n space?: number | number[]\n keys?: string[]\n}\n\nconst Root = styled.kbd`\n &:not([hidden]) {\n display: block;\n }\n font: inherit;\n`\n\nconst Key = styled(KBD)`\n &:not([hidden]) {\n display: block;\n }\n`\n\n/**\n * @public\n */\nexport const Hotkeys = forwardRef(function Hotkeys(\n props: HotkeysProps & Omit<React.HTMLProps<HTMLElement>, 'as' | 'ref' | 'size'>,\n ref: React.Ref<HTMLElement>\n) {\n const {fontSize, keys, padding, radius, space: spaceProp = 1, ...restProps} = props\n const space = useArrayProp(spaceProp)\n\n if (!keys || keys.length === 0) {\n return <></>\n }\n\n return (\n <Root data-ui=\"Hotkeys\" {...restProps} ref={ref}>\n <Inline as=\"span\" space={space}>\n {keys.map((key, i) => (\n <Key fontSize={fontSize} key={i} padding={padding} radius={radius}>\n {key}\n </Key>\n ))}\n </Inline>\n </Root>\n )\n})\n","import {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\n\nexport interface MenuContextValue {\n version: 0.0\n activeElement: HTMLElement | null\n activeIndex: number\n mount: (element: HTMLElement | null, selected?: boolean) => () => void\n onClickOutside?: (event: MouseEvent) => void\n onEscape?: () => void\n onItemClick?: () => void\n onItemMouseEnter?: (event: React.MouseEvent<HTMLElement>) => void\n onItemMouseLeave?: (event: React.MouseEvent<HTMLElement>) => void\n registerElement?: (el: HTMLElement) => () => void\n\n /**\n * @deprecated Use `onItemMouseEnter` instead\n */\n onMouseEnter: (event: React.MouseEvent<HTMLElement>) => void\n\n /**\n * @deprecated Use `onItemMouseLeave` instead\n */\n onMouseLeave: (event: React.MouseEvent<HTMLElement>) => void\n}\n\nconst key = Symbol.for('@sanity/ui/context/menu')\n\nglobalScope[key] = globalScope[key] || createContext<MenuContextValue | null>(null)\n\nexport const MenuContext: React.Context<MenuContextValue | null> = globalScope[key]\n","import {isHTMLAnchorElement, isHTMLButtonElement} from '../../helpers'\n\n/**\n * @internal\n */\nfunction _isFocusable(element: HTMLElement) {\n return (\n (isHTMLAnchorElement(element) && element.getAttribute('data-disabled') !== 'true') ||\n (isHTMLButtonElement(element) && !element.disabled)\n )\n}\n\n/**\n * @internal\n */\nexport function _getFocusableElements(elements: HTMLElement[]): HTMLElement[] {\n return elements.filter(_isFocusable)\n}\n\n/**\n * @internal\n */\nexport function _getDOMPath(rootElement: HTMLElement, el: HTMLElement): number[] {\n const path: number[] = []\n\n let e = el\n\n while (e !== rootElement) {\n const parentElement = e.parentElement\n\n if (!parentElement) return path\n\n const children = Array.from(parentElement.childNodes)\n const index = children.indexOf(e)\n\n path.unshift(index)\n\n if (parentElement === rootElement) {\n return path\n }\n\n e = parentElement\n }\n\n return path\n}\n\nconst EMPTY_PATH: number[] = []\n\n/**\n * @internal\n */\nexport function _sortElements(rootElement: HTMLElement | null, elements: HTMLElement[]): void {\n if (!rootElement) return\n\n const map = new WeakMap<HTMLElement, number[]>()\n\n for (const el of elements) {\n map.set(el, _getDOMPath(rootElement, el))\n }\n\n const _sort = (a: HTMLElement, b: HTMLElement) => {\n const _a = map.get(a) || EMPTY_PATH\n const _b = map.get(b) || EMPTY_PATH\n\n const len = Math.max(_a.length, _b.length)\n\n // Loop until there are different indexes\n for (let i = 0; i < len; i += 1) {\n const aIndex = _a[i] || -1\n const bIndex = _b[i] || -1\n\n if (aIndex !== bIndex) {\n return aIndex - bIndex\n }\n }\n\n return 0\n }\n\n elements.sort(_sort)\n}\n","import {useCallback, useEffect, useRef, useState} from 'react'\nimport {_getFocusableElements, _sortElements} from './helpers'\n\n/**\n * @internal\n */\nexport interface MenuController {\n activeElement: HTMLElement | null\n activeIndex: number\n handleItemMouseEnter: (event: React.MouseEvent<HTMLElement>) => void\n handleItemMouseLeave: () => void\n handleKeyDown: (event: React.KeyboardEvent<HTMLDivElement>) => void\n mount: (element: HTMLElement | null, selected?: boolean) => () => void\n rootElement: HTMLDivElement | null\n setRootElement: (el: HTMLDivElement | null) => void\n}\n\n/**\n * This controller is responsible for controlling UI menu state.\n *\n * @internal\n */\nexport function useMenuController(props: {\n onKeyDown?: React.KeyboardEventHandler\n originElement?: HTMLElement | null\n shouldFocus: 'first' | 'last' | null\n}): MenuController {\n const {onKeyDown, originElement, shouldFocus} = props\n const elementsRef = useRef<HTMLElement[]>([])\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const [activeIndex, _setActiveIndex] = useState(-1)\n const activeIndexRef = useRef(activeIndex)\n const activeElement = elementsRef.current[activeIndex] || null\n const mounted = Boolean(rootElement)\n\n const setActiveIndex = useCallback((nextActiveIndex: number) => {\n _setActiveIndex(nextActiveIndex)\n activeIndexRef.current = nextActiveIndex\n }, [])\n\n const mount = useCallback(\n (element: HTMLElement | null, selected?: boolean): (() => void) => {\n if (!element) return () => undefined\n\n if (elementsRef.current.indexOf(element) === -1) {\n elementsRef.current.push(element)\n _sortElements(rootElement, elementsRef.current)\n }\n\n if (selected) {\n const selectedIndex = elementsRef.current.indexOf(element)\n\n setActiveIndex(selectedIndex)\n }\n\n return () => {\n const idx = elementsRef.current.indexOf(element)\n\n if (idx > -1) {\n elementsRef.current.splice(idx, 1)\n }\n }\n },\n [rootElement, setActiveIndex]\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n // Move focus to the element that opened the menu before handling the `Tab` press\n if (event.key === 'Tab') {\n if (originElement) {\n originElement.focus()\n }\n\n return\n }\n\n // Move focus to the first focusable menuitem\n if (event.key === 'Home') {\n event.preventDefault()\n event.stopPropagation()\n\n const focusableElements = _getFocusableElements(elementsRef.current)\n const el = focusableElements[0]\n\n if (!el) return\n\n const currentIndex = elementsRef.current.indexOf(el)\n\n setActiveIndex(currentIndex)\n\n return\n }\n\n // Move focus to the last focusable menuitem\n if (event.key === 'End') {\n event.preventDefault()\n event.stopPropagation()\n\n const focusableElements = _getFocusableElements(elementsRef.current)\n const el = focusableElements[focusableElements.length - 1]\n\n if (!el) return\n\n const currentIndex = elementsRef.current.indexOf(el)\n\n setActiveIndex(currentIndex)\n\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n event.stopPropagation()\n\n const focusableElements = _getFocusableElements(elementsRef.current)\n const focusableLen = focusableElements.length\n\n if (focusableLen === 0) return\n\n const focusedElement = elementsRef.current[activeIndexRef.current]\n\n let focusedIndex = focusableElements.indexOf(focusedElement)\n\n focusedIndex = (focusedIndex - 1 + focusableLen) % focusableLen\n\n const el = focusableElements[focusedIndex]\n const currentIndex = elementsRef.current.indexOf(el)\n\n setActiveIndex(currentIndex)\n\n return\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n event.stopPropagation()\n\n const focusableElements = _getFocusableElements(elementsRef.current)\n const focusableLen = focusableElements.length\n\n if (focusableLen === 0) return\n\n const focusedElement = elementsRef.current[activeIndexRef.current]\n\n let focusedIndex = focusableElements.indexOf(focusedElement)\n\n focusedIndex = (focusedIndex + 1) % focusableLen\n\n const el = focusableElements[focusedIndex]\n const currentIndex = elementsRef.current.indexOf(el)\n\n setActiveIndex(currentIndex)\n\n return\n }\n\n if (onKeyDown) {\n onKeyDown(event)\n }\n },\n [onKeyDown, originElement, setActiveIndex]\n )\n\n const handleItemMouseEnter = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n const element = event.currentTarget\n const currentIndex = elementsRef.current.indexOf(element)\n\n setActiveIndex(currentIndex)\n },\n [setActiveIndex]\n )\n\n const handleItemMouseLeave = useCallback(() => {\n rootElement?.focus()\n setActiveIndex(-1)\n }, [rootElement, setActiveIndex])\n\n // Set focus on the currently active element\n useEffect(() => {\n if (!mounted) return\n\n const rafId = window.requestAnimationFrame(() => {\n const _activeIndex = activeIndexRef.current\n\n if (_activeIndex === -1) {\n if (shouldFocus === 'first') {\n const focusableElements = _getFocusableElements(elementsRef.current)\n const el = focusableElements[0]\n\n if (el) {\n const currentIndex = elementsRef.current.indexOf(el)\n\n setActiveIndex(currentIndex)\n activeIndexRef.current = currentIndex\n }\n }\n\n if (shouldFocus === 'last') {\n const focusableElements = _getFocusableElements(elementsRef.current)\n const el = focusableElements[focusableElements.length - 1]\n\n if (el) {\n const currentIndex = elementsRef.current.indexOf(el)\n\n setActiveIndex(currentIndex)\n activeIndexRef.current = currentIndex\n }\n }\n\n return\n }\n\n const element = elementsRef.current[_activeIndex] || null\n\n element?.focus()\n })\n\n return () => {\n window.cancelAnimationFrame(rafId)\n }\n }, [activeIndex, mounted, setActiveIndex, shouldFocus])\n\n return {\n activeElement,\n activeIndex,\n handleItemMouseEnter,\n handleItemMouseLeave,\n handleKeyDown,\n mount,\n rootElement,\n setRootElement,\n }\n}\n","import {forwardRef, useCallback, useEffect, useMemo} from 'react'\nimport styled from 'styled-components'\nimport {useClickOutside, useForwardedRef, useGlobalKeyDown} from '../../hooks'\nimport {Box, Stack} from '../../primitives'\nimport {ResponsivePaddingProps} from '../../primitives/types'\nimport {useLayer} from '../../utils'\nimport {MenuContext, MenuContextValue} from './menuContext'\nimport {useMenuController} from './useMenuController'\n\n/**\n * @public\n */\nexport interface MenuProps extends ResponsivePaddingProps {\n /**\n * @deprecated Use `shouldFocus=\"first\"` instead.\n */\n focusFirst?: boolean\n /**\n * @deprecated Use `shouldFocus=\"last\"` instead.\n */\n focusLast?: boolean\n onClickOutside?: (event: MouseEvent) => void\n onEscape?: () => void\n onItemClick?: () => void\n onItemSelect?: (index: number) => void\n originElement?: HTMLElement | null\n registerElement?: (el: HTMLElement) => () => void\n shouldFocus?: 'first' | 'last' | null\n space?: number | number[]\n}\n\nconst Root = styled(Box)`\n outline: none;\n overflow: auto;\n`\n\n/**\n * @public\n */\nexport const Menu = forwardRef(function Menu(\n props: MenuProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'role' | 'tabIndex'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n children,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n focusFirst,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n focusLast,\n onClickOutside,\n onEscape,\n onItemClick,\n onItemSelect,\n onKeyDown,\n originElement,\n padding = 1,\n registerElement,\n shouldFocus = (props.focusFirst && 'first') || (props.focusLast && 'last') || null,\n space = 1,\n ...restProps\n } = props\n\n const forwardedRef = useForwardedRef(ref)\n\n const {isTopLayer} = useLayer()\n\n const {\n activeElement,\n activeIndex,\n handleItemMouseEnter,\n handleItemMouseLeave,\n handleKeyDown,\n mount,\n rootElement,\n setRootElement,\n } = useMenuController({onKeyDown, originElement, shouldFocus})\n\n const handleRefChange = useCallback(\n (el: HTMLDivElement | null) => {\n setRootElement(el)\n forwardedRef.current = el\n },\n [forwardedRef, setRootElement]\n )\n\n // Trigger `onItemSelect` when active index changes\n useEffect(() => {\n if (onItemSelect) onItemSelect(activeIndex)\n }, [activeIndex, onItemSelect])\n\n // Close menu when clicking outside\n useClickOutside(\n useCallback(\n (event) => isTopLayer && onClickOutside && onClickOutside(event),\n [isTopLayer, onClickOutside]\n ),\n [rootElement]\n )\n\n // Close menu when pressing Escape\n useGlobalKeyDown(\n useCallback(\n (event) => {\n if (!isTopLayer) return\n\n if (event.key === 'Escape') {\n event.stopPropagation()\n if (onEscape) onEscape()\n }\n },\n [isTopLayer, onEscape]\n )\n )\n\n // Register root element (for nested menus)\n useEffect(() => {\n if (!rootElement || !registerElement) return\n\n return registerElement(rootElement)\n }, [registerElement, rootElement])\n\n const value: MenuContextValue = useMemo(\n () => ({\n version: 0.0,\n activeElement,\n activeIndex,\n mount,\n onClickOutside,\n onEscape,\n onItemClick,\n onItemMouseEnter: handleItemMouseEnter,\n onItemMouseLeave: handleItemMouseLeave,\n registerElement,\n\n // deprecated\n onMouseEnter: handleItemMouseEnter,\n onMouseLeave: handleItemMouseLeave,\n }),\n [\n activeElement,\n activeIndex,\n mount,\n handleItemMouseEnter,\n handleItemMouseLeave,\n onClickOutside,\n onEscape,\n onItemClick,\n registerElement,\n ]\n )\n\n return (\n <MenuContext.Provider value={value}>\n <Root\n data-ui=\"Menu\"\n {...restProps}\n onKeyDown={handleKeyDown}\n padding={padding}\n ref={handleRefChange}\n role=\"menu\"\n tabIndex={-1}\n >\n <Stack space={space}>{children}</Stack>\n </Root>\n </MenuContext.Provider>\n )\n})\n","import {cloneElement, forwardRef, useCallback, useMemo, useState, useEffect, useRef} from 'react'\nimport {isElement} from 'react-is'\nimport {Popover, PopoverProps} from '../../primitives'\nimport {ThemeColorSchemeKey} from '../../theme'\nimport {Placement} from '../../types'\nimport {MenuProps} from './menu'\n\n/**\n * @public\n */\nexport interface MenuButtonProps {\n /**\n * @beta Do not use in production.\n */\n __unstable_disableRestoreFocusOnClose?: boolean\n /**\n * @deprecated Use `popover={{boundaryElement: element}}` instead.\n */\n boundaryElement?: HTMLElement\n button: React.ReactElement\n id: string\n menu?: React.ReactElement\n onClose?: () => void\n /**\n * @deprecated Use `popover={{placement: 'top'}}` instead.\n */\n placement?: Placement\n popover?: Omit<PopoverProps, 'content' | 'open'>\n /**\n * @deprecated Use `popover={{scheme: 'dark'}}` instead.\n */\n popoverScheme?: ThemeColorSchemeKey\n /**\n * @deprecated Use `popover={{radius: 2}}` instead.\n */\n popoverRadius?: number | number[]\n /**\n * @beta Do not use in production.\n * @deprecated Use `popover={{portal: true}}` instead.\n */\n portal?: boolean\n /**\n * @deprecated Use `popover={{preventOverflow: true}}` instead.\n */\n preventOverflow?: boolean\n}\n\n/**\n * @public\n */\nexport const MenuButton = forwardRef(function MenuButton(\n props: MenuButtonProps,\n ref: React.ForwardedRef<HTMLButtonElement | null>\n) {\n const {\n __unstable_disableRestoreFocusOnClose: disableRestoreFocusOnClose = false,\n boundaryElement: deprecated_boundaryElement,\n button: buttonProp,\n id,\n menu: menuProp,\n onClose,\n placement: deprecated_placement,\n popoverScheme: deprecated_popoverScheme,\n portal: deprecated_portal = true,\n popover,\n popoverRadius: deprecated_popoverRadius,\n preventOverflow: deprecated_preventOverflow,\n } = props\n const [open, setOpen] = useState(false)\n const [shouldFocus, setShouldFocus] = useState<'first' | 'last' | null>(null)\n const [buttonElement, setButtonElement] = useState<HTMLButtonElement | null>(null)\n const [menuElements, setChildMenuElements] = useState<HTMLElement[]>([])\n const openRef = useRef<boolean>(open)\n\n useEffect(() => {\n if (onClose && !open && openRef.current) {\n onClose()\n }\n }, [onClose, open])\n\n useEffect(() => {\n openRef.current = open\n }, [open])\n\n const handleButtonClick = useCallback(() => {\n setOpen((v) => !v)\n setShouldFocus(null)\n }, [])\n\n const handleButtonKeyDown = useCallback((event: React.KeyboardEvent<HTMLButtonElement>) => {\n // On `ArrowDown`, `Enter` and `Space`\n // - Opens menu and moves focus to first menuitem\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n setOpen(true)\n setShouldFocus('first')\n\n return\n }\n\n // On `ArrowUp`\n // - \tOpens menu and moves focus to last menuitem\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n setOpen(true)\n setShouldFocus('last')\n\n return\n }\n }, [])\n\n const handleMenuClickOutside = useCallback(\n (event: MouseEvent) => {\n const target = event.target\n\n if (!(target instanceof Node)) {\n return\n }\n\n if (buttonElement && (target === buttonElement || buttonElement.contains(target))) {\n return\n }\n\n for (const el of menuElements) {\n if (target === el || el.contains(target)) {\n return\n }\n }\n\n setOpen(false)\n },\n [buttonElement, menuElements]\n )\n\n const handleMenuEscape = useCallback(() => {\n setOpen(false)\n if (disableRestoreFocusOnClose) return\n if (buttonElement) buttonElement.focus()\n }, [buttonElement, disableRestoreFocusOnClose])\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n const target = event.relatedTarget\n\n if (!(target instanceof Node)) {\n return\n }\n\n for (const el of menuElements) {\n if (el === target || el.contains(target)) {\n return\n }\n }\n\n setOpen(false)\n },\n [menuElements]\n )\n\n const handleItemClick = useCallback(() => {\n setOpen(false)\n if (disableRestoreFocusOnClose) return\n if (buttonElement) buttonElement.focus()\n }, [buttonElement, disableRestoreFocusOnClose])\n\n const registerElement = useCallback((el: HTMLElement) => {\n setChildMenuElements((els) => els.concat([el]))\n\n return () => {\n setChildMenuElements((els) => {\n return els.filter((_el) => _el !== el)\n })\n }\n }, [])\n\n const menuProps: MenuProps = useMemo(\n () => ({\n 'aria-labelledby': id,\n onBlurCapture: handleBlur,\n onClickOutside: handleMenuClickOutside,\n onEscape: handleMenuEscape,\n onItemClick: handleItemClick,\n originElement: buttonElement,\n registerElement,\n shouldFocus,\n }),\n [\n buttonElement,\n handleMenuClickOutside,\n handleMenuEscape,\n handleItemClick,\n id,\n handleBlur,\n registerElement,\n shouldFocus,\n ]\n )\n\n const menu = isElement(menuProp) ? cloneElement(menuProp, menuProps) : null\n\n const setButtonRef = useCallback(\n (el: HTMLButtonElement | null) => {\n if (typeof ref === 'function') {\n ref(el)\n } else if (ref) {\n ref.current = el\n }\n\n setButtonElement(el)\n },\n [ref]\n )\n\n const button = useMemo(\n () =>\n isElement(buttonProp)\n ? cloneElement(buttonProp, {\n 'data-ui': 'MenuButton',\n id,\n onClick: handleButtonClick,\n onKeyDown: handleButtonKeyDown,\n 'aria-haspopup': true,\n 'aria-expanded': open,\n ref: setButtonRef,\n selected: open,\n })\n : null,\n [buttonProp, handleButtonClick, handleButtonKeyDown, id, open, setButtonRef]\n )\n\n const popoverProps: PopoverProps = useMemo(() => {\n return {\n boundaryElement: deprecated_boundaryElement,\n placement: deprecated_placement,\n portal: deprecated_portal,\n radius: deprecated_popoverRadius,\n preventOverflow: deprecated_preventOverflow,\n scheme: deprecated_popoverScheme,\n ...(popover || {}),\n }\n }, [\n deprecated_boundaryElement,\n deprecated_preventOverflow,\n deprecated_placement,\n popover,\n deprecated_popoverRadius,\n deprecated_portal,\n deprecated_popoverScheme,\n ])\n\n return (\n <Popover {...popoverProps} content={menu} data-ui=\"MenuButton__popover\" open={open}>\n {button || <></>}\n </Popover>\n )\n})\n","import styled, {StyledComponent} from 'styled-components'\nimport {Theme} from '../../theme'\n\n/**\n * @public\n */\nexport const MenuDivider: StyledComponent<'hr', Theme> = styled.hr`\n height: 1px;\n border: 0;\n background: var(--card-hairline-soft-color);\n margin: 0;\n`\n","import styled from 'styled-components'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/radius'\nimport {Box} from '../box'\nimport {selectableBaseStyle, selectableColorStyle, SelectableStyleProps} from './style'\n\n/**\n * @internal\n */\nexport const Selectable = styled(Box)<SelectableStyleProps & ResponsiveRadiusStyleProps>(\n responsiveRadiusStyle,\n selectableBaseStyle,\n selectableColorStyle\n)\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {_colorVarsStyle} from '../../styles/colorVars'\nimport {SelectableTone} from '../../types/selectable'\n\n/**\n * @internal\n */\nexport interface SelectableStyleProps {\n $tone: SelectableTone\n}\n\nexport function selectableBaseStyle(): FlattenSimpleInterpolation {\n return css`\n background-color: inherit;\n color: inherit;\n\n &[data-as='button'] {\n -webkit-font-smoothing: inherit;\n appearance: none;\n outline: none;\n font: inherit;\n text-align: inherit;\n border: 0;\n width: stretch;\n }\n\n /* &:is(a) */\n &[data-as='a'] {\n text-decoration: none;\n }\n `\n}\n\nexport function selectableColorStyle(\n props: SelectableStyleProps & ThemeProps\n): FlattenSimpleInterpolation {\n const {$tone, theme} = props\n const {base, muted, selectable} = theme.sanity.color\n // @todo: remove use of `muted` here\n const tone = selectable ? selectable[$tone] || selectable.default : muted[$tone] || muted.default\n\n return css`\n ${_colorVarsStyle(base, tone.enabled)}\n\n background-color: var(--card-bg-color);\n color: var(--card-fg-color);\n outline: none;\n\n /* &:is(button) */\n &[data-as='button'] {\n &:disabled {\n ${_colorVarsStyle(base, tone.disabled)}\n }\n\n &:not(:disabled) {\n &[aria-pressed='true'] {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n\n &[data-selected],\n &[aria-selected='true'] > & {\n ${_colorVarsStyle(base, tone.selected)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) {\n &:hover {\n ${_colorVarsStyle(base, tone.hovered)}\n }\n\n &:active {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n }\n }\n }\n }\n\n /* &:is(a) */\n &[data-as='a'] {\n &[data-disabled] {\n ${_colorVarsStyle(base, tone.disabled)}\n }\n\n &:not([data-disabled]) {\n &[data-pressed] {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n\n &[data-selected] {\n ${_colorVarsStyle(base, tone.selected)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) {\n &:hover {\n ${_colorVarsStyle(base, tone.hovered)}\n }\n\n &:active {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n }\n }\n }\n }\n\n ${theme.sanity.styles?.card?.root}\n `\n}\n","import {useContext} from 'react'\nimport {isRecord} from '../../lib/isRecord'\nimport {MenuContext, MenuContextValue} from './menuContext'\n\nexport function useMenu(): MenuContextValue {\n const value = useContext(MenuContext)\n\n if (!value) {\n throw new Error('useMenu(): missing context value')\n }\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (!isRecord(value) || value.version !== 0.0) {\n throw new Error('useMenu(): the context value is not compatible')\n }\n\n return value\n}\n","import {ChevronRightIcon} from '@sanity/icons'\nimport {createElement, isValidElement, useCallback, useEffect, useRef, useState} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {useArrayProp} from '../../hooks'\nimport {Box, Flex, Popover, PopoverProps, Text} from '../../primitives'\nimport {Selectable} from '../../primitives/_selectable'\nimport {SelectableTone} from '../../types/selectable'\nimport {Menu} from './menu'\nimport {useMenu} from './useMenu'\n\n/**\n * @public\n */\nexport interface MenuGroupProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n fontSize?: number | number[]\n icon?: React.ElementType | React.ReactNode\n padding?: number | number[]\n popover?: Omit<PopoverProps, 'content' | 'open'>\n radius?: number | number[]\n space?: number | number[]\n text: React.ReactNode\n tone?: SelectableTone\n}\n\n/**\n * @public\n */\nexport function MenuGroup(\n props: MenuGroupProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'tabIndex'>\n): React.ReactElement {\n const {\n as = 'button',\n children,\n fontSize,\n icon,\n onClick,\n padding = 3,\n popover,\n radius = 2,\n space = 3,\n text,\n tone = 'default',\n ...restProps\n } = props\n const menu = useMenu()\n const {\n activeElement,\n mount,\n onClickOutside,\n onEscape,\n onItemClick,\n onItemMouseEnter = menu.onMouseEnter,\n registerElement,\n } = menu\n const [rootElement, setRootElement] = useState<HTMLButtonElement | null>(null)\n const [open, setOpen] = useState(false)\n const shouldFocusRef = useRef<'first' | 'last' | null>(null)\n const active = Boolean(activeElement) && activeElement === rootElement\n const [withinMenu, setWithinMenu] = useState(false)\n\n const handleMouseEnter = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n setWithinMenu(false)\n onItemMouseEnter(event)\n setOpen(true)\n },\n [onItemMouseEnter]\n )\n\n const handleMenuKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n event.stopPropagation()\n\n setOpen(false)\n\n requestAnimationFrame(() => {\n rootElement?.focus()\n })\n }\n },\n [rootElement]\n )\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (onClick) onClick(event)\n\n shouldFocusRef.current = 'first'\n\n setOpen(true)\n\n requestAnimationFrame(() => {\n shouldFocusRef.current = null\n })\n },\n [onClick]\n )\n\n const handleChildItemClick = useCallback(() => {\n setOpen(false)\n if (onItemClick) onItemClick()\n }, [onItemClick])\n\n const handleMenuMouseEnter = useCallback(() => setWithinMenu(true), [])\n\n // Register the menu item element\n useEffect(() => mount(rootElement), [mount, rootElement])\n\n // Close child menu when a sibling item becomes active\n useEffect(() => {\n if (!active) setOpen(false)\n }, [active])\n\n // Update state when child menu is no longer open\n useEffect(() => {\n if (!open) setWithinMenu(false)\n }, [open])\n\n const childMenu = (\n <Menu\n onClickOutside={onClickOutside}\n onEscape={onEscape}\n onItemClick={handleChildItemClick}\n onKeyDown={handleMenuKeyDown}\n onMouseEnter={handleMenuMouseEnter}\n registerElement={registerElement}\n shouldFocus={shouldFocusRef.current}\n >\n {children}\n </Menu>\n )\n\n const handleKeyDown = useCallback((event: React.KeyboardEvent<HTMLDivElement>) => {\n const target = event.currentTarget\n\n if (document.activeElement !== target) {\n return\n }\n\n if (event.key === 'ArrowRight') {\n shouldFocusRef.current = 'first'\n\n setOpen(true)\n setWithinMenu(true)\n\n requestAnimationFrame(() => {\n shouldFocusRef.current = null\n })\n\n return\n }\n }, [])\n\n return (\n <Popover {...popover} content={childMenu} data-ui=\"MenuGroup__popover\" open={open}>\n <Selectable\n data-as={as}\n data-ui=\"MenuGroup\"\n forwardedAs={as}\n {...restProps}\n aria-pressed={as === 'button' ? withinMenu : undefined}\n data-pressed={as !== 'button' ? withinMenu : undefined}\n data-selected={!withinMenu && active ? '' : undefined}\n $radius={useArrayProp(radius)}\n $tone={tone}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n onMouseEnter={handleMouseEnter}\n ref={setRootElement}\n tabIndex={-1}\n type={as === 'button' ? 'button' : undefined}\n >\n <Box padding={padding}>\n <Flex>\n {icon && (\n <Text size={fontSize}>\n {isValidElement(icon) && icon}\n {isValidElementType(icon) && createElement(icon)}\n </Text>\n )}\n\n <Box flex={1} marginLeft={icon ? space : undefined}>\n <Text size={fontSize} textOverflow=\"ellipsis\">\n {text}\n </Text>\n </Box>\n\n <Box marginLeft={space}>\n <Text size={fontSize}>\n <ChevronRightIcon />\n </Text>\n </Box>\n </Flex>\n </Box>\n </Selectable>\n </Popover>\n )\n}\n","import {\n createElement,\n forwardRef,\n isValidElement,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {useArrayProp, useForwardedRef} from '../../hooks'\nimport {Box, Flex, Text} from '../../primitives'\nimport {Selectable} from '../../primitives/_selectable'\nimport {ResponsivePaddingProps, ResponsiveRadiusProps} from '../../primitives/types'\nimport {SelectableTone} from '../../types/selectable'\nimport {Hotkeys} from '../hotkeys'\nimport {useMenu} from './useMenu'\n\n/**\n * @public\n */\nexport interface MenuItemProps extends ResponsivePaddingProps, ResponsiveRadiusProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n fontSize?: number | number[]\n hotkeys?: string[]\n icon?: React.ElementType | React.ReactNode\n iconRight?: React.ElementType | React.ReactNode\n pressed?: boolean\n selected?: boolean\n space?: number | number[]\n text?: React.ReactNode\n tone?: SelectableTone\n}\n\n/**\n * @public\n */\nexport const MenuItem = forwardRef(function MenuItem(\n props: MenuItemProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'selected' | 'tabIndex'>,\n forwardedRef: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n as = 'button',\n children,\n disabled,\n fontSize = 2,\n hotkeys,\n icon,\n iconRight,\n onClick,\n padding = 3,\n paddingX,\n paddingY,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n pressed,\n radius = 2,\n selected: selectedProp,\n space = 3,\n text,\n tone = 'default',\n ...restProps\n } = props\n const menu = useMenu()\n const {\n activeElement,\n mount,\n onItemClick,\n onItemMouseEnter = menu.onMouseEnter,\n onItemMouseLeave = menu.onMouseLeave,\n } = menu\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const active = Boolean(activeElement) && activeElement === rootElement\n\n useEffect(() => mount(rootElement, selectedProp), [mount, rootElement, selectedProp])\n\n const ref = useForwardedRef(forwardedRef)\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (disabled) return\n if (onClick) onClick(event)\n if (onItemClick) onItemClick()\n },\n [disabled, onClick, onItemClick]\n )\n\n const paddingProps = useMemo(\n () => ({\n padding,\n paddingX,\n paddingY,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n }),\n [padding, paddingX, paddingY, paddingTop, paddingRight, paddingBottom, paddingLeft]\n )\n\n const setRef = useCallback(\n (el: HTMLDivElement | null) => {\n ref.current = el\n setRootElement(el)\n },\n [ref]\n )\n\n return (\n <Selectable\n data-ui=\"MenuItem\"\n {...restProps}\n aria-pressed={as === 'button' && pressed}\n data-pressed={as !== 'button' && pressed ? '' : undefined}\n data-selected={active ? '' : undefined}\n data-disabled={disabled ? '' : undefined}\n forwardedAs={as}\n $radius={useArrayProp(radius)}\n $padding={useArrayProp(0)}\n $tone={tone}\n disabled={disabled}\n onClick={handleClick}\n onMouseEnter={onItemMouseEnter}\n onMouseLeave={onItemMouseLeave}\n ref={setRef}\n role=\"menuitem\"\n tabIndex={-1}\n type={as === 'button' ? 'button' : undefined}\n >\n {(icon || text || iconRight) && (\n <Box as=\"span\" {...paddingProps}>\n <Flex as=\"span\">\n {icon && (\n <Text size={fontSize}>\n {isValidElement(icon) && icon}\n {isValidElementType(icon) && createElement(icon)}\n </Text>\n )}\n\n {text && (\n <Box\n flex={1}\n marginLeft={icon ? space : undefined}\n marginRight={iconRight ? space : undefined}\n >\n <Text size={fontSize} textOverflow=\"ellipsis\">\n {text}\n </Text>\n </Box>\n )}\n\n {hotkeys && (\n <Box marginLeft={space} style={{marginTop: -4, marginBottom: -4}}>\n <Hotkeys fontSize={fontSize} keys={hotkeys} />\n </Box>\n )}\n\n {iconRight && (\n <Text size={fontSize}>\n {isValidElement(iconRight) && iconRight}\n {isValidElementType(iconRight) && createElement(iconRight)}\n </Text>\n )}\n </Flex>\n </Box>\n )}\n\n {children && (\n <Box as=\"span\" {...paddingProps}>\n {children}\n </Box>\n )}\n </Selectable>\n )\n})\n","import {css, keyframes} from 'styled-components'\n\nconst keyframe = keyframes`\n 0% {\n background-position: 100%;\n }\n 100% {\n background-position: -100%;\n }\n`\n\nconst animation = css`\n background-image: linear-gradient(\n to right,\n var(--card-skeleton-color-from),\n var(--card-skeleton-color-to),\n var(--card-skeleton-color-from),\n var(--card-skeleton-color-from),\n var(--card-skeleton-color-from)\n );\n background-position: 100%;\n background-size: 200% 100%;\n background-attachment: fixed;\n animation-name: ${keyframe};\n animation-timing-function: ease-in-out;\n animation-iteration-count: infinite;\n animation-duration: 2000ms;\n`\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const skeletonStyle = css<{$animated: boolean; $visible: boolean}>`\n opacity: ${({$visible}) => ($visible ? 1 : 0)};\n transition: opacity 200ms ease-in;\n\n @media screen and (prefers-reduced-motion: no-preference) {\n ${({$animated}) =>\n $animated\n ? animation\n : css`\n background-color: var(--card-skeleton-color-from);\n `}\n }\n\n @media screen and (prefers-reduced-motion: reduce) {\n background-color: var(--card-skeleton-color-from);\n }\n`\n","import {forwardRef, useEffect, useState} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {Box} from '../../primitives'\nimport {BoxProps, ResponsiveRadiusProps} from '../../primitives'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/internal'\nimport {skeletonStyle} from './styles'\n\nconst Root = styled(Box)<{$animated: boolean; $visible: boolean} & ResponsiveRadiusStyleProps>(\n responsiveRadiusStyle,\n skeletonStyle\n)\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface SkeletonProps extends ResponsiveRadiusProps, Omit<BoxProps, 'children'> {\n animated?: boolean\n delay?: number\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const Skeleton = forwardRef(function Skeleton(\n props: SkeletonProps & React.HTMLProps<HTMLDivElement>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {animated = false, delay, radius, ...restProps} = props\n const [visible, setVisible] = useState<boolean>(delay ? false : true)\n\n useEffect(() => {\n if (!delay) {\n return setVisible(true)\n }\n\n const timeout = setTimeout(() => {\n setVisible(true)\n }, delay)\n\n return () => {\n clearTimeout(timeout)\n }\n }, [delay])\n\n return (\n <Root\n {...restProps}\n $animated={animated}\n $radius={useArrayProp(radius)}\n $visible={visible}\n ref={ref}\n />\n )\n})\n","import {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {_responsive} from '../../styles'\nimport {Theme, ThemeFontKey} from '../../theme'\nimport {Skeleton, SkeletonProps} from './skeleton'\n\nconst Root = styled(Skeleton)<{$size: number[]; $style: ThemeFontKey}>(\n ({$size, $style, theme}: {$size: number[]; $style: ThemeFontKey; theme: Theme}) => {\n const {media} = theme.sanity\n const font = theme.sanity.fonts[$style]\n\n const styles = _responsive(media, $size, (sizeIndex) => {\n const fontSize = font.sizes[sizeIndex]\n const capHeight = fontSize.lineHeight - fontSize.ascenderHeight - fontSize.descenderHeight\n\n return {height: capHeight}\n })\n\n return styles\n }\n)\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface TextSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface LabelSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface HeadingSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface CodeSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const TextSkeleton = forwardRef(function TextSkeleton(\n props: TextSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {size = 2, ...restProps} = props\n const $size = useArrayProp(size)\n\n return <Root {...restProps} $size={$size} ref={ref} $style=\"text\" />\n})\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const LabelSkeleton = forwardRef(function TextSkeleton(\n props: LabelSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {size = 2, ...restProps} = props\n const $size = useArrayProp(size)\n\n return <Root {...restProps} $size={$size} ref={ref} $style=\"label\" />\n})\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const HeadingSkeleton = forwardRef(function TextSkeleton(\n props: HeadingSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {size = 2, ...restProps} = props\n const $size = useArrayProp(size)\n\n return <Root {...restProps} $size={$size} ref={ref} $style=\"heading\" />\n})\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const CodeSkeleton = forwardRef(function TextSkeleton(\n props: CodeSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {size = 2, ...restProps} = props\n const $size = useArrayProp(size)\n\n return <Root {...restProps} $size={$size} ref={ref} $style=\"code\" />\n})\n","import {forwardRef, useCallback, useEffect, useRef} from 'react'\nimport {useForwardedRef} from '../../hooks'\nimport {Button} from '../../primitives'\nimport {ButtonTone} from '../../types'\n\n/**\n * @public\n */\nexport interface TabProps {\n /**\n * The `id` of the correlating `TabPanel` component.\n */\n 'aria-controls': string\n id: string\n icon?: React.ElementType | React.ReactNode\n focused?: boolean\n fontSize?: number | number[]\n label?: React.ReactNode\n padding?: number | number[]\n selected?: boolean\n tone?: ButtonTone\n}\n\n/**\n * @public\n */\nexport const Tab = forwardRef(function Tab(\n props: TabProps &\n Omit<React.HTMLProps<HTMLButtonElement>, 'aria-controls' | 'as' | 'id' | 'label' | 'type'>,\n forwardedRef: React.ForwardedRef<HTMLButtonElement>\n) {\n const {\n icon,\n id,\n focused,\n fontSize,\n label,\n onClick,\n onFocus,\n padding = 2,\n selected,\n ...restProps\n } = props\n const elementRef = useRef<HTMLButtonElement | null>(null)\n const focusedRef = useRef(false)\n\n const handleBlur = useCallback(() => {\n focusedRef.current = false\n }, [])\n\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n focusedRef.current = true\n if (onFocus) onFocus(event)\n },\n [onFocus]\n )\n\n const ref = useForwardedRef(forwardedRef)\n\n useEffect(() => {\n if (focused && !focusedRef.current) {\n if (elementRef.current) elementRef.current.focus()\n focusedRef.current = true\n }\n }, [focused])\n\n const setRef = (el: HTMLButtonElement | null) => {\n elementRef.current = el\n ref.current = el\n }\n\n return (\n <Button\n data-ui=\"Tab\"\n {...restProps}\n aria-selected={selected ? 'true' : 'false'}\n fontSize={fontSize}\n icon={icon}\n id={id}\n mode=\"bleed\"\n onClick={onClick}\n onBlur={handleBlur}\n onFocus={handleFocus}\n padding={padding}\n ref={setRef}\n role=\"tab\"\n selected={selected}\n tabIndex={selected ? 0 : -1}\n text={label}\n type=\"button\"\n />\n )\n})\n","import {cloneElement, forwardRef, useCallback, useMemo, useState} from 'react'\nimport {Inline, InlineProps} from '../../primitives'\n\n/**\n * @public\n */\nexport interface TabListProps extends Omit<InlineProps, 'as' | 'height'> {\n children: Array<React.ReactElement | null | undefined | false>\n}\n\nfunction _isReactElement(node: unknown): node is React.ReactElement {\n return Boolean(node)\n}\n\n/**\n * @public\n */\nexport const TabList = forwardRef(function TabList(\n props: TabListProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height'>,\n ref\n) {\n const {children: childrenProp, ...restProps} = props\n const [focusedIndex, setFocusedIndex] = useState(-1)\n\n const children = useMemo(() => childrenProp.filter(_isReactElement), [childrenProp])\n\n const tabs = children.map((child, childIndex) =>\n cloneElement(child, {\n focused: focusedIndex === childIndex,\n key: childIndex,\n onFocus: () => handleTabFocus(childIndex),\n })\n )\n\n const numTabs = tabs.length\n\n const handleTabFocus = useCallback((tabIdx: number) => {\n setFocusedIndex(tabIdx)\n }, [])\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n setFocusedIndex((prevIndex) => (prevIndex + numTabs - 1) % numTabs)\n }\n\n if (event.key === 'ArrowRight') {\n setFocusedIndex((prevIndex) => (prevIndex + 1) % numTabs)\n }\n },\n [numTabs]\n )\n\n return (\n <Inline data-ui=\"TabList\" {...restProps} onKeyDown={handleKeyDown} ref={ref} role=\"tablist\">\n {tabs}\n </Inline>\n )\n})\n","import {forwardRef} from 'react'\nimport {Box, BoxProps} from '../../primitives'\n\n/**\n * @public\n */\nexport interface TabPanelProps extends BoxProps {\n /**\n * The `id` of the correlating `Tab` component.\n */\n 'aria-labelledby': string\n id: string\n}\n\n/**\n * @public\n */\nexport const TabPanel = forwardRef(function TabPanel(\n props: TabPanelProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'aria-labelledby' | 'id' | 'role'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {flex, ...restProps} = props\n\n return (\n <Box\n data-ui=\"TabPanel\"\n {...restProps}\n flex={flex}\n ref={ref}\n role=\"tabpanel\"\n tabIndex={props.tabIndex === undefined ? 0 : props.tabIndex}\n >\n {props.children}\n </Box>\n )\n})\n","import {CloseIcon} from '@sanity/icons'\nimport styled from 'styled-components'\nimport {Box, Button, Card, Flex, Stack, Text} from '../../primitives'\nimport {ThemeColorToneKey} from '../../theme'\n\n/**\n * @public\n */\nexport interface ToastProps {\n closable?: boolean\n description?: React.ReactNode\n onClose?: () => void\n title?: React.ReactNode\n status?: 'error' | 'warning' | 'success' | 'info'\n}\n\nconst STATUS_CARD_TONE: {[key: string]: ThemeColorToneKey} = {\n error: 'critical',\n warning: 'caution',\n success: 'positive',\n info: 'primary',\n}\n\nconst ROLES = {\n error: 'alert',\n warning: 'alert',\n success: 'alert',\n info: 'alert',\n}\n\nconst Root = styled(Card)`\n pointer-events: all;\n`\n\nconst TextBox = styled(Flex)`\n overflow-x: auto;\n`\n\n/**\n * @public\n */\nexport function Toast(\n props: ToastProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'title'>\n): React.ReactElement {\n const {closable, description, onClose, title, status, ...restProps} = props\n const cardTone = status ? STATUS_CARD_TONE[status] : 'default'\n const role = status ? ROLES[status] : 'status'\n\n return (\n <Root\n data-ui=\"Toast\"\n role={role}\n {...restProps}\n marginTop={3}\n radius={2}\n shadow={2}\n tone={cardTone}\n >\n <Flex align=\"flex-start\">\n <TextBox flex={1} padding={3}>\n <Stack space={3}>\n {title && <Text weight=\"semibold\">{title}</Text>}\n {description && (\n <Text muted size={1}>\n {description}\n </Text>\n )}\n </Stack>\n </TextBox>\n\n {closable && (\n <Box padding={1}>\n <Button\n as=\"button\"\n icon={CloseIcon}\n mode=\"bleed\"\n padding={2}\n onClick={onClose}\n style={{verticalAlign: 'top'}}\n />\n </Box>\n )}\n </Flex>\n </Root>\n )\n}\n","import {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\nimport {ToastContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/toast')\n\nglobalScope[key] = globalScope[key] || createContext<ToastContextValue | null>(null)\n\nexport const ToastContext: React.Context<ToastContextValue | null> = globalScope[key]\n","import {AnimatePresence, motion} from 'framer-motion'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport styled from 'styled-components'\nimport {Box} from '../../primitives'\nimport {Layer} from '../../utils'\nimport {Toast} from './toast'\nimport {ToastContext} from './toastContext'\nimport {ToastContextValue, ToastParams} from './types'\n\ninterface ToastState {\n toasts: {\n dismiss: () => void\n id: string\n params: ToastParams\n }[]\n}\n\n/**\n * @public\n */\nexport interface ToastProviderProps {\n children?: React.ReactNode\n padding?: number | number[]\n paddingX?: number | number[]\n paddingY?: number | number[]\n zOffset?: number | number[]\n}\n\nconst Root = styled(Layer)`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n pointer-events: none;\n`\n\nconst ToastContainer = styled.div`\n box-sizing: border-box;\n position: absolute;\n right: 0;\n bottom: 0;\n max-width: 420px;\n width: 100%;\n`\n\nlet toastId = 0\n\n/**\n * @public\n */\nexport function ToastProvider(props: ToastProviderProps): React.ReactElement {\n const {children, padding = 4, paddingX, paddingY, zOffset} = props\n const [state, setState] = useState<ToastState>({toasts: []})\n const toastsRef = useRef<{[key: string]: {timeoutId: NodeJS.Timeout}}>({})\n\n const push = useCallback((params: ToastParams) => {\n const id = params.id || String(toastId++)\n const duration = params.duration || 5000\n\n const dismiss = () => {\n const timeoutId = toastsRef.current[id]?.timeoutId\n\n setState((prevState) => {\n const idx = prevState.toasts.findIndex((t) => t.id === id)\n\n if (idx > -1) {\n const toasts = prevState.toasts.slice(0)\n\n toasts.splice(idx, 1)\n\n return {...prevState, toasts}\n }\n\n return prevState\n })\n\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId)\n delete toastsRef.current[id]\n }\n }\n\n setState((prevState) => {\n return {\n ...prevState,\n toasts: prevState.toasts\n .filter((t) => t.id !== id)\n .concat([\n {\n dismiss,\n id,\n params: {...params, duration},\n },\n ]),\n }\n })\n\n if (toastsRef.current[id]) {\n clearTimeout(toastsRef.current[id].timeoutId)\n delete toastsRef.current[id]\n }\n\n toastsRef.current[id] = {timeoutId: setTimeout(dismiss, duration)}\n\n return id\n }, [])\n\n // clear timeouts on unmount\n useEffect(\n () => () => {\n for (const {timeoutId} of Object.values(toastsRef.current)) {\n clearTimeout(timeoutId)\n }\n\n toastsRef.current = {}\n },\n []\n )\n\n const value: ToastContextValue = useMemo(() => ({version: 0.0, push}), [push])\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n\n <Root data-ui=\"ToastProvider\" zOffset={zOffset}>\n <ToastContainer>\n <Box padding={padding} paddingX={paddingX} paddingY={paddingY}>\n <AnimatePresence initial={false}>\n {state.toasts.map(({dismiss, id, params}) => (\n <motion.div\n animate={{opacity: 1, y: 0, scale: 1}}\n exit={{opacity: 0, scale: 0.5, transition: {duration: 0.2}}}\n initial={{opacity: 0, y: 32, scale: 0.25}}\n key={id}\n layout=\"position\"\n transition={{type: 'spring', damping: 30, stiffness: 400}}\n >\n <Toast\n closable={params.closable}\n description={params.description}\n onClose={dismiss}\n status={params.status}\n title={params.title}\n />\n </motion.div>\n ))}\n </AnimatePresence>\n </Box>\n </ToastContainer>\n </Root>\n </ToastContext.Provider>\n )\n}\n","import {useContext} from 'react'\nimport {isRecord} from '../../lib/isRecord'\nimport {ToastContext} from './toastContext'\nimport {ToastContextValue} from './types'\n\n/**\n * @public\n */\nexport function useToast(): ToastContextValue {\n const value = useContext(ToastContext)\n\n if (!value) {\n throw new Error('useToast(): missing context value')\n }\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (!isRecord(value) || value.version !== 0.0) {\n throw new Error('useToast(): the context value is not compatible')\n }\n\n return value\n}\n","import {TreeState} from './types'\n\nexport function _findPrevItemElement(\n state: TreeState,\n itemElements: HTMLElement[],\n focusedElement: HTMLElement\n): HTMLElement | null {\n const idx = itemElements.indexOf(focusedElement)\n const els = itemElements.slice(0, idx)\n const len = els.length\n\n for (let i = len - 1; i >= 0; i -= 1) {\n const itemKey = els[i].getAttribute('data-tree-key')\n\n if (!itemKey) {\n continue\n }\n\n const segments = itemKey.split('/')\n\n segments.pop()\n\n const p: string[] = []\n\n let expanded = true\n\n for (let j = 0; j < segments.length; j += 1) {\n p.push(segments[j])\n\n const k = p.join('/')\n\n if (!state[k]?.expanded) {\n expanded = false\n break\n }\n }\n\n if (expanded) {\n return els[i]\n }\n }\n\n return null\n}\n\nexport function _findNextItemElement(\n state: TreeState,\n itemElements: HTMLElement[],\n focusedElement: HTMLElement\n): HTMLElement | null {\n const idx = itemElements.indexOf(focusedElement)\n const els = itemElements.slice(idx)\n const len = itemElements.length\n\n for (let i = 1; i < len; i += 1) {\n if (!els[i]) {\n continue\n }\n\n const itemKey = els[i].getAttribute('data-tree-key')\n\n if (!itemKey) {\n continue\n }\n\n const segments = itemKey.split('/')\n\n segments.pop()\n\n const p: string[] = []\n\n let expanded = true\n\n for (let j = 0; j < segments.length; j += 1) {\n p.push(segments[j])\n\n const k = p.join('/')\n\n if (!state[k]?.expanded) {\n expanded = false\n break\n }\n }\n\n if (expanded) {\n return els[i]\n }\n }\n\n return null\n}\n\nexport function _focusItemElement(el: HTMLElement): void {\n if (el.getAttribute('role') === 'treeitem') {\n el.focus()\n }\n\n if (el.getAttribute('role') === 'none') {\n const firstChild = el.firstChild\n\n if (firstChild && firstChild instanceof HTMLElement) {\n firstChild.focus()\n }\n }\n}\n","import {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\nimport {TreeContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/tree')\n\nglobalScope[key] = globalScope[key] || createContext<TreeContextValue | null>(null)\n\n/**\n * @internal\n */\nexport const TreeContext: React.Context<TreeContextValue | null> = globalScope[key]\n","import {forwardRef, memo, useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {useForwardedRef} from '../../hooks'\nimport {Stack} from '../../primitives'\nimport {_findNextItemElement, _findPrevItemElement, _focusItemElement} from './helpers'\nimport {TreeContext} from './treeContext'\nimport {TreeContextValue, TreeState} from './types'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface TreeProps {\n space?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const Tree = memo(\n forwardRef(function Tree(\n props: TreeProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'align' | 'as' | 'height' | 'ref' | 'role' | 'wrap'>,\n ref: React.ForwardedRef<HTMLDivElement>\n ): React.ReactElement {\n const {children, space = 1, ...restProps} = props\n const forwardedRef = useForwardedRef(ref)\n const [focusedElement, setFocusedElement] = useState<HTMLElement | null>(null)\n const focusedElementRef = useRef(focusedElement)\n const path: string[] = useMemo(() => [], [])\n const [itemElements, setItemElements] = useState<HTMLElement[]>([])\n const [state, setState] = useState<TreeState>({})\n const stateRef = useRef(state)\n\n useEffect(() => {\n focusedElementRef.current = focusedElement\n }, [focusedElement])\n\n useEffect(() => {\n stateRef.current = state\n }, [state])\n\n const registerItem = useCallback(\n (element: HTMLElement, path: string, expanded: boolean, selected: boolean) => {\n setState((s) => ({...s, [path]: {element, expanded}}))\n\n if (selected) {\n setFocusedElement(element)\n }\n\n return () => {\n setState((s) => {\n const newState = {...s}\n\n delete newState[path]\n\n return newState\n })\n }\n },\n []\n )\n\n const setExpanded = useCallback((path: string, expanded: boolean) => {\n setState((s) => {\n const itemState = s[path]\n\n if (!itemState) return s\n\n return {...s, [path]: {...itemState, expanded}}\n })\n }, [])\n\n const contextValue: TreeContextValue = useMemo(\n () => ({\n version: 0.0,\n focusedElement: focusedElement || itemElements[0] || null,\n level: 0,\n path,\n registerItem,\n setExpanded,\n setFocusedElement,\n space,\n state,\n }),\n [focusedElement, itemElements, path, registerItem, setExpanded, space, state]\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!focusedElementRef.current) return\n\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n\n const nextEl = _findNextItemElement(\n stateRef.current,\n itemElements,\n focusedElementRef.current\n )\n\n if (nextEl) {\n _focusItemElement(nextEl)\n setFocusedElement(nextEl)\n }\n\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n\n const prevEl = _findPrevItemElement(\n stateRef.current,\n itemElements,\n focusedElementRef.current\n )\n\n if (prevEl) {\n _focusItemElement(prevEl)\n setFocusedElement(prevEl)\n }\n\n return\n }\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault()\n\n const itemKey = focusedElementRef.current.getAttribute('data-tree-key')\n\n if (!itemKey) return\n\n const itemState = stateRef.current[itemKey]\n\n if (!itemState) return\n\n if (itemState.expanded) {\n setState((s) => {\n const itemState = s[itemKey]\n\n if (!itemState) return s\n\n return {...s, [itemKey]: {...itemState, expanded: false}}\n })\n } else {\n const itemPath = itemKey.split('/')\n\n itemPath.pop()\n\n const parentKey = itemPath.join('/')\n const parentState = parentKey && stateRef.current[parentKey]\n\n if (parentState) {\n parentState.element.focus()\n setFocusedElement(parentState.element)\n }\n }\n\n return\n }\n\n if (event.key === 'ArrowRight') {\n event.preventDefault()\n\n const focusedKey = focusedElementRef.current.getAttribute('data-tree-key')\n\n if (!focusedKey) return\n\n if (!stateRef.current[focusedKey]?.expanded) {\n setState((s) => {\n const itemState = s[focusedKey]\n\n if (!itemState) return s\n\n return {...s, [focusedKey]: {...itemState, expanded: true}}\n })\n }\n\n return\n }\n },\n [itemElements]\n )\n\n useEffect(() => {\n if (!forwardedRef.current) return\n const _itemElements = Array.from(\n forwardedRef.current.querySelectorAll('[data-ui=\"TreeItem\"]')\n ) as HTMLElement[]\n\n setItemElements(_itemElements)\n }, [children, forwardedRef])\n\n return (\n <TreeContext.Provider value={contextValue}>\n <Stack\n as=\"ul\"\n data-ui=\"Tree\"\n {...restProps}\n onKeyDown={handleKeyDown}\n ref={forwardedRef}\n role=\"tree\"\n space={space}\n >\n {children}\n </Stack>\n </TreeContext.Provider>\n )\n })\n)\n\nTree.displayName = 'Tree'\n","import {useContext} from 'react'\nimport {TreeContext} from './treeContext'\nimport {TreeContextValue} from './types'\n\n/**\n * @beta\n */\nexport function useTree(): TreeContextValue {\n const tree = useContext(TreeContext)\n\n if (!tree) {\n throw new Error('Tree: missing context value')\n }\n\n return tree\n}\n","import {memo} from 'react'\nimport {Stack} from '../../primitives'\nimport {useTree} from './useTree'\n\nexport interface TreeGroupProps {\n expanded?: boolean\n}\n\nexport const TreeGroup = memo(function TreeGroup(\n props: TreeGroupProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'role' | 'wrap'>\n): React.ReactElement {\n const {children, expanded = false, ...restProps} = props\n const tree = useTree()\n\n return (\n <Stack\n as=\"ul\"\n data-ui=\"TreeGroup\"\n {...restProps}\n hidden={!expanded}\n marginTop={tree.space}\n role=\"group\"\n space={tree.space}\n >\n {children}\n </Stack>\n )\n})\n","import {ToggleArrowRightIcon} from '@sanity/icons'\nimport {createElement, memo, useCallback, useEffect, useId, useMemo, useRef} from 'react'\nimport styled from 'styled-components'\nimport {Box, Flex, Text} from '../../primitives'\nimport {ThemeFontWeightKey} from '../../theme'\nimport {\n treeItemRootStyle,\n treeItemRootColorStyle,\n treeItemBoxStyle,\n TreeItemBoxStyleProps,\n} from './style'\nimport {TreeContext} from './treeContext'\nimport {TreeGroup} from './treeGroup'\nimport {useTree} from './useTree'\n\n/**\n * @beta\n */\nexport interface TreeItemProps {\n expanded?: boolean\n fontSize?: number | number[]\n icon?: React.ElementType\n padding?: number | number[]\n space?: number | number[]\n text?: React.ReactNode\n weight?: ThemeFontWeightKey\n}\n\nconst Root = memo(styled.li(treeItemRootStyle, treeItemRootColorStyle))\n\nconst TreeItemBox = styled(Box).attrs({forwardedAs: 'a'})<TreeItemBoxStyleProps>(treeItemBoxStyle)\n\nconst ToggleArrowText = styled(Text)`\n & > svg {\n transition: transform 100ms;\n }\n`\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const TreeItem = memo(function TreeItem(\n props: TreeItemProps & Omit<React.HTMLProps<HTMLLIElement>, 'as' | 'ref' | 'role'>\n): React.ReactElement {\n const {\n children,\n expanded: expandedProp = false,\n fontSize,\n href,\n icon,\n id: idProp,\n muted,\n onClick,\n padding = 3,\n selected = false,\n space = 2,\n text,\n weight,\n ...restProps\n } = props\n const rootRef = useRef<HTMLLIElement | null>(null)\n const treeitemRef = useRef<HTMLDivElement | null>(null)\n const tree = useTree()\n const {path, registerItem, setExpanded, setFocusedElement} = tree\n const _id = useId()\n const id = idProp || _id\n const itemPath = useMemo(() => path.concat([id || '']), [id, path])\n const itemKey = itemPath.join('/')\n const itemState = tree.state[itemKey]\n const focused = tree.focusedElement === rootRef.current\n const expanded = itemState?.expanded === undefined ? expandedProp : itemState?.expanded || false\n const tabIndex = tree.focusedElement && tree.focusedElement === rootRef.current ? 0 : -1\n const contextValue = useMemo(\n () => ({...tree, level: tree.level + 1, path: itemPath}),\n [itemPath, tree]\n )\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLLIElement>) => {\n if (onClick) onClick(event)\n\n const target = event.target\n\n if (\n target instanceof HTMLElement &&\n (target.getAttribute('data-ui') === 'TreeItem__box' ||\n target.closest('[data-ui=\"TreeItem__box\"]'))\n ) {\n event.stopPropagation()\n setExpanded(itemKey, !expanded)\n setFocusedElement(rootRef.current)\n }\n },\n [expanded, itemKey, onClick, setExpanded, setFocusedElement]\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLElement>) => {\n if (focused && event.key === 'Enter') {\n const el = treeitemRef.current || rootRef.current\n\n el?.click()\n }\n },\n [focused]\n )\n\n useEffect(() => {\n if (!rootRef.current) return\n\n return registerItem(rootRef.current, itemPath.join('/'), expanded, selected)\n }, [expanded, itemPath, registerItem, selected])\n\n const content = (\n <Flex padding={padding}>\n <Box\n marginRight={space}\n style={{visibility: icon || children ? 'visible' : 'hidden', pointerEvents: 'none'}}\n >\n {icon && (\n <Text muted={muted} size={fontSize} weight={weight}>\n {createElement(icon)}\n </Text>\n )}\n {!icon && (\n <ToggleArrowText muted={muted} size={fontSize} weight={weight}>\n <ToggleArrowRightIcon style={{transform: expanded ? 'rotate(90deg)' : undefined}} />\n </ToggleArrowText>\n )}\n </Box>\n <Box flex={1}>\n <Text muted={muted} size={fontSize} textOverflow=\"ellipsis\" weight={weight}>\n {text}\n </Text>\n </Box>\n </Flex>\n )\n\n if (href) {\n return (\n <Root\n data-selected={selected ? '' : undefined}\n data-tree-id={id}\n data-tree-key={itemKey}\n data-ui=\"TreeItem\"\n {...restProps}\n onClick={handleClick}\n ref={rootRef}\n role=\"none\"\n >\n <TreeItemBox\n $level={tree.level}\n aria-expanded={expanded}\n data-ui=\"TreeItem__box\"\n href={href}\n ref={treeitemRef}\n role=\"treeitem\"\n tabIndex={tabIndex}\n >\n {content}\n </TreeItemBox>\n\n <TreeContext.Provider value={contextValue}>\n {children && <TreeGroup hidden={!expanded}>{children}</TreeGroup>}\n </TreeContext.Provider>\n </Root>\n )\n }\n\n return (\n <Root\n data-selected={selected ? '' : undefined}\n data-ui=\"TreeItem\"\n data-tree-id={id}\n data-tree-key={itemKey}\n {...restProps}\n aria-expanded={expanded}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n ref={rootRef}\n role=\"treeitem\"\n tabIndex={tabIndex}\n >\n <TreeItemBox $level={tree.level} as=\"div\" data-ui=\"TreeItem__box\">\n {content}\n </TreeItemBox>\n\n <TreeContext.Provider value={contextValue}>\n {children && <TreeGroup expanded={expanded}>{children}</TreeGroup>}\n </TreeContext.Provider>\n </Root>\n )\n})\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {rem, ThemeProps} from '../../styles'\nimport {_colorVarsStyle} from '../../styles/colorVars'\n\nexport function treeItemRootStyle(): FlattenSimpleInterpolation {\n return css`\n &[role='none'] > [role='treeitem'] {\n outline: none;\n cursor: default;\n border-radius: 3px;\n\n &:focus {\n position: relative;\n }\n }\n\n &[role='treeitem'] {\n outline: none;\n\n & > div {\n cursor: default;\n border-radius: 3px;\n }\n\n &:focus > div {\n position: relative;\n }\n }\n `\n}\n\nexport function treeItemRootColorStyle(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const $tone = 'default'\n const {base, muted, selectable} = theme.sanity.color\n // @todo: remove use of `muted` here\n const tone = selectable ? selectable[$tone] || selectable.default : muted[$tone] || muted.default\n\n return css`\n /* <div role=\"none\"><a data-ui=\"TreeItem__box\" role=\"treeitem\" tabIndex=\"0\"></div> */\n &[role='none'] {\n & > [role='treeitem'] {\n ${_colorVarsStyle(base, tone.enabled)}\n\n background-color: var(--card-bg-color);\n color: var(--treeitem-fg-color);\n }\n\n &[data-selected] > [role='treeitem'] {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) > [role='treeitem']:not(:focus):hover {\n ${_colorVarsStyle(base, tone.hovered)}\n }\n\n & > [role='treeitem']:focus {\n ${_colorVarsStyle(base, tone.selected)}\n }\n }\n }\n\n /* <div role=\"treeitem\" tabIndex=\"0\"><div data-ui=\"TreeItem__box\"></div> */\n &[role='treeitem'] {\n & > [data-ui='TreeItem__box'] {\n ${_colorVarsStyle(base, tone.enabled)}\n\n background-color: var(--card-bg-color);\n color: var(--card-fg-color);\n }\n\n &[data-selected] > [data-ui='TreeItem__box'] {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]):not(:focus) > [data-ui='TreeItem__box']:hover {\n ${_colorVarsStyle(base, tone.hovered)}\n }\n\n &:focus > [data-ui='TreeItem__box'] {\n ${_colorVarsStyle(base, tone.selected)}\n }\n }\n }\n `\n}\n\nexport interface TreeItemBoxStyleProps {\n $level: number\n}\n\nexport function treeItemBoxStyle(\n props: TreeItemBoxStyleProps & ThemeProps\n): FlattenSimpleInterpolation {\n const {$level, theme} = props\n const {space} = theme.sanity\n\n return css`\n padding-left: ${rem(space[2] * $level)};\n\n &[data-as='a'] {\n text-decoration: none;\n }\n `\n}\n"],"names":["EMPTY_ARRAY","EMPTY_RECORD","_fillCSSObject","keys","value","reduce","style","key","rem","pixelValue","_responsive","media","values","callback","map","statement","mediaIndex","concat","_getArrayProp","val","defaultVal","Array","isArray","_getResponsiveSpace","theme","props","spaceIndexes","Error","length","sanity","spaceIndex","space","responsiveFont","fontKey","$size","$weight","fonts","family","sizes","weights","fontWeight","regular","defaultSize","base","position","fontFamily","padding","margin","content","display","height","warned","console","warn","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","useElementRect","elementSize","useGlobalKeyDown","onKeyDown","multiplyChannel","b","s","multiply","r","round","clamp","g","num","max","min","screenChannel","screen","hexToRgb","hex","hexR","slice","hexG","hexB","parseInt","rgbToHex","toString","rgbToHsl","cmin","cmax","delta","h","l","abs","toFixed","hslToRgb","hsl","c","x","m","HSL_RE","parseColor","color","str","isHexChars","startsWith","res","exec","parseFloat","parseHsl","rgba","a","rgb","createButtonTones","opts","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","usePrefersDark","setDark","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","_templateObject","_taggedTemplateLiteral","textInputRootStyle","textInputBaseStyle","$scheme","$tone","font","textInputFontSizeStyle","textInputRepresentationStyle","$hasPrefix","$hasSuffix","responsivePaddingStyle","$paddingX","$paddingY","$paddingTop","$paddingRight","$paddingBottom","$paddingLeft","responsiveRadiusStyle","$radius","radiusIndex","borderRadius","toBoxShadow","Root","styled","div","$accent","$muted","_templateObject6","SpanWithTextOverflow","span","_templateObject7","Text","forwardRef","childrenProp","textOverflow","weight","restProps","_excluded2","avatarStyle","$color","backgroundColor","userSelect","boxShadow","opacity","appearance","zIndex","transition","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","_templateObject8","AvatarCounter","count","counterSize","childrenToElementArray","node","isElement","isFragment","BASE_STYLES","_templateObject9","marginLeft","AvatarStack","maxLength","maxLengthProp","_excluded4","child","extraCount","visibleChildren","childIndex","cloneElement","String","$margin","$marginX","$marginY","$marginTop","$marginRight","$marginBottom","$marginLeft","Box","marginX","marginY","marginRight","paddingX","paddingY","_excluded5","_templateObject13","Label","_excluded6","$mode","palette","cursor","Badge","_excluded7","Flex","_excluded8","forwardedAs","rotate","keyframes","_templateObject14","_templateObject15","Spinner","SpinnerIcon","_colorVarsStyle","checkered","_a","_b","_c","_d","_e","_f","_g","_h","buttonTheme","_templateObject16","LoadingBox","_templateObject17","Button","icon","iconRight","justifyProp","loading","paddingProp","paddingXProp","paddingYProp","paddingTopProp","paddingBottomProp","paddingLeftProp","paddingRightProp","radiusProp","spaceProp","type","_excluded9","boxProps","isValidElement","createElement","cardBaseStyle","$checkered","_templateObject18","cardColorStyle","$focusRing","_templateObject20","$shadow","shadowStyle","Card","__unstable_checkered","__unstable_focusRing","toneProp","_excluded10","rootTheme","_templateObject21","Input","Checkbox","forwardedRef","checked","indeterminate","_excluded11","CheckmarkIcon","RemoveIcon","codeSyntaxHighlightingStyle","pre","Code","language","languageProp","_excluded12","registered","Refractor","hasLanguage","inline","responsiveContainerWidthStyle","$width","maxWidth","Container","_excluded13","Grid","_excluded14","_templateObject25","_templateObject27","Heading","_excluded15","verticalAlign","Inline","_excluded16","kbd","_templateObject28","KBD","_excluded17","BoundaryElementContext","BoundaryElementProvider","DEFAULT_VALUE","useBoundaryElement","ElementQuery","_excluded18","innerWidth","findMaxBreakpoints","findMinBreakpoints","setRef","ErrorBoundary","Component","constructor","super","arguments","this","error","componentDidCatch","info","onCatch","render","message","LayerContext","useLayer","LayerProvider","zOffsetProp","parent","maxMediaIndex","registerChild","v","parentRegisterChild","isTopLayer","_templateObject29","LayerChildren","_excluded19","Layer","_excluded20","elementKey","defaultContextValue","document","setAttribute","body","appendChild","PortalContext","usePortal","Portal","__unstable_name","portal","portalElement","createPortal","useUnique","valueRef","objA","objB","keysA","Object","keysB","every","_isEqual","__BROWSER__","PortalProvider","__unstable_elements","elementsProp","_templateObject30","SrOnly","_raf","fn","frameId","_raf2","innerDispose","outerDispose","_isEnterToClickElement","isHTMLAnchorElement","isHTMLButtonElement","isHTMLElement","nodeType","ELEMENT_NODE","nodeName","isHTMLInputElement","isHTMLSelectElement","isHTMLTextAreaElement","_hasFocus","activeElement","isFocusable","tabIndex","getAttribute","rel","attemptFocus","focus","focusFirstDescendant","childNodes","focusLastDescendant","_isScrollable","Element","getComputedStyle","overflowX","overflowY","_templateObject31","ItemWrapper","_templateObject32","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","_templateObject33","BorderPath","path","_templateObject34","ShapePath","_templateObject35","PopoverArrow","xmlns","usePopoverModifiers","allowedAutoPlacements","arrow","arrowElement","constrainSize","fallbackPlacements","margins","matchReferenceWidth","open","preventOverflow","skidding","tether","tetherOffset","detectOverflowOptions","altAxis","boundary","maxSizeModifier","options","phase","requires","modifiersData","maxSize","popper","maxHeight","rects","reference","y","effect","refElement","offsetWidth","getPopoverModifiers","$preventOverflow","_templateObject37","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","_templateObject39","dist","Radio","_excluded23","inputBaseStyle","_templateObject42","inputColorStyle","inputTextSizeStyle","textSize","selectStyle","_templateObject41","_templateObject44","select","IconBox","Select","_excluded24","SelectIcon","Stack","_excluded25","_templateObject45","_templateObject46","Representation","Track","_templateObject48","Thumb","$indeterminate","trackWidth","trackHeight","trackPadding","checkedOffset","indeterminateOffset","$checked","_templateObject50","Switch","_excluded26","InputRoot","_templateObject52","textarea","Presentation","TextArea","_excluded27","CLEAR_BUTTON_BOX_STYLE","attrs","_templateObject53","Prefix","_templateObject54","Suffix","_templateObject55","LeftBox","_templateObject56","RightBox","_templateObject57","RightCard","_templateObject58","TextInput","clearButton","fontSizeProp","onClear","prefix","suffix","_excluded28","$hasClearButton","$hasIcon","$hasIconRight","handleClearMouseDown","event","preventDefault","stopPropagation","handleClearClick","prefixNode","presentationNode","clearButtonBoxPadding","clearButtonPadding","clearButtonProps","clearButtonNode","CloseIcon","onClick","onMouseDown","suffixNode","_templateObject59","Border","_templateObject60","Shape","_templateObject61","TooltipArrow","_templateObject62","Tooltip","fallbackPlacementsProp","_excluded29","isOpen","setIsOpen","handleBlur","handleFocus","handleMouseEnter","handleMouseLeave","handleWindowMouseMove","referenceNode","onBlur","onFocus","onMouseEnter","onMouseLeave","popperNode","_templateObject63","ListBox","_templateObject64","ResultsPopover","_templateObject65","_templateObject66","AnimatedSpinnerIcon","_templateObject67","AutocompleteOption","onSelect","handleClick","handleKeyDown","currentTarget","role","autocompleteReducer","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","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","_templateObject68","ExpandButton","_templateObject69","Breadcrumbs","separator","spaceRaw","_excluded31","setOpen","expandElement","setExpandElement","popoverElement","setPopoverElement","collapse","expand","rawItems","Children","toArray","beforeLength","afterLength","DialogContext","useDialog","background","$position","DialogContainer","_templateObject70","DialogCardRoot","_templateObject71","DialogLayout","_templateObject72","DialogHeader","_templateObject73","DialogContent","_templateObject74","DialogFooter","_templateObject75","DialogCard","__unstable_autoFocus","autoFocus","__unstable_hideCloseButton","hideCloseButton","contentRef","footer","header","onClickOutside","onClose","shadowProp","localContentRef","labelId","showCloseButton","showHeader","setContentRef","Dialog","cardRadius","cardRadiusProp","cardShadow","positionProp","_excluded32","preDivRef","postDivRef","cardRef","cardElement","DialogProvider","contextValue","_templateObject76","Key","_templateObject77","Hotkeys","_excluded33","MenuContext","_isFocusable","_getFocusableElements","_getDOMPath","parentElement","unshift","EMPTY_PATH","useMenuController","originElement","shouldFocus","_setActiveIndex","activeIndexRef","mounted","setActiveIndex","nextActiveIndex","mount","sort","aIndex","bIndex","_sortElements","selectedIndex","focusableElements","focusableLen","focusedIndex","currentIndex","handleItemMouseEnter","handleItemMouseLeave","rafId","_activeIndex","_templateObject78","Menu","focusFirst","focusLast","onEscape","onItemClick","onItemSelect","registerElement","_excluded34","handleRefChange","onItemMouseEnter","onItemMouseLeave","MenuButton","__unstable_disableRestoreFocusOnClose","disableRestoreFocusOnClose","deprecated_boundaryElement","buttonProp","menu","menuProp","deprecated_placement","popoverScheme","deprecated_popoverScheme","deprecated_portal","popoverRadius","deprecated_popoverRadius","deprecated_preventOverflow","setShouldFocus","buttonElement","setButtonElement","menuElements","setChildMenuElements","openRef","handleButtonClick","handleButtonKeyDown","handleMenuClickOutside","handleMenuEscape","relatedTarget","handleItemClick","els","_el","menuProps","onBlurCapture","setButtonRef","popoverProps","MenuDivider","hr","_templateObject79","Selectable","_templateObject80","_templateObject81","useMenu","MenuGroup","_excluded35","shouldFocusRef","withinMenu","setWithinMenu","handleMenuKeyDown","handleChildItemClick","handleMenuMouseEnter","childMenu","ChevronRightIcon","MenuItem","hotkeys","selectedProp","_excluded36","paddingProps","keyframe","_templateObject82","animation","_templateObject83","skeletonStyle","_templateObject84","$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","_templateObject86","TextBox","_templateObject87","Toast","closable","description","_excluded45","cardTone","ToastContext","_templateObject88","ToastContainer","_templateObject89","toastId","ToastProvider","setState","toasts","toastsRef","params","duration","dismiss","timeoutId","prevState","findIndex","t","AnimatePresence","initial","motion","animate","scale","exit","layout","damping","stiffness","useToast","_focusItemElement","TreeContext","Tree","memo","_excluded46","setFocusedElement","itemElements","setItemElements","stateRef","registerItem","path2","newState","setExpanded","itemState","level","focusedKey","itemKey","itemPath","split","pop","parentKey","parentState","prevEl","segments","j","_findPrevItemElement","nextEl","_findNextItemElement","_itemElements","querySelectorAll","useTree","tree","displayName","TreeGroup","_excluded47","li","_templateObject90","_templateObject91","TreeItemBox","$level","ToggleArrowText","_templateObject93","TreeItem","expandedProp","idProp","_excluded48","rootRef","treeitemRef","_id","closest","click","visibility","pointerEvents","ToggleArrowRightIcon"],"mappings":"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"}
|