import { type CSSProperties } from 'react'; import { type ColorMode } from './DatalayerBrandThemeProvider'; /** Available theme variants. */ export type ThemeVariant = 'datalayer' | 'spatial' | 'lovely' | 'matrix' | 'earth' | 'sand' | 'ivory' | 'sun'; /** A pair of colours for a two-stop gradient. */ export interface GradientPair { /** Start colour (brighter / brand). */ from: string; /** End colour (deeper / hover). */ to: string; } /** * Vivid colour triplet for SVG illustrations. * * Inspired by OpenAI's blog — ultra-saturated, luminous hues designed * to glow and pop against both light and dark backgrounds. */ export interface BrightPalette { /** Primary vivid accent — the "star" glow colour. */ glow: string; /** Optimal text colour for content rendered on a `glow` background. */ onGlow: string; /** Contrasting vivid colour — analogous/complement. */ pop: string; /** Third vivid colour — sparkle / small highlights. */ spark: string; /** Vivid red / warm accent — energy, urgency, warmth. */ blaze: string; /** Vivid blue / cool accent — depth, trust, electricity. */ surge: string; /** Vivid orange — warm energy, fire, dynamism. */ flame: string; /** Vivid yellow / gold — highlights, attention, optimism. */ gold: string; } /** * Complete configuration for a theme, including the Primer theme object, * display metadata, and CSS custom property overrides per color mode. */ export interface ThemeConfig { /** Human-readable name for UI display. */ label: string; /** Short description of the theme. */ description: string; /** Brand color for the theme — used for colored swatch buttons. */ brandColor: string; /** Recommended default color mode for this theme. */ defaultColorMode: ColorMode; /** Primer theme object passed to ``. */ primerTheme: Record; /** Per-mode CSS-property overrides for ``. */ themeStyles: { light: CSSProperties; dark: CSSProperties; }; /** * Per-mode gradient pair for card backgrounds, banners, and other * decorative surfaces that need a themed two-colour gradient. */ cardGradient: { light: GradientPair; dark: GradientPair; }; /** * Vivid colour triplet for SVG illustrations — ultra-saturated, * luminous hues that glow and pop on dark backgrounds (OpenAI-blog style). */ brightPalette: BrightPalette; /** * Deeper / richer bright palette for light backgrounds. * Same hue families as `brightPalette` but with higher contrast on * light surfaces so illustrations don't appear faded. */ brightPaletteLight: BrightPalette; } export declare const themeConfigs: Record; /** All available theme variants in display order. */ export declare const themeVariants: ThemeVariant[]; /** Look up a theme config by variant name. */ export declare function getThemeConfig(variant: ThemeVariant): ThemeConfig; /** * Resolve the card gradient for a given theme variant and colour mode. * Falls back to `datalayer` / `light` when values are missing. */ export declare function getCardGradient(variant?: ThemeVariant, colorMode?: 'light' | 'dark' | 'auto'): GradientPair; /** * Get the bright (vivid / OpenAI-blog-style) palette for a given theme variant. * * When `colorMode` is `'light'` the vivid / saturated light-background palette * is returned — these are punchy, high-saturation colours designed to keep SVG * illustrations vibrant and energetic on near-white surfaces. * When `colorMode` is `'auto'`, the OS preference is queried via * `prefers-color-scheme` so palettes always match the effective background. * Defaults to the dark-optimised neon palette for backward compatibility. */ export declare function getBrightPalette(variant?: ThemeVariant, colorMode?: 'light' | 'dark' | 'auto'): BrightPalette; /** * Get a 5-colour avatar palette for the given theme variant and colour mode. * * Designed for use with the `boring-avatars` library's `colors` prop. * When `colorMode` is `'auto'`, the OS preference is queried via * `prefers-color-scheme` so avatars always match the effective background. * Falls back to `datalayer` / `light` when values are missing. */ export declare function getAvatarColors(variant?: ThemeVariant, colorMode?: 'light' | 'dark' | 'auto'): string[];