@sanity/ui
Version:
The Sanity UI components.
2,190 lines (1,953 loc) • 68.6 kB
text/typescript
import {BaseTheme as BaseTheme_2} from '@sanity/ui/theme'
import {Component} from 'react'
import {Context} from 'react'
import {createColorTheme as createColorTheme_2} from '@sanity/ui/theme'
import {CSSObject} from '@sanity/ui/theme'
import {DetailedHTMLProps} from 'react'
import {ElementType} from 'react'
import {FastOmit} from 'styled-components'
import {ForwardRefExoticComponent} from 'react'
import {hexToRgb as hexToRgb_2} from '@sanity/ui/theme'
import {HSL as HSL_2} from '@sanity/ui/theme'
import {hslToRgb as hslToRgb_2} from '@sanity/ui/theme'
import {HTMLAttributes} from 'react'
import {HTMLProps} from 'react'
import {IStyledComponentBase} from 'styled-components/dist/types'
import {multiply as multiply_2} from '@sanity/ui/theme'
import {parseColor as parseColor_2} from '@sanity/ui/theme'
import {PartialThemeColorBuilderOpts} from '@sanity/ui/theme'
import {PropsWithChildren} from 'react'
import {ReactNode} from 'react'
import {Ref} from 'react'
import {RefAttributes} from 'react'
import {RGB as RGB_2} from '@sanity/ui/theme'
import {rgba as rgba_2} from '@sanity/ui/theme'
import {rgbToHex as rgbToHex_2} from '@sanity/ui/theme'
import {rgbToHsl as rgbToHsl_2} from '@sanity/ui/theme'
import {RootTheme as RootTheme_2} from '@sanity/ui/theme'
import {screen as screen_3} from '@sanity/ui/theme'
import {Theme as Theme_2} from '@sanity/ui/theme'
import {Theme_v2} from '@sanity/ui/theme'
import {ThemeAvatar} from '@sanity/ui/theme'
import {ThemeBoxShadow} from '@sanity/ui/theme'
import {ThemeColor} from '@sanity/ui/theme'
import {ThemeColorAvatarColorKey} from '@sanity/ui/theme'
import {ThemeColorBase} from '@sanity/ui/theme'
import {ThemeColorBuilderOpts} from '@sanity/ui/theme'
import {ThemeColorButton} from '@sanity/ui/theme'
import {ThemeColorButtonModeKey as ThemeColorButtonModeKey_2} from '@sanity/ui/theme'
import {ThemeColorButtonState} from '@sanity/ui/theme'
import {ThemeColorButtonStates} from '@sanity/ui/theme'
import {ThemeColorButtonTones} from '@sanity/ui/theme'
import {ThemeColorCard} from '@sanity/ui/theme'
import {ThemeColorCardState} from '@sanity/ui/theme'
import {ThemeColorCardToneKey} from '@sanity/ui/theme'
import {ThemeColorGenericState} from '@sanity/ui/theme'
import {ThemeColorInput} from '@sanity/ui/theme'
import {ThemeColorInputState} from '@sanity/ui/theme'
import {ThemeColorInputStates} from '@sanity/ui/theme'
import {ThemeColorMuted} from '@sanity/ui/theme'
import {ThemeColorMutedTone} from '@sanity/ui/theme'
import {ThemeColorName} from '@sanity/ui/theme'
import {ThemeColorScheme} from '@sanity/ui/theme'
import {ThemeColorSchemeKey as ThemeColorSchemeKey_2} from '@sanity/ui/theme'
import {ThemeColorSchemes} from '@sanity/ui/theme'
import {ThemeColorSelectable} from '@sanity/ui/theme'
import {ThemeColorSelectableState} from '@sanity/ui/theme'
import {ThemeColorSelectableStates} from '@sanity/ui/theme'
import {ThemeColorSolid} from '@sanity/ui/theme'
import {ThemeColorSolidTone} from '@sanity/ui/theme'
import {ThemeColorSpot} from '@sanity/ui/theme'
import {ThemeColorSpotKey} from '@sanity/ui/theme'
import {ThemeColorStateToneKey} from '@sanity/ui/theme'
import {ThemeColorSyntax as ThemeColorSyntax_2} from '@sanity/ui/theme'
import {ThemeColorToneKey} from '@sanity/ui/theme'
import {ThemeFont as ThemeFont_2} from '@sanity/ui/theme'
import {ThemeFontKey as ThemeFontKey_2} from '@sanity/ui/theme'
import {ThemeFonts as ThemeFonts_2} from '@sanity/ui/theme'
import {ThemeFontSize as ThemeFontSize_2} from '@sanity/ui/theme'
import {ThemeFontWeight as ThemeFontWeight_2} from '@sanity/ui/theme'
import {ThemeFontWeightKey as ThemeFontWeightKey_2} from '@sanity/ui/theme'
import {ThemeInput} from '@sanity/ui/theme'
import {ThemeLayer as ThemeLayer_2} from '@sanity/ui/theme'
import {ThemeShadow as ThemeShadow_2} from '@sanity/ui/theme'
import {ThemeStyles} from '@sanity/ui/theme'
/** @beta */
export declare type ArrayPropPrimitive = string | number | boolean | undefined | null
/** @internal */
export declare const Arrow: ForwardRefExoticComponent<
Omit<
{
width: number
height: number
radius?: number
} & Omit<HTMLProps<HTMLDivElement>, 'height' | 'width'>,
'ref'
> &
RefAttributes<HTMLDivElement>
>
/**
* @internal
*/
export declare function attemptFocus(element: HTMLElement): boolean
/**
* The Autocomplete component is typically used for search components.
* It consists of a text input for writing a query, and properties for rendering suggestions.
*
* @public
*/
export declare const Autocomplete: <Option extends BaseAutocompleteOption>(
props: AutocompleteProps<Option> &
Omit<
HTMLProps<HTMLInputElement>,
| 'aria-activedescendant'
| 'aria-autocomplete'
| 'aria-expanded'
| 'aria-owns'
| 'as'
| 'autoCapitalize'
| 'autoComplete'
| 'autoCorrect'
| 'id'
| 'inputMode'
| 'onChange'
| 'onSelect'
| 'popover'
| 'prefix'
| 'ref'
| 'role'
| 'spellCheck'
| 'type'
| 'value'
> & {
ref?: Ref<HTMLInputElement>
},
) => React.JSX.Element
/**
* @internal
*/
export declare interface AutocompleteInputChangeMsg {
type: 'input/change'
query: string | null
}
/**
* @internal
*/
export declare interface AutocompleteInputFoocusMsg {
type: 'input/focus'
}
/**
* @internal
*/
export declare type AutocompleteMsg =
| AutocompleteRootBlurMsg
| AutocompleteRootClearMsg
| AutocompleteRootEscapeMsg
| AutocompleteRootOpenMsg
| AutocompleteRootSetActiveValueMsg
| AutocompleteRootSetListFocusedMsg
| AutocompleteInputChangeMsg
| AutocompleteInputFoocusMsg
| AutocompleteValueChangeMsg
/**
* @public
*/
export declare type AutocompleteOpenButtonProps = Omit<ButtonProps, 'as'> &
Omit<React.HTMLProps<HTMLButtonElement>, 'as' | 'ref'>
/**
* @public
*/
export declare interface AutocompleteProps<
Option extends BaseAutocompleteOption = BaseAutocompleteOption,
> {
border?: boolean
customValidity?: string
filterOption?: (query: string, option: Option) => boolean
fontSize?: number | number[]
icon?: ElementType | ReactNode
id: string
/** @beta */
listBox?: BoxProps
loading?: boolean
onChange?: (value: string) => void
onQueryChange?: (query: string | null) => void
onSelect?: (value: string) => void
/** @beta */
openButton?: boolean | AutocompleteOpenButtonProps
/** @beta */
openOnFocus?: boolean
/** The options to render. */
options?: Option[]
padding?: number | number[]
popover?: Omit<PopoverProps, 'content' | 'onMouseEnter' | 'onMouseLeave' | 'open'> &
Omit<HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content' | 'ref' | 'width'>
prefix?: ReactNode
radius?: Radius | Radius[]
/** @beta */
relatedElements?: HTMLElement[]
/** The callback function for rendering each option. */
renderOption?: (option: Option) => React.JSX.Element
/** @beta */
renderPopover?: (
props: {
content: React.JSX.Element | null
hidden: boolean
inputElement: HTMLInputElement | null
onMouseEnter: () => void
onMouseLeave: () => void
},
ref: Ref<HTMLDivElement>,
) => ReactNode
renderValue?: (value: string, option?: Option) => string
suffix?: ReactNode
/** The current value. */
value?: string
}
/**
* @internal
*/
export declare interface AutocompleteRootBlurMsg {
type: 'root/blur'
}
/**
* @internal
*/
export declare interface AutocompleteRootClearMsg {
type: 'root/clear'
}
/**
* @internal
*/
export declare interface AutocompleteRootEscapeMsg {
type: 'root/escape'
}
/**
* @internal
*/
export declare interface AutocompleteRootOpenMsg {
type: 'root/open'
query: string | null
}
/**
* @internal
*/
export declare interface AutocompleteRootSetActiveValueMsg {
type: 'root/setActiveValue'
value: string
listFocused?: boolean
}
/**
* @internal
*/
export declare interface AutocompleteRootSetListFocusedMsg {
type: 'root/setListFocused'
listFocused: boolean
}
/**
* @internal
*/
export declare interface AutocompleteState {
activeValue: string | null
focused: boolean
listFocused: boolean
query: string | null
value: string | null
}
/**
* @internal
*/
export declare interface AutocompleteValueChangeMsg {
type: 'value/change'
value: string | null
}
/**
* Avatars are used to represent people and other agents (e.g. bots).
*
* @public
*/
export declare const Avatar: ForwardRefExoticComponent<
AvatarProps & Omit<HTMLProps<HTMLDivElement>, 'ref' | 'as'> & RefAttributes<HTMLDivElement>
>
/**
* @public
*/
export declare const AvatarCounter: ForwardRefExoticComponent<
AvatarCounterProps & RefAttributes<HTMLDivElement>
>
/**
* @public
*/
export declare interface AvatarCounterProps {
count: number
size?: AvatarSize | AvatarSize[]
/** @deprecated No longer supported. */
tone?: 'navbar'
}
/**
* @public
*/
export declare type AvatarPosition = 'top' | 'bottom' | 'inside'
/**
* @public
*/
export declare interface AvatarProps {
/** @beta */
__unstable_hideInnerStroke?: boolean
animateArrowFrom?: AvatarPosition
arrowPosition?: AvatarPosition
as?: React.ElementType | keyof React.JSX.IntrinsicElements
color?: ThemeColorAvatarColorKey
initials?: string
onImageLoadError?: (event: Error) => void
size?: AvatarSize | AvatarSize[]
src?: string
/**
* The status of the entity this Avatar represents.
* @alpha
*/
status?: AvatarStatus
title?: string
}
/**
* @internal
*/
export declare interface AvatarRootStyleProps {
$color: ThemeColorAvatarColorKey
}
/**
* @public
*/
export declare type AvatarSize = 0 | 1 | 2 | 3
/**
* @public
*/
export declare const AvatarStack: ForwardRefExoticComponent<
AvatarStackProps & Omit<HTMLProps<HTMLDivElement>, 'ref' | 'as'> & RefAttributes<HTMLDivElement>
>
/**
* @public
*/
export declare interface AvatarStackProps {
children: React.ReactNode
maxLength?: number
size?: AvatarSize | AvatarSize[]
/** @deprecated No longer supported. */
tone?: 'navbar'
}
/**
* @public
*/
export declare type AvatarStatus = 'online' | 'editing' | 'inactive'
/**
* Badges are used to tag resources.
*
* @public
*/
export declare const Badge: ForwardRefExoticComponent<
Omit<BadgeProps & HTMLProps<HTMLDivElement>, 'ref'> & RefAttributes<unknown>
>
/**
* @public
* @deprecated No longer used
*/
export declare type BadgeMode = 'default' | 'outline'
/**
* @public
*/
export declare interface BadgeProps extends BoxProps, ResponsiveRadiusProps {
as?: React.ElementType | keyof React.JSX.IntrinsicElements
fontSize?: number | number[]
/** @deprecated No longer used. */
mode?: BadgeMode
tone?: BadgeTone
}
/**
* @public
*/
export declare type BadgeTone = ThemeColorStateToneKey
/**
* @public
*/
export declare interface BaseAutocompleteOption {
value: string
}
/**
* @public
* @deprecated Use `BaseTheme` from `@sanity/ui/theme` instead.
*/
export declare type BaseTheme = BaseTheme_2
/**
* @public
*/
export declare interface BoundaryElementContextValue {
version: 0.0
element: HTMLElement | null
}
/**
* @public
*/
export declare function BoundaryElementProvider(
props: BoundaryElementProviderProps,
): React.JSX.Element
export declare namespace BoundaryElementProvider {
var displayName: string
}
/**
* @public
*/
export declare interface BoundaryElementProviderProps {
children: React.ReactNode
element: HTMLElement | null
}
/**
* The `Box` component is a basic layout wrapper component which provides utility properties
* for flex, margins and padding.
*
* @public
*/
export declare const Box: ForwardRefExoticComponent<
Omit<BoxProps & Omit<HTMLProps<HTMLDivElement>, 'height' | 'as'>, 'ref'> &
RefAttributes<HTMLDivElement>
>
/**
* @public
*/
export declare type BoxDisplay = 'none' | 'block' | 'grid' | 'flex' | 'inline-block'
/**
* @public
*/
export declare type BoxHeight = 'stretch' | 'fill'
/**
* @public
*/
export declare type BoxOverflow = 'visible' | 'hidden' | 'auto'
/**
* @public
*/
export declare interface BoxProps
extends ResponsiveFlexItemProps,
ResponsiveBoxProps,
ResponsiveGridItemProps,
ResponsiveMarginProps,
ResponsivePaddingProps {
as?: React.ElementType | keyof React.JSX.IntrinsicElements
forwardedAs?: React.ElementType | keyof React.JSX.IntrinsicElements
}
/**
* @public
* @deprecated Use `ThemeBoxShadow` from `@sanity/ui/theme` instead.
*/
export declare type BoxShadow = ThemeBoxShadow
/**
* @public
*/
export declare type BoxSizing = 'content' | 'border'
/**
* @beta
*/
export declare const Breadcrumbs: ForwardRefExoticComponent<
BreadcrumbsProps &
Omit<HTMLProps<HTMLOListElement>, 'type' | 'ref' | 'as'> &
RefAttributes<HTMLOListElement>
>
/**
* @beta
*/
export declare interface BreadcrumbsProps {
maxLength?: number
separator?: React.ReactNode
space?: number | number[]
}
/**
* @public
*/
export declare const Button: ForwardRefExoticComponent<
Omit<ButtonProps & Omit<HTMLProps<HTMLButtonElement>, 'width' | 'as'>, 'ref'> &
RefAttributes<HTMLButtonElement>
>
/**
* @public
*/
export declare type ButtonMode = ThemeColorButtonModeKey_2
/**
* @public
*/
export declare interface ButtonProps extends ResponsivePaddingProps, ResponsiveRadiusProps {
as?: React.ElementType | keyof React.JSX.IntrinsicElements
fontSize?: number | number[]
mode?: ButtonMode
icon?: React.ElementType | React.ReactNode
iconRight?: React.ElementType | React.ReactNode
justify?: FlexJustify | FlexJustify[]
/**
* @beta Do not use in production, as this might change.
*/
loading?: boolean
selected?: boolean
space?: number | number[]
muted?: boolean
text?: React.ReactNode
textAlign?: ButtonTextAlign
textWeight?: ThemeFontWeightKey_2
tone?: ButtonTone
type?: 'button' | 'reset' | 'submit'
width?: ButtonWidth
}
/**
* @public
*/
export declare type ButtonTextAlign = 'left' | 'right' | 'center'
/**
* @public
*/
export declare type ButtonTone = ThemeColorStateToneKey
/**
* @public
*/
export declare type ButtonWidth = 'fill'
/**
* The `Card` component acts much like a `Box`, but with a background and foreground color.
* Components within a `Card` inherit its colors.
*
* @public
*/
export declare const Card: ForwardRefExoticComponent<
Omit<CardProps & Omit<HTMLProps<HTMLDivElement>, 'height' | 'as'>, 'ref'> &
RefAttributes<HTMLDivElement>
>
/**
* @public
*/
export declare interface CardProps
extends BoxProps,
ResponsiveBorderProps,
ResponsiveRadiusProps,
ResponsiveShadowProps {
/**
* Do not use in production.
* @beta
*/
__unstable_checkered?: boolean
/**
* Do not use in production.
* @beta
*/
__unstable_focusRing?: boolean
muted?: boolean
pressed?: boolean
scheme?: ThemeColorSchemeKey_2
tone?: CardTone
}
/**
* @internal
*/
export declare interface CardStyleProps {
$checkered: boolean
$focusRing: boolean
$muted: boolean
$tone: ThemeColorToneKey
}
/**
* @public
*/
export declare type CardTone = ThemeColorCardToneKey | 'inherit'
/**
* Checkboxes allow the user to select one or more items from a set.
*
* @public
*/
export declare const Checkbox: ForwardRefExoticComponent<
Omit<Omit<HTMLProps<HTMLInputElement>, 'type' | 'as'> & CheckboxProps, 'ref'> &
RefAttributes<HTMLInputElement>
>
/**
* @public
*/
export declare interface CheckboxProps {
indeterminate?: boolean
customValidity?: string
}
/**
* @public
*/
export declare type ClickOutsideElements = (HTMLElement | null | (HTMLElement | null)[])[]
/**
* @public
*/
export declare type ClickOutsideEventElements = (HTMLElement | null | (HTMLElement | null)[])[]
/**
* @public
*/
export declare type ClickOutsideEventListener = (event: MouseEvent) => void
/**
* @public
*/
export declare type ClickOutsideListener = (event: MouseEvent) => void
/**
* @public
*/
export declare const Code: ForwardRefExoticComponent<
Omit<CodeProps & Omit<HTMLProps<HTMLElement>, 'size' | 'as'>, 'ref'> & RefAttributes<HTMLElement>
>
/**
* @public
*/
export declare interface CodeProps {
as?: React.ElementType | keyof React.JSX.IntrinsicElements
/** Define the language to use for syntax highlighting. */
language?: string
size?: number | number[]
weight?: string
}
/**
* This API might change. DO NOT USE IN PRODUCTION.
* @beta
*/
export declare const CodeSkeleton: ForwardRefExoticComponent<
Omit<
CodeSkeletonProps & Omit<HTMLProps<HTMLDivElement>, 'height' | 'size' | 'children' | 'as'>,
'ref'
> &
RefAttributes<HTMLDivElement>
>
/**
* This API might change. DO NOT USE IN PRODUCTION.
* @beta
*/
export declare interface CodeSkeletonProps extends SkeletonProps {
size?: number | number[]
}
/**
* @internal
* @deprecated this component will be removed in the next major release
*/
export declare function ConditionalWrapper({
children,
condition,
wrapper,
}: {
children: React.ReactNode
condition: boolean
wrapper: (children: React.ReactNode) => React.ReactNode
}): React.ReactNode
export declare namespace ConditionalWrapper {
var displayName: string
}
/**
* The `Container` component wraps content layout in a defined set of widths.
*
* @public
*/
export declare const Container: ForwardRefExoticComponent<
Omit<ContainerProps & Omit<HTMLProps<HTMLDivElement>, 'height' | 'width' | 'as'>, 'ref'> &
RefAttributes<HTMLDivElement>
>
/**
* @public
*/
export declare interface ContainerProps extends BoxProps, ResponsiveWidthProps {}
/**
* @internal
*/
export declare function containsOrEqualsElement(element: HTMLElement, node: Node): boolean
/**
* @public
* @deprecated Use `createColorTheme` from `@sanity/ui/theme` instead.
*/
export declare const createColorTheme: typeof createColorTheme_2
/**
* @public
*/
export declare type Delay =
| number
| Partial<{
open: number
close: number
}>
/**
* The Dialog component.
*
* @public
*/
export declare const Dialog: ForwardRefExoticComponent<
Omit<DialogProps & Omit<HTMLProps<HTMLDivElement>, 'id' | 'width' | 'as'>, 'ref'> &
RefAttributes<HTMLDivElement>
>
/**
* @internal
*/
export declare const DialogContext: Context<DialogContextValue>
/**
* This API might change. DO NOT USE IN PRODUCTION.
* @beta
*/
export declare interface DialogContextValue {
version: 0.0
position?: DialogPosition | DialogPosition[]
zOffset?: number | number[]
}
/**
* @public
*/
export declare type DialogPosition = 'absolute' | 'fixed'
/**
* @public
*/
export declare interface DialogProps extends ResponsivePaddingProps, ResponsiveWidthProps {
/**
* @beta
*/
__unstable_autoFocus?: boolean
/**
* @beta
*/
__unstable_hideCloseButton?: boolean
cardRadius?: Radius | Radius[]
cardShadow?: number | number[]
contentRef?: React.ForwardedRef<HTMLDivElement>
footer?: React.ReactNode
header?: React.ReactNode
id: string
/** A callback that fires when the dialog becomes the top layer when it was not the top layer before. */
onActivate?: LayerProps['onActivate']
onClickOutside?: () => void
onClose?: () => void
portal?: string
position?: DialogPosition | DialogPosition[]
scheme?: ThemeColorSchemeKey_2
zOffset?: number | number[]
/**
* Whether the dialog should animate in on mount.
*
* @beta
* @defaultValue false
*/
animate?: boolean
}
/**
* This API might change. DO NOT USE IN PRODUCTION.
* @beta
*/
export declare function DialogProvider(props: DialogProviderProps): React.JSX.Element
export declare namespace DialogProvider {
var displayName: string
}
/**
* This API might change. DO NOT USE IN PRODUCTION.
* @beta
*/
export declare interface DialogProviderProps {
children?: React.ReactNode
position?: DialogPosition | DialogPosition[]
zOffset?: number | number[]
}
/**
* DO NOT USE IN PRODUCTION.
* @beta
*/
export declare const ElementQuery: ForwardRefExoticComponent<
Omit<MediaQueryProps & Omit<HTMLProps<HTMLDivElement>, 'media' | 'as'>, 'ref'> &
RefAttributes<HTMLDivElement>
>
/**
* @beta
*/
export declare interface ElementRectValue {
width: number
height: number
}
/**
* @beta
*/
export declare interface ElementSize {
content: ElementRectValue
border: ElementRectValue
/** @deprecated INTERNAL ONLY */
_contentRect: DOMRectReadOnly
}
/**
* @internal
*/
export declare interface _ElementSizeListener {
subscribe: (element: HTMLElement, subscriber: _ElementSizeSubscriber) => () => void
}
/**
* @internal
*/
export declare interface _ElementSizeObserver {
subscribe: (element: HTMLElement, subscriber: _ElementSizeSubscriber) => () => void
}
/**
* @internal
*/
export declare const _elementSizeObserver: _ElementSizeObserver
/**
* @internal
*/
export declare type _ElementSizeSubscriber = (elementRect: ElementSize) => void
/**
* DO NOT USE IN PRODUCTION
* @beta
*/
export declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
state: ErrorBoundaryState
static getDerivedStateFromError(error: Error): ErrorBoundaryState
componentDidCatch(error: Error, info: React.ErrorInfo): void
render(): React.ReactNode
}
/**
* DO NOT USE IN PRODUCTION
* @beta
*/
export declare type ErrorBoundaryProps = PropsWithChildren<{
onCatch: (params: {error: Error; info: React.ErrorInfo}) => void
}>
/**
* DO NOT USE IN PRODUCTION
* @beta
*/
export declare interface ErrorBoundaryState {
error: Error | null
}
/**
* @internal
*/
export declare function _fillCSSObject(
keys: string[],
value: string | number | CSSObject,
): CSSObject
/**
* The `Flex` component is a wrapper component for flexible elements (`Box`, `Card` and `Flex`).
*
* @public
*/
export declare const Flex: ForwardRefExoticComponent<
Omit<FlexProps & Omit<HTMLProps<HTMLDivElement>, 'wrap' | 'as'>, 'ref'> &
RefAttributes<HTMLDivElement>
>
/**
* @public
*/
export declare type FlexAlign = 'flex-start' | 'flex-end' | 'center' | 'baseline' | 'stretch'
/**
* @public
*/
export declare type FlexDirection = 'row' | 'row-reverse' | 'column' | 'column-reverse'
/**
* @public
*/
export declare type FlexJustify =
| 'flex-start'
| 'flex-end'
| 'center'
| 'space-between'
| 'space-around'
| 'space-evenly'
/**
* @public
*/
export declare interface FlexProps
extends Omit<BoxProps, 'display'>,
ResponsiveFlexProps,
ResponsiveFlexItemProps {
gap?: number | number[]
}
/**
* @public
*/
export declare type FlexValue = number | 'none' | 'auto' | 'initial'
/**
* @public
*/
export declare type FlexWrap = 'wrap' | 'wrap-reverse' | 'nowrap'
/**
* @internal
*/
export declare function focusFirstDescendant(element: HTMLElement): boolean
/**
* @internal
*/
export declare function focusLastDescendant(element: HTMLElement): boolean
/**
* @internal
*/
export declare interface FontWeightStyleProps {
$weight?: ThemeFontWeightKey_2
}
/**
* @internal
*/
export declare function _getArrayProp<T = number>(val: T | T[] | undefined, defaultVal?: T[]): T[]
/**
* @internal
*/
export declare function _getResponsiveSpace(
theme: Theme_2,
props: string[],
spaceIndexes?: number[],
): CSSObject[] | null
/**
* The `Grid` component is for building 2-dimensional layers (based on CSS grid).
*
* @public
*/
export declare const Grid: ForwardRefExoticComponent<
Omit<GridProps & Omit<HTMLProps<HTMLDivElement>, 'height' | 'as' | 'rows'>, 'ref'> &
RefAttributes<HTMLDivElement>
>
/**
* @public
*/
export declare type GridAutoCols = 'auto' | 'min' | 'max' | 'fr'
/**
* @public
*/
export declare type GridAutoFlow = 'row' | 'column' | 'row dense' | 'column dense'
/**
* @public
*/
export declare type GridAutoRows = 'auto' | 'min' | 'max' | 'fr'
/**
* @public
*/
export declare type GridItemColumn = 'auto' | 'full' | number
/**
* @public
*/
export declare type GridItemColumnEnd = 'auto' | number
/**
* @public
*/
export declare type GridItemColumnStart = 'auto' | number
/**
* @public
*/
export declare type GridItemRow = 'auto' | 'full' | number
/**
* @public
*/
export declare type GridItemRowEnd = 'auto' | number
/**
* @public
*/
export declare type GridItemRowStart = 'auto' | number
/**
* @public
*/
export declare interface GridProps extends Omit<BoxProps, 'display'>, ResponsiveGridProps {}
/**
* @internal
*/
export declare function _hasFocus(element: HTMLElement): boolean
/**
* Typographic headings.
*
* @public
*/
export declare const Heading: ForwardRefExoticComponent<
Omit<HeadingProps & Omit<HTMLProps<HTMLElement>, 'size' | 'as'>, 'ref'> &
RefAttributes<HTMLElement>
>
/**
* @public
*/
export declare interface HeadingProps {
accent?: boolean
align?: TextAlign | TextAlign[]
as?: React.ElementType | keyof React.JSX.IntrinsicElements
muted?: boolean
size?: number | number[]
/**
* Controls how overflowing text is treated.
* Use `textOverflow="ellipsis"` to render text as a single line which is concatenated with a `…` symbol.
* @beta
*/
textOverflow?: 'ellipsis'
weight?: ThemeFontWeightKey_2
}
/**
* This API might change. DO NOT USE IN PRODUCTION.
* @beta
*/
export declare const HeadingSkeleton: ForwardRefExoticComponent<
Omit<
HeadingSkeletonProps & Omit<HTMLProps<HTMLDivElement>, 'height' | 'size' | 'children' | 'as'>,
'ref'
> &
RefAttributes<HTMLDivElement>
>
/**
* This API might change. DO NOT USE IN PRODUCTION.
* @beta
*/
export declare interface HeadingSkeletonProps extends SkeletonProps {
size?: number | number[]
}
/**
* @public
* @deprecated Use `hexToRgb` from `@sanity/ui/theme` instead.
*/
export declare const hexToRgb: typeof hexToRgb_2
/**
* Represent hotkeys (a keyboard combination) with semantic `<kbd>` elements.
*
* @public
*/
export declare const Hotkeys: ForwardRefExoticComponent<
HotkeysProps & Omit<HTMLProps<HTMLElement>, 'size' | 'ref' | 'as'> & RefAttributes<HTMLElement>
>
/**
* @public
*/
export declare interface HotkeysProps {
fontSize?: number | number[]
padding?: number | number[]
radius?: Radius | Radius[]
space?: number | number[]
keys?: string[]
}
/**
* @public
* @deprecated Use `HSL` from `@sanity/ui/theme` instead.
*/
export declare type HSL = HSL_2
/**
* @public
* @deprecated Use `hslToRgb` from `@sanity/ui/theme` instead.
*/
export declare const hslToRgb: typeof hslToRgb_2
/**
* The `Inline` component is a layout utility for aligning and spacing items horizontally.
*
* @public
*/
export declare const Inline: ForwardRefExoticComponent<
Omit<InlineProps & HTMLProps<HTMLDivElement>, 'ref'> & RefAttributes<unknown>
>
/**
* @public
*/
export declare interface InlineProps extends Omit<BoxProps, 'display'> {
/** The spacing between children. */
space?: number | number[]
}
/**
* @internal
*/
export declare function _isEnterToClickElement(element: HTMLElement): boolean
/**
* @internal
*/
export declare function isFocusable(element: HTMLElement): boolean
/**
* @internal
*/
export declare function isHTMLAnchorElement(element: unknown): element is HTMLAnchorElement
/**
* @internal
*/
export declare function isHTMLButtonElement(element: unknown): element is HTMLButtonElement
/**
* @internal
*/
export declare function isHTMLElement(node: unknown): node is HTMLElement
/**
* @internal
*/
export declare function isHTMLInputElement(element: unknown): element is HTMLInputElement
/**
* @internal
*/
export declare function isHTMLSelectElement(element: unknown): element is HTMLSelectElement
/**
* @internal
*/
export declare function isHTMLTextAreaElement(element: unknown): element is HTMLTextAreaElement
/**
* @internal
*/
export declare function _isScrollable(el: Node): boolean
/**
* Used to define some text as keyboard input.
*
* @public
*/
export declare const KBD: ForwardRefExoticComponent<
KBDProps & Omit<HTMLProps<HTMLElement>, 'size' | 'ref' | 'as'> & RefAttributes<HTMLDivElement>
>
/**
* @public
*/
export declare interface KBDProps {
as?: React.ElementType | keyof React.JSX.IntrinsicElements
fontSize?: number | number[]
padding?: number | number[]
radius?: Radius | Radius[]
}
/**
* Typographic labels.
*
* @public
*/
export declare const Label: ForwardRefExoticComponent<
Omit<LabelProps & Omit<HTMLProps<HTMLDivElement>, 'size' | 'as'>, 'ref'> &
RefAttributes<HTMLDivElement>
>
/**
* @public
*/
export declare interface LabelProps {
accent?: boolean
align?: TextAlign | TextAlign[]
as?: React.ElementType | keyof React.JSX.IntrinsicElements
muted?: boolean
size?: number | number[]
/**
* Controls how overflowing text is treated.
* Use `textOverflow="ellipsis"` to render text as a single line which is concatenated with a `…` symbol.
* @beta
*/
textOverflow?: 'ellipsis'
weight?: ThemeFontWeightKey_2
}
/**
* This API might change. DO NOT USE IN PRODUCTION.
* @beta
*/
export declare const LabelSkeleton: ForwardRefExoticComponent<
Omit<
LabelSkeletonProps & Omit<HTMLProps<HTMLDivElement>, 'height' | 'size' | 'children' | 'as'>,
'ref'
> &
RefAttributes<HTMLDivElement>
>
/**
* This API might change. DO NOT USE IN PRODUCTION.
* @beta
*/
export declare interface LabelSkeletonProps extends SkeletonProps {
size?: number | number[]
}
/**
* @public
*/
export declare const Layer: ForwardRefExoticComponent<
Omit<LayerProps & Omit<HTMLProps<HTMLDivElement>, 'as'>, 'ref'> & RefAttributes<HTMLDivElement>
>
/** @public */
export declare interface LayerContextValue {
version: 0.0
isTopLayer: boolean
level?: number
registerChild: (childLevel?: number) => () => void
size: number
zIndex: number
}
/**
* @public
*/
export declare interface LayerProps {
as?: React.ElementType | keyof React.JSX.IntrinsicElements
/** A callback that fires when the layer becomes the top layer when it was not the top layer before. */
onActivate?: (props: {activeElement: HTMLElement | null}) => void
zOffset?: number | number[]
}
/**
* @public
*/
export declare function LayerProvider(props: LayerProviderProps): React.JSX.Element
export declare namespace LayerProvider {
var displayName: string
}
/**
* @public
*/
export declare interface LayerProviderProps {
children?: React.ReactNode
zOffset?: number | number[]
}
/**
* DO NOT USE IN PRODUCTION.
* @beta
*/
export declare interface MediaQueryProps {
as?: React.ElementType | keyof React.JSX.IntrinsicElements
media?: number[]
}
/**
* @internal
*/
export declare interface _MediaStore {
subscribe: (onStoreChange: () => void) => () => void
getSnapshot: () => number
}
/**
* The `Menu` component is a building block for application menus.
*
* @public
*/
export declare const Menu: ForwardRefExoticComponent<
Omit<MenuProps & Omit<HTMLProps<HTMLDivElement>, 'height' | 'tabIndex' | 'role' | 'as'>, 'ref'> &
RefAttributes<HTMLDivElement>
>
/**
* The `MenuButton` component follows the WAI-ARIA specification for menu buttons.
*
* @public
*/
export declare const MenuButton: ForwardRefExoticComponent<
MenuButtonProps & RefAttributes<HTMLButtonElement | null>
>
/**
* @public
*/
export declare interface MenuButtonProps {
/**
* @beta Do not use in production.
*/
__unstable_disableRestoreFocusOnClose?: boolean
/**
* @deprecated Use `popover={{boundaryElement: element}}` instead.
*/
boundaryElement?: HTMLElement
button: React.JSX.Element
id: string
menu?: React.JSX.Element
onClose?: () => void
onOpen?: () => void
/**
* @deprecated Use `popover={{placement: 'top'}}` instead.
*/
placement?: Placement
popover?: Omit<PopoverProps, 'content' | 'open'>
/**
* @deprecated Use `popover={{scheme: 'dark'}}` instead.
*/
popoverScheme?: ThemeColorSchemeKey_2
/**
* @deprecated Use `popover={{radius: 2}}` instead.
*/
popoverRadius?: Radius | Radius[]
/**
* @beta Do not use in production.
* @deprecated Use `popover={{portal: true}}` instead.
*/
portal?: boolean
/**
* @deprecated Use `popover={{preventOverflow: true}}` instead.
*/
preventOverflow?: boolean
}
/**
* @public
*/
export declare const MenuDivider: IStyledComponentBase<
'web',
FastOmit<DetailedHTMLProps<HTMLAttributes<HTMLHRElement>, HTMLHRElement>, never>
> &
string
/**
* @public
*/
export declare function MenuGroup(
props: Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'popover' | 'ref' | 'tabIndex'> &
MenuGroupProps,
): React.JSX.Element
export declare namespace MenuGroup {
var displayName: string
}
/**
* @public
*/
export declare interface MenuGroupProps {
as?: React.ElementType | keyof React.JSX.IntrinsicElements
fontSize?: number | number[]
icon?: React.ElementType | React.ReactNode
menu?: Omit<
MenuProps,
| 'onClickOutside'
| 'onEscape'
| 'onItemClick'
| 'onKeyDown'
| 'onMouseEnter'
| 'registerElement'
| 'shouldFocus'
| 'onBlurCapture'
>
padding?: number | number[]
popover?: Omit<PopoverProps, 'content' | 'open'>
radius?: Radius | Radius[]
space?: number | number[]
text: React.ReactNode
tone?: SelectableTone
}
/**
* @public
*/
export declare const MenuItem: ForwardRefExoticComponent<
MenuItemProps &
Omit<HTMLProps<HTMLDivElement>, 'selected' | 'height' | 'ref' | 'tabIndex' | 'as'> &
RefAttributes<HTMLDivElement>
>
/**
* @public
*/
export declare interface MenuItemProps extends ResponsivePaddingProps, ResponsiveRadiusProps {
as?: React.ElementType | keyof React.JSX.IntrinsicElements
fontSize?: number | number[]
hotkeys?: string[]
icon?: React.ElementType | React.ReactNode
iconRight?: React.ElementType | React.ReactNode
pressed?: boolean
selected?: boolean
space?: number | number[]
text?: React.ReactNode
tone?: SelectableTone
}
/**
* @public
*/
export declare interface MenuProps extends ResponsivePaddingProps {
/**
* @deprecated Use `shouldFocus="first"` instead.
*/
'focusFirst'?: boolean
/**
* @deprecated Use `shouldFocus="last"` instead.
*/
'focusLast'?: boolean
'onClickOutside'?: (event: MouseEvent) => void
'onEscape'?: () => void
'onItemClick'?: () => void
'onItemSelect'?: (index: number) => void
'originElement'?: HTMLElement | null
'registerElement'?: (el: HTMLElement) => () => void
'shouldFocus'?: 'first' | 'last' | null
'space'?: number | number[]
'aria-labelledby'?: string
'onBlurCapture'?: (event: FocusEvent) => void
}
/**
* @public
* @deprecated Use `multiply` from `@sanity/ui/theme` instead.
*/
export declare const multiply: typeof multiply_2
/**
* @public
* @deprecated Use `parseColor` from `@sanity/ui/theme` instead.
*/
export declare const parseColor: typeof parseColor_2
export {PartialThemeColorBuilderOpts}
/**
* Placement of floating UI elements.
*
* @public
*/
export declare type Placement =
| 'top'
| 'top-start'
| 'top-end'
| 'right'
| 'right-start'
| 'right-end'
| 'bottom'
| 'bottom-start'
| 'bottom-end'
| 'left'
| 'left-start'
| 'left-end'
/**
* The `Popover` component is used to display some content on top of another.
*
* @public
*/
export declare const Popover: ForwardRefExoticComponent<
Omit<
PopoverProps & Omit<HTMLProps<HTMLDivElement>, 'content' | 'width' | 'children' | 'as'>,
'ref'
> &
RefAttributes<HTMLDivElement>
>
/**
* @beta
*/
export declare type PopoverMargins = [number, number, number, number]
/** @public */
export declare interface PopoverProps
extends Omit<LayerProps, 'as'>,
ResponsiveRadiusProps,
ResponsiveShadowProps {
/** @beta */
__unstable_margins?: PopoverMargins
/**
* Whether the popover should animate in and out.
*
* @beta
* @defaultValue false
*/
animate?: boolean
arrow?: boolean
/** @deprecated Use `floatingBoundary` and/or `referenceBoundary` instead */
boundaryElement?: HTMLElement | null
children?: React.JSX.Element
/**
* When `true`, prevent overflow within the current boundary:
* - by flipping on its side axis
* - by resizing
/*
* Note that:
* - setting `preventOverflow` to `true` also prevents overflow on its side axis
* - setting `matchReferenceWidth` to `true` also causes the popover to resize
*
* @defaultValue false
*/
constrainSize?: boolean
content?: React.ReactNode
disabled?: boolean
fallbackPlacements?: Placement[]
floatingBoundary?: HTMLElement | null
/**
* When `true`, set the maximum width to match the reference element, and also prevent overflow within
* the current boundary by resizing.
*
* Note that setting `constrainSize` to `true` also causes the popover to resize
*
* @defaultValue false
*/
matchReferenceWidth?: boolean
/**
* When true, blocks all pointer interaction with elements beneath the popover until closed.
*
* @beta
* @defaultValue false
*/
modal?: boolean
open?: boolean
overflow?: BoxOverflow
padding?: number | number[]
placement?: Placement
/**
* When 'flip' (default), the placement is determined from the initial placement and the
* fallback placements in order. Whichever fits in the viewport first.
*
* When 'autoPlacement', the initial placement and all fallback placements are evaluated
* and the placement with the most viewport space available.
*
* Option is only relevant if either `constrainSize` or `preventOverflow` is `true`
*/
placementStrategy?: 'flip' | 'autoPlacement'
/** Whether or not to render the popover in a portal element. */
portal?: boolean | string
preventOverflow?: boolean
referenceBoundary?: HTMLElement | null
/**
* When defined, the popover will be positioned relative to this element.
* The children of the popover won't be rendered.
*/
referenceElement?: HTMLElement | null
scheme?: ThemeColorSchemeKey_2
tone?: CardTone
/** @beta */
updateRef?: Ref<PopoverUpdateCallback | undefined>
width?: PopoverWidth | PopoverWidth[]
}
/** @beta */
export declare type PopoverUpdateCallback = () => void
/** @public */
export declare type PopoverWidth = number | 'auto'
/**
* @public
*/
export declare function Portal(props: PortalProps): React.ReactPortal | null
export declare namespace Portal {
var displayName: string
}
/**
* @public
*/
export declare interface PortalContextValue {
version: 0.0
boundaryElement: HTMLElement | null
element: HTMLElement | null
elements?: Record<string, HTMLElement | null | undefined>
}
/**
* @public
*/
export declare interface PortalProps {
children: React.ReactNode
/**
* @beta This API might change. DO NOT USE IN PRODUCTION.
*/
__unstable_name?: string
}
/**
* @public
*/
export declare function PortalProvider(props: PortalProviderProps): React.JSX.Element
export declare namespace PortalProvider {
var displayName: string
}
/**
* @public
*/
export declare interface PortalProviderProps {
/**
* @deprecated Use `<BoundaryElementProvider element={...} />` instead
*/
boundaryElement?: HTMLElement | null
children: React.ReactNode
element?: HTMLElement | null
/**
* @beta
*/
__unstable_elements?: Record<string, HTMLElement | null | undefined>
}
/**
* The `Radio` component allows the user to select one option from a set.
*
* @public
*/
export declare const Radio: ForwardRefExoticComponent<
Omit<Omit<HTMLProps<HTMLInputElement>, 'type' | 'as'> & RadioProps, 'ref'> &
RefAttributes<HTMLInputElement>
>
/**
* @public
*/
export declare interface RadioProps {
customValidity?: string
}
/**
* @public
*/
export declare type Radius = number | 'full'
/**
* @internal
*/
export declare function _raf(fn: () => void): () => void
/**
* @internal
*/
export declare function _raf2(fn: () => void): () => void
/**
* @public
*/
export declare function rem(pixelValue: number): string | 0
/**
* @internal
*/
export declare const _ResizeObserver: typeof ResizeObserver
/**
* @internal
*/
export declare function _responsive<T>(
media: number[],
values: T[],
callback: (value: T, index: number, array: T[]) => CSSObject,
): CSSObject[]
/**
* @internal
*/
export declare interface ResponsiveAvatarSizeStyleProps {
$size: AvatarSize[]
}
/**
* @public
*/
export declare interface ResponsiveBorderProps {
border?: boolean | boolean[]
borderTop?: boolean | boolean[]
borderRight?: boolean | boolean[]
borderBottom?: boolean | boolean[]
borderLeft?: boolean | boolean[]
}
/**
* @public
*/
export declare interface ResponsiveBoxProps {
display?: BoxDisplay | BoxDisplay[]
height?: BoxHeight | BoxHeight[]
overflow?: BoxOverflow | BoxOverflow[]
sizing?: BoxSizing | BoxSizing[]
}
/**
* Get responsive CSS for the `code` font style.
* @internal
*/
export declare function responsiveCodeFontStyle(
props: ResponsiveFontStyleProps & ThemeProps,
): CSSObject[]
/**
* @public
*/
export declare interface ResponsiveFlexItemProps {
/** Sets the flex CSS attribute. The property is responsive. */
flex?: FlexValue | FlexValue[]
}
/**
* @public
*/
export declare interface ResponsiveFlexProps {
align?: FlexAlign | FlexAlign[]
direction?: FlexDirection | FlexDirection[]
justify?: FlexJustify | FlexJustify[]
wrap?: FlexWrap | FlexWrap[]
}
/**
* @internal
*/
export declare interface ResponsiveFontSizeStyleProps {
$size: number[]
}
/**
* @internal
*/
export declare interface ResponsiveFontStyleProps
extends FontWeightStyleProps,
ResponsiveFontSizeStyleProps,
ResponsiveTextAlignStyleProps {
$accent?: boolean
$muted?: boolean
}
/**
* @public
*/
export declare interface ResponsiveGridItemProps {
column?: GridItemColumn | GridItemColumn[]
columnStart?: GridItemColumnStart | GridItemColumnStart[]
columnEnd?: GridItemColumnEnd | GridItemColumnEnd[]
row?: GridItemRow | GridItemRow[]
rowStart?: GridItemRowStart | GridItemRowStart[]
rowEnd?: GridItemRowEnd | GridItemRowEnd[]
}
/**
* @public
*/
export declare interface ResponsiveGridProps {
autoRows?: GridAutoRows | GridAutoRows[]
autoCols?: GridAutoCols | GridAutoCols[]
autoFlow?: GridAutoFlow | GridAutoFlow[]
columns?: number | number[]
gap?: number | number[]
gapX?: number | number[]
gapY?: number | number[]
rows?: number | number[]
}
/**
* Get responsive CSS for the `heading` font style.
* @internal
*/
export declare function responsiveHeadingFont(
props: ResponsiveFontStyleProps & ThemeProps,
): CSSObject[]
/**
* Get responsive CSS for the `label` font style.
* @internal
*/
export declare function responsiveLabelFont(
props: ResponsiveFontStyleProps & ThemeProps,
): CSSObject[]
/**
* @public
*/
export declare interface ResponsiveMarginProps {
/** Applies margins to all sides. The property is responsive. */
margin?: number | number[]
/** Applies margins to the left and right sides. The property is responsive. */
marginX?: number | number[]
/** Applies margins to the top and bottom sides. The property is responsive. */
marginY?: number | number[]
marginTop?: number | number[]
marginRight?: number | number[]
marginBottom?: number | number[]
marginLeft?: number | number[]
}
/**
* @public
*/
export declare interface ResponsivePaddingProps {
padding?: number | number[]
paddingX?: number | number[]
paddingY?: number | number[]
paddingTop?: number | number[]
paddingRight?: number | number[]
paddingBottom?: number | number[]
paddingLeft?: number | number[]
}
/**
* @public
*/
export declare interface ResponsiveRadiusProps {
radius?: Radius | Radius[]
}
/**
* @public
*/
export declare interface ResponsiveShadowProps {
shadow?: number | number[]
}
/**
* Get responsive text align styles.
* @internal
*/
export declare function responsiveTextAlignStyle(
props: ResponsiveTextAlignStyleProps & ThemeProps,
): CSSObject[]
/**
* @internal
*/
export declare interface ResponsiveTextAlignStyleProps {
$align: TextAlign[]
}
/**
* Get responsive CSS for the `text` font style.
* @internal
*/
export declare function responsiveTextFont(
props: ResponsiveFontStyleProps & ThemeProps,
): CSSObject[]
/**
* @public
*/
export declare interface ResponsiveWidthProps {
width?: number | 'auto' | (number | 'auto')[]
}
/**
* @internal
*/
export declare interface ResponsiveWidthStyleProps {
$width: (number | 'auto')[]
}
/**
* @public
* @deprecated Use `RGB` from `@sanity/ui/theme` instead.
*/
export declare type RGB = RGB_2
/**
* @public
* @deprecated Use `rgba` from `@sanity/ui/theme` instead.
*/
export declare const rgba: typeof rgba_2
/**
* @public
* @deprecated Use `rgbToHex` from `@sanity/ui/theme` instead.
*/
export declare const rgbToHex: typeof rgbToHex_2
/**
* @public
* @deprecated Use `rgbToHsl` from `@sanity/ui/theme` instead.
*/
export declare const rgbToHsl: typeof rgbToHsl_2
/**
* @public
* @deprecated Use `RootTheme` from `@sanity/ui/theme` instead.
*/
export declare type RootTheme = RootTheme_2
/**
* @public
* @deprecated Use `screen` from `@sanity/ui/theme` instead.
*/
declare const screen_2: typeof screen_3
export {screen_2 as screen}
/**
* The `Select` component provides control of options.
*
* @public
*/
export declare const Select: ForwardRefExoticComponent<
Omit<SelectProps & Omit<HTMLProps<HTMLSelectElement>, 'as'>, 'ref'> &
RefAttributes<HTMLSelectElement>
>
/**
* @public
*/
export declare type SelectableTone = ThemeColorStateToneKey
/**
* @public
*/
export declare interface SelectProps {
fontSize?: number | number[]
padding?: number | number[]
radius?: Radius | Radius[]
space?: number | number[]
customValidity?: string
}
/**
* This API might change. DO NOT USE IN PRODUCTION.
* @beta
*/
export declare const Skeleton: ForwardRefExoticComponent<
Omit<SkeletonProps & HTMLProps<HTMLDivElement>, 'ref'> & RefAttributes<HTMLDivElement>
>
/**
* This API might change. DO NOT USE IN PRODUCTION.
* @beta
*/
export declare interface SkeletonProps extends ResponsiveRadiusProps, Omit<BoxProps, 'children'> {
animated?: boolean
delay?: number
}
/**
* Indicate that something is loading for an indeterminate amount of time.
*
* @public
*/
export declare const Spinner: ForwardRefExoticComponent<
Omit<SpinnerProps & Omit<HTMLProps<HTMLDivElement>, 'size' | 'as'>, 'ref'> &
RefAttributes<HTMLDivElement>
>
/**
* @public
*/
export declare interface SpinnerProps {
muted?: boolean
size?: number | number[]
}
/**
* @public
*/
export declare const SrOnly: ForwardRefExoticComponent<
Omit<SrOnlyProps & Omit<HTMLProps<HTMLDivElement>, 'aria-hidden' | 'as'>, 'ref'> &
RefAttributes<HTMLDivElement>
>
/**
* @public
*/
export declare interface SrOnlyProps {
as?: React.ElementType | keyof React.JSX.IntrinsicElements
children?: React.ReactNode
}
/**
* The `Stack` component is used to place elements on top of each other.
*
* @public
*/
export declare const Stack: ForwardRefExoticComponent<
StackProps & Omit<HTMLProps<HTMLDivElement>, 'ref' | 'as'> & RefAttributes<HTMLDivElement>
>
/**
* @public
*/
export declare interface StackProps extends BoxProps {
as?: React.ElementType | keyof React.JSX.IntrinsicElements
space?: number | number[]
}
/**
* @public
* @deprecated Use `buildTheme` from `@sanity/ui/theme` instead.
*/
export declare const studioTheme: BaseTheme_2
/**
* @public
* @deprecated Use `ThemeStyles` from `@sanity/ui/theme` instead.
*/
export declare type Styles = ThemeStyles
/**
* The `Switch` component allows the user to toggle a setting on and off.
*
* Extends all properties of an `<input type="checkbox" />` element, except type.
*
* @public
*/
export declare const Switch: ForwardRefExoticComponent<
Omit<Omit<HTMLProps<HTMLInputElement>, 'type' | 'as'> & SwitchProps, 'ref'> &
RefAttributes<HTMLInputElement>
>
/**
* @public
*/
export declare interface SwitchProps {
indeterminate?: boolean
}
/**
* @public
*/
export declare const Tab: ForwardRefExoticComponent<
Omit<
TabProps &
Omit<
HTMLProps<HTMLButtonElement>,
'label' | 'id' | 'type' | 'width' | 'aria-controls' | 'as'
>,
'ref'
> &
RefAttributes<HTMLButtonElement>
>
/**
* @public
*/
export declare const TabList: ForwardRefExoticComponent<
Omit<TabListProps & Omit<HTMLProps<HTMLDivElement>, 'height' | 'as'>, 'ref'> &
RefAttributes<unknown>
>
/**
* @public
*/
export declare interface TabListProps extends Omit<InlineProps, 'as' | 'height'> {
children: Array<React.JSX.Element | null | undefined | false>
}
/**
* @public
*/
export declare const TabPanel: ForwardRefExoticComponent<
Omit<
TabPanelProps & Omit<HTMLProps<HTMLDivElement>, 'id' | 'role' | 'aria-labelledby' | 'as'>,
'ref'
> &
RefAttributes<HTMLDivElement>
>
/**
* @public
*/
export declare interface TabPanelProps extends BoxProps {
/**
* The `id` of the correlating `Tab` component.
*/
'aria-labelledby': string
'id': string
}
/**
* @public
*/
export declare interface TabProps {
/**
* The `id` of the correlating `TabPanel` component.
*/
'aria-controls': string
'id': string
'icon'?: React.ElementType | React.ReactNode
'focused'?: boolean
'fontSize'?: number | number[]
'label'?: React.ReactNode
'padding'?: number | number[]
'selected'?: boolean
'tone'?: ButtonTone
}
/**
* The `Text` component is an agile, themed typographic element.
*
* @public
*/
declare const Text_2: ForwardRefExoticComponent<
Omit<TextProps & Omit<HTMLProps<HTMLDivElement>, 'size' | 'as'>, 'ref'> &
RefAttributes<HTMLDivElement>
>
export {Text_2 as Text}
/**
* @public
*/
export declare type TextAlign = 'left' | 'right' | 'center' | 'justify' | 'initial'
/**
* A multiline text input.
*
* @public
*/
export declare const TextArea: ForwardRefExoticComponent<
Omit<TextAreaProps & Omit<HTMLProps<HTMLTextAreaElement>, 'as'>, 'ref'> &
RefAttributes<HTMLTextAreaElement>
>
/**
* @public
*/
export declare interface TextAreaP