@sanity/ui
Version:
The Sanity UI components.
1,501 lines (1,336 loc) • 31.6 kB
text/typescript
import {ColorHueKey} from '@sanity/color'
import {ColorTint} from '@sanity/color'
import {ColorTintKey} from '@sanity/color'
import type {StyledObject} from 'styled-components'
/**
* @public
*/
export declare interface BaseTheme {
_version?: 0
/**
* @deprecated Use `v2.avatar` instead
*/
avatar: ThemeAvatar
/**
* @deprecated Use `v2.button` instead
*/
button: {
textWeight: ThemeFontWeightKey
}
/**
* @deprecated Use `v2.color` instead
*/
color: ThemeColorSchemes
/**
* @deprecated Use `v2.container` instead
*/
container: number[]
/**
* @deprecated Use component-specific `v2.{button | card | input}.focusRing` values instead
*/
focusRing: {
offset: number
width: number
}
/**
* @deprecated Use `v2.font` instead
*/
fonts: ThemeFonts
/**
* @deprecated Use `v2.input` instead
*/
input: ThemeInput
/**
* THIS API MAY BE UNSTABLE. DO NOT USE IN PRODUCTION.
* @beta
* @deprecated Use `v2.layer` instead
*/
layer?: ThemeLayer
/**
* @deprecated Use `v2.media` instead
*/
media: number[]
/**
* @deprecated Use `v2.radius` instead
*/
radius: number[]
/**
* @deprecated Use `v2.shadow` instead
*/
shadows: Array<ThemeShadow | null>
/**
* @deprecated Use `v2.space` instead
*/
space: number[]
/**
* @internal
* @deprecated Use `v2.style` instead
*/
styles?: ThemeStyles
v2?: RootTheme_v2
}
/** @internal */
export declare function buildTheme(config?: ThemeConfig): RootTheme
/** @public */
export declare const COLOR_CONFIG_AVATAR_COLORS: readonly ['*', ...ColorHueKey[]]
/** @public */
export declare const COLOR_CONFIG_BLEND_KEYS: readonly ['_blend']
/** @public */
export declare const COLOR_CONFIG_CARD_KEYS: readonly [
'_hue',
'bg',
'fg',
'border',
'focusRing',
'muted/fg',
'accent/fg',
'link/fg',
'code/bg',
'code/fg',
'skeleton/from',
'skeleton/to',
'status/dot',
'status/icon',
'_hue',
'bg',
'fg',
'border',
'focusRing',
'shadow/outline',
'shadow/umbra',
'shadow/penumbra',
'shadow/ambient',
]
/** @public */
export declare const COLOR_CONFIG_CARD_TONES: readonly [
'*',
'transparent',
'default',
'neutral',
'primary',
'suggest',
'positive',
'caution',
'critical',
]
/** @public */
export declare const COLOR_CONFIG_INPUT_MODES: readonly ['*', 'default', 'invalid']
/** @public */
export declare const COLOR_CONFIG_INPUT_STATES: readonly [
'*',
'enabled',
'hovered',
'readOnly',
'disabled',
]
/** @public */
export declare const COLOR_CONFIG_STATE_KEYS: readonly [
'_hue',
'bg',
'fg',
'border',
'focusRing',
'muted/fg',
'accent/fg',
'link/fg',
'code/bg',
'code/fg',
'skeleton/from',
'skeleton/to',
'status/dot',
'status/icon',
]
/** @public */
export declare const COLOR_CONFIG_STATE_TONES: readonly [
'*',
'default',
'neutral',
'primary',
'suggest',
'positive',
'caution',
'critical',
]
/** @public */
export declare const COLOR_CONFIG_STATES: readonly [
'*',
'enabled',
'hovered',
'pressed',
'selected',
'disabled',
]
/** @public */
export declare type ColorBlendModeTokenValue = [ThemeColorBlendModeKey, ThemeColorBlendModeKey]
/** @public */
export declare type ColorConfigAvatarColor = (typeof COLOR_CONFIG_AVATAR_COLORS)[number]
/** @public */
export declare type ColorConfigBlendKey = (typeof COLOR_CONFIG_BLEND_KEYS)[number]
/** @public */
export declare type ColorConfigCardKey = (typeof COLOR_CONFIG_CARD_KEYS)[number]
/** @public */
export declare type ColorConfigCardTone = (typeof COLOR_CONFIG_CARD_TONES)[number]
/** @public */
export declare type ColorConfigInputMode = (typeof COLOR_CONFIG_INPUT_MODES)[number]
/** @public */
export declare type ColorConfigInputState = (typeof COLOR_CONFIG_INPUT_STATES)[number]
/** @public */
export declare type ColorConfigOpacityValue = `0` | `0.${number}` | `1`
/** @public */
export declare type ColorConfigState = (typeof COLOR_CONFIG_STATES)[number]
/** @public */
export declare type ColorConfigStateKey = (typeof COLOR_CONFIG_STATE_KEYS)[number]
/** @public */
export declare type ColorConfigStateTone = (typeof COLOR_CONFIG_STATE_TONES)[number]
/** @public */
export declare type ColorConfigValue =
| `black`
| `white`
| `black/${ColorConfigOpacityValue}`
| `white/${ColorConfigOpacityValue}`
| `${ColorHueKey}`
| `${ColorHueKey} ${number}%`
| `${ColorHueKey}/${ColorTintKey}`
| `${ColorHueKey}/${ColorTintKey} ${number}%`
| `${ColorHueKey}/${ColorTintKey}/${ColorConfigOpacityValue}`
| `${ColorTintKey}`
| `${ColorTintKey} ${number}%`
| `${ColorTintKey}/${ColorConfigOpacityValue}`
/**
* @public
* @deprecated Use `buildColorTheme` instead.
*/
export declare function createColorTheme(
partialOpts?: PartialThemeColorBuilderOpts,
): ThemeColorSchemes
/**
* Work around types that are missing in `styled-components@6`
* https://github.com/styled-components/styled-components/issues/4062
* @internal
*/
export declare type CSSObject = StyledObject<any>
/** @internal */
export declare function getContrastRatio(bg: string, fg: string): number
/** @internal */
export declare function getScopedTheme(
themeProp: RootTheme | RootTheme_v2,
scheme: ThemeColorSchemeKey,
tone: ThemeColorCardToneKey,
): Theme
/** @public */
export declare function getTheme_v2(theme: Theme): Theme_v2
/**
* @internal
*/
export declare function hexToRgb(hex: string): RGB
/**
* @internal
*/
export declare interface HSL {
h: number
s: number
l: number
}
/**
* @internal
*/
export declare function hslToRgb(hsl: HSL): RGB
/** @internal */
export declare function is_v0(themeProp: RootTheme | RootTheme_v2): themeProp is RootTheme
/** @internal */
export declare function is_v2(themeProp: RootTheme | RootTheme_v2): themeProp is RootTheme_v2
/** @internal */
export declare function isColorBlendModeValue(str: string): str is ThemeColorBlendModeKey
/** @internal */
export declare function isColorButtonMode(str: string): str is ThemeColorButtonModeKey
/** @internal */
export declare function isColorConfigBaseKey(str: string): str is ColorConfigCardKey
/** @internal */
export declare function isColorConfigBaseTone(str: string): str is ColorConfigCardTone
/** @internal */
export declare function isColorConfigBlendKey(str: string): str is ColorConfigBlendKey
/** @internal */
export declare function isColorConfigStateKey(str: string): str is ColorConfigStateKey
/** @internal */
export declare function isColorConfigStateTone(str: string): str is ColorConfigStateTone
/** @internal */
export declare function isColorHueKey(str: string): str is ColorHueKey
/** @internal */
export declare function isColorOpacityValue(str: string): str is ColorConfigOpacityValue
/** @internal */
export declare function isColorTintKey(str: string): str is ColorTintKey
/** @internal */
export declare function isColorTokenValue(str: string): str is ColorConfigValue
/** @internal */
export declare function isColorValue(str: string): str is 'black' | 'white'
/**
* Apply the \`mix\` blend mode
* @internal
*/
export declare function mix(b: RGB | RGBA, s: RGB | RGBA, weight: number): RGB
/**
* Apply the \`multiply\` blend mode
* Source: https://www.w3.org/TR/compositing-1/#blendingmultiply
* @internal
*/
export declare function multiply(b: RGB | RGBA, s: RGB | RGBA): RGB
/**
* @internal
*/
export declare function parseColor(color: unknown): RGB | RGBA
/** @internal */
export declare function parseTokenKey(str: string): TokenKeyNode | undefined
/** @internal */
export declare function parseTokenValue(str: string): TokenValueNode | undefined
/**
* @public
* @deprecated Use `ThemeConfig` instead.
*/
export declare type PartialThemeColorBuilderOpts = Partial<ThemeColorBuilderOpts>
/**
* @internal
*/
export declare interface RGB {
r: number
g: number
b: number
a?: undefined
}
/**
* @internal
*/
export declare interface RGBA {
r: number
g: number
b: number
a: number
}
/**
* @internal
*/
export declare function rgba(color: unknown, a: number): string
/**
* @internal
*/
export declare function rgbaToRGBA(rgba: string): RGBA
/**
* @internal
*/
export declare function rgbToHex(color: RGB | RGBA): string
/**
* @internal
* @see https://css-tricks.com/converting-color-spaces-in-javascript/
*/
export declare function rgbToHsl({r, g, b}: RGB): HSL
/**
* @public
*/
export declare type RootTheme = BaseTheme
/**
* @public
*/
export declare interface RootTheme_v2 {
_version: 2
avatar: ThemeAvatar_v2
button: {
border: {
width: number
}
focusRing: ThemeFocusRing
textWeight: ThemeFontWeightKey
}
card: {
border: {
width: number
}
focusRing: ThemeFocusRing
shadow: {
outline: number
}
}
color: ThemeColorSchemes_v2
container: number[]
font: ThemeFonts
input: ThemeInput_v2
layer: ThemeLayer
media: number[]
radius: number[]
shadow: Array<ThemeShadow | null>
space: number[]
/** @internal */
style?: ThemeStyles
}
/**
* Apply the \`screen\` blend mode
* Source: https://www.w3.org/TR/compositing-1/#blendingscreen
* @internal
*/
declare function screen_2(b: RGB | RGBA, s: RGB | RGBA): RGB
export {screen_2 as screen}
/**
* @public
*/
export declare interface Theme {
sanity: Omit<RootTheme, 'color' | 'v2'> & {
/**
* @deprecated Use `v2.color` instead
*/
color: ThemeColor
v2?: Theme_v2
}
}
/** @public */
export declare const THEME_COLOR_AVATAR_COLORS: ColorHueKey[]
/** @public */
export declare const THEME_COLOR_BLEND_MODES: readonly ['multiply', 'screen']
/** @public */
export declare const THEME_COLOR_BUTTON_MODES: readonly ['default', 'ghost', 'bleed']
/** @public */
export declare const THEME_COLOR_CARD_TONES: readonly [
'transparent',
'default',
'neutral',
'primary',
'suggest',
'positive',
'caution',
'critical',
]
/** @public */
export declare const THEME_COLOR_INPUT_MODES: readonly ['default', 'invalid']
/** @public */
export declare const THEME_COLOR_INPUT_STATES: readonly [
'enabled',
'hovered',
'readOnly',
'disabled',
]
/** @public */
export declare const THEME_COLOR_SCHEMES: readonly ['light', 'dark']
/** @public */
export declare const THEME_COLOR_STATE_TONES: readonly [
'default',
'neutral',
'primary',
'suggest',
'positive',
'caution',
'critical',
]
/** @public */
export declare const THEME_COLOR_STATES: readonly [
'enabled',
'hovered',
'pressed',
'selected',
'disabled',
]
/**
* @public
*/
export declare type Theme_v2 = Omit<RootTheme_v2, 'color'> & {
color: ThemeColorCard_v2
/**
* Indicates whether the theme is resolved or raw, it's necessary to avoid issues
* with sanity V2 components accessing a v1 <ThemeProvider>.
* See https://github.com/sanity-io/ui/pull/1203 for more info.
*/
_resolved: boolean
}
/**
* @public
* @deprecated Use `ThemeAvatar_v2` from `@sanity/ui/theme` instead.
*/
export declare interface ThemeAvatar {
sizes: {
distance: number
size: number
}[]
}
/**
* @public
*/
export declare interface ThemeAvatar_v2 {
sizes: {
/** Spacing between avatars in an <AvatarStack> component (px) */
distance: number
/** Diameter of the avatar (px) */
size: number
}[]
focusRing: ThemeFocusRing
}
/**
* @public
*/
export declare type ThemeBoxShadow = [number, number, number, number]
/**
* @public
* @deprecated Use `ThemeColor_v2` instead.
*/
export declare interface ThemeColor extends Partial<Omit<ThemeColorGenericState, 'muted'>> {
base: ThemeColorBase
button: ThemeColorButton
card: ThemeColorCard
dark: boolean
input: ThemeColorInput
muted: ThemeColorMuted
selectable?: ThemeColorSelectable
solid: ThemeColorSolid
spot: ThemeColorSpot
syntax: ThemeColorSyntax
}
/**
* @public
*/
export declare type ThemeColorAvatar_v2 = Record<ThemeColorAvatarColorKey, ThemeColorAvatarHue_v2>
/** @public */
export declare type ThemeColorAvatarColorKey = (typeof THEME_COLOR_AVATAR_COLORS)[number]
/**
* @public
*/
export declare interface ThemeColorAvatarHue_v2 {
_blend?: ThemeColorBlendModeKey
bg: string
fg: string
}
/** @public */
export declare interface ThemeColorAvatarHueTokens {
_blend?: ColorBlendModeTokenValue
_hue?: ColorHueKey
bg?: ThemeColorTokenValue
fg?: ThemeColorTokenValue
}
/** @public */
export declare interface ThemeColorAvatarTokens {
'*'?: ThemeColorAvatarHueTokens
'gray'?: ThemeColorAvatarHueTokens
'blue'?: ThemeColorAvatarHueTokens
'purple'?: ThemeColorAvatarHueTokens
'magenta'?: ThemeColorAvatarHueTokens
'red'?: ThemeColorAvatarHueTokens
'orange'?: ThemeColorAvatarHueTokens
'yellow'?: ThemeColorAvatarHueTokens
'green'?: ThemeColorAvatarHueTokens
'cyan'?: ThemeColorAvatarHueTokens
}
/**
* @public
*/
export declare type ThemeColorBadge_v2 = Record<ThemeColorStateToneKey, ThemeColorBadgeTone_v2>
/** @public */
export declare type ThemeColorBadgeTokens = Partial<
Record<'*' | ThemeColorStateToneKey, ThemeColorBadgeToneTokens>
>
/**
* @public
*/
export declare interface ThemeColorBadgeTone_v2 {
bg: string
fg: string
dot: string
icon: string
}
/** @public */
export declare interface ThemeColorBadgeToneTokens {
_blend?: ColorBlendModeTokenValue
_hue?: ColorHueKey
bg?: ThemeColorTokenValue
dot?: ThemeColorTokenValue
fg?: ThemeColorTokenValue
icon?: ThemeColorTokenValue
}
/**
* @public
* @deprecated Use `ThemeColorCard_v2` instead.
*/
export declare interface ThemeColorBase {
bg: string
fg: string
border: string
focusRing: string
backdrop?: string
shadow: {
outline: string
umbra: string
penumbra: string
ambient: string
}
skeleton?: {
from: string
to: string
}
}
/** @public */
export declare interface ThemeColorBaseTokens extends ThemeColorStateTokens {
focusRing?: ThemeColorTokenValue
backdrop?: ThemeColorTokenValue
shadow?: {
outline?: ThemeColorTokenValue
umbra?: ThemeColorTokenValue
penumbra?: ThemeColorTokenValue
ambient?: ThemeColorTokenValue
}
}
/** @public */
export declare type ThemeColorBlendModeKey = (typeof THEME_COLOR_BLEND_MODES)[number]
/**
* @public
* @deprecated Use `buildColorTheme` instead.
*/
export declare interface ThemeColorBuilderOpts {
base: (opts: {dark: boolean; name: ThemeColorName}) => ThemeColorBase
solid: (opts: {
base: ThemeColorBase
dark: boolean
tone: ThemeColorName
name: ThemeColorName
state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'
}) => ThemeColorGenericState
muted: (opts: {
base: ThemeColorBase
dark: boolean
tone: ThemeColorToneKey
name: ThemeColorName
state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'
}) => ThemeColorGenericState
card: (opts: {
base: ThemeColorBase
dark: boolean
muted: ThemeColorMuted
name: ThemeColorName
solid: ThemeColorSolid
state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'
}) => ThemeColorGenericState
button: (opts: {
dark: boolean
mode: ThemeColorButtonModeKey
base: ThemeColorBase
solid: ThemeColorSolidTone
muted: ThemeColorMutedTone
}) => ThemeColorButtonStates
input: (opts: {
base: ThemeColorBase
solid: ThemeColorSolidTone
muted: ThemeColorMutedTone
dark: boolean
mode: 'default' | 'invalid'
state: 'enabled' | 'disabled' | 'hovered' | 'readOnly'
}) => ThemeColorInputState
selectable: (opts: {
dark: boolean
base: ThemeColorBase
solid: ThemeColorSolid
muted: ThemeColorMuted
state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'
tone: 'default' | 'primary' | 'positive' | 'caution' | 'critical'
}) => ThemeColorGenericState
syntax: (opts: {base: ThemeColorBase; dark: boolean}) => ThemeColorSyntax
spot: (opts: {base: ThemeColorBase; dark: boolean; key: ThemeColorSpotKey}) => string
}
/**
* @public
* @deprecated Use `ThemeColorButton_v2` instead.
*/
export declare interface ThemeColorButton {
default: ThemeColorButtonTones
ghost: ThemeColorButtonTones
bleed: ThemeColorButtonTones
}
/**
* @public
*/
export declare type ThemeColorButton_v2 = Record<ThemeColorButtonModeKey, ThemeColorButtonMode_v2>
/**
* @public
*/
export declare type ThemeColorButtonMode_v2 = Record<
ThemeColorStateToneKey,
ThemeColorButtonTone_v2
>
/** @public */
export declare type ThemeColorButtonModeKey = (typeof THEME_COLOR_BUTTON_MODES)[number]
/**
* @public
* @deprecated Use `ThemeColorState_v2` instead.
*/
export declare type ThemeColorButtonState = ThemeColorGenericState
/**
* @public
* @deprecated Use `ThemeColorButtonStates_v2` instead.
*/
export declare interface ThemeColorButtonStates {
enabled: ThemeColorGenericState
hovered: ThemeColorGenericState
pressed: ThemeColorGenericState
selected: ThemeColorGenericState
disabled: ThemeColorGenericState
}
/** @public */
export declare interface ThemeColorButtonTokens
extends Partial<Record<ColorConfigStateTone, ThemeColorStatesTokens>> {
_hue?: ColorHueKey
}
/**
* @public
*/
export declare type ThemeColorButtonTone_v2 = Record<ThemeColorStateKey, ThemeColorState_v2>
/**
* TODO: Rename to `ThemeColorButtonMode`.
* @public
* @deprecated Use `ThemeColorButtonTones_v2` instead.
*/
export declare interface ThemeColorButtonTones {
default: ThemeColorButtonStates
primary: ThemeColorButtonStates
positive: ThemeColorButtonStates
caution: ThemeColorButtonStates
critical: ThemeColorButtonStates
}
/**
* @public
* @deprecated Use `ThemeColorSelectable_v2` instead.
*/
export declare interface ThemeColorCard {
enabled: ThemeColorGenericState
hovered: ThemeColorGenericState
pressed: ThemeColorGenericState
selected: ThemeColorGenericState
disabled: ThemeColorGenericState
}
/**
* @public
*/
export declare interface ThemeColorCard_v2 extends ThemeColorState_v2 {
/** @internal */
_blend: ThemeColorBlendModeKey
_dark: boolean
backdrop: string
button: ThemeColorButton_v2
focusRing: string
input: ThemeColorInput_v2
selectable: ThemeColorSelectable_v2
shadow: ThemeColorShadow
syntax: ThemeColorSyntax
}
/**
* @public
* @deprecated Use `ThemeColorState_v2` instead.
*/
export declare type ThemeColorCardState = ThemeColorGenericState
/** @public */
export declare type ThemeColorCardToneKey = (typeof THEME_COLOR_CARD_TONES)[number]
/**
* @public
* @deprecated Use `ThemeColorState_v2` instead.
*/
export declare interface ThemeColorGenericState {
/** @internal */
_blend?: ThemeColorBlendModeKey
bg: string
/**
* @beta
*/
bg2?: string
border: string
fg: string
icon: string
muted: {
fg: string
}
accent: {
fg: string
}
link: {
fg: string
}
code: {
bg: string
fg: string
}
skeleton?: {
from: string
to: string
}
}
/**
* @public
* @deprecated Use `ThemeColorInput_v2` instead.
*/
export declare interface ThemeColorInput {
default: ThemeColorInputStates
invalid: ThemeColorInputStates
}
/**
* @public
*/
export declare type ThemeColorInput_v2 = Record<ThemeColorInputModeKey, ThemeColorInputMode_v2>
/**
* @public
*/
export declare type ThemeColorInputMode_v2 = Record<
ThemeColorInputStateKey,
ThemeColorInputState_v2
>
/** @public */
export declare type ThemeColorInputModeKey = (typeof THEME_COLOR_INPUT_MODES)[number]
/**
* @public
* @deprecated Use `ThemeColorInputState_v2` instead.
*/
export declare interface ThemeColorInputState {
_blend?: ThemeColorBlendModeKey
bg: string
bg2: string
border: string
fg: string
placeholder: string
}
/**
* @public
*/
export declare interface ThemeColorInputState_v2 {
_blend?: ThemeColorBlendModeKey
bg: string
border: string
fg: string
muted: {
bg: string
}
placeholder: string
}
/** @public */
export declare type ThemeColorInputStateKey = (typeof THEME_COLOR_INPUT_STATES)[number]
/**
* @public
* @deprecated Use `ThemeColorInputMode_v2` instead.
*/
export declare interface ThemeColorInputStates {
enabled: ThemeColorInputState
disabled: ThemeColorInputState
hovered: ThemeColorInputState
readOnly: ThemeColorInputState
}
/** @public */
export declare interface ThemeColorInputStateTokens {
_blend?: ColorBlendModeTokenValue
_hue?: ColorHueKey
bg?: ThemeColorTokenValue
border?: ThemeColorTokenValue
fg?: ThemeColorTokenValue
muted?: {
bg?: ThemeColorTokenValue
}
placeholder?: ThemeColorTokenValue
}
/** @public */
export declare interface ThemeColorInputTokens
extends Partial<Record<ColorConfigInputState, ThemeColorInputStateTokens>> {
_hue?: ColorHueKey
}
/**
* @public
*/
export declare interface ThemeColorKBD {
bg: string
fg: string
border: string
}
/**
* @public
* @deprecated Use `ThemeColorSelectable_v2` instead.
*/
export declare interface ThemeColorMuted {
default: ThemeColorMutedTone
transparent: ThemeColorMutedTone
primary: ThemeColorMutedTone
positive: ThemeColorMutedTone
caution: ThemeColorMutedTone
critical: ThemeColorMutedTone
}
/**
* @public
* @deprecated Use `ThemeColorSelectableTone_v2` instead.
*/
export declare interface ThemeColorMutedTone {
enabled: ThemeColorGenericState
disabled: ThemeColorGenericState
hovered: ThemeColorGenericState
pressed: ThemeColorGenericState
selected: ThemeColorGenericState
}
/**
* @public
* @deprecated Use `ThemeColorCardToneKey` instead.
*/
export declare type ThemeColorName =
| 'transparent'
| 'default'
| 'primary'
| 'positive'
| 'caution'
| 'critical'
/** @public */
export declare type ThemeColorPalette = {
black: string | ColorTint
white: string | ColorTint
} & Record<ColorHueKey, Record<ColorTintKey, string | ColorTint>>
/**
* @public
* @deprecated Use `ThemeColorScheme_v2` instead.
*/
export declare type ThemeColorScheme = Record<ThemeColorName, ThemeColor>
/**
* @public
*/
export declare type ThemeColorScheme_v2 = Record<ThemeColorCardToneKey, ThemeColorCard_v2>
/**
* @public
*/
export declare type ThemeColorSchemeKey = (typeof THEME_COLOR_SCHEMES)[number]
/**
* @public
* @deprecated Use `ThemeColorSchemes_v2` instead.
*/
export declare type ThemeColorSchemes = Record<ThemeColorSchemeKey, ThemeColorScheme>
/**
* @public
*/
export declare type ThemeColorSchemes_v2 = Record<ThemeColorSchemeKey, ThemeColorScheme_v2>
/**
* @public
* @deprecated Use `ThemeColorSelectable_v2` instead.
*/
export declare interface ThemeColorSelectable {
default: ThemeColorSelectableStates
primary: ThemeColorSelectableStates
positive: ThemeColorSelectableStates
caution: ThemeColorSelectableStates
critical: ThemeColorSelectableStates
}
/**
* @public
*/
export declare type ThemeColorSelectable_v2 = Record<
ThemeColorStateToneKey,
ThemeColorSelectableTone_v2
>
/**
* @public
* @deprecated Use `ThemeColorState_v2` instead.
*/
export declare type ThemeColorSelectableState = ThemeColorGenericState
/**
* @public
* @deprecated Use `ThemeColorSelectableStates_v2` instead.
*/
export declare interface ThemeColorSelectableStates {
enabled: ThemeColorSelectableState
hovered: ThemeColorSelectableState
pressed: ThemeColorSelectableState
selected: ThemeColorSelectableState
disabled: ThemeColorSelectableState
}
/**
* @public
*/
export declare type ThemeColorSelectableTone_v2 = Record<ThemeColorStateKey, ThemeColorState_v2>
/** @public */
export declare interface ThemeColorShadow {
outline: string
umbra: string
penumbra: string
ambient: string
}
/**
* @public
* @deprecated Use `ThemeColorSelectable_v2` instead.
*/
export declare interface ThemeColorSolid {
default: ThemeColorSolidTone
transparent: ThemeColorSolidTone
primary: ThemeColorSolidTone
positive: ThemeColorSolidTone
caution: ThemeColorSolidTone
critical: ThemeColorSolidTone
}
/**
* @public
* @deprecated Use `ThemeColorSelectableTone_v2` instead.
*/
export declare interface ThemeColorSolidTone {
enabled: ThemeColorGenericState
disabled: ThemeColorGenericState
hovered: ThemeColorGenericState
pressed: ThemeColorGenericState
selected: ThemeColorGenericState
}
/**
* @public
* @deprecated Use `ThemeColorAvatar_v2` instead
*/
export declare type ThemeColorSpot = Record<ThemeColorSpotKey, string>
/**
* @public
* @deprecated Use `ThemeColorAvatarColorKey` instead
*/
export declare type ThemeColorSpotKey = ThemeColorAvatarColorKey
/**
* @public
*/
export declare interface ThemeColorState_v2 {
/** @internal */
_blend?: ThemeColorBlendModeKey
accent: {
fg: string
}
/**
* @internal This may be removed in a future release
* */
avatar: ThemeColorAvatar_v2
/**
* @internal This may be removed in a future release
* */
badge: ThemeColorBadge_v2
bg: string
border: string
code: {
bg: string
fg: string
}
fg: string
icon: string
kbd: ThemeColorKBD
link: {
fg: string
}
muted: {
bg: string
fg: string
}
skeleton: {
from: string
to: string
}
}
/** @public */
export declare type ThemeColorStateKey = (typeof THEME_COLOR_STATES)[number]
/** @public */
export declare type ThemeColorStatesTokens = Partial<
Record<ColorConfigState, ThemeColorStateTokens>
>
/** @public */
export declare interface ThemeColorStateTokens {
_blend?: ColorBlendModeTokenValue
_hue?: ColorHueKey
accent?: {
fg?: ThemeColorTokenValue
}
avatar?: ThemeColorAvatarTokens
badge?: ThemeColorBadgeTokens
bg?: ThemeColorTokenValue
border?: ThemeColorTokenValue
code?: {
bg?: ThemeColorTokenValue
fg?: ThemeColorTokenValue
}
fg?: ThemeColorTokenValue
icon?: ThemeColorTokenValue
kbd?: {
bg?: ThemeColorTokenValue
fg?: ThemeColorTokenValue
border?: ThemeColorTokenValue
}
link?: {
fg?: ThemeColorTokenValue
}
muted?: {
bg?: ThemeColorTokenValue
fg?: ThemeColorTokenValue
}
skeleton?: {
from?: ThemeColorTokenValue
to?: ThemeColorTokenValue
}
}
/** @public */
export declare type ThemeColorStateToneKey = (typeof THEME_COLOR_STATE_TONES)[number]
/**
* @public
*/
export declare interface ThemeColorSyntax {
atrule: string
attrName: string
attrValue: string
attribute: string
boolean: string
builtin: string
cdata: string
char: string
class: string
className: string
comment: string
constant: string
deleted: string
doctype: string
entity: string
function: string
hexcode: string
id: string
important: string
inserted: string
keyword: string
number: string
operator: string
prolog: string
property: string
pseudoClass: string
pseudoElement: string
punctuation: string
regex: string
selector: string
string: string
symbol: string
tag: string
unit: string
url: string
variable: string
}
/** @public */
export declare interface ThemeColorTokens {
base?: Partial<Record<ColorConfigCardTone, ThemeColorBaseTokens>>
button?: Partial<Record<ThemeColorButtonModeKey, ThemeColorButtonTokens>>
input?: Partial<Record<ColorConfigInputMode, ThemeColorInputTokens>>
selectable?: Partial<
Record<
ColorConfigStateTone,
{
_hue?: ColorHueKey
} & ThemeColorStatesTokens
>
>
syntax?: Partial<Record<keyof ThemeColorSyntax, ThemeColorTokenValue>>
}
/** @public */
export declare type ThemeColorTokenValue = [ColorConfigValue, ColorConfigValue]
/**
* @public
* @deprecated Use `ThemeColorCardToneKey` instead.
*/
export declare type ThemeColorToneKey = ThemeColorName
/** @public */
export declare interface ThemeConfig {
avatar?: ThemeAvatar_v2
button?: {
border: {
width: number
}
focusRing: ThemeFocusRing
textWeight: ThemeFontWeightKey
}
card?: {
border: {
width: number
}
focusRing: ThemeFocusRing
shadow: {
outline: number
}
}
color?: ThemeColorTokens
container?: number[]
font?: ThemeFonts
input?: ThemeInput_v2
layer?: ThemeLayer
media?: number[]
palette?: ThemeColorPalette
radius?: number[]
shadow?: Array<ThemeShadow | null>
space?: number[]
/** @internal */
style?: ThemeStyles
}
/**
* @public
*/
export declare interface ThemeFocusRing {
offset: number
width: number
}
/**
* @public
*/
export declare interface ThemeFont {
family: string
weights: ThemeFontWeight
sizes: ThemeFontSize[]
/** @deprecated No longer supported. */
horizontalOffset?: number
}
/**
* @public
*/
export declare type ThemeFontKey = 'code' | 'heading' | 'label' | 'text'
/**
* @public
*/
export declare interface ThemeFonts {
code: ThemeFont
heading: ThemeFont
label: ThemeFont
text: ThemeFont
}
/**
* @public
*/
export declare interface ThemeFontSize {
ascenderHeight: number
descenderHeight: number
fontSize: number
iconSize: number
letterSpacing: number
lineHeight: number
}
/**
* @public
*/
export declare interface ThemeFontWeight {
regular: number
medium: number
semibold: number
bold: number
}
/**
* @public
*/
export declare type ThemeFontWeightKey = 'regular' | 'medium' | 'semibold' | 'bold'
/**
* @public
* @deprecated Use `ThemeInput_v2` instead
*/
export declare interface ThemeInput {
checkbox: {
size: number
}
radio: {
size: number
markSize: number
}
switch: {
width: number
height: number
padding: number
transitionDurationMs: number
transitionTimingFunction: string
}
border: {
width: number
}
}
/**
* @public
*/
export declare interface ThemeInput_v2 {
checkbox: {
size: number
focusRing: ThemeFocusRing
}
radio: {
size: number
markSize: number
focusRing: ThemeFocusRing
}
switch: {
width: number
height: number
padding: number
transitionDurationMs: number
transitionTimingFunction: string
focusRing: ThemeFocusRing
}
border: {
width: number
}
select: {
focusRing: ThemeFocusRing
}
text: {
focusRing: ThemeFocusRing
}
}
/**
* @public
*/
export declare interface ThemeLayer {
dialog: {
zOffset: number
}
popover: {
zOffset: number
}
tooltip: {
zOffset: number
}
}
/**
* @public
*/
export declare interface ThemeShadow {
umbra: ThemeBoxShadow
penumbra: ThemeBoxShadow
ambient: ThemeBoxShadow
}
/**
* @internal
*/
export declare interface ThemeStyles {
button?: {
root?: CSSObject
}
card?: {
root?: CSSObject
}
}
/** @internal */
export declare interface TokenBaseKeyNode {
type: 'base'
tone: ColorConfigCardTone
key: ColorConfigCardKey | ColorConfigBlendKey
}
/** @internal */
export declare interface TokenBlendModeValueNode {
type: 'blendMode'
value?: ThemeColorBlendModeKey
}
/** @internal */
export declare interface TokenButtonKeyNode {
type: 'button'
tone: ColorConfigStateTone
mode: ThemeColorButtonModeKey
key: ColorConfigStateKey | ColorConfigBlendKey
}
/** @internal */
export declare interface TokenColorValueNode {
type: 'color'
key?: 'black' | 'white'
hue?: ColorHueKey
mix?: number
opacity?: number
tint?: ColorTintKey
}
/** @internal */
export declare interface TokenHueValueNode {
type: 'hue'
value?: ColorHueKey
}
/** @internal */
export declare type TokenKeyNode = TokenBaseKeyNode | TokenButtonKeyNode
/** @internal */
export declare type TokenValueNode =
| TokenColorValueNode
| TokenHueValueNode
| TokenBlendModeValueNode
/** @internal */
export declare function v0_v2(v0: RootTheme): RootTheme_v2
/** @internal */
export declare function v2_v0(v2: RootTheme_v2): RootTheme
export {}