import type { App } from '../App'; import { type UiThemeInput, type UiThemeTokens } from './uiTheme'; import { parseCssPx } from '../theme/themeUtils'; /** * Per-node theme override (Phase 6). * - `'inherit'` / omitted → app theme only * - preset name (e.g. `'violet'`) → UI_PRESETS * - token object → resolveUiTheme input * * Prefer `uiTheme` on dashboard/diagram/UI nodes. * `theme` is accepted for dashboard/diagram only when it is a UI preset or object — * never when it is an automotive preset (`classic` | `sport` | `digital`). */ export type NodeUiThemeProp = 'inherit' | string | UiThemeInput; export type NodeTypography = { text: string; textMuted: string; fontSize: number; fontSizeSm: number; fontSizeLg: number; }; /** Read raw override from props without resolving. */ export declare function readNodeUiThemeProp(props: Record): NodeUiThemeProp | undefined; /** Normalize a raw prop into UiThemeInput, or null for inherit. */ export declare function normalizeNodeUiTheme(raw: NodeUiThemeProp | undefined): UiThemeInput | null; /** * Flat component typography props (highest priority). * `textColor` preferred; `color` is a label-style alias for text fill. */ export declare function flatTypographyFromProps(props?: Record): UiThemeTokens; export declare function hasCustomTextColor(props?: Record): boolean; export declare function hasCustomFontSize(props?: Record): boolean; /** * Effective tokens for a node: app theme ← node uiTheme ← flat typography props. * Component flat props win over uiTheme; uiTheme wins over app. */ export declare function resolveEffectiveUiTokens(app: App | null | undefined, props?: Record): UiThemeTokens; /** * Resolved typography for builders. * Priority: flat props → node uiTheme → app tokens → numeric fallbacks. */ export declare function resolveNodeTypography(app: App | null | undefined, props: Record | undefined, fallbacks: NodeTypography): NodeTypography; /** True when props request a non-inherit node override (uiTheme or flat typography). */ export declare function hasNodeUiThemeOverride(props: Record): boolean; /** @deprecated Use parseCssPx from theme/themeUtils */ export declare const parseFontPx: typeof parseCssPx;