/** * The ONE theme → CSS-variable mapping (01 §14, 08 §2/§4). It lives here, in * the block every other block may depend on, because three surfaces render the * same theme through three different transports: the ui chrome (a React style * object), the MCP door's HTML pages (a `style` attribute), and the MCP Apps * shim (a `:root{}` declaration block). They used to carry three hand-kept * copies of the mapping — mcp's said so in a comment — and they had already * drifted: the door emitted 16 of the 32 variables the chrome does. Each * consumer now serializes `themeCssVariables()`; nobody restates a name. */ import type { VendoTheme } from "./catalog.js"; /** Deliberately neutral: readable everywhere, branded nowhere. */ export declare const defaultVendoTheme: VendoTheme; /** * The value the mapping fills in for each field the contract marks OPTIONAL, so * one fixed set of variable names is emitted whatever vintage a host's theme * file is — the door, the shim and the chrome compare that set against each * other, and the shim's reverse read throws on a name outside it. * * Deliberately NOT folded into `defaultVendoTheme`: that object is the shape the * MCP Apps shim reconstructs a theme back INTO, and a field the reader cannot * recover would make a theme round-trip into a different theme. The Kit reads * its own unthemed fallbacks off here, so there is still one copy of each value. */ export declare const themeDefaults: { colors: { success: string; warning: string; info: string; surfaceRaised: string; }; typography: { monoFamily: string; weightNormal: string; weightEmphasis: string; letterSpacing: string; lineHeightBody: string; lineHeightHeading: string; }; shadow: { small: string; medium: string; large: string; }; borderWidth: string; motionDuration: string; motionEasing: string; }; /** * The categorical chart palette an accent implies: the accent itself, then * shades and tints that keep its hue (`h`) exactly — so a chart is brand-native * on any host and never invents a color. `chartPalette` replaces the first six * entry by entry (`--vendo-chart-1..6`); the Kit derives its own fallbacks from * this same function, so the two sides cannot drift. */ export declare function chartPaletteFor(accent: string): string[]; /** * The "in progress" color an accent implies — the same idiom as * {@link chartPaletteFor}: the accent's hue (`h`) exactly, at a mid lightness and * eased-off chroma, so a state that is neither good news nor bad is brand-native * on any host and never invents a color. NOT the accent itself: a status painted * in the brand's own colour reads as the primary action, which is the whole * reason a fourth status colour exists. The Kit derives its own fallback from * this same function, so the two sides cannot drift. */ export declare function infoColorFor(accent: string): string; /** Deep-merge a partial theme over a base (one level per contract group). */ export declare function resolveTheme(base: VendoTheme, override?: Partial): VendoTheme; /** * Which `color-scheme` a background color implies (ENG-226). WCAG relative * luminance of `colors.background`, flipped at L = 0.179 — the point where * white text contrasts a background better than black text does. No new * contract token: the scheme is DERIVED, and it drives the existing * `light-dark()` branches in the chrome sheet via `--vendo-color-scheme`. * Unparseable colors (non-hex) fall back to light. */ export declare function colorSchemeForBackground(background: string): "light" | "dark"; /** * The spacing scale one density implies, on its own. * * Split out of `themeCssVariables` because density is no longer only a * page-level setting: a Kit container takes a `density` adjective and re-emits * this same scale on its own element, so the compact table inside a comfortable * page is the SAME compact the host would have got. One ladder, two callers — * a second copy in the Kit would be a scale that drifts. */ export declare function densityCssVariables(density: VendoTheme["density"]): Record; /** Flatten a theme into `--vendo-*` CSS custom properties. Each optional field * resolves against `themeDefaults`, so the NAMES emitted are one fixed set whatever * vintage the host's theme file is — the door, the shim and the chrome compare * that set, and the shim's reverse read rejects a name outside it. */ export declare function themeCssVariables(theme: VendoTheme): Record; /** * Every variable name the mapping can emit — READ OFF the mapping (a probe * theme that sets headingFamily, the one field emitted only when a host declares * it; the rest resolve against the defaults), never hand-listed, so a consumer * that teaches or reads these names cannot fall behind a rename. Two do: * the generation prompt's brand-token line and the MCP Apps shim's reverse * read. */ export declare const VENDO_THEME_VARIABLE_NAMES: readonly string[]; //# sourceMappingURL=theme.d.ts.map