@sanity/ui 4.0.6 → 4.1.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.
Files changed (61) hide show
  1. package/dist/{arrow-BBpqkhzC.js → arrow-C6TlkggA.js} +6 -5
  2. package/dist/arrow-C6TlkggA.js.map +1 -0
  3. package/dist/autocomplete.d.ts.map +1 -1
  4. package/dist/autocomplete.js +38 -42
  5. package/dist/autocomplete.js.map +1 -1
  6. package/dist/breadcrumbs.d.ts.map +1 -1
  7. package/dist/breadcrumbs.js +32 -34
  8. package/dist/breadcrumbs.js.map +1 -1
  9. package/dist/{button-DPIMguMh.js → button-D3iEd7Je.js} +11 -11
  10. package/dist/button-D3iEd7Je.js.map +1 -0
  11. package/dist/button-dnqMFkWg.d.ts.map +1 -1
  12. package/dist/code.js +2 -2
  13. package/dist/code.js.map +1 -1
  14. package/dist/{codeFontStyle-DHrcV3wD.js → codeFontStyle-84SMhFtI.js} +2 -2
  15. package/dist/{codeFontStyle-DHrcV3wD.js.map → codeFontStyle-84SMhFtI.js.map} +1 -1
  16. package/dist/{flex-CDMKJ54v.js → flex-CySCBzQm.js} +3 -3
  17. package/dist/{flex-CDMKJ54v.js.map → flex-CySCBzQm.js.map} +1 -1
  18. package/dist/{grid-CFhbAO8d.js → grid-I2TNptX-.js} +3 -3
  19. package/dist/{grid-CFhbAO8d.js.map → grid-I2TNptX-.js.map} +1 -1
  20. package/dist/{helpers-CmuDTEVl.js → helpers-C8xxXAQC.js} +6 -3
  21. package/dist/helpers-C8xxXAQC.js.map +1 -0
  22. package/dist/{hotkeys-B8-FMlBd.js → hotkeys-Bi6Q5963.js} +29 -29
  23. package/dist/hotkeys-Bi6Q5963.js.map +1 -0
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +318 -352
  26. package/dist/index.js.map +1 -1
  27. package/dist/layer-BK7xWHcE.js +61 -0
  28. package/dist/layer-BK7xWHcE.js.map +1 -0
  29. package/dist/layer-ChlP9Ik6.d.ts.map +1 -1
  30. package/dist/menu.d.ts.map +1 -1
  31. package/dist/menu.js +51 -39
  32. package/dist/menu.js.map +1 -1
  33. package/dist/{popover-dCgSQgsm.js → popover-CdBTZDvj.js} +22 -32
  34. package/dist/popover-CdBTZDvj.js.map +1 -0
  35. package/dist/popover.js +1 -1
  36. package/dist/{responsiveFont-CYyTL7C5.js → responsiveFont-CilwaORG.js} +2 -2
  37. package/dist/{responsiveFont-CYyTL7C5.js.map → responsiveFont-CilwaORG.js.map} +1 -1
  38. package/dist/{stack-BKKeh5M0.js → stack-BGFEokua.js} +4 -4
  39. package/dist/{stack-BKKeh5M0.js.map → stack-BGFEokua.js.map} +1 -1
  40. package/dist/styles.css +408 -0
  41. package/dist/{textInput-Cp2Jvgw1.js → textInput-Bu3QuADZ.js} +39 -51
  42. package/dist/textInput-Bu3QuADZ.js.map +1 -0
  43. package/dist/toast.d.ts.map +1 -1
  44. package/dist/toast.js +80 -76
  45. package/dist/toast.js.map +1 -1
  46. package/dist/tooltip.d.ts.map +1 -1
  47. package/dist/tooltip.js +88 -101
  48. package/dist/tooltip.js.map +1 -1
  49. package/dist/{useClickOutsideEvent-CQ40LrHo.js → useClickOutsideEvent-wGLGWBZN.js} +2 -2
  50. package/dist/{useClickOutsideEvent-CQ40LrHo.js.map → useClickOutsideEvent-wGLGWBZN.js.map} +1 -1
  51. package/dist/{useLayer-DzgZ2cTe.js → useLayer-jUJIz8mh.js} +2 -2
  52. package/dist/{useLayer-DzgZ2cTe.js.map → useLayer-jUJIz8mh.js.map} +1 -1
  53. package/package.json +12 -11
  54. package/dist/arrow-BBpqkhzC.js.map +0 -1
  55. package/dist/button-DPIMguMh.js.map +0 -1
  56. package/dist/helpers-CmuDTEVl.js.map +0 -1
  57. package/dist/hotkeys-B8-FMlBd.js.map +0 -1
  58. package/dist/layer-BQuAIq9M.js +0 -61
  59. package/dist/layer-BQuAIq9M.js.map +0 -1
  60. package/dist/popover-dCgSQgsm.js.map +0 -1
  61. package/dist/textInput-Cp2Jvgw1.js.map +0 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["width = 2","_getArrayProp(width)","<StyledContainer\n data-ui=\"Container\"\n {...restProps}\n $width={_getArrayProp(width)}\n forwardedAs={as}\n ref={ref}\n />","_getArrayProp(radiusProp)","_getArrayProp(shadowProp)","_getArrayProp(widthProp)","() => ref.current","() => contentRef.current","() => {\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]","(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 }","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 )","isTopLayer &&\n onClickOutside &&\n ((event) => {\n // oxlint-disable-next-line no-unsafe-type-assertion\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 })","target","event","() => [ref.current]","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 )","<DialogContent flex={1} ref={contentRef} tabIndex={-1}>\n {children}\n </DialogContent>","footer && <DialogFooter>{footer}</DialogFooter>","<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>","<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>","<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>","autoFocus = true","hideCloseButton = false","cardRadiusProp = 4","cardShadow = 3","paddingProp = 3","widthProp = 0","_animate = false","_getArrayProp(cardRadiusProp)","_getArrayProp(paddingProp)","_getArrayProp(positionProp)","_getArrayProp(zOffsetProp)","(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 }","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 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 }","cardElement","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])","<div ref={preDivRef} tabIndex={0} />","<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>","<div ref={postDivRef} tabIndex={0} />","<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 // oxlint-disable-next-line prefer-tag-over-role\n role=\"dialog\"\n zOffset={zOffset}\n >\n {/* oxlint-disable-next-line 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 {/* oxlint-disable-next-line no-noninteractive-tabindex */}\n <div ref={postDivRef} tabIndex={0} />\n </StyledDialog>","<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 // oxlint-disable-next-line prefer-tag-over-role\n role=\"dialog\"\n zOffset={zOffset}\n >\n {/* oxlint-disable-next-line 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 {/* oxlint-disable-next-line no-noninteractive-tabindex */}\n <div ref={postDivRef} tabIndex={0} />\n </StyledDialog>\n </Portal>","{\n version: 0.0,\n position,\n zOffset,\n }","useMemo(\n () => ({\n version: 0.0,\n position,\n zOffset,\n }),\n [position, zOffset],\n )","<DialogContext.Provider value={contextValue}>{children}</DialogContext.Provider>","DialogContext.Provider","animated = false","() => {\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]","_getArrayProp(radius)","<StyledSkeleton\n {...restProps}\n $animated={animated}\n $radius={_getArrayProp(radius)}\n $visible={delay ? visible : true}\n ref={ref}\n />","delay ? visible : true","size = 2","_getArrayProp(size)","<StyledSkeleton {...restProps} $size={$size} $style=\"text\" />","<StyledSkeleton {...restProps} $size={$size} $style=\"label\" />","<StyledSkeleton {...restProps} $size={$size} $style=\"heading\" />","<StyledSkeleton {...restProps} $size={$size} $style=\"code\" />","fontSize = 1","padding = 2","() => ref.current","() => {\n focusedRef.current = false\n }","useCallback(() => {\n focusedRef.current = false\n }, [])","(event: React.FocusEvent<HTMLButtonElement>) => {\n focusedRef.current = true\n if (onFocus) onFocus(event)\n }","useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n focusedRef.current = true\n if (onFocus) onFocus(event)\n },\n [onFocus],\n )","() => {\n if (focused && !focusedRef.current) {\n if (ref.current) ref.current.focus()\n focusedRef.current = true\n }\n }","[focused]","<CustomButton\n data-ui=\"Tab\"\n {...restProps}\n aria-selected={selected ? 'true' : 'false'}\n fontSize={fontSize}\n icon={icon}\n id={id}\n mode=\"bleed\"\n onClick={onClick}\n onBlur={handleBlur}\n onFocus={handleFocus}\n padding={padding}\n ref={ref}\n role=\"tab\"\n selected={selected}\n tabIndex={selected ? 0 : -1}\n text={label}\n type=\"button\"\n />","selected ? 'true' : 'false'","selected ? 0 : -1","children.map((child, childIndex) =>\n cloneElement(child, {\n focused: focusedIndex === childIndex,\n key: childIndex,\n onFocus: () => setFocusedIndex(childIndex),\n }),\n )","(child, childIndex) =>\n cloneElement(child, {\n focused: focusedIndex === childIndex,\n key: childIndex,\n onFocus: () => setFocusedIndex(childIndex),\n })","(event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n setFocusedIndex((prevIndex) => (prevIndex + numTabs - 1) % numTabs)\n }\n\n if (event.key === 'ArrowRight') {\n setFocusedIndex((prevIndex) => (prevIndex + 1) % numTabs)\n }\n }","prevIndex","useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n setFocusedIndex((prevIndex) => (prevIndex + numTabs - 1) % numTabs)\n }\n\n if (event.key === 'ArrowRight') {\n setFocusedIndex((prevIndex) => (prevIndex + 1) % numTabs)\n }\n },\n [numTabs],\n )","<CustomInline\n data-ui=\"TabList\"\n {...restProps}\n onKeyDown={handleKeyDown}\n ref={ref}\n role=\"tablist\"\n >\n {tabs}\n </CustomInline>","<Box\n data-ui=\"TabPanel\"\n {...restProps}\n flex={flex}\n role=\"tabpanel\"\n tabIndex={props.tabIndex === undefined ? 0 : props.tabIndex}\n >\n {props.children}\n </Box>","children","props.tabIndex === undefined ? 0 : props.tabIndex","gap = 1","[]","useMemo(() => [], [])","{}","() => ref.current","() => {\n focusedElementRef.current = focusedElement\n }","[focusedElement]","() => {\n stateRef.current = state\n }","[state]","(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 }","path","s","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 )","(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 }","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 version: 0.0,\n focusedElement: focusedElement || itemElements[0] || null,\n level: 0,\n path,\n registerItem,\n setExpanded,\n setFocusedElement,\n gap,\n state,\n }","focusedElement || itemElements[0] || null","useMemo(\n () => ({\n version: 0.0,\n focusedElement: focusedElement || itemElements[0] || null,\n level: 0,\n path,\n registerItem,\n setExpanded,\n setFocusedElement,\n gap,\n state,\n }),\n [focusedElement, gap, itemElements, path, registerItem, setExpanded, state],\n )","(event: React.KeyboardEvent<HTMLUListElement>) => {\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 }","itemState","useCallback(\n (event: React.KeyboardEvent<HTMLUListElement>) => {\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 )","(event: React.FocusEvent<HTMLUListElement>) => {\n setFocusedElement(event.target)\n\n // Call the element's `focus` handler\n onFocus?.(event)\n }","event","useCallback(\n (event: React.FocusEvent<HTMLUListElement>) => {\n setFocusedElement(event.target)\n\n // Call the element's `focus` handler\n onFocus?.(event)\n },\n [onFocus],\n )","() => {\n if (!ref.current) return\n const _itemElements = Array.from(\n ref.current.querySelectorAll('[data-ui=\"TreeItem\"]'),\n ) as HTMLElement[]\n\n setItemElements(_itemElements)\n // oxlint-disable-next-line react/exhaustive-effect-dependencies\n }","[children]","<Stack\n as=\"ul\"\n data-ui=\"Tree\"\n {...restProps}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n ref={ref}\n role=\"tree\"\n gap={gap}\n >\n {children}\n </Stack>","<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 gap={gap}\n >\n {children}\n </Stack>\n </TreeContext.Provider>","TreeContext.Provider","expanded = false","<Stack\n as=\"ul\"\n data-ui=\"TreeGroup\"\n {...restProps}\n hidden={!expanded}\n marginTop={tree.gap}\n // oxlint-disable-next-line prefer-tag-over-role\n role=\"group\"\n gap={tree.gap}\n >\n {children}\n </Stack>","!expanded","gap","expandedProp = false","fontSize = 1","padding = 2","selected = false","gap = 2","(node: HTMLLIElement | null) => {\n startTransition(() => _setRootElement(node))\n }","useCallback((node: HTMLLIElement | null) => {\n startTransition(() => _setRootElement(node))\n }, [])","itemPath","itemPath.join('/')","[itemPath, itemPath.join('/')]","useMemo(() => {\n const itemPath = path.concat([id || ''])\n return [itemPath, itemPath.join('/')]\n }, [id, path])","{...tree, level: tree.level + 1, path: itemPath}","tree.level + 1","useMemo(\n () => ({...tree, level: tree.level + 1, path: itemPath}),\n [itemPath, tree],\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 }","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 )","(event: React.KeyboardEvent<HTMLElement>) => {\n if (focused && event.key === 'Enter') {\n const el = treeitemRef.current || rootElement\n\n el?.click()\n }\n }","event","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 if (!rootElement) return\n\n return registerItem(rootElement, itemKey, expanded, selected)\n }","[expanded, itemKey, registerItem, rootElement, selected]","{\n visibility: IconComponent || children ? 'visible' : 'hidden',\n pointerEvents: 'none',\n }","IconComponent || children ? 'visible' : 'hidden'","IconComponent && (\n <Text muted={muted} size={fontSize} weight={weight}>\n <IconComponent />\n </Text>\n )","!IconComponent && (\n <ToggleArrowText muted={muted} size={fontSize} weight={weight}>\n <ToggleArrowRightIcon style={{transform: expanded ? 'rotate(90deg)' : undefined}} />\n </ToggleArrowText>\n )","<Box\n marginRight={gap}\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>","<Box flex={1}>\n <Text muted={muted} size={fontSize} textOverflow=\"ellipsis\" weight={weight}>\n {text}\n </Text>\n </Box>","<Flex padding={padding}>\n <Box\n marginRight={gap}\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>","<TreeItemBox\n {...linkProps}\n $level={tree.level}\n aria-expanded={expanded}\n as={linkAs}\n data-as={typeof linkAs === 'string' ? linkAs : 'a'}\n data-ui=\"TreeItem__box\"\n href={href}\n ref={treeitemRef}\n role=\"treeitem\"\n tabIndex={tabIndex}\n >\n {content}\n </TreeItemBox>","typeof linkAs === 'string' ? linkAs : 'a'","level","children && <TreeGroup hidden={!expanded}>{children}</TreeGroup>","<TreeContext.Provider value={contextValue}>\n {children && <TreeGroup hidden={!expanded}>{children}</TreeGroup>}\n </TreeContext.Provider>","TreeContext.Provider","<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 {...linkProps}\n $level={tree.level}\n aria-expanded={expanded}\n as={linkAs}\n data-as={typeof linkAs === 'string' ? linkAs : 'a'}\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>","selected ? '' : undefined","<TreeItemBox $level={tree.level} as=\"div\" data-ui=\"TreeItem__box\">\n {content}\n </TreeItemBox>","children && <TreeGroup expanded={expanded}>{children}</TreeGroup>","<TreeContext.Provider value={contextValue}>\n {children && <TreeGroup expanded={expanded}>{children}</TreeGroup>}\n </TreeContext.Provider>","<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>","() => false","getServerSnapshot = () => false","muted = false","size = 2","<SpanWithTextOverflow>{children}</SpanWithTextOverflow>","<span>{children}</span>","_getArrayProp(align)","_getArrayProp(size)","<StyledLabel\n data-ui=\"Label\"\n {...restProps}\n $accent={accent}\n $align={_getArrayProp(align)}\n $muted={muted}\n $size={_getArrayProp(size)}\n $weight={weight}\n ref={ref}\n >\n {children}\n </StyledLabel>","color = 'gray'","status = 'online'","sizeProp = 1","() => {\n if (arrowPosition === arrowPositionProp) return undefined\n\n // Start animation in the next frame\n const raf = requestAnimationFrame(() => setArrowPosition(arrowPositionProp))\n\n return () => cancelAnimationFrame(raf)\n }","[arrowPosition, arrowPositionProp]","() => {\n // oxlint-disable-next-line react/set-state-in-effect\n if (src) setImageFailed(false)\n }","[src]","() => {\n setImageFailed(true)\n\n if (onImageLoadError) {\n onImageLoadError(new Error('Avatar: the image failed to load'))\n }\n }","useCallback(() => {\n setImageFailed(true)\n\n if (onImageLoadError) {\n onImageLoadError(new Error('Avatar: the image failed to load'))\n }\n }, [onImageLoadError])","<Arrow>\n <svg width=\"11\" height=\"7\" viewBox=\"0 0 11 7\" fill=\"none\">\n <path\n d=\"M6.67948 1.50115L11 7L0 7L4.32052 1.50115C4.92109 0.736796 6.07891 0.736795 6.67948 1.50115Z\"\n fill={color}\n />\n </svg>\n </Arrow>","!imageFailed && src && (\n <AvatarImage viewBox={`0 0 ${_sizeRem} ${_sizeRem}`} fill=\"none\">\n <defs>\n <pattern id={imageId} patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <image href={src} width=\"1\" height=\"1\" onError={handleImageError} />\n </pattern>\n </defs>\n\n <circle cx={_radius} cy={_radius} r={_radius} fill={`url(#${imageId})`} />\n\n {!__unstable_hideInnerStroke && (\n <BgStroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n vectorEffect=\"non-scaling-stroke\"\n />\n )}\n\n <Stroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n vectorEffect=\"non-scaling-stroke\"\n />\n </AvatarImage>\n )","(s) => {\n if (s === 1) return 1\n if (s === 2) return 3\n if (s === 3) return 5\n\n return 0\n }","<StyledAvatar\n as={as}\n data-as={typeof as === 'string' ? as : undefined}\n data-ui=\"Avatar\"\n {...restProps}\n $color={color}\n $size={size}\n aria-label={title}\n data-arrow-position={arrowPosition}\n data-status={status}\n ref={ref}\n title={title}\n >\n <Arrow>\n <svg width=\"11\" height=\"7\" viewBox=\"0 0 11 7\" fill=\"none\">\n <path\n d=\"M6.67948 1.50115L11 7L0 7L4.32052 1.50115C4.92109 0.736796 6.07891 0.736795 6.67948 1.50115Z\"\n fill={color}\n />\n </svg>\n </Arrow>\n\n {!imageFailed && src && (\n <AvatarImage viewBox={`0 0 ${_sizeRem} ${_sizeRem}`} fill=\"none\">\n <defs>\n <pattern id={imageId} patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <image href={src} width=\"1\" height=\"1\" onError={handleImageError} />\n </pattern>\n </defs>\n\n <circle cx={_radius} cy={_radius} r={_radius} fill={`url(#${imageId})`} />\n\n {!__unstable_hideInnerStroke && (\n <BgStroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n vectorEffect=\"non-scaling-stroke\"\n />\n )}\n\n <Stroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n vectorEffect=\"non-scaling-stroke\"\n />\n </AvatarImage>\n )}\n\n {(imageFailed || !src) && initials && (\n <>\n <Initials>\n <InitialsLabel\n forwardedAs=\"span\"\n size={size.map((s) => {\n if (s === 1) return 1\n if (s === 2) return 3\n if (s === 3) return 5\n\n return 0\n })}\n weight=\"medium\"\n >\n {initials}\n </InitialsLabel>\n </Initials>\n </>\n )}\n </StyledAvatar>","StyledAvatar","(imageFailed || !src) && initials && (\n <>\n <Initials>\n <InitialsLabel\n forwardedAs=\"span\"\n size={size.map((s) => {\n if (s === 1) return 1\n if (s === 2) return 3\n if (s === 3) return 5\n\n return 0\n })}\n weight=\"medium\"\n >\n {initials}\n </InitialsLabel>\n </Initials>\n </>\n )","typeof as === 'string' ? as : undefined","\"Avatar\"","sizeProp = 1","Label","StyledAvatarCounter","\"span\"","size.map((s) => {\n if (s === 1) return 1\n if (s === 2) return 3\n if (s === 3) return 5\n\n return 0\n })","size","\"AvatarCounter\"","ref","(s) => {\n if (s === 1) return 1\n if (s === 2) return 3\n if (s === 3) return 5\n\n return 0\n }","<Label\n as=\"span\"\n size={size.map((s) => {\n if (s === 1) return 1\n if (s === 2) return 3\n if (s === 3) return 5\n\n return 0\n })}\n weight=\"medium\"\n >\n {count}\n </Label>","<StyledAvatarCounter $size={size} data-ui=\"AvatarCounter\" ref={ref}>\n <Label\n as=\"span\"\n size={size.map((s) => {\n if (s === 1) return 1\n if (s === 2) return 3\n if (s === 3) return 5\n\n return 0\n })}\n weight=\"medium\"\n >\n {count}\n </Label>\n </StyledAvatarCounter>","maxLengthProp = 4","sizeProp = 1","StyledAvatarStack","\"AvatarStack\"","restProps","ref","size","len === 0 && (\n <div>\n <AvatarCounter count={len} size={size} />\n </div>\n )","len !== 0 && extraCount > 1 && (\n <div>\n <AvatarCounter count={extraCount} size={size} />\n </div>\n )","visibleChildren.map((child, childIndex) => (\n // oxlint-disable-next-line no-array-index-key\n <div key={String(childIndex)}>{cloneElement(child, {size})}</div>\n ))","_getArrayProp(sizeProp)","(child, childIndex) => (\n // oxlint-disable-next-line no-array-index-key\n <div key={String(childIndex)}>{cloneElement(child, {size})}</div>\n )","<StyledAvatarStack data-ui=\"AvatarStack\" {...restProps} ref={ref} $size={size}>\n {len === 0 && (\n <div>\n <AvatarCounter count={len} size={size} />\n </div>\n )}\n\n {len !== 0 && extraCount > 1 && (\n <div>\n <AvatarCounter count={extraCount} size={size} />\n </div>\n )}\n\n {visibleChildren.map((child, childIndex) => (\n // oxlint-disable-next-line no-array-index-key\n <div key={String(childIndex)}>{cloneElement(child, {size})}</div>\n ))}\n </StyledAvatarStack>","fontSize = 1","padding = 1","radius = 'full'","tone = 'default'","_getArrayProp(radius)","_getArrayProp(padding)","<Text size={fontSize}>{children}</Text>","<StyledBadge\n data-ui=\"Badge\"\n {...restProps}\n $tone={tone}\n $radius={_getArrayProp(radius)}\n padding={_getArrayProp(padding)}\n ref={ref}\n >\n <Text size={fontSize}>{children}</Text>\n </StyledBadge>","() => ref.current","() => {\n if (ref.current) {\n // Set the indeterminate state\n ref.current.indeterminate = indeterminate || false\n }\n }","[indeterminate]","<Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-error={customValidity ? '' : undefined}\n {...restProps}\n checked={checked}\n disabled={disabled || readOnly}\n type=\"checkbox\"\n readOnly={readOnly}\n ref={ref}\n />","!disabled && readOnly ? '' : undefined","customValidity ? '' : undefined","disabled || readOnly","<span>\n <CheckmarkIcon />\n <RemoveIcon />\n </span>","<StyledCheckbox className={className} data-ui=\"Checkbox\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-error={customValidity ? '' : undefined}\n {...restProps}\n checked={checked}\n disabled={disabled || readOnly}\n type=\"checkbox\"\n readOnly={readOnly}\n ref={ref}\n />\n <span>\n <CheckmarkIcon />\n <RemoveIcon />\n </span>\n </StyledCheckbox>","accent = false","muted = false","size = 2","<SpanWithTextOverflow>{children}</SpanWithTextOverflow>","_getArrayProp(align)","_getArrayProp(size)","<span>{children}</span>","<StyledHeading\n data-ui=\"Heading\"\n {...restProps}\n $accent={accent}\n $align={_getArrayProp(align)}\n $muted={muted}\n $size={_getArrayProp(size)}\n $weight={weight}\n ref={ref}\n >\n <span>{children}</span>\n </StyledHeading>","() => ref.current","<Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-error={customValidity ? '' : undefined}\n {...restProps}\n disabled={disabled || readOnly}\n readOnly={readOnly}\n ref={ref}\n type=\"radio\"\n />","!disabled && readOnly ? '' : undefined","customValidity ? '' : undefined","disabled || readOnly","<span />","<StyledRadio className={className} data-ui=\"Radio\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-error={customValidity ? '' : undefined}\n {...restProps}\n disabled={disabled || readOnly}\n readOnly={readOnly}\n ref={ref}\n type=\"radio\"\n />\n <span />\n </StyledRadio>","fontSize = 2","gap = 3","padding = 3","radius = 2","() => ref.current","_getArrayProp(fontSize)","_getArrayProp(padding)","_getArrayProp(radius)","_getArrayProp(gap)","<Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-ui=\"Select\"\n {...restProps}\n $fontSize={_getArrayProp(fontSize)}\n $padding={_getArrayProp(padding)}\n $radius={_getArrayProp(radius)}\n $space={_getArrayProp(gap)}\n disabled={disabled || readOnly}\n ref={ref}\n >\n {children}\n </Input>","disabled || readOnly","!disabled && readOnly ? '' : undefined","<ChevronDownIcon />","<Text size={fontSize}>\n <ChevronDownIcon />\n </Text>","<IconBox padding={padding}>\n <Text size={fontSize}>\n <ChevronDownIcon />\n </Text>\n </IconBox>","<StyledSelect data-ui=\"Select\">\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-ui=\"Select\"\n {...restProps}\n $fontSize={_getArrayProp(fontSize)}\n $padding={_getArrayProp(padding)}\n $radius={_getArrayProp(radius)}\n $space={_getArrayProp(gap)}\n disabled={disabled || readOnly}\n ref={ref}\n >\n {children}\n </Input>\n\n <IconBox padding={padding}>\n <Text size={fontSize}>\n <ChevronDownIcon />\n </Text>\n </IconBox>\n </StyledSelect>","() => ref.current","() => {\n if (ref.current) {\n // Set the indeterminate state\n ref.current.indeterminate = indeterminate || false\n }\n }","[indeterminate]","<Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n {...restProps}\n checked={indeterminate !== true && checked}\n disabled={disabled || readOnly}\n type=\"checkbox\"\n ref={ref}\n />","!disabled && readOnly ? '' : undefined","indeterminate !== true && checked","disabled || readOnly","<Track />","<Representation aria-hidden data-name=\"representation\">\n <Track />\n <Thumb $checked={checked} $indeterminate={indeterminate} />\n </Representation>","<StyledSwitch className={className} data-ui=\"Switch\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n {...restProps}\n checked={indeterminate !== true && checked}\n disabled={disabled || readOnly}\n type=\"checkbox\"\n ref={ref}\n />\n <Representation aria-hidden data-name=\"representation\">\n <Track />\n <Thumb $checked={checked} $indeterminate={indeterminate} />\n </Representation>\n </StyledSwitch>","border = true","disabled = false","fontSize = 2","padding = 3","radius = 2","() => ref.current","_getArrayProp(fontSize)","_getArrayProp(padding)","_getArrayProp(0)","<Input\n data-as=\"textarea\"\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n {...restProps}\n $fontSize={_getArrayProp(fontSize)}\n $padding={_getArrayProp(padding)}\n $scheme={rootTheme.scheme}\n $space={_getArrayProp(0)}\n $tone={rootTheme.tone}\n $weight={weight}\n disabled={disabled}\n ref={ref}\n />","scheme","tone","rootTheme.scheme","rootTheme.tone","_getArrayProp(radius)","<Presentation\n $radius={_getArrayProp(radius)}\n $unstableDisableFocusRing={__unstable_disableFocusRing}\n $scheme={rootTheme.scheme}\n $tone={rootTheme.tone}\n data-border={border ? '' : undefined}\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n />","border ? '' : undefined","<StyledTextArea data-ui=\"TextArea\">\n <InputRoot>\n <Input\n data-as=\"textarea\"\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n {...restProps}\n $fontSize={_getArrayProp(fontSize)}\n $padding={_getArrayProp(padding)}\n $scheme={rootTheme.scheme}\n $space={_getArrayProp(0)}\n $tone={rootTheme.tone}\n $weight={weight}\n disabled={disabled}\n ref={ref}\n />\n <Presentation\n $radius={_getArrayProp(radius)}\n $unstableDisableFocusRing={__unstable_disableFocusRing}\n $scheme={rootTheme.scheme}\n $tone={rootTheme.tone}\n data-border={border ? '' : undefined}\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n />\n </InputRoot>\n </StyledTextArea>","{version: 0.0, element}","useMemo(() => ({version: 0.0, element}), [element])","<BoundaryElementContext.Provider value={value}>{children}</BoundaryElementContext.Provider>","BoundaryElementContext.Provider","eq.length ? eq.join(' ') : undefined","useMemo(() => {\n const eq = findMaxBreakpoints(media, width)\n\n return eq.length ? eq.join(' ') : undefined\n }, [media, width])","eq","useMemo(() => {\n const eq = findMinBreakpoints(media, width)\n\n return eq.length ? eq.join(' ') : undefined\n }, [media, width])","() => element","[\n element,\n ]","<div data-ui=\"ElementQuery\" {...restProps} data-eq-max={max} data-eq-min={min} ref={setElement}>\n {children}\n </div>","() => document.body","() => null","{\n version: 0.0,\n boundaryElement: boundaryElement || null,\n element: element || fallbackElement,\n elements,\n }","boundaryElement || null","element || fallbackElement","useMemo(() => {\n return {\n version: 0.0,\n boundaryElement: boundaryElement || null,\n element: element || fallbackElement,\n elements,\n }\n }, [boundaryElement, element, elements, fallbackElement])","<PortalContext.Provider value={value}>{children}</PortalContext.Provider>","PortalContext.Provider","as = 'div'","<Component aria-hidden className={srOnly} data-ui=\"SrOnly\" ref={ref}>\n {children}\n </Component>","as = 'div'","gap = 0","items = []","() => ref.current","() => {\n if (!wrapperRef.current) return\n\n const firstElement = wrapperRef.current.firstChild\n\n if (firstElement instanceof HTMLElement) {\n setItemHeight(firstElement.offsetHeight)\n }\n // oxlint-disable-next-line react/exhaustive-effect-dependencies\n }","[renderItem]","(): (() => void) | undefined => {\n if (!ref.current) return\n\n const scrollEl = findScrollable(ref.current.parentNode)\n\n if (scrollEl) {\n if (!(scrollEl instanceof HTMLElement)) return\n\n const handleScroll = () => {\n setScrollTop(scrollEl.scrollTop)\n }\n\n scrollEl.addEventListener('scroll', handleScroll, {passive: true})\n\n const ro = new ResizeObserver((entries) => {\n setScrollHeight(entries[0].contentRect.height)\n })\n\n ro.observe(scrollEl)\n\n handleScroll()\n\n // oxlint-disable-next-line consistent-return\n return () => {\n scrollEl.removeEventListener('scroll', handleScroll)\n\n ro.unobserve(scrollEl)\n ro.disconnect()\n }\n }\n\n const handleScroll = () => {\n setScrollTop(window.scrollY)\n }\n\n const handleResize = () => {\n setScrollHeight(window.innerHeight)\n }\n\n window.addEventListener('scroll', handleScroll, {passive: true})\n window.addEventListener('resize', handleResize)\n\n setScrollHeight(window.innerHeight)\n\n handleScroll()\n\n // oxlint-disable-next-line consistent-return\n return () => {\n window.removeEventListener('scroll', handleScroll)\n window.removeEventListener('resize', handleResize)\n }\n }","[]","handleScroll","[fromIndex, gap, itemHeight, onChange, scrollHeight, scrollTop, space, toIndex]","() => {\n if (!onChange) return\n onChange({fromIndex, gap: space[gap], itemHeight, scrollHeight, scrollTop, toIndex})\n }","{\n fromIndex,\n gap,\n itemHeight,\n space,\n toIndex,\n getItemKey,\n items,\n renderItem,\n }","{height}","<div ref={wrapperRef} style={{height}}>\n {children}\n </div>","<StyledVirtualList as={as as 'div'} data-ui=\"VirtualList\" {...restProps} ref={ref}>\n <div ref={wrapperRef} style={{height}}>\n {children}\n </div>\n </StyledVirtualList>","as as 'div'","{\n fromIndex,\n gap,\n getItemKey,\n itemHeight,\n items,\n renderItem,\n space,\n toIndex,\n}: Pick<VirtualListProps, 'getItemKey' | 'renderItem'> &\n Required<Pick<VirtualListProps, 'items'>> & {\n fromIndex: number\n gap: number\n itemHeight: number\n space: number[]\n toIndex: number\n }","renderItem(items[0])","0","[<ItemWrapper key={0}>{renderItem(items[0])}</ItemWrapper>]","items.slice(fromIndex, toIndex).map((item, _itemIndex) => {\n const itemIndex = fromIndex + _itemIndex\n const node = renderItem(item)\n const key = getItemKey ? getItemKey(item, itemIndex) : itemIndex\n\n return (\n <ItemWrapper key={key} style={{top: itemIndex * (itemHeight + space[gap])}}>\n {node}\n </ItemWrapper>\n )\n })","(item, _itemIndex) => {\n const itemIndex = fromIndex + _itemIndex\n const node = renderItem(item)\n const key = getItemKey ? getItemKey(item, itemIndex) : itemIndex\n\n return (\n <ItemWrapper key={key} style={{top: itemIndex * (itemHeight + space[gap])}}>\n {node}\n </ItemWrapper>\n )\n }"],"sources":["../src/core/_compat.ts","../src/core/primitives/container/styles.ts","../src/core/primitives/container/container.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/skeleton/styles.ts","../src/core/components/skeleton/skeleton.tsx","../src/core/components/skeleton/textSkeleton.tsx","../src/core/components/tab/tab.tsx","../src/core/components/tab/tabList.tsx","../src/core/components/tab/tabPanel.tsx","../src/core/components/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","../src/core/helpers/scroll.ts","../src/core/hooks/useArrayProp.ts","../src/core/hooks/useClickOutside.ts","../src/core/hooks/useElementRect/useElementRect.ts","../src/core/hooks/useForwardedRef.ts","../src/core/hooks/usePrefersDark.ts","../src/core/styles/font/labelFontStyle.ts","../src/core/primitives/label/styles.ts","../src/core/primitives/label/label.tsx","../src/core/primitives/avatar/styles.ts","../src/core/primitives/avatar/avatar.tsx","../src/core/primitives/avatar/avatarCounter.tsx","../src/core/primitives/avatar/avatarStack.tsx","../src/core/primitives/badge/styles.ts","../src/core/primitives/badge/badge.tsx","../src/core/primitives/checkbox/styles.ts","../src/core/primitives/checkbox/checkbox.tsx","../src/core/styles/font/headingFontStyle.ts","../src/core/primitives/heading/styles.ts","../src/core/primitives/heading/heading.tsx","../src/core/primitives/radio/styles.ts","../src/core/primitives/radio/radio.tsx","../src/core/primitives/select/styles.ts","../src/core/primitives/select/select.tsx","../src/core/primitives/switch/styles.ts","../src/core/primitives/switch/switch.tsx","../src/core/primitives/textArea/textArea.tsx","../src/core/utils/boundaryElement/boundaryElementProvider.tsx","../src/core/utils/conditionalWrapper/conditionalWrapper.tsx","../src/core/utils/elementQuery/helpers.ts","../src/core/utils/elementQuery/elementQuery.tsx","../src/core/utils/errorBoundary.tsx","../src/core/utils/portal/portalProvider.tsx","../src/core/utils/srOnly/srOnly.css.ts","../src/core/utils/srOnly/srOnly.tsx","../src/core/utils/virtualList/virtualList.tsx"],"sourcesContent":["// This file re-exports API members which existed in the `@sanity/ui` export in v1.\n\nimport {buildTheme} from '../theme/build/buildTheme'\nimport {type HSL as _HSL, type RGB as _RGB} from '../theme/build/lib/color-fns/types'\nimport {\n type ThemeColorButtonModeKey as _ThemeColorButtonModeKey,\n type ThemeColorSchemeKey as _ThemeColorSchemeKey,\n} from '../theme/system/color/_system'\nimport {type ThemeColorSyntax as _ThemeColorSyntax} from '../theme/system/color/syntax'\nimport {\n type ThemeFont as _ThemeFont,\n type ThemeFontKey as _ThemeFontKey,\n type ThemeFonts as _ThemeFonts,\n type ThemeFontSize as _ThemeFontSize,\n type ThemeFontWeight as _ThemeFontWeight,\n type ThemeFontWeightKey as _ThemeFontWeightKey,\n} from '../theme/system/font'\nimport {type ThemeLayer as _ThemeLayer} from '../theme/system/layer'\nimport {type ThemeBoxShadow, type ThemeShadow as _ThemeShadow} from '../theme/system/shadow'\nimport {type ThemeStyles} from '../theme/system/styles'\nimport {\n type BaseTheme as _BaseTheme,\n type RootTheme as _RootTheme,\n type Theme as _Theme,\n} from '../theme/system/theme'\n\n/**\n * @public\n * @deprecated Use `BaseTheme` from `@sanity/ui/theme` instead.\n */\nexport type BaseTheme = _BaseTheme\n\n/**\n * @public\n * @deprecated Use `ThemeBoxShadow` from `@sanity/ui/theme` instead.\n */\nexport type BoxShadow = ThemeBoxShadow\n\n/**\n * @public\n * @deprecated Use `HSL` from `@sanity/ui/theme` instead.\n */\nexport type HSL = _HSL\n\n/**\n * @public\n * @deprecated Use `RGB` from `@sanity/ui/theme` instead.\n */\nexport type RGB = _RGB\n\n/**\n * @public\n * @deprecated Use `RootTheme` from `@sanity/ui/theme` instead.\n */\nexport type RootTheme = _RootTheme\n\n/**\n * @public\n * @deprecated Use `ThemeStyles` from `@sanity/ui/theme` instead.\n */\nexport type Styles = ThemeStyles\n\n/**\n * @public\n * @deprecated Use `Theme` from `@sanity/ui/theme` instead.\n */\nexport type Theme = _Theme\n\n/**\n * @public\n * @deprecated Use `ThemeColorButtonModeKey` from `@sanity/ui/theme` instead.\n */\nexport type ThemeColorButtonModeKey = _ThemeColorButtonModeKey\n\n/**\n * @public\n * @deprecated Use `ThemeColorSchemeKey` from `@sanity/ui/theme` instead.\n */\nexport type ThemeColorSchemeKey = _ThemeColorSchemeKey\n\n/**\n * @public\n * @deprecated Use `ThemeColorSyntax` from `@sanity/ui/theme` instead.\n */\nexport type ThemeColorSyntax = _ThemeColorSyntax\n\n/**\n * @public\n * @deprecated Use `ThemeFont` from `@sanity/ui/theme` instead.\n */\nexport type ThemeFont = _ThemeFont\n\n/**\n * @public\n * @deprecated Use `ThemeFontKey` from `@sanity/ui/theme` instead.\n */\nexport type ThemeFontKey = _ThemeFontKey\n\n/**\n * @public\n * @deprecated Use `ThemeFontSize` from `@sanity/ui/theme` instead.\n */\nexport type ThemeFontSize = _ThemeFontSize\n\n/**\n * @public\n * @deprecated Use `ThemeFontWeight` from `@sanity/ui/theme` instead.\n */\nexport type ThemeFontWeight = _ThemeFontWeight\n\n/**\n * @public\n * @deprecated Use `ThemeFontWeightKey` from `@sanity/ui/theme` instead.\n */\nexport type ThemeFontWeightKey = _ThemeFontWeightKey\n\n/**\n * @public\n * @deprecated Use `ThemeFonts` from `@sanity/ui/theme` instead.\n */\nexport type ThemeFonts = _ThemeFonts\n\n/**\n * @public\n * @deprecated Use `ThemeLayer` from `@sanity/ui/theme` instead.\n */\nexport type ThemeLayer = _ThemeLayer\n\n/**\n * @public\n * @deprecated Use `ThemeShadow` from `@sanity/ui/theme` instead.\n */\nexport type ThemeShadow = _ThemeShadow\n\nimport {createColorTheme as _createColorTheme} from '../theme/build/_deprecated/color/factory'\nimport {multiply as _multiply} from '../theme/build/lib/color-fns/blend/multiply'\nimport {screen as _screen} from '../theme/build/lib/color-fns/blend/screen'\nimport {\n hexToRgb as _hexToRgb,\n hslToRgb as _hslToRgb,\n rgbToHex as _rgbToHex,\n rgbToHsl as _rgbToHsl,\n} from '../theme/build/lib/color-fns/convert'\nimport {parseColor as _parseColor} from '../theme/build/lib/color-fns/parse'\nimport {rgba as _rgba} from '../theme/build/lib/color-fns/rgba'\n\n/**\n * @public\n * @deprecated Use `createColorTheme` from `@sanity/ui/theme` instead.\n */\n// oxlint-disable-next-line no-deprecated\nexport const createColorTheme = _createColorTheme\n\n/**\n * @public\n * @deprecated Use `hexToRgb` from `@sanity/ui/theme` instead.\n */\nexport const hexToRgb = _hexToRgb\n\n/**\n * @public\n * @deprecated Use `hslToRgb` from `@sanity/ui/theme` instead.\n */\nexport const hslToRgb = _hslToRgb\n\n/**\n * @public\n * @deprecated Use `multiply` from `@sanity/ui/theme` instead.\n */\nexport const multiply = _multiply\n\n/**\n * @public\n * @deprecated Use `parseColor` from `@sanity/ui/theme` instead.\n */\nexport const parseColor = _parseColor\n\n/**\n * @public\n * @deprecated Use `rgbToHex` from `@sanity/ui/theme` instead.\n */\nexport const rgbToHex = _rgbToHex\n\n/**\n * @public\n * @deprecated Use `rgbToHsl` from `@sanity/ui/theme` instead.\n */\nexport const rgbToHsl = _rgbToHsl\n\n/**\n * @public\n * @deprecated Use `rgba` from `@sanity/ui/theme` instead.\n */\nexport const rgba = _rgba\n\n/**\n * @public\n * @deprecated Use `screen` from `@sanity/ui/theme` instead.\n */\nexport const screen = _screen\n\n/**\n * @public\n * @deprecated Use `buildTheme` from `@sanity/ui/theme` instead.\n */\nexport const studioTheme = buildTheme()\n","import {CSSObject} from '../../../theme/system/css'\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {_responsive, rem} from '../../styles/helpers'\nimport {ThemeProps} from '../../styles/types'\nimport {ResponsiveWidthStyleProps} from './types'\n\nconst BASE_STYLE: CSSObject = {\n width: '100%',\n margin: '0 auto',\n}\n\nexport function containerBaseStyle(): CSSObject {\n return BASE_STYLE\n}\n\nexport function responsiveContainerWidthStyle(\n props: ResponsiveWidthStyleProps & ThemeProps,\n): CSSObject[] {\n const {container, media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$width, (val) => ({\n maxWidth: val === 'auto' ? 'none' : rem(container[val]),\n }))\n}\n","import {styled} from 'styled-components'\n\nimport {_getArrayProp} from '../../styles/helpers'\nimport {ElementType, Props} from '../../types/component'\nimport {Box, BoxOwnProps} from '../box/box'\nimport {ResponsiveWidthProps} from '../types'\nimport {containerBaseStyle, responsiveContainerWidthStyle} from './styles'\nimport {ResponsiveWidthStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface ContainerOwnProps extends BoxOwnProps, ResponsiveWidthProps {}\n\n/**\n * @public\n */\nexport type ContainerProps<E extends ElementType = 'div'> = Props<ContainerOwnProps, E>\n\nconst StyledContainer = styled(Box)<ResponsiveWidthStyleProps>(\n containerBaseStyle,\n responsiveContainerWidthStyle,\n)\n\nfunction ContainerComponent(\n props: ContainerOwnProps & {as?: ElementType} & Omit<\n React.HTMLProps<HTMLDivElement>,\n 'as' | 'height' | 'width'\n >,\n) {\n const {as, ref, width = 2, ...restProps} = props\n\n return (\n <StyledContainer\n data-ui=\"Container\"\n {...restProps}\n $width={_getArrayProp(width)}\n forwardedAs={as}\n ref={ref}\n />\n )\n}\n\n/**\n * The `Container` component wraps content layout in a defined set of widths.\n *\n * @public\n */\n// oxlint-disable-next-line no-unsafe-type-assertion\nexport const Container = ContainerComponent as unknown as <E extends ElementType = 'div'>(\n props: ContainerProps<E>,\n) => React.JSX.Element\n","import {css} from 'styled-components'\n\nimport {CSSObject} from '../../../theme/system/css'\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {_responsive} from '../../styles/helpers'\nimport {ThemeProps} from '../../styles/types'\nimport {DialogPosition} from '../../types/dialog'\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/dialog'\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/Close'\nimport {useCallback, useEffect, useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {ThemeColorSchemeKey} from '../../../theme/system/color/_system'\nimport {containsOrEqualsElement, isHTMLElement} from '../../helpers/element'\nimport {focusFirstDescendant, focusLastDescendant} from '../../helpers/focus'\nimport {useClickOutsideEvent} from '../../hooks/useClickOutsideEvent'\nimport {useGlobalKeyDown} from '../../hooks/useGlobalKeyDown'\nimport {usePrefersReducedMotion} from '../../hooks/usePrefersReducedMotion'\nimport {Box} from '../../primitives/box/box'\nimport {Button} from '../../primitives/button/button'\nimport {Card} from '../../primitives/card/card'\nimport {Container} from '../../primitives/container/container'\nimport {Flex} from '../../primitives/flex/flex'\nimport {Text} from '../../primitives/text/text'\nimport {ResponsivePaddingProps, ResponsiveWidthProps} from '../../primitives/types'\nimport {_getArrayProp} from '../../styles/helpers'\nimport {responsivePaddingStyle} from '../../styles/padding/paddingStyle'\nimport {ResponsivePaddingStyleProps} from '../../styles/padding/types'\nimport {useTheme_v2} from '../../theme/useTheme'\nimport {DialogPosition} from '../../types/dialog'\nimport {Radius} from '../../types/radius'\nimport {useBoundaryElement} from '../../utils/boundaryElement/useBoundaryElement'\nimport {Layer, LayerProps} from '../../utils/layer/layer'\nimport {useLayer} from '../../utils/layer/useLayer'\nimport {Portal} from '../../utils/portal/portal'\nimport {usePortal} from '../../utils/portal/usePortal'\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 ref?: React.Ref<HTMLDivElement>\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\nfunction DialogCard(props: DialogCardProps) {\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 ref: forwardedRef,\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 // oxlint-disable-next-line no-unnecessary-boolean-literal-compare\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 // oxlint-disable-next-line no-unsafe-type-assertion\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\n/**\n * The Dialog component.\n *\n * @public\n */\nexport function Dialog(\n props: DialogProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'id' | 'width'>,\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 ref,\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 // oxlint-disable-next-line prefer-tag-over-role\n role=\"dialog\"\n zOffset={zOffset}\n >\n {/* oxlint-disable-next-line 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 {/* oxlint-disable-next-line no-noninteractive-tabindex */}\n <div ref={postDivRef} tabIndex={0} />\n </StyledDialog>\n </Portal>\n )\n}\n","import {useMemo} from 'react'\n\nimport {DialogPosition} from '../../types/dialog'\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","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 {useEffect, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Box, BoxOwnProps} from '../../primitives/box/box'\nimport {ResponsiveRadiusProps} from '../../primitives/types'\nimport {_getArrayProp} from '../../styles/helpers'\nimport {responsiveRadiusStyle} from '../../styles/radius/radiusStyle'\nimport {ResponsiveRadiusStyleProps} from '../../styles/radius/types'\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<BoxOwnProps, 'children'> {\n animated?: boolean\n delay?: number\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function Skeleton(props: SkeletonProps & Omit<React.HTMLProps<HTMLDivElement>, 'height'>) {\n const {animated = false, delay, radius, ref, ...restProps} = props\n // oxlint-disable-next-line no-unneeded-ternary\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}\n","import {styled} from 'styled-components'\n\nimport {ThemeFontKey} from '../../../theme/system/font'\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {_getArrayProp, _responsive} from '../../styles/helpers'\nimport {ThemeProps} from '../../styles/types'\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 function TextSkeleton(\n props: TextSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n) {\n const {size = 2, ...restProps} = props\n const $size = _getArrayProp(size)\n\n return <StyledSkeleton {...restProps} $size={$size} $style=\"text\" />\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function LabelSkeleton(\n props: LabelSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n) {\n const {size = 2, ...restProps} = props\n const $size = _getArrayProp(size)\n\n return <StyledSkeleton {...restProps} $size={$size} $style=\"label\" />\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function HeadingSkeleton(\n props: HeadingSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n) {\n const {size = 2, ...restProps} = props\n const $size = _getArrayProp(size)\n\n return <StyledSkeleton {...restProps} $size={$size} $style=\"heading\" />\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function CodeSkeleton(\n props: CodeSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n) {\n const {size = 2, ...restProps} = props\n const $size = _getArrayProp(size)\n\n return <StyledSkeleton {...restProps} $size={$size} $style=\"code\" />\n}\n","import {useCallback, useEffect, useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../primitives/button/button'\nimport {ButtonTone} from '../../types/button'\n\n/**\n * @public\n */\nexport interface TabProps {\n /**\n * The `id` of the correlating `TabPanel` component.\n */\n 'aria-controls': string\n 'id': string\n // oxlint-disable-next-line no-redundant-type-constituents\n 'icon'?: React.ElementType | React.ReactNode\n 'focused'?: boolean\n 'fontSize'?: number | number[]\n 'label'?: React.ReactNode\n 'padding'?: number | number[]\n 'selected'?: boolean\n 'tone'?: ButtonTone\n}\n\nconst CustomButton = styled(Button)`\n max-width: 100%;\n`\n\n/**\n * @public\n */\nexport function Tab(\n props: TabProps &\n Omit<\n React.HTMLProps<HTMLButtonElement>,\n 'aria-controls' | 'as' | 'id' | 'label' | 'type' | 'width'\n >,\n) {\n const {\n icon,\n id,\n focused,\n fontSize = 1,\n label,\n onClick,\n onFocus,\n padding = 2,\n ref: forwardedRef,\n selected,\n ...restProps\n } = props\n const ref = useRef<HTMLButtonElement | null>(null)\n const focusedRef = useRef(false)\n\n useImperativeHandle<HTMLButtonElement | null, HTMLButtonElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n const handleBlur = useCallback(() => {\n focusedRef.current = false\n }, [])\n\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n focusedRef.current = true\n if (onFocus) onFocus(event)\n },\n [onFocus],\n )\n\n useEffect(() => {\n if (focused && !focusedRef.current) {\n if (ref.current) ref.current.focus()\n focusedRef.current = true\n }\n }, [focused])\n\n return (\n <CustomButton\n data-ui=\"Tab\"\n {...restProps}\n aria-selected={selected ? 'true' : 'false'}\n fontSize={fontSize}\n icon={icon}\n id={id}\n mode=\"bleed\"\n onClick={onClick}\n onBlur={handleBlur}\n onFocus={handleFocus}\n padding={padding}\n ref={ref}\n role=\"tab\"\n selected={selected}\n tabIndex={selected ? 0 : -1}\n text={label}\n type=\"button\"\n />\n )\n}\n","import {Children, cloneElement, isValidElement, useCallback, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Inline, InlineOwnProps} from '../../primitives/inline/inline'\n\n/**\n * @public\n */\nexport interface TabListProps extends Omit<InlineOwnProps, 'height'> {\n children: Array<React.JSX.Element | null | undefined | false>\n}\n\n//Limits the width of tabs in tablist\nconst CustomInline = styled(Inline)`\n & > div {\n display: inline-block;\n vertical-align: middle;\n max-width: 100%;\n box-sizing: border-box;\n }\n`\n\n/**\n * @public\n */\nexport function TabList(\n props: TabListProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height'>,\n) {\n const {children: childrenProp, ref, ...restProps} = props\n const [focusedIndex, setFocusedIndex] = useState(-1)\n\n const children: React.JSX.Element[] = Children.toArray(childrenProp).filter(isValidElement)\n\n const tabs = children.map((child, childIndex) =>\n cloneElement(child, {\n focused: focusedIndex === childIndex,\n key: childIndex,\n onFocus: () => setFocusedIndex(childIndex),\n }),\n )\n\n const numTabs = tabs.length\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n setFocusedIndex((prevIndex) => (prevIndex + numTabs - 1) % numTabs)\n }\n\n if (event.key === 'ArrowRight') {\n setFocusedIndex((prevIndex) => (prevIndex + 1) % numTabs)\n }\n },\n [numTabs],\n )\n\n return (\n <CustomInline\n data-ui=\"TabList\"\n {...restProps}\n onKeyDown={handleKeyDown}\n ref={ref}\n role=\"tablist\"\n >\n {tabs}\n </CustomInline>\n )\n}\n","import {Box, BoxOwnProps} from '../../primitives/box/box'\n\n/**\n * @public\n */\nexport interface TabPanelProps extends BoxOwnProps {\n /**\n * The `id` of the correlating `Tab` component.\n */\n 'aria-labelledby': string\n 'id': string\n}\n\n/**\n * @public\n */\nexport function TabPanel(\n props: TabPanelProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'aria-labelledby' | 'id' | 'role'>,\n) {\n const {flex, ...restProps} = props\n\n return (\n <Box\n data-ui=\"TabPanel\"\n {...restProps}\n flex={flex}\n role=\"tabpanel\"\n tabIndex={props.tabIndex === undefined ? 0 : props.tabIndex}\n >\n {props.children}\n </Box>\n )\n}\n","import {TreeState} from './types'\n\nexport function _findPrevItemElement(\n state: TreeState,\n itemElements: HTMLElement[],\n focusedElement: HTMLElement,\n): HTMLElement | null {\n const idx = itemElements.indexOf(focusedElement)\n const els = itemElements.slice(0, idx)\n const len = els.length\n\n for (let i = len - 1; i >= 0; i -= 1) {\n const itemKey = els[i].getAttribute('data-tree-key')\n\n if (!itemKey) {\n continue\n }\n\n const segments = itemKey.split('/')\n\n segments.pop()\n\n const p: string[] = []\n\n let expanded = true\n\n for (let j = 0; j < segments.length; j += 1) {\n p.push(segments[j])\n\n const k = p.join('/')\n\n if (!state[k]?.expanded) {\n expanded = false\n break\n }\n }\n\n if (expanded) {\n return els[i]\n }\n }\n\n return null\n}\n\nexport function _findNextItemElement(\n state: TreeState,\n itemElements: HTMLElement[],\n focusedElement: HTMLElement,\n): HTMLElement | null {\n const idx = itemElements.indexOf(focusedElement)\n const els = itemElements.slice(idx)\n const len = itemElements.length\n\n for (let i = 1; i < len; i += 1) {\n if (!els[i]) {\n continue\n }\n\n const itemKey = els[i].getAttribute('data-tree-key')\n\n if (!itemKey) {\n continue\n }\n\n const segments = itemKey.split('/')\n\n segments.pop()\n\n const p: string[] = []\n\n let expanded = true\n\n for (let j = 0; j < segments.length; j += 1) {\n p.push(segments[j])\n\n const k = p.join('/')\n\n if (!state[k]?.expanded) {\n expanded = false\n break\n }\n }\n\n if (expanded) {\n return els[i]\n }\n }\n\n return null\n}\n\nexport function _focusItemElement(el: HTMLElement): void {\n if (el.getAttribute('role') === 'treeitem') {\n el.focus()\n }\n\n if (el.getAttribute('role') === 'none') {\n const firstChild = el.firstChild\n\n if (firstChild && firstChild instanceof HTMLElement) {\n firstChild.focus()\n }\n }\n}\n","import {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 {useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState} from 'react'\n\nimport {Stack} from '../../primitives/stack/stack'\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 gap?: number | number[]\n /**\n * @deprecated Use `gap` instead.\n */\n space?: never\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function Tree(\n props: TreeProps &\n Omit<React.HTMLProps<HTMLUListElement>, 'align' | 'as' | 'height' | 'role' | 'wrap'>,\n): React.JSX.Element {\n const {children, gap = 1, onFocus, ref: forwardedRef, ...restProps} = props\n const ref = useRef<HTMLUListElement | 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<HTMLUListElement | null, HTMLUListElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useEffect(() => {\n focusedElementRef.current = focusedElement\n }, [focusedElement])\n\n useEffect(() => {\n stateRef.current = state\n }, [state])\n\n const registerItem = useCallback(\n (element: HTMLElement, path: string, expanded: boolean, selected: boolean) => {\n setState((s) => ({...s, [path]: {element, expanded}}))\n\n if (selected) {\n setFocusedElement(element)\n }\n\n return () => {\n setState((s) => {\n const newState = {...s}\n\n delete newState[path]\n\n return newState\n })\n }\n },\n [],\n )\n\n const setExpanded = useCallback((path: string, expanded: boolean) => {\n setState((s) => {\n const itemState = s[path]\n\n if (!itemState) return s\n\n return {...s, [path]: {...itemState, expanded}}\n })\n }, [])\n\n const contextValue: TreeContextValue = useMemo(\n () => ({\n version: 0.0,\n focusedElement: focusedElement || itemElements[0] || null,\n level: 0,\n path,\n registerItem,\n setExpanded,\n setFocusedElement,\n gap,\n state,\n }),\n [focusedElement, gap, itemElements, path, registerItem, setExpanded, state],\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLUListElement>) => {\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<HTMLUListElement>) => {\n setFocusedElement(event.target)\n\n // Call the element's `focus` handler\n onFocus?.(event)\n },\n [onFocus],\n )\n\n useEffect(() => {\n if (!ref.current) return\n const _itemElements = Array.from(\n ref.current.querySelectorAll('[data-ui=\"TreeItem\"]'),\n ) as HTMLElement[]\n\n setItemElements(_itemElements)\n // oxlint-disable-next-line react/exhaustive-effect-dependencies\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 gap={gap}\n >\n {children}\n </Stack>\n </TreeContext.Provider>\n )\n}\n","import {css} from 'styled-components'\n\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {_cardColorStyle} from '../../styles/card/_cardColorStyle'\nimport {rem} from '../../styles/helpers'\nimport {ThemeProps} from '../../styles/types'\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 display: block;\n padding-left: ${rem(space[2] * $level)};\n text-decoration: none;\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/stack/stack'\nimport {useTree} from './useTree'\n\nexport interface TreeGroupProps {\n expanded?: boolean\n}\n\nexport function TreeGroup(\n props: TreeGroupProps &\n Omit<React.HTMLProps<HTMLUListElement>, '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.gap}\n // oxlint-disable-next-line prefer-tag-over-role\n role=\"group\"\n gap={tree.gap}\n >\n {children}\n </Stack>\n )\n}\n","import {ToggleArrowRightIcon} from '@sanity/icons/ToggleArrowRight'\nimport {startTransition, useCallback, useEffect, useId, useMemo, useRef, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {ThemeFontWeightKey} from '../../../theme/system/font'\nimport {Box} from '../../primitives/box/box'\nimport {Flex} from '../../primitives/flex/flex'\nimport {Text} from '../../primitives/text/text'\nimport {ElementType} from '../../types/component'\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?: ElementType\n /**\n * Additional props for the link element that is rendered when `href` is set — e.g. `next/link`'s\n * `prefetch` together with `linkAs={Link}`. Props controlled by `TreeItem` itself (`href`,\n * `role`, `tabIndex`, `aria-expanded` and the ref) take precedence.\n */\n linkProps?: React.HTMLProps<HTMLAnchorElement> & Record<string, unknown>\n padding?: number | number[]\n gap?: number | number[]\n /**\n * @deprecated Use `gap` instead.\n */\n space?: never\n text?: React.ReactNode\n weight?: ThemeFontWeightKey\n}\n\nconst StyledTreeItem = styled.li(treeItemRootStyle, treeItemRootColorStyle)\n\n/**\n * Styles a plain element (rather than wrapping `Box`) so that `as={linkAs}` renders the custom\n * link component directly, the same way `<Button as={...}>` works. Wrapping `Box` with\n * `.attrs({forwardedAs: 'a'})` made styled-components pass `as=\"a\"` on to the custom component\n * (breaking e.g. `next/link`, which treats `as` as a URL override) and skip the `Box` styles.\n */\nconst TreeItemBox = styled.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 linkProps,\n muted,\n onClick,\n padding = 2,\n selected = false,\n gap = 2,\n text,\n weight,\n ...restProps\n } = props\n const [rootElement, _setRootElement] = useState<HTMLLIElement | null>(null)\n /**\n * The startTransition wrapper here is to avoid an issue when on React 18 where this error can happen:\n * >Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.\n * This doesn't happen on React 19 due to automatic batching of all state updates, the startTransition wrapper here gives a type of batching for 18 users in a way that still works with 19.\n * NOTE: The startTransition wrapper is not needed in UI v4, since the baseline there is React 19.\n */\n const setRootElement = useCallback((node: HTMLLIElement | null) => {\n startTransition(() => _setRootElement(node))\n }, [])\n\n const treeitemRef = useRef<HTMLAnchorElement | 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={gap}\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 {...linkProps}\n $level={tree.level}\n aria-expanded={expanded}\n as={linkAs}\n data-as={typeof linkAs === 'string' ? linkAs : 'a'}\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}\n","/**\n * @internal\n */\nexport function _isScrollable(el: Node): boolean {\n if (!(el instanceof Element)) return false\n\n const style = window.getComputedStyle(el)\n\n return (\n style.overflowX.includes('auto') ||\n style.overflowX.includes('scroll') ||\n style.overflowY.includes('auto') ||\n style.overflowY.includes('scroll')\n )\n}\n","/** @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(_val?: never, _defaultVal?: never): never {\n throw new Error(\n '`useArrayProp` was removed in @sanity/ui v4. Use `Array.isArray(value) ? value : [value]` instead.',\n )\n}\n","/**\n * @public\n */\nexport type ClickOutsideListener = (event: MouseEvent) => void\n\n/**\n * @public\n */\nexport type ClickOutsideElements = (HTMLElement | null | (HTMLElement | null)[])[]\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?: never,\n _elementsArg?: never,\n _boundaryElement?: never,\n): never {\n throw new Error(\n '`useClickOutside` was removed in @sanity/ui v4. Use `useClickOutsideEvent` instead.',\n )\n}\n","/**\n * Subscribe to the rect of a DOM element.\n * @beta\n *\n * @deprecated Use `useElementSize` instead\n */\nexport function useElementRect(_element?: never): never {\n throw new Error('`useElementRect` was removed in @sanity/ui v4. Use `useElementSize` instead.')\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(_ref?: never): never {\n throw new Error(\n '`useForwardedRef` was removed in @sanity/ui v4. Use `useRef` and `useImperativeHandle` instead.',\n )\n}\n","import {useMatchMedia} from './useMatchMedia'\n\n/**\n * Returns true if a dark color scheme is preferred, false if a light color scheme is preferred or the preference is not known.\n *\n * @param getServerSnapshot - Only called during server-side rendering, and hydration if using hydrateRoot. Since the server environment doesn't have access to the DOM, we can't determine the current value of the media query and we assume `(prefers-color-scheme: light)` since it's the most common scheme (https://react.dev/reference/react/useSyncExternalStore#adding-support-for-server-rendering)\n *\n * If you persist the detected preference in a cookie or a header then you may implement your own server snapshot to read it.\n * Chrome supports reading the `prefers-color-scheme` media query from a header if the server response: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-CH-Prefers-Color-Scheme\n * @example https://gist.github.com/stipsan/13c0cccf8dfc34f4b44bb1b984baf7df\n *\n * @public\n */\nexport function usePrefersDark(getServerSnapshot = () => false): boolean {\n return useMatchMedia('(prefers-color-scheme: dark)', getServerSnapshot)\n}\n","import {CSSObject} from '../../../theme/system/css'\nimport {ThemeProps} from '../types'\nimport {responsiveFont} from './responsiveFont'\nimport {ResponsiveFontStyleProps} from './types'\n\n/**\n * Get responsive CSS for the `label` font style.\n * @internal\n */\nexport function responsiveLabelFont(props: ResponsiveFontStyleProps & ThemeProps): CSSObject[] {\n return responsiveFont('label', props)\n}\n","import {css} from 'styled-components'\n\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {ThemeProps} from '../../styles/types'\n\nexport function labelBaseStyle(\n props: {$accent?: boolean; $muted: boolean} & ThemeProps,\n): ReturnType<typeof css> {\n const {$accent, $muted} = props\n const {font} = getTheme_v2(props.theme)\n\n return css`\n text-transform: uppercase;\n\n ${\n $accent &&\n css`\n color: var(--card-accent-fg-color);\n `\n }\n\n ${\n $muted &&\n css`\n color: var(--card-muted-fg-color);\n `\n }\n\n & code {\n font-family: ${font.code.family};\n border-radius: 1px;\n }\n\n & a {\n text-decoration: none;\n border-radius: 1px;\n }\n\n & svg {\n /* Certain popular CSS libraries changes the defaults for SVG display */\n /* Make sure SVGs are rendered as inline elements */\n display: inline;\n /* ...and aren't squeezed by resets that set max-width: 100% */\n max-width: unset;\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\n }\n `\n}\n","import {styled} from 'styled-components'\n\nimport {ThemeFontWeightKey} from '../../../theme/system/font'\nimport {responsiveLabelFont} from '../../styles/font/labelFontStyle'\nimport {responsiveTextAlignStyle} from '../../styles/font/textAlignStyle'\nimport {_getArrayProp} from '../../styles/helpers'\nimport {ElementType, Props} from '../../types/component'\nimport {TextAlign} from '../../types/text'\nimport {SpanWithTextOverflow} from '../../utils/spanWithTextOverflow'\nimport {labelBaseStyle} from './styles'\n\n/**\n * @public\n */\nexport interface LabelOwnProps {\n accent?: boolean\n align?: TextAlign | TextAlign[]\n muted?: boolean\n size?: number | number[]\n /**\n * Controls how overflowing text is treated.\n * Use `textOverflow=\"ellipsis\"` to render text as a single line which is concatenated with a `…` symbol.\n * @beta\n */\n textOverflow?: 'ellipsis'\n weight?: ThemeFontWeightKey\n}\n\n/**\n * @public\n */\nexport type LabelProps<E extends ElementType = 'div'> = Props<LabelOwnProps, E>\n\nconst StyledLabel = styled.div<{\n $accent?: boolean\n $align: TextAlign[]\n $muted: boolean\n $size: number[]\n $weight?: ThemeFontWeightKey\n}>(responsiveLabelFont, responsiveTextAlignStyle, labelBaseStyle)\n\nfunction LabelComponent(\n props: LabelOwnProps & {as?: ElementType} & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'size'>,\n) {\n const {\n accent,\n align,\n children: childrenProp,\n muted = false,\n ref,\n size = 2,\n textOverflow,\n weight,\n ...restProps\n } = props\n\n let children = childrenProp\n\n if (textOverflow === 'ellipsis') {\n children = <SpanWithTextOverflow>{children}</SpanWithTextOverflow>\n } else {\n children = <span>{children}</span>\n }\n\n return (\n <StyledLabel\n data-ui=\"Label\"\n {...restProps}\n $accent={accent}\n $align={_getArrayProp(align)}\n $muted={muted}\n $size={_getArrayProp(size)}\n $weight={weight}\n ref={ref}\n >\n {children}\n </StyledLabel>\n )\n}\n\n/**\n * Typographic labels.\n *\n * @public\n */\n// oxlint-disable-next-line no-unsafe-type-assertion\nexport const Label = LabelComponent as unknown as <E extends ElementType = 'div'>(\n props: LabelProps<E>,\n) => React.JSX.Element\n","import {CSSObject} from '../../../theme/system/css'\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {focusRingStyle} from '../../styles/focusRing'\nimport {_responsive, rem} from '../../styles/helpers'\nimport {ThemeProps} from '../../styles/types'\nimport {AvatarRootStyleProps, ResponsiveAvatarSizeStyleProps} from './types'\n\nexport const avatarStyle = {\n root: avatarRootStyle,\n arrow: avatarArrowStyle,\n bgStroke: avatarBgStrokeStyle,\n stroke: avatarStrokeStyle,\n initials: avatarInitialsStyle,\n image: avatarImageStyle,\n}\n\nfunction avatarArrowStyle(): CSSObject {\n return {\n 'position': 'absolute',\n 'boxSizing': 'border-box',\n 'zIndex': '0',\n 'opacity': '0',\n 'transition': 'all 0.2s linear',\n 'transform': 'rotate(-90deg) translate3d(0, 6px, 0)',\n 'left': 0,\n 'right': 0,\n 'top': 0,\n 'bottom': 0,\n\n '& > svg': {\n 'width': '11px',\n 'height': '7px',\n 'position': 'absolute',\n 'top': '-5px',\n 'left': '50%',\n 'transform': 'translateX(-6px)',\n\n '&:not([hidden])': {\n display: 'block',\n },\n },\n\n \"[data-arrow-position='inside'] > &\": {\n transform: 'rotate(-90deg) translate3d(0, 6px, 0)',\n opacity: '0',\n },\n\n \"[data-arrow-position='top'] > &\": {\n opacity: '1',\n transform: 'rotate(0deg)',\n },\n\n \"[data-arrow-position='bottom'] > &\": {\n opacity: '1',\n transform: 'rotate(-180deg)',\n },\n }\n}\n\nfunction avatarRootStyle(props: AvatarRootStyleProps & ThemeProps): CSSObject {\n const {$color} = props\n const {avatar} = getTheme_v2(props.theme)\n\n return {\n '--avatar-bg-color': `var(--card-avatar-${$color}-bg-color)`,\n '--avatar-fg-color': `var(--card-avatar-${$color}-fg-color)`,\n\n 'backgroundColor': 'var(--avatar-bg-color)',\n 'position': 'relative',\n 'boxSizing': 'border-box',\n 'userSelect': 'none',\n 'boxShadow': '0 0 0 1px var(--card-bg-color)',\n\n '&[data-status=\"inactive\"]': {\n opacity: '0.5',\n },\n\n '&>svg': {\n '&:not([hidden])': {\n display: 'block',\n },\n },\n\n /* &:is(button) */\n '&[data-as=\"button\"]': {\n 'WebkitFontSmoothing': 'inherit',\n 'appearance': 'none',\n 'margin': 0,\n 'padding': 0,\n 'border': 0,\n 'font': 'inherit',\n 'color': 'inherit',\n 'outline': 'none',\n\n '&:focus': {\n boxShadow: focusRingStyle({focusRing: avatar.focusRing}),\n },\n\n '&:focus:not(:focus-visible)': {\n boxShadow: 'none',\n },\n },\n }\n}\n\nexport function responsiveAvatarSizeStyle(\n props: ResponsiveAvatarSizeStyleProps & ThemeProps,\n): CSSObject[] {\n const {avatar, media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$size, (size) => {\n const avatarSize = avatar.sizes[size] || avatar.sizes[0]\n\n return {\n 'width': rem(avatarSize.size),\n 'height': rem(avatarSize.size),\n 'borderRadius': rem(avatarSize.size / 2),\n\n '&>svg': {\n width: rem(avatarSize.size),\n height: rem(avatarSize.size),\n borderRadius: rem(avatarSize.size / 2),\n },\n }\n })\n}\n\nfunction avatarImageStyle(): CSSObject {\n return {\n position: 'relative',\n }\n}\n\nfunction avatarInitialsStyle(): CSSObject {\n return {\n 'width': '100%',\n 'height': '100%',\n 'color': 'var(--avatar-fg-color)',\n 'alignItems': 'center',\n 'justifyContent': 'center',\n 'textTransform': 'uppercase',\n 'textAlign': 'center',\n 'borderRadius': '50%',\n\n '&:not([hidden])': {\n display: 'flex',\n },\n }\n}\n\nfunction avatarBgStrokeStyle(): CSSObject {\n return {\n strokeWidth: '4px',\n stroke: 'var(--card-bg-color)',\n }\n}\n\nfunction avatarStrokeStyle(): CSSObject {\n return {\n 'strokeWidth': '2px',\n 'stroke': 'var(--avatar-bg-color)',\n\n '[data-status=\"editing\"] &': {\n strokeDasharray: '2 4',\n strokeLinecap: 'round',\n },\n }\n}\n","import {useCallback, useEffect, useId, useState} from 'react'\nimport ReactIs from 'react-is'\nimport {styled} from 'styled-components'\n\nimport {ThemeColorAvatarColorKey} from '../../../theme/system/color/_system'\nimport {_getArrayProp} from '../../styles/helpers'\nimport {useTheme_v2} from '../../theme/useTheme'\nimport {AvatarPosition, AvatarSize, AvatarStatus} from '../../types/avatar'\nimport {ElementType, Props} from '../../types/component'\nimport {Label} from '../label/label'\nimport {avatarStyle, responsiveAvatarSizeStyle} from './styles'\n\n/**\n * @public\n */\nexport interface AvatarOwnProps {\n /** @beta */\n __unstable_hideInnerStroke?: boolean\n animateArrowFrom?: AvatarPosition\n arrowPosition?: AvatarPosition\n color?: ThemeColorAvatarColorKey\n initials?: string\n onImageLoadError?: (event: Error) => void\n size?: AvatarSize | AvatarSize[]\n src?: string\n /**\n * The status of the entity this Avatar represents.\n * @alpha\n */\n status?: AvatarStatus\n title?: string\n}\n\n/**\n * @public\n */\nexport type AvatarProps<E extends ElementType = 'div'> = Props<AvatarOwnProps, E>\n\nconst StyledAvatar = styled.div<{$color: ThemeColorAvatarColorKey; $size: AvatarSize[]}>(\n responsiveAvatarSizeStyle,\n avatarStyle.root,\n)\n\nconst Arrow = styled.div(avatarStyle.arrow)\n\nconst BgStroke = styled.ellipse(avatarStyle.bgStroke)\n\nconst Stroke = styled.ellipse(avatarStyle.stroke)\n\nconst Initials = styled.div(avatarStyle.initials)\n\nconst InitialsLabel = styled(Label)({\n color: 'inherit',\n})\n\nconst AvatarImage = styled.svg(avatarStyle.image)\n\nfunction AvatarComponent(\n props: AvatarOwnProps & {as?: ElementType} & Omit<React.HTMLProps<HTMLDivElement>, 'as'>,\n) {\n const {\n __unstable_hideInnerStroke,\n as: asProp,\n color = 'gray',\n src,\n title,\n initials,\n onImageLoadError,\n arrowPosition: arrowPositionProp,\n animateArrowFrom,\n ref,\n status = 'online',\n size: sizeProp = 1,\n ...restProps\n } = props\n const {avatar} = useTheme_v2()\n const as = ReactIs.isValidElementType(asProp) ? asProp : 'div'\n const size = _getArrayProp(sizeProp)\n\n // @todo: remove this\n const avatarSize = avatar.sizes[size[0]] || avatar.sizes[0]\n const _sizeRem = avatarSize.size\n const _radius = _sizeRem / 2\n\n const elementId = useId()\n const [arrowPosition, setArrowPosition] = useState<AvatarPosition | undefined>(\n animateArrowFrom || arrowPositionProp || 'inside',\n )\n\n const [imageFailed, setImageFailed] = useState<boolean>(false)\n\n const imageId = `avatar-image-${elementId}`\n\n useEffect(() => {\n if (arrowPosition === arrowPositionProp) return undefined\n\n // Start animation in the next frame\n const raf = requestAnimationFrame(() => setArrowPosition(arrowPositionProp))\n\n return () => cancelAnimationFrame(raf)\n }, [arrowPosition, arrowPositionProp])\n\n useEffect(() => {\n // oxlint-disable-next-line react/set-state-in-effect\n if (src) setImageFailed(false)\n }, [src])\n\n const handleImageError = useCallback(() => {\n setImageFailed(true)\n\n if (onImageLoadError) {\n onImageLoadError(new Error('Avatar: the image failed to load'))\n }\n }, [onImageLoadError])\n\n return (\n <StyledAvatar\n as={as}\n data-as={typeof as === 'string' ? as : undefined}\n data-ui=\"Avatar\"\n {...restProps}\n $color={color}\n $size={size}\n aria-label={title}\n data-arrow-position={arrowPosition}\n data-status={status}\n ref={ref}\n title={title}\n >\n <Arrow>\n <svg width=\"11\" height=\"7\" viewBox=\"0 0 11 7\" fill=\"none\">\n <path\n d=\"M6.67948 1.50115L11 7L0 7L4.32052 1.50115C4.92109 0.736796 6.07891 0.736795 6.67948 1.50115Z\"\n fill={color}\n />\n </svg>\n </Arrow>\n\n {!imageFailed && src && (\n <AvatarImage viewBox={`0 0 ${_sizeRem} ${_sizeRem}`} fill=\"none\">\n <defs>\n <pattern id={imageId} patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <image href={src} width=\"1\" height=\"1\" onError={handleImageError} />\n </pattern>\n </defs>\n\n <circle cx={_radius} cy={_radius} r={_radius} fill={`url(#${imageId})`} />\n\n {!__unstable_hideInnerStroke && (\n <BgStroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n vectorEffect=\"non-scaling-stroke\"\n />\n )}\n\n <Stroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n vectorEffect=\"non-scaling-stroke\"\n />\n </AvatarImage>\n )}\n\n {(imageFailed || !src) && initials && (\n <>\n <Initials>\n <InitialsLabel\n forwardedAs=\"span\"\n size={size.map((s) => {\n if (s === 1) return 1\n if (s === 2) return 3\n if (s === 3) return 5\n\n return 0\n })}\n weight=\"medium\"\n >\n {initials}\n </InitialsLabel>\n </Initials>\n </>\n )}\n </StyledAvatar>\n )\n}\n\n/**\n * Avatars are used to represent people and other agents (e.g. bots).\n *\n * @public\n */\n// oxlint-disable-next-line no-unsafe-type-assertion\nexport const Avatar = AvatarComponent as unknown as <E extends ElementType = 'div'>(\n props: AvatarProps<E>,\n) => React.JSX.Element\n","import {css, styled} from 'styled-components'\n\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {EMPTY_RECORD} from '../../constants'\nimport {_getArrayProp, _responsive, rem} from '../../styles/helpers'\nimport {ThemeProps} from '../../styles/types'\nimport {AvatarSize} from '../../types/avatar'\nimport {Label} from '../label/label'\n\nfunction _responsiveAvatarCounterSizeStyle(props: {$size: AvatarSize[]} & ThemeProps) {\n const {avatar, media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$size, (size) => {\n const avatarSize = avatar.sizes[size]\n\n if (!avatarSize) return EMPTY_RECORD\n\n return {\n borderRadius: rem(avatarSize.size / 2),\n minWidth: rem(avatarSize.size),\n height: rem(avatarSize.size),\n }\n })\n}\n\nfunction _avatarCounterBaseStyle(props: ThemeProps) {\n const {space} = getTheme_v2(props.theme)\n\n return css`\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n user-select: none;\n color: inherit;\n color: var(--card-fg-color);\n background: var(--card-bg-color);\n box-shadow:\n 0 0 0 1px var(--card-bg-color),\n inset 0 0 0 1px var(--card-hairline-hard-color);\n padding: 0 ${rem(space[2])};\n\n &:not([hidden]) {\n display: flex;\n }\n `\n}\n\nconst StyledAvatarCounter = styled.div<{$size: AvatarSize[]}>(\n _responsiveAvatarCounterSizeStyle,\n _avatarCounterBaseStyle,\n)\n\n/**\n * @public\n */\nexport interface AvatarCounterProps {\n count: number\n size?: AvatarSize | AvatarSize[]\n /** @deprecated No longer supported. */\n tone?: never\n}\n\n/**\n * @public\n */\nexport function AvatarCounter(props: AvatarCounterProps & {ref?: React.Ref<HTMLDivElement>}) {\n const {count, ref, size: sizeProp = 1} = props\n const size = _getArrayProp(sizeProp)\n\n return (\n <StyledAvatarCounter $size={size} data-ui=\"AvatarCounter\" ref={ref}>\n <Label\n as=\"span\"\n size={size.map((s) => {\n if (s === 1) return 1\n if (s === 2) return 3\n if (s === 3) return 5\n\n return 0\n })}\n weight=\"medium\"\n >\n {count}\n </Label>\n </StyledAvatarCounter>\n )\n}\n","import {Children, cloneElement, isValidElement} from 'react'\nimport {css, styled} from 'styled-components'\n\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {EMPTY_RECORD} from '../../constants'\nimport {_getArrayProp, _responsive, rem} from '../../styles/helpers'\nimport {ThemeProps} from '../../styles/types'\nimport {AvatarSize} from '../../types/avatar'\nimport {AvatarCounter} from './avatarCounter'\n\nconst BASE_STYLES = css`\n white-space: nowrap;\n\n & > div {\n vertical-align: top;\n\n &:not([hidden]) {\n display: inline-block;\n }\n }\n`\n\nfunction avatarStackStyle() {\n return BASE_STYLES\n}\n\nfunction responsiveAvatarStackSizeStyle(props: {$size: AvatarSize[]} & ThemeProps) {\n const {avatar, media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$size, (size) => {\n const avatarSize = avatar.sizes[size]\n\n if (!avatarSize) return EMPTY_RECORD\n\n return {\n '& > div + div': {\n marginLeft: rem(avatarSize.distance),\n },\n }\n })\n}\n\nconst StyledAvatarStack = styled.div<{$size: AvatarSize[]}>(\n responsiveAvatarStackSizeStyle,\n avatarStackStyle,\n)\n\n/**\n * @public\n */\nexport interface AvatarStackProps {\n children: React.ReactNode\n maxLength?: number\n size?: AvatarSize | AvatarSize[]\n /** @deprecated No longer supported. */\n tone?: never\n}\n\n/**\n * @public\n */\nexport function AvatarStack(props: AvatarStackProps & Omit<React.HTMLProps<HTMLDivElement>, 'as'>) {\n const {\n children: childrenProp,\n maxLength: maxLengthProp = 4,\n ref,\n size: sizeProp = 1,\n ...restProps\n } = props\n const children: React.JSX.Element[] = Children.toArray(childrenProp).filter(isValidElement)\n const maxLength = Math.max(maxLengthProp, 0)\n const size = _getArrayProp(sizeProp)\n\n const len = children.length\n const visibleCount = maxLength - 1\n const extraCount = len - visibleCount\n const visibleChildren = extraCount > 1 ? children.slice(extraCount, len) : children\n\n return (\n <StyledAvatarStack data-ui=\"AvatarStack\" {...restProps} ref={ref} $size={size}>\n {len === 0 && (\n <div>\n <AvatarCounter count={len} size={size} />\n </div>\n )}\n\n {len !== 0 && extraCount > 1 && (\n <div>\n <AvatarCounter count={extraCount} size={size} />\n </div>\n )}\n\n {visibleChildren.map((child, childIndex) => (\n // oxlint-disable-next-line no-array-index-key\n <div key={String(childIndex)}>{cloneElement(child, {size})}</div>\n ))}\n </StyledAvatarStack>\n )\n}\n","import {CSSObject} from '../../../theme/system/css'\nimport {BadgeStyleProps} from './types'\n\nexport function badgeStyle(props: BadgeStyleProps): CSSObject {\n const {$tone} = props\n\n return {\n '--card-bg-color': `var(--card-badge-${$tone}-bg-color)`,\n '--card-fg-color': `var(--card-badge-${$tone}-fg-color)`,\n\n 'backgroundColor': 'var(--card-bg-color)',\n 'cursor': 'default',\n\n '&:not([hidden])': {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n }\n}\n","import {styled} from 'styled-components'\n\nimport {_getArrayProp} from '../../styles/helpers'\nimport {responsiveRadiusStyle} from '../../styles/radius/radiusStyle'\nimport {ResponsiveRadiusStyleProps} from '../../styles/radius/types'\nimport {BadgeTone} from '../../types/badge'\nimport {ElementType, Props} from '../../types/component'\nimport {Box, BoxOwnProps} from '../box/box'\nimport {Text} from '../text/text'\nimport {ResponsiveRadiusProps} from '../types'\nimport {badgeStyle} from './styles'\nimport {BadgeStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface BadgeOwnProps extends BoxOwnProps, ResponsiveRadiusProps {\n fontSize?: number | number[]\n /** @deprecated No longer used. */\n mode?: never\n tone?: BadgeTone\n}\n\n/**\n * @public\n */\nexport type BadgeProps<E extends ElementType = 'div'> = Props<BadgeOwnProps, E>\n\nconst StyledBadge = styled(Box)<BadgeStyleProps & ResponsiveRadiusStyleProps>(\n responsiveRadiusStyle,\n badgeStyle,\n)\n\nconst BadgeComponent = function Badge(\n props: BadgeOwnProps & {as?: ElementType} & React.HTMLProps<HTMLDivElement>,\n) {\n const {\n children,\n fontSize = 1,\n padding = 1,\n radius = 'full',\n ref,\n tone = 'default',\n ...restProps\n } = props\n\n return (\n <StyledBadge\n data-ui=\"Badge\"\n {...restProps}\n $tone={tone}\n $radius={_getArrayProp(radius)}\n padding={_getArrayProp(padding)}\n ref={ref}\n >\n <Text size={fontSize}>{children}</Text>\n </StyledBadge>\n )\n}\n\n/**\n * Badges are used to tag resources.\n *\n * @public\n */\n// oxlint-disable-next-line no-unsafe-type-assertion\nexport const Badge = BadgeComponent as unknown as <E extends ElementType = 'div'>(\n props: BadgeProps<E>,\n) => React.JSX.Element\n","import {css} from 'styled-components'\n\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/focusRing'\nimport {rem} from '../../styles/helpers'\nimport {ThemeProps} from '../../styles/types'\n\nexport function checkboxBaseStyles(): ReturnType<typeof css> {\n return css`\n position: relative;\n display: inline-block;\n `\n}\n\nexport function inputElementStyles(props: ThemeProps): ReturnType<typeof css> {\n const {color, input, radius} = getTheme_v2(props.theme)\n const {focusRing} = input.checkbox\n\n return css`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n outline: none;\n opacity: 0;\n z-index: 1;\n padding: 0;\n margin: 0;\n\n & + span {\n position: relative;\n display: block;\n height: ${rem(input.checkbox.size)};\n width: ${rem(input.checkbox.size)};\n box-sizing: border-box;\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.enabled.border,\n width: input.border.width,\n })};\n border-radius: ${rem(radius[2])};\n line-height: 1;\n background-color: ${color.input.default.enabled.bg};\n\n & > svg {\n display: block;\n position: absolute;\n opacity: 0;\n height: 100%;\n width: 100%;\n\n & > path {\n vector-effect: non-scaling-stroke;\n stroke-width: 1.5px !important;\n }\n }\n }\n\n &:checked + span {\n background: ${color.input.default.enabled.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.enabled.fg,\n width: input.border.width,\n })};\n color: ${color.input.default.enabled.bg};\n }\n\n /* focus */\n &:not(:disabled):focus:focus-visible + span {\n box-shadow: ${focusRingStyle({focusRing})};\n }\n\n /* focus when checked - uses a different offset */\n &:not(:disabled):focus:focus-visible&:checked + span {\n box-shadow: ${focusRingStyle({focusRing: {width: 1, offset: 1}})};\n }\n\n &[data-error] + span {\n background-color: ${color.input.invalid.enabled.border};\n box-shadow: ${focusRingBorderStyle({\n width: input.border.width,\n color: color.input.invalid.enabled.muted.bg,\n })};\n color: ${color.input.default.disabled.fg};\n }\n &[data-error]&:checked + span {\n background-color: ${color.input.invalid.enabled.muted.bg};\n color: ${color.input.default.enabled.bg};\n }\n &[data-error]&:checked&:not(:disabled):focus:focus-visible + span {\n box-shadow: ${focusRingStyle({\n border: {width: input.border.width, color: color.input.invalid.readOnly.muted.bg},\n focusRing: {width: 1, offset: 1},\n })};\n }\n\n &:disabled + span {\n background-color: ${color.input.default.disabled.bg};\n box-shadow: ${focusRingBorderStyle({\n width: input.border.width,\n color: color.input.default.disabled.border,\n })};\n color: ${color.input.default.disabled.fg};\n }\n &:disabled&:checked + span {\n background-color: ${color.input.default.disabled.muted.bg};\n }\n\n &[data-read-only] + span {\n background-color: ${color.input.default.readOnly.bg};\n box-shadow: ${focusRingBorderStyle({\n width: input.border.width,\n color: color.input.default.readOnly.border,\n })};\n color: ${color.input.default.readOnly.fg};\n }\n\n &[data-read-only]&:checked + span {\n background-color: ${color.input.default.readOnly.muted.bg};\n }\n\n &:checked + span > svg:first-child {\n opacity: 1;\n }\n &:indeterminate + span > svg:last-child {\n opacity: 1;\n }\n `\n}\n","import {CheckmarkIcon} from '@sanity/icons/Checkmark'\nimport {RemoveIcon} from '@sanity/icons/Remove'\nimport {useEffect, useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {useCustomValidity} from '../../hooks/useCustomValidity'\nimport {checkboxBaseStyles, inputElementStyles} from './styles'\n\n/**\n * @public\n */\nexport interface CheckboxProps {\n indeterminate?: boolean\n customValidity?: string\n}\n\nconst StyledCheckbox = styled.div(checkboxBaseStyles)\nconst Input = styled.input(inputElementStyles)\n\n/**\n * Checkboxes allow the user to select one or more items from a set.\n *\n * @public\n */\nexport function Checkbox(\n props: Omit<React.HTMLProps<HTMLInputElement>, 'as' | 'type'> & CheckboxProps,\n) {\n const {\n checked,\n className,\n disabled,\n indeterminate,\n customValidity,\n readOnly,\n ref: forwardedRef,\n style,\n ...restProps\n } = props\n const ref = useRef<HTMLInputElement | null>(null)\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useEffect(() => {\n if (ref.current) {\n // Set the indeterminate state\n ref.current.indeterminate = indeterminate || false\n }\n }, [indeterminate])\n\n useCustomValidity(ref, customValidity)\n\n return (\n <StyledCheckbox className={className} data-ui=\"Checkbox\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-error={customValidity ? '' : undefined}\n {...restProps}\n checked={checked}\n disabled={disabled || readOnly}\n type=\"checkbox\"\n readOnly={readOnly}\n ref={ref}\n />\n <span>\n <CheckmarkIcon />\n <RemoveIcon />\n </span>\n </StyledCheckbox>\n )\n}\n","import {CSSObject} from '../../../theme/system/css'\nimport {ThemeProps} from '../types'\nimport {responsiveFont} from './responsiveFont'\nimport {ResponsiveFontStyleProps} from './types'\n\n/**\n * Get responsive CSS for the `heading` font style.\n * @internal\n */\nexport function responsiveHeadingFont(props: ResponsiveFontStyleProps & ThemeProps): CSSObject[] {\n return responsiveFont('heading', props)\n}\n","import {css} from 'styled-components'\n\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {ThemeProps} from '../../styles/types'\nimport {HeadingStyleProps} from './types'\n\nexport function headingBaseStyle(props: HeadingStyleProps & ThemeProps): ReturnType<typeof css> {\n const {$accent, $muted} = props\n const {font} = getTheme_v2(props.theme)\n\n return css`\n ${\n $accent &&\n css`\n color: var(--card-accent-fg-color);\n `\n }\n\n ${\n $muted &&\n css`\n color: var(--card-muted-fg-color);\n `\n }\n\n & code {\n font-family: ${font.code.family};\n border-radius: 1px;\n }\n\n & a {\n text-decoration: none;\n border-radius: 1px;\n color: var(--card-link-color);\n outline: none;\n\n @media (hover: hover) {\n &:hover {\n text-decoration: underline;\n }\n }\n\n &:focus {\n box-shadow:\n 0 0 0 1px var(--card-bg-color),\n 0 0 0 3px var(--card-focus-ring-color);\n }\n\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n }\n\n & strong {\n font-weight: ${font.heading.weights.bold};\n }\n\n & svg {\n /* Certain popular CSS libraries changes the defaults for SVG display */\n /* Make sure SVGs are rendered as inline elements */\n display: inline;\n /* ...and aren't squeezed by resets that set max-width: 100% */\n max-width: unset;\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\n }\n `\n}\n","import {styled} from 'styled-components'\n\nimport {ThemeFontWeightKey} from '../../../theme/system/font'\nimport {responsiveHeadingFont} from '../../styles/font/headingFontStyle'\nimport {responsiveTextAlignStyle} from '../../styles/font/textAlignStyle'\nimport {ResponsiveFontStyleProps, ResponsiveTextAlignStyleProps} from '../../styles/font/types'\nimport {_getArrayProp} from '../../styles/helpers'\nimport {ElementType, Props} from '../../types/component'\nimport {TextAlign} from '../../types/text'\nimport {SpanWithTextOverflow} from '../../utils/spanWithTextOverflow'\nimport {headingBaseStyle} from './styles'\nimport {HeadingStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface HeadingOwnProps {\n accent?: boolean\n align?: TextAlign | TextAlign[]\n muted?: boolean\n size?: number | number[]\n /**\n * Controls how overflowing text is treated.\n * Use `textOverflow=\"ellipsis\"` to render text as a single line which is concatenated with a `…` symbol.\n * @beta\n */\n textOverflow?: 'ellipsis'\n weight?: ThemeFontWeightKey\n}\n\n/**\n * @public\n */\nexport type HeadingProps<E extends ElementType = 'div'> = Props<HeadingOwnProps, E>\n\nconst StyledHeading = styled.div<\n HeadingStyleProps & ResponsiveTextAlignStyleProps & ResponsiveFontStyleProps\n>(headingBaseStyle, responsiveTextAlignStyle, responsiveHeadingFont)\n\nfunction HeadingComponent(\n props: HeadingOwnProps & {as?: ElementType} & Omit<\n React.HTMLProps<HTMLDivElement>,\n 'as' | 'size'\n >,\n) {\n const {\n accent = false,\n align,\n children: childrenProp,\n muted = false,\n ref,\n size = 2,\n textOverflow,\n weight,\n ...restProps\n } = props\n\n let children = childrenProp\n\n if (textOverflow === 'ellipsis') {\n children = <SpanWithTextOverflow>{children}</SpanWithTextOverflow>\n }\n\n return (\n <StyledHeading\n data-ui=\"Heading\"\n {...restProps}\n $accent={accent}\n $align={_getArrayProp(align)}\n $muted={muted}\n $size={_getArrayProp(size)}\n $weight={weight}\n ref={ref}\n >\n <span>{children}</span>\n </StyledHeading>\n )\n}\n\n/**\n * Typographic headings.\n *\n * @public\n */\n// oxlint-disable-next-line no-unsafe-type-assertion\nexport const Heading = HeadingComponent as unknown as <E extends ElementType = 'div'>(\n props: HeadingProps<E>,\n) => React.JSX.Element\n","import {css} from 'styled-components'\n\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/focusRing'\nimport {rem} from '../../styles/helpers'\nimport {ThemeProps} from '../../styles/types'\n\nexport function radioBaseStyle(): ReturnType<typeof css> {\n return css`\n position: relative;\n\n &:not([hidden]) {\n display: inline-block;\n }\n\n &[data-read-only] {\n outline: 1px solid red;\n }\n `\n}\n\nexport function inputElementStyle(props: ThemeProps): ReturnType<typeof css> {\n const {color, input} = getTheme_v2(props.theme)\n const dist = (input.radio.size - input.radio.markSize) / 2\n\n return css`\n appearance: none;\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0;\n height: 100%;\n width: 100%;\n outline: none;\n z-index: 1;\n padding: 0;\n margin: 0;\n border-radius: ${rem(input.radio.size / 2)};\n border: none;\n\n /* enabled */\n & + span {\n display: block;\n position: relative;\n height: ${rem(input.radio.size)};\n width: ${rem(input.radio.size)};\n border-radius: ${rem(input.radio.size / 2)};\n background: ${color.input.default.enabled.bg};\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.enabled.border,\n width: input.border.width,\n })};\n\n &::after {\n content: '';\n position: absolute;\n top: ${rem(dist)};\n left: ${rem(dist)};\n height: ${rem(input.radio.markSize)};\n width: ${rem(input.radio.markSize)};\n border-radius: ${rem(input.radio.markSize / 2)};\n background: ${color.input.default.enabled.fg};\n opacity: 0;\n }\n }\n\n /* focused */\n &:not(:disabled):focus + span {\n box-shadow: ${focusRingStyle({\n border: {width: input.border.width, color: color.input.default.enabled.border},\n focusRing: input.radio.focusRing,\n })};\n }\n\n &:not(:disabled):focus:not(:focus-visible) + span {\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.enabled.border,\n width: input.border.width,\n })};\n }\n\n &:checked + span::after {\n opacity: 1;\n }\n\n /* customValidity */\n &[data-error] + span {\n background-color: ${color.input.invalid.enabled.border};\n box-shadow: ${focusRingBorderStyle({\n width: input.border.width,\n color: color.input.invalid.enabled.muted.bg,\n })};\n &::after {\n background: ${color.input.invalid.enabled.muted.bg};\n }\n }\n\n /* read only */\n &[data-read-only] + span {\n box-shadow: 0 0 0 1px ${color.input.default.readOnly.border};\n background: ${color.input.default.readOnly.bg};\n\n &::after {\n background: ${color.input.default.readOnly.border};\n }\n }\n\n /* disabled */\n &:not([data-read-only]):disabled + span {\n box-shadow: 0 0 0 1px ${color.input.default.disabled.border};\n background: ${color.input.default.disabled.bg};\n\n &::after {\n background: ${color.input.default.disabled.border};\n }\n }\n `\n}\n","import {useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {useCustomValidity} from '../../hooks/useCustomValidity'\nimport {inputElementStyle, radioBaseStyle} from './styles'\n\n/**\n * @public\n */\nexport interface RadioProps {\n customValidity?: string\n}\n\nconst StyledRadio = styled.div(radioBaseStyle)\nconst Input = styled.input(inputElementStyle)\n\n/**\n * The `Radio` component allows the user to select one option from a set.\n *\n * @public\n */\nexport function Radio(props: Omit<React.HTMLProps<HTMLInputElement>, 'as' | 'type'> & RadioProps) {\n const {\n className,\n disabled,\n style,\n customValidity,\n readOnly,\n ref: forwardedRef,\n ...restProps\n } = props\n const ref = useRef<HTMLInputElement | null>(null)\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useCustomValidity(ref, customValidity)\n\n return (\n <StyledRadio className={className} data-ui=\"Radio\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-error={customValidity ? '' : undefined}\n {...restProps}\n disabled={disabled || readOnly}\n readOnly={readOnly}\n ref={ref}\n type=\"radio\"\n />\n <span />\n </StyledRadio>\n )\n}\n","import {css} from 'styled-components'\n\nimport {CSSObject} from '../../../theme/system/css'\nimport {ThemeFontSize} from '../../../theme/system/font'\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/focusRing'\nimport {_responsive, rem} from '../../styles/helpers'\nimport {responsiveInputPaddingIconRightStyle} from '../../styles/input/responsiveInputPaddingStyle'\nimport {responsiveRadiusStyle} from '../../styles/radius/radiusStyle'\nimport {ResponsiveRadiusStyleProps} from '../../styles/radius/types'\nimport {ThemeProps} from '../../styles/types'\n\nfunction rootStyle(): ReturnType<typeof css> {\n return css`\n position: relative;\n width: -moz-available;\n width: -webkit-fill-available;\n width: stretch;\n\n &:not([hidden]) {\n display: inline-block;\n }\n `\n}\n\nfunction inputBaseStyle(props: ThemeProps): ReturnType<typeof css> {\n const {font} = getTheme_v2(props.theme)\n\n return css`\n -webkit-font-smoothing: antialiased;\n appearance: none;\n border: 0;\n font-family: ${font.text.family};\n color: inherit;\n width: 100%;\n outline: none;\n margin: 0;\n\n &:disabled {\n opacity: 1;\n }\n `\n}\n\nfunction inputColorStyle(props: ThemeProps) {\n const {color, input} = getTheme_v2(props.theme)\n\n return css`\n /* enabled */\n background-color: ${color.input.default.enabled.bg};\n color: ${color.input.default.enabled.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.enabled.border,\n width: input.border.width,\n })};\n\n /* hovered */\n @media (hover: hover) {\n &:not(:disabled):hover {\n background-color: ${color.input.default.hovered.bg};\n color: ${color.input.default.hovered.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.hovered.border,\n width: input.border.width,\n })};\n }\n }\n\n /* focused */\n &:not(:disabled):focus {\n box-shadow: ${focusRingStyle({\n border: {width: input.border.width, color: color.input.default.enabled.border},\n focusRing: input.select.focusRing,\n })};\n }\n\n /* read-only */\n &[data-read-only] {\n background-color: ${color.input.default.readOnly.bg};\n color: ${color.input.default.readOnly.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.readOnly.border,\n width: input.border.width,\n })};\n }\n\n /* disabled */\n &:not([data-read-only]):disabled {\n background-color: ${color.input.default.disabled.bg};\n color: ${color.input.default.disabled.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.disabled.border,\n width: input.border.width,\n })};\n }\n `\n}\n\nfunction textSize(size: ThemeFontSize) {\n return {fontSize: rem(size.fontSize), lineHeight: `${rem(size.lineHeight)}`}\n}\n\nfunction inputTextSizeStyle(props: {$fontSize: number[]} & ThemeProps) {\n const {$fontSize} = props\n const {font, media} = getTheme_v2(props.theme)\n\n return _responsive(media, $fontSize, (sizeIndex) =>\n textSize(font.text.sizes[sizeIndex] || font.text.sizes[2]),\n )\n}\n\nfunction inputStyle(): Array<\n | ((\n props: ResponsiveRadiusStyleProps & {\n $fontSize: number[]\n $padding: number[]\n $space: number[]\n } & ThemeProps,\n ) => CSSObject[])\n | ((props: ThemeProps) => ReturnType<typeof css>)\n> {\n return [\n responsiveRadiusStyle,\n inputBaseStyle,\n inputColorStyle,\n inputTextSizeStyle,\n responsiveInputPaddingIconRightStyle,\n ]\n}\n\nfunction iconBoxStyle(props: ThemeProps): ReturnType<typeof css> {\n const {color} = getTheme_v2(props.theme)\n\n return css`\n pointer-events: none;\n position: absolute;\n top: 0;\n right: 0;\n\n /* enabled */\n --card-fg-color: ${color.input.default.enabled.fg};\n\n /* hover */\n @media (hover: hover) {\n select:not(disabled):not(:read-only):hover + && {\n --card-fg-color: ${color.input.default.hovered.fg};\n }\n }\n\n /* disabled */\n select:disabled + && {\n --card-fg-color: ${color.input.default.disabled.fg};\n }\n\n /* read-only */\n select[data-read-only] + && {\n --card-fg-color: ${color.input.default.readOnly.fg};\n }\n `\n}\n\nexport const selectStyle = {\n root: rootStyle,\n input: inputStyle,\n iconBox: iconBoxStyle,\n}\n","import {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {useCustomValidity} from '../../hooks/useCustomValidity'\nimport {_getArrayProp} from '../../styles/helpers'\nimport {Radius} from '../../types/radius'\nimport {Box} from '../box/box'\nimport {Text} from '../text/text'\nimport {selectStyle} from './styles'\n\n/**\n * @public\n */\nexport interface SelectProps {\n fontSize?: number | number[]\n gap?: number | number[]\n padding?: number | number[]\n radius?: Radius | Radius[]\n /**\n * @deprecated Use `gap` instead.\n */\n space?: never\n customValidity?: string\n}\n\nconst StyledSelect = styled.div(selectStyle.root)\n\nconst Input = styled.select<{\n $fontSize: number[]\n $padding: number[]\n $radius: Radius[]\n $space: number[]\n}>(selectStyle.input)\n\nconst IconBox = styled(Box)(selectStyle.iconBox)\n\n/**\n * The `Select` component provides control of options.\n *\n * @public\n */\nexport function Select(props: SelectProps & Omit<React.HTMLProps<HTMLSelectElement>, 'as'>) {\n const {\n children,\n customValidity,\n disabled,\n fontSize = 2,\n gap = 3,\n padding = 3,\n radius = 2,\n readOnly,\n ref: forwardedRef,\n ...restProps\n } = props\n\n const ref = useRef<HTMLSelectElement | null>(null)\n\n useImperativeHandle<HTMLSelectElement | null, HTMLSelectElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useCustomValidity(ref, customValidity)\n\n return (\n <StyledSelect data-ui=\"Select\">\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-ui=\"Select\"\n {...restProps}\n $fontSize={_getArrayProp(fontSize)}\n $padding={_getArrayProp(padding)}\n $radius={_getArrayProp(radius)}\n $space={_getArrayProp(gap)}\n disabled={disabled || readOnly}\n ref={ref}\n >\n {children}\n </Input>\n\n <IconBox padding={padding}>\n <Text size={fontSize}>\n <ChevronDownIcon />\n </Text>\n </IconBox>\n </StyledSelect>\n )\n}\n","import {css} from 'styled-components'\n\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {focusRingStyle} from '../../styles/focusRing'\nimport {rem} from '../../styles/helpers'\nimport {ThemeProps} from '../../styles/types'\n\n/* Root */\nexport function switchBaseStyles(): ReturnType<typeof css> {\n return css`\n position: relative;\n &:not([hidden]) {\n display: inline-block;\n }\n `\n}\n\n/* Input */\nexport function switchInputStyles(): ReturnType<typeof css> {\n // Visually hide the input element while keeping it interactive\n return css`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n opacity: 0;\n height: 100%;\n width: 100%;\n outline: none;\n padding: 0;\n margin: 0;\n\n /* Place the input element above the representation element */\n z-index: 1;\n `\n}\n\n/* Representation */\nexport function switchRepresentationStyles(props: ThemeProps): ReturnType<typeof css> {\n const {color, input} = getTheme_v2(props.theme)\n\n return css`\n --switch-bg-color: ${color.input.default.enabled.border};\n --switch-fg-color: ${color.input.default.enabled.bg};\n --switch-box-shadow: none;\n\n &:not([hidden]) {\n display: block;\n }\n position: relative;\n width: ${rem(input.switch.width)};\n height: ${rem(input.switch.height)};\n border-radius: ${rem(input.switch.height / 2)};\n\n /* Make sure it’s not possible to interact with the wrapper element */\n pointer-events: none;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1;\n box-shadow: var(--switch-box-shadow);\n border-radius: inherit;\n }\n\n /* Focus styles */\n input:focus + && {\n --switch-box-shadow: ${focusRingStyle({focusRing: input.switch.focusRing})};\n }\n\n input:focus:not(:focus-visible) + && {\n --switch-box-shadow: none;\n }\n\n input:checked + && {\n --switch-bg-color: ${color.input.default.enabled.fg};\n --switch-fg-color: ${color.input.default.enabled.bg};\n }\n\n @media (hover: hover) {\n input:not(:disabled):hover + && {\n --switch-bg-color: ${color.input.default.hovered.border};\n --switch-fg-color: ${color.input.default.hovered.bg};\n }\n\n input:not(:disabled):checked:hover + && {\n --switch-bg-color: ${color.input.default.enabled.fg};\n --switch-fg-color: ${color.input.default.enabled.bg};\n }\n }\n\n input:not([data-read-only]):disabled + && {\n --switch-bg-color: ${color.input.default.disabled.border};\n --switch-fg-color: ${color.input.default.disabled.bg};\n }\n\n input[data-read-only]:disabled + && {\n --switch-bg-color: ${color.input.default.readOnly.border};\n --switch-fg-color: ${color.input.default.readOnly.bg};\n }\n\n input:checked[data-read-only]:disabled + && {\n --switch-bg-color: ${color.input.default.readOnly.fg};\n --switch-fg-color: ${color.input.default.readOnly.bg};\n }\n `\n}\n\n/* Track */\nexport function switchTrackStyles(props: ThemeProps): ReturnType<typeof css> {\n const {input} = getTheme_v2(props.theme)\n\n return css`\n &:not([hidden]) {\n display: block;\n }\n background-color: var(--switch-bg-color);\n position: absolute;\n left: 0;\n top: 0;\n width: ${rem(input.switch.width)};\n height: ${rem(input.switch.height)};\n border-radius: ${rem(input.switch.height / 2)};\n `\n}\n\n/* Thumb */\nexport function switchThumbStyles(\n props: {$checked?: boolean; $indeterminate?: boolean} & ThemeProps,\n): ReturnType<typeof css> {\n const {$indeterminate} = props\n const {input} = getTheme_v2(props.theme)\n const trackWidth = input.switch.width\n const trackHeight = input.switch.height\n const trackPadding = input.switch.padding\n const size = trackHeight - input.switch.padding * 2\n const checkedOffset = trackWidth - trackPadding * 2 - size\n const indeterminateOffset = trackWidth / 2 - size / 2 - trackPadding\n const checked = $indeterminate !== true && props.$checked === true\n\n return css`\n &:not([hidden]) {\n display: block;\n }\n position: absolute;\n left: ${rem(trackPadding)};\n top: ${rem(trackPadding)};\n height: ${rem(size)};\n width: ${rem(size)};\n border-radius: ${rem(size / 2)};\n transition-property: transform;\n transition-duration: ${input.switch.transitionDurationMs}ms;\n transition-timing-function: ${input.switch.transitionTimingFunction};\n background: var(--switch-fg-color);\n transform: translate3d(0, 0, 0);\n box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.05);\n\n ${\n checked &&\n css`\n transform: translate3d(${checkedOffset}px, 0, 0);\n `\n }\n\n ${\n $indeterminate &&\n css`\n transform: translate3d(${indeterminateOffset}px, 0, 0);\n `\n }\n `\n}\n","import {useEffect, useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {\n switchBaseStyles,\n switchInputStyles,\n switchRepresentationStyles,\n switchThumbStyles,\n switchTrackStyles,\n} from './styles'\n\n/**\n * @public\n */\nexport interface SwitchProps {\n indeterminate?: boolean\n}\n\nconst StyledSwitch = styled.span(switchBaseStyles)\nconst Input = styled.input(switchInputStyles)\nconst Representation = styled.span(switchRepresentationStyles)\nconst Track = styled.span(switchTrackStyles)\nconst Thumb = styled.span<{$checked?: boolean; $indeterminate?: boolean}>(switchThumbStyles)\n\n/**\n * The `Switch` component allows the user to toggle a setting on and off.\n *\n * Extends all properties of an `<input type=\"checkbox\" />` element, except type.\n *\n * @public\n */\nexport function Switch(\n props: Omit<React.HTMLProps<HTMLInputElement>, 'as' | 'type'> & SwitchProps,\n) {\n const {\n checked,\n className,\n disabled,\n indeterminate,\n readOnly,\n ref: forwardedRef,\n style,\n ...restProps\n } = props\n const ref = useRef<HTMLInputElement | null>(null)\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useEffect(() => {\n if (ref.current) {\n // Set the indeterminate state\n ref.current.indeterminate = indeterminate || false\n }\n }, [indeterminate])\n\n return (\n <StyledSwitch className={className} data-ui=\"Switch\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n {...restProps}\n checked={indeterminate !== true && checked}\n disabled={disabled || readOnly}\n type=\"checkbox\"\n ref={ref}\n />\n <Representation aria-hidden data-name=\"representation\">\n <Track />\n <Thumb $checked={checked} $indeterminate={indeterminate} />\n </Representation>\n </StyledSwitch>\n )\n}\n","import {useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {ThemeFontWeightKey} from '../../../theme/system/font'\nimport {useCustomValidity} from '../../hooks/useCustomValidity'\nimport {_getArrayProp} from '../../styles/helpers'\nimport {\n responsiveInputPaddingStyle,\n TextInputResponsivePaddingStyleProps,\n} from '../../styles/input/responsiveInputPaddingStyle'\nimport {\n textInputBaseStyle,\n textInputFontSizeStyle,\n TextInputInputStyleProps,\n textInputRepresentationStyle,\n TextInputRepresentationStyleProps,\n textInputRootStyle,\n} from '../../styles/input/textInputStyle'\nimport {responsiveRadiusStyle} from '../../styles/radius/radiusStyle'\nimport {ResponsiveRadiusStyleProps} from '../../styles/radius/types'\nimport {useRootTheme} from '../../theme/useRootTheme'\nimport {ResponsiveRadiusProps} from '../types'\n\n/**\n * @public\n */\nexport interface TextAreaProps extends ResponsiveRadiusProps {\n /**\n * @beta\n */\n __unstable_disableFocusRing?: boolean\n border?: boolean\n customValidity?: string\n fontSize?: number | number[]\n padding?: number | number[]\n weight?: ThemeFontWeightKey\n}\n\nconst StyledTextArea = styled.span(textInputRootStyle)\n\nconst InputRoot = styled.span`\n flex: 1;\n min-width: 0;\n display: block;\n position: relative;\n`\n\nconst Input = styled.textarea<TextInputResponsivePaddingStyleProps & TextInputInputStyleProps>(\n responsiveInputPaddingStyle,\n textInputBaseStyle,\n textInputFontSizeStyle,\n)\n\nconst Presentation = styled.div<ResponsiveRadiusStyleProps & TextInputRepresentationStyleProps>(\n responsiveRadiusStyle,\n textInputRepresentationStyle,\n)\n\n/**\n * A multiline text input.\n *\n\n * @public\n */\nexport function TextArea(props: TextAreaProps & Omit<React.HTMLProps<HTMLTextAreaElement>, 'as'>) {\n const {\n border = true,\n customValidity,\n disabled = false,\n fontSize = 2,\n padding = 3,\n radius = 2,\n ref: forwardedRef,\n weight,\n __unstable_disableFocusRing,\n ...restProps\n } = props\n\n const ref = useRef<HTMLTextAreaElement | null>(null)\n\n const rootTheme = useRootTheme()\n\n useImperativeHandle<HTMLTextAreaElement | null, HTMLTextAreaElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useCustomValidity(ref, customValidity)\n\n return (\n <StyledTextArea data-ui=\"TextArea\">\n <InputRoot>\n <Input\n data-as=\"textarea\"\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n {...restProps}\n $fontSize={_getArrayProp(fontSize)}\n $padding={_getArrayProp(padding)}\n $scheme={rootTheme.scheme}\n $space={_getArrayProp(0)}\n $tone={rootTheme.tone}\n $weight={weight}\n disabled={disabled}\n ref={ref}\n />\n <Presentation\n $radius={_getArrayProp(radius)}\n $unstableDisableFocusRing={__unstable_disableFocusRing}\n $scheme={rootTheme.scheme}\n $tone={rootTheme.tone}\n data-border={border ? '' : undefined}\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n />\n </InputRoot>\n </StyledTextArea>\n )\n}\n","import {useMemo} from 'react'\n\nimport {BoundaryElementContext} from './boundaryElementContext'\nimport {BoundaryElementContextValue} from './types'\n\n/**\n * @public\n */\nexport interface BoundaryElementProviderProps {\n children: React.ReactNode\n element: HTMLElement | null\n}\n\n/**\n * @public\n */\nexport function BoundaryElementProvider(props: BoundaryElementProviderProps): React.JSX.Element {\n const {children, element} = props\n const value: BoundaryElementContextValue = useMemo(() => ({version: 0.0, element}), [element])\n\n return <BoundaryElementContext.Provider value={value}>{children}</BoundaryElementContext.Provider>\n}\n","/**\n * @internal\n * @deprecated ConditionalWrapper was removed in @sanity/ui v4. Inline the conditional wrapping logic instead.\n */\nexport function ConditionalWrapper(_props?: never): never {\n throw new Error(\n '`ConditionalWrapper` was removed in @sanity/ui v4. Inline the conditional wrapping logic instead.',\n )\n}\n","export function findMaxBreakpoints(media: number[], width: number): number[] {\n const ret: number[] = []\n\n for (let i = 0; i < media.length; i += 1) {\n const bp = media[i]\n\n if (bp > width) {\n ret.push(i)\n }\n }\n\n return ret\n}\n\nexport function findMinBreakpoints(media: number[], width: number): number[] {\n const ret: number[] = []\n\n for (let i = 0; i < media.length; i += 1) {\n const bp = media[i]\n\n if (bp <= width) {\n ret.push(i)\n }\n }\n\n return ret\n}\n","import {useImperativeHandle, useMemo, useState} from 'react'\n\nimport {useElementSize} from '../../hooks/useElementSize'\nimport {useTheme_v2} from '../../theme/useTheme'\nimport {findMaxBreakpoints, findMinBreakpoints} from './helpers'\n\n/**\n * DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface MediaQueryProps {\n as?: React.ElementType | keyof React.JSX.IntrinsicElements\n media?: number[]\n}\n\n/**\n * DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function ElementQuery(\n props: MediaQueryProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'media'>,\n) {\n const theme = useTheme_v2()\n const {children, media: _media, ref: forwardedRef, ...restProps} = props\n const media = _media ?? theme.media\n\n const [element, setElement] = useState<HTMLDivElement | null>(null)\n const elementSize = useElementSize(element)\n const width = useMemo(() => elementSize?.border.width ?? window.innerWidth, [elementSize])\n\n const max = useMemo(() => {\n const eq = findMaxBreakpoints(media, width)\n\n return eq.length ? eq.join(' ') : undefined\n }, [media, width])\n const min = useMemo(() => {\n const eq = findMinBreakpoints(media, width)\n\n return eq.length ? eq.join(' ') : undefined\n }, [media, width])\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => element, [\n element,\n ])\n\n return (\n <div data-ui=\"ElementQuery\" {...restProps} data-eq-max={max} data-eq-min={min} ref={setElement}>\n {children}\n </div>\n )\n}\n","import {Component, PropsWithChildren} from 'react'\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 // A plain element rather than the `Code` primitive: `Code` lives on the\n // `@sanity/ui/code` entry point (it lazy-loads `react-refractor`), and\n // the root entry point must not reference that module graph.\n return (\n <pre data-ui=\"ErrorBoundary\">\n <code>{message}</code>\n </pre>\n )\n }\n\n return this.props.children\n }\n}\n","import {useMemo, useSyncExternalStore} from 'react'\n\nimport {PortalContext} from './portalContext'\nimport {PortalContextValue} from './types'\n\n/**\n * @public\n */\nexport interface PortalProviderProps {\n /**\n * @deprecated Use `<BoundaryElementProvider element={...} />` instead\n */\n boundaryElement?: HTMLElement | null\n children: React.ReactNode\n element?: HTMLElement | null\n /**\n * @beta\n */\n __unstable_elements?: Record<string, HTMLElement | null | undefined>\n}\n\n/**\n * @public\n */\nexport function PortalProvider(props: PortalProviderProps): React.JSX.Element {\n // oxlint-disable-next-line no-deprecated\n const {boundaryElement, children, element, __unstable_elements: elements} = props\n const fallbackElement = useSyncExternalStore(\n emptySubscribe,\n () => document.body,\n () => null,\n )\n\n const value: PortalContextValue = useMemo(() => {\n return {\n version: 0.0,\n boundaryElement: boundaryElement || null,\n element: element || fallbackElement,\n elements,\n }\n }, [boundaryElement, element, elements, fallbackElement])\n\n return <PortalContext.Provider value={value}>{children}</PortalContext.Provider>\n}\n\nconst emptySubscribe = () => () => {}\n","import {style} from '@vanilla-extract/css'\n\nexport const srOnly = style({\n display: 'block',\n width: 0,\n height: 0,\n position: 'absolute',\n overflow: ['hidden', 'clip'],\n})\n","import {srOnly} from './srOnly.css'\n\n/**\n * @public\n */\nexport interface SrOnlyProps {\n as?: React.ElementType | keyof React.JSX.IntrinsicElements\n children?: React.ReactNode\n}\n\n/**\n * @public\n */\nexport function SrOnly(\n props: SrOnlyProps & Omit<React.HTMLProps<HTMLDivElement>, 'aria-hidden' | 'as'>,\n) {\n const {as = 'div', children, ref} = props\n // Rendering the polymorphic `as` needs one concrete element type for JSX to\n // type-check the div-flavored props (the same widening styled-components'\n // `as` prop performed here before).\n // oxlint-disable-next-line no-unsafe-type-assertion\n const Component = as as 'div'\n\n return (\n <Component aria-hidden className={srOnly} data-ui=\"SrOnly\" ref={ref}>\n {children}\n </Component>\n )\n}\n","import {useEffect, useImperativeHandle, useRef, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {_isScrollable} from '../../helpers/scroll'\nimport {StackOwnProps} from '../../primitives/stack/stack'\nimport {useTheme_v2} from '../../theme/useTheme'\n\n/**\n * @beta\n */\nexport interface VirtualListChangeOpts {\n fromIndex: number\n gap: number\n itemHeight: number\n scrollHeight: number\n scrollTop: number\n toIndex: number\n}\n\n/**\n * @beta\n */\nexport interface VirtualListProps<Item = any> {\n as?: React.ElementType | keyof React.JSX.IntrinsicElements\n gap?: number\n getItemKey?: (item: Item, itemIndex: number) => string\n items?: Item[]\n onChange?: (opts: VirtualListChangeOpts) => void\n renderItem?: (item: Item) => React.ReactNode\n}\n\nconst StyledVirtualList = styled.div`\n position: relative;\n`\n\nconst ItemWrapper = styled.div`\n position: absolute;\n left: 0;\n right: 0;\n`\n\n/**\n * @beta\n */\nexport function VirtualList(\n props: VirtualListProps &\n StackOwnProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'onChange'>,\n): React.JSX.Element {\n const {\n as = 'div',\n gap = 0,\n getItemKey,\n items = [],\n onChange,\n ref: forwardedRef,\n renderItem,\n ...restProps\n } = props\n const {space} = useTheme_v2()\n const ref = useRef<HTMLDivElement | null>(null)\n const wrapperRef = useRef<HTMLDivElement | null>(null)\n const [scrollTop, setScrollTop] = useState(0)\n const [scrollHeight, setScrollHeight] = useState(0)\n const [itemHeight, setItemHeight] = useState(-1)\n\n // Sync ref to parent\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n\n useEffect(() => {\n if (!wrapperRef.current) return\n\n const firstElement = wrapperRef.current.firstChild\n\n if (firstElement instanceof HTMLElement) {\n setItemHeight(firstElement.offsetHeight)\n }\n // oxlint-disable-next-line react/exhaustive-effect-dependencies\n }, [renderItem])\n\n useEffect((): (() => void) | undefined => {\n if (!ref.current) return\n\n const scrollEl = findScrollable(ref.current.parentNode)\n\n if (scrollEl) {\n if (!(scrollEl instanceof HTMLElement)) return\n\n const handleScroll = () => {\n setScrollTop(scrollEl.scrollTop)\n }\n\n scrollEl.addEventListener('scroll', handleScroll, {passive: true})\n\n const ro = new ResizeObserver((entries) => {\n setScrollHeight(entries[0].contentRect.height)\n })\n\n ro.observe(scrollEl)\n\n handleScroll()\n\n // oxlint-disable-next-line consistent-return\n return () => {\n scrollEl.removeEventListener('scroll', handleScroll)\n\n ro.unobserve(scrollEl)\n ro.disconnect()\n }\n }\n\n const handleScroll = () => {\n setScrollTop(window.scrollY)\n }\n\n const handleResize = () => {\n setScrollHeight(window.innerHeight)\n }\n\n window.addEventListener('scroll', handleScroll, {passive: true})\n window.addEventListener('resize', handleResize)\n\n setScrollHeight(window.innerHeight)\n\n handleScroll()\n\n // oxlint-disable-next-line consistent-return\n return () => {\n window.removeEventListener('scroll', handleScroll)\n window.removeEventListener('resize', handleResize)\n }\n }, [])\n\n const len = items.length\n const height = itemHeight ? len * (itemHeight + space[gap]) - space[gap] : 0\n const fromIndex = height ? Math.max(Math.floor((scrollTop / height) * len) - 2, 0) : 0\n const toIndex = height ? Math.ceil(((scrollTop + scrollHeight) / height) * len) + 1 : 0\n\n useEffect(() => {\n if (!onChange) return\n onChange({fromIndex, gap: space[gap], itemHeight, scrollHeight, scrollTop, toIndex})\n }, [fromIndex, gap, itemHeight, onChange, scrollHeight, scrollTop, space, toIndex])\n\n const children = useChildren({\n fromIndex,\n gap,\n itemHeight,\n space,\n toIndex,\n getItemKey,\n items,\n renderItem,\n })\n\n return (\n // styled-components 6.5 distributes PolymorphicCallProps over ElementType and hits TS2589;\n // narrow the call-site target while still passing the real value.\n // oxlint-disable-next-line no-unsafe-type-assertion\n <StyledVirtualList as={as as 'div'} data-ui=\"VirtualList\" {...restProps} ref={ref}>\n <div ref={wrapperRef} style={{height}}>\n {children}\n </div>\n </StyledVirtualList>\n )\n}\n\nfunction useChildren({\n fromIndex,\n gap,\n getItemKey,\n itemHeight,\n items,\n renderItem,\n space,\n toIndex,\n}: Pick<VirtualListProps, 'getItemKey' | 'renderItem'> &\n Required<Pick<VirtualListProps, 'items'>> & {\n fromIndex: number\n gap: number\n itemHeight: number\n space: number[]\n toIndex: number\n }) {\n if (!renderItem || items.length === 0) return null\n\n if (itemHeight === -1) {\n return [<ItemWrapper key={0}>{renderItem(items[0])}</ItemWrapper>]\n }\n\n return items.slice(fromIndex, toIndex).map((item, _itemIndex) => {\n const itemIndex = fromIndex + _itemIndex\n const node = renderItem(item)\n const key = getItemKey ? getItemKey(item, itemIndex) : itemIndex\n\n return (\n <ItemWrapper key={key} style={{top: itemIndex * (itemHeight + space[gap])}}>\n {node}\n </ItemWrapper>\n )\n })\n}\n\nfunction findScrollable(parentNode: ParentNode | null) {\n let _scrollEl = parentNode\n\n while (_scrollEl && !_isScrollable(_scrollEl)) {\n _scrollEl = _scrollEl.parentNode\n }\n\n return _scrollEl\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["width = 2","_getArrayProp(width)","<StyledContainer\n data-ui=\"Container\"\n {...restProps}\n $width={_getArrayProp(width)}\n forwardedAs={as}\n ref={ref}\n />","_getArrayProp(radiusProp)","_getArrayProp(shadowProp)","_getArrayProp(widthProp)","() => ref.current","() => contentRef.current","() => {\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]","(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 }","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 )","isTopLayer &&\n onClickOutside &&\n ((event) => {\n // oxlint-disable-next-line no-unsafe-type-assertion\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 })","target","event","() => [ref.current]","showHeader && (\n <Box className={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 </Box>\n )","<Box className={dialogContent} flex={1} ref={contentRef} tabIndex={-1}>\n {children}\n </Box>","footer && <Box className={dialogFooter}>{footer}</Box>","<Flex className={dialogLayout} direction=\"column\" flex={1}>\n {showHeader && (\n <Box className={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 </Box>\n )}\n\n <Box className={dialogContent} flex={1} ref={contentRef} tabIndex={-1}>\n {children}\n </Box>\n\n {footer && <Box className={dialogFooter}>{footer}</Box>}\n </Flex>","<Card\n className={dialogCard}\n display=\"flex\"\n radius={radius}\n ref={ref}\n scheme={scheme}\n shadow={shadow}\n >\n <Flex className={dialogLayout} direction=\"column\" flex={1}>\n {showHeader && (\n <Box className={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 </Box>\n )}\n\n <Box className={dialogContent} flex={1} ref={contentRef} tabIndex={-1}>\n {children}\n </Box>\n\n {footer && <Box className={dialogFooter}>{footer}</Box>}\n </Flex>\n </Card>","<Container className={dialogContainer} data-ui=\"DialogCard\" display=\"flex\" width={width}>\n <Card\n className={dialogCard}\n display=\"flex\"\n radius={radius}\n ref={ref}\n scheme={scheme}\n shadow={shadow}\n >\n <Flex className={dialogLayout} direction=\"column\" flex={1}>\n {showHeader && (\n <Box className={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 </Box>\n )}\n\n <Box className={dialogContent} flex={1} ref={contentRef} tabIndex={-1}>\n {children}\n </Box>\n\n {footer && <Box className={dialogFooter}>{footer}</Box>}\n </Flex>\n </Card>\n </Container>","autoFocus = true","hideCloseButton = false","cardRadiusProp = 4","cardShadow = 3","paddingProp = 3","widthProp = 0","_animate = false","_getArrayProp(cardRadiusProp)","_getArrayProp(paddingProp)","_getArrayProp(positionProp)","_getArrayProp(zOffsetProp)","(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 }","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 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 }","cardElement","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])","clsx(dialogLayer, animate && dialogAnimated, className)","animate && dialogAnimated","<div ref={preDivRef} tabIndex={0} />","<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>","<div ref={postDivRef} tabIndex={0} />","<StyledDialog\n {...restProps}\n $padding={padding}\n $position={position}\n aria-labelledby={labelId}\n className={clsx(dialogLayer, animate && dialogAnimated, className)}\n aria-modal\n data-ui=\"Dialog\"\n id={id}\n onActivate={onActivate}\n onClick={handleRootClick}\n onFocus={handleFocus}\n ref={ref}\n // oxlint-disable-next-line prefer-tag-over-role\n role=\"dialog\"\n zOffset={zOffset}\n >\n {/* oxlint-disable-next-line 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 {/* oxlint-disable-next-line no-noninteractive-tabindex */}\n <div ref={postDivRef} tabIndex={0} />\n </StyledDialog>","<Portal __unstable_name={portalProp}>\n <StyledDialog\n {...restProps}\n $padding={padding}\n $position={position}\n aria-labelledby={labelId}\n className={clsx(dialogLayer, animate && dialogAnimated, className)}\n aria-modal\n data-ui=\"Dialog\"\n id={id}\n onActivate={onActivate}\n onClick={handleRootClick}\n onFocus={handleFocus}\n ref={ref}\n // oxlint-disable-next-line prefer-tag-over-role\n role=\"dialog\"\n zOffset={zOffset}\n >\n {/* oxlint-disable-next-line 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 {/* oxlint-disable-next-line no-noninteractive-tabindex */}\n <div ref={postDivRef} tabIndex={0} />\n </StyledDialog>\n </Portal>","{\n version: 0.0,\n position,\n zOffset,\n }","useMemo(\n () => ({\n version: 0.0,\n position,\n zOffset,\n }),\n [position, zOffset],\n )","<DialogContext.Provider value={contextValue}>{children}</DialogContext.Provider>","DialogContext.Provider","animated = false","() => {\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]","_getArrayProp(radius)","clsx(\n skeleton,\n (delay ? visible : true) ? skeletonVisible : skeletonHidden,\n animated ? skeletonAnimated : skeletonStatic,\n className,\n )","(delay ? visible : true) ? skeletonVisible : skeletonHidden","animated ? skeletonAnimated : skeletonStatic","<StyledSkeleton\n data-ui=\"Skeleton\"\n {...restProps}\n $radius={_getArrayProp(radius)}\n className={clsx(\n skeleton,\n (delay ? visible : true) ? skeletonVisible : skeletonHidden,\n animated ? skeletonAnimated : skeletonStatic,\n className,\n )}\n ref={ref}\n />","size = 2","_getArrayProp(size)","<StyledSkeleton data-ui=\"TextSkeleton\" {...restProps} $size={$size} $style=\"text\" />","<StyledSkeleton data-ui=\"LabelSkeleton\" {...restProps} $size={$size} $style=\"label\" />","<StyledSkeleton data-ui=\"HeadingSkeleton\" {...restProps} $size={$size} $style=\"heading\" />","<StyledSkeleton data-ui=\"CodeSkeleton\" {...restProps} $size={$size} $style=\"code\" />","fontSize = 1","padding = 2","() => ref.current","() => {\n focusedRef.current = false\n }","useCallback(() => {\n focusedRef.current = false\n }, [])","(event: React.FocusEvent<HTMLButtonElement>) => {\n focusedRef.current = true\n if (onFocus) onFocus(event)\n }","useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n focusedRef.current = true\n if (onFocus) onFocus(event)\n },\n [onFocus],\n )","() => {\n if (focused && !focusedRef.current) {\n if (ref.current) ref.current.focus()\n focusedRef.current = true\n }\n }","[focused]","clsx(tab, className)","<Button\n className={clsx(tab, className)}\n data-ui=\"Tab\"\n {...restProps}\n aria-selected={selected ? 'true' : 'false'}\n fontSize={fontSize}\n icon={icon}\n id={id}\n mode=\"bleed\"\n onClick={onClick}\n onBlur={handleBlur}\n onFocus={handleFocus}\n padding={padding}\n ref={ref}\n role=\"tab\"\n selected={selected}\n tabIndex={selected ? 0 : -1}\n text={label}\n type=\"button\"\n />","selected ? 'true' : 'false'","selected ? 0 : -1","children.map((child, childIndex) =>\n cloneElement(child, {\n focused: focusedIndex === childIndex,\n key: childIndex,\n onFocus: () => setFocusedIndex(childIndex),\n }),\n )","(child, childIndex) =>\n cloneElement(child, {\n focused: focusedIndex === childIndex,\n key: childIndex,\n onFocus: () => setFocusedIndex(childIndex),\n })","(event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n setFocusedIndex((prevIndex) => (prevIndex + numTabs - 1) % numTabs)\n }\n\n if (event.key === 'ArrowRight') {\n setFocusedIndex((prevIndex) => (prevIndex + 1) % numTabs)\n }\n }","prevIndex","useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n setFocusedIndex((prevIndex) => (prevIndex + numTabs - 1) % numTabs)\n }\n\n if (event.key === 'ArrowRight') {\n setFocusedIndex((prevIndex) => (prevIndex + 1) % numTabs)\n }\n },\n [numTabs],\n )","clsx(tabList, className)","<Inline\n className={clsx(tabList, className)}\n data-ui=\"TabList\"\n {...restProps}\n onKeyDown={handleKeyDown}\n ref={ref}\n role=\"tablist\"\n >\n {tabs}\n </Inline>","<Box\n data-ui=\"TabPanel\"\n {...restProps}\n flex={flex}\n role=\"tabpanel\"\n tabIndex={props.tabIndex === undefined ? 0 : props.tabIndex}\n >\n {props.children}\n </Box>","children","props.tabIndex === undefined ? 0 : props.tabIndex","gap = 1","[]","useMemo(() => [], [])","{}","() => ref.current","() => {\n focusedElementRef.current = focusedElement\n }","[focusedElement]","() => {\n stateRef.current = state\n }","[state]","(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 }","path","s","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 )","(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 }","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 version: 0.0,\n focusedElement: focusedElement || itemElements[0] || null,\n level: 0,\n path,\n registerItem,\n setExpanded,\n setFocusedElement,\n gap,\n state,\n }","focusedElement || itemElements[0] || null","useMemo(\n () => ({\n version: 0.0,\n focusedElement: focusedElement || itemElements[0] || null,\n level: 0,\n path,\n registerItem,\n setExpanded,\n setFocusedElement,\n gap,\n state,\n }),\n [focusedElement, gap, itemElements, path, registerItem, setExpanded, state],\n )","(event: React.KeyboardEvent<HTMLUListElement>) => {\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 }","itemState","useCallback(\n (event: React.KeyboardEvent<HTMLUListElement>) => {\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 )","(event: React.FocusEvent<HTMLUListElement>) => {\n setFocusedElement(event.target)\n\n // Call the element's `focus` handler\n onFocus?.(event)\n }","event","useCallback(\n (event: React.FocusEvent<HTMLUListElement>) => {\n setFocusedElement(event.target)\n\n // Call the element's `focus` handler\n onFocus?.(event)\n },\n [onFocus],\n )","() => {\n if (!ref.current) return\n const _itemElements = Array.from(\n ref.current.querySelectorAll('[data-ui=\"TreeItem\"]'),\n ) as HTMLElement[]\n\n setItemElements(_itemElements)\n // oxlint-disable-next-line react/exhaustive-effect-dependencies\n }","[children]","<Stack\n as=\"ul\"\n data-ui=\"Tree\"\n {...restProps}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n ref={ref}\n role=\"tree\"\n gap={gap}\n >\n {children}\n </Stack>","<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 gap={gap}\n >\n {children}\n </Stack>\n </TreeContext.Provider>","TreeContext.Provider","expanded = false","<Stack\n as=\"ul\"\n data-ui=\"TreeGroup\"\n {...restProps}\n hidden={!expanded}\n marginTop={tree.gap}\n // oxlint-disable-next-line prefer-tag-over-role\n role=\"group\"\n gap={tree.gap}\n >\n {children}\n </Stack>","!expanded","gap","expandedProp = false","fontSize = 1","padding = 2","selected = false","gap = 2","(node: HTMLLIElement | null) => {\n startTransition(() => _setRootElement(node))\n }","useCallback((node: HTMLLIElement | null) => {\n startTransition(() => _setRootElement(node))\n }, [])","itemPath","itemPath.join('/')","[itemPath, itemPath.join('/')]","useMemo(() => {\n const itemPath = path.concat([id || ''])\n return [itemPath, itemPath.join('/')]\n }, [id, path])","{...tree, level: tree.level + 1, path: itemPath}","tree.level + 1","useMemo(\n () => ({...tree, level: tree.level + 1, path: itemPath}),\n [itemPath, tree],\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 }","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 )","(event: React.KeyboardEvent<HTMLElement>) => {\n if (focused && event.key === 'Enter') {\n const el = treeitemRef.current || rootElement\n\n el?.click()\n }\n }","event","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 if (!rootElement) return\n\n return registerItem(rootElement, itemKey, expanded, selected)\n }","[expanded, itemKey, registerItem, rootElement, selected]","{\n visibility: IconComponent || children ? 'visible' : 'hidden',\n pointerEvents: 'none',\n }","IconComponent || children ? 'visible' : 'hidden'","IconComponent && (\n <Text muted={muted} size={fontSize} weight={weight}>\n <IconComponent />\n </Text>\n )","!IconComponent && (\n <Text muted={muted} size={fontSize} weight={weight}>\n <ToggleArrowRightIcon style={{transform: expanded ? 'rotate(90deg)' : undefined}} />\n </Text>\n )","<Box\n marginRight={gap}\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 <Text muted={muted} size={fontSize} weight={weight}>\n <ToggleArrowRightIcon style={{transform: expanded ? 'rotate(90deg)' : undefined}} />\n </Text>\n )}\n </Box>","<Box flex={1}>\n <Text muted={muted} size={fontSize} textOverflow=\"ellipsis\" weight={weight}>\n {text}\n </Text>\n </Box>","<Flex padding={padding}>\n <Box\n marginRight={gap}\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 <Text muted={muted} size={fontSize} weight={weight}>\n <ToggleArrowRightIcon style={{transform: expanded ? 'rotate(90deg)' : undefined}} />\n </Text>\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>","<TreeItemBox\n {...linkProps}\n $level={tree.level}\n aria-expanded={expanded}\n as={linkAs}\n data-as={typeof linkAs === 'string' ? linkAs : 'a'}\n data-ui=\"TreeItem__box\"\n href={href}\n ref={treeitemRef}\n role=\"treeitem\"\n tabIndex={tabIndex}\n >\n {content}\n </TreeItemBox>","typeof linkAs === 'string' ? linkAs : 'a'","level","children && <TreeGroup hidden={!expanded}>{children}</TreeGroup>","<TreeContext.Provider value={contextValue}>\n {children && <TreeGroup hidden={!expanded}>{children}</TreeGroup>}\n </TreeContext.Provider>","TreeContext.Provider","<TreeItemBox $level={tree.level} as=\"div\" data-ui=\"TreeItem__box\">\n {content}\n </TreeItemBox>","children && <TreeGroup expanded={expanded}>{children}</TreeGroup>","<TreeContext.Provider value={contextValue}>\n {children && <TreeGroup expanded={expanded}>{children}</TreeGroup>}\n </TreeContext.Provider>","<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 className={clsx(treeItem, restProps.className)}\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>","StyledTreeItem","selected ? '' : undefined","clsx(treeItem, restProps.className)","\"TreeItem\"","() => false","getServerSnapshot = () => false","muted = false","size = 2","<SpanWithTextOverflow>{children}</SpanWithTextOverflow>","<span>{children}</span>","_getArrayProp(align)","_getArrayProp(size)","<StyledLabel\n data-ui=\"Label\"\n {...restProps}\n $accent={accent}\n $align={_getArrayProp(align)}\n $muted={muted}\n $size={_getArrayProp(size)}\n $weight={weight}\n ref={ref}\n >\n {children}\n </StyledLabel>","color = 'gray'","status = 'online'","sizeProp = 1","() => {\n if (arrowPosition === arrowPositionProp) return undefined\n\n // Start animation in the next frame\n const raf = requestAnimationFrame(() => setArrowPosition(arrowPositionProp))\n\n return () => cancelAnimationFrame(raf)\n }","[arrowPosition, arrowPositionProp]","() => {\n // oxlint-disable-next-line react/set-state-in-effect\n if (src) setImageFailed(false)\n }","[src]","() => {\n setImageFailed(true)\n\n if (onImageLoadError) {\n onImageLoadError(new Error('Avatar: the image failed to load'))\n }\n }","useCallback(() => {\n setImageFailed(true)\n\n if (onImageLoadError) {\n onImageLoadError(new Error('Avatar: the image failed to load'))\n }\n }, [onImageLoadError])","<Arrow>\n <svg width=\"11\" height=\"7\" viewBox=\"0 0 11 7\" fill=\"none\">\n <path\n d=\"M6.67948 1.50115L11 7L0 7L4.32052 1.50115C4.92109 0.736796 6.07891 0.736795 6.67948 1.50115Z\"\n fill={color}\n />\n </svg>\n </Arrow>","!imageFailed && src && (\n <AvatarImage viewBox={`0 0 ${_sizeRem} ${_sizeRem}`} fill=\"none\">\n <defs>\n <pattern id={imageId} patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <image href={src} width=\"1\" height=\"1\" onError={handleImageError} />\n </pattern>\n </defs>\n\n <circle cx={_radius} cy={_radius} r={_radius} fill={`url(#${imageId})`} />\n\n {!__unstable_hideInnerStroke && (\n <BgStroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n vectorEffect=\"non-scaling-stroke\"\n />\n )}\n\n <Stroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n vectorEffect=\"non-scaling-stroke\"\n />\n </AvatarImage>\n )","(s) => {\n if (s === 1) return 1\n if (s === 2) return 3\n if (s === 3) return 5\n\n return 0\n }","<StyledAvatar\n as={as}\n data-as={typeof as === 'string' ? as : undefined}\n data-ui=\"Avatar\"\n {...restProps}\n $color={color}\n $size={size}\n aria-label={title}\n data-arrow-position={arrowPosition}\n data-status={status}\n ref={ref}\n title={title}\n >\n <Arrow>\n <svg width=\"11\" height=\"7\" viewBox=\"0 0 11 7\" fill=\"none\">\n <path\n d=\"M6.67948 1.50115L11 7L0 7L4.32052 1.50115C4.92109 0.736796 6.07891 0.736795 6.67948 1.50115Z\"\n fill={color}\n />\n </svg>\n </Arrow>\n\n {!imageFailed && src && (\n <AvatarImage viewBox={`0 0 ${_sizeRem} ${_sizeRem}`} fill=\"none\">\n <defs>\n <pattern id={imageId} patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <image href={src} width=\"1\" height=\"1\" onError={handleImageError} />\n </pattern>\n </defs>\n\n <circle cx={_radius} cy={_radius} r={_radius} fill={`url(#${imageId})`} />\n\n {!__unstable_hideInnerStroke && (\n <BgStroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n vectorEffect=\"non-scaling-stroke\"\n />\n )}\n\n <Stroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n vectorEffect=\"non-scaling-stroke\"\n />\n </AvatarImage>\n )}\n\n {(imageFailed || !src) && initials && (\n <>\n <Initials>\n <InitialsLabel\n forwardedAs=\"span\"\n size={size.map((s) => {\n if (s === 1) return 1\n if (s === 2) return 3\n if (s === 3) return 5\n\n return 0\n })}\n weight=\"medium\"\n >\n {initials}\n </InitialsLabel>\n </Initials>\n </>\n )}\n </StyledAvatar>","StyledAvatar","(imageFailed || !src) && initials && (\n <>\n <Initials>\n <InitialsLabel\n forwardedAs=\"span\"\n size={size.map((s) => {\n if (s === 1) return 1\n if (s === 2) return 3\n if (s === 3) return 5\n\n return 0\n })}\n weight=\"medium\"\n >\n {initials}\n </InitialsLabel>\n </Initials>\n </>\n )","typeof as === 'string' ? as : undefined","\"Avatar\"","sizeProp = 1","Label","StyledAvatarCounter","\"span\"","size.map((s) => {\n if (s === 1) return 1\n if (s === 2) return 3\n if (s === 3) return 5\n\n return 0\n })","size","\"AvatarCounter\"","ref","(s) => {\n if (s === 1) return 1\n if (s === 2) return 3\n if (s === 3) return 5\n\n return 0\n }","<Label\n as=\"span\"\n size={size.map((s) => {\n if (s === 1) return 1\n if (s === 2) return 3\n if (s === 3) return 5\n\n return 0\n })}\n weight=\"medium\"\n >\n {count}\n </Label>","<StyledAvatarCounter $size={size} data-ui=\"AvatarCounter\" ref={ref}>\n <Label\n as=\"span\"\n size={size.map((s) => {\n if (s === 1) return 1\n if (s === 2) return 3\n if (s === 3) return 5\n\n return 0\n })}\n weight=\"medium\"\n >\n {count}\n </Label>\n </StyledAvatarCounter>","maxLengthProp = 4","sizeProp = 1","StyledAvatarStack","\"AvatarStack\"","restProps","ref","size","len === 0 && (\n <div>\n <AvatarCounter count={len} size={size} />\n </div>\n )","len !== 0 && extraCount > 1 && (\n <div>\n <AvatarCounter count={extraCount} size={size} />\n </div>\n )","visibleChildren.map((child, childIndex) => (\n // oxlint-disable-next-line no-array-index-key\n <div key={String(childIndex)}>{cloneElement(child, {size})}</div>\n ))","_getArrayProp(sizeProp)","(child, childIndex) => (\n // oxlint-disable-next-line no-array-index-key\n <div key={String(childIndex)}>{cloneElement(child, {size})}</div>\n )","<StyledAvatarStack data-ui=\"AvatarStack\" {...restProps} ref={ref} $size={size}>\n {len === 0 && (\n <div>\n <AvatarCounter count={len} size={size} />\n </div>\n )}\n\n {len !== 0 && extraCount > 1 && (\n <div>\n <AvatarCounter count={extraCount} size={size} />\n </div>\n )}\n\n {visibleChildren.map((child, childIndex) => (\n // oxlint-disable-next-line no-array-index-key\n <div key={String(childIndex)}>{cloneElement(child, {size})}</div>\n ))}\n </StyledAvatarStack>","fontSize = 1","padding = 1","radius = 'full'","tone = 'default'","_getArrayProp(radius)","_getArrayProp(padding)","<Text size={fontSize}>{children}</Text>","<StyledBadge\n data-ui=\"Badge\"\n {...restProps}\n $tone={tone}\n $radius={_getArrayProp(radius)}\n padding={_getArrayProp(padding)}\n ref={ref}\n >\n <Text size={fontSize}>{children}</Text>\n </StyledBadge>","() => ref.current","() => {\n if (ref.current) {\n // Set the indeterminate state\n ref.current.indeterminate = indeterminate || false\n }\n }","[indeterminate]","clsx(checkbox, className)","<Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-error={customValidity ? '' : undefined}\n {...restProps}\n checked={checked}\n disabled={disabled || readOnly}\n type=\"checkbox\"\n readOnly={readOnly}\n ref={ref}\n />","!disabled && readOnly ? '' : undefined","customValidity ? '' : undefined","disabled || readOnly","<span>\n <CheckmarkIcon />\n <RemoveIcon />\n </span>","<div className={clsx(checkbox, className)} data-ui=\"Checkbox\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-error={customValidity ? '' : undefined}\n {...restProps}\n checked={checked}\n disabled={disabled || readOnly}\n type=\"checkbox\"\n readOnly={readOnly}\n ref={ref}\n />\n <span>\n <CheckmarkIcon />\n <RemoveIcon />\n </span>\n </div>","accent = false","muted = false","size = 2","<SpanWithTextOverflow>{children}</SpanWithTextOverflow>","_getArrayProp(align)","_getArrayProp(size)","<span>{children}</span>","<StyledHeading\n data-ui=\"Heading\"\n {...restProps}\n $accent={accent}\n $align={_getArrayProp(align)}\n $muted={muted}\n $size={_getArrayProp(size)}\n $weight={weight}\n ref={ref}\n >\n <span>{children}</span>\n </StyledHeading>","() => ref.current","clsx(radio, className)","<Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-error={customValidity ? '' : undefined}\n {...restProps}\n disabled={disabled || readOnly}\n readOnly={readOnly}\n ref={ref}\n type=\"radio\"\n />","!disabled && readOnly ? '' : undefined","customValidity ? '' : undefined","disabled || readOnly","<span />","<div className={clsx(radio, className)} data-ui=\"Radio\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-error={customValidity ? '' : undefined}\n {...restProps}\n disabled={disabled || readOnly}\n readOnly={readOnly}\n ref={ref}\n type=\"radio\"\n />\n <span />\n </div>","fontSize = 2","gap = 3","padding = 3","radius = 2","() => ref.current","_getArrayProp(fontSize)","_getArrayProp(padding)","_getArrayProp(radius)","_getArrayProp(gap)","<Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-ui=\"Select\"\n {...restProps}\n $fontSize={_getArrayProp(fontSize)}\n $padding={_getArrayProp(padding)}\n $radius={_getArrayProp(radius)}\n $space={_getArrayProp(gap)}\n disabled={disabled || readOnly}\n ref={ref}\n >\n {children}\n </Input>","disabled || readOnly","!disabled && readOnly ? '' : undefined","<ChevronDownIcon />","<Text size={fontSize}>\n <ChevronDownIcon />\n </Text>","<IconBox padding={padding}>\n <Text size={fontSize}>\n <ChevronDownIcon />\n </Text>\n </IconBox>","<div className={select} data-ui=\"Select\">\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-ui=\"Select\"\n {...restProps}\n $fontSize={_getArrayProp(fontSize)}\n $padding={_getArrayProp(padding)}\n $radius={_getArrayProp(radius)}\n $space={_getArrayProp(gap)}\n disabled={disabled || readOnly}\n ref={ref}\n >\n {children}\n </Input>\n\n <IconBox padding={padding}>\n <Text size={fontSize}>\n <ChevronDownIcon />\n </Text>\n </IconBox>\n </div>","() => ref.current","() => {\n if (ref.current) {\n // Set the indeterminate state\n ref.current.indeterminate = indeterminate || false\n }\n }","[indeterminate]","clsx(switchRoot, className)","<input\n className={switchInput}\n data-read-only={!disabled && readOnly ? '' : undefined}\n {...restProps}\n checked={indeterminate !== true && checked}\n disabled={disabled || readOnly}\n type=\"checkbox\"\n ref={ref}\n />","!disabled && readOnly ? '' : undefined","indeterminate !== true && checked","disabled || readOnly","<Track />","<Representation aria-hidden data-name=\"representation\">\n <Track />\n <Thumb $checked={checked} $indeterminate={indeterminate} />\n </Representation>","<span className={clsx(switchRoot, className)} data-ui=\"Switch\" style={style}>\n <input\n className={switchInput}\n data-read-only={!disabled && readOnly ? '' : undefined}\n {...restProps}\n checked={indeterminate !== true && checked}\n disabled={disabled || readOnly}\n type=\"checkbox\"\n ref={ref}\n />\n <Representation aria-hidden data-name=\"representation\">\n <Track />\n <Thumb $checked={checked} $indeterminate={indeterminate} />\n </Representation>\n </span>","border = true","disabled = false","fontSize = 2","padding = 3","radius = 2","() => ref.current","_getArrayProp(fontSize)","_getArrayProp(padding)","_getArrayProp(0)","<Input\n data-as=\"textarea\"\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n {...restProps}\n $fontSize={_getArrayProp(fontSize)}\n $padding={_getArrayProp(padding)}\n $scheme={rootTheme.scheme}\n $space={_getArrayProp(0)}\n $tone={rootTheme.tone}\n $weight={weight}\n disabled={disabled}\n ref={ref}\n />","scheme","tone","rootTheme.scheme","rootTheme.tone","_getArrayProp(radius)","<Presentation\n $radius={_getArrayProp(radius)}\n $unstableDisableFocusRing={__unstable_disableFocusRing}\n $scheme={rootTheme.scheme}\n $tone={rootTheme.tone}\n data-border={border ? '' : undefined}\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n />","border ? '' : undefined","<span className={textInputRoot} data-ui=\"TextArea\">\n <span className={inputRoot}>\n <Input\n data-as=\"textarea\"\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n {...restProps}\n $fontSize={_getArrayProp(fontSize)}\n $padding={_getArrayProp(padding)}\n $scheme={rootTheme.scheme}\n $space={_getArrayProp(0)}\n $tone={rootTheme.tone}\n $weight={weight}\n disabled={disabled}\n ref={ref}\n />\n <Presentation\n $radius={_getArrayProp(radius)}\n $unstableDisableFocusRing={__unstable_disableFocusRing}\n $scheme={rootTheme.scheme}\n $tone={rootTheme.tone}\n data-border={border ? '' : undefined}\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n />\n </span>\n </span>","{version: 0.0, element}","useMemo(() => ({version: 0.0, element}), [element])","<BoundaryElementContext.Provider value={value}>{children}</BoundaryElementContext.Provider>","BoundaryElementContext.Provider","eq.length ? eq.join(' ') : undefined","useMemo(() => {\n const eq = findMaxBreakpoints(media, width)\n\n return eq.length ? eq.join(' ') : undefined\n }, [media, width])","eq","useMemo(() => {\n const eq = findMinBreakpoints(media, width)\n\n return eq.length ? eq.join(' ') : undefined\n }, [media, width])","() => element","[\n element,\n ]","<div data-ui=\"ElementQuery\" {...restProps} data-eq-max={max} data-eq-min={min} ref={setElement}>\n {children}\n </div>","() => document.body","() => null","{\n version: 0.0,\n boundaryElement: boundaryElement || null,\n element: element || fallbackElement,\n elements,\n }","boundaryElement || null","element || fallbackElement","useMemo(() => {\n return {\n version: 0.0,\n boundaryElement: boundaryElement || null,\n element: element || fallbackElement,\n elements,\n }\n }, [boundaryElement, element, elements, fallbackElement])","<PortalContext.Provider value={value}>{children}</PortalContext.Provider>","PortalContext.Provider","as = 'div'","<Component aria-hidden className={srOnly} data-ui=\"SrOnly\" ref={ref}>\n {children}\n </Component>","as = 'div'","gap = 0","items = []","() => ref.current","() => {\n if (!wrapperRef.current) return\n\n const firstElement = wrapperRef.current.firstChild\n\n if (firstElement instanceof HTMLElement) {\n setItemHeight(firstElement.offsetHeight)\n }\n // oxlint-disable-next-line react/exhaustive-effect-dependencies\n }","[renderItem]","(): (() => void) | undefined => {\n if (!ref.current) return\n\n const scrollEl = findScrollable(ref.current.parentNode)\n\n if (scrollEl) {\n if (!(scrollEl instanceof HTMLElement)) return\n\n const handleScroll = () => {\n setScrollTop(scrollEl.scrollTop)\n }\n\n scrollEl.addEventListener('scroll', handleScroll, {passive: true})\n\n const ro = new ResizeObserver((entries) => {\n setScrollHeight(entries[0].contentRect.height)\n })\n\n ro.observe(scrollEl)\n\n handleScroll()\n\n // oxlint-disable-next-line consistent-return\n return () => {\n scrollEl.removeEventListener('scroll', handleScroll)\n\n ro.unobserve(scrollEl)\n ro.disconnect()\n }\n }\n\n const handleScroll = () => {\n setScrollTop(window.scrollY)\n }\n\n const handleResize = () => {\n setScrollHeight(window.innerHeight)\n }\n\n window.addEventListener('scroll', handleScroll, {passive: true})\n window.addEventListener('resize', handleResize)\n\n setScrollHeight(window.innerHeight)\n\n handleScroll()\n\n // oxlint-disable-next-line consistent-return\n return () => {\n window.removeEventListener('scroll', handleScroll)\n window.removeEventListener('resize', handleResize)\n }\n }","[]","handleScroll","[fromIndex, gap, itemHeight, onChange, scrollHeight, scrollTop, space, toIndex]","() => {\n if (!onChange) return\n onChange({fromIndex, gap: space[gap], itemHeight, scrollHeight, scrollTop, toIndex})\n }","{\n fromIndex,\n gap,\n itemHeight,\n space,\n toIndex,\n getItemKey,\n items,\n renderItem,\n }","clsx(virtualList, className)","{height}","<div ref={wrapperRef} style={{height}}>\n {children}\n </div>","<Component\n className={clsx(virtualList, className)}\n data-ui=\"VirtualList\"\n ref={ref}\n {...restProps}\n >\n <div ref={wrapperRef} style={{height}}>\n {children}\n </div>\n </Component>","{\n fromIndex,\n gap,\n getItemKey,\n itemHeight,\n items,\n renderItem,\n space,\n toIndex,\n}: Pick<VirtualListProps, 'getItemKey' | 'renderItem'> &\n Required<Pick<VirtualListProps, 'items'>> & {\n fromIndex: number\n gap: number\n itemHeight: number\n space: number[]\n toIndex: number\n }","renderItem(items[0])","0","[\n <div key={0} className={virtualListItem}>\n {renderItem(items[0])}\n </div>,\n ]","items.slice(fromIndex, toIndex).map((item, _itemIndex) => {\n const itemIndex = fromIndex + _itemIndex\n const node = renderItem(item)\n const key = getItemKey ? getItemKey(item, itemIndex) : itemIndex\n\n return (\n <div\n key={key}\n className={virtualListItem}\n style={{top: itemIndex * (itemHeight + space[gap])}}\n >\n {node}\n </div>\n )\n })","(item, _itemIndex) => {\n const itemIndex = fromIndex + _itemIndex\n const node = renderItem(item)\n const key = getItemKey ? getItemKey(item, itemIndex) : itemIndex\n\n return (\n <div\n key={key}\n className={virtualListItem}\n style={{top: itemIndex * (itemHeight + space[gap])}}\n >\n {node}\n </div>\n )\n }"],"sources":["../src/core/_compat.ts","../src/core/primitives/container/styles.ts","../src/core/primitives/container/container.tsx","../src/core/components/dialog/styles.ts","../src/core/components/dialog/dialogContext.ts","../src/core/components/dialog/useDialog.ts","../src/core/components/dialog/dialog.css.ts","../src/core/components/dialog/dialog.tsx","../src/core/components/dialog/dialogProvider.tsx","../src/core/components/skeleton/skeleton.css.ts","../src/core/components/skeleton/skeleton.tsx","../src/core/components/skeleton/textSkeleton.tsx","../src/core/components/tab/tab.css.ts","../src/core/components/tab/tab.tsx","../src/core/components/tab/tabList.css.ts","../src/core/components/tab/tabList.tsx","../src/core/components/tab/tabPanel.tsx","../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/tree.css.ts","../src/core/components/tree/treeItem.tsx","../src/core/helpers/scroll.ts","../src/core/hooks/useArrayProp.ts","../src/core/hooks/useClickOutside.ts","../src/core/hooks/useElementRect/useElementRect.ts","../src/core/hooks/useForwardedRef.ts","../src/core/hooks/usePrefersDark.ts","../src/core/styles/font/labelFontStyle.ts","../src/core/primitives/label/styles.ts","../src/core/primitives/label/label.tsx","../src/core/primitives/avatar/styles.ts","../src/core/primitives/avatar/avatar.tsx","../src/core/primitives/avatar/avatarCounter.tsx","../src/core/primitives/avatar/avatarStack.tsx","../src/core/primitives/badge/styles.ts","../src/core/primitives/badge/badge.tsx","../src/core/primitives/checkbox/styles.ts","../src/core/primitives/checkbox/checkbox.css.ts","../src/core/primitives/checkbox/checkbox.tsx","../src/core/styles/font/headingFontStyle.ts","../src/core/primitives/heading/styles.ts","../src/core/primitives/heading/heading.tsx","../src/core/primitives/radio/styles.ts","../src/core/primitives/radio/radio.css.ts","../src/core/primitives/radio/radio.tsx","../src/core/primitives/select/styles.ts","../src/core/primitives/select/select.css.ts","../src/core/primitives/select/select.tsx","../src/core/primitives/switch/styles.ts","../src/core/primitives/switch/switch.css.ts","../src/core/primitives/switch/switch.tsx","../src/core/primitives/textArea/textArea.tsx","../src/core/utils/boundaryElement/boundaryElementProvider.tsx","../src/core/utils/conditionalWrapper/conditionalWrapper.tsx","../src/core/utils/elementQuery/helpers.ts","../src/core/utils/elementQuery/elementQuery.tsx","../src/core/utils/errorBoundary.tsx","../src/core/utils/portal/portalProvider.tsx","../src/core/utils/srOnly/srOnly.css.ts","../src/core/utils/srOnly/srOnly.tsx","../src/core/utils/virtualList/virtualList.css.ts","../src/core/utils/virtualList/virtualList.tsx"],"sourcesContent":["// This file re-exports API members which existed in the `@sanity/ui` export in v1.\n\nimport {buildTheme} from '../theme/build/buildTheme'\nimport {type HSL as _HSL, type RGB as _RGB} from '../theme/build/lib/color-fns/types'\nimport {\n type ThemeColorButtonModeKey as _ThemeColorButtonModeKey,\n type ThemeColorSchemeKey as _ThemeColorSchemeKey,\n} from '../theme/system/color/_system'\nimport {type ThemeColorSyntax as _ThemeColorSyntax} from '../theme/system/color/syntax'\nimport {\n type ThemeFont as _ThemeFont,\n type ThemeFontKey as _ThemeFontKey,\n type ThemeFonts as _ThemeFonts,\n type ThemeFontSize as _ThemeFontSize,\n type ThemeFontWeight as _ThemeFontWeight,\n type ThemeFontWeightKey as _ThemeFontWeightKey,\n} from '../theme/system/font'\nimport {type ThemeLayer as _ThemeLayer} from '../theme/system/layer'\nimport {type ThemeBoxShadow, type ThemeShadow as _ThemeShadow} from '../theme/system/shadow'\nimport {type ThemeStyles} from '../theme/system/styles'\nimport {\n type BaseTheme as _BaseTheme,\n type RootTheme as _RootTheme,\n type Theme as _Theme,\n} from '../theme/system/theme'\n\n/**\n * @public\n * @deprecated Use `BaseTheme` from `@sanity/ui/theme` instead.\n */\nexport type BaseTheme = _BaseTheme\n\n/**\n * @public\n * @deprecated Use `ThemeBoxShadow` from `@sanity/ui/theme` instead.\n */\nexport type BoxShadow = ThemeBoxShadow\n\n/**\n * @public\n * @deprecated Use `HSL` from `@sanity/ui/theme` instead.\n */\nexport type HSL = _HSL\n\n/**\n * @public\n * @deprecated Use `RGB` from `@sanity/ui/theme` instead.\n */\nexport type RGB = _RGB\n\n/**\n * @public\n * @deprecated Use `RootTheme` from `@sanity/ui/theme` instead.\n */\nexport type RootTheme = _RootTheme\n\n/**\n * @public\n * @deprecated Use `ThemeStyles` from `@sanity/ui/theme` instead.\n */\nexport type Styles = ThemeStyles\n\n/**\n * @public\n * @deprecated Use `Theme` from `@sanity/ui/theme` instead.\n */\nexport type Theme = _Theme\n\n/**\n * @public\n * @deprecated Use `ThemeColorButtonModeKey` from `@sanity/ui/theme` instead.\n */\nexport type ThemeColorButtonModeKey = _ThemeColorButtonModeKey\n\n/**\n * @public\n * @deprecated Use `ThemeColorSchemeKey` from `@sanity/ui/theme` instead.\n */\nexport type ThemeColorSchemeKey = _ThemeColorSchemeKey\n\n/**\n * @public\n * @deprecated Use `ThemeColorSyntax` from `@sanity/ui/theme` instead.\n */\nexport type ThemeColorSyntax = _ThemeColorSyntax\n\n/**\n * @public\n * @deprecated Use `ThemeFont` from `@sanity/ui/theme` instead.\n */\nexport type ThemeFont = _ThemeFont\n\n/**\n * @public\n * @deprecated Use `ThemeFontKey` from `@sanity/ui/theme` instead.\n */\nexport type ThemeFontKey = _ThemeFontKey\n\n/**\n * @public\n * @deprecated Use `ThemeFontSize` from `@sanity/ui/theme` instead.\n */\nexport type ThemeFontSize = _ThemeFontSize\n\n/**\n * @public\n * @deprecated Use `ThemeFontWeight` from `@sanity/ui/theme` instead.\n */\nexport type ThemeFontWeight = _ThemeFontWeight\n\n/**\n * @public\n * @deprecated Use `ThemeFontWeightKey` from `@sanity/ui/theme` instead.\n */\nexport type ThemeFontWeightKey = _ThemeFontWeightKey\n\n/**\n * @public\n * @deprecated Use `ThemeFonts` from `@sanity/ui/theme` instead.\n */\nexport type ThemeFonts = _ThemeFonts\n\n/**\n * @public\n * @deprecated Use `ThemeLayer` from `@sanity/ui/theme` instead.\n */\nexport type ThemeLayer = _ThemeLayer\n\n/**\n * @public\n * @deprecated Use `ThemeShadow` from `@sanity/ui/theme` instead.\n */\nexport type ThemeShadow = _ThemeShadow\n\nimport {createColorTheme as _createColorTheme} from '../theme/build/_deprecated/color/factory'\nimport {multiply as _multiply} from '../theme/build/lib/color-fns/blend/multiply'\nimport {screen as _screen} from '../theme/build/lib/color-fns/blend/screen'\nimport {\n hexToRgb as _hexToRgb,\n hslToRgb as _hslToRgb,\n rgbToHex as _rgbToHex,\n rgbToHsl as _rgbToHsl,\n} from '../theme/build/lib/color-fns/convert'\nimport {parseColor as _parseColor} from '../theme/build/lib/color-fns/parse'\nimport {rgba as _rgba} from '../theme/build/lib/color-fns/rgba'\n\n/**\n * @public\n * @deprecated Use `createColorTheme` from `@sanity/ui/theme` instead.\n */\n// oxlint-disable-next-line no-deprecated\nexport const createColorTheme = _createColorTheme\n\n/**\n * @public\n * @deprecated Use `hexToRgb` from `@sanity/ui/theme` instead.\n */\nexport const hexToRgb = _hexToRgb\n\n/**\n * @public\n * @deprecated Use `hslToRgb` from `@sanity/ui/theme` instead.\n */\nexport const hslToRgb = _hslToRgb\n\n/**\n * @public\n * @deprecated Use `multiply` from `@sanity/ui/theme` instead.\n */\nexport const multiply = _multiply\n\n/**\n * @public\n * @deprecated Use `parseColor` from `@sanity/ui/theme` instead.\n */\nexport const parseColor = _parseColor\n\n/**\n * @public\n * @deprecated Use `rgbToHex` from `@sanity/ui/theme` instead.\n */\nexport const rgbToHex = _rgbToHex\n\n/**\n * @public\n * @deprecated Use `rgbToHsl` from `@sanity/ui/theme` instead.\n */\nexport const rgbToHsl = _rgbToHsl\n\n/**\n * @public\n * @deprecated Use `rgba` from `@sanity/ui/theme` instead.\n */\nexport const rgba = _rgba\n\n/**\n * @public\n * @deprecated Use `screen` from `@sanity/ui/theme` instead.\n */\nexport const screen = _screen\n\n/**\n * @public\n * @deprecated Use `buildTheme` from `@sanity/ui/theme` instead.\n */\nexport const studioTheme = buildTheme()\n","import {CSSObject} from '../../../theme/system/css'\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {_responsive, rem} from '../../styles/helpers'\nimport {ThemeProps} from '../../styles/types'\nimport {ResponsiveWidthStyleProps} from './types'\n\nconst BASE_STYLE: CSSObject = {\n width: '100%',\n margin: '0 auto',\n}\n\nexport function containerBaseStyle(): CSSObject {\n return BASE_STYLE\n}\n\nexport function responsiveContainerWidthStyle(\n props: ResponsiveWidthStyleProps & ThemeProps,\n): CSSObject[] {\n const {container, media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$width, (val) => ({\n maxWidth: val === 'auto' ? 'none' : rem(container[val]),\n }))\n}\n","import {styled} from 'styled-components'\n\nimport {_getArrayProp} from '../../styles/helpers'\nimport {ElementType, Props} from '../../types/component'\nimport {Box, BoxOwnProps} from '../box/box'\nimport {ResponsiveWidthProps} from '../types'\nimport {containerBaseStyle, responsiveContainerWidthStyle} from './styles'\nimport {ResponsiveWidthStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface ContainerOwnProps extends BoxOwnProps, ResponsiveWidthProps {}\n\n/**\n * @public\n */\nexport type ContainerProps<E extends ElementType = 'div'> = Props<ContainerOwnProps, E>\n\nconst StyledContainer = styled(Box)<ResponsiveWidthStyleProps>(\n containerBaseStyle,\n responsiveContainerWidthStyle,\n)\n\nfunction ContainerComponent(\n props: ContainerOwnProps & {as?: ElementType} & Omit<\n React.HTMLProps<HTMLDivElement>,\n 'as' | 'height' | 'width'\n >,\n) {\n const {as, ref, width = 2, ...restProps} = props\n\n return (\n <StyledContainer\n data-ui=\"Container\"\n {...restProps}\n $width={_getArrayProp(width)}\n forwardedAs={as}\n ref={ref}\n />\n )\n}\n\n/**\n * The `Container` component wraps content layout in a defined set of widths.\n *\n * @public\n */\n// oxlint-disable-next-line no-unsafe-type-assertion\nexport const Container = ContainerComponent as unknown as <E extends ElementType = 'div'>(\n props: ContainerProps<E>,\n) => React.JSX.Element\n","import {CSSObject} from '../../../theme/system/css'\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {_responsive} from '../../styles/helpers'\nimport {ThemeProps} from '../../styles/types'\nimport {DialogPosition} from '../../types/dialog'\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 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","import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'\nimport {DialogPosition} from '../../types/dialog'\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 {globalStyle, keyframes, style} from '@vanilla-extract/css'\n\nexport const dialogLayer = style({\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n alignItems: 'center',\n justifyContent: 'center',\n outline: 'none',\n selectors: {\n '&:not([hidden])': {\n display: 'flex',\n },\n },\n})\n\nconst zoomIn = keyframes({\n from: {opacity: 0, transform: 'scale(0.95)'},\n to: {opacity: 1, transform: 'scale(1)'},\n})\n\nconst fadeIn = keyframes({\n from: {opacity: 0},\n to: {opacity: 1},\n})\n\nexport const dialogAnimated = style({\n animation: `${fadeIn} 200ms ease-out`,\n})\n\nglobalStyle(`${dialogAnimated} > [data-ui='DialogCard']`, {\n animation: `${zoomIn} 200ms ease-out`,\n})\n\nexport const dialogContainer = style({\n height: '100%',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n})\n\nexport const dialogCard = style({\n width: '100%',\n minHeight: 0,\n maxHeight: '100%',\n overflow: 'clip',\n})\n\nexport const dialogLayout = style({\n minHeight: 0,\n width: '100%',\n})\n\nexport const dialogHeader = style({\n position: 'relative',\n zIndex: 2,\n})\n\nexport const dialogContent = style({\n position: 'relative',\n zIndex: 1,\n overflow: 'auto',\n outline: 'none',\n})\n\nexport const dialogFooter = style({\n position: 'relative',\n zIndex: 3,\n})\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {clsx} from 'clsx/lite'\nimport {useCallback, useEffect, useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {ThemeColorSchemeKey} from '../../../theme/system/color/_system'\nimport {containsOrEqualsElement, isHTMLElement} from '../../helpers/element'\nimport {focusFirstDescendant, focusLastDescendant} from '../../helpers/focus'\nimport {useClickOutsideEvent} from '../../hooks/useClickOutsideEvent'\nimport {useGlobalKeyDown} from '../../hooks/useGlobalKeyDown'\nimport {usePrefersReducedMotion} from '../../hooks/usePrefersReducedMotion'\nimport {Box} from '../../primitives/box/box'\nimport {Button} from '../../primitives/button/button'\nimport {Card} from '../../primitives/card/card'\nimport {Container} from '../../primitives/container/container'\nimport {Flex} from '../../primitives/flex/flex'\nimport {Text} from '../../primitives/text/text'\nimport {ResponsivePaddingProps, ResponsiveWidthProps} from '../../primitives/types'\nimport {_getArrayProp} from '../../styles/helpers'\nimport {responsivePaddingStyle} from '../../styles/padding/paddingStyle'\nimport {ResponsivePaddingStyleProps} from '../../styles/padding/types'\nimport {useTheme_v2} from '../../theme/useTheme'\nimport {DialogPosition} from '../../types/dialog'\nimport {Radius} from '../../types/radius'\nimport {useBoundaryElement} from '../../utils/boundaryElement/useBoundaryElement'\nimport {Layer, LayerProps} from '../../utils/layer/layer'\nimport {useLayer} from '../../utils/layer/useLayer'\nimport {Portal} from '../../utils/portal/portal'\nimport {usePortal} from '../../utils/portal/usePortal'\nimport {\n dialogStyle,\n responsiveDialogPositionStyle,\n ResponsiveDialogPositionStyleProps,\n} from './styles'\nimport {useDialog} from './useDialog'\n\nimport {\n dialogAnimated,\n dialogCard,\n dialogContainer,\n dialogContent,\n dialogFooter,\n dialogHeader,\n dialogLayer,\n dialogLayout,\n} from './dialog.css'\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 ref?: React.Ref<HTMLDivElement>\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\n>(responsivePaddingStyle, dialogStyle, responsiveDialogPositionStyle)\n\nfunction DialogCard(props: DialogCardProps) {\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 ref: forwardedRef,\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 // oxlint-disable-next-line no-unnecessary-boolean-literal-compare\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 // oxlint-disable-next-line no-unsafe-type-assertion\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 <Container className={dialogContainer} data-ui=\"DialogCard\" display=\"flex\" width={width}>\n <Card\n className={dialogCard}\n display=\"flex\"\n radius={radius}\n ref={ref}\n scheme={scheme}\n shadow={shadow}\n >\n <Flex className={dialogLayout} direction=\"column\" flex={1}>\n {showHeader && (\n <Box className={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 </Box>\n )}\n\n <Box className={dialogContent} flex={1} ref={contentRef} tabIndex={-1}>\n {children}\n </Box>\n\n {footer && <Box className={dialogFooter}>{footer}</Box>}\n </Flex>\n </Card>\n </Container>\n )\n}\n\n/**\n * The Dialog component.\n *\n * @public\n */\nexport function Dialog(\n props: DialogProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'id' | 'width'>,\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 ref,\n scheme,\n width: widthProp = 0,\n zOffset: _zOffsetProp,\n animate: _animate = false,\n className,\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 $padding={padding}\n $position={position}\n aria-labelledby={labelId}\n className={clsx(dialogLayer, animate && dialogAnimated, className)}\n aria-modal\n data-ui=\"Dialog\"\n id={id}\n onActivate={onActivate}\n onClick={handleRootClick}\n onFocus={handleFocus}\n ref={ref}\n // oxlint-disable-next-line prefer-tag-over-role\n role=\"dialog\"\n zOffset={zOffset}\n >\n {/* oxlint-disable-next-line 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 {/* oxlint-disable-next-line no-noninteractive-tabindex */}\n <div ref={postDivRef} tabIndex={0} />\n </StyledDialog>\n </Portal>\n )\n}\n","import {useMemo} from 'react'\n\nimport {DialogPosition} from '../../types/dialog'\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","import {keyframes, style} from '@vanilla-extract/css'\n\nconst shimmer = keyframes({\n '0%': {backgroundPosition: '100%'},\n '100%': {backgroundPosition: '-100%'},\n})\n\nexport const skeleton = style({\n 'transition': 'opacity 200ms ease-in',\n '@media': {\n 'screen and (prefers-reduced-motion: reduce)': {\n backgroundColor: 'var(--card-skeleton-color-from)',\n },\n },\n})\n\nexport const skeletonVisible = style({\n opacity: 1,\n})\n\nexport const skeletonHidden = style({\n opacity: 0,\n})\n\nexport const skeletonAnimated = style({\n '@media': {\n 'screen and (prefers-reduced-motion: no-preference)': {\n backgroundImage: `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 backgroundPosition: '100%',\n backgroundSize: '200% 100%',\n backgroundAttachment: 'fixed',\n animationName: shimmer,\n animationTimingFunction: 'ease-in-out',\n animationIterationCount: 'infinite',\n animationDuration: '2000ms',\n },\n },\n})\n\nexport const skeletonStatic = style({\n '@media': {\n 'screen and (prefers-reduced-motion: no-preference)': {\n backgroundColor: 'var(--card-skeleton-color-from)',\n },\n },\n})\n","import {clsx} from 'clsx/lite'\nimport {useEffect, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Box, BoxOwnProps} from '../../primitives/box/box'\nimport {ResponsiveRadiusProps} from '../../primitives/types'\nimport {_getArrayProp} from '../../styles/helpers'\nimport {responsiveRadiusStyle} from '../../styles/radius/radiusStyle'\nimport {ResponsiveRadiusStyleProps} from '../../styles/radius/types'\n\nimport {\n skeleton,\n skeletonAnimated,\n skeletonHidden,\n skeletonStatic,\n skeletonVisible,\n} from './skeleton.css'\n\nconst StyledSkeleton = styled(Box)<ResponsiveRadiusStyleProps>(responsiveRadiusStyle)\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface SkeletonProps extends ResponsiveRadiusProps, Omit<BoxOwnProps, 'children'> {\n animated?: boolean\n delay?: number\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function Skeleton(props: SkeletonProps & Omit<React.HTMLProps<HTMLDivElement>, 'height'>) {\n const {animated = false, className, delay, radius, ref, ...restProps} = props\n // oxlint-disable-next-line no-unneeded-ternary\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 data-ui=\"Skeleton\"\n {...restProps}\n $radius={_getArrayProp(radius)}\n className={clsx(\n skeleton,\n (delay ? visible : true) ? skeletonVisible : skeletonHidden,\n animated ? skeletonAnimated : skeletonStatic,\n className,\n )}\n ref={ref}\n />\n )\n}\n","import {styled} from 'styled-components'\n\nimport {ThemeFontKey} from '../../../theme/system/font'\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {_getArrayProp, _responsive} from '../../styles/helpers'\nimport {ThemeProps} from '../../styles/types'\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 function TextSkeleton(\n props: TextSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n) {\n const {size = 2, ...restProps} = props\n const $size = _getArrayProp(size)\n\n return <StyledSkeleton data-ui=\"TextSkeleton\" {...restProps} $size={$size} $style=\"text\" />\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function LabelSkeleton(\n props: LabelSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n) {\n const {size = 2, ...restProps} = props\n const $size = _getArrayProp(size)\n\n return <StyledSkeleton data-ui=\"LabelSkeleton\" {...restProps} $size={$size} $style=\"label\" />\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function HeadingSkeleton(\n props: HeadingSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n) {\n const {size = 2, ...restProps} = props\n const $size = _getArrayProp(size)\n\n return <StyledSkeleton data-ui=\"HeadingSkeleton\" {...restProps} $size={$size} $style=\"heading\" />\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function CodeSkeleton(\n props: CodeSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n) {\n const {size = 2, ...restProps} = props\n const $size = _getArrayProp(size)\n\n return <StyledSkeleton data-ui=\"CodeSkeleton\" {...restProps} $size={$size} $style=\"code\" />\n}\n","import {style} from '@vanilla-extract/css'\n\nexport const tab = style({\n maxWidth: '100%',\n})\n","import {clsx} from 'clsx/lite'\nimport {useCallback, useEffect, useImperativeHandle, useRef} from 'react'\n\nimport {Button} from '../../primitives/button/button'\nimport {ButtonTone} from '../../types/button'\n\nimport {tab} from './tab.css'\n\n/**\n * @public\n */\nexport interface TabProps {\n /**\n * The `id` of the correlating `TabPanel` component.\n */\n 'aria-controls': string\n 'id': string\n // oxlint-disable-next-line no-redundant-type-constituents\n 'icon'?: React.ElementType | React.ReactNode\n 'focused'?: boolean\n 'fontSize'?: number | number[]\n 'label'?: React.ReactNode\n 'padding'?: number | number[]\n 'selected'?: boolean\n 'tone'?: ButtonTone\n}\n\n/**\n * @public\n */\nexport function Tab(\n props: TabProps &\n Omit<\n React.HTMLProps<HTMLButtonElement>,\n 'aria-controls' | 'as' | 'id' | 'label' | 'type' | 'width'\n >,\n) {\n const {\n className,\n icon,\n id,\n focused,\n fontSize = 1,\n label,\n onClick,\n onFocus,\n padding = 2,\n ref: forwardedRef,\n selected,\n ...restProps\n } = props\n const ref = useRef<HTMLButtonElement | null>(null)\n const focusedRef = useRef(false)\n\n useImperativeHandle<HTMLButtonElement | null, HTMLButtonElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n const handleBlur = useCallback(() => {\n focusedRef.current = false\n }, [])\n\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n focusedRef.current = true\n if (onFocus) onFocus(event)\n },\n [onFocus],\n )\n\n useEffect(() => {\n if (focused && !focusedRef.current) {\n if (ref.current) ref.current.focus()\n focusedRef.current = true\n }\n }, [focused])\n\n return (\n <Button\n className={clsx(tab, className)}\n data-ui=\"Tab\"\n {...restProps}\n aria-selected={selected ? 'true' : 'false'}\n fontSize={fontSize}\n icon={icon}\n id={id}\n mode=\"bleed\"\n onClick={onClick}\n onBlur={handleBlur}\n onFocus={handleFocus}\n padding={padding}\n ref={ref}\n role=\"tab\"\n selected={selected}\n tabIndex={selected ? 0 : -1}\n text={label}\n type=\"button\"\n />\n )\n}\n","import {globalStyle, style} from '@vanilla-extract/css'\n\nexport const tabList = style({})\n\n// Limits the width of tabs in the tablist\nglobalStyle(`${tabList} > div`, {\n display: 'inline-block',\n verticalAlign: 'middle',\n maxWidth: '100%',\n boxSizing: 'border-box',\n})\n","import {clsx} from 'clsx/lite'\nimport {Children, cloneElement, isValidElement, useCallback, useState} from 'react'\n\nimport {Inline, InlineOwnProps} from '../../primitives/inline/inline'\n\nimport {tabList} from './tabList.css'\n\n/**\n * @public\n */\nexport interface TabListProps extends Omit<InlineOwnProps, 'height'> {\n children: Array<React.JSX.Element | null | undefined | false>\n}\n\n/**\n * @public\n */\nexport function TabList(\n props: TabListProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height'>,\n) {\n const {children: childrenProp, className, ref, ...restProps} = props\n const [focusedIndex, setFocusedIndex] = useState(-1)\n\n const children: React.JSX.Element[] = Children.toArray(childrenProp).filter(isValidElement)\n\n const tabs = children.map((child, childIndex) =>\n cloneElement(child, {\n focused: focusedIndex === childIndex,\n key: childIndex,\n onFocus: () => setFocusedIndex(childIndex),\n }),\n )\n\n const numTabs = tabs.length\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n setFocusedIndex((prevIndex) => (prevIndex + numTabs - 1) % numTabs)\n }\n\n if (event.key === 'ArrowRight') {\n setFocusedIndex((prevIndex) => (prevIndex + 1) % numTabs)\n }\n },\n [numTabs],\n )\n\n return (\n <Inline\n className={clsx(tabList, className)}\n data-ui=\"TabList\"\n {...restProps}\n onKeyDown={handleKeyDown}\n ref={ref}\n role=\"tablist\"\n >\n {tabs}\n </Inline>\n )\n}\n","import {Box, BoxOwnProps} from '../../primitives/box/box'\n\n/**\n * @public\n */\nexport interface TabPanelProps extends BoxOwnProps {\n /**\n * The `id` of the correlating `Tab` component.\n */\n 'aria-labelledby': string\n 'id': string\n}\n\n/**\n * @public\n */\nexport function TabPanel(\n props: TabPanelProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'aria-labelledby' | 'id' | 'role'>,\n) {\n const {flex, ...restProps} = props\n\n return (\n <Box\n data-ui=\"TabPanel\"\n {...restProps}\n flex={flex}\n role=\"tabpanel\"\n tabIndex={props.tabIndex === undefined ? 0 : props.tabIndex}\n >\n {props.children}\n </Box>\n )\n}\n","import {TreeState} from './types'\n\nexport function _findPrevItemElement(\n state: TreeState,\n itemElements: HTMLElement[],\n focusedElement: HTMLElement,\n): HTMLElement | null {\n const idx = itemElements.indexOf(focusedElement)\n const els = itemElements.slice(0, idx)\n const len = els.length\n\n for (let i = len - 1; i >= 0; i -= 1) {\n const itemKey = els[i].getAttribute('data-tree-key')\n\n if (!itemKey) {\n continue\n }\n\n const segments = itemKey.split('/')\n\n segments.pop()\n\n const p: string[] = []\n\n let expanded = true\n\n for (let j = 0; j < segments.length; j += 1) {\n p.push(segments[j])\n\n const k = p.join('/')\n\n if (!state[k]?.expanded) {\n expanded = false\n break\n }\n }\n\n if (expanded) {\n return els[i]\n }\n }\n\n return null\n}\n\nexport function _findNextItemElement(\n state: TreeState,\n itemElements: HTMLElement[],\n focusedElement: HTMLElement,\n): HTMLElement | null {\n const idx = itemElements.indexOf(focusedElement)\n const els = itemElements.slice(idx)\n const len = itemElements.length\n\n for (let i = 1; i < len; i += 1) {\n if (!els[i]) {\n continue\n }\n\n const itemKey = els[i].getAttribute('data-tree-key')\n\n if (!itemKey) {\n continue\n }\n\n const segments = itemKey.split('/')\n\n segments.pop()\n\n const p: string[] = []\n\n let expanded = true\n\n for (let j = 0; j < segments.length; j += 1) {\n p.push(segments[j])\n\n const k = p.join('/')\n\n if (!state[k]?.expanded) {\n expanded = false\n break\n }\n }\n\n if (expanded) {\n return els[i]\n }\n }\n\n return null\n}\n\nexport function _focusItemElement(el: HTMLElement): void {\n if (el.getAttribute('role') === 'treeitem') {\n el.focus()\n }\n\n if (el.getAttribute('role') === 'none') {\n const firstChild = el.firstChild\n\n if (firstChild && firstChild instanceof HTMLElement) {\n firstChild.focus()\n }\n }\n}\n","import {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 {useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState} from 'react'\n\nimport {Stack} from '../../primitives/stack/stack'\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 gap?: number | number[]\n /**\n * @deprecated Use `gap` instead.\n */\n space?: never\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function Tree(\n props: TreeProps &\n Omit<React.HTMLProps<HTMLUListElement>, 'align' | 'as' | 'height' | 'role' | 'wrap'>,\n): React.JSX.Element {\n const {children, gap = 1, onFocus, ref: forwardedRef, ...restProps} = props\n const ref = useRef<HTMLUListElement | 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<HTMLUListElement | null, HTMLUListElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useEffect(() => {\n focusedElementRef.current = focusedElement\n }, [focusedElement])\n\n useEffect(() => {\n stateRef.current = state\n }, [state])\n\n const registerItem = useCallback(\n (element: HTMLElement, path: string, expanded: boolean, selected: boolean) => {\n setState((s) => ({...s, [path]: {element, expanded}}))\n\n if (selected) {\n setFocusedElement(element)\n }\n\n return () => {\n setState((s) => {\n const newState = {...s}\n\n delete newState[path]\n\n return newState\n })\n }\n },\n [],\n )\n\n const setExpanded = useCallback((path: string, expanded: boolean) => {\n setState((s) => {\n const itemState = s[path]\n\n if (!itemState) return s\n\n return {...s, [path]: {...itemState, expanded}}\n })\n }, [])\n\n const contextValue: TreeContextValue = useMemo(\n () => ({\n version: 0.0,\n focusedElement: focusedElement || itemElements[0] || null,\n level: 0,\n path,\n registerItem,\n setExpanded,\n setFocusedElement,\n gap,\n state,\n }),\n [focusedElement, gap, itemElements, path, registerItem, setExpanded, state],\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLUListElement>) => {\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<HTMLUListElement>) => {\n setFocusedElement(event.target)\n\n // Call the element's `focus` handler\n onFocus?.(event)\n },\n [onFocus],\n )\n\n useEffect(() => {\n if (!ref.current) return\n const _itemElements = Array.from(\n ref.current.querySelectorAll('[data-ui=\"TreeItem\"]'),\n ) as HTMLElement[]\n\n setItemElements(_itemElements)\n // oxlint-disable-next-line react/exhaustive-effect-dependencies\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 gap={gap}\n >\n {children}\n </Stack>\n </TreeContext.Provider>\n )\n}\n","import {css} from 'styled-components'\n\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {_cardColorStyle} from '../../styles/card/_cardColorStyle'\nimport {rem} from '../../styles/helpers'\nimport {ThemeProps} from '../../styles/types'\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 display: block;\n padding-left: ${rem(space[2] * $level)};\n text-decoration: none;\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/stack/stack'\nimport {useTree} from './useTree'\n\nexport interface TreeGroupProps {\n expanded?: boolean\n}\n\nexport function TreeGroup(\n props: TreeGroupProps &\n Omit<React.HTMLProps<HTMLUListElement>, '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.gap}\n // oxlint-disable-next-line prefer-tag-over-role\n role=\"group\"\n gap={tree.gap}\n >\n {children}\n </Stack>\n )\n}\n","import {globalStyle, style} from '@vanilla-extract/css'\n\nexport const treeItem = style({\n selectors: {\n \"&[role='treeitem']\": {\n outline: 'none',\n },\n },\n})\n\nglobalStyle(`${treeItem}[role='none'] > [role='treeitem']`, {\n outline: 'none',\n cursor: 'default',\n borderRadius: '3px',\n backgroundColor: 'var(--card-bg-color)',\n color: 'var(--treeitem-fg-color)',\n})\n\nglobalStyle(`${treeItem}[role='none'] > [role='treeitem']:focus`, {\n position: 'relative',\n})\n\nglobalStyle(`${treeItem}[role='treeitem'] > div`, {\n cursor: 'default',\n borderRadius: '3px',\n backgroundColor: 'var(--card-bg-color)',\n color: 'var(--treeitem-fg-color)',\n})\n\nglobalStyle(`${treeItem}[role='treeitem']:focus > div`, {\n position: 'relative',\n})\n","import {ToggleArrowRightIcon} from '@sanity/icons/ToggleArrowRight'\nimport {clsx} from 'clsx/lite'\nimport {startTransition, useCallback, useEffect, useId, useMemo, useRef, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {ThemeFontWeightKey} from '../../../theme/system/font'\nimport {Box} from '../../primitives/box/box'\nimport {Flex} from '../../primitives/flex/flex'\nimport {Text} from '../../primitives/text/text'\nimport {ElementType} from '../../types/component'\nimport {treeItemBoxStyle, TreeItemBoxStyleProps, treeItemRootColorStyle} from './style'\nimport {TreeContext} from './treeContext'\nimport {TreeGroup} from './treeGroup'\nimport {useTree} from './useTree'\n\nimport {treeItem} from './tree.css'\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?: ElementType\n /**\n * Additional props for the link element that is rendered when `href` is set — e.g. `next/link`'s\n * `prefetch` together with `linkAs={Link}`. Props controlled by `TreeItem` itself (`href`,\n * `role`, `tabIndex`, `aria-expanded` and the ref) take precedence.\n */\n linkProps?: React.HTMLProps<HTMLAnchorElement> & Record<string, unknown>\n padding?: number | number[]\n gap?: number | number[]\n /**\n * @deprecated Use `gap` instead.\n */\n space?: never\n text?: React.ReactNode\n weight?: ThemeFontWeightKey\n}\n\nconst StyledTreeItem = styled.li(treeItemRootColorStyle)\n\n/**\n * Styles a plain element (rather than wrapping `Box`) so that `as={linkAs}` renders the custom\n * link component directly, the same way `<Button as={...}>` works. Wrapping `Box` with\n * `.attrs({forwardedAs: 'a'})` made styled-components pass `as=\"a\"` on to the custom component\n * (breaking e.g. `next/link`, which treats `as` as a URL override) and skip the `Box` styles.\n */\nconst TreeItemBox = styled.a<TreeItemBoxStyleProps>(treeItemBoxStyle)\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 linkProps,\n muted,\n onClick,\n padding = 2,\n selected = false,\n gap = 2,\n text,\n weight,\n ...restProps\n } = props\n const [rootElement, _setRootElement] = useState<HTMLLIElement | null>(null)\n /**\n * The startTransition wrapper here is to avoid an issue when on React 18 where this error can happen:\n * >Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.\n * This doesn't happen on React 19 due to automatic batching of all state updates, the startTransition wrapper here gives a type of batching for 18 users in a way that still works with 19.\n * NOTE: The startTransition wrapper is not needed in UI v4, since the baseline there is React 19.\n */\n const setRootElement = useCallback((node: HTMLLIElement | null) => {\n startTransition(() => _setRootElement(node))\n }, [])\n\n const treeitemRef = useRef<HTMLAnchorElement | 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={gap}\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 <Text muted={muted} size={fontSize} weight={weight}>\n <ToggleArrowRightIcon style={{transform: expanded ? 'rotate(90deg)' : undefined}} />\n </Text>\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 className={clsx(treeItem, restProps.className)}\n onClick={handleClick}\n ref={setRootElement}\n role=\"none\"\n >\n <TreeItemBox\n {...linkProps}\n $level={tree.level}\n aria-expanded={expanded}\n as={linkAs}\n data-as={typeof linkAs === 'string' ? linkAs : 'a'}\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 className={clsx(treeItem, restProps.className)}\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}\n","/**\n * @internal\n */\nexport function _isScrollable(el: Node): boolean {\n if (!(el instanceof Element)) return false\n\n const style = window.getComputedStyle(el)\n\n return (\n style.overflowX.includes('auto') ||\n style.overflowX.includes('scroll') ||\n style.overflowY.includes('auto') ||\n style.overflowY.includes('scroll')\n )\n}\n","/** @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(_val?: never, _defaultVal?: never): never {\n throw new Error(\n '`useArrayProp` was removed in @sanity/ui v4. Use `Array.isArray(value) ? value : [value]` instead.',\n )\n}\n","/**\n * @public\n */\nexport type ClickOutsideListener = (event: MouseEvent) => void\n\n/**\n * @public\n */\nexport type ClickOutsideElements = (HTMLElement | null | (HTMLElement | null)[])[]\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?: never,\n _elementsArg?: never,\n _boundaryElement?: never,\n): never {\n throw new Error(\n '`useClickOutside` was removed in @sanity/ui v4. Use `useClickOutsideEvent` instead.',\n )\n}\n","/**\n * Subscribe to the rect of a DOM element.\n * @beta\n *\n * @deprecated Use `useElementSize` instead\n */\nexport function useElementRect(_element?: never): never {\n throw new Error('`useElementRect` was removed in @sanity/ui v4. Use `useElementSize` instead.')\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(_ref?: never): never {\n throw new Error(\n '`useForwardedRef` was removed in @sanity/ui v4. Use `useRef` and `useImperativeHandle` instead.',\n )\n}\n","import {useMatchMedia} from './useMatchMedia'\n\n/**\n * Returns true if a dark color scheme is preferred, false if a light color scheme is preferred or the preference is not known.\n *\n * @param getServerSnapshot - Only called during server-side rendering, and hydration if using hydrateRoot. Since the server environment doesn't have access to the DOM, we can't determine the current value of the media query and we assume `(prefers-color-scheme: light)` since it's the most common scheme (https://react.dev/reference/react/useSyncExternalStore#adding-support-for-server-rendering)\n *\n * If you persist the detected preference in a cookie or a header then you may implement your own server snapshot to read it.\n * Chrome supports reading the `prefers-color-scheme` media query from a header if the server response: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-CH-Prefers-Color-Scheme\n * @example https://gist.github.com/stipsan/13c0cccf8dfc34f4b44bb1b984baf7df\n *\n * @public\n */\nexport function usePrefersDark(getServerSnapshot = () => false): boolean {\n return useMatchMedia('(prefers-color-scheme: dark)', getServerSnapshot)\n}\n","import {CSSObject} from '../../../theme/system/css'\nimport {ThemeProps} from '../types'\nimport {responsiveFont} from './responsiveFont'\nimport {ResponsiveFontStyleProps} from './types'\n\n/**\n * Get responsive CSS for the `label` font style.\n * @internal\n */\nexport function responsiveLabelFont(props: ResponsiveFontStyleProps & ThemeProps): CSSObject[] {\n return responsiveFont('label', props)\n}\n","import {css} from 'styled-components'\n\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {ThemeProps} from '../../styles/types'\n\nexport function labelBaseStyle(\n props: {$accent?: boolean; $muted: boolean} & ThemeProps,\n): ReturnType<typeof css> {\n const {$accent, $muted} = props\n const {font} = getTheme_v2(props.theme)\n\n return css`\n text-transform: uppercase;\n\n ${\n $accent &&\n css`\n color: var(--card-accent-fg-color);\n `\n }\n\n ${\n $muted &&\n css`\n color: var(--card-muted-fg-color);\n `\n }\n\n & code {\n font-family: ${font.code.family};\n border-radius: 1px;\n }\n\n & a {\n text-decoration: none;\n border-radius: 1px;\n }\n\n & svg {\n /* Certain popular CSS libraries changes the defaults for SVG display */\n /* Make sure SVGs are rendered as inline elements */\n display: inline;\n /* ...and aren't squeezed by resets that set max-width: 100% */\n max-width: unset;\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\n }\n `\n}\n","import {styled} from 'styled-components'\n\nimport {ThemeFontWeightKey} from '../../../theme/system/font'\nimport {responsiveLabelFont} from '../../styles/font/labelFontStyle'\nimport {responsiveTextAlignStyle} from '../../styles/font/textAlignStyle'\nimport {_getArrayProp} from '../../styles/helpers'\nimport {ElementType, Props} from '../../types/component'\nimport {TextAlign} from '../../types/text'\nimport {SpanWithTextOverflow} from '../../utils/spanWithTextOverflow'\nimport {labelBaseStyle} from './styles'\n\n/**\n * @public\n */\nexport interface LabelOwnProps {\n accent?: boolean\n align?: TextAlign | TextAlign[]\n muted?: boolean\n size?: number | number[]\n /**\n * Controls how overflowing text is treated.\n * Use `textOverflow=\"ellipsis\"` to render text as a single line which is concatenated with a `…` symbol.\n * @beta\n */\n textOverflow?: 'ellipsis'\n weight?: ThemeFontWeightKey\n}\n\n/**\n * @public\n */\nexport type LabelProps<E extends ElementType = 'div'> = Props<LabelOwnProps, E>\n\nconst StyledLabel = styled.div<{\n $accent?: boolean\n $align: TextAlign[]\n $muted: boolean\n $size: number[]\n $weight?: ThemeFontWeightKey\n}>(responsiveLabelFont, responsiveTextAlignStyle, labelBaseStyle)\n\nfunction LabelComponent(\n props: LabelOwnProps & {as?: ElementType} & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'size'>,\n) {\n const {\n accent,\n align,\n children: childrenProp,\n muted = false,\n ref,\n size = 2,\n textOverflow,\n weight,\n ...restProps\n } = props\n\n let children = childrenProp\n\n if (textOverflow === 'ellipsis') {\n children = <SpanWithTextOverflow>{children}</SpanWithTextOverflow>\n } else {\n children = <span>{children}</span>\n }\n\n return (\n <StyledLabel\n data-ui=\"Label\"\n {...restProps}\n $accent={accent}\n $align={_getArrayProp(align)}\n $muted={muted}\n $size={_getArrayProp(size)}\n $weight={weight}\n ref={ref}\n >\n {children}\n </StyledLabel>\n )\n}\n\n/**\n * Typographic labels.\n *\n * @public\n */\n// oxlint-disable-next-line no-unsafe-type-assertion\nexport const Label = LabelComponent as unknown as <E extends ElementType = 'div'>(\n props: LabelProps<E>,\n) => React.JSX.Element\n","import {CSSObject} from '../../../theme/system/css'\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {focusRingStyle} from '../../styles/focusRing'\nimport {_responsive, rem} from '../../styles/helpers'\nimport {ThemeProps} from '../../styles/types'\nimport {AvatarRootStyleProps, ResponsiveAvatarSizeStyleProps} from './types'\n\nexport const avatarStyle = {\n root: avatarRootStyle,\n arrow: avatarArrowStyle,\n bgStroke: avatarBgStrokeStyle,\n stroke: avatarStrokeStyle,\n initials: avatarInitialsStyle,\n image: avatarImageStyle,\n}\n\nfunction avatarArrowStyle(): CSSObject {\n return {\n 'position': 'absolute',\n 'boxSizing': 'border-box',\n 'zIndex': '0',\n 'opacity': '0',\n 'transition': 'all 0.2s linear',\n 'transform': 'rotate(-90deg) translate3d(0, 6px, 0)',\n 'left': 0,\n 'right': 0,\n 'top': 0,\n 'bottom': 0,\n\n '& > svg': {\n 'width': '11px',\n 'height': '7px',\n 'position': 'absolute',\n 'top': '-5px',\n 'left': '50%',\n 'transform': 'translateX(-6px)',\n\n '&:not([hidden])': {\n display: 'block',\n },\n },\n\n \"[data-arrow-position='inside'] > &\": {\n transform: 'rotate(-90deg) translate3d(0, 6px, 0)',\n opacity: '0',\n },\n\n \"[data-arrow-position='top'] > &\": {\n opacity: '1',\n transform: 'rotate(0deg)',\n },\n\n \"[data-arrow-position='bottom'] > &\": {\n opacity: '1',\n transform: 'rotate(-180deg)',\n },\n }\n}\n\nfunction avatarRootStyle(props: AvatarRootStyleProps & ThemeProps): CSSObject {\n const {$color} = props\n const {avatar} = getTheme_v2(props.theme)\n\n return {\n '--avatar-bg-color': `var(--card-avatar-${$color}-bg-color)`,\n '--avatar-fg-color': `var(--card-avatar-${$color}-fg-color)`,\n\n 'backgroundColor': 'var(--avatar-bg-color)',\n 'position': 'relative',\n 'boxSizing': 'border-box',\n 'userSelect': 'none',\n 'boxShadow': '0 0 0 1px var(--card-bg-color)',\n\n '&[data-status=\"inactive\"]': {\n opacity: '0.5',\n },\n\n '&>svg': {\n '&:not([hidden])': {\n display: 'block',\n },\n },\n\n /* &:is(button) */\n '&[data-as=\"button\"]': {\n 'WebkitFontSmoothing': 'inherit',\n 'appearance': 'none',\n 'margin': 0,\n 'padding': 0,\n 'border': 0,\n 'font': 'inherit',\n 'color': 'inherit',\n 'outline': 'none',\n\n '&:focus': {\n boxShadow: focusRingStyle({focusRing: avatar.focusRing}),\n },\n\n '&:focus:not(:focus-visible)': {\n boxShadow: 'none',\n },\n },\n }\n}\n\nexport function responsiveAvatarSizeStyle(\n props: ResponsiveAvatarSizeStyleProps & ThemeProps,\n): CSSObject[] {\n const {avatar, media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$size, (size) => {\n const avatarSize = avatar.sizes[size] || avatar.sizes[0]\n\n return {\n 'width': rem(avatarSize.size),\n 'height': rem(avatarSize.size),\n 'borderRadius': rem(avatarSize.size / 2),\n\n '&>svg': {\n width: rem(avatarSize.size),\n height: rem(avatarSize.size),\n borderRadius: rem(avatarSize.size / 2),\n },\n }\n })\n}\n\nfunction avatarImageStyle(): CSSObject {\n return {\n position: 'relative',\n }\n}\n\nfunction avatarInitialsStyle(): CSSObject {\n return {\n 'width': '100%',\n 'height': '100%',\n 'color': 'var(--avatar-fg-color)',\n 'alignItems': 'center',\n 'justifyContent': 'center',\n 'textTransform': 'uppercase',\n 'textAlign': 'center',\n 'borderRadius': '50%',\n\n '&:not([hidden])': {\n display: 'flex',\n },\n }\n}\n\nfunction avatarBgStrokeStyle(): CSSObject {\n return {\n strokeWidth: '4px',\n stroke: 'var(--card-bg-color)',\n }\n}\n\nfunction avatarStrokeStyle(): CSSObject {\n return {\n 'strokeWidth': '2px',\n 'stroke': 'var(--avatar-bg-color)',\n\n '[data-status=\"editing\"] &': {\n strokeDasharray: '2 4',\n strokeLinecap: 'round',\n },\n }\n}\n","import {useCallback, useEffect, useId, useState} from 'react'\nimport ReactIs from 'react-is'\nimport {styled} from 'styled-components'\n\nimport {ThemeColorAvatarColorKey} from '../../../theme/system/color/_system'\nimport {_getArrayProp} from '../../styles/helpers'\nimport {useTheme_v2} from '../../theme/useTheme'\nimport {AvatarPosition, AvatarSize, AvatarStatus} from '../../types/avatar'\nimport {ElementType, Props} from '../../types/component'\nimport {Label} from '../label/label'\nimport {avatarStyle, responsiveAvatarSizeStyle} from './styles'\n\n/**\n * @public\n */\nexport interface AvatarOwnProps {\n /** @beta */\n __unstable_hideInnerStroke?: boolean\n animateArrowFrom?: AvatarPosition\n arrowPosition?: AvatarPosition\n color?: ThemeColorAvatarColorKey\n initials?: string\n onImageLoadError?: (event: Error) => void\n size?: AvatarSize | AvatarSize[]\n src?: string\n /**\n * The status of the entity this Avatar represents.\n * @alpha\n */\n status?: AvatarStatus\n title?: string\n}\n\n/**\n * @public\n */\nexport type AvatarProps<E extends ElementType = 'div'> = Props<AvatarOwnProps, E>\n\nconst StyledAvatar = styled.div<{$color: ThemeColorAvatarColorKey; $size: AvatarSize[]}>(\n responsiveAvatarSizeStyle,\n avatarStyle.root,\n)\n\nconst Arrow = styled.div(avatarStyle.arrow)\n\nconst BgStroke = styled.ellipse(avatarStyle.bgStroke)\n\nconst Stroke = styled.ellipse(avatarStyle.stroke)\n\nconst Initials = styled.div(avatarStyle.initials)\n\nconst InitialsLabel = styled(Label)({\n color: 'inherit',\n})\n\nconst AvatarImage = styled.svg(avatarStyle.image)\n\nfunction AvatarComponent(\n props: AvatarOwnProps & {as?: ElementType} & Omit<React.HTMLProps<HTMLDivElement>, 'as'>,\n) {\n const {\n __unstable_hideInnerStroke,\n as: asProp,\n color = 'gray',\n src,\n title,\n initials,\n onImageLoadError,\n arrowPosition: arrowPositionProp,\n animateArrowFrom,\n ref,\n status = 'online',\n size: sizeProp = 1,\n ...restProps\n } = props\n const {avatar} = useTheme_v2()\n const as = ReactIs.isValidElementType(asProp) ? asProp : 'div'\n const size = _getArrayProp(sizeProp)\n\n // @todo: remove this\n const avatarSize = avatar.sizes[size[0]] || avatar.sizes[0]\n const _sizeRem = avatarSize.size\n const _radius = _sizeRem / 2\n\n const elementId = useId()\n const [arrowPosition, setArrowPosition] = useState<AvatarPosition | undefined>(\n animateArrowFrom || arrowPositionProp || 'inside',\n )\n\n const [imageFailed, setImageFailed] = useState<boolean>(false)\n\n const imageId = `avatar-image-${elementId}`\n\n useEffect(() => {\n if (arrowPosition === arrowPositionProp) return undefined\n\n // Start animation in the next frame\n const raf = requestAnimationFrame(() => setArrowPosition(arrowPositionProp))\n\n return () => cancelAnimationFrame(raf)\n }, [arrowPosition, arrowPositionProp])\n\n useEffect(() => {\n // oxlint-disable-next-line react/set-state-in-effect\n if (src) setImageFailed(false)\n }, [src])\n\n const handleImageError = useCallback(() => {\n setImageFailed(true)\n\n if (onImageLoadError) {\n onImageLoadError(new Error('Avatar: the image failed to load'))\n }\n }, [onImageLoadError])\n\n return (\n <StyledAvatar\n as={as}\n data-as={typeof as === 'string' ? as : undefined}\n data-ui=\"Avatar\"\n {...restProps}\n $color={color}\n $size={size}\n aria-label={title}\n data-arrow-position={arrowPosition}\n data-status={status}\n ref={ref}\n title={title}\n >\n <Arrow>\n <svg width=\"11\" height=\"7\" viewBox=\"0 0 11 7\" fill=\"none\">\n <path\n d=\"M6.67948 1.50115L11 7L0 7L4.32052 1.50115C4.92109 0.736796 6.07891 0.736795 6.67948 1.50115Z\"\n fill={color}\n />\n </svg>\n </Arrow>\n\n {!imageFailed && src && (\n <AvatarImage viewBox={`0 0 ${_sizeRem} ${_sizeRem}`} fill=\"none\">\n <defs>\n <pattern id={imageId} patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <image href={src} width=\"1\" height=\"1\" onError={handleImageError} />\n </pattern>\n </defs>\n\n <circle cx={_radius} cy={_radius} r={_radius} fill={`url(#${imageId})`} />\n\n {!__unstable_hideInnerStroke && (\n <BgStroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n vectorEffect=\"non-scaling-stroke\"\n />\n )}\n\n <Stroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n vectorEffect=\"non-scaling-stroke\"\n />\n </AvatarImage>\n )}\n\n {(imageFailed || !src) && initials && (\n <>\n <Initials>\n <InitialsLabel\n forwardedAs=\"span\"\n size={size.map((s) => {\n if (s === 1) return 1\n if (s === 2) return 3\n if (s === 3) return 5\n\n return 0\n })}\n weight=\"medium\"\n >\n {initials}\n </InitialsLabel>\n </Initials>\n </>\n )}\n </StyledAvatar>\n )\n}\n\n/**\n * Avatars are used to represent people and other agents (e.g. bots).\n *\n * @public\n */\n// oxlint-disable-next-line no-unsafe-type-assertion\nexport const Avatar = AvatarComponent as unknown as <E extends ElementType = 'div'>(\n props: AvatarProps<E>,\n) => React.JSX.Element\n","import {css, styled} from 'styled-components'\n\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {EMPTY_RECORD} from '../../constants'\nimport {_getArrayProp, _responsive, rem} from '../../styles/helpers'\nimport {ThemeProps} from '../../styles/types'\nimport {AvatarSize} from '../../types/avatar'\nimport {Label} from '../label/label'\n\nfunction _responsiveAvatarCounterSizeStyle(props: {$size: AvatarSize[]} & ThemeProps) {\n const {avatar, media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$size, (size) => {\n const avatarSize = avatar.sizes[size]\n\n if (!avatarSize) return EMPTY_RECORD\n\n return {\n borderRadius: rem(avatarSize.size / 2),\n minWidth: rem(avatarSize.size),\n height: rem(avatarSize.size),\n }\n })\n}\n\nfunction _avatarCounterBaseStyle(props: ThemeProps) {\n const {space} = getTheme_v2(props.theme)\n\n return css`\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n user-select: none;\n color: inherit;\n color: var(--card-fg-color);\n background: var(--card-bg-color);\n box-shadow:\n 0 0 0 1px var(--card-bg-color),\n inset 0 0 0 1px var(--card-hairline-hard-color);\n padding: 0 ${rem(space[2])};\n\n &:not([hidden]) {\n display: flex;\n }\n `\n}\n\nconst StyledAvatarCounter = styled.div<{$size: AvatarSize[]}>(\n _responsiveAvatarCounterSizeStyle,\n _avatarCounterBaseStyle,\n)\n\n/**\n * @public\n */\nexport interface AvatarCounterProps {\n count: number\n size?: AvatarSize | AvatarSize[]\n /** @deprecated No longer supported. */\n tone?: never\n}\n\n/**\n * @public\n */\nexport function AvatarCounter(props: AvatarCounterProps & {ref?: React.Ref<HTMLDivElement>}) {\n const {count, ref, size: sizeProp = 1} = props\n const size = _getArrayProp(sizeProp)\n\n return (\n <StyledAvatarCounter $size={size} data-ui=\"AvatarCounter\" ref={ref}>\n <Label\n as=\"span\"\n size={size.map((s) => {\n if (s === 1) return 1\n if (s === 2) return 3\n if (s === 3) return 5\n\n return 0\n })}\n weight=\"medium\"\n >\n {count}\n </Label>\n </StyledAvatarCounter>\n )\n}\n","import {Children, cloneElement, isValidElement} from 'react'\nimport {css, styled} from 'styled-components'\n\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {EMPTY_RECORD} from '../../constants'\nimport {_getArrayProp, _responsive, rem} from '../../styles/helpers'\nimport {ThemeProps} from '../../styles/types'\nimport {AvatarSize} from '../../types/avatar'\nimport {AvatarCounter} from './avatarCounter'\n\nconst BASE_STYLES = css`\n white-space: nowrap;\n\n & > div {\n vertical-align: top;\n\n &:not([hidden]) {\n display: inline-block;\n }\n }\n`\n\nfunction avatarStackStyle() {\n return BASE_STYLES\n}\n\nfunction responsiveAvatarStackSizeStyle(props: {$size: AvatarSize[]} & ThemeProps) {\n const {avatar, media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$size, (size) => {\n const avatarSize = avatar.sizes[size]\n\n if (!avatarSize) return EMPTY_RECORD\n\n return {\n '& > div + div': {\n marginLeft: rem(avatarSize.distance),\n },\n }\n })\n}\n\nconst StyledAvatarStack = styled.div<{$size: AvatarSize[]}>(\n responsiveAvatarStackSizeStyle,\n avatarStackStyle,\n)\n\n/**\n * @public\n */\nexport interface AvatarStackProps {\n children: React.ReactNode\n maxLength?: number\n size?: AvatarSize | AvatarSize[]\n /** @deprecated No longer supported. */\n tone?: never\n}\n\n/**\n * @public\n */\nexport function AvatarStack(props: AvatarStackProps & Omit<React.HTMLProps<HTMLDivElement>, 'as'>) {\n const {\n children: childrenProp,\n maxLength: maxLengthProp = 4,\n ref,\n size: sizeProp = 1,\n ...restProps\n } = props\n const children: React.JSX.Element[] = Children.toArray(childrenProp).filter(isValidElement)\n const maxLength = Math.max(maxLengthProp, 0)\n const size = _getArrayProp(sizeProp)\n\n const len = children.length\n const visibleCount = maxLength - 1\n const extraCount = len - visibleCount\n const visibleChildren = extraCount > 1 ? children.slice(extraCount, len) : children\n\n return (\n <StyledAvatarStack data-ui=\"AvatarStack\" {...restProps} ref={ref} $size={size}>\n {len === 0 && (\n <div>\n <AvatarCounter count={len} size={size} />\n </div>\n )}\n\n {len !== 0 && extraCount > 1 && (\n <div>\n <AvatarCounter count={extraCount} size={size} />\n </div>\n )}\n\n {visibleChildren.map((child, childIndex) => (\n // oxlint-disable-next-line no-array-index-key\n <div key={String(childIndex)}>{cloneElement(child, {size})}</div>\n ))}\n </StyledAvatarStack>\n )\n}\n","import {CSSObject} from '../../../theme/system/css'\nimport {BadgeStyleProps} from './types'\n\nexport function badgeStyle(props: BadgeStyleProps): CSSObject {\n const {$tone} = props\n\n return {\n '--card-bg-color': `var(--card-badge-${$tone}-bg-color)`,\n '--card-fg-color': `var(--card-badge-${$tone}-fg-color)`,\n\n 'backgroundColor': 'var(--card-bg-color)',\n 'cursor': 'default',\n\n '&:not([hidden])': {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n }\n}\n","import {styled} from 'styled-components'\n\nimport {_getArrayProp} from '../../styles/helpers'\nimport {responsiveRadiusStyle} from '../../styles/radius/radiusStyle'\nimport {ResponsiveRadiusStyleProps} from '../../styles/radius/types'\nimport {BadgeTone} from '../../types/badge'\nimport {ElementType, Props} from '../../types/component'\nimport {Box, BoxOwnProps} from '../box/box'\nimport {Text} from '../text/text'\nimport {ResponsiveRadiusProps} from '../types'\nimport {badgeStyle} from './styles'\nimport {BadgeStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface BadgeOwnProps extends BoxOwnProps, ResponsiveRadiusProps {\n fontSize?: number | number[]\n /** @deprecated No longer used. */\n mode?: never\n tone?: BadgeTone\n}\n\n/**\n * @public\n */\nexport type BadgeProps<E extends ElementType = 'div'> = Props<BadgeOwnProps, E>\n\nconst StyledBadge = styled(Box)<BadgeStyleProps & ResponsiveRadiusStyleProps>(\n responsiveRadiusStyle,\n badgeStyle,\n)\n\nconst BadgeComponent = function Badge(\n props: BadgeOwnProps & {as?: ElementType} & React.HTMLProps<HTMLDivElement>,\n) {\n const {\n children,\n fontSize = 1,\n padding = 1,\n radius = 'full',\n ref,\n tone = 'default',\n ...restProps\n } = props\n\n return (\n <StyledBadge\n data-ui=\"Badge\"\n {...restProps}\n $tone={tone}\n $radius={_getArrayProp(radius)}\n padding={_getArrayProp(padding)}\n ref={ref}\n >\n <Text size={fontSize}>{children}</Text>\n </StyledBadge>\n )\n}\n\n/**\n * Badges are used to tag resources.\n *\n * @public\n */\n// oxlint-disable-next-line no-unsafe-type-assertion\nexport const Badge = BadgeComponent as unknown as <E extends ElementType = 'div'>(\n props: BadgeProps<E>,\n) => React.JSX.Element\n","import {css} from 'styled-components'\n\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/focusRing'\nimport {rem} from '../../styles/helpers'\nimport {ThemeProps} from '../../styles/types'\n\nexport function inputElementStyles(props: ThemeProps): ReturnType<typeof css> {\n const {color, input, radius} = getTheme_v2(props.theme)\n const {focusRing} = input.checkbox\n\n return css`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n outline: none;\n opacity: 0;\n z-index: 1;\n padding: 0;\n margin: 0;\n\n & + span {\n position: relative;\n display: block;\n height: ${rem(input.checkbox.size)};\n width: ${rem(input.checkbox.size)};\n box-sizing: border-box;\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.enabled.border,\n width: input.border.width,\n })};\n border-radius: ${rem(radius[2])};\n line-height: 1;\n background-color: ${color.input.default.enabled.bg};\n\n & > svg {\n display: block;\n position: absolute;\n opacity: 0;\n height: 100%;\n width: 100%;\n\n & > path {\n vector-effect: non-scaling-stroke;\n stroke-width: 1.5px !important;\n }\n }\n }\n\n &:checked + span {\n background: ${color.input.default.enabled.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.enabled.fg,\n width: input.border.width,\n })};\n color: ${color.input.default.enabled.bg};\n }\n\n /* focus */\n &:not(:disabled):focus:focus-visible + span {\n box-shadow: ${focusRingStyle({focusRing})};\n }\n\n /* focus when checked - uses a different offset */\n &:not(:disabled):focus:focus-visible&:checked + span {\n box-shadow: ${focusRingStyle({focusRing: {width: 1, offset: 1}})};\n }\n\n &[data-error] + span {\n background-color: ${color.input.invalid.enabled.border};\n box-shadow: ${focusRingBorderStyle({\n width: input.border.width,\n color: color.input.invalid.enabled.muted.bg,\n })};\n color: ${color.input.default.disabled.fg};\n }\n &[data-error]&:checked + span {\n background-color: ${color.input.invalid.enabled.muted.bg};\n color: ${color.input.default.enabled.bg};\n }\n &[data-error]&:checked&:not(:disabled):focus:focus-visible + span {\n box-shadow: ${focusRingStyle({\n border: {width: input.border.width, color: color.input.invalid.readOnly.muted.bg},\n focusRing: {width: 1, offset: 1},\n })};\n }\n\n &:disabled + span {\n background-color: ${color.input.default.disabled.bg};\n box-shadow: ${focusRingBorderStyle({\n width: input.border.width,\n color: color.input.default.disabled.border,\n })};\n color: ${color.input.default.disabled.fg};\n }\n &:disabled&:checked + span {\n background-color: ${color.input.default.disabled.muted.bg};\n }\n\n &[data-read-only] + span {\n background-color: ${color.input.default.readOnly.bg};\n box-shadow: ${focusRingBorderStyle({\n width: input.border.width,\n color: color.input.default.readOnly.border,\n })};\n color: ${color.input.default.readOnly.fg};\n }\n\n &[data-read-only]&:checked + span {\n background-color: ${color.input.default.readOnly.muted.bg};\n }\n\n &:checked + span > svg:first-child {\n opacity: 1;\n }\n &:indeterminate + span > svg:last-child {\n opacity: 1;\n }\n `\n}\n","import {style} from '@vanilla-extract/css'\n\nexport const checkbox = style({\n position: 'relative',\n display: 'inline-block',\n})\n","import {CheckmarkIcon} from '@sanity/icons/Checkmark'\nimport {RemoveIcon} from '@sanity/icons/Remove'\nimport {clsx} from 'clsx/lite'\nimport {useEffect, useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {useCustomValidity} from '../../hooks/useCustomValidity'\nimport {inputElementStyles} from './styles'\n\nimport {checkbox} from './checkbox.css'\n\n/**\n * @public\n */\nexport interface CheckboxProps {\n indeterminate?: boolean\n customValidity?: string\n}\n\nconst Input = styled.input(inputElementStyles)\n\n/**\n * Checkboxes allow the user to select one or more items from a set.\n *\n * @public\n */\nexport function Checkbox(\n props: Omit<React.HTMLProps<HTMLInputElement>, 'as' | 'type'> & CheckboxProps,\n) {\n const {\n checked,\n className,\n disabled,\n indeterminate,\n customValidity,\n readOnly,\n ref: forwardedRef,\n style,\n ...restProps\n } = props\n const ref = useRef<HTMLInputElement | null>(null)\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useEffect(() => {\n if (ref.current) {\n // Set the indeterminate state\n ref.current.indeterminate = indeterminate || false\n }\n }, [indeterminate])\n\n useCustomValidity(ref, customValidity)\n\n return (\n <div className={clsx(checkbox, className)} data-ui=\"Checkbox\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-error={customValidity ? '' : undefined}\n {...restProps}\n checked={checked}\n disabled={disabled || readOnly}\n type=\"checkbox\"\n readOnly={readOnly}\n ref={ref}\n />\n <span>\n <CheckmarkIcon />\n <RemoveIcon />\n </span>\n </div>\n )\n}\n","import {CSSObject} from '../../../theme/system/css'\nimport {ThemeProps} from '../types'\nimport {responsiveFont} from './responsiveFont'\nimport {ResponsiveFontStyleProps} from './types'\n\n/**\n * Get responsive CSS for the `heading` font style.\n * @internal\n */\nexport function responsiveHeadingFont(props: ResponsiveFontStyleProps & ThemeProps): CSSObject[] {\n return responsiveFont('heading', props)\n}\n","import {css} from 'styled-components'\n\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {ThemeProps} from '../../styles/types'\nimport {HeadingStyleProps} from './types'\n\nexport function headingBaseStyle(props: HeadingStyleProps & ThemeProps): ReturnType<typeof css> {\n const {$accent, $muted} = props\n const {font} = getTheme_v2(props.theme)\n\n return css`\n ${\n $accent &&\n css`\n color: var(--card-accent-fg-color);\n `\n }\n\n ${\n $muted &&\n css`\n color: var(--card-muted-fg-color);\n `\n }\n\n & code {\n font-family: ${font.code.family};\n border-radius: 1px;\n }\n\n & a {\n text-decoration: none;\n border-radius: 1px;\n color: var(--card-link-color);\n outline: none;\n\n @media (hover: hover) {\n &:hover {\n text-decoration: underline;\n }\n }\n\n &:focus {\n box-shadow:\n 0 0 0 1px var(--card-bg-color),\n 0 0 0 3px var(--card-focus-ring-color);\n }\n\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n }\n\n & strong {\n font-weight: ${font.heading.weights.bold};\n }\n\n & svg {\n /* Certain popular CSS libraries changes the defaults for SVG display */\n /* Make sure SVGs are rendered as inline elements */\n display: inline;\n /* ...and aren't squeezed by resets that set max-width: 100% */\n max-width: unset;\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\n }\n `\n}\n","import {styled} from 'styled-components'\n\nimport {ThemeFontWeightKey} from '../../../theme/system/font'\nimport {responsiveHeadingFont} from '../../styles/font/headingFontStyle'\nimport {responsiveTextAlignStyle} from '../../styles/font/textAlignStyle'\nimport {ResponsiveFontStyleProps, ResponsiveTextAlignStyleProps} from '../../styles/font/types'\nimport {_getArrayProp} from '../../styles/helpers'\nimport {ElementType, Props} from '../../types/component'\nimport {TextAlign} from '../../types/text'\nimport {SpanWithTextOverflow} from '../../utils/spanWithTextOverflow'\nimport {headingBaseStyle} from './styles'\nimport {HeadingStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface HeadingOwnProps {\n accent?: boolean\n align?: TextAlign | TextAlign[]\n muted?: boolean\n size?: number | number[]\n /**\n * Controls how overflowing text is treated.\n * Use `textOverflow=\"ellipsis\"` to render text as a single line which is concatenated with a `…` symbol.\n * @beta\n */\n textOverflow?: 'ellipsis'\n weight?: ThemeFontWeightKey\n}\n\n/**\n * @public\n */\nexport type HeadingProps<E extends ElementType = 'div'> = Props<HeadingOwnProps, E>\n\nconst StyledHeading = styled.div<\n HeadingStyleProps & ResponsiveTextAlignStyleProps & ResponsiveFontStyleProps\n>(headingBaseStyle, responsiveTextAlignStyle, responsiveHeadingFont)\n\nfunction HeadingComponent(\n props: HeadingOwnProps & {as?: ElementType} & Omit<\n React.HTMLProps<HTMLDivElement>,\n 'as' | 'size'\n >,\n) {\n const {\n accent = false,\n align,\n children: childrenProp,\n muted = false,\n ref,\n size = 2,\n textOverflow,\n weight,\n ...restProps\n } = props\n\n let children = childrenProp\n\n if (textOverflow === 'ellipsis') {\n children = <SpanWithTextOverflow>{children}</SpanWithTextOverflow>\n }\n\n return (\n <StyledHeading\n data-ui=\"Heading\"\n {...restProps}\n $accent={accent}\n $align={_getArrayProp(align)}\n $muted={muted}\n $size={_getArrayProp(size)}\n $weight={weight}\n ref={ref}\n >\n <span>{children}</span>\n </StyledHeading>\n )\n}\n\n/**\n * Typographic headings.\n *\n * @public\n */\n// oxlint-disable-next-line no-unsafe-type-assertion\nexport const Heading = HeadingComponent as unknown as <E extends ElementType = 'div'>(\n props: HeadingProps<E>,\n) => React.JSX.Element\n","import {css} from 'styled-components'\n\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/focusRing'\nimport {rem} from '../../styles/helpers'\nimport {ThemeProps} from '../../styles/types'\n\nexport function inputElementStyle(props: ThemeProps): ReturnType<typeof css> {\n const {color, input} = getTheme_v2(props.theme)\n const dist = (input.radio.size - input.radio.markSize) / 2\n\n return css`\n appearance: none;\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0;\n height: 100%;\n width: 100%;\n outline: none;\n z-index: 1;\n padding: 0;\n margin: 0;\n border-radius: ${rem(input.radio.size / 2)};\n border: none;\n\n /* enabled */\n & + span {\n display: block;\n position: relative;\n height: ${rem(input.radio.size)};\n width: ${rem(input.radio.size)};\n border-radius: ${rem(input.radio.size / 2)};\n background: ${color.input.default.enabled.bg};\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.enabled.border,\n width: input.border.width,\n })};\n\n &::after {\n content: '';\n position: absolute;\n top: ${rem(dist)};\n left: ${rem(dist)};\n height: ${rem(input.radio.markSize)};\n width: ${rem(input.radio.markSize)};\n border-radius: ${rem(input.radio.markSize / 2)};\n background: ${color.input.default.enabled.fg};\n opacity: 0;\n }\n }\n\n /* focused */\n &:not(:disabled):focus + span {\n box-shadow: ${focusRingStyle({\n border: {width: input.border.width, color: color.input.default.enabled.border},\n focusRing: input.radio.focusRing,\n })};\n }\n\n &:not(:disabled):focus:not(:focus-visible) + span {\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.enabled.border,\n width: input.border.width,\n })};\n }\n\n &:checked + span::after {\n opacity: 1;\n }\n\n /* customValidity */\n &[data-error] + span {\n background-color: ${color.input.invalid.enabled.border};\n box-shadow: ${focusRingBorderStyle({\n width: input.border.width,\n color: color.input.invalid.enabled.muted.bg,\n })};\n &::after {\n background: ${color.input.invalid.enabled.muted.bg};\n }\n }\n\n /* read only */\n &[data-read-only] + span {\n box-shadow: 0 0 0 1px ${color.input.default.readOnly.border};\n background: ${color.input.default.readOnly.bg};\n\n &::after {\n background: ${color.input.default.readOnly.border};\n }\n }\n\n /* disabled */\n &:not([data-read-only]):disabled + span {\n box-shadow: 0 0 0 1px ${color.input.default.disabled.border};\n background: ${color.input.default.disabled.bg};\n\n &::after {\n background: ${color.input.default.disabled.border};\n }\n }\n `\n}\n","import {style} from '@vanilla-extract/css'\n\nexport const radio = style({\n position: 'relative',\n selectors: {\n '&:not([hidden])': {\n display: 'inline-block',\n },\n },\n})\n","import {clsx} from 'clsx/lite'\nimport {useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {useCustomValidity} from '../../hooks/useCustomValidity'\nimport {inputElementStyle} from './styles'\n\nimport {radio} from './radio.css'\n\n/**\n * @public\n */\nexport interface RadioProps {\n customValidity?: string\n}\n\nconst Input = styled.input(inputElementStyle)\n\n/**\n * The `Radio` component allows the user to select one option from a set.\n *\n * @public\n */\nexport function Radio(props: Omit<React.HTMLProps<HTMLInputElement>, 'as' | 'type'> & RadioProps) {\n const {\n className,\n disabled,\n style,\n customValidity,\n readOnly,\n ref: forwardedRef,\n ...restProps\n } = props\n const ref = useRef<HTMLInputElement | null>(null)\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useCustomValidity(ref, customValidity)\n\n return (\n <div className={clsx(radio, className)} data-ui=\"Radio\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-error={customValidity ? '' : undefined}\n {...restProps}\n disabled={disabled || readOnly}\n readOnly={readOnly}\n ref={ref}\n type=\"radio\"\n />\n <span />\n </div>\n )\n}\n","import {css} from 'styled-components'\n\nimport {CSSObject} from '../../../theme/system/css'\nimport {ThemeFontSize} from '../../../theme/system/font'\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/focusRing'\nimport {_responsive, rem} from '../../styles/helpers'\nimport {responsiveInputPaddingIconRightStyle} from '../../styles/input/responsiveInputPaddingStyle'\nimport {responsiveRadiusStyle} from '../../styles/radius/radiusStyle'\nimport {ResponsiveRadiusStyleProps} from '../../styles/radius/types'\nimport {ThemeProps} from '../../styles/types'\n\nfunction inputBaseStyle(props: ThemeProps): ReturnType<typeof css> {\n const {font} = getTheme_v2(props.theme)\n\n return css`\n -webkit-font-smoothing: antialiased;\n appearance: none;\n border: 0;\n font-family: ${font.text.family};\n color: inherit;\n width: 100%;\n outline: none;\n margin: 0;\n\n &:disabled {\n opacity: 1;\n }\n `\n}\n\nfunction inputColorStyle(props: ThemeProps) {\n const {color, input} = getTheme_v2(props.theme)\n\n return css`\n /* enabled */\n background-color: ${color.input.default.enabled.bg};\n color: ${color.input.default.enabled.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.enabled.border,\n width: input.border.width,\n })};\n\n /* hovered */\n @media (hover: hover) {\n &:not(:disabled):hover {\n background-color: ${color.input.default.hovered.bg};\n color: ${color.input.default.hovered.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.hovered.border,\n width: input.border.width,\n })};\n }\n }\n\n /* focused */\n &:not(:disabled):focus {\n box-shadow: ${focusRingStyle({\n border: {width: input.border.width, color: color.input.default.enabled.border},\n focusRing: input.select.focusRing,\n })};\n }\n\n /* read-only */\n &[data-read-only] {\n background-color: ${color.input.default.readOnly.bg};\n color: ${color.input.default.readOnly.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.readOnly.border,\n width: input.border.width,\n })};\n }\n\n /* disabled */\n &:not([data-read-only]):disabled {\n background-color: ${color.input.default.disabled.bg};\n color: ${color.input.default.disabled.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.input.default.disabled.border,\n width: input.border.width,\n })};\n }\n `\n}\n\nfunction textSize(size: ThemeFontSize) {\n return {fontSize: rem(size.fontSize), lineHeight: `${rem(size.lineHeight)}`}\n}\n\nfunction inputTextSizeStyle(props: {$fontSize: number[]} & ThemeProps) {\n const {$fontSize} = props\n const {font, media} = getTheme_v2(props.theme)\n\n return _responsive(media, $fontSize, (sizeIndex) =>\n textSize(font.text.sizes[sizeIndex] || font.text.sizes[2]),\n )\n}\n\nfunction inputStyle(): Array<\n | ((\n props: ResponsiveRadiusStyleProps & {\n $fontSize: number[]\n $padding: number[]\n $space: number[]\n } & ThemeProps,\n ) => CSSObject[])\n | ((props: ThemeProps) => ReturnType<typeof css>)\n> {\n return [\n responsiveRadiusStyle,\n inputBaseStyle,\n inputColorStyle,\n inputTextSizeStyle,\n responsiveInputPaddingIconRightStyle,\n ]\n}\n\nfunction iconBoxStyle(props: ThemeProps): ReturnType<typeof css> {\n const {color} = getTheme_v2(props.theme)\n\n return css`\n pointer-events: none;\n position: absolute;\n top: 0;\n right: 0;\n\n /* enabled */\n --card-fg-color: ${color.input.default.enabled.fg};\n\n /* hover */\n @media (hover: hover) {\n select:not(disabled):not(:read-only):hover + && {\n --card-fg-color: ${color.input.default.hovered.fg};\n }\n }\n\n /* disabled */\n select:disabled + && {\n --card-fg-color: ${color.input.default.disabled.fg};\n }\n\n /* read-only */\n select[data-read-only] + && {\n --card-fg-color: ${color.input.default.readOnly.fg};\n }\n `\n}\n\nexport const selectStyle = {\n input: inputStyle,\n iconBox: iconBoxStyle,\n}\n","import {style} from '@vanilla-extract/css'\n\nexport const select = style({\n position: 'relative',\n width: ['-moz-available', '-webkit-fill-available', 'stretch'],\n selectors: {\n '&:not([hidden])': {\n display: 'inline-block',\n },\n },\n})\n","import {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {useCustomValidity} from '../../hooks/useCustomValidity'\nimport {_getArrayProp} from '../../styles/helpers'\nimport {Radius} from '../../types/radius'\nimport {Box} from '../box/box'\nimport {Text} from '../text/text'\nimport {selectStyle} from './styles'\n\nimport {select} from './select.css'\n\n/**\n * @public\n */\nexport interface SelectProps {\n fontSize?: number | number[]\n gap?: number | number[]\n padding?: number | number[]\n radius?: Radius | Radius[]\n /**\n * @deprecated Use `gap` instead.\n */\n space?: never\n customValidity?: string\n}\n\nconst Input = styled.select<{\n $fontSize: number[]\n $padding: number[]\n $radius: Radius[]\n $space: number[]\n}>(selectStyle.input)\n\nconst IconBox = styled(Box)(selectStyle.iconBox)\n\n/**\n * The `Select` component provides control of options.\n *\n * @public\n */\nexport function Select(props: SelectProps & Omit<React.HTMLProps<HTMLSelectElement>, 'as'>) {\n const {\n children,\n customValidity,\n disabled,\n fontSize = 2,\n gap = 3,\n padding = 3,\n radius = 2,\n readOnly,\n ref: forwardedRef,\n ...restProps\n } = props\n\n const ref = useRef<HTMLSelectElement | null>(null)\n\n useImperativeHandle<HTMLSelectElement | null, HTMLSelectElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useCustomValidity(ref, customValidity)\n\n return (\n <div className={select} data-ui=\"Select\">\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-ui=\"Select\"\n {...restProps}\n $fontSize={_getArrayProp(fontSize)}\n $padding={_getArrayProp(padding)}\n $radius={_getArrayProp(radius)}\n $space={_getArrayProp(gap)}\n disabled={disabled || readOnly}\n ref={ref}\n >\n {children}\n </Input>\n\n <IconBox padding={padding}>\n <Text size={fontSize}>\n <ChevronDownIcon />\n </Text>\n </IconBox>\n </div>\n )\n}\n","import {css} from 'styled-components'\n\nimport {getTheme_v2} from '../../../theme/versioning/getTheme_v2'\nimport {focusRingStyle} from '../../styles/focusRing'\nimport {rem} from '../../styles/helpers'\nimport {ThemeProps} from '../../styles/types'\n\n/* Representation */\nexport function switchRepresentationStyles(props: ThemeProps): ReturnType<typeof css> {\n const {color, input} = getTheme_v2(props.theme)\n\n return css`\n --switch-bg-color: ${color.input.default.enabled.border};\n --switch-fg-color: ${color.input.default.enabled.bg};\n --switch-box-shadow: none;\n\n &:not([hidden]) {\n display: block;\n }\n position: relative;\n width: ${rem(input.switch.width)};\n height: ${rem(input.switch.height)};\n border-radius: ${rem(input.switch.height / 2)};\n\n /* Make sure it’s not possible to interact with the wrapper element */\n pointer-events: none;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1;\n box-shadow: var(--switch-box-shadow);\n border-radius: inherit;\n }\n\n /* Focus styles */\n input:focus + && {\n --switch-box-shadow: ${focusRingStyle({focusRing: input.switch.focusRing})};\n }\n\n input:focus:not(:focus-visible) + && {\n --switch-box-shadow: none;\n }\n\n input:checked + && {\n --switch-bg-color: ${color.input.default.enabled.fg};\n --switch-fg-color: ${color.input.default.enabled.bg};\n }\n\n @media (hover: hover) {\n input:not(:disabled):hover + && {\n --switch-bg-color: ${color.input.default.hovered.border};\n --switch-fg-color: ${color.input.default.hovered.bg};\n }\n\n input:not(:disabled):checked:hover + && {\n --switch-bg-color: ${color.input.default.enabled.fg};\n --switch-fg-color: ${color.input.default.enabled.bg};\n }\n }\n\n input:not([data-read-only]):disabled + && {\n --switch-bg-color: ${color.input.default.disabled.border};\n --switch-fg-color: ${color.input.default.disabled.bg};\n }\n\n input[data-read-only]:disabled + && {\n --switch-bg-color: ${color.input.default.readOnly.border};\n --switch-fg-color: ${color.input.default.readOnly.bg};\n }\n\n input:checked[data-read-only]:disabled + && {\n --switch-bg-color: ${color.input.default.readOnly.fg};\n --switch-fg-color: ${color.input.default.readOnly.bg};\n }\n `\n}\n\n/* Track */\nexport function switchTrackStyles(props: ThemeProps): ReturnType<typeof css> {\n const {input} = getTheme_v2(props.theme)\n\n return css`\n &:not([hidden]) {\n display: block;\n }\n background-color: var(--switch-bg-color);\n position: absolute;\n left: 0;\n top: 0;\n width: ${rem(input.switch.width)};\n height: ${rem(input.switch.height)};\n border-radius: ${rem(input.switch.height / 2)};\n `\n}\n\n/* Thumb */\nexport function switchThumbStyles(\n props: {$checked?: boolean; $indeterminate?: boolean} & ThemeProps,\n): ReturnType<typeof css> {\n const {$indeterminate} = props\n const {input} = getTheme_v2(props.theme)\n const trackWidth = input.switch.width\n const trackHeight = input.switch.height\n const trackPadding = input.switch.padding\n const size = trackHeight - input.switch.padding * 2\n const checkedOffset = trackWidth - trackPadding * 2 - size\n const indeterminateOffset = trackWidth / 2 - size / 2 - trackPadding\n const checked = $indeterminate !== true && props.$checked === true\n\n return css`\n &:not([hidden]) {\n display: block;\n }\n position: absolute;\n left: ${rem(trackPadding)};\n top: ${rem(trackPadding)};\n height: ${rem(size)};\n width: ${rem(size)};\n border-radius: ${rem(size / 2)};\n transition-property: transform;\n transition-duration: ${input.switch.transitionDurationMs}ms;\n transition-timing-function: ${input.switch.transitionTimingFunction};\n background: var(--switch-fg-color);\n transform: translate3d(0, 0, 0);\n box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.05);\n\n ${\n checked &&\n css`\n transform: translate3d(${checkedOffset}px, 0, 0);\n `\n }\n\n ${\n $indeterminate &&\n css`\n transform: translate3d(${indeterminateOffset}px, 0, 0);\n `\n }\n `\n}\n","import {style} from '@vanilla-extract/css'\n\nexport const switchRoot = style({\n position: 'relative',\n selectors: {\n '&:not([hidden])': {\n display: 'inline-block',\n },\n },\n})\n\n// Visually hides the input element while keeping it interactive, placed above\n// the representation element\nexport const switchInput = style({\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n opacity: 0,\n height: '100%',\n width: '100%',\n outline: 'none',\n padding: 0,\n margin: 0,\n zIndex: 1,\n})\n","import {clsx} from 'clsx/lite'\nimport {useEffect, useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {switchRepresentationStyles, switchThumbStyles, switchTrackStyles} from './styles'\n\nimport {switchInput, switchRoot} from './switch.css'\n\n/**\n * @public\n */\nexport interface SwitchProps {\n indeterminate?: boolean\n}\n\nconst Representation = styled.span(switchRepresentationStyles)\nconst Track = styled.span(switchTrackStyles)\nconst Thumb = styled.span<{$checked?: boolean; $indeterminate?: boolean}>(switchThumbStyles)\n\n/**\n * The `Switch` component allows the user to toggle a setting on and off.\n *\n * Extends all properties of an `<input type=\"checkbox\" />` element, except type.\n *\n * @public\n */\nexport function Switch(\n props: Omit<React.HTMLProps<HTMLInputElement>, 'as' | 'type'> & SwitchProps,\n) {\n const {\n checked,\n className,\n disabled,\n indeterminate,\n readOnly,\n ref: forwardedRef,\n style,\n ...restProps\n } = props\n const ref = useRef<HTMLInputElement | null>(null)\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useEffect(() => {\n if (ref.current) {\n // Set the indeterminate state\n ref.current.indeterminate = indeterminate || false\n }\n }, [indeterminate])\n\n return (\n <span className={clsx(switchRoot, className)} data-ui=\"Switch\" style={style}>\n <input\n className={switchInput}\n data-read-only={!disabled && readOnly ? '' : undefined}\n {...restProps}\n checked={indeterminate !== true && checked}\n disabled={disabled || readOnly}\n type=\"checkbox\"\n ref={ref}\n />\n <Representation aria-hidden data-name=\"representation\">\n <Track />\n <Thumb $checked={checked} $indeterminate={indeterminate} />\n </Representation>\n </span>\n )\n}\n","import {useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {ThemeFontWeightKey} from '../../../theme/system/font'\nimport {useCustomValidity} from '../../hooks/useCustomValidity'\nimport {_getArrayProp} from '../../styles/helpers'\nimport {\n responsiveInputPaddingStyle,\n TextInputResponsivePaddingStyleProps,\n} from '../../styles/input/responsiveInputPaddingStyle'\nimport {\n textInputBaseStyle,\n textInputFontSizeStyle,\n TextInputInputStyleProps,\n textInputRepresentationStyle,\n TextInputRepresentationStyleProps,\n} from '../../styles/input/textInputStyle'\nimport {responsiveRadiusStyle} from '../../styles/radius/radiusStyle'\nimport {ResponsiveRadiusStyleProps} from '../../styles/radius/types'\nimport {useRootTheme} from '../../theme/useRootTheme'\nimport {ResponsiveRadiusProps} from '../types'\n\nimport {inputRoot, textInputRoot} from '../../styles/input/textInput.css'\n\n/**\n * @public\n */\nexport interface TextAreaProps extends ResponsiveRadiusProps {\n /**\n * @beta\n */\n __unstable_disableFocusRing?: boolean\n border?: boolean\n customValidity?: string\n fontSize?: number | number[]\n padding?: number | number[]\n weight?: ThemeFontWeightKey\n}\n\nconst Input = styled.textarea<TextInputResponsivePaddingStyleProps & TextInputInputStyleProps>(\n responsiveInputPaddingStyle,\n textInputBaseStyle,\n textInputFontSizeStyle,\n)\n\nconst Presentation = styled.div<ResponsiveRadiusStyleProps & TextInputRepresentationStyleProps>(\n responsiveRadiusStyle,\n textInputRepresentationStyle,\n)\n\n/**\n * A multiline text input.\n *\n\n * @public\n */\nexport function TextArea(props: TextAreaProps & Omit<React.HTMLProps<HTMLTextAreaElement>, 'as'>) {\n const {\n border = true,\n customValidity,\n disabled = false,\n fontSize = 2,\n padding = 3,\n radius = 2,\n ref: forwardedRef,\n weight,\n __unstable_disableFocusRing,\n ...restProps\n } = props\n\n const ref = useRef<HTMLTextAreaElement | null>(null)\n\n const rootTheme = useRootTheme()\n\n useImperativeHandle<HTMLTextAreaElement | null, HTMLTextAreaElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useCustomValidity(ref, customValidity)\n\n return (\n <span className={textInputRoot} data-ui=\"TextArea\">\n <span className={inputRoot}>\n <Input\n data-as=\"textarea\"\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n {...restProps}\n $fontSize={_getArrayProp(fontSize)}\n $padding={_getArrayProp(padding)}\n $scheme={rootTheme.scheme}\n $space={_getArrayProp(0)}\n $tone={rootTheme.tone}\n $weight={weight}\n disabled={disabled}\n ref={ref}\n />\n <Presentation\n $radius={_getArrayProp(radius)}\n $unstableDisableFocusRing={__unstable_disableFocusRing}\n $scheme={rootTheme.scheme}\n $tone={rootTheme.tone}\n data-border={border ? '' : undefined}\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n />\n </span>\n </span>\n )\n}\n","import {useMemo} from 'react'\n\nimport {BoundaryElementContext} from './boundaryElementContext'\nimport {BoundaryElementContextValue} from './types'\n\n/**\n * @public\n */\nexport interface BoundaryElementProviderProps {\n children: React.ReactNode\n element: HTMLElement | null\n}\n\n/**\n * @public\n */\nexport function BoundaryElementProvider(props: BoundaryElementProviderProps): React.JSX.Element {\n const {children, element} = props\n const value: BoundaryElementContextValue = useMemo(() => ({version: 0.0, element}), [element])\n\n return <BoundaryElementContext.Provider value={value}>{children}</BoundaryElementContext.Provider>\n}\n","/**\n * @internal\n * @deprecated ConditionalWrapper was removed in @sanity/ui v4. Inline the conditional wrapping logic instead.\n */\nexport function ConditionalWrapper(_props?: never): never {\n throw new Error(\n '`ConditionalWrapper` was removed in @sanity/ui v4. Inline the conditional wrapping logic instead.',\n )\n}\n","export function findMaxBreakpoints(media: number[], width: number): number[] {\n const ret: number[] = []\n\n for (let i = 0; i < media.length; i += 1) {\n const bp = media[i]\n\n if (bp > width) {\n ret.push(i)\n }\n }\n\n return ret\n}\n\nexport function findMinBreakpoints(media: number[], width: number): number[] {\n const ret: number[] = []\n\n for (let i = 0; i < media.length; i += 1) {\n const bp = media[i]\n\n if (bp <= width) {\n ret.push(i)\n }\n }\n\n return ret\n}\n","import {useImperativeHandle, useMemo, useState} from 'react'\n\nimport {useElementSize} from '../../hooks/useElementSize'\nimport {useTheme_v2} from '../../theme/useTheme'\nimport {findMaxBreakpoints, findMinBreakpoints} from './helpers'\n\n/**\n * DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface MediaQueryProps {\n as?: React.ElementType | keyof React.JSX.IntrinsicElements\n media?: number[]\n}\n\n/**\n * DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function ElementQuery(\n props: MediaQueryProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'media'>,\n) {\n const theme = useTheme_v2()\n const {children, media: _media, ref: forwardedRef, ...restProps} = props\n const media = _media ?? theme.media\n\n const [element, setElement] = useState<HTMLDivElement | null>(null)\n const elementSize = useElementSize(element)\n const width = useMemo(() => elementSize?.border.width ?? window.innerWidth, [elementSize])\n\n const max = useMemo(() => {\n const eq = findMaxBreakpoints(media, width)\n\n return eq.length ? eq.join(' ') : undefined\n }, [media, width])\n const min = useMemo(() => {\n const eq = findMinBreakpoints(media, width)\n\n return eq.length ? eq.join(' ') : undefined\n }, [media, width])\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => element, [\n element,\n ])\n\n return (\n <div data-ui=\"ElementQuery\" {...restProps} data-eq-max={max} data-eq-min={min} ref={setElement}>\n {children}\n </div>\n )\n}\n","import {Component, PropsWithChildren} from 'react'\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 // A plain element rather than the `Code` primitive: `Code` lives on the\n // `@sanity/ui/code` entry point (it lazy-loads `react-refractor`), and\n // the root entry point must not reference that module graph.\n return (\n <pre data-ui=\"ErrorBoundary\">\n <code>{message}</code>\n </pre>\n )\n }\n\n return this.props.children\n }\n}\n","import {useMemo, useSyncExternalStore} from 'react'\n\nimport {PortalContext} from './portalContext'\nimport {PortalContextValue} from './types'\n\n/**\n * @public\n */\nexport interface PortalProviderProps {\n /**\n * @deprecated Use `<BoundaryElementProvider element={...} />` instead\n */\n boundaryElement?: HTMLElement | null\n children: React.ReactNode\n element?: HTMLElement | null\n /**\n * @beta\n */\n __unstable_elements?: Record<string, HTMLElement | null | undefined>\n}\n\n/**\n * @public\n */\nexport function PortalProvider(props: PortalProviderProps): React.JSX.Element {\n // oxlint-disable-next-line no-deprecated\n const {boundaryElement, children, element, __unstable_elements: elements} = props\n const fallbackElement = useSyncExternalStore(\n emptySubscribe,\n () => document.body,\n () => null,\n )\n\n const value: PortalContextValue = useMemo(() => {\n return {\n version: 0.0,\n boundaryElement: boundaryElement || null,\n element: element || fallbackElement,\n elements,\n }\n }, [boundaryElement, element, elements, fallbackElement])\n\n return <PortalContext.Provider value={value}>{children}</PortalContext.Provider>\n}\n\nconst emptySubscribe = () => () => {}\n","import {style} from '@vanilla-extract/css'\n\nexport const srOnly = style({\n display: 'block',\n width: 0,\n height: 0,\n position: 'absolute',\n overflow: ['hidden', 'clip'],\n})\n","import {srOnly} from './srOnly.css'\n\n/**\n * @public\n */\nexport interface SrOnlyProps {\n as?: React.ElementType | keyof React.JSX.IntrinsicElements\n children?: React.ReactNode\n}\n\n/**\n * @public\n */\nexport function SrOnly(\n props: SrOnlyProps & Omit<React.HTMLProps<HTMLDivElement>, 'aria-hidden' | 'as'>,\n) {\n const {as = 'div', children, ref} = props\n // Rendering the polymorphic `as` needs one concrete element type for JSX to\n // type-check the div-flavored props (the same widening styled-components'\n // `as` prop performed here before).\n // oxlint-disable-next-line no-unsafe-type-assertion\n const Component = as as 'div'\n\n return (\n <Component aria-hidden className={srOnly} data-ui=\"SrOnly\" ref={ref}>\n {children}\n </Component>\n )\n}\n","import {style} from '@vanilla-extract/css'\n\nexport const virtualList = style({\n position: 'relative',\n})\n\nexport const virtualListItem = style({\n position: 'absolute',\n left: 0,\n right: 0,\n})\n","import {clsx} from 'clsx/lite'\nimport {useEffect, useImperativeHandle, useRef, useState} from 'react'\n\nimport {_isScrollable} from '../../helpers/scroll'\nimport {StackOwnProps} from '../../primitives/stack/stack'\nimport {useTheme_v2} from '../../theme/useTheme'\n\nimport {virtualList, virtualListItem} from './virtualList.css'\n\n/**\n * @beta\n */\nexport interface VirtualListChangeOpts {\n fromIndex: number\n gap: number\n itemHeight: number\n scrollHeight: number\n scrollTop: number\n toIndex: number\n}\n\n/**\n * @beta\n */\nexport interface VirtualListProps<Item = any> {\n as?: React.ElementType | keyof React.JSX.IntrinsicElements\n gap?: number\n getItemKey?: (item: Item, itemIndex: number) => string\n items?: Item[]\n onChange?: (opts: VirtualListChangeOpts) => void\n renderItem?: (item: Item) => React.ReactNode\n}\n\n/**\n * @beta\n */\nexport function VirtualList(\n props: VirtualListProps &\n StackOwnProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'onChange'>,\n): React.JSX.Element {\n const {\n as = 'div',\n className,\n gap = 0,\n getItemKey,\n items = [],\n onChange,\n ref: forwardedRef,\n renderItem,\n ...restProps\n } = props\n const {space} = useTheme_v2()\n const ref = useRef<HTMLDivElement | null>(null)\n const wrapperRef = useRef<HTMLDivElement | null>(null)\n const [scrollTop, setScrollTop] = useState(0)\n const [scrollHeight, setScrollHeight] = useState(0)\n const [itemHeight, setItemHeight] = useState(-1)\n\n // Sync ref to parent\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n\n useEffect(() => {\n if (!wrapperRef.current) return\n\n const firstElement = wrapperRef.current.firstChild\n\n if (firstElement instanceof HTMLElement) {\n setItemHeight(firstElement.offsetHeight)\n }\n // oxlint-disable-next-line react/exhaustive-effect-dependencies\n }, [renderItem])\n\n useEffect((): (() => void) | undefined => {\n if (!ref.current) return\n\n const scrollEl = findScrollable(ref.current.parentNode)\n\n if (scrollEl) {\n if (!(scrollEl instanceof HTMLElement)) return\n\n const handleScroll = () => {\n setScrollTop(scrollEl.scrollTop)\n }\n\n scrollEl.addEventListener('scroll', handleScroll, {passive: true})\n\n const ro = new ResizeObserver((entries) => {\n setScrollHeight(entries[0].contentRect.height)\n })\n\n ro.observe(scrollEl)\n\n handleScroll()\n\n // oxlint-disable-next-line consistent-return\n return () => {\n scrollEl.removeEventListener('scroll', handleScroll)\n\n ro.unobserve(scrollEl)\n ro.disconnect()\n }\n }\n\n const handleScroll = () => {\n setScrollTop(window.scrollY)\n }\n\n const handleResize = () => {\n setScrollHeight(window.innerHeight)\n }\n\n window.addEventListener('scroll', handleScroll, {passive: true})\n window.addEventListener('resize', handleResize)\n\n setScrollHeight(window.innerHeight)\n\n handleScroll()\n\n // oxlint-disable-next-line consistent-return\n return () => {\n window.removeEventListener('scroll', handleScroll)\n window.removeEventListener('resize', handleResize)\n }\n }, [])\n\n const len = items.length\n const height = itemHeight ? len * (itemHeight + space[gap]) - space[gap] : 0\n const fromIndex = height ? Math.max(Math.floor((scrollTop / height) * len) - 2, 0) : 0\n const toIndex = height ? Math.ceil(((scrollTop + scrollHeight) / height) * len) + 1 : 0\n\n useEffect(() => {\n if (!onChange) return\n onChange({fromIndex, gap: space[gap], itemHeight, scrollHeight, scrollTop, toIndex})\n }, [fromIndex, gap, itemHeight, onChange, scrollHeight, scrollTop, space, toIndex])\n\n const children = useChildren({\n fromIndex,\n gap,\n itemHeight,\n space,\n toIndex,\n getItemKey,\n items,\n renderItem,\n })\n\n // Rendering the polymorphic `as` needs one concrete element type for JSX to\n // type-check the div-flavored props (the same widening styled-components'\n // `as` prop performed here before).\n // oxlint-disable-next-line no-unsafe-type-assertion\n const Component = as as 'div'\n\n return (\n <Component\n className={clsx(virtualList, className)}\n data-ui=\"VirtualList\"\n ref={ref}\n {...restProps}\n >\n <div ref={wrapperRef} style={{height}}>\n {children}\n </div>\n </Component>\n )\n}\n\nfunction useChildren({\n fromIndex,\n gap,\n getItemKey,\n itemHeight,\n items,\n renderItem,\n space,\n toIndex,\n}: Pick<VirtualListProps, 'getItemKey' | 'renderItem'> &\n Required<Pick<VirtualListProps, 'items'>> & {\n fromIndex: number\n gap: number\n itemHeight: number\n space: number[]\n toIndex: number\n }) {\n if (!renderItem || items.length === 0) return null\n\n if (itemHeight === -1) {\n return [\n <div key={0} className={virtualListItem}>\n {renderItem(items[0])}\n </div>,\n ]\n }\n\n return items.slice(fromIndex, toIndex).map((item, _itemIndex) => {\n const itemIndex = fromIndex + _itemIndex\n const node = renderItem(item)\n const key = getItemKey ? getItemKey(item, itemIndex) : itemIndex\n\n return (\n <div\n key={key}\n className={virtualListItem}\n style={{top: itemIndex * (itemHeight + space[gap])}}\n >\n {node}\n </div>\n )\n })\n}\n\nfunction findScrollable(parentNode: ParentNode | null) {\n let _scrollEl = parentNode\n\n while (_scrollEl && !_isScrollable(_scrollEl)) {\n _scrollEl = _scrollEl.parentNode\n }\n\n return _scrollEl\n}\n"],"mappings":"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"}