Navigated to /docs/ui/api/theme

Theme and tokens API

Theme configuration, token generation, runtime mode control, snapshots, subscriptions, and token metadata.

Theme and tokens exports

36 public exports from @tavojs/ui/theme.

@tavojs/ui/theme

Canonical import boundary for every symbol in this section.

buildTheme#

buildTheme(config: TavoUiThemeConfig): ThemeBuildResult

Public function exported from @tavojs/ui/theme.

Related guide

createThemeController#

createThemeController(defaultMode?: ThemeMode | undefined): ThemeController

Public function exported from @tavojs/ui/theme.

Related guide

createThemeControllerFromConfig#

createThemeControllerFromConfig(config: Pick<TavoUiThemeConfig, "defaultTheme">): ThemeController

Public function exported from @tavojs/ui/theme.

Related guide

getTavoUiTokenGroup#

getTavoUiTokenGroup(name: string): TavoUiTokenGroup

Public function exported from @tavojs/ui/theme.

Related guide

getTavoUiTokenMetadata#

getTavoUiTokenMetadata(config?: TavoUiThemeConfig | undefined): TavoUiTokenMetadata[]

Public function exported from @tavojs/ui/theme.

Related guide

getThemeSnapshot#

getThemeSnapshot(controller: ThemeController): ThemeSnapshot

Public function exported from @tavojs/ui/theme.

Related guide

mountThemeController#

mountThemeController(controller: ThemeController): () => void

Public function exported from @tavojs/ui/theme.

Related guide

ResolvedThemeMode#

type ResolvedThemeMode = "light" | "dark";

Public type exported from @tavojs/ui/theme.

Related guide

subscribeTheme#

subscribeTheme(controller: ThemeController, listener: (snapshot: ThemeSnapshot) => void, options?: { immediate?: boolean | undefined; } | undefined): () => void

Public function exported from @tavojs/ui/theme.

Related guide

TavoUiThemeConfig#

type TavoUiThemeConfig = {
    $schema?: string;
    preset?: ThemePreset;
    defaultTheme?: ThemeMode;
    color: ThemeColorConfig;
    scale?: ThemeScaleConfig;
    typography?: ThemeTypographyConfig;
    interaction?: ThemeInteractionConfig;
    viewport?: ThemeViewportConfig;
    breakpoints?: ThemeBreakpointsConfig;
    semantic?: ThemeModeSemanticConfig;
    output?: ThemeOutputConfig;
    accessibility?: ThemeAccessibilityConfig;
    tokens?: ThemeTokenOverrides;
};

Public type exported from @tavojs/ui/theme.

Related guide

TavoUiTokenGroup#

type TavoUiTokenGroup = "color" | "sizing" | "spacing" | "radius" | "border" | "focus" | "motion" | "opacity" | "interaction" | "effects" | "breakpoint" | "typography" | "custom";

Public type exported from @tavojs/ui/theme.

Related guide

tavoUiTokenMetadata#

tavoUiTokenMetadata: readonly TavoUiTokenMetadata[]

Complete built-in Tavo.js UI CSS variable catalog.

Related guide

TavoUiTokenMetadata#

type TavoUiTokenMetadata = {
    name: string;
    cssVariable: `--tui-${string}`;
    group: TavoUiTokenGroup;
};

Public type exported from @tavojs/ui/theme.

Related guide

tavoUiTokenNames#

tavoUiTokenNames: readonly `--tui-${string}`[]

Complete built-in Tavo.js UI CSS variable names.

Related guide

ThemeAccessibilityConfig#

type ThemeAccessibilityConfig = {
    contrast?: "AA" | "AAA";
    failOnViolation?: boolean;
};

Public type exported from @tavojs/ui/theme.

Related guide

ThemeBreakpointsConfig#

type ThemeBreakpointsConfig = {
    sm?: number;
    md?: number;
    lg?: number;
};

Public type exported from @tavojs/ui/theme.

Related guide

ThemeBuildResult#

type ThemeBuildResult = {
    cssText: string;
    modes: Record<ResolvedThemeMode, ThemeResolvedColorSet>;
    staticTokens: Record<string, string>;
    config: TavoUiThemeConfig;
    warnings: string[];
};

Public type exported from @tavojs/ui/theme.

Related guide

ThemeColorConfig#

type ThemeColorConfig = {
    light: ThemeColorPair;
    dark?: Partial<ThemeColorPair>;
    method?: ThemeMethod;
    fixShade?: boolean;
};

Public type exported from @tavojs/ui/theme.

Related guide

ThemeColorPair#

type ThemeColorPair = {
    primary: string;
    secondary?: string;
};

Public type exported from @tavojs/ui/theme.

Related guide

ThemeController#

type ThemeController = {
    store: Store<ThemeRuntimeState>;
    setMode(mode: ThemeMode): void;
    toggleMode(): void;
    syncDocument(): void;
    watchSystem(): () => void;
};

Public type exported from @tavojs/ui/theme.

Related guide

ThemeDensity#

type ThemeDensity = "compact" | "comfortable" | "spacious";

Public type exported from @tavojs/ui/theme.

Related guide

ThemeInteractionConfig#

type ThemeInteractionConfig = {
    hoverLift?: number;
    hoverShadow?: number;
    activeScale?: number;
    focusAlpha?: number;
    disabledOpacity?: number;
    transition?: number;
};

Public type exported from @tavojs/ui/theme.

Related guide

ThemeMethod#

type ThemeMethod = "analogous" | "monochromatic" | "glass";

Public type exported from @tavojs/ui/theme.

Related guide

ThemeMode#

type ThemeMode = "light" | "dark" | "system";

Public type exported from @tavojs/ui/theme.

Related guide

ThemeModeSemanticConfig#

type ThemeModeSemanticConfig = ThemeSemanticConfig & {
    light?: ThemeSemanticConfig;
    dark?: ThemeSemanticConfig;
};

Public type exported from @tavojs/ui/theme.

Related guide

ThemeOutputConfig#

type ThemeOutputConfig = {
    selector?: string;
    darkSelector?: string;
    includeMediaQuery?: boolean;
};

Public type exported from @tavojs/ui/theme.

Related guide

ThemePreset#

type ThemePreset = "minimal" | "glass" | "enterprise" | "editorial" | "dense" | "mobile" | "monochrome";

Public type exported from @tavojs/ui/theme.

Related guide

ThemeRamp#

type ThemeRamp = Record<number, string>;

Public type exported from @tavojs/ui/theme.

Related guide

ThemeResolvedColorSet#

type ThemeResolvedColorSet = {
    primary: ThemeRamp;
    secondary: ThemeRamp;
    neutral: ThemeRamp;
    semantic: Required<ThemeSemanticConfig>;
    tokens: Record<string, string>;
};

Public type exported from @tavojs/ui/theme.

Related guide

ThemeRuntimeState#

type ThemeRuntimeState = {
    mode: ThemeMode;
    resolvedMode: ResolvedThemeMode;
};

Public type exported from @tavojs/ui/theme.

Related guide

ThemeScaleConfig#

type ThemeScaleConfig = {
    unit?: number;
    controlHeight?: number;
    spacing?: number;
    radius?: number;
    shadow?: number;
    border?: number;
    density?: ThemeDensity;
    focus?: number;
    motion?: number;
    opacity?: number;
    blur?: number;
    glassAlpha?: number;
    controlRadius?: number;
    surfaceRadius?: number;
};

Public type exported from @tavojs/ui/theme.

Related guide

ThemeSemanticConfig#

type ThemeSemanticConfig = {
    success?: string;
    warning?: string;
    danger?: string;
    info?: string;
};

Public type exported from @tavojs/ui/theme.

Related guide

ThemeSnapshot#

type ThemeSnapshot = ThemeRuntimeState & {
    setMode(mode: ThemeMode): void;
    toggleMode(): void;
};

Public type exported from @tavojs/ui/theme.

Related guide

ThemeTokenOverrides#

type ThemeTokenOverrides = Partial<Record<ResolvedThemeMode, Record<string, string>>>;

Public type exported from @tavojs/ui/theme.

Related guide

ThemeTypographyConfig#

type ThemeTypographyConfig = {
    fontFamily?: string;
    textFontFamily?: string;
    headingFontFamily?: string;
    bodySize?: number;
    captionSize?: number;
    labelSize?: number;
    headingScale?: number;
};

Public type exported from @tavojs/ui/theme.

Related guide

ThemeViewportConfig#

type ThemeViewportConfig = {
    rootMin?: number;
    rootMax?: number;
    minWidth?: number;
    maxWidth?: number;
};

Public type exported from @tavojs/ui/theme.

Related guide