export interface OptionalState { selector: string; media?: string; } export interface DefaultState { default: boolean; } export interface Mode { id: string; states: Record; } export type Token = string; export type Value = string; export type Reference = string; export type GlobalValue = Value; export type GlobalReference = Reference; export type ModeValue = Record; export type Assignment = GlobalValue | GlobalReference | ModeValue; export interface Context { id: string; selector: string; tokens: Record; defaultMode?: keyof Mode['states']; } export interface Theme { id: string; selector: string; tokens: Record; modes: Record; tokenModeMap: Record; contexts: Record; referenceTokens?: ReferenceTokens; } /** * Reference tokens enable seed-based palette generation and semantic token organization. */ export interface ReferenceTokens { color?: ColorReferenceTokens; } export interface ColorReferenceTokens { primary?: ColorPaletteInput; neutral?: ColorPaletteInput; error?: ColorPaletteInput; success?: ColorPaletteInput; warning?: ColorPaletteInput; info?: ColorPaletteInput; } export type ColorPaletteInput = string | ReferencePaletteDefinition; export interface ReferencePaletteDefinition extends ColorPalette { seed?: Assignment; } export type ColorPalette = Partial>; /** * Palette steps available across all color types. Different color categories * may use different subsets of these steps. */ export type PaletteStep = 50 | 100 | 150 | 200 | 250 | 300 | 350 | 400 | 450 | 500 | 550 | 600 | 650 | 700 | 750 | 800 | 850 | 900 | 950 | 1000; type Tokens = Partial>; export interface Override { tokens: Tokens; referenceTokens?: ReferenceTokens; contexts?: Record; } export type TypedModeValueOverride = Partial>; /** * A theme preset contains information to render themed components or applying * a theme at runtime. It should only be used internally and not exposed to customers. */ export interface ThemePreset { theme: Theme; secondary?: Theme[]; themeable: Token[]; /** List of public design tokens */ exposed: Token[]; /** Map between design tokens and custom properties */ propertiesMap: Record; /** Map between design tokens and variable names */ variablesMap: Record; } export {};