import type { CSSProperties, ReactNode } from "react";
export declare const t: {
readonly text: `var(--vendo-color-text, ${string})`;
readonly muted: `var(--vendo-color-muted, ${string})`;
readonly surface: `var(--vendo-color-surface, ${string})`;
readonly background: `var(--vendo-color-background, ${string})`;
readonly accent: string;
readonly accentText: `var(--vendo-color-accent-text, ${string})`;
readonly danger: `var(--vendo-color-danger, ${string})`;
readonly success: `var(--vendo-color-success, ${string})`;
readonly warning: `var(--vendo-color-warning, ${string})`;
readonly info: `var(--vendo-color-info, ${string})`;
readonly border: `var(--vendo-color-border, ${string})`;
readonly surfaceRaised: `var(--vendo-color-surface-raised, color-mix(in srgb, ${string} 92%, ${string}))`;
readonly radiusSmall: `var(--vendo-radius-small, ${string})`;
readonly radiusMedium: `var(--vendo-radius-medium, ${string})`;
readonly radiusLarge: `var(--vendo-radius-large, ${string})`;
readonly borderWidth: `var(--vendo-border-width, ${string})`;
readonly shadowSmall: `var(--vendo-shadow-small, ${string})`;
readonly fontFamily: `var(--vendo-font-family, ${string})`;
readonly headingFamily: `var(--vendo-heading-family, var(--vendo-font-family, ${string}))`;
readonly monoFamily: `var(--vendo-mono-family, ${string})`;
readonly fontSize: `var(--vendo-font-size, ${string})`;
readonly weightNormal: `var(--vendo-font-weight-normal, ${string})`;
readonly weightEmphasis: `var(--vendo-font-weight-emphasis, ${string})`;
readonly letterSpacing: `var(--vendo-letter-spacing, ${string})`;
readonly lineHeight: `var(--vendo-line-height, ${string})`;
readonly lineHeightHeading: `var(--vendo-line-height-heading, ${string})`;
readonly motionDuration: "var(--vendo-motion-duration, 160ms)";
readonly motionEasing: "var(--vendo-motion-easing, cubic-bezier(0.2, 0.8, 0.2, 1))";
};
/**
* What every Kit component takes on top of its own props: inline CSS merged onto
* its ROOT, spread LAST, so a caller's declaration wins over the theme's and
* everything it does not mention keeps painting as it always did. The theme is
* still the default — this is the escape hatch for a specific ask.
*/
export interface KitStyled {
style?: CSSProperties;
}
/**
* What the tree renderer hands EVERY node it paints, on top of the props the
* screen wrote (tree/renderer.tsx `builtinContent`). No component declares them
* as its own — most of the Kit is a leaf, and that is what `KIT_CHILDLESS_NAMES`
* says — but one that passes props through to an engine must name them in its
* signature so they stay out of the passthrough. A void `` handed a child
* takes the whole node down.
*/
export interface KitRendered {
children?: ReactNode;
pending?: boolean;
}
/**
* An engine's own props as the component that renders it exposes them — minus
* three things that are not the caller's to send.
*
* `Own` is everything the component declares itself; `Owned` names the engine
* props it must keep besides (a chart's `dataKey` names the field it plots, so an
* overridden one plots nothing); and {@link KitRendered}'s pair belongs to the
* renderer. A passthrough carries the CALLER's props and only those.
*/
export type KitEngine = Omit;
/**
* The engine props the caller actually GAVE — spread this, never the rest object
* itself. React reads `undefined` as "not provided", and a passthrough has to
* agree: `` with nothing behind it lands an
* `undefined` ON the Kit's theme default and blanks it, and the chart then paints
* in recharts' own blue instead of the host's brand.
*/
export declare const given: (engine: T) => Partial;
/** The ONE edge a Kit component draws. Hairline and low-contrast: borders do the
* work that shadows used to, so almost nothing in the Kit is elevated. */
export declare const hairline: string;
/** Transition the named properties on the host's own motion pair. `motion:
* "reduced"` emits a 0ms duration, so this collapses to nothing with no branch. */
export declare const transitionFor: (...properties: string[]) => string;
/** Figures line up by place value wherever the Kit prints one. */
export declare const numeric: CSSProperties;
/** An IDENTIFIER's face — a sha, a branch, an id, a code. Mono because it is
* read character by character and compared against another one, not read as
* prose; a touch smaller because a mono glyph is wider than the prose it sits
* beside. The host's own code font when it has one (`--vendo-mono-family`). */
export declare const mono: CSSProperties;
/** The structural micro-label: a column header, a caption, a tile's metric name.
* Uppercase and letterspaced so it reads as chrome, never as content. */
export declare const microLabel: CSSProperties;
/** Base text style shared by every Kit component. */
export declare const font: CSSProperties;
/** A form control (input/select) surface. */
export declare const control: CSSProperties;
/** A floating surface — the menu/tooltip/calendar layer, and the one place the
* Kit is allowed to be elevated. */
export declare const popup: CSSProperties;
/** A popup's enter/exit, read off Base UI's own transition status: there is no
* document stylesheet here to hang `[data-starting-style]` on. Never from
* `scale(0)` — the surface shrinks toward its trigger, it does not come out of
* nothing. */
export declare const popupMotion: ({ transitionStatus }: {
transitionStatus?: string;
}) => CSSProperties;
/** The ONE tone vocabulary. Card/Stat's "default" is the older spelling of
* `neutral` and still parses.
*
* `info` is a first-class tone rather than an alias for neutral: a state that is
* neither good news nor bad — "running", "in progress", "pending review" — had
* no word, so it reached for `accent` and painted the brand colour, which reads
* as emphasis and not as a status at all. */
export type KitTone = "neutral" | "accent" | "info" | "success" | "warning" | "danger";
/** The ONE density vocabulary — the host theme's own (`VendoTheme.density`). */
export type KitDensity = "comfortable" | "compact";
/** A tone's foreground, surface and border. Every entry is a token or a
* `color-mix` of tokens. */
export declare const toneStyle: Record;
/** A tone's own color, for text and rules that carry a tone WITHOUT a pill —
* an emphasised Stat, a Card's border, a toned figure in a cell. Total like
* {@link resolveTone}, because this one is exported into code-land too and an
* unknown word must fall back rather than throw on `toneStyle[bogus].color`. */
export declare function toneColor(tone: string | undefined): string;
/**
* Read a tone off a prop. Generated code passes arbitrary strings, so an
* unknown word falls back rather than crashing (the Callout lesson,
* 2026-07-26), and the legacy spelling resolves to what it always meant.
* `Object.hasOwn`, not a bare index: "constructor" is a string too.
*/
export declare function resolveTone(value: string | undefined, fallback?: KitTone): KitTone;
/**
* The density scale as inline custom properties, so a container can re-declare
* it for its own subtree. Every Kit component already reads its padding and
* gaps from these variables, so setting them here is the WHOLE implementation
* of `density` — nothing measures, nothing branches, and a component the
* adjective was never taught about still gets denser.
*/
export declare function densityVars(density: KitDensity | undefined): CSSProperties;
/**
* Recharts-friendly categorical palette: the host's own `chartPalette`, which
* the theme emits as `--vendo-chart-1..6`, falling back entry by entry to the
* accent-derived ramp `chartPaletteFor` builds — so a chart is brand-native on
* any host and never invents a color. The old cycle reached for `muted` and a
* danger×accent mix, which read as slate-purple and rust wedges on a green
* brand.
*/
export declare const chartSeries: readonly string[];
/** Nth series color, wrapping. */
export declare function seriesColor(index: number): string;