import type { ChartSpec } from "./catalog";
/**
* Dependency-free default chart renderer: a validated ChartSpec in, a
* self-contained SVG string out. Pure — no DOM — so it runs server-side or in
* any framework component (call it client-side with the viewer's mode so dark
* themes get the dark-stepped palette, not an automatic flip).
*
* Design method: thin marks with rounded data-ends, 2px surface gaps between
* adjacent fills, recessive horizontal grid, a legend for ≥2 series plus
* direct labels, all text in text tokens (never series colors), native
* hover tooltips per mark. The default palette is the validated reference set
* (worst adjacent CVD ΔE 24.2 light / 10.3 dark) — override `palette` with
* your brand's VALIDATED hues, in their fixed slot order.
*/
export type UiSvgTheme = {
/** Categorical hues in fixed slot order (series 1..n). */
palette: string[];
surface: string;
textPrimary: string;
textSecondary: string;
grid: string;
};
export declare const LIGHT_UI_THEME: UiSvgTheme;
export declare const DARK_UI_THEME: UiSvgTheme;
export type RenderChartSvgOptions = {
mode?: "light" | "dark";
/** Override any theme slot (e.g. your brand palette / chat-bubble surface). */
theme?: Partial;
width?: number;
height?: number;
};
/** Render a validated ChartSpec to a self-contained SVG string. */
export declare const renderChartSvg: (spec: ChartSpec, options?: RenderChartSvgOptions) => string;