import type { DeepPartial } from '../types'; import { baseTheme } from './base'; /** * Theme override accepted by `createTheme` and ``. * * Provide a partial theme — only the keys you want to change. The brand color seed * regenerates the full 12-step ramp (plus the 12-step alpha twin) automatically. * * ## Two accepted shapes * * ```ts * // Canonical — matches the `color.brand.*` token vocabulary: * createTheme({ colors: { brand: { base: '#FF6600' } } }); * * // Legacy — kept working for drop-in compatibility with pre-migration consumers: * createTheme({ colors: { primary: { main: '#FF6600' } } }); * ``` * * When both are passed, `colors.brand.base` wins. Prefer the canonical shape in new code. * * ## Multi-tenant usage * * Pass the tenant's brand hex per request to retheme an entire subtree. The brand ramp * regenerates from the hex; every semantic token that references `color.brand.*` re-resolves * via CSS-variable cascade — no Vue re-renders. * * ```vue * * * * ``` */ export type TThemeOverride = DeepPartial & { colors?: { /** * The tenant brand color seed. * * Pass a single hex string — `createTheme` derives the 12-step ramp * (`--color-brand-1` through `--color-brand-12`) plus the 12-step alpha twin * (`--color-brand-a-1` through `--color-brand-a-12`) automatically. * * Step 9 anchors to the input exact, so primary buttons and headers render the * tenant color literally — the rest of the ramp is derived around it for hover * states, subtle backgrounds, focus rings, etc. */ brand?: { base?: string; }; }; }; /** * Builds a theme object from a partial override. * * Returns the merged theme (drop-in compatible with the legacy theme shape via * `useTheme()`) plus a `cssVars` record suitable for inline `style` injection by * ``. The cssVars contain the 12-step brand ramp + 12-step alpha twin * regenerated from the seed hex; they only exist when a brand override was provided. * * Typically you don't call this directly — pass the override prop to `` * which calls `createTheme` internally. Call it directly only when you need the resolved * theme object outside the Vue component tree (e.g. for SSR or for non-Vue consumers). * * @example * ```ts * const theme = createTheme({ colors: { brand: { base: '#FF6600' } } }); * * theme.colors.primary.main; // '#FF6600' (legacy key, still populated) * theme.cssVars; // { '--color-brand-9': '#FF6600', ... } * ``` */ export declare function createTheme(theme?: TThemeOverride): { colors: { primary: { main: string; ultraDark: string; dark: string; toku: string; light1: string; light2: string; light3: string; light4: string; light5: string; }; gray: { main: string; dark2: string; dark3: string; medium1: string; medium2: string; light1: string; light2: string; light3: string; light4: string; }; error: string; success: string; warning: string; inProcess: string; inProcessDark: string; info: string; background: string; }; typography: { color: string; fontFamily: string; buttonTextColor: string; fontWeight: { bold: number; semibold: number; medium: number; regular: number; }; }; button: { borderRadius: string; }; input: { borderRadius: string; }; spacing: string; breakpoints: { mobile: number; desktop: number; }; iconSet: string; parseMarkdown: boolean; } & { cssVars: Record | undefined; }; //# sourceMappingURL=utils.d.ts.map