@sanity/ui 3.0.13 → 3.0.15-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks-cjs/_visual-editing.js +886 -1751
- package/dist/_chunks-cjs/_visual-editing.js.map +1 -1
- package/dist/_chunks-cjs/refractor.js +7 -15
- package/dist/_chunks-cjs/refractor.js.map +1 -1
- package/dist/_chunks-es/_visual-editing.mjs +887 -1753
- package/dist/_chunks-es/_visual-editing.mjs.map +1 -1
- package/dist/_chunks-es/refractor.mjs +6 -15
- package/dist/_chunks-es/refractor.mjs.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +349 -810
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +350 -812
- package/dist/index.mjs.map +1 -1
- package/package.json +27 -41
- package/src/core/components/autocomplete/autocomplete.tsx +10 -14
- package/src/core/components/breadcrumbs/breadcrumbs.tsx +3 -2
- package/src/core/components/dialog/dialog.tsx +10 -14
- package/src/core/components/hotkeys/hotkeys.tsx +2 -2
- package/src/core/components/menu/menuGroup.tsx +2 -2
- package/src/core/components/menu/menuItem.tsx +4 -4
- package/src/core/components/skeleton/skeleton.tsx +2 -2
- package/src/core/components/skeleton/textSkeleton.tsx +5 -6
- package/src/core/hooks/index.ts +1 -1
- package/src/core/hooks/useArrayProp.ts +3 -17
- package/src/core/primitives/avatar/avatar.tsx +14 -16
- package/src/core/primitives/avatar/avatarCounter.tsx +14 -17
- package/src/core/primitives/avatar/avatarStack.tsx +2 -3
- package/src/core/primitives/badge/badge.tsx +3 -3
- package/src/core/primitives/box/box.tsx +26 -26
- package/src/core/primitives/button/button.tsx +11 -12
- package/src/core/primitives/card/card.tsx +8 -8
- package/src/core/primitives/code/code.tsx +8 -2
- package/src/core/primitives/container/container.tsx +2 -2
- package/src/core/primitives/flex/flex.tsx +6 -6
- package/src/core/primitives/grid/grid.tsx +9 -9
- package/src/core/primitives/heading/heading.tsx +3 -3
- package/src/core/primitives/inline/inline.tsx +2 -2
- package/src/core/primitives/kbd/kbd.tsx +2 -2
- package/src/core/primitives/label/label.tsx +3 -3
- package/src/core/primitives/popover/popover.tsx +7 -6
- package/src/core/primitives/select/select.tsx +6 -5
- package/src/core/primitives/stack/stack.tsx +2 -2
- package/src/core/primitives/text/text.tsx +3 -3
- package/src/core/primitives/textArea/textArea.tsx +6 -5
- package/src/core/primitives/textInput/textInput.tsx +6 -5
- package/src/core/primitives/tooltip/tooltip.tsx +3 -2
- package/src/core/utils/layer/layerProvider.tsx +3 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/core/helpers/animation.ts","../src/core/helpers/focus.ts","../src/core/hooks/useClickOutside.ts","../src/core/hooks/useElementRect/useElementRect.ts","../src/core/hooks/useForwardedRef.ts","../src/core/utils/errorBoundary.tsx","../src/core/components/autocomplete/autocomplete.styles.tsx","../src/core/components/autocomplete/autocompleteOption.tsx","../src/core/components/autocomplete/autocompleteReducer.ts","../src/core/components/autocomplete/constants.ts","../src/core/components/autocomplete/autocomplete.tsx","../src/core/components/breadcrumbs/breadcrumbs.styles.ts","../src/core/components/breadcrumbs/breadcrumbs.tsx","../src/core/components/dialog/styles.ts","../src/core/components/dialog/dialogContext.ts","../src/core/components/dialog/useDialog.ts","../src/core/components/dialog/dialog.tsx","../src/core/components/dialog/dialogProvider.tsx","../src/core/components/menu/menuButton.tsx","../src/core/components/skeleton/styles.ts","../src/core/components/skeleton/skeleton.tsx","../src/core/components/skeleton/textSkeleton.tsx","../src/core/components/tab/tabPanel.tsx","../src/core/components/toast/styles.ts","../src/core/components/toast/toast.tsx","../src/core/hooks/useMounted.ts","../src/core/components/toast/toastContext.ts","../src/core/components/toast/toastLayer.tsx","../src/core/components/toast/toastState.ts","../src/core/components/toast/toastProvider.tsx","../src/core/components/toast/useToast.ts","../src/core/components/tree/helpers.ts","../src/core/components/tree/treeContext.ts","../src/core/components/tree/tree.tsx","../src/core/components/tree/style.ts","../src/core/components/tree/useTree.ts","../src/core/components/tree/treeGroup.tsx","../src/core/components/tree/treeItem.tsx"],"sourcesContent":["/**\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","import {\n isHTMLAnchorElement,\n isHTMLButtonElement,\n isHTMLElement,\n isHTMLInputElement,\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","import {useEffect, useRef, useState} from 'react'\n\nimport {EMPTY_ARRAY} from '../constants'\n\n/**\n * @public\n */\nexport type ClickOutsideListener = (event: MouseEvent) => void\n\n/**\n * @public\n */\nexport type ClickOutsideElements = (HTMLElement | null | (HTMLElement | null)[])[]\n\nfunction _getElements(\n element: HTMLElement | null,\n elementsArg: ClickOutsideElements,\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 * @deprecated replaced by the new `useClickOutsideEvent` hook, instead of:\n * ```tsx\n * const [button, setButtonElement] = useState(null)\n * useClickOutside((event) => {}, [button])\n * return <button ref={setButtonElement} />\n * ```\n * do:\n * ```tsx\n * const buttonRef = useRef()\n * useClickOutsideEvent((event) => {}, () => [buttonRef.current])\n * return <button ref={buttonRef} />\n * ```\n */\nexport function useClickOutside(\n listener: ClickOutsideListener,\n elementsArg: ClickOutsideElements = 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 // eslint-disable-next-line react-hooks/set-state-in-effect\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 {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 {useImperativeHandle, useRef} from 'react'\n\n/**\n * @beta\n * @deprecated use `useImperativeHandle` instead\n * @example\n * ```diff\n * -const ref = useForwardedRef(forwardedRef)\n * +const ref = useRef(null)\n * +useImperativeHandle(forwardedRef, () => ref.current)\n * ```\n */\nexport function useForwardedRef<T>(ref: React.ForwardedRef<T>): React.MutableRefObject<T | null> {\n const innerRef = useRef<T | null>(null)\n\n useImperativeHandle(ref, () => innerRef.current!)\n\n return innerRef\n}\n","import {Component, PropsWithChildren} from 'react'\n\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 {SpinnerIcon} from '@sanity/icons'\nimport {keyframes, styled} from 'styled-components'\n\nimport {Box} from '../../primitives'\n\n/**\n * @internal\n */\nexport const StyledAutocomplete = styled.div`\n line-height: 0;\n`\n\n/**\n * @internal\n */\nexport const ListBox = styled(Box)`\n & > ul {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n`\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n`\n\n/**\n * @internal\n */\nexport const AnimatedSpinnerIcon = styled(SpinnerIcon)`\n animation: ${rotate} 500ms linear infinite;\n`\n","import {useCallback} from 'react'\n\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.JSX.Element {\n const {children, id, onSelect, selected, value} = props\n\n const handleClick = useCallback(() => {\n // Calling the `onSelect` in a timeout is a fix to\n // allow the `click` event to propagate in some cases\n setTimeout(() => {\n onSelect(value)\n }, 0)\n }, [onSelect, value])\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLLIElement>) => {\n if (event.key === 'Enter' && !_isEnterToClickElement(event.currentTarget)) {\n handleClick()\n }\n },\n [handleClick],\n )\n\n return (\n <li\n aria-selected={selected}\n data-ui=\"AutocompleteOption\"\n id={id}\n role=\"option\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {children}\n </li>\n )\n}\n","import {AutocompleteMsg, AutocompleteState} from './types'\n\n/**\n * @internal\n */\nexport function autocompleteReducer(\n state: AutocompleteState,\n msg: AutocompleteMsg,\n): AutocompleteState {\n if (msg.type === 'input/change') {\n return {...state, activeValue: null, focused: true, query: msg.query}\n }\n\n if (msg.type === 'input/focus') {\n return {...state, focused: true}\n }\n\n if (msg.type === 'root/blur') {\n return {...state, focused: false, query: null}\n }\n\n if (msg.type === 'root/clear') {\n return {...state, activeValue: null, query: null, value: null}\n }\n\n if (msg.type === 'root/escape') {\n return {...state, focused: false, query: null}\n }\n\n if (msg.type === 'root/open') {\n return {...state, query: state.query || msg.query}\n }\n\n if (msg.type === 'root/setActiveValue') {\n return {...state, activeValue: msg.value, listFocused: msg.listFocused || state.listFocused}\n }\n\n if (msg.type === 'root/setListFocused') {\n return {...state, listFocused: msg.listFocused}\n }\n\n if (msg.type === 'value/change') {\n return {...state, activeValue: msg.value, query: null, value: msg.value}\n }\n\n return state\n}\n","import {Placement} from '../../types'\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_LISTBOX_IGNORE_KEYS = [\n 'Control',\n 'Shift',\n 'Alt',\n 'Enter',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n 'Meta',\n 'Tab',\n 'CapsLock',\n]\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_POPOVER_PLACEMENT: Placement = 'bottom-start'\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS: Placement[] = ['bottom-start', 'top-start']\n","import {ChevronDownIcon} from '@sanity/icons'\nimport {\n ChangeEvent,\n cloneElement,\n ElementType,\n FocusEvent,\n forwardRef,\n HTMLProps,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n Ref,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react'\n\nimport {EMPTY_ARRAY, EMPTY_RECORD} from '../../constants'\nimport {_hasFocus, _raf, focusFirstDescendant} from '../../helpers'\nimport {useArrayProp} from '../../hooks'\nimport {\n Box,\n BoxProps,\n Button,\n Card,\n Popover,\n PopoverProps,\n Stack,\n Text,\n TextInput,\n} from '../../primitives'\nimport {Radius} from '../../types'\nimport {AnimatedSpinnerIcon, ListBox, StyledAutocomplete} from './autocomplete.styles'\nimport {AutocompleteOption} from './autocompleteOption'\nimport {autocompleteReducer} from './autocompleteReducer'\nimport {\n AUTOCOMPLETE_LISTBOX_IGNORE_KEYS,\n AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS,\n AUTOCOMPLETE_POPOVER_PLACEMENT,\n} from './constants'\nimport {AutocompleteOpenButtonProps, BaseAutocompleteOption} from './types'\n\n/**\n * @public\n */\nexport interface AutocompleteProps<Option extends BaseAutocompleteOption = BaseAutocompleteOption> {\n border?: boolean\n customValidity?: string\n filterOption?: (query: string, option: Option) => boolean\n fontSize?: number | number[]\n icon?: ElementType | ReactNode\n id: string\n /** @beta */\n listBox?: BoxProps\n loading?: boolean\n onChange?: (value: string) => void\n onQueryChange?: (query: string | null) => void\n onSelect?: (value: string) => void\n /** @beta */\n openButton?: boolean | AutocompleteOpenButtonProps\n /** @beta */\n openOnFocus?: boolean\n /** The options to render. */\n options?: Option[]\n padding?: number | number[]\n popover?: Omit<PopoverProps, 'content' | 'onMouseEnter' | 'onMouseLeave' | 'open'> &\n Omit<HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content' | 'ref' | 'width'>\n prefix?: ReactNode\n radius?: Radius | Radius[]\n /** @beta */\n relatedElements?: HTMLElement[]\n /** The callback function for rendering each option. */\n renderOption?: (option: Option) => React.JSX.Element\n /** @beta */\n renderPopover?: (\n props: {\n content: React.JSX.Element | null\n hidden: boolean\n inputElement: HTMLInputElement | null\n onMouseEnter: () => void\n onMouseLeave: () => void\n },\n ref: Ref<HTMLDivElement>,\n ) => ReactNode\n renderValue?: (value: string, option?: Option) => string\n suffix?: ReactNode\n /** The current value. */\n value?: string\n}\n\nconst DEFAULT_RENDER_VALUE = (value: string, option?: BaseAutocompleteOption) =>\n option ? option.value : value\n\nconst DEFAULT_FILTER_OPTION = (query: string, option: BaseAutocompleteOption) =>\n option.value.toLowerCase().indexOf(query.toLowerCase()) > -1\n\nconst InnerAutocomplete = forwardRef(function InnerAutocomplete<\n Option extends BaseAutocompleteOption,\n>(\n props: AutocompleteProps<Option> &\n Omit<\n HTMLProps<HTMLInputElement>,\n | 'aria-activedescendant'\n | 'aria-autocomplete'\n | 'aria-expanded'\n | 'aria-owns'\n | 'as'\n | 'autoCapitalize'\n | 'autoComplete'\n | 'autoCorrect'\n | 'id'\n | 'inputMode'\n | 'onChange'\n | 'onSelect'\n | 'popover'\n | 'prefix'\n | 'ref'\n | 'role'\n | 'spellCheck'\n | 'type'\n | 'value'\n >,\n forwardedRef: React.ForwardedRef<HTMLInputElement>,\n) {\n const {\n border = true,\n customValidity,\n disabled,\n filterOption: filterOptionProp,\n fontSize = 2,\n icon,\n id,\n listBox = EMPTY_RECORD,\n loading,\n onBlur,\n onChange,\n onFocus,\n onQueryChange,\n onSelect,\n openButton,\n openOnFocus,\n options: optionsProp,\n padding: paddingProp = 3,\n popover = EMPTY_RECORD,\n prefix,\n radius = 2,\n readOnly,\n relatedElements,\n renderOption: renderOptionProp,\n renderPopover,\n renderValue = DEFAULT_RENDER_VALUE,\n suffix,\n value: valueProp,\n ...restProps\n } = props\n\n const [state, dispatch] = useReducer(autocompleteReducer, {\n activeValue: valueProp || null,\n focused: false,\n listFocused: false,\n query: null,\n value: valueProp || null,\n })\n\n const {activeValue, focused, listFocused, query, value} = state\n\n const defaultRenderOption = useCallback(\n ({value}: BaseAutocompleteOption) => (\n <Card data-as=\"button\" padding={paddingProp} radius={2} tone=\"inherit\">\n <Text size={fontSize} textOverflow=\"ellipsis\">\n {value}\n </Text>\n </Card>\n ),\n [fontSize, paddingProp],\n )\n\n const renderOption =\n typeof renderOptionProp === 'function' ? renderOptionProp : defaultRenderOption\n\n const filterOption =\n typeof filterOptionProp === 'function' ? filterOptionProp : DEFAULT_FILTER_OPTION\n\n // Element refs\n const rootElementRef = useRef<HTMLDivElement | null>(null)\n const resultsPopoverElementRef = useRef<HTMLDivElement | null>(null)\n const inputElementRef = useRef<HTMLInputElement | null>(null)\n const listBoxElementRef = useRef<HTMLDivElement | null>(null)\n // Element refs that need to be accessed during render\n const [inputElement, setInputElement] = useState<HTMLInputElement | null>(null)\n\n // Value refs\n const listFocusedRef = useRef(false)\n const valueRef = useRef(value)\n const valuePropRef = useRef(valueProp)\n const popoverMouseWithinRef = useRef(false)\n\n // Forward inputElement state to inputElementRef\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n inputElementRef,\n () => inputElement,\n [inputElement],\n )\n // Forward inputElement to parent\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => inputElement,\n [inputElement],\n )\n\n const listBoxId = `${id}-listbox`\n const options = Array.isArray(optionsProp) ? optionsProp : EMPTY_ARRAY\n const padding = useArrayProp(paddingProp)\n const currentOption = useMemo(\n () => (value !== null ? options.find((o) => o.value === value) : undefined),\n [options, value],\n )\n const filteredOptions = useMemo(\n () => options.filter((option) => (query ? filterOption(query, option) : true)),\n [filterOption, options, query],\n )\n const filteredOptionsLen = filteredOptions.length\n const activeItemId = activeValue ? `${id}-option-${activeValue}` : undefined\n const expanded = (query !== null && loading) || (focused && query !== null)\n\n const handleRootBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n setTimeout(() => {\n // NOTE: This is a workaround for a bug that may happen in Chrome (clicking the scrollbar\n // closes the results in certain situations):\n // - Do not handle blur if the mouse is within the popover\n if (popoverMouseWithinRef.current) {\n return\n }\n\n const elements: HTMLElement[] = (relatedElements || []).concat(\n rootElementRef.current ? [rootElementRef.current] : [],\n resultsPopoverElementRef.current ? [resultsPopoverElementRef.current] : [],\n )\n\n let focusInside = false\n\n if (document.activeElement) {\n for (const e of elements) {\n if (e === document.activeElement || e.contains(document.activeElement)) {\n focusInside = true\n break\n }\n }\n }\n\n if (focusInside === false) {\n dispatch({type: 'root/blur'})\n popoverMouseWithinRef.current = false\n if (onQueryChange) onQueryChange(null)\n if (onBlur) onBlur(event)\n }\n }, 0)\n },\n [onBlur, onQueryChange, relatedElements],\n )\n\n const handleRootFocus = useCallback((event: FocusEvent<HTMLDivElement>) => {\n const listBoxElement = listBoxElementRef.current\n const focusedElement = event.target instanceof HTMLElement ? event.target : null\n const listFocused = listBoxElement?.contains(focusedElement) || false\n\n if (listFocused !== listFocusedRef.current) {\n listFocusedRef.current = listFocused\n\n dispatch({type: 'root/setListFocused', listFocused})\n }\n }, [])\n\n const handleOptionSelect = useCallback(\n (v: string) => {\n dispatch({type: 'value/change', value: v})\n\n popoverMouseWithinRef.current = false\n\n if (onSelect) onSelect(v)\n\n valueRef.current = v\n\n if (onChange) onChange(v)\n if (onQueryChange) onQueryChange(null)\n\n inputElementRef.current?.focus()\n },\n [onChange, onSelect, onQueryChange],\n )\n\n const handleRootKeyDown = useCallback(\n (event: KeyboardEvent<HTMLElement>) => {\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n\n if (!filteredOptionsLen) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n const activeIndex = activeOption ? filteredOptions.indexOf(activeOption) : -1\n const nextActiveOption = filteredOptions[(activeIndex + 1) % filteredOptionsLen]\n\n if (nextActiveOption) {\n dispatch({type: 'root/setActiveValue', value: nextActiveOption.value, listFocused: true})\n }\n\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n\n if (!filteredOptionsLen) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n const activeIndex = activeOption ? filteredOptions.indexOf(activeOption) : -1\n const nextActiveOption =\n filteredOptions[\n activeIndex === -1\n ? filteredOptionsLen - 1\n : (filteredOptionsLen + activeIndex - 1) % filteredOptionsLen\n ]\n\n if (nextActiveOption) {\n dispatch({type: 'root/setActiveValue', value: nextActiveOption.value, listFocused: true})\n }\n\n return\n }\n\n if (event.key === 'Escape') {\n dispatch({type: 'root/escape'})\n popoverMouseWithinRef.current = false\n if (onQueryChange) onQueryChange(null)\n inputElementRef.current?.focus()\n\n return\n }\n\n const target = event.target as Node\n const listEl = listBoxElementRef.current\n\n if (\n (listEl === target || listEl?.contains(target)) &&\n !AUTOCOMPLETE_LISTBOX_IGNORE_KEYS.includes(event.key)\n ) {\n inputElementRef.current?.focus()\n\n return\n }\n },\n [activeValue, filteredOptions, filteredOptionsLen, onQueryChange],\n )\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const nextQuery = event.currentTarget.value\n\n dispatch({type: 'input/change', query: nextQuery})\n\n if (onQueryChange) onQueryChange(nextQuery)\n },\n [onQueryChange],\n )\n\n const dispatchOpen = useCallback(() => {\n dispatch({\n type: 'root/open',\n query: value ? renderValue(value, currentOption) : '',\n })\n }, [currentOption, renderValue, value])\n\n const handleInputFocus = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (!focused) {\n dispatch({type: 'input/focus'})\n\n if (onFocus) onFocus(event)\n if (openOnFocus) dispatchOpen()\n }\n },\n [focused, onFocus, openOnFocus, dispatchOpen],\n )\n\n const handlePopoverMouseEnter = useCallback(() => {\n popoverMouseWithinRef.current = true\n }, [])\n\n const handlePopoverMouseLeave = useCallback(() => {\n popoverMouseWithinRef.current = false\n }, [])\n\n const handleClearButtonClick = useCallback(() => {\n dispatch({type: 'root/clear'})\n valueRef.current = ''\n if (onChange) onChange('')\n if (onQueryChange) onQueryChange(null)\n inputElementRef.current?.focus()\n }, [onChange, onQueryChange])\n\n const handleClearButtonFocus = useCallback(() => {\n dispatch({type: 'input/focus'})\n }, [])\n\n // Change the value when `value` prop changes\n useEffect(() => {\n // If `valueProp` changed\n if (valueProp !== valuePropRef.current) {\n valuePropRef.current = valueProp\n\n if (valueProp !== undefined) {\n dispatch({type: 'value/change', value: valueProp})\n valueRef.current = valueProp\n }\n\n return\n }\n\n // If `valueProp` is not equal to `value`\n if (valueProp !== valueRef.current) {\n valueRef.current = valueProp || null\n\n dispatch({type: 'value/change', value: valueProp || null})\n }\n }, [valueProp])\n\n // Reset active item when closing\n useEffect(() => {\n if (!focused && valueRef.current) {\n dispatch({type: 'root/setActiveValue', value: valueRef.current})\n }\n }, [focused])\n\n // Focus the selected item\n useEffect(() => {\n const listElement = listBoxElementRef.current\n\n if (!listElement) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n\n if (activeOption) {\n const activeIndex = filteredOptions.indexOf(activeOption)\n const activeItemElement = listElement.childNodes[activeIndex] as HTMLLIElement | undefined\n\n if (activeItemElement) {\n if (_hasFocus(activeItemElement)) {\n // already focused\n return\n }\n\n focusFirstDescendant(activeItemElement)\n }\n }\n }, [activeValue, filteredOptions])\n\n const clearButton = useMemo(() => {\n if (!loading && !disabled && value) {\n return {\n 'aria-label': 'Clear',\n 'onFocus': handleClearButtonFocus,\n }\n }\n\n return undefined\n }, [disabled, handleClearButtonFocus, loading, value])\n\n const openButtonBoxPadding = useMemo(\n () =>\n padding.map((v) => {\n if (v === 0) return 0\n if (v === 1) return 1\n if (v === 2) return 1\n\n return v - 2\n }),\n [padding],\n )\n const openButtonPadding = useMemo(() => padding.map((v) => Math.max(v - 1, 0)), [padding])\n const openButtonProps: AutocompleteOpenButtonProps = useMemo(\n () => (typeof openButton === 'object' ? openButton : EMPTY_RECORD),\n [openButton],\n )\n\n const handleOpenClick = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n dispatchOpen()\n\n if (openButtonProps.onClick) openButtonProps.onClick(event)\n\n _raf(() => inputElementRef.current?.focus())\n },\n [openButtonProps, dispatchOpen],\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 handleListBoxKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n // If the focus is currently in the list, move focus to the input element\n if (event.key === 'Tab') {\n if (listFocused) inputElementRef.current?.focus()\n }\n },\n [listFocused],\n )\n\n const content = useMemo(() => {\n if (filteredOptions.length === 0) return null\n\n return (\n <ListBox\n data-ui=\"AutoComplete__results\"\n onKeyDown={handleListBoxKeyDown}\n padding={1}\n {...listBox}\n tabIndex={-1}\n >\n <Stack\n as=\"ul\"\n aria-multiselectable={false}\n data-ui=\"AutoComplete__resultsList\"\n id={listBoxId}\n ref={listBoxElementRef}\n role=\"listbox\"\n space={1}\n >\n {filteredOptions.map((option) => {\n const active =\n activeValue !== null ? option.value === activeValue : currentOption === option\n\n return (\n <AutocompleteOption\n id={`${id}-option-${option.value}`}\n key={option.value}\n onSelect={handleOptionSelect}\n selected={active}\n value={option.value}\n >\n {cloneElement(renderOption(option), {\n disabled: loading,\n selected: active,\n tabIndex: listFocused && active ? 0 : -1,\n })}\n </AutocompleteOption>\n )\n })}\n </Stack>\n </ListBox>\n )\n }, [\n activeValue,\n currentOption,\n filteredOptions,\n handleOptionSelect,\n handleListBoxKeyDown,\n id,\n listBox,\n listBoxId,\n listFocused,\n loading,\n renderOption,\n ])\n\n const results = useMemo(() => {\n if (renderPopover) {\n return (\n <RenderPopover\n content={content}\n hidden={!expanded}\n inputElement={inputElement}\n onMouseEnter={handlePopoverMouseEnter}\n onMouseLeave={handlePopoverMouseLeave}\n resultsPopoverElementRef={resultsPopoverElementRef}\n renderPopover={renderPopover}\n />\n )\n }\n\n if (filteredOptionsLen === 0) {\n return null\n }\n\n return (\n <Popover\n arrow={false}\n constrainSize\n content={content}\n fallbackPlacements={AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS}\n matchReferenceWidth\n onMouseEnter={handlePopoverMouseEnter}\n onMouseLeave={handlePopoverMouseLeave}\n open={expanded}\n overflow=\"auto\"\n placement={AUTOCOMPLETE_POPOVER_PLACEMENT}\n portal\n radius={radius}\n ref={resultsPopoverElementRef}\n referenceElement={inputElement}\n {...popover}\n />\n )\n }, [\n content,\n expanded,\n filteredOptionsLen,\n handlePopoverMouseEnter,\n handlePopoverMouseLeave,\n inputElement,\n popover,\n radius,\n renderPopover,\n ])\n\n return (\n <StyledAutocomplete\n data-ui=\"Autocomplete\"\n onBlur={handleRootBlur}\n onFocus={handleRootFocus}\n onKeyDown={handleRootKeyDown}\n ref={rootElementRef}\n >\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={setInputElement}\n role=\"combobox\"\n spellCheck={false}\n suffix={suffix || openButtonNode}\n value={inputValue}\n />\n {results}\n </StyledAutocomplete>\n )\n})\n\nfunction RenderPopover({\n renderPopover,\n content,\n hidden,\n inputElement,\n onMouseEnter,\n onMouseLeave,\n resultsPopoverElementRef,\n}: {\n renderPopover: Exclude<AutocompleteProps['renderPopover'], undefined>\n resultsPopoverElementRef: Parameters<Exclude<AutocompleteProps['renderPopover'], undefined>>[1]\n} & Parameters<Exclude<AutocompleteProps['renderPopover'], undefined>>[0]) {\n return renderPopover(\n {\n content,\n hidden,\n inputElement,\n onMouseEnter,\n onMouseLeave,\n },\n resultsPopoverElementRef,\n )\n}\n\nInnerAutocomplete.displayName = 'ForwardRef(Autocomplete)'\n\n/**\n * The Autocomplete component is typically used for search components.\n * It consists of a text input for writing a query, and properties for rendering suggestions.\n *\n * @public\n */\nexport const Autocomplete = InnerAutocomplete as <Option extends BaseAutocompleteOption>(\n props: AutocompleteProps<Option> &\n Omit<\n HTMLProps<HTMLInputElement>,\n | 'aria-activedescendant'\n | 'aria-autocomplete'\n | 'aria-expanded'\n | 'aria-owns'\n | 'as'\n | 'autoCapitalize'\n | 'autoComplete'\n | 'autoCorrect'\n | 'id'\n | 'inputMode'\n | 'onChange'\n | 'onSelect'\n | 'popover'\n | 'prefix'\n | 'ref'\n | 'role'\n | 'spellCheck'\n | 'type'\n | 'value'\n > & {\n ref?: Ref<HTMLInputElement>\n },\n) => React.JSX.Element\n","import {styled} from 'styled-components'\n\nimport {Button} from '../../primitives'\n\nexport const StyledBreadcrumbs = 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 {\n Children,\n forwardRef,\n Fragment,\n isValidElement,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport {useArrayProp, useClickOutsideEvent} from '../../hooks'\nimport {Box, Popover, Stack, Text} from '../../primitives'\nimport {ExpandButton, StyledBreadcrumbs} 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 expandElementRef = useRef<HTMLButtonElement | null>(null)\n const popoverElementRef = useRef<HTMLDivElement | null>(null)\n\n const collapse = useCallback(() => setOpen(false), [])\n const expand = useCallback(() => setOpen(true), [])\n\n useClickOutsideEvent(collapse, () => [expandElementRef.current, popoverElementRef.current])\n\n const rawItems = useMemo(() => Children.toArray(children).filter(isValidElement), [children])\n\n const items = useItems({\n collapse,\n expand,\n expandElementRef,\n maxLength,\n open,\n popoverElementRef,\n rawItems,\n space,\n })\n\n return (\n <StyledBreadcrumbs 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 </StyledBreadcrumbs>\n )\n})\nBreadcrumbs.displayName = 'ForwardRef(Breadcrumbs)'\n\nfunction useItems({\n collapse,\n expand,\n expandElementRef,\n maxLength,\n open,\n popoverElementRef,\n rawItems,\n space,\n}: {\n collapse: () => void\n expand: () => void\n expandElementRef: React.RefObject<HTMLButtonElement | null>\n maxLength: number | undefined\n open: boolean\n popoverElementRef: React.RefObject<HTMLDivElement | null>\n rawItems: React.ReactElement<unknown, string | React.JSXElementConstructor<any>>[]\n space: number[]\n}) {\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={popoverElementRef}\n >\n <ExpandButton\n fontSize={1}\n mode=\"bleed\"\n onClick={open ? collapse : expand}\n padding={1}\n ref={expandElementRef}\n selected={open}\n text=\"…\"\n />\n </Popover>,\n ...rawItems.slice(len - afterLength),\n ]\n }\n\n return rawItems\n}\n","import {CSSObject, getTheme_v2} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\n\nimport {_responsive, ThemeProps} from '../../styles'\nimport {DialogPosition} from '../../types'\n\n/**\n * @internal\n */\nexport interface ResponsiveDialogPositionStyleProps {\n $position: DialogPosition[]\n}\n\nexport function dialogStyle({theme}: ThemeProps): CSSObject {\n const {color} = getTheme_v2(theme)\n\n return {\n '&:not([hidden])': {\n display: 'flex',\n },\n\n 'top': 0,\n 'left': 0,\n 'right': 0,\n 'bottom': 0,\n 'alignItems': 'center',\n 'justifyContent': 'center',\n 'outline': 'none',\n 'background': color.backdrop,\n }\n}\n\nexport function responsiveDialogPositionStyle(\n props: ResponsiveDialogPositionStyleProps & ThemeProps,\n): CSSObject[] {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$position, (position) => ({'&&': {position}}))\n}\n\n/**\n * @internal\n */\nexport interface AnimationDialogStyleProps {\n $animate: boolean\n}\n\nexport function animationDialogStyle(props: AnimationDialogStyleProps): ReturnType<typeof css> {\n if (!props.$animate) return css``\n\n return css`\n @keyframes zoomIn {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n }\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n animation: fadeIn 200ms ease-out;\n // Animates the dialog card.\n & > [data-ui='DialogCard'] {\n animation: zoomIn 200ms ease-out;\n }\n `\n}\n","import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'\nimport {DialogPosition} from '../../types'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface DialogContextValue {\n version: 0.0\n position?: DialogPosition | DialogPosition[]\n zOffset?: number | number[]\n}\n\n/**\n * @internal\n */\nexport const DialogContext = createGlobalScopedContext<DialogContextValue>(\n '@sanity/ui/context/dialog',\n {version: 0.0},\n)\n","import {useContext} from 'react'\n\nimport {DialogContext, DialogContextValue} from './dialogContext'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function useDialog(): DialogContextValue {\n return useContext(DialogContext)\n}\n","import {CloseIcon} from '@sanity/icons'\nimport {ThemeColorSchemeKey} from '@sanity/ui/theme'\nimport {forwardRef, useCallback, useEffect, useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {\n containsOrEqualsElement,\n focusFirstDescendant,\n focusLastDescendant,\n isHTMLElement,\n} from '../../helpers'\nimport {\n useArrayProp,\n useClickOutsideEvent,\n useGlobalKeyDown,\n usePrefersReducedMotion,\n} from '../../hooks'\nimport {Box, Button, Card, Container, Flex, Text} from '../../primitives'\nimport {ResponsivePaddingProps, ResponsiveWidthProps} from '../../primitives/types'\nimport {responsivePaddingStyle, ResponsivePaddingStyleProps} from '../../styles/internal'\nimport {useTheme_v2} from '../../theme'\nimport {DialogPosition, Radius} from '../../types'\nimport {Layer, LayerProps, Portal, useBoundaryElement, useLayer, usePortal} from '../../utils'\nimport {\n animationDialogStyle,\n AnimationDialogStyleProps,\n dialogStyle,\n responsiveDialogPositionStyle,\n ResponsiveDialogPositionStyleProps,\n} from './styles'\nimport {useDialog} from './useDialog'\n\n/**\n * @public\n */\nexport interface DialogProps extends ResponsivePaddingProps, ResponsiveWidthProps {\n /**\n * @beta\n */\n __unstable_autoFocus?: boolean\n /**\n * @beta\n */\n __unstable_hideCloseButton?: boolean\n cardRadius?: Radius | Radius[]\n cardShadow?: number | number[]\n contentRef?: React.ForwardedRef<HTMLDivElement>\n footer?: React.ReactNode\n header?: React.ReactNode\n id: string\n /** A callback that fires when the dialog becomes the top layer when it was not the top layer before. */\n onActivate?: LayerProps['onActivate']\n onClickOutside?: () => void\n onClose?: () => void\n portal?: string\n position?: DialogPosition | DialogPosition[]\n scheme?: ThemeColorSchemeKey\n zOffset?: number | number[]\n /**\n * Whether the dialog should animate in on mount.\n *\n * @beta\n * @defaultValue false\n */\n animate?: boolean\n}\n\ninterface DialogCardProps extends ResponsiveWidthProps {\n /**\n * @beta\n */\n __unstable_autoFocus: boolean\n /**\n * @beta\n */\n __unstable_hideCloseButton: boolean\n children: React.ReactNode\n contentRef?: React.ForwardedRef<HTMLDivElement>\n footer: React.ReactNode\n header: React.ReactNode\n id: string\n onClickOutside?: () => void\n onClose?: () => void\n portal?: string\n radius: Radius | Radius[]\n scheme?: ThemeColorSchemeKey\n shadow: number | number[]\n}\n\nfunction isTargetWithinScope(\n boundaryElement: HTMLElement | null,\n portalElement: HTMLElement | null,\n target: Node,\n): boolean {\n if (!boundaryElement || !portalElement) return true\n\n return (\n containsOrEqualsElement(boundaryElement, target) ||\n containsOrEqualsElement(portalElement, target)\n )\n}\n\nconst StyledDialog = styled(Layer)<\n ResponsiveDialogPositionStyleProps & ResponsivePaddingStyleProps & AnimationDialogStyleProps\n>(responsivePaddingStyle, dialogStyle, responsiveDialogPositionStyle, animationDialogStyle)\n\nconst DialogContainer = styled(Container)`\n &:not([hidden]) {\n display: flex;\n }\n width: 100%;\n height: 100%;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`\n\nconst DialogCardRoot = styled(Card)`\n &:not([hidden]) {\n display: flex;\n }\n width: 100%;\n min-height: 0;\n max-height: 100%;\n overflow: hidden;\n overflow: clip;\n`\n\nconst DialogLayout = styled(Flex)`\n flex: 1;\n min-height: 0;\n width: 100%;\n`\n\nconst DialogHeader = styled(Box)`\n position: relative;\n z-index: 2;\n`\n\nconst DialogContent = styled(Box)`\n position: relative;\n z-index: 1;\n overflow: auto;\n outline: none;\n`\n\nconst DialogFooter = styled(Box)`\n position: relative;\n z-index: 3;\n`\n\nconst DialogCard = forwardRef(function DialogCard(\n props: DialogCardProps,\n forwardedRef: React.ForwardedRef<HTMLDivElement>,\n) {\n const {\n __unstable_autoFocus: autoFocus,\n __unstable_hideCloseButton: hideCloseButton,\n children,\n contentRef: forwardedContentRef,\n footer,\n header,\n id,\n onClickOutside,\n onClose,\n portal: portalProp,\n radius: radiusProp,\n scheme,\n shadow: shadowProp,\n width: widthProp,\n } = props\n const portal = usePortal()\n const portalElement = portalProp ? portal.elements?.[portalProp] || null : portal.element\n const boundaryElement = useBoundaryElement().element\n const radius = useArrayProp(radiusProp)\n const shadow = useArrayProp(shadowProp)\n const width = useArrayProp(widthProp)\n const ref = useRef<HTMLDivElement | null>(null)\n const contentRef = useRef<HTMLDivElement | null>(null)\n const layer = useLayer()\n const {isTopLayer} = layer\n const labelId = `${id}_label`\n const showCloseButton = Boolean(onClose) && hideCloseButton === false\n const showHeader = Boolean(header) || showCloseButton\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(\n forwardedContentRef,\n () => contentRef.current,\n )\n\n useEffect(() => {\n if (!autoFocus) return\n\n // On mount: focus the first focusable element\n if (ref.current) {\n focusFirstDescendant(ref.current)\n }\n }, [autoFocus, ref])\n\n useGlobalKeyDown(\n useCallback(\n (event: KeyboardEvent) => {\n if (!isTopLayer || !onClose) return\n\n const target = document.activeElement\n\n if (target && !isTargetWithinScope(boundaryElement, portalElement, target)) {\n // Ignore key presses when the focused element is outside of scope\n return\n }\n\n if (event.key === 'Escape') {\n event.preventDefault()\n event.stopPropagation()\n onClose()\n }\n },\n [boundaryElement, isTopLayer, onClose, portalElement],\n ),\n )\n\n useClickOutsideEvent(\n isTopLayer &&\n onClickOutside &&\n ((event) => {\n const target = event.target as Node | null\n\n if (target && !isTargetWithinScope(boundaryElement, portalElement, target)) {\n // Ignore clicks outside of the scope\n return\n }\n\n onClickOutside()\n }),\n () => [ref.current],\n )\n\n return (\n <DialogContainer data-ui=\"DialogCard\" width={width}>\n <DialogCardRoot radius={radius} ref={ref} scheme={scheme} shadow={shadow}>\n <DialogLayout direction=\"column\">\n {showHeader && (\n <DialogHeader>\n <Flex align=\"flex-start\" padding={3}>\n <Box flex={1} padding={2}>\n {header && (\n <Text id={labelId} size={1} weight=\"semibold\">\n {header}\n </Text>\n )}\n </Box>\n {showCloseButton && (\n <Box flex=\"none\">\n <Button\n aria-label=\"Close dialog\"\n disabled={!onClose}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onClose}\n padding={2}\n />\n </Box>\n )}\n </Flex>\n </DialogHeader>\n )}\n\n <DialogContent flex={1} ref={contentRef} tabIndex={-1}>\n {children}\n </DialogContent>\n\n {footer && <DialogFooter>{footer}</DialogFooter>}\n </DialogLayout>\n </DialogCardRoot>\n </DialogContainer>\n )\n})\n\nDialogCard.displayName = 'ForwardRef(DialogCard)'\n\n/**\n * The Dialog component.\n *\n * @public\n */\nexport const Dialog = forwardRef(function Dialog(\n props: DialogProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'id' | 'width'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const dialog = useDialog()\n const {layer} = useTheme_v2()\n const {\n __unstable_autoFocus: autoFocus = true,\n __unstable_hideCloseButton: hideCloseButton = false,\n cardRadius: cardRadiusProp = 4,\n cardShadow = 3,\n children,\n contentRef,\n footer,\n header,\n id,\n onActivate,\n onClickOutside,\n onClose,\n onFocus,\n padding: paddingProp = 3,\n portal: portalProp,\n position: _positionProp,\n scheme,\n width: widthProp = 0,\n zOffset: _zOffsetProp,\n animate: _animate = false,\n ...restProps\n } = props\n const positionProp = _positionProp ?? (dialog.position || 'fixed')\n const zOffsetProp = _zOffsetProp ?? (dialog.zOffset || layer.dialog.zOffset)\n const prefersReducedMotion = usePrefersReducedMotion()\n const animate = prefersReducedMotion ? false : _animate\n const portal = usePortal()\n const portalElement = portalProp ? portal.elements?.[portalProp] || null : portal.element\n const boundaryElement = useBoundaryElement().element\n const cardRadius = useArrayProp(cardRadiusProp)\n const padding = useArrayProp(paddingProp)\n const position = useArrayProp(positionProp)\n const width = useArrayProp(widthProp)\n const zOffset = useArrayProp(zOffsetProp)\n const preDivRef = useRef<HTMLDivElement | null>(null)\n const postDivRef = useRef<HTMLDivElement | null>(null)\n const cardRef = useRef<HTMLDivElement | null>(null)\n const focusedElementRef = useRef<HTMLElement | null>(null)\n\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n onFocus?.(event)\n\n const target = event.target\n const cardElement = cardRef.current\n\n if (cardElement && target === preDivRef.current) {\n focusLastDescendant(cardElement)\n\n return\n }\n\n if (cardElement && target === postDivRef.current) {\n focusFirstDescendant(cardElement)\n\n return\n }\n\n if (isHTMLElement(event.target)) {\n focusedElementRef.current = event.target\n }\n },\n [onFocus],\n )\n\n const labelId = `${id}_label`\n\n const rootClickTimeoutRef = useRef<NodeJS.Timeout>(undefined)\n\n // If the resulting active element (a.k.a. focused element) is not withing scope when clicking\n // within the dialog, then we want to focus the previously interactive element in the dialog instead.\n // This is to allow the user to tab or close the dialog by pressing escape.\n const handleRootClick = useCallback(() => {\n if (rootClickTimeoutRef.current) {\n clearTimeout(rootClickTimeoutRef.current)\n }\n\n rootClickTimeoutRef.current = setTimeout(() => {\n const activeElement = document.activeElement\n\n if (activeElement && !isTargetWithinScope(boundaryElement, portalElement, activeElement)) {\n const target = focusedElementRef.current\n\n if (!target || !document.body.contains(target)) {\n // No previously focused element, or it's not in the document anymore\n const cardElement = cardRef.current\n if (cardElement) focusFirstDescendant(cardElement)\n\n return\n }\n\n target.focus()\n }\n }, 0)\n }, [boundaryElement, portalElement])\n\n return (\n <Portal __unstable_name={portalProp}>\n <StyledDialog\n {...restProps}\n $animate={animate}\n $padding={padding}\n $position={position}\n aria-labelledby={labelId}\n aria-modal\n data-ui=\"Dialog\"\n id={id}\n onActivate={onActivate}\n onClick={handleRootClick}\n onFocus={handleFocus}\n ref={ref}\n role=\"dialog\"\n zOffset={zOffset}\n >\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\n <div ref={preDivRef} tabIndex={0} />\n <DialogCard\n __unstable_autoFocus={autoFocus}\n __unstable_hideCloseButton={hideCloseButton}\n contentRef={contentRef}\n footer={footer}\n header={header}\n id={id}\n onClickOutside={onClickOutside}\n onClose={onClose}\n portal={portalProp}\n radius={cardRadius}\n ref={cardRef}\n scheme={scheme}\n shadow={cardShadow}\n width={width}\n >\n {children}\n </DialogCard>\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\n <div ref={postDivRef} tabIndex={0} />\n </StyledDialog>\n </Portal>\n )\n})\nDialog.displayName = 'ForwardRef(Dialog)'\n","import {useMemo} from 'react'\n\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.JSX.Element {\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\nDialogProvider.displayName = 'DialogProvider'\n","import {ThemeColorSchemeKey} from '@sanity/ui/theme'\nimport {\n cloneElement,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport {Popover, PopoverProps} from '../../primitives'\nimport {Placement, Radius} from '../../types'\nimport {MenuProps} from './menu'\n\n/**\n * @public\n */\nexport interface MenuButtonProps {\n /**\n * @beta Do not use in production.\n */\n __unstable_disableRestoreFocusOnClose?: boolean\n /**\n * @deprecated Use `popover={{boundaryElement: element}}` instead.\n */\n boundaryElement?: HTMLElement\n button: React.JSX.Element\n id: string\n menu?: React.JSX.Element\n onClose?: () => void\n onOpen?: () => void\n /**\n * @deprecated Use `popover={{placement: 'top'}}` instead.\n */\n placement?: Placement\n popover?: Omit<PopoverProps, 'content' | 'open'>\n /**\n * @deprecated Use `popover={{scheme: 'dark'}}` instead.\n */\n popoverScheme?: ThemeColorSchemeKey\n /**\n * @deprecated Use `popover={{radius: 2}}` instead.\n */\n popoverRadius?: Radius | Radius[]\n /**\n * @beta Do not use in production.\n * @deprecated Use `popover={{portal: true}}` instead.\n */\n portal?: boolean\n /**\n * @deprecated Use `popover={{preventOverflow: true}}` instead.\n */\n preventOverflow?: boolean\n}\n\n/**\n * The `MenuButton` component follows the WAI-ARIA specification for menu buttons.\n *\n * @public\n */\nexport const MenuButton = forwardRef(function MenuButton(\n props: MenuButtonProps,\n forwardedRef: React.ForwardedRef<HTMLButtonElement | null>,\n) {\n const {\n __unstable_disableRestoreFocusOnClose: disableRestoreFocusOnClose = false,\n boundaryElement: deprecated_boundaryElement,\n button: buttonProp,\n id,\n menu: menuProp,\n onClose,\n onOpen,\n placement: deprecated_placement,\n popoverScheme: deprecated_popoverScheme,\n portal: deprecated_portal = true,\n popover,\n popoverRadius: deprecated_popoverRadius,\n preventOverflow: deprecated_preventOverflow,\n } = props\n const [open, setOpen] = useState(false)\n const [shouldFocus, setShouldFocus] = useState<'first' | 'last' | null>(null)\n const [buttonElement, setButtonElement] = useState<HTMLButtonElement | null>(null)\n const [menuElements, setChildMenuElements] = useState<HTMLElement[]>([])\n const openRef = useRef<boolean>(open)\n\n // Notify consumers when the menu opens\n useEffect(() => {\n if (onOpen && open && !openRef.current) {\n onOpen()\n }\n }, [onOpen, open])\n\n // Notify consumers when the menu closes\n useEffect(() => {\n if (onClose && !open && openRef.current) {\n onClose()\n }\n }, [onClose, open])\n\n useEffect(() => {\n openRef.current = open\n }, [open])\n\n const handleButtonClick = useCallback(() => {\n setOpen((v) => !v)\n setShouldFocus(null)\n }, [])\n\n // Prevent mouse event propagation when the menu is open.\n // This is to ensure that `handleBlur` isn't triggered when clicking the menu button whilst open,\n // which can lead to `setOpen` being triggered multiple times (once by `handleBlur`, and again by `handleButtonClick`).\n const handleMouseDown = useCallback(\n (event: PointerEvent) => {\n if (open) event.preventDefault()\n },\n [open],\n )\n\n const handleButtonKeyDown = useCallback((event: React.KeyboardEvent<HTMLButtonElement>) => {\n // On `ArrowDown`, `Enter` and `Space`\n // - Opens menu and moves focus to first menuitem\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n setOpen(true)\n setShouldFocus('first')\n\n return\n }\n\n // On `ArrowUp`\n // - \tOpens menu and moves focus to last menuitem\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n setOpen(true)\n setShouldFocus('last')\n\n return\n }\n }, [])\n\n const handleMenuClickOutside = useCallback(\n (event: MouseEvent) => {\n const target = event.target\n\n if (!(target instanceof Node)) {\n return\n }\n\n if (buttonElement && (target === buttonElement || buttonElement.contains(target))) {\n return\n }\n\n for (const el of menuElements) {\n if (target === el || el.contains(target)) {\n return\n }\n }\n\n setOpen(false)\n },\n [buttonElement, menuElements],\n )\n\n const handleMenuEscape = useCallback(() => {\n setOpen(false)\n if (disableRestoreFocusOnClose) return\n if (buttonElement) buttonElement.focus()\n }, [buttonElement, disableRestoreFocusOnClose])\n\n const handleBlur = useCallback(\n (event: FocusEvent) => {\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 () => setChildMenuElements((els) => els.filter((_el) => _el !== el))\n }, [])\n\n const menuProps: MenuProps = {\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 const menu = menuProp && cloneElement(menuProp, menuProps)\n\n const button = useMemo(\n () =>\n buttonProp &&\n cloneElement(buttonProp, {\n 'data-ui': 'MenuButton',\n id,\n 'onClick': handleButtonClick,\n 'onKeyDown': handleButtonKeyDown,\n 'onMouseDown': handleMouseDown,\n 'aria-haspopup': true,\n 'aria-expanded': open,\n 'ref': setButtonElement,\n 'selected': buttonProp.props.selected ?? open,\n }),\n [buttonProp, handleButtonClick, handleButtonKeyDown, handleMouseDown, id, open],\n )\n\n // Forward button ref to parent\n useImperativeHandle<HTMLButtonElement | null, HTMLButtonElement | null>(\n forwardedRef,\n () => buttonElement,\n [buttonElement],\n )\n\n const popoverProps: MenuButtonProps['popover'] = useMemo(\n () => ({\n boundaryElement: deprecated_boundaryElement,\n overflow: 'auto',\n placement: deprecated_placement,\n portal: deprecated_portal,\n preventOverflow: deprecated_preventOverflow,\n radius: deprecated_popoverRadius,\n scheme: deprecated_popoverScheme,\n ...(popover || {}),\n }),\n [\n deprecated_boundaryElement,\n deprecated_placement,\n deprecated_popoverRadius,\n deprecated_popoverScheme,\n deprecated_portal,\n deprecated_preventOverflow,\n popover,\n ],\n )\n\n return (\n <Popover data-ui=\"MenuButton__popover\" {...popoverProps} content={menu} open={open}>\n {button || <></>}\n </Popover>\n )\n})\nMenuButton.displayName = 'ForwardRef(MenuButton)'\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'\n\nimport {useArrayProp} from '../../hooks'\nimport {Box, BoxProps, ResponsiveRadiusProps} from '../../primitives'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/internal'\nimport {skeletonStyle} from './styles'\n\nconst StyledSkeleton = styled(Box)<\n {$animated: boolean; $visible: boolean} & ResponsiveRadiusStyleProps\n>(responsiveRadiusStyle, skeletonStyle)\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 undefined\n }\n\n const timeout = setTimeout(() => {\n setVisible(true)\n }, delay)\n\n return () => {\n clearTimeout(timeout)\n }\n }, [delay])\n\n return (\n <StyledSkeleton\n {...restProps}\n $animated={animated}\n $radius={useArrayProp(radius)}\n $visible={delay ? visible : true}\n ref={ref}\n />\n )\n})\nSkeleton.displayName = 'ForwardRef(Skeleton)'\n","import {getTheme_v2, ThemeFontKey} from '@sanity/ui/theme'\nimport {forwardRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {useArrayProp} from '../../hooks'\nimport {_responsive, ThemeProps} from '../../styles'\nimport {Skeleton, SkeletonProps} from './skeleton'\n\nconst StyledSkeleton = styled(Skeleton)<{$size: number[]; $style: ThemeFontKey}>((\n props: {\n $size: number[]\n $style: ThemeFontKey\n } & ThemeProps,\n) => {\n const {$size, $style} = props\n const {font, media} = getTheme_v2(props.theme)\n const fontStyle = font[$style]\n\n const styles = _responsive(media, $size, (sizeIndex) => {\n const fontSize = fontStyle.sizes[sizeIndex]\n const capHeight = fontSize.lineHeight - fontSize.ascenderHeight - fontSize.descenderHeight\n\n return {height: capHeight}\n })\n\n return styles\n})\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface TextSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface LabelSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface HeadingSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface CodeSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const TextSkeleton = forwardRef(function TextSkeleton(\n props: TextSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {size = 2, ...restProps} = props\n const $size = useArrayProp(size)\n\n return <StyledSkeleton {...restProps} $size={$size} ref={ref} $style=\"text\" />\n})\nTextSkeleton.displayName = 'ForwardRef(TextSkeleton)'\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 <StyledSkeleton {...restProps} $size={$size} ref={ref} $style=\"label\" />\n})\nLabelSkeleton.displayName = 'ForwardRef(LabelSkeleton)'\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 <StyledSkeleton {...restProps} $size={$size} ref={ref} $style=\"heading\" />\n})\nHeadingSkeleton.displayName = 'ForwardRef(HeadingSkeleton)'\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 <StyledSkeleton {...restProps} $size={$size} ref={ref} $style=\"code\" />\n})\nCodeSkeleton.displayName = 'ForwardRef(CodeSkeleton)'\n","import {forwardRef} from 'react'\n\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})\nTabPanel.displayName = 'ForwardRef(TabPanel)'\n","import {getTheme_v2, ThemeColorStateToneKey} from '@sanity/ui/theme'\nimport {styled} from 'styled-components'\n\nimport {Card, Flex} from '../../primitives'\nimport type {ButtonTone} from '../../types'\n\nconst LOADING_BAR_HEIGHT = 2\n\nexport const STATUS_CARD_TONE = {\n error: 'critical',\n warning: 'caution',\n success: 'positive',\n info: 'neutral',\n} satisfies {[key: string]: ThemeColorStateToneKey}\n\nexport const BUTTON_TONE = {\n error: 'critical',\n warning: 'caution',\n success: 'positive',\n info: 'neutral',\n} satisfies {[key: string]: ButtonTone}\n\nexport const TextBox = styled(Flex)`\n overflow-x: auto;\n`\n\nexport const StyledToast = styled(Card)`\n pointer-events: all;\n width: 100%;\n position: relative;\n overflow: hidden;\n overflow: clip;\n\n &[data-has-duration] {\n padding-bottom: calc(${LOADING_BAR_HEIGHT}px / 2);\n }\n`\n\nexport const LoadingBar = styled.div`\n display: flex;\n position: absolute;\n bottom: 0px;\n top: 0px;\n left: 0px;\n right: 0px;\n pointer-events: none;\n z-index: -1;\n overflow: hidden;\n overflow: clip;\n background: transparent;\n align-items: flex-end;\n will-change: opacity;\n`\n\nexport const LoadingBarMask = styled(Card)`\n position: absolute;\n top: 0;\n left: -${LOADING_BAR_HEIGHT}px;\n right: -${LOADING_BAR_HEIGHT}px;\n bottom: ${LOADING_BAR_HEIGHT}px;\n z-index: 1;\n`\n\ntype LoadingBarProgressProps = Omit<React.ComponentProps<typeof Card>, 'tone'> & {\n tone: ThemeColorStateToneKey\n}\nexport const LoadingBarProgress = styled<React.ComponentType<LoadingBarProgressProps>>(Card)`\n display: block;\n height: 100%;\n width: 100%;\n transform-origin: 0% 50%;\n background-color: ${(props) => {\n const {color} = getTheme_v2(props.theme)\n\n return color.button.default[props.tone].enabled.bg\n }};\n`\n","import {CloseIcon} from '@sanity/icons'\nimport {motion, type Variant, type Variants} from 'framer-motion'\n\nimport {usePrefersReducedMotion} from '../../hooks/usePrefersReducedMotion'\nimport {Box, Button, Flex, Stack, Text} from '../../primitives'\nimport {\n BUTTON_TONE,\n LoadingBar,\n LoadingBarMask,\n LoadingBarProgress,\n STATUS_CARD_TONE,\n StyledToast,\n TextBox,\n} from './styles'\n\n/**\n * @public\n */\nexport interface ToastProps {\n closable?: boolean\n description?: React.ReactNode\n onClose: () => void\n radius?: number | number[]\n title?: React.ReactNode\n status?: 'error' | 'warning' | 'success' | 'info'\n duration?: number\n updatedAt?: number\n}\n\nconst ROLES = {\n error: 'alert',\n warning: 'alert',\n success: 'alert',\n info: 'alert',\n} as const\n\n// Support pattern used by Sanity Studio, that works around the lack of `duration: Infinity` support in older @sanity/ui versions\n// https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value\nconst LONG_ENOUGH_BUT_NOT_TOO_LONG = 1000 * 60 * 60 * 24 * 24\n\n/**\n * The `Toast` component gives feedback to users when an action has taken place.\n *\n * Toasts can be closed with a close button, or auto-dismiss after a certain timeout.\n *\n * @public\n */\nexport function Toast(\n props: ToastProps &\n Omit<\n React.HTMLProps<HTMLDivElement>,\n | 'as'\n | 'height'\n | 'ref'\n | 'title'\n | 'onAnimationStart'\n | 'onDragStart'\n | 'onDragEnd'\n | 'onDrag'\n >,\n): React.JSX.Element {\n const {\n closable,\n description,\n duration,\n onClose,\n radius = 3,\n title,\n status,\n updatedAt,\n ...restProps\n } = props\n const cardTone = status ? STATUS_CARD_TONE[status] : 'default'\n const buttonTone = status ? BUTTON_TONE[status] : 'default'\n const role = status ? ROLES[status] : 'status'\n\n const prefersReducedMotion = usePrefersReducedMotion()\n\n const visualDuration: number = prefersReducedMotion ? 0 : 0.26\n const transition = visualDuration\n ? {type: 'spring' as const, visualDuration, bounce: 0.25}\n : {duration: 0}\n\n const hasDuration = duration && isFinite(duration) && duration < LONG_ENOUGH_BUT_NOT_TOO_LONG\n const initial: ContainerVariants[] = ['hidden', 'initial']\n const animate: ContainerVariants[] = ['visible', 'slideIn']\n const exit: ContainerVariants[] = ['hidden', 'slideOut']\n\n return (\n <MotionToast\n data-ui=\"Toast\"\n role={role}\n {...restProps}\n data-has-duration={hasDuration ? '' : undefined}\n custom={visualDuration}\n radius={radius}\n shadow={2}\n tone={cardTone}\n forwardedAs=\"li\"\n layout=\"position\"\n variants={container}\n initial={initial}\n animate={animate}\n exit={exit}\n transition={transition}\n >\n <MotionFlex align=\"flex-start\" variants={content} transition={transition}>\n <TextBox flex={1} padding={3}>\n <Stack space={3}>\n {title && (\n <Text size={1} weight=\"medium\">\n {title}\n </Text>\n )}\n {description && (\n <MotionText muted size={1} variants={content} transition={transition}>\n {description}\n </MotionText>\n )}\n </Stack>\n </TextBox>\n\n {closable && (\n <Box padding={1}>\n <Button\n as=\"button\"\n icon={CloseIcon}\n mode=\"bleed\"\n padding={2}\n tone={buttonTone}\n onClick={onClose}\n style={{verticalAlign: 'top'}}\n />\n </Box>\n )}\n </MotionFlex>\n {hasDuration && (\n <MotionLoadingBar variants={content} transition={transition}>\n <LoadingBarMask tone={cardTone} radius={radius} />\n <MotionLoadingBarProgress\n key={`progress-${updatedAt}`}\n tone={cardTone}\n initial={{scaleX: 0}}\n animate={{scaleX: 1}}\n transition={{delay: visualDuration, duration: duration / 1_000, ease: 'linear'}}\n onAnimationComplete={onClose}\n />\n </MotionLoadingBar>\n )}\n </MotionToast>\n )\n}\n\nToast.displayName = 'Toast'\n\nconst container = {\n initial: {y: 32, scale: 0.5, zIndex: 1},\n hidden: {opacity: 0},\n visible: (visualDuration: number) => {\n if (!visualDuration) return {opacity: 1}\n\n return {\n opacity: 1,\n transition: {\n when: 'beforeChildren',\n staggerChildren: visualDuration / 3,\n duration: visualDuration / 3,\n },\n }\n },\n slideIn: {\n y: 0,\n scale: 1,\n },\n slideOut: {\n zIndex: 0,\n scale: 0.75,\n },\n} satisfies Variants\ntype ContainerVariants = keyof typeof container\n\nconst content = {\n initial: {\n willChange: 'transform',\n },\n hidden: {\n opacity: 0,\n },\n visible: {\n opacity: 1,\n },\n} satisfies Partial<Record<ContainerVariants, Variant>>\n\nconst MotionToast = motion.create(StyledToast)\nconst MotionFlex = motion.create(Flex)\nconst MotionText = motion.create(Text)\nconst MotionLoadingBar = motion.create(LoadingBar)\nconst MotionLoadingBarProgress = motion.create(LoadingBarProgress)\n","import {useSyncExternalStore} from 'react'\n\n/**\n * Some components should only render after mounting to the DOM, and not be rendered at all during SSR renderToString or equivalent.\n * @public\n */\nexport function useMounted(): boolean {\n return useSyncExternalStore(\n subscribe,\n () => true,\n () => false,\n )\n}\n\nconst subscribe = () => () => {}\n","import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'\nimport {ToastContextValue} from './types'\n\nexport const ToastContext = createGlobalScopedContext<ToastContextValue | null>(\n '@sanity/ui/context/toast',\n null,\n)\n","import {styled} from 'styled-components'\n\nimport {Grid} from '../../primitives/grid'\nimport {useLayer} from '../../utils'\n\n/**\n * @public\n */\nexport interface ToastLayerProps {\n children: React.ReactNode\n padding?: number | number[]\n paddingX?: number | number[]\n paddingY?: number | number[]\n gap?: number | number[]\n}\n\n/**\n * @internal\n */\nexport function ToastLayer(props: ToastLayerProps): React.JSX.Element {\n const {children, padding = 4, paddingX, paddingY, gap = 3} = props\n const {zIndex} = useLayer()\n\n return (\n <StyledLayer\n forwardedAs=\"ul\"\n data-ui=\"ToastProvider\"\n padding={padding}\n paddingX={paddingX}\n paddingY={paddingY}\n gap={gap}\n columns={1}\n style={{zIndex}}\n >\n {children}\n </StyledLayer>\n )\n}\n\nToastLayer.displayName = 'ToastLayer'\n\nconst StyledLayer = styled(Grid)`\n box-sizing: border-box;\n position: fixed;\n right: 0;\n bottom: 0;\n list-style: none;\n pointer-events: none;\n max-width: 420px;\n width: 100%;\n`\n","let toastId = 0\n\n/** @internal */\nexport function generateToastId(): string {\n return String(toastId++)\n}\n","import {AnimatePresence} from 'framer-motion'\nimport {startTransition, useMemo, useState} from 'react'\n\nimport {useMounted} from '../../hooks/useMounted'\nimport {LayerProvider} from '../../utils'\nimport {Toast} from './toast'\nimport {ToastContext} from './toastContext'\nimport {ToastLayer, type ToastLayerProps} from './toastLayer'\nimport {generateToastId} from './toastState'\nimport {ToastContextValue, ToastParams} from './types'\n\ntype ToastState = {\n dismiss: () => void\n id: string\n updatedAt: number\n params: ToastParams\n}[]\n\n/**\n * @public\n */\nexport interface ToastProviderProps extends Omit<ToastLayerProps, 'children'> {\n children?: React.ReactNode\n zOffset?: number | number[]\n}\n\n/**\n * @public\n */\nexport function ToastProvider(props: ToastProviderProps): React.JSX.Element {\n const {children, padding, paddingX, paddingY, gap, zOffset = 1} = props\n const [state, setState] = useState<ToastState>([])\n const mounted = useMounted()\n\n const value: ToastContextValue = useMemo(() => {\n const push = (params: ToastParams) => {\n const id = params.id || generateToastId()\n const duration = params.duration || 5000\n\n startTransition(() => {\n setState((prevState): ToastState => {\n /**\n * Backwards compatibility for `sanity` patterns workaround a lack of programatically dismissible toasts.\n * It uses a super short duration that closes the toast immediately in previous versions of `@sanity/ui`.\n * We interpret this as a request to dismiss the toast immediately, and remove it from the state right away.\n * Even once we support programatic dismissal we'll need to keep this for backwards compatibility with v2 and v1.\n */\n if (duration === 0.01) {\n return prevState.filter((toast) => toast.id !== id)\n }\n\n /**\n * Creates a function to dismiss this specific toast.\n * This function will be passed to the Toast component\n * and called either on close button click or after duration.\n */\n const dismiss = () =>\n startTransition(() =>\n setState((currentState) => currentState.filter((toast) => toast.id !== id)),\n )\n\n /**\n * Create updated state by:\n * 1. Removing any existing toast with the same ID (prevents duplicates)\n * 2. Adding the new toast with its dismiss handler\n * 3. Updates the `updatedAt` timestamp, which resets progress bar count downs.\n */\n return [\n ...prevState.filter((toast) => toast.id !== id),\n {\n dismiss,\n id,\n updatedAt: Date.now(),\n params: {...params, duration},\n },\n ]\n })\n })\n\n return id\n }\n\n return {version: 0.0, push}\n }, [])\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n {mounted && (\n <LayerProvider zOffset={zOffset}>\n <ToastLayer padding={padding} paddingX={paddingX} paddingY={paddingY} gap={gap}>\n <AnimatePresence initial={false} mode=\"popLayout\">\n {state.map(({dismiss, id, params, updatedAt}) => (\n <Toast\n key={id}\n closable={params.closable}\n description={params.description}\n onClose={dismiss}\n status={params.status}\n title={params.title}\n duration={params.duration}\n updatedAt={updatedAt}\n />\n ))}\n </AnimatePresence>\n </ToastLayer>\n </LayerProvider>\n )}\n </ToastContext.Provider>\n )\n}\n\nToastProvider.displayName = 'ToastProvider'\n","import {useContext} from 'react'\n\nimport {isRecord} from '../../lib/isRecord'\nimport {ToastContext} from './toastContext'\nimport {ToastContextValue} from './types'\n\n/**\n * @public\n */\nexport function useToast(): ToastContextValue {\n const value = useContext(ToastContext)\n\n if (!value) {\n throw new Error('useToast(): missing context value')\n }\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (!isRecord(value) || value.version !== 0.0) {\n throw new Error('useToast(): the context value is not compatible')\n }\n\n return value\n}\n","import {TreeState} from './types'\n\nexport function _findPrevItemElement(\n state: TreeState,\n itemElements: HTMLElement[],\n focusedElement: HTMLElement,\n): HTMLElement | null {\n const idx = itemElements.indexOf(focusedElement)\n const els = itemElements.slice(0, idx)\n const len = els.length\n\n for (let i = len - 1; i >= 0; i -= 1) {\n const itemKey = els[i].getAttribute('data-tree-key')\n\n if (!itemKey) {\n continue\n }\n\n const segments = itemKey.split('/')\n\n segments.pop()\n\n const p: string[] = []\n\n let expanded = true\n\n for (let j = 0; j < segments.length; j += 1) {\n p.push(segments[j])\n\n const k = p.join('/')\n\n if (!state[k]?.expanded) {\n expanded = false\n break\n }\n }\n\n if (expanded) {\n return els[i]\n }\n }\n\n return null\n}\n\nexport function _findNextItemElement(\n state: TreeState,\n itemElements: HTMLElement[],\n focusedElement: HTMLElement,\n): HTMLElement | null {\n const idx = itemElements.indexOf(focusedElement)\n const els = itemElements.slice(idx)\n const len = itemElements.length\n\n for (let i = 1; i < len; i += 1) {\n if (!els[i]) {\n continue\n }\n\n const itemKey = els[i].getAttribute('data-tree-key')\n\n if (!itemKey) {\n continue\n }\n\n const segments = itemKey.split('/')\n\n segments.pop()\n\n const p: string[] = []\n\n let expanded = true\n\n for (let j = 0; j < segments.length; j += 1) {\n p.push(segments[j])\n\n const k = p.join('/')\n\n if (!state[k]?.expanded) {\n expanded = false\n break\n }\n }\n\n if (expanded) {\n return els[i]\n }\n }\n\n return null\n}\n\nexport function _focusItemElement(el: HTMLElement): void {\n if (el.getAttribute('role') === 'treeitem') {\n el.focus()\n }\n\n if (el.getAttribute('role') === 'none') {\n const firstChild = el.firstChild\n\n if (firstChild && firstChild instanceof HTMLElement) {\n firstChild.focus()\n }\n }\n}\n","import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'\nimport {TreeContextValue} from './types'\n\n/**\n * @internal\n */\nexport const TreeContext = createGlobalScopedContext<TreeContextValue | null>(\n '@sanity/ui/context/tree',\n null,\n)\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\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 = forwardRef(function Tree(\n props: TreeProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'align' | 'as' | 'height' | 'ref' | 'role' | 'wrap'>,\n forwardedRef: React.ForwardedRef<HTMLDivElement>,\n): React.JSX.Element {\n const {children, space = 1, onFocus, ...restProps} = props\n const ref = useRef<HTMLDivElement | null>(null)\n const [focusedElement, setFocusedElement] = useState<HTMLElement | null>(null)\n const focusedElementRef = useRef(focusedElement)\n const path: string[] = useMemo(() => [], [])\n const [itemElements, setItemElements] = useState<HTMLElement[]>([])\n const [state, setState] = useState<TreeState>({})\n const stateRef = useRef(state)\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n\n useEffect(() => {\n focusedElementRef.current = focusedElement\n }, [focusedElement])\n\n useEffect(() => {\n stateRef.current = state\n }, [state])\n\n const registerItem = useCallback(\n (element: HTMLElement, path: string, expanded: boolean, selected: boolean) => {\n setState((s) => ({...s, [path]: {element, expanded}}))\n\n if (selected) {\n setFocusedElement(element)\n }\n\n return () => {\n setState((s) => {\n const newState = {...s}\n\n delete newState[path]\n\n return newState\n })\n }\n },\n [],\n )\n\n const setExpanded = useCallback((path: string, expanded: boolean) => {\n setState((s) => {\n const itemState = s[path]\n\n if (!itemState) return s\n\n return {...s, [path]: {...itemState, expanded}}\n })\n }, [])\n\n const contextValue: TreeContextValue = useMemo(\n () => ({\n version: 0.0,\n focusedElement: focusedElement || itemElements[0] || null,\n level: 0,\n path,\n registerItem,\n setExpanded,\n setFocusedElement,\n space,\n state,\n }),\n [focusedElement, itemElements, path, registerItem, setExpanded, space, state],\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!focusedElementRef.current) return\n\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n\n const nextEl = _findNextItemElement(\n stateRef.current,\n itemElements,\n focusedElementRef.current,\n )\n\n if (nextEl) {\n _focusItemElement(nextEl)\n setFocusedElement(nextEl)\n }\n\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n\n const prevEl = _findPrevItemElement(\n stateRef.current,\n itemElements,\n focusedElementRef.current,\n )\n\n if (prevEl) {\n _focusItemElement(prevEl)\n setFocusedElement(prevEl)\n }\n\n return\n }\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault()\n\n const itemKey = focusedElementRef.current.getAttribute('data-tree-key')\n\n if (!itemKey) return\n\n const itemState = stateRef.current[itemKey]\n\n if (!itemState) return\n\n if (itemState.expanded) {\n setState((s) => {\n const itemState = s[itemKey]\n\n if (!itemState) return s\n\n return {...s, [itemKey]: {...itemState, expanded: false}}\n })\n } else {\n const itemPath = itemKey.split('/')\n\n itemPath.pop()\n\n const parentKey = itemPath.join('/')\n const parentState = parentKey && stateRef.current[parentKey]\n\n if (parentState) {\n parentState.element.focus()\n setFocusedElement(parentState.element)\n }\n }\n\n return\n }\n\n if (event.key === 'ArrowRight') {\n event.preventDefault()\n\n const focusedKey = focusedElementRef.current.getAttribute('data-tree-key')\n\n if (!focusedKey) return\n\n if (!stateRef.current[focusedKey]?.expanded) {\n setState((s) => {\n const itemState = s[focusedKey]\n\n if (!itemState) return s\n\n return {...s, [focusedKey]: {...itemState, expanded: true}}\n })\n }\n\n return\n }\n },\n [itemElements],\n )\n\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n setFocusedElement(event.target)\n\n // Call the element's `focus` handler\n onFocus?.(event)\n },\n [onFocus],\n )\n\n useEffect(() => {\n if (!ref.current) return\n const _itemElements = Array.from(\n ref.current.querySelectorAll('[data-ui=\"TreeItem\"]'),\n ) as HTMLElement[]\n\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setItemElements(_itemElements)\n }, [children])\n\n return (\n <TreeContext.Provider value={contextValue}>\n <Stack\n as=\"ul\"\n data-ui=\"Tree\"\n {...restProps}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n ref={ref}\n role=\"tree\"\n space={space}\n >\n {children}\n </Stack>\n </TreeContext.Provider>\n )\n})\nTree.displayName = 'ForwardRef(Tree)'\n","import {getTheme_v2} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\n\nimport {rem, ThemeProps} from '../../styles'\nimport {_cardColorStyle} from '../../styles/card'\n\nexport function treeItemRootStyle(): ReturnType<typeof css> {\n return css`\n &[role='none'] > [role='treeitem'] {\n outline: none;\n cursor: default;\n border-radius: 3px;\n\n background-color: var(--card-bg-color);\n color: var(--treeitem-fg-color);\n\n &:focus {\n position: relative;\n }\n }\n\n &[role='treeitem'] {\n outline: none;\n\n & > div {\n cursor: default;\n border-radius: 3px;\n\n background-color: var(--card-bg-color);\n color: var(--treeitem-fg-color);\n }\n\n &:focus > div {\n position: relative;\n }\n }\n `\n}\n\nexport function treeItemRootColorStyle(props: ThemeProps): ReturnType<typeof css> {\n const $tone = 'default'\n const {color} = getTheme_v2(props.theme)\n const tone = color.selectable[$tone]\n\n return css`\n &[role='none'] {\n & > [role='treeitem'] {\n ${_cardColorStyle(color, tone.enabled)}\n }\n\n &[data-selected] > [role='treeitem'] {\n ${_cardColorStyle(color, tone.pressed)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) > [role='treeitem']:not(:focus):hover {\n ${_cardColorStyle(color, tone.hovered)}\n }\n\n & > [role='treeitem']:focus {\n ${_cardColorStyle(color, tone.selected)}\n }\n }\n }\n\n &[role='treeitem'] {\n & > [data-ui='TreeItem__box'] {\n ${_cardColorStyle(color, tone.enabled)}\n }\n\n &[data-selected] > [data-ui='TreeItem__box'] {\n ${_cardColorStyle(color, tone.pressed)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]):not(:focus) > [data-ui='TreeItem__box']:hover {\n ${_cardColorStyle(color, tone.hovered)}\n }\n\n &:focus > [data-ui='TreeItem__box'] {\n ${_cardColorStyle(color, tone.selected)}\n }\n }\n }\n `\n}\n\nexport interface TreeItemBoxStyleProps {\n $level: number\n}\n\nexport function treeItemBoxStyle(\n props: TreeItemBoxStyleProps & ThemeProps,\n): ReturnType<typeof css> {\n const {$level} = props\n const {space} = getTheme_v2(props.theme)\n\n return css`\n padding-left: ${rem(space[2] * $level)};\n\n &[data-as='a'] {\n text-decoration: none;\n }\n `\n}\n","import {useContext} from 'react'\n\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 {Stack} from '../../primitives'\nimport {useTree} from './useTree'\n\nexport interface TreeGroupProps {\n expanded?: boolean\n}\n\nexport function TreeGroup(\n props: TreeGroupProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'role' | 'wrap'>,\n): React.JSX.Element {\n const {children, expanded = false, ...restProps} = props\n const tree = useTree()\n\n return (\n <Stack\n as=\"ul\"\n data-ui=\"TreeGroup\"\n {...restProps}\n hidden={!expanded}\n marginTop={tree.space}\n role=\"group\"\n space={tree.space}\n >\n {children}\n </Stack>\n )\n}\n","import {ToggleArrowRightIcon} from '@sanity/icons'\nimport {ThemeFontWeightKey} from '@sanity/ui/theme'\nimport {useCallback, useEffect, useId, useMemo, useRef, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Box, BoxProps, Flex, Text} from '../../primitives'\nimport {\n treeItemBoxStyle,\n TreeItemBoxStyleProps,\n treeItemRootColorStyle,\n treeItemRootStyle,\n} from './style'\nimport {TreeContext} from './treeContext'\nimport {TreeGroup} from './treeGroup'\nimport {useTree} from './useTree'\n\n/**\n * @beta\n */\nexport interface TreeItemProps {\n expanded?: boolean\n fontSize?: number | number[]\n icon?: React.ElementType\n /**\n * Allows passing a custom element type to the link component\n */\n linkAs?: BoxProps['as']\n padding?: number | number[]\n space?: number | number[]\n text?: React.ReactNode\n weight?: ThemeFontWeightKey\n}\n\nconst StyledTreeItem = 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 function TreeItem(\n props: TreeItemProps & Omit<React.HTMLProps<HTMLLIElement>, 'as' | 'ref' | 'role'>,\n): React.JSX.Element {\n const {\n children,\n expanded: expandedProp = false,\n fontSize = 1,\n href,\n icon: IconComponent,\n id: idProp,\n linkAs,\n muted,\n onClick,\n padding = 2,\n selected = false,\n space = 2,\n text,\n weight,\n ...restProps\n } = props\n const [rootElement, setRootElement] = useState<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, itemKey] = useMemo(() => {\n const itemPath = path.concat([id || ''])\n return [itemPath, itemPath.join('/')]\n }, [id, path])\n const itemState = tree.state[itemKey]\n const focused = tree.focusedElement === rootElement\n const expanded = itemState?.expanded === undefined ? expandedProp : itemState?.expanded || false\n const tabIndex = tree.focusedElement && tree.focusedElement === rootElement ? 0 : -1\n const contextValue = useMemo(\n () => ({...tree, level: tree.level + 1, path: itemPath}),\n [itemPath, tree],\n )\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLLIElement>) => {\n if (onClick) onClick(event)\n\n const target = event.target\n\n if (\n target instanceof HTMLElement &&\n (target.getAttribute('data-ui') === 'TreeItem' ||\n target.closest('[data-ui=\"TreeItem__box\"]'))\n ) {\n event.stopPropagation()\n setExpanded(itemKey, !expanded)\n setFocusedElement(rootElement)\n }\n },\n [expanded, itemKey, onClick, rootElement, setExpanded, setFocusedElement],\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLElement>) => {\n if (focused && event.key === 'Enter') {\n const el = treeitemRef.current || rootElement\n\n el?.click()\n }\n },\n [focused, rootElement],\n )\n\n useEffect(() => {\n if (!rootElement) return\n\n return registerItem(rootElement, itemKey, expanded, selected)\n }, [expanded, itemKey, registerItem, rootElement, selected])\n\n const content = (\n <Flex padding={padding}>\n <Box\n marginRight={space}\n style={{\n visibility: IconComponent || children ? 'visible' : 'hidden',\n pointerEvents: 'none',\n }}\n >\n {IconComponent && (\n <Text muted={muted} size={fontSize} weight={weight}>\n <IconComponent />\n </Text>\n )}\n {!IconComponent && (\n <ToggleArrowText muted={muted} size={fontSize} weight={weight}>\n <ToggleArrowRightIcon style={{transform: expanded ? 'rotate(90deg)' : undefined}} />\n </ToggleArrowText>\n )}\n </Box>\n <Box flex={1}>\n <Text muted={muted} size={fontSize} textOverflow=\"ellipsis\" weight={weight}>\n {text}\n </Text>\n </Box>\n </Flex>\n )\n\n if (href) {\n return (\n <StyledTreeItem\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={setRootElement}\n role=\"none\"\n >\n <TreeItemBox\n $level={tree.level}\n aria-expanded={expanded}\n as={linkAs}\n data-ui=\"TreeItem__box\"\n href={href}\n ref={treeitemRef}\n role=\"treeitem\"\n tabIndex={tabIndex}\n >\n {content}\n </TreeItemBox>\n\n <TreeContext.Provider value={contextValue}>\n {children && <TreeGroup hidden={!expanded}>{children}</TreeGroup>}\n </TreeContext.Provider>\n </StyledTreeItem>\n )\n }\n\n return (\n <StyledTreeItem\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={setRootElement}\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 </StyledTreeItem>\n )\n}\nTreeItem.displayName = 'TreeItem'\n"],"names":["_raf","fn","frameId","requestAnimationFrame","cancelAnimationFrame","_raf2","innerDispose","outerDispose","_hasFocus","element","Boolean","document","activeElement","contains","isFocusable","tabIndex","getAttribute","isHTMLAnchorElement","href","rel","isHTMLInputElement","type","disabled","isHTMLButtonElement","isHTMLSelectElement","isHTMLTextAreaElement","attemptFocus","focus","focusFirstDescendant","i","childNodes","length","child","isHTMLElement","focusLastDescendant","_getElements","elementsArg","ret","el","Array","isArray","push","filter","useClickOutside","listener","t0","boundaryElement","$","_c","undefined","EMPTY_ARRAY","setElement","useState","t1","elements","setElements","elementsRef","useRef","t2","t3","prevElements","current","nextElements","includes","el_0","useEffect","t4","t5","handleWindowMouseDown","evt","target","Node","el_1","window","addEventListener","removeEventListener","useElementRect","useElementSize","_contentRect","useForwardedRef","ref","innerRef","Symbol","for","useImperativeHandle","ErrorBoundary","Component","state","error","getDerivedStateFromError","componentDidCatch","info","props","onCatch","render","message","jsx","Code","children","StyledAutocomplete","styled","div","withConfig","displayName","componentId","ListBox","Box","rotate","keyframes","AnimatedSpinnerIcon","SpinnerIcon","AutocompleteOption","id","onSelect","selected","value","setTimeout","handleClick","event","key","_isEnterToClickElement","currentTarget","handleKeyDown","autocompleteReducer","msg","activeValue","focused","query","listFocused","AUTOCOMPLETE_LISTBOX_IGNORE_KEYS","AUTOCOMPLETE_POPOVER_PLACEMENT","AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS","DEFAULT_RENDER_VALUE","option","DEFAULT_FILTER_OPTION","toLowerCase","indexOf","InnerAutocomplete","forwardRef","forwardedRef","customValidity","filterOptionProp","icon","loading","onBlur","onChange","onFocus","onQueryChange","openButton","openOnFocus","optionsProp","prefix","readOnly","relatedElements","renderOptionProp","renderPopover","restProps","suffix","t6","valueProp","border","filterOption","fontSize","listBox","options","padding","popover","radius","renderOption","renderValue","EMPTY_RECORD","paddingProp","t7","t8","t9","dispatch","useReducer","t10","t11","value_0","Card","Text","rootElementRef","resultsPopoverElementRef","inputElementRef","listBoxElementRef","inputElement","setInputElement","listFocusedRef","valueRef","valuePropRef","popoverMouseWithinRef","t12","t13","t14","listBoxId","useArrayProp","t15","find","o","currentOption","t16","t17","filteredOptions","filteredOptionsLen","activeItemId","expanded","concat","focusInside","e","handleRootBlur","t18","event_0","listBoxElement","focusedElement","HTMLElement","listFocused_0","handleRootFocus","t19","v","handleOptionSelect","t20","event_1","preventDefault","activeOption","o_0","activeIndex","nextActiveOption","activeOption_0","o_1","activeIndex_0","nextActiveOption_0","listEl","handleRootKeyDown","t21","event_2","nextQuery","handleInputChange","t22","dispatchOpen","t23","event_3","handleInputFocus","t24","handlePopoverMouseEnter","t25","handlePopoverMouseLeave","t26","handleClearButtonClick","t27","handleClearButtonFocus","t28","t29","t30","t31","t32","t33","listElement","activeOption_1","o_2","activeIndex_1","activeItemElement","t34","bb0","t35","clearButton","map","_temp","openButtonBoxPadding","t36","_temp2","openButtonPadding","openButtonProps","t37","event_4","onClick","handleOpenClick","t38","Button","ChevronDownIcon","openButtonNode","t39","bb1","t40","inputValue","event_5","handleListBoxKeyDown","t41","bb2","t42","t43","option_0","active","cloneElement","Stack","t44","content","bb3","Popover","results","t45","TextInput","t46","jsxs","RenderPopover","hidden","onMouseEnter","onMouseLeave","Autocomplete","v_0","v_1","Math","max","StyledBreadcrumbs","ol","ExpandButton","Breadcrumbs","maxLength","separator","space","open","setOpen","expandElementRef","popoverElementRef","collapse","expand","useClickOutsideEvent","Children","toArray","isValidElement","rawItems","items","useItems","item","itemIndex","Fragment","len","beforeLength","ceil","afterLength","floor","slice","dialogStyle","theme","color","getTheme_v2","display","backdrop","responsiveDialogPositionStyle","media","_responsive","$position","position","animationDialogStyle","$animate","css","DialogContext","createGlobalScopedContext","version","useDialog","useContext","isTargetWithinScope","portalElement","containsOrEqualsElement","StyledDialog","Layer","responsivePaddingStyle","DialogContainer","Container","DialogCardRoot","DialogLayout","Flex","DialogHeader","DialogContent","DialogFooter","DialogCard","__unstable_autoFocus","autoFocus","__unstable_hideCloseButton","hideCloseButton","contentRef","forwardedContentRef","footer","header","onClickOutside","onClose","portal","portalProp","radiusProp","scheme","shadow","shadowProp","width","widthProp","usePortal","useBoundaryElement","layer","useLayer","isTopLayer","labelId","showCloseButton","showHeader","stopPropagation","useGlobalKeyDown","target_0","CloseIcon","Dialog","dialog","useTheme_v2","_positionProp","_zOffsetProp","onActivate","cardRadius","cardShadow","zOffset","animate","cardRadiusProp","_animate","positionProp","zOffsetProp","usePrefersReducedMotion","preDivRef","postDivRef","cardRef","focusedElementRef","cardElement","handleFocus","rootClickTimeoutRef","clearTimeout","body","cardElement_0","handleRootClick","Portal","DialogProvider","contextValue","MenuButton","__unstable_disableRestoreFocusOnClose","deprecated_boundaryElement","button","buttonProp","menu","menuProp","onOpen","placement","deprecated_placement","popoverScheme","deprecated_popoverScheme","popoverRadius","deprecated_popoverRadius","preventOverflow","deprecated_preventOverflow","disableRestoreFocusOnClose","deprecated_portal","shouldFocus","setShouldFocus","buttonElement","setButtonElement","menuElements","setChildMenuElements","openRef","handleButtonClick","handleMouseDown","handleButtonKeyDown","handleMenuClickOutside","handleMenuEscape","relatedTarget","handleBlur","handleItemClick","els","els_0","_el","registerElement","overflow","popoverProps","keyframe","animation","skeletonStyle","$visible","$animated","StyledSkeleton","responsiveRadiusStyle","Skeleton","delay","animated","visible","setVisible","timeout","$size","$style","font","fontStyle","sizeIndex","sizes","height","lineHeight","ascenderHeight","descenderHeight","TextSkeleton","size","LabelSkeleton","HeadingSkeleton","CodeSkeleton","TabPanel","flex","LOADING_BAR_HEIGHT","STATUS_CARD_TONE","warning","success","BUTTON_TONE","TextBox","StyledToast","LoadingBar","LoadingBarMask","LoadingBarProgress","default","tone","enabled","bg","ROLES","LONG_ENOUGH_BUT_NOT_TOO_LONG","Toast","closable","description","duration","status","title","updatedAt","cardTone","buttonTone","role","visualDuration","bounce","transition","hasDuration","isFinite","initial","exit","verticalAlign","scaleX","ease","container","y","scale","zIndex","opacity","when","staggerChildren","slideIn","slideOut","willChange","MotionToast","motion","create","MotionFlex","MotionText","MotionLoadingBar","MotionLoadingBarProgress","useMounted","useSyncExternalStore","subscribe","ToastContext","ToastLayer","paddingX","paddingY","gap","StyledLayer","Grid","toastId","generateToastId","String","ToastProvider","setState","mounted","params","startTransition","prevState","toast","dismiss","currentState","toast_0","toast_1","Date","now","LayerProvider","AnimatePresence","dismiss_0","id_0","params_0","useToast","Error","isRecord","_findPrevItemElement","itemElements","idx","itemKey","segments","split","pop","p","j","k","join","_findNextItemElement","_focusItemElement","firstChild","TreeContext","Tree","setFocusedElement","path","setItemElements","stateRef","path_0","s","s_0","newState","registerItem","path_1","expanded_0","s_1","itemState","setExpanded","level","nextEl","prevEl","itemState_0","s_2","itemState_1","itemPath","parentKey","parentState","focusedKey","s_3","itemState_2","_itemElements","from","querySelectorAll","treeItemRootStyle","treeItemRootColorStyle","$tone","selectable","_cardColorStyle","pressed","hovered","treeItemBoxStyle","$level","rem","useTree","tree","TreeGroup","StyledTreeItem","li","TreeItemBox","attrs","forwardedAs","ToggleArrowText","TreeItem","IconComponent","idProp","linkAs","muted","text","weight","expandedProp","rootElement","setRootElement","treeitemRef","_id","useId","itemPath_0","closest","click","visibility","pointerEvents","ToggleArrowRightIcon","transform"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/core/helpers/animation.ts","../src/core/helpers/focus.ts","../src/core/hooks/useArrayProp.ts","../src/core/hooks/useClickOutside.ts","../src/core/hooks/useElementRect/useElementRect.ts","../src/core/hooks/useForwardedRef.ts","../src/core/utils/errorBoundary.tsx","../src/core/components/autocomplete/autocomplete.styles.tsx","../src/core/components/autocomplete/autocompleteOption.tsx","../src/core/components/autocomplete/autocompleteReducer.ts","../src/core/components/autocomplete/constants.ts","../src/core/components/autocomplete/autocomplete.tsx","../src/core/components/breadcrumbs/breadcrumbs.styles.ts","../src/core/components/breadcrumbs/breadcrumbs.tsx","../src/core/components/dialog/styles.ts","../src/core/components/dialog/dialogContext.ts","../src/core/components/dialog/useDialog.ts","../src/core/components/dialog/dialog.tsx","../src/core/components/dialog/dialogProvider.tsx","../src/core/components/menu/menuButton.tsx","../src/core/components/skeleton/styles.ts","../src/core/components/skeleton/skeleton.tsx","../src/core/components/skeleton/textSkeleton.tsx","../src/core/components/tab/tabPanel.tsx","../src/core/components/toast/styles.ts","../src/core/components/toast/toast.tsx","../src/core/hooks/useMounted.ts","../src/core/components/toast/toastContext.ts","../src/core/components/toast/toastLayer.tsx","../src/core/components/toast/toastState.ts","../src/core/components/toast/toastProvider.tsx","../src/core/components/toast/useToast.ts","../src/core/components/tree/helpers.ts","../src/core/components/tree/treeContext.ts","../src/core/components/tree/tree.tsx","../src/core/components/tree/style.ts","../src/core/components/tree/useTree.ts","../src/core/components/tree/treeGroup.tsx","../src/core/components/tree/treeItem.tsx"],"sourcesContent":["/**\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","import {\n isHTMLAnchorElement,\n isHTMLButtonElement,\n isHTMLElement,\n isHTMLInputElement,\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","import {useMemo} from 'react'\n\nimport {_getArrayProp} from '../styles'\n\n/** @beta */\nexport type ArrayPropPrimitive = string | number | boolean | undefined | null\n\n/**\n * @deprecated instead of `useArrayProp(width)` use `Array.isArray(width) ? width : [width]` instead\n * @beta\n */\nexport function useArrayProp<T extends ArrayPropPrimitive = ArrayPropPrimitive>(\n val: T | T[] | undefined,\n defaultVal?: T[],\n): T[] {\n return useMemo(() => _getArrayProp(val, defaultVal), [val, defaultVal])\n}\n","import {useEffect, useRef, useState} from 'react'\n\nimport {EMPTY_ARRAY} from '../constants'\n\n/**\n * @public\n */\nexport type ClickOutsideListener = (event: MouseEvent) => void\n\n/**\n * @public\n */\nexport type ClickOutsideElements = (HTMLElement | null | (HTMLElement | null)[])[]\n\nfunction _getElements(\n element: HTMLElement | null,\n elementsArg: ClickOutsideElements,\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 * @deprecated replaced by the new `useClickOutsideEvent` hook, instead of:\n * ```tsx\n * const [button, setButtonElement] = useState(null)\n * useClickOutside((event) => {}, [button])\n * return <button ref={setButtonElement} />\n * ```\n * do:\n * ```tsx\n * const buttonRef = useRef()\n * useClickOutsideEvent((event) => {}, () => [buttonRef.current])\n * return <button ref={buttonRef} />\n * ```\n */\nexport function useClickOutside(\n listener: ClickOutsideListener,\n elementsArg: ClickOutsideElements = 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 // eslint-disable-next-line react-hooks/set-state-in-effect\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 {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 {useImperativeHandle, useRef} from 'react'\n\n/**\n * @beta\n * @deprecated use `useImperativeHandle` instead\n * @example\n * ```diff\n * -const ref = useForwardedRef(forwardedRef)\n * +const ref = useRef(null)\n * +useImperativeHandle(forwardedRef, () => ref.current)\n * ```\n */\nexport function useForwardedRef<T>(ref: React.ForwardedRef<T>): React.MutableRefObject<T | null> {\n const innerRef = useRef<T | null>(null)\n\n useImperativeHandle(ref, () => innerRef.current!)\n\n return innerRef\n}\n","import {Component, PropsWithChildren} from 'react'\n\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 {SpinnerIcon} from '@sanity/icons'\nimport {keyframes, styled} from 'styled-components'\n\nimport {Box} from '../../primitives'\n\n/**\n * @internal\n */\nexport const StyledAutocomplete = styled.div`\n line-height: 0;\n`\n\n/**\n * @internal\n */\nexport const ListBox = styled(Box)`\n & > ul {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n`\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n`\n\n/**\n * @internal\n */\nexport const AnimatedSpinnerIcon = styled(SpinnerIcon)`\n animation: ${rotate} 500ms linear infinite;\n`\n","import {useCallback} from 'react'\n\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.JSX.Element {\n const {children, id, onSelect, selected, value} = props\n\n const handleClick = useCallback(() => {\n // Calling the `onSelect` in a timeout is a fix to\n // allow the `click` event to propagate in some cases\n setTimeout(() => {\n onSelect(value)\n }, 0)\n }, [onSelect, value])\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLLIElement>) => {\n if (event.key === 'Enter' && !_isEnterToClickElement(event.currentTarget)) {\n handleClick()\n }\n },\n [handleClick],\n )\n\n return (\n <li\n aria-selected={selected}\n data-ui=\"AutocompleteOption\"\n id={id}\n role=\"option\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {children}\n </li>\n )\n}\n","import {AutocompleteMsg, AutocompleteState} from './types'\n\n/**\n * @internal\n */\nexport function autocompleteReducer(\n state: AutocompleteState,\n msg: AutocompleteMsg,\n): AutocompleteState {\n if (msg.type === 'input/change') {\n return {...state, activeValue: null, focused: true, query: msg.query}\n }\n\n if (msg.type === 'input/focus') {\n return {...state, focused: true}\n }\n\n if (msg.type === 'root/blur') {\n return {...state, focused: false, query: null}\n }\n\n if (msg.type === 'root/clear') {\n return {...state, activeValue: null, query: null, value: null}\n }\n\n if (msg.type === 'root/escape') {\n return {...state, focused: false, query: null}\n }\n\n if (msg.type === 'root/open') {\n return {...state, query: state.query || msg.query}\n }\n\n if (msg.type === 'root/setActiveValue') {\n return {...state, activeValue: msg.value, listFocused: msg.listFocused || state.listFocused}\n }\n\n if (msg.type === 'root/setListFocused') {\n return {...state, listFocused: msg.listFocused}\n }\n\n if (msg.type === 'value/change') {\n return {...state, activeValue: msg.value, query: null, value: msg.value}\n }\n\n return state\n}\n","import {Placement} from '../../types'\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_LISTBOX_IGNORE_KEYS = [\n 'Control',\n 'Shift',\n 'Alt',\n 'Enter',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n 'Meta',\n 'Tab',\n 'CapsLock',\n]\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_POPOVER_PLACEMENT: Placement = 'bottom-start'\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS: Placement[] = ['bottom-start', 'top-start']\n","import {ChevronDownIcon} from '@sanity/icons'\nimport {\n ChangeEvent,\n cloneElement,\n ElementType,\n FocusEvent,\n forwardRef,\n HTMLProps,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n Ref,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react'\n\nimport {EMPTY_ARRAY, EMPTY_RECORD} from '../../constants'\nimport {_hasFocus, _raf, focusFirstDescendant} from '../../helpers'\nimport {\n Box,\n BoxProps,\n Button,\n Card,\n Popover,\n PopoverProps,\n Stack,\n Text,\n TextInput,\n} from '../../primitives'\nimport {_getArrayProp} from '../../styles'\nimport {Radius} from '../../types'\nimport {AnimatedSpinnerIcon, ListBox, StyledAutocomplete} from './autocomplete.styles'\nimport {AutocompleteOption} from './autocompleteOption'\nimport {autocompleteReducer} from './autocompleteReducer'\nimport {\n AUTOCOMPLETE_LISTBOX_IGNORE_KEYS,\n AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS,\n AUTOCOMPLETE_POPOVER_PLACEMENT,\n} from './constants'\nimport {AutocompleteOpenButtonProps, BaseAutocompleteOption} from './types'\n\n/**\n * @public\n */\nexport interface AutocompleteProps<Option extends BaseAutocompleteOption = BaseAutocompleteOption> {\n border?: boolean\n customValidity?: string\n filterOption?: (query: string, option: Option) => boolean\n fontSize?: number | number[]\n icon?: ElementType | ReactNode\n id: string\n /** @beta */\n listBox?: BoxProps\n loading?: boolean\n onChange?: (value: string) => void\n onQueryChange?: (query: string | null) => void\n onSelect?: (value: string) => void\n /** @beta */\n openButton?: boolean | AutocompleteOpenButtonProps\n /** @beta */\n openOnFocus?: boolean\n /** The options to render. */\n options?: Option[]\n padding?: number | number[]\n popover?: Omit<PopoverProps, 'content' | 'onMouseEnter' | 'onMouseLeave' | 'open'> &\n Omit<HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content' | 'ref' | 'width'>\n prefix?: ReactNode\n radius?: Radius | Radius[]\n /** @beta */\n relatedElements?: HTMLElement[]\n /** The callback function for rendering each option. */\n renderOption?: (option: Option) => React.JSX.Element\n /** @beta */\n renderPopover?: (\n props: {\n content: React.JSX.Element | null\n hidden: boolean\n inputElement: HTMLInputElement | null\n onMouseEnter: () => void\n onMouseLeave: () => void\n },\n ref: Ref<HTMLDivElement>,\n ) => ReactNode\n renderValue?: (value: string, option?: Option) => string\n suffix?: ReactNode\n /** The current value. */\n value?: string\n}\n\nconst DEFAULT_RENDER_VALUE = (value: string, option?: BaseAutocompleteOption) =>\n option ? option.value : value\n\nconst DEFAULT_FILTER_OPTION = (query: string, option: BaseAutocompleteOption) =>\n option.value.toLowerCase().indexOf(query.toLowerCase()) > -1\n\nconst InnerAutocomplete = forwardRef(function InnerAutocomplete<\n Option extends BaseAutocompleteOption,\n>(\n props: AutocompleteProps<Option> &\n Omit<\n HTMLProps<HTMLInputElement>,\n | 'aria-activedescendant'\n | 'aria-autocomplete'\n | 'aria-expanded'\n | 'aria-owns'\n | 'as'\n | 'autoCapitalize'\n | 'autoComplete'\n | 'autoCorrect'\n | 'id'\n | 'inputMode'\n | 'onChange'\n | 'onSelect'\n | 'popover'\n | 'prefix'\n | 'ref'\n | 'role'\n | 'spellCheck'\n | 'type'\n | 'value'\n >,\n forwardedRef: React.ForwardedRef<HTMLInputElement>,\n) {\n const {\n border = true,\n customValidity,\n disabled,\n filterOption: filterOptionProp,\n fontSize = 2,\n icon,\n id,\n listBox = EMPTY_RECORD,\n loading,\n onBlur,\n onChange,\n onFocus,\n onQueryChange,\n onSelect,\n openButton,\n openOnFocus,\n options: optionsProp,\n padding: paddingProp = 3,\n popover = EMPTY_RECORD,\n prefix,\n radius = 2,\n readOnly,\n relatedElements,\n renderOption: renderOptionProp,\n renderPopover,\n renderValue = DEFAULT_RENDER_VALUE,\n suffix,\n value: valueProp,\n ...restProps\n } = props\n\n const [state, dispatch] = useReducer(autocompleteReducer, {\n activeValue: valueProp || null,\n focused: false,\n listFocused: false,\n query: null,\n value: valueProp || null,\n })\n\n const {activeValue, focused, listFocused, query, value} = state\n\n const defaultRenderOption = useCallback(\n ({value}: BaseAutocompleteOption) => (\n <Card data-as=\"button\" padding={paddingProp} radius={2} tone=\"inherit\">\n <Text size={fontSize} textOverflow=\"ellipsis\">\n {value}\n </Text>\n </Card>\n ),\n [fontSize, paddingProp],\n )\n\n const renderOption =\n typeof renderOptionProp === 'function' ? renderOptionProp : defaultRenderOption\n\n const filterOption =\n typeof filterOptionProp === 'function' ? filterOptionProp : DEFAULT_FILTER_OPTION\n\n // Element refs\n const rootElementRef = useRef<HTMLDivElement | null>(null)\n const resultsPopoverElementRef = useRef<HTMLDivElement | null>(null)\n const inputElementRef = useRef<HTMLInputElement | null>(null)\n const listBoxElementRef = useRef<HTMLDivElement | null>(null)\n // Element refs that need to be accessed during render\n const [inputElement, setInputElement] = useState<HTMLInputElement | null>(null)\n\n // Value refs\n const listFocusedRef = useRef(false)\n const valueRef = useRef(value)\n const valuePropRef = useRef(valueProp)\n const popoverMouseWithinRef = useRef(false)\n\n // Forward inputElement state to inputElementRef\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n inputElementRef,\n () => inputElement,\n [inputElement],\n )\n // Forward inputElement to parent\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => inputElement,\n [inputElement],\n )\n\n const listBoxId = `${id}-listbox`\n const options = Array.isArray(optionsProp) ? optionsProp : EMPTY_ARRAY\n const padding = _getArrayProp(paddingProp)\n const currentOption = useMemo(\n () => (value !== null ? options.find((o) => o.value === value) : undefined),\n [options, value],\n )\n const filteredOptions = useMemo(\n () => options.filter((option) => (query ? filterOption(query, option) : true)),\n [filterOption, options, query],\n )\n const filteredOptionsLen = filteredOptions.length\n const activeItemId = activeValue ? `${id}-option-${activeValue}` : undefined\n const expanded = (query !== null && loading) || (focused && query !== null)\n\n const handleRootBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n setTimeout(() => {\n // NOTE: This is a workaround for a bug that may happen in Chrome (clicking the scrollbar\n // closes the results in certain situations):\n // - Do not handle blur if the mouse is within the popover\n if (popoverMouseWithinRef.current) {\n return\n }\n\n const elements: HTMLElement[] = (relatedElements || []).concat(\n rootElementRef.current ? [rootElementRef.current] : [],\n resultsPopoverElementRef.current ? [resultsPopoverElementRef.current] : [],\n )\n\n let focusInside = false\n\n if (document.activeElement) {\n for (const e of elements) {\n if (e === document.activeElement || e.contains(document.activeElement)) {\n focusInside = true\n break\n }\n }\n }\n\n if (focusInside === false) {\n dispatch({type: 'root/blur'})\n popoverMouseWithinRef.current = false\n if (onQueryChange) onQueryChange(null)\n if (onBlur) onBlur(event)\n }\n }, 0)\n },\n [onBlur, onQueryChange, relatedElements],\n )\n\n const handleRootFocus = useCallback((event: FocusEvent<HTMLDivElement>) => {\n const listBoxElement = listBoxElementRef.current\n const focusedElement = event.target instanceof HTMLElement ? event.target : null\n const listFocused = listBoxElement?.contains(focusedElement) || false\n\n if (listFocused !== listFocusedRef.current) {\n listFocusedRef.current = listFocused\n\n dispatch({type: 'root/setListFocused', listFocused})\n }\n }, [])\n\n const handleOptionSelect = useCallback(\n (v: string) => {\n dispatch({type: 'value/change', value: v})\n\n popoverMouseWithinRef.current = false\n\n if (onSelect) onSelect(v)\n\n valueRef.current = v\n\n if (onChange) onChange(v)\n if (onQueryChange) onQueryChange(null)\n\n inputElementRef.current?.focus()\n },\n [onChange, onSelect, onQueryChange],\n )\n\n const handleRootKeyDown = useCallback(\n (event: KeyboardEvent<HTMLElement>) => {\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n\n if (!filteredOptionsLen) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n const activeIndex = activeOption ? filteredOptions.indexOf(activeOption) : -1\n const nextActiveOption = filteredOptions[(activeIndex + 1) % filteredOptionsLen]\n\n if (nextActiveOption) {\n dispatch({type: 'root/setActiveValue', value: nextActiveOption.value, listFocused: true})\n }\n\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n\n if (!filteredOptionsLen) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n const activeIndex = activeOption ? filteredOptions.indexOf(activeOption) : -1\n const nextActiveOption =\n filteredOptions[\n activeIndex === -1\n ? filteredOptionsLen - 1\n : (filteredOptionsLen + activeIndex - 1) % filteredOptionsLen\n ]\n\n if (nextActiveOption) {\n dispatch({type: 'root/setActiveValue', value: nextActiveOption.value, listFocused: true})\n }\n\n return\n }\n\n if (event.key === 'Escape') {\n dispatch({type: 'root/escape'})\n popoverMouseWithinRef.current = false\n if (onQueryChange) onQueryChange(null)\n inputElementRef.current?.focus()\n\n return\n }\n\n const target = event.target as Node\n const listEl = listBoxElementRef.current\n\n if (\n (listEl === target || listEl?.contains(target)) &&\n !AUTOCOMPLETE_LISTBOX_IGNORE_KEYS.includes(event.key)\n ) {\n inputElementRef.current?.focus()\n\n return\n }\n },\n [activeValue, filteredOptions, filteredOptionsLen, onQueryChange],\n )\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const nextQuery = event.currentTarget.value\n\n dispatch({type: 'input/change', query: nextQuery})\n\n if (onQueryChange) onQueryChange(nextQuery)\n },\n [onQueryChange],\n )\n\n const dispatchOpen = useCallback(() => {\n dispatch({\n type: 'root/open',\n query: value ? renderValue(value, currentOption) : '',\n })\n }, [currentOption, renderValue, value])\n\n const handleInputFocus = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (!focused) {\n dispatch({type: 'input/focus'})\n\n if (onFocus) onFocus(event)\n if (openOnFocus) dispatchOpen()\n }\n },\n [focused, onFocus, openOnFocus, dispatchOpen],\n )\n\n const handlePopoverMouseEnter = useCallback(() => {\n popoverMouseWithinRef.current = true\n }, [])\n\n const handlePopoverMouseLeave = useCallback(() => {\n popoverMouseWithinRef.current = false\n }, [])\n\n const handleClearButtonClick = useCallback(() => {\n dispatch({type: 'root/clear'})\n valueRef.current = ''\n if (onChange) onChange('')\n if (onQueryChange) onQueryChange(null)\n inputElementRef.current?.focus()\n }, [onChange, onQueryChange])\n\n const handleClearButtonFocus = useCallback(() => {\n dispatch({type: 'input/focus'})\n }, [])\n\n // Change the value when `value` prop changes\n useEffect(() => {\n // If `valueProp` changed\n if (valueProp !== valuePropRef.current) {\n valuePropRef.current = valueProp\n\n if (valueProp !== undefined) {\n dispatch({type: 'value/change', value: valueProp})\n valueRef.current = valueProp\n }\n\n return\n }\n\n // If `valueProp` is not equal to `value`\n if (valueProp !== valueRef.current) {\n valueRef.current = valueProp || null\n\n dispatch({type: 'value/change', value: valueProp || null})\n }\n }, [valueProp])\n\n // Reset active item when closing\n useEffect(() => {\n if (!focused && valueRef.current) {\n dispatch({type: 'root/setActiveValue', value: valueRef.current})\n }\n }, [focused])\n\n // Focus the selected item\n useEffect(() => {\n const listElement = listBoxElementRef.current\n\n if (!listElement) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n\n if (activeOption) {\n const activeIndex = filteredOptions.indexOf(activeOption)\n const activeItemElement = listElement.childNodes[activeIndex] as HTMLLIElement | undefined\n\n if (activeItemElement) {\n if (_hasFocus(activeItemElement)) {\n // already focused\n return\n }\n\n focusFirstDescendant(activeItemElement)\n }\n }\n }, [activeValue, filteredOptions])\n\n const clearButton = useMemo(() => {\n if (!loading && !disabled && value) {\n return {\n 'aria-label': 'Clear',\n 'onFocus': handleClearButtonFocus,\n }\n }\n\n return undefined\n }, [disabled, handleClearButtonFocus, loading, value])\n\n const openButtonBoxPadding = 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 const openButtonPadding = padding.map((v) => Math.max(v - 1, 0))\n const openButtonProps: AutocompleteOpenButtonProps = useMemo(\n () => (typeof openButton === 'object' ? openButton : EMPTY_RECORD),\n [openButton],\n )\n\n const handleOpenClick = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n dispatchOpen()\n\n if (openButtonProps.onClick) openButtonProps.onClick(event)\n\n _raf(() => inputElementRef.current?.focus())\n },\n [openButtonProps, dispatchOpen],\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 handleListBoxKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n // If the focus is currently in the list, move focus to the input element\n if (event.key === 'Tab') {\n if (listFocused) inputElementRef.current?.focus()\n }\n },\n [listFocused],\n )\n\n const content = useMemo(() => {\n if (filteredOptions.length === 0) return null\n\n return (\n <ListBox\n data-ui=\"AutoComplete__results\"\n onKeyDown={handleListBoxKeyDown}\n padding={1}\n {...listBox}\n tabIndex={-1}\n >\n <Stack\n as=\"ul\"\n aria-multiselectable={false}\n data-ui=\"AutoComplete__resultsList\"\n id={listBoxId}\n ref={listBoxElementRef}\n role=\"listbox\"\n space={1}\n >\n {filteredOptions.map((option) => {\n const active =\n activeValue !== null ? option.value === activeValue : currentOption === option\n\n return (\n <AutocompleteOption\n id={`${id}-option-${option.value}`}\n key={option.value}\n onSelect={handleOptionSelect}\n selected={active}\n value={option.value}\n >\n {cloneElement(renderOption(option), {\n disabled: loading,\n selected: active,\n tabIndex: listFocused && active ? 0 : -1,\n })}\n </AutocompleteOption>\n )\n })}\n </Stack>\n </ListBox>\n )\n }, [\n activeValue,\n currentOption,\n filteredOptions,\n handleOptionSelect,\n handleListBoxKeyDown,\n id,\n listBox,\n listBoxId,\n listFocused,\n loading,\n renderOption,\n ])\n\n const results = useMemo(() => {\n if (renderPopover) {\n return (\n <RenderPopover\n content={content}\n hidden={!expanded}\n inputElement={inputElement}\n onMouseEnter={handlePopoverMouseEnter}\n onMouseLeave={handlePopoverMouseLeave}\n resultsPopoverElementRef={resultsPopoverElementRef}\n renderPopover={renderPopover}\n />\n )\n }\n\n if (filteredOptionsLen === 0) {\n return null\n }\n\n return (\n <Popover\n arrow={false}\n constrainSize\n content={content}\n fallbackPlacements={AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS}\n matchReferenceWidth\n onMouseEnter={handlePopoverMouseEnter}\n onMouseLeave={handlePopoverMouseLeave}\n open={expanded}\n overflow=\"auto\"\n placement={AUTOCOMPLETE_POPOVER_PLACEMENT}\n portal\n radius={radius}\n ref={resultsPopoverElementRef}\n referenceElement={inputElement}\n {...popover}\n />\n )\n }, [\n content,\n expanded,\n filteredOptionsLen,\n handlePopoverMouseEnter,\n handlePopoverMouseLeave,\n inputElement,\n popover,\n radius,\n renderPopover,\n ])\n\n return (\n <StyledAutocomplete\n data-ui=\"Autocomplete\"\n onBlur={handleRootBlur}\n onFocus={handleRootFocus}\n onKeyDown={handleRootKeyDown}\n ref={rootElementRef}\n >\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={setInputElement}\n role=\"combobox\"\n spellCheck={false}\n suffix={suffix || openButtonNode}\n value={inputValue}\n />\n {results}\n </StyledAutocomplete>\n )\n})\n\nfunction RenderPopover({\n renderPopover,\n content,\n hidden,\n inputElement,\n onMouseEnter,\n onMouseLeave,\n resultsPopoverElementRef,\n}: {\n renderPopover: Exclude<AutocompleteProps['renderPopover'], undefined>\n resultsPopoverElementRef: Parameters<Exclude<AutocompleteProps['renderPopover'], undefined>>[1]\n} & Parameters<Exclude<AutocompleteProps['renderPopover'], undefined>>[0]) {\n return renderPopover(\n {\n content,\n hidden,\n inputElement,\n onMouseEnter,\n onMouseLeave,\n },\n resultsPopoverElementRef,\n )\n}\n\nInnerAutocomplete.displayName = 'ForwardRef(Autocomplete)'\n\n/**\n * The Autocomplete component is typically used for search components.\n * It consists of a text input for writing a query, and properties for rendering suggestions.\n *\n * @public\n */\nexport const Autocomplete = InnerAutocomplete as <Option extends BaseAutocompleteOption>(\n props: AutocompleteProps<Option> &\n Omit<\n HTMLProps<HTMLInputElement>,\n | 'aria-activedescendant'\n | 'aria-autocomplete'\n | 'aria-expanded'\n | 'aria-owns'\n | 'as'\n | 'autoCapitalize'\n | 'autoComplete'\n | 'autoCorrect'\n | 'id'\n | 'inputMode'\n | 'onChange'\n | 'onSelect'\n | 'popover'\n | 'prefix'\n | 'ref'\n | 'role'\n | 'spellCheck'\n | 'type'\n | 'value'\n > & {\n ref?: Ref<HTMLInputElement>\n },\n) => React.JSX.Element\n","import {styled} from 'styled-components'\n\nimport {Button} from '../../primitives'\n\nexport const StyledBreadcrumbs = 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 {\n Children,\n forwardRef,\n Fragment,\n isValidElement,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport {useClickOutsideEvent} from '../../hooks'\nimport {Box, Popover, Stack, Text} from '../../primitives'\nimport {_getArrayProp} from '../../styles'\nimport {ExpandButton, StyledBreadcrumbs} 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 = _getArrayProp(spaceRaw)\n const [open, setOpen] = useState(false)\n const expandElementRef = useRef<HTMLButtonElement | null>(null)\n const popoverElementRef = useRef<HTMLDivElement | null>(null)\n\n const collapse = useCallback(() => setOpen(false), [])\n const expand = useCallback(() => setOpen(true), [])\n\n useClickOutsideEvent(collapse, () => [expandElementRef.current, popoverElementRef.current])\n\n const rawItems = useMemo(() => Children.toArray(children).filter(isValidElement), [children])\n\n const items = useItems({\n collapse,\n expand,\n expandElementRef,\n maxLength,\n open,\n popoverElementRef,\n rawItems,\n space,\n })\n\n return (\n <StyledBreadcrumbs 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 </StyledBreadcrumbs>\n )\n})\nBreadcrumbs.displayName = 'ForwardRef(Breadcrumbs)'\n\nfunction useItems({\n collapse,\n expand,\n expandElementRef,\n maxLength,\n open,\n popoverElementRef,\n rawItems,\n space,\n}: {\n collapse: () => void\n expand: () => void\n expandElementRef: React.RefObject<HTMLButtonElement | null>\n maxLength: number | undefined\n open: boolean\n popoverElementRef: React.RefObject<HTMLDivElement | null>\n rawItems: React.ReactElement<unknown, string | React.JSXElementConstructor<any>>[]\n space: number[]\n}) {\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={popoverElementRef}\n >\n <ExpandButton\n fontSize={1}\n mode=\"bleed\"\n onClick={open ? collapse : expand}\n padding={1}\n ref={expandElementRef}\n selected={open}\n text=\"…\"\n />\n </Popover>,\n ...rawItems.slice(len - afterLength),\n ]\n }\n\n return rawItems\n}\n","import {CSSObject, getTheme_v2} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\n\nimport {_responsive, ThemeProps} from '../../styles'\nimport {DialogPosition} from '../../types'\n\n/**\n * @internal\n */\nexport interface ResponsiveDialogPositionStyleProps {\n $position: DialogPosition[]\n}\n\nexport function dialogStyle({theme}: ThemeProps): CSSObject {\n const {color} = getTheme_v2(theme)\n\n return {\n '&:not([hidden])': {\n display: 'flex',\n },\n\n 'top': 0,\n 'left': 0,\n 'right': 0,\n 'bottom': 0,\n 'alignItems': 'center',\n 'justifyContent': 'center',\n 'outline': 'none',\n 'background': color.backdrop,\n }\n}\n\nexport function responsiveDialogPositionStyle(\n props: ResponsiveDialogPositionStyleProps & ThemeProps,\n): CSSObject[] {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$position, (position) => ({'&&': {position}}))\n}\n\n/**\n * @internal\n */\nexport interface AnimationDialogStyleProps {\n $animate: boolean\n}\n\nexport function animationDialogStyle(props: AnimationDialogStyleProps): ReturnType<typeof css> {\n if (!props.$animate) return css``\n\n return css`\n @keyframes zoomIn {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n }\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n animation: fadeIn 200ms ease-out;\n // Animates the dialog card.\n & > [data-ui='DialogCard'] {\n animation: zoomIn 200ms ease-out;\n }\n `\n}\n","import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'\nimport {DialogPosition} from '../../types'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface DialogContextValue {\n version: 0.0\n position?: DialogPosition | DialogPosition[]\n zOffset?: number | number[]\n}\n\n/**\n * @internal\n */\nexport const DialogContext = createGlobalScopedContext<DialogContextValue>(\n '@sanity/ui/context/dialog',\n {version: 0.0},\n)\n","import {useContext} from 'react'\n\nimport {DialogContext, DialogContextValue} from './dialogContext'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function useDialog(): DialogContextValue {\n return useContext(DialogContext)\n}\n","import {CloseIcon} from '@sanity/icons'\nimport {ThemeColorSchemeKey} from '@sanity/ui/theme'\nimport {forwardRef, useCallback, useEffect, useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {\n containsOrEqualsElement,\n focusFirstDescendant,\n focusLastDescendant,\n isHTMLElement,\n} from '../../helpers'\nimport {useClickOutsideEvent, useGlobalKeyDown, usePrefersReducedMotion} from '../../hooks'\nimport {Box, Button, Card, Container, Flex, Text} from '../../primitives'\nimport {ResponsivePaddingProps, ResponsiveWidthProps} from '../../primitives/types'\nimport {_getArrayProp} from '../../styles'\nimport {responsivePaddingStyle, ResponsivePaddingStyleProps} from '../../styles/internal'\nimport {useTheme_v2} from '../../theme'\nimport {DialogPosition, Radius} from '../../types'\nimport {Layer, LayerProps, Portal, useBoundaryElement, useLayer, usePortal} from '../../utils'\nimport {\n animationDialogStyle,\n AnimationDialogStyleProps,\n dialogStyle,\n responsiveDialogPositionStyle,\n ResponsiveDialogPositionStyleProps,\n} from './styles'\nimport {useDialog} from './useDialog'\n\n/**\n * @public\n */\nexport interface DialogProps extends ResponsivePaddingProps, ResponsiveWidthProps {\n /**\n * @beta\n */\n __unstable_autoFocus?: boolean\n /**\n * @beta\n */\n __unstable_hideCloseButton?: boolean\n cardRadius?: Radius | Radius[]\n cardShadow?: number | number[]\n contentRef?: React.ForwardedRef<HTMLDivElement>\n footer?: React.ReactNode\n header?: React.ReactNode\n id: string\n /** A callback that fires when the dialog becomes the top layer when it was not the top layer before. */\n onActivate?: LayerProps['onActivate']\n onClickOutside?: () => void\n onClose?: () => void\n portal?: string\n position?: DialogPosition | DialogPosition[]\n scheme?: ThemeColorSchemeKey\n zOffset?: number | number[]\n /**\n * Whether the dialog should animate in on mount.\n *\n * @beta\n * @defaultValue false\n */\n animate?: boolean\n}\n\ninterface DialogCardProps extends ResponsiveWidthProps {\n /**\n * @beta\n */\n __unstable_autoFocus: boolean\n /**\n * @beta\n */\n __unstable_hideCloseButton: boolean\n children: React.ReactNode\n contentRef?: React.ForwardedRef<HTMLDivElement>\n footer: React.ReactNode\n header: React.ReactNode\n id: string\n onClickOutside?: () => void\n onClose?: () => void\n portal?: string\n radius: Radius | Radius[]\n scheme?: ThemeColorSchemeKey\n shadow: number | number[]\n}\n\nfunction isTargetWithinScope(\n boundaryElement: HTMLElement | null,\n portalElement: HTMLElement | null,\n target: Node,\n): boolean {\n if (!boundaryElement || !portalElement) return true\n\n return (\n containsOrEqualsElement(boundaryElement, target) ||\n containsOrEqualsElement(portalElement, target)\n )\n}\n\nconst StyledDialog = styled(Layer)<\n ResponsiveDialogPositionStyleProps & ResponsivePaddingStyleProps & AnimationDialogStyleProps\n>(responsivePaddingStyle, dialogStyle, responsiveDialogPositionStyle, animationDialogStyle)\n\nconst DialogContainer = styled(Container)`\n &:not([hidden]) {\n display: flex;\n }\n width: 100%;\n height: 100%;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`\n\nconst DialogCardRoot = styled(Card)`\n &:not([hidden]) {\n display: flex;\n }\n width: 100%;\n min-height: 0;\n max-height: 100%;\n overflow: hidden;\n overflow: clip;\n`\n\nconst DialogLayout = styled(Flex)`\n flex: 1;\n min-height: 0;\n width: 100%;\n`\n\nconst DialogHeader = styled(Box)`\n position: relative;\n z-index: 2;\n`\n\nconst DialogContent = styled(Box)`\n position: relative;\n z-index: 1;\n overflow: auto;\n outline: none;\n`\n\nconst DialogFooter = styled(Box)`\n position: relative;\n z-index: 3;\n`\n\nconst DialogCard = forwardRef(function DialogCard(\n props: DialogCardProps,\n forwardedRef: React.ForwardedRef<HTMLDivElement>,\n) {\n const {\n __unstable_autoFocus: autoFocus,\n __unstable_hideCloseButton: hideCloseButton,\n children,\n contentRef: forwardedContentRef,\n footer,\n header,\n id,\n onClickOutside,\n onClose,\n portal: portalProp,\n radius: radiusProp,\n scheme,\n shadow: shadowProp,\n width: widthProp,\n } = props\n const portal = usePortal()\n const portalElement = portalProp ? portal.elements?.[portalProp] || null : portal.element\n const boundaryElement = useBoundaryElement().element\n const radius = _getArrayProp(radiusProp)\n const shadow = _getArrayProp(shadowProp)\n const width = _getArrayProp(widthProp)\n const ref = useRef<HTMLDivElement | null>(null)\n const contentRef = useRef<HTMLDivElement | null>(null)\n const layer = useLayer()\n const {isTopLayer} = layer\n const labelId = `${id}_label`\n const showCloseButton = Boolean(onClose) && hideCloseButton === false\n const showHeader = Boolean(header) || showCloseButton\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(\n forwardedContentRef,\n () => contentRef.current,\n )\n\n useEffect(() => {\n if (!autoFocus) return\n\n // On mount: focus the first focusable element\n if (ref.current) {\n focusFirstDescendant(ref.current)\n }\n }, [autoFocus, ref])\n\n useGlobalKeyDown(\n useCallback(\n (event: KeyboardEvent) => {\n if (!isTopLayer || !onClose) return\n\n const target = document.activeElement\n\n if (target && !isTargetWithinScope(boundaryElement, portalElement, target)) {\n // Ignore key presses when the focused element is outside of scope\n return\n }\n\n if (event.key === 'Escape') {\n event.preventDefault()\n event.stopPropagation()\n onClose()\n }\n },\n [boundaryElement, isTopLayer, onClose, portalElement],\n ),\n )\n\n useClickOutsideEvent(\n isTopLayer &&\n onClickOutside &&\n ((event) => {\n const target = event.target as Node | null\n\n if (target && !isTargetWithinScope(boundaryElement, portalElement, target)) {\n // Ignore clicks outside of the scope\n return\n }\n\n onClickOutside()\n }),\n () => [ref.current],\n )\n\n return (\n <DialogContainer data-ui=\"DialogCard\" width={width}>\n <DialogCardRoot radius={radius} ref={ref} scheme={scheme} shadow={shadow}>\n <DialogLayout direction=\"column\">\n {showHeader && (\n <DialogHeader>\n <Flex align=\"flex-start\" padding={3}>\n <Box flex={1} padding={2}>\n {header && (\n <Text id={labelId} size={1} weight=\"semibold\">\n {header}\n </Text>\n )}\n </Box>\n {showCloseButton && (\n <Box flex=\"none\">\n <Button\n aria-label=\"Close dialog\"\n disabled={!onClose}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onClose}\n padding={2}\n />\n </Box>\n )}\n </Flex>\n </DialogHeader>\n )}\n\n <DialogContent flex={1} ref={contentRef} tabIndex={-1}>\n {children}\n </DialogContent>\n\n {footer && <DialogFooter>{footer}</DialogFooter>}\n </DialogLayout>\n </DialogCardRoot>\n </DialogContainer>\n )\n})\n\nDialogCard.displayName = 'ForwardRef(DialogCard)'\n\n/**\n * The Dialog component.\n *\n * @public\n */\nexport const Dialog = forwardRef(function Dialog(\n props: DialogProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'id' | 'width'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const dialog = useDialog()\n const {layer} = useTheme_v2()\n const {\n __unstable_autoFocus: autoFocus = true,\n __unstable_hideCloseButton: hideCloseButton = false,\n cardRadius: cardRadiusProp = 4,\n cardShadow = 3,\n children,\n contentRef,\n footer,\n header,\n id,\n onActivate,\n onClickOutside,\n onClose,\n onFocus,\n padding: paddingProp = 3,\n portal: portalProp,\n position: _positionProp,\n scheme,\n width: widthProp = 0,\n zOffset: _zOffsetProp,\n animate: _animate = false,\n ...restProps\n } = props\n const positionProp = _positionProp ?? (dialog.position || 'fixed')\n const zOffsetProp = _zOffsetProp ?? (dialog.zOffset || layer.dialog.zOffset)\n const prefersReducedMotion = usePrefersReducedMotion()\n const animate = prefersReducedMotion ? false : _animate\n const portal = usePortal()\n const portalElement = portalProp ? portal.elements?.[portalProp] || null : portal.element\n const boundaryElement = useBoundaryElement().element\n const cardRadius = _getArrayProp(cardRadiusProp)\n const padding = _getArrayProp(paddingProp)\n const position = _getArrayProp(positionProp)\n const width = _getArrayProp(widthProp)\n const zOffset = _getArrayProp(zOffsetProp)\n const preDivRef = useRef<HTMLDivElement | null>(null)\n const postDivRef = useRef<HTMLDivElement | null>(null)\n const cardRef = useRef<HTMLDivElement | null>(null)\n const focusedElementRef = useRef<HTMLElement | null>(null)\n\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n onFocus?.(event)\n\n const target = event.target\n const cardElement = cardRef.current\n\n if (cardElement && target === preDivRef.current) {\n focusLastDescendant(cardElement)\n\n return\n }\n\n if (cardElement && target === postDivRef.current) {\n focusFirstDescendant(cardElement)\n\n return\n }\n\n if (isHTMLElement(event.target)) {\n focusedElementRef.current = event.target\n }\n },\n [onFocus],\n )\n\n const labelId = `${id}_label`\n\n const rootClickTimeoutRef = useRef<NodeJS.Timeout>(undefined)\n\n // If the resulting active element (a.k.a. focused element) is not withing scope when clicking\n // within the dialog, then we want to focus the previously interactive element in the dialog instead.\n // This is to allow the user to tab or close the dialog by pressing escape.\n const handleRootClick = useCallback(() => {\n if (rootClickTimeoutRef.current) {\n clearTimeout(rootClickTimeoutRef.current)\n }\n\n rootClickTimeoutRef.current = setTimeout(() => {\n const activeElement = document.activeElement\n\n if (activeElement && !isTargetWithinScope(boundaryElement, portalElement, activeElement)) {\n const target = focusedElementRef.current\n\n if (!target || !document.body.contains(target)) {\n // No previously focused element, or it's not in the document anymore\n const cardElement = cardRef.current\n if (cardElement) focusFirstDescendant(cardElement)\n\n return\n }\n\n target.focus()\n }\n }, 0)\n }, [boundaryElement, portalElement])\n\n return (\n <Portal __unstable_name={portalProp}>\n <StyledDialog\n {...restProps}\n $animate={animate}\n $padding={padding}\n $position={position}\n aria-labelledby={labelId}\n aria-modal\n data-ui=\"Dialog\"\n id={id}\n onActivate={onActivate}\n onClick={handleRootClick}\n onFocus={handleFocus}\n ref={ref}\n role=\"dialog\"\n zOffset={zOffset}\n >\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\n <div ref={preDivRef} tabIndex={0} />\n <DialogCard\n __unstable_autoFocus={autoFocus}\n __unstable_hideCloseButton={hideCloseButton}\n contentRef={contentRef}\n footer={footer}\n header={header}\n id={id}\n onClickOutside={onClickOutside}\n onClose={onClose}\n portal={portalProp}\n radius={cardRadius}\n ref={cardRef}\n scheme={scheme}\n shadow={cardShadow}\n width={width}\n >\n {children}\n </DialogCard>\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\n <div ref={postDivRef} tabIndex={0} />\n </StyledDialog>\n </Portal>\n )\n})\nDialog.displayName = 'ForwardRef(Dialog)'\n","import {useMemo} from 'react'\n\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.JSX.Element {\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\nDialogProvider.displayName = 'DialogProvider'\n","import {ThemeColorSchemeKey} from '@sanity/ui/theme'\nimport {\n cloneElement,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport {Popover, PopoverProps} from '../../primitives'\nimport {Placement, Radius} from '../../types'\nimport {MenuProps} from './menu'\n\n/**\n * @public\n */\nexport interface MenuButtonProps {\n /**\n * @beta Do not use in production.\n */\n __unstable_disableRestoreFocusOnClose?: boolean\n /**\n * @deprecated Use `popover={{boundaryElement: element}}` instead.\n */\n boundaryElement?: HTMLElement\n button: React.JSX.Element\n id: string\n menu?: React.JSX.Element\n onClose?: () => void\n onOpen?: () => void\n /**\n * @deprecated Use `popover={{placement: 'top'}}` instead.\n */\n placement?: Placement\n popover?: Omit<PopoverProps, 'content' | 'open'>\n /**\n * @deprecated Use `popover={{scheme: 'dark'}}` instead.\n */\n popoverScheme?: ThemeColorSchemeKey\n /**\n * @deprecated Use `popover={{radius: 2}}` instead.\n */\n popoverRadius?: Radius | Radius[]\n /**\n * @beta Do not use in production.\n * @deprecated Use `popover={{portal: true}}` instead.\n */\n portal?: boolean\n /**\n * @deprecated Use `popover={{preventOverflow: true}}` instead.\n */\n preventOverflow?: boolean\n}\n\n/**\n * The `MenuButton` component follows the WAI-ARIA specification for menu buttons.\n *\n * @public\n */\nexport const MenuButton = forwardRef(function MenuButton(\n props: MenuButtonProps,\n forwardedRef: React.ForwardedRef<HTMLButtonElement | null>,\n) {\n const {\n __unstable_disableRestoreFocusOnClose: disableRestoreFocusOnClose = false,\n boundaryElement: deprecated_boundaryElement,\n button: buttonProp,\n id,\n menu: menuProp,\n onClose,\n onOpen,\n placement: deprecated_placement,\n popoverScheme: deprecated_popoverScheme,\n portal: deprecated_portal = true,\n popover,\n popoverRadius: deprecated_popoverRadius,\n preventOverflow: deprecated_preventOverflow,\n } = props\n const [open, setOpen] = useState(false)\n const [shouldFocus, setShouldFocus] = useState<'first' | 'last' | null>(null)\n const [buttonElement, setButtonElement] = useState<HTMLButtonElement | null>(null)\n const [menuElements, setChildMenuElements] = useState<HTMLElement[]>([])\n const openRef = useRef<boolean>(open)\n\n // Notify consumers when the menu opens\n useEffect(() => {\n if (onOpen && open && !openRef.current) {\n onOpen()\n }\n }, [onOpen, open])\n\n // Notify consumers when the menu closes\n useEffect(() => {\n if (onClose && !open && openRef.current) {\n onClose()\n }\n }, [onClose, open])\n\n useEffect(() => {\n openRef.current = open\n }, [open])\n\n const handleButtonClick = useCallback(() => {\n setOpen((v) => !v)\n setShouldFocus(null)\n }, [])\n\n // Prevent mouse event propagation when the menu is open.\n // This is to ensure that `handleBlur` isn't triggered when clicking the menu button whilst open,\n // which can lead to `setOpen` being triggered multiple times (once by `handleBlur`, and again by `handleButtonClick`).\n const handleMouseDown = useCallback(\n (event: PointerEvent) => {\n if (open) event.preventDefault()\n },\n [open],\n )\n\n const handleButtonKeyDown = useCallback((event: React.KeyboardEvent<HTMLButtonElement>) => {\n // On `ArrowDown`, `Enter` and `Space`\n // - Opens menu and moves focus to first menuitem\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n setOpen(true)\n setShouldFocus('first')\n\n return\n }\n\n // On `ArrowUp`\n // - \tOpens menu and moves focus to last menuitem\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n setOpen(true)\n setShouldFocus('last')\n\n return\n }\n }, [])\n\n const handleMenuClickOutside = useCallback(\n (event: MouseEvent) => {\n const target = event.target\n\n if (!(target instanceof Node)) {\n return\n }\n\n if (buttonElement && (target === buttonElement || buttonElement.contains(target))) {\n return\n }\n\n for (const el of menuElements) {\n if (target === el || el.contains(target)) {\n return\n }\n }\n\n setOpen(false)\n },\n [buttonElement, menuElements],\n )\n\n const handleMenuEscape = useCallback(() => {\n setOpen(false)\n if (disableRestoreFocusOnClose) return\n if (buttonElement) buttonElement.focus()\n }, [buttonElement, disableRestoreFocusOnClose])\n\n const handleBlur = useCallback(\n (event: FocusEvent) => {\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 () => setChildMenuElements((els) => els.filter((_el) => _el !== el))\n }, [])\n\n const menuProps: MenuProps = {\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 const menu = menuProp && cloneElement(menuProp, menuProps)\n\n const button = useMemo(\n () =>\n buttonProp &&\n cloneElement(buttonProp, {\n 'data-ui': 'MenuButton',\n id,\n 'onClick': handleButtonClick,\n 'onKeyDown': handleButtonKeyDown,\n 'onMouseDown': handleMouseDown,\n 'aria-haspopup': true,\n 'aria-expanded': open,\n 'ref': setButtonElement,\n 'selected': buttonProp.props.selected ?? open,\n }),\n [buttonProp, handleButtonClick, handleButtonKeyDown, handleMouseDown, id, open],\n )\n\n // Forward button ref to parent\n useImperativeHandle<HTMLButtonElement | null, HTMLButtonElement | null>(\n forwardedRef,\n () => buttonElement,\n [buttonElement],\n )\n\n const popoverProps: MenuButtonProps['popover'] = useMemo(\n () => ({\n boundaryElement: deprecated_boundaryElement,\n overflow: 'auto',\n placement: deprecated_placement,\n portal: deprecated_portal,\n preventOverflow: deprecated_preventOverflow,\n radius: deprecated_popoverRadius,\n scheme: deprecated_popoverScheme,\n ...(popover || {}),\n }),\n [\n deprecated_boundaryElement,\n deprecated_placement,\n deprecated_popoverRadius,\n deprecated_popoverScheme,\n deprecated_portal,\n deprecated_preventOverflow,\n popover,\n ],\n )\n\n return (\n <Popover data-ui=\"MenuButton__popover\" {...popoverProps} content={menu} open={open}>\n {button || <></>}\n </Popover>\n )\n})\nMenuButton.displayName = 'ForwardRef(MenuButton)'\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'\n\nimport {Box, BoxProps, ResponsiveRadiusProps} from '../../primitives'\nimport {_getArrayProp} from '../../styles'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/internal'\nimport {skeletonStyle} from './styles'\n\nconst StyledSkeleton = styled(Box)<\n {$animated: boolean; $visible: boolean} & ResponsiveRadiusStyleProps\n>(responsiveRadiusStyle, skeletonStyle)\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 undefined\n }\n\n const timeout = setTimeout(() => {\n setVisible(true)\n }, delay)\n\n return () => {\n clearTimeout(timeout)\n }\n }, [delay])\n\n return (\n <StyledSkeleton\n {...restProps}\n $animated={animated}\n $radius={_getArrayProp(radius)}\n $visible={delay ? visible : true}\n ref={ref}\n />\n )\n})\nSkeleton.displayName = 'ForwardRef(Skeleton)'\n","import {getTheme_v2, ThemeFontKey} from '@sanity/ui/theme'\nimport {forwardRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {_getArrayProp, _responsive, ThemeProps} from '../../styles'\nimport {Skeleton, SkeletonProps} from './skeleton'\n\nconst StyledSkeleton = styled(Skeleton)<{$size: number[]; $style: ThemeFontKey}>((\n props: {\n $size: number[]\n $style: ThemeFontKey\n } & ThemeProps,\n) => {\n const {$size, $style} = props\n const {font, media} = getTheme_v2(props.theme)\n const fontStyle = font[$style]\n\n const styles = _responsive(media, $size, (sizeIndex) => {\n const fontSize = fontStyle.sizes[sizeIndex]\n const capHeight = fontSize.lineHeight - fontSize.ascenderHeight - fontSize.descenderHeight\n\n return {height: capHeight}\n })\n\n return styles\n})\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface TextSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface LabelSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface HeadingSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface CodeSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const TextSkeleton = forwardRef(function TextSkeleton(\n props: TextSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {size = 2, ...restProps} = props\n const $size = _getArrayProp(size)\n\n return <StyledSkeleton {...restProps} $size={$size} ref={ref} $style=\"text\" />\n})\nTextSkeleton.displayName = 'ForwardRef(TextSkeleton)'\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 = _getArrayProp(size)\n\n return <StyledSkeleton {...restProps} $size={$size} ref={ref} $style=\"label\" />\n})\nLabelSkeleton.displayName = 'ForwardRef(LabelSkeleton)'\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 = _getArrayProp(size)\n\n return <StyledSkeleton {...restProps} $size={$size} ref={ref} $style=\"heading\" />\n})\nHeadingSkeleton.displayName = 'ForwardRef(HeadingSkeleton)'\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 = _getArrayProp(size)\n\n return <StyledSkeleton {...restProps} $size={$size} ref={ref} $style=\"code\" />\n})\nCodeSkeleton.displayName = 'ForwardRef(CodeSkeleton)'\n","import {forwardRef} from 'react'\n\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})\nTabPanel.displayName = 'ForwardRef(TabPanel)'\n","import {getTheme_v2, ThemeColorStateToneKey} from '@sanity/ui/theme'\nimport {styled} from 'styled-components'\n\nimport {Card, Flex} from '../../primitives'\nimport type {ButtonTone} from '../../types'\n\nconst LOADING_BAR_HEIGHT = 2\n\nexport const STATUS_CARD_TONE = {\n error: 'critical',\n warning: 'caution',\n success: 'positive',\n info: 'neutral',\n} satisfies {[key: string]: ThemeColorStateToneKey}\n\nexport const BUTTON_TONE = {\n error: 'critical',\n warning: 'caution',\n success: 'positive',\n info: 'neutral',\n} satisfies {[key: string]: ButtonTone}\n\nexport const TextBox = styled(Flex)`\n overflow-x: auto;\n`\n\nexport const StyledToast = styled(Card)`\n pointer-events: all;\n width: 100%;\n position: relative;\n overflow: hidden;\n overflow: clip;\n\n &[data-has-duration] {\n padding-bottom: calc(${LOADING_BAR_HEIGHT}px / 2);\n }\n`\n\nexport const LoadingBar = styled.div`\n display: flex;\n position: absolute;\n bottom: 0px;\n top: 0px;\n left: 0px;\n right: 0px;\n pointer-events: none;\n z-index: -1;\n overflow: hidden;\n overflow: clip;\n background: transparent;\n align-items: flex-end;\n will-change: opacity;\n`\n\nexport const LoadingBarMask = styled(Card)`\n position: absolute;\n top: 0;\n left: -${LOADING_BAR_HEIGHT}px;\n right: -${LOADING_BAR_HEIGHT}px;\n bottom: ${LOADING_BAR_HEIGHT}px;\n z-index: 1;\n`\n\ntype LoadingBarProgressProps = Omit<React.ComponentProps<typeof Card>, 'tone'> & {\n tone: ThemeColorStateToneKey\n}\nexport const LoadingBarProgress = styled<React.ComponentType<LoadingBarProgressProps>>(Card)`\n display: block;\n height: 100%;\n width: 100%;\n transform-origin: 0% 50%;\n background-color: ${(props) => {\n const {color} = getTheme_v2(props.theme)\n\n return color.button.default[props.tone].enabled.bg\n }};\n`\n","import {CloseIcon} from '@sanity/icons'\nimport {motion, type Variant, type Variants} from 'framer-motion'\n\nimport {usePrefersReducedMotion} from '../../hooks/usePrefersReducedMotion'\nimport {Box, Button, Flex, Stack, Text} from '../../primitives'\nimport {\n BUTTON_TONE,\n LoadingBar,\n LoadingBarMask,\n LoadingBarProgress,\n STATUS_CARD_TONE,\n StyledToast,\n TextBox,\n} from './styles'\n\n/**\n * @public\n */\nexport interface ToastProps {\n closable?: boolean\n description?: React.ReactNode\n onClose: () => void\n radius?: number | number[]\n title?: React.ReactNode\n status?: 'error' | 'warning' | 'success' | 'info'\n duration?: number\n updatedAt?: number\n}\n\nconst ROLES = {\n error: 'alert',\n warning: 'alert',\n success: 'alert',\n info: 'alert',\n} as const\n\n// Support pattern used by Sanity Studio, that works around the lack of `duration: Infinity` support in older @sanity/ui versions\n// https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value\nconst LONG_ENOUGH_BUT_NOT_TOO_LONG = 1000 * 60 * 60 * 24 * 24\n\n/**\n * The `Toast` component gives feedback to users when an action has taken place.\n *\n * Toasts can be closed with a close button, or auto-dismiss after a certain timeout.\n *\n * @public\n */\nexport function Toast(\n props: ToastProps &\n Omit<\n React.HTMLProps<HTMLDivElement>,\n | 'as'\n | 'height'\n | 'ref'\n | 'title'\n | 'onAnimationStart'\n | 'onDragStart'\n | 'onDragEnd'\n | 'onDrag'\n >,\n): React.JSX.Element {\n const {\n closable,\n description,\n duration,\n onClose,\n radius = 3,\n title,\n status,\n updatedAt,\n ...restProps\n } = props\n const cardTone = status ? STATUS_CARD_TONE[status] : 'default'\n const buttonTone = status ? BUTTON_TONE[status] : 'default'\n const role = status ? ROLES[status] : 'status'\n\n const prefersReducedMotion = usePrefersReducedMotion()\n\n const visualDuration: number = prefersReducedMotion ? 0 : 0.26\n const transition = visualDuration\n ? {type: 'spring' as const, visualDuration, bounce: 0.25}\n : {duration: 0}\n\n const hasDuration = duration && isFinite(duration) && duration < LONG_ENOUGH_BUT_NOT_TOO_LONG\n const initial: ContainerVariants[] = ['hidden', 'initial']\n const animate: ContainerVariants[] = ['visible', 'slideIn']\n const exit: ContainerVariants[] = ['hidden', 'slideOut']\n\n return (\n <MotionToast\n data-ui=\"Toast\"\n role={role}\n {...restProps}\n data-has-duration={hasDuration ? '' : undefined}\n custom={visualDuration}\n radius={radius}\n shadow={2}\n tone={cardTone}\n forwardedAs=\"li\"\n layout=\"position\"\n variants={container}\n initial={initial}\n animate={animate}\n exit={exit}\n transition={transition}\n >\n <MotionFlex align=\"flex-start\" variants={content} transition={transition}>\n <TextBox flex={1} padding={3}>\n <Stack space={3}>\n {title && (\n <Text size={1} weight=\"medium\">\n {title}\n </Text>\n )}\n {description && (\n <MotionText muted size={1} variants={content} transition={transition}>\n {description}\n </MotionText>\n )}\n </Stack>\n </TextBox>\n\n {closable && (\n <Box padding={1}>\n <Button\n as=\"button\"\n icon={CloseIcon}\n mode=\"bleed\"\n padding={2}\n tone={buttonTone}\n onClick={onClose}\n style={{verticalAlign: 'top'}}\n />\n </Box>\n )}\n </MotionFlex>\n {hasDuration && (\n <MotionLoadingBar variants={content} transition={transition}>\n <LoadingBarMask tone={cardTone} radius={radius} />\n <MotionLoadingBarProgress\n key={`progress-${updatedAt}`}\n tone={cardTone}\n initial={{scaleX: 0}}\n animate={{scaleX: 1}}\n transition={{delay: visualDuration, duration: duration / 1_000, ease: 'linear'}}\n onAnimationComplete={onClose}\n />\n </MotionLoadingBar>\n )}\n </MotionToast>\n )\n}\n\nToast.displayName = 'Toast'\n\nconst container = {\n initial: {y: 32, scale: 0.5, zIndex: 1},\n hidden: {opacity: 0},\n visible: (visualDuration: number) => {\n if (!visualDuration) return {opacity: 1}\n\n return {\n opacity: 1,\n transition: {\n when: 'beforeChildren',\n staggerChildren: visualDuration / 3,\n duration: visualDuration / 3,\n },\n }\n },\n slideIn: {\n y: 0,\n scale: 1,\n },\n slideOut: {\n zIndex: 0,\n scale: 0.75,\n },\n} satisfies Variants\ntype ContainerVariants = keyof typeof container\n\nconst content = {\n initial: {\n willChange: 'transform',\n },\n hidden: {\n opacity: 0,\n },\n visible: {\n opacity: 1,\n },\n} satisfies Partial<Record<ContainerVariants, Variant>>\n\nconst MotionToast = motion.create(StyledToast)\nconst MotionFlex = motion.create(Flex)\nconst MotionText = motion.create(Text)\nconst MotionLoadingBar = motion.create(LoadingBar)\nconst MotionLoadingBarProgress = motion.create(LoadingBarProgress)\n","import {useSyncExternalStore} from 'react'\n\n/**\n * Some components should only render after mounting to the DOM, and not be rendered at all during SSR renderToString or equivalent.\n * @public\n */\nexport function useMounted(): boolean {\n return useSyncExternalStore(\n subscribe,\n () => true,\n () => false,\n )\n}\n\nconst subscribe = () => () => {}\n","import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'\nimport {ToastContextValue} from './types'\n\nexport const ToastContext = createGlobalScopedContext<ToastContextValue | null>(\n '@sanity/ui/context/toast',\n null,\n)\n","import {styled} from 'styled-components'\n\nimport {Grid} from '../../primitives/grid'\nimport {useLayer} from '../../utils'\n\n/**\n * @public\n */\nexport interface ToastLayerProps {\n children: React.ReactNode\n padding?: number | number[]\n paddingX?: number | number[]\n paddingY?: number | number[]\n gap?: number | number[]\n}\n\n/**\n * @internal\n */\nexport function ToastLayer(props: ToastLayerProps): React.JSX.Element {\n const {children, padding = 4, paddingX, paddingY, gap = 3} = props\n const {zIndex} = useLayer()\n\n return (\n <StyledLayer\n forwardedAs=\"ul\"\n data-ui=\"ToastProvider\"\n padding={padding}\n paddingX={paddingX}\n paddingY={paddingY}\n gap={gap}\n columns={1}\n style={{zIndex}}\n >\n {children}\n </StyledLayer>\n )\n}\n\nToastLayer.displayName = 'ToastLayer'\n\nconst StyledLayer = styled(Grid)`\n box-sizing: border-box;\n position: fixed;\n right: 0;\n bottom: 0;\n list-style: none;\n pointer-events: none;\n max-width: 420px;\n width: 100%;\n`\n","let toastId = 0\n\n/** @internal */\nexport function generateToastId(): string {\n return String(toastId++)\n}\n","import {AnimatePresence} from 'framer-motion'\nimport {startTransition, useMemo, useState} from 'react'\n\nimport {useMounted} from '../../hooks/useMounted'\nimport {LayerProvider} from '../../utils'\nimport {Toast} from './toast'\nimport {ToastContext} from './toastContext'\nimport {ToastLayer, type ToastLayerProps} from './toastLayer'\nimport {generateToastId} from './toastState'\nimport {ToastContextValue, ToastParams} from './types'\n\ntype ToastState = {\n dismiss: () => void\n id: string\n updatedAt: number\n params: ToastParams\n}[]\n\n/**\n * @public\n */\nexport interface ToastProviderProps extends Omit<ToastLayerProps, 'children'> {\n children?: React.ReactNode\n zOffset?: number | number[]\n}\n\n/**\n * @public\n */\nexport function ToastProvider(props: ToastProviderProps): React.JSX.Element {\n const {children, padding, paddingX, paddingY, gap, zOffset = 1} = props\n const [state, setState] = useState<ToastState>([])\n const mounted = useMounted()\n\n const value: ToastContextValue = useMemo(() => {\n const push = (params: ToastParams) => {\n const id = params.id || generateToastId()\n const duration = params.duration || 5000\n\n startTransition(() => {\n setState((prevState): ToastState => {\n /**\n * Backwards compatibility for `sanity` patterns workaround a lack of programatically dismissible toasts.\n * It uses a super short duration that closes the toast immediately in previous versions of `@sanity/ui`.\n * We interpret this as a request to dismiss the toast immediately, and remove it from the state right away.\n * Even once we support programatic dismissal we'll need to keep this for backwards compatibility with v2 and v1.\n */\n if (duration === 0.01) {\n return prevState.filter((toast) => toast.id !== id)\n }\n\n /**\n * Creates a function to dismiss this specific toast.\n * This function will be passed to the Toast component\n * and called either on close button click or after duration.\n */\n const dismiss = () =>\n startTransition(() =>\n setState((currentState) => currentState.filter((toast) => toast.id !== id)),\n )\n\n /**\n * Create updated state by:\n * 1. Removing any existing toast with the same ID (prevents duplicates)\n * 2. Adding the new toast with its dismiss handler\n * 3. Updates the `updatedAt` timestamp, which resets progress bar count downs.\n */\n return [\n ...prevState.filter((toast) => toast.id !== id),\n {\n dismiss,\n id,\n updatedAt: Date.now(),\n params: {...params, duration},\n },\n ]\n })\n })\n\n return id\n }\n\n return {version: 0.0, push}\n }, [])\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n {mounted && (\n <LayerProvider zOffset={zOffset}>\n <ToastLayer padding={padding} paddingX={paddingX} paddingY={paddingY} gap={gap}>\n <AnimatePresence initial={false} mode=\"popLayout\">\n {state.map(({dismiss, id, params, updatedAt}) => (\n <Toast\n key={id}\n closable={params.closable}\n description={params.description}\n onClose={dismiss}\n status={params.status}\n title={params.title}\n duration={params.duration}\n updatedAt={updatedAt}\n />\n ))}\n </AnimatePresence>\n </ToastLayer>\n </LayerProvider>\n )}\n </ToastContext.Provider>\n )\n}\n\nToastProvider.displayName = 'ToastProvider'\n","import {useContext} from 'react'\n\nimport {isRecord} from '../../lib/isRecord'\nimport {ToastContext} from './toastContext'\nimport {ToastContextValue} from './types'\n\n/**\n * @public\n */\nexport function useToast(): ToastContextValue {\n const value = useContext(ToastContext)\n\n if (!value) {\n throw new Error('useToast(): missing context value')\n }\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (!isRecord(value) || value.version !== 0.0) {\n throw new Error('useToast(): the context value is not compatible')\n }\n\n return value\n}\n","import {TreeState} from './types'\n\nexport function _findPrevItemElement(\n state: TreeState,\n itemElements: HTMLElement[],\n focusedElement: HTMLElement,\n): HTMLElement | null {\n const idx = itemElements.indexOf(focusedElement)\n const els = itemElements.slice(0, idx)\n const len = els.length\n\n for (let i = len - 1; i >= 0; i -= 1) {\n const itemKey = els[i].getAttribute('data-tree-key')\n\n if (!itemKey) {\n continue\n }\n\n const segments = itemKey.split('/')\n\n segments.pop()\n\n const p: string[] = []\n\n let expanded = true\n\n for (let j = 0; j < segments.length; j += 1) {\n p.push(segments[j])\n\n const k = p.join('/')\n\n if (!state[k]?.expanded) {\n expanded = false\n break\n }\n }\n\n if (expanded) {\n return els[i]\n }\n }\n\n return null\n}\n\nexport function _findNextItemElement(\n state: TreeState,\n itemElements: HTMLElement[],\n focusedElement: HTMLElement,\n): HTMLElement | null {\n const idx = itemElements.indexOf(focusedElement)\n const els = itemElements.slice(idx)\n const len = itemElements.length\n\n for (let i = 1; i < len; i += 1) {\n if (!els[i]) {\n continue\n }\n\n const itemKey = els[i].getAttribute('data-tree-key')\n\n if (!itemKey) {\n continue\n }\n\n const segments = itemKey.split('/')\n\n segments.pop()\n\n const p: string[] = []\n\n let expanded = true\n\n for (let j = 0; j < segments.length; j += 1) {\n p.push(segments[j])\n\n const k = p.join('/')\n\n if (!state[k]?.expanded) {\n expanded = false\n break\n }\n }\n\n if (expanded) {\n return els[i]\n }\n }\n\n return null\n}\n\nexport function _focusItemElement(el: HTMLElement): void {\n if (el.getAttribute('role') === 'treeitem') {\n el.focus()\n }\n\n if (el.getAttribute('role') === 'none') {\n const firstChild = el.firstChild\n\n if (firstChild && firstChild instanceof HTMLElement) {\n firstChild.focus()\n }\n }\n}\n","import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'\nimport {TreeContextValue} from './types'\n\n/**\n * @internal\n */\nexport const TreeContext = createGlobalScopedContext<TreeContextValue | null>(\n '@sanity/ui/context/tree',\n null,\n)\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\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 = forwardRef(function Tree(\n props: TreeProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'align' | 'as' | 'height' | 'ref' | 'role' | 'wrap'>,\n forwardedRef: React.ForwardedRef<HTMLDivElement>,\n): React.JSX.Element {\n const {children, space = 1, onFocus, ...restProps} = props\n const ref = useRef<HTMLDivElement | null>(null)\n const [focusedElement, setFocusedElement] = useState<HTMLElement | null>(null)\n const focusedElementRef = useRef(focusedElement)\n const path: string[] = useMemo(() => [], [])\n const [itemElements, setItemElements] = useState<HTMLElement[]>([])\n const [state, setState] = useState<TreeState>({})\n const stateRef = useRef(state)\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n\n useEffect(() => {\n focusedElementRef.current = focusedElement\n }, [focusedElement])\n\n useEffect(() => {\n stateRef.current = state\n }, [state])\n\n const registerItem = useCallback(\n (element: HTMLElement, path: string, expanded: boolean, selected: boolean) => {\n setState((s) => ({...s, [path]: {element, expanded}}))\n\n if (selected) {\n setFocusedElement(element)\n }\n\n return () => {\n setState((s) => {\n const newState = {...s}\n\n delete newState[path]\n\n return newState\n })\n }\n },\n [],\n )\n\n const setExpanded = useCallback((path: string, expanded: boolean) => {\n setState((s) => {\n const itemState = s[path]\n\n if (!itemState) return s\n\n return {...s, [path]: {...itemState, expanded}}\n })\n }, [])\n\n const contextValue: TreeContextValue = useMemo(\n () => ({\n version: 0.0,\n focusedElement: focusedElement || itemElements[0] || null,\n level: 0,\n path,\n registerItem,\n setExpanded,\n setFocusedElement,\n space,\n state,\n }),\n [focusedElement, itemElements, path, registerItem, setExpanded, space, state],\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!focusedElementRef.current) return\n\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n\n const nextEl = _findNextItemElement(\n stateRef.current,\n itemElements,\n focusedElementRef.current,\n )\n\n if (nextEl) {\n _focusItemElement(nextEl)\n setFocusedElement(nextEl)\n }\n\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n\n const prevEl = _findPrevItemElement(\n stateRef.current,\n itemElements,\n focusedElementRef.current,\n )\n\n if (prevEl) {\n _focusItemElement(prevEl)\n setFocusedElement(prevEl)\n }\n\n return\n }\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault()\n\n const itemKey = focusedElementRef.current.getAttribute('data-tree-key')\n\n if (!itemKey) return\n\n const itemState = stateRef.current[itemKey]\n\n if (!itemState) return\n\n if (itemState.expanded) {\n setState((s) => {\n const itemState = s[itemKey]\n\n if (!itemState) return s\n\n return {...s, [itemKey]: {...itemState, expanded: false}}\n })\n } else {\n const itemPath = itemKey.split('/')\n\n itemPath.pop()\n\n const parentKey = itemPath.join('/')\n const parentState = parentKey && stateRef.current[parentKey]\n\n if (parentState) {\n parentState.element.focus()\n setFocusedElement(parentState.element)\n }\n }\n\n return\n }\n\n if (event.key === 'ArrowRight') {\n event.preventDefault()\n\n const focusedKey = focusedElementRef.current.getAttribute('data-tree-key')\n\n if (!focusedKey) return\n\n if (!stateRef.current[focusedKey]?.expanded) {\n setState((s) => {\n const itemState = s[focusedKey]\n\n if (!itemState) return s\n\n return {...s, [focusedKey]: {...itemState, expanded: true}}\n })\n }\n\n return\n }\n },\n [itemElements],\n )\n\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n setFocusedElement(event.target)\n\n // Call the element's `focus` handler\n onFocus?.(event)\n },\n [onFocus],\n )\n\n useEffect(() => {\n if (!ref.current) return\n const _itemElements = Array.from(\n ref.current.querySelectorAll('[data-ui=\"TreeItem\"]'),\n ) as HTMLElement[]\n\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setItemElements(_itemElements)\n }, [children])\n\n return (\n <TreeContext.Provider value={contextValue}>\n <Stack\n as=\"ul\"\n data-ui=\"Tree\"\n {...restProps}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n ref={ref}\n role=\"tree\"\n space={space}\n >\n {children}\n </Stack>\n </TreeContext.Provider>\n )\n})\nTree.displayName = 'ForwardRef(Tree)'\n","import {getTheme_v2} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\n\nimport {rem, ThemeProps} from '../../styles'\nimport {_cardColorStyle} from '../../styles/card'\n\nexport function treeItemRootStyle(): ReturnType<typeof css> {\n return css`\n &[role='none'] > [role='treeitem'] {\n outline: none;\n cursor: default;\n border-radius: 3px;\n\n background-color: var(--card-bg-color);\n color: var(--treeitem-fg-color);\n\n &:focus {\n position: relative;\n }\n }\n\n &[role='treeitem'] {\n outline: none;\n\n & > div {\n cursor: default;\n border-radius: 3px;\n\n background-color: var(--card-bg-color);\n color: var(--treeitem-fg-color);\n }\n\n &:focus > div {\n position: relative;\n }\n }\n `\n}\n\nexport function treeItemRootColorStyle(props: ThemeProps): ReturnType<typeof css> {\n const $tone = 'default'\n const {color} = getTheme_v2(props.theme)\n const tone = color.selectable[$tone]\n\n return css`\n &[role='none'] {\n & > [role='treeitem'] {\n ${_cardColorStyle(color, tone.enabled)}\n }\n\n &[data-selected] > [role='treeitem'] {\n ${_cardColorStyle(color, tone.pressed)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) > [role='treeitem']:not(:focus):hover {\n ${_cardColorStyle(color, tone.hovered)}\n }\n\n & > [role='treeitem']:focus {\n ${_cardColorStyle(color, tone.selected)}\n }\n }\n }\n\n &[role='treeitem'] {\n & > [data-ui='TreeItem__box'] {\n ${_cardColorStyle(color, tone.enabled)}\n }\n\n &[data-selected] > [data-ui='TreeItem__box'] {\n ${_cardColorStyle(color, tone.pressed)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]):not(:focus) > [data-ui='TreeItem__box']:hover {\n ${_cardColorStyle(color, tone.hovered)}\n }\n\n &:focus > [data-ui='TreeItem__box'] {\n ${_cardColorStyle(color, tone.selected)}\n }\n }\n }\n `\n}\n\nexport interface TreeItemBoxStyleProps {\n $level: number\n}\n\nexport function treeItemBoxStyle(\n props: TreeItemBoxStyleProps & ThemeProps,\n): ReturnType<typeof css> {\n const {$level} = props\n const {space} = getTheme_v2(props.theme)\n\n return css`\n padding-left: ${rem(space[2] * $level)};\n\n &[data-as='a'] {\n text-decoration: none;\n }\n `\n}\n","import {useContext} from 'react'\n\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 {Stack} from '../../primitives'\nimport {useTree} from './useTree'\n\nexport interface TreeGroupProps {\n expanded?: boolean\n}\n\nexport function TreeGroup(\n props: TreeGroupProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'role' | 'wrap'>,\n): React.JSX.Element {\n const {children, expanded = false, ...restProps} = props\n const tree = useTree()\n\n return (\n <Stack\n as=\"ul\"\n data-ui=\"TreeGroup\"\n {...restProps}\n hidden={!expanded}\n marginTop={tree.space}\n role=\"group\"\n space={tree.space}\n >\n {children}\n </Stack>\n )\n}\n","import {ToggleArrowRightIcon} from '@sanity/icons'\nimport {ThemeFontWeightKey} from '@sanity/ui/theme'\nimport {useCallback, useEffect, useId, useMemo, useRef, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Box, BoxProps, Flex, Text} from '../../primitives'\nimport {\n treeItemBoxStyle,\n TreeItemBoxStyleProps,\n treeItemRootColorStyle,\n treeItemRootStyle,\n} from './style'\nimport {TreeContext} from './treeContext'\nimport {TreeGroup} from './treeGroup'\nimport {useTree} from './useTree'\n\n/**\n * @beta\n */\nexport interface TreeItemProps {\n expanded?: boolean\n fontSize?: number | number[]\n icon?: React.ElementType\n /**\n * Allows passing a custom element type to the link component\n */\n linkAs?: BoxProps['as']\n padding?: number | number[]\n space?: number | number[]\n text?: React.ReactNode\n weight?: ThemeFontWeightKey\n}\n\nconst StyledTreeItem = 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 function TreeItem(\n props: TreeItemProps & Omit<React.HTMLProps<HTMLLIElement>, 'as' | 'ref' | 'role'>,\n): React.JSX.Element {\n const {\n children,\n expanded: expandedProp = false,\n fontSize = 1,\n href,\n icon: IconComponent,\n id: idProp,\n linkAs,\n muted,\n onClick,\n padding = 2,\n selected = false,\n space = 2,\n text,\n weight,\n ...restProps\n } = props\n const [rootElement, setRootElement] = useState<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, itemKey] = useMemo(() => {\n const itemPath = path.concat([id || ''])\n return [itemPath, itemPath.join('/')]\n }, [id, path])\n const itemState = tree.state[itemKey]\n const focused = tree.focusedElement === rootElement\n const expanded = itemState?.expanded === undefined ? expandedProp : itemState?.expanded || false\n const tabIndex = tree.focusedElement && tree.focusedElement === rootElement ? 0 : -1\n const contextValue = useMemo(\n () => ({...tree, level: tree.level + 1, path: itemPath}),\n [itemPath, tree],\n )\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLLIElement>) => {\n if (onClick) onClick(event)\n\n const target = event.target\n\n if (\n target instanceof HTMLElement &&\n (target.getAttribute('data-ui') === 'TreeItem' ||\n target.closest('[data-ui=\"TreeItem__box\"]'))\n ) {\n event.stopPropagation()\n setExpanded(itemKey, !expanded)\n setFocusedElement(rootElement)\n }\n },\n [expanded, itemKey, onClick, rootElement, setExpanded, setFocusedElement],\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLElement>) => {\n if (focused && event.key === 'Enter') {\n const el = treeitemRef.current || rootElement\n\n el?.click()\n }\n },\n [focused, rootElement],\n )\n\n useEffect(() => {\n if (!rootElement) return\n\n return registerItem(rootElement, itemKey, expanded, selected)\n }, [expanded, itemKey, registerItem, rootElement, selected])\n\n const content = (\n <Flex padding={padding}>\n <Box\n marginRight={space}\n style={{\n visibility: IconComponent || children ? 'visible' : 'hidden',\n pointerEvents: 'none',\n }}\n >\n {IconComponent && (\n <Text muted={muted} size={fontSize} weight={weight}>\n <IconComponent />\n </Text>\n )}\n {!IconComponent && (\n <ToggleArrowText muted={muted} size={fontSize} weight={weight}>\n <ToggleArrowRightIcon style={{transform: expanded ? 'rotate(90deg)' : undefined}} />\n </ToggleArrowText>\n )}\n </Box>\n <Box flex={1}>\n <Text muted={muted} size={fontSize} textOverflow=\"ellipsis\" weight={weight}>\n {text}\n </Text>\n </Box>\n </Flex>\n )\n\n if (href) {\n return (\n <StyledTreeItem\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={setRootElement}\n role=\"none\"\n >\n <TreeItemBox\n $level={tree.level}\n aria-expanded={expanded}\n as={linkAs}\n data-ui=\"TreeItem__box\"\n href={href}\n ref={treeitemRef}\n role=\"treeitem\"\n tabIndex={tabIndex}\n >\n {content}\n </TreeItemBox>\n\n <TreeContext.Provider value={contextValue}>\n {children && <TreeGroup hidden={!expanded}>{children}</TreeGroup>}\n </TreeContext.Provider>\n </StyledTreeItem>\n )\n }\n\n return (\n <StyledTreeItem\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={setRootElement}\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 </StyledTreeItem>\n )\n}\nTreeItem.displayName = 'TreeItem'\n"],"names":["_raf","fn","frameId","requestAnimationFrame","cancelAnimationFrame","_raf2","innerDispose","outerDispose","_hasFocus","element","Boolean","document","activeElement","contains","isFocusable","tabIndex","getAttribute","isHTMLAnchorElement","href","rel","isHTMLInputElement","type","disabled","isHTMLButtonElement","isHTMLSelectElement","isHTMLTextAreaElement","attemptFocus","focus","focusFirstDescendant","i","childNodes","length","child","isHTMLElement","focusLastDescendant","useArrayProp","val","defaultVal","useMemo","_getArrayProp","_getElements","elementsArg","ret","el","Array","isArray","push","filter","useClickOutside","listener","EMPTY_ARRAY","boundaryElement","setElement","useState","elements","setElements","elementsRef","useRef","useEffect","prevElements","current","nextElements","includes","handleWindowMouseDown","evt","target","Node","window","addEventListener","removeEventListener","useElementRect","useElementSize","_contentRect","useForwardedRef","ref","innerRef","useImperativeHandle","ErrorBoundary","Component","state","error","getDerivedStateFromError","componentDidCatch","info","props","onCatch","render","message","jsx","Code","children","StyledAutocomplete","styled","div","withConfig","displayName","componentId","ListBox","Box","rotate","keyframes","AnimatedSpinnerIcon","SpinnerIcon","AutocompleteOption","id","onSelect","selected","value","handleClick","useCallback","setTimeout","handleKeyDown","event","key","_isEnterToClickElement","currentTarget","autocompleteReducer","msg","activeValue","focused","query","listFocused","AUTOCOMPLETE_LISTBOX_IGNORE_KEYS","AUTOCOMPLETE_POPOVER_PLACEMENT","AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS","DEFAULT_RENDER_VALUE","option","DEFAULT_FILTER_OPTION","toLowerCase","indexOf","InnerAutocomplete","forwardRef","forwardedRef","border","customValidity","filterOption","filterOptionProp","fontSize","icon","listBox","EMPTY_RECORD","loading","onBlur","onChange","onFocus","onQueryChange","openButton","openOnFocus","options","optionsProp","padding","paddingProp","popover","prefix","radius","readOnly","relatedElements","renderOption","renderOptionProp","renderPopover","renderValue","suffix","valueProp","restProps","dispatch","useReducer","defaultRenderOption","Card","Text","rootElementRef","resultsPopoverElementRef","inputElementRef","listBoxElementRef","inputElement","setInputElement","listFocusedRef","valueRef","valuePropRef","popoverMouseWithinRef","listBoxId","currentOption","find","o","undefined","filteredOptions","filteredOptionsLen","activeItemId","expanded","handleRootBlur","concat","focusInside","e","handleRootFocus","listBoxElement","focusedElement","HTMLElement","handleOptionSelect","v","handleRootKeyDown","preventDefault","activeOption","activeIndex","nextActiveOption","listEl","handleInputChange","nextQuery","dispatchOpen","handleInputFocus","handlePopoverMouseEnter","handlePopoverMouseLeave","handleClearButtonClick","handleClearButtonFocus","listElement","activeItemElement","clearButton","openButtonBoxPadding","map","openButtonPadding","Math","max","openButtonProps","handleOpenClick","onClick","openButtonNode","Button","ChevronDownIcon","inputValue","handleListBoxKeyDown","content","Stack","active","cloneElement","results","Popover","jsxs","TextInput","RenderPopover","hidden","onMouseEnter","onMouseLeave","Autocomplete","StyledBreadcrumbs","ol","ExpandButton","Breadcrumbs","maxLength","separator","space","spaceRaw","open","setOpen","expandElementRef","popoverElementRef","collapse","expand","useClickOutsideEvent","rawItems","Children","toArray","isValidElement","items","useItems","item","itemIndex","Fragment","len","beforeLength","ceil","afterLength","floor","slice","dialogStyle","theme","color","getTheme_v2","display","backdrop","responsiveDialogPositionStyle","media","_responsive","$position","position","animationDialogStyle","$animate","css","DialogContext","createGlobalScopedContext","version","useDialog","useContext","isTargetWithinScope","portalElement","containsOrEqualsElement","StyledDialog","Layer","responsivePaddingStyle","DialogContainer","Container","DialogCardRoot","DialogLayout","Flex","DialogHeader","DialogContent","DialogFooter","DialogCard","__unstable_autoFocus","autoFocus","__unstable_hideCloseButton","hideCloseButton","contentRef","forwardedContentRef","footer","header","onClickOutside","onClose","portal","portalProp","radiusProp","scheme","shadow","shadowProp","width","widthProp","usePortal","useBoundaryElement","layer","useLayer","isTopLayer","labelId","showCloseButton","showHeader","useGlobalKeyDown","stopPropagation","CloseIcon","Dialog","dialog","useTheme_v2","cardRadius","cardRadiusProp","cardShadow","onActivate","_positionProp","zOffset","_zOffsetProp","animate","_animate","positionProp","zOffsetProp","usePrefersReducedMotion","preDivRef","postDivRef","cardRef","focusedElementRef","handleFocus","cardElement","rootClickTimeoutRef","handleRootClick","clearTimeout","body","Portal","DialogProvider","contextValue","MenuButton","__unstable_disableRestoreFocusOnClose","disableRestoreFocusOnClose","deprecated_boundaryElement","button","buttonProp","menu","menuProp","onOpen","placement","deprecated_placement","popoverScheme","deprecated_popoverScheme","deprecated_portal","popoverRadius","deprecated_popoverRadius","preventOverflow","deprecated_preventOverflow","shouldFocus","setShouldFocus","buttonElement","setButtonElement","menuElements","setChildMenuElements","openRef","handleButtonClick","handleMouseDown","handleButtonKeyDown","handleMenuClickOutside","handleMenuEscape","handleBlur","relatedTarget","handleItemClick","registerElement","els","_el","popoverProps","overflow","keyframe","animation","skeletonStyle","$visible","$animated","StyledSkeleton","responsiveRadiusStyle","Skeleton","animated","delay","visible","setVisible","timeout","$size","$style","font","fontStyle","sizeIndex","sizes","height","lineHeight","ascenderHeight","descenderHeight","TextSkeleton","size","LabelSkeleton","HeadingSkeleton","CodeSkeleton","TabPanel","flex","LOADING_BAR_HEIGHT","STATUS_CARD_TONE","warning","success","BUTTON_TONE","TextBox","StyledToast","LoadingBar","LoadingBarMask","LoadingBarProgress","default","tone","enabled","bg","ROLES","LONG_ENOUGH_BUT_NOT_TOO_LONG","Toast","closable","description","duration","title","status","updatedAt","cardTone","buttonTone","role","visualDuration","transition","bounce","hasDuration","isFinite","container","verticalAlign","scaleX","ease","initial","y","scale","zIndex","opacity","when","staggerChildren","slideIn","slideOut","willChange","MotionToast","motion","create","MotionFlex","MotionText","MotionLoadingBar","MotionLoadingBarProgress","useMounted","useSyncExternalStore","subscribe","ToastContext","ToastLayer","paddingX","paddingY","gap","StyledLayer","Grid","toastId","generateToastId","String","ToastProvider","setState","mounted","params","startTransition","prevState","toast","dismiss","currentState","Date","now","LayerProvider","AnimatePresence","useToast","Error","isRecord","_findPrevItemElement","itemElements","idx","itemKey","segments","split","pop","p","j","k","join","_findNextItemElement","_focusItemElement","firstChild","TreeContext","Tree","setFocusedElement","path","setItemElements","stateRef","registerItem","s","newState","setExpanded","itemState","level","nextEl","prevEl","itemPath","parentKey","parentState","focusedKey","_itemElements","from","querySelectorAll","treeItemRootStyle","treeItemRootColorStyle","$tone","selectable","_cardColorStyle","pressed","hovered","treeItemBoxStyle","$level","rem","useTree","tree","TreeGroup","StyledTreeItem","li","TreeItemBox","attrs","forwardedAs","ToggleArrowText","TreeItem","expandedProp","IconComponent","idProp","linkAs","muted","text","weight","rootElement","setRootElement","treeitemRef","_id","useId","closest","click","visibility","pointerEvents","ToggleArrowRightIcon","transform"],"mappings":"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"}
|