import type { PlatformBlocksTheme } from './types'; /** * The canonical, component-agnostic variant vocabulary. Chip, Badge, Tabs, Pill, * etc. should all resolve their colors through {@link resolveVariantRoles} so a * `light` chip and a `light` badge read identically on every theme. */ export type VariantRole = 'filled' | 'outline' | 'light' | 'subtle' | 'surface' | 'gradient'; /** Theme color tokens that resolve to a palette; anything else is treated as a raw color. */ export declare const CORE_COLORS: readonly ["primary", "secondary", "success", "warning", "error", "gray"]; export interface VariantRoles { /** Background fill (may be `transparent` or an `rgba()` tint). */ fill: string; /** Border color (may be `transparent`). */ border: string; /** Legible text/icon color for this variant on the current surface. */ text: string; } export interface ResolveVariantOptions { variant?: VariantRole; /** A theme color token (`primary`, `success`, …) or any raw CSS/hex color. */ color?: string; /** * Precomputed gradient stops for the `gradient` variant. Gradient rendering is * component-specific (it depends on an optional LinearGradient dependency), so * the caller supplies the stops and this only picks a legible text color. */ gradientStops?: [string, string]; } /** * Resolve fill / border / text so every variant stays true to its name across the * light and dark schemes and any theme palette or custom color. * * Palettes invert between schemes (light: [0] lightest → [9] darkest; dark: the * reverse), so tinted variants use alpha over the current surface. Text is chosen * by *measured* contrast against the real (composited) background rather than a * fixed palette index, so it stays legible on any theme a consumer supplies. */ export declare const resolveVariantRoles: (theme: PlatformBlocksTheme, { variant, color, gradientStops }?: ResolveVariantOptions) => VariantRoles; /** * The canonical two-stop gradient for the `gradient` variant. Uses a *tight*, * same-hue range — the base color ([5]) deepening to a darker shade ([7]) — so it * reads as subtle depth rather than the dated light→dark "sheen" a wide range * (e.g. [3]→[7]) produces. Every component that renders a gradient should build * its stops here so Button, Badge, Chip, and Card stay visually identical. */ export declare const resolveGradientStops: (theme: PlatformBlocksTheme, color?: string) => [string, string];