import type { InputId, InputStrategy, OverrideDiagnostic, SelectionId, SelectionValueShape } from './types'; export type EditorControlType = 'preset-select' | 'hex-input' | 'font-select' | 'token-ref' | 'scale-ref' | 'palette-select'; export type EditorStorageBinding = { readonly kind: 'metadata'; readonly key: 'basePreset'; } | { readonly kind: 'input'; readonly key: InputId; } | { readonly kind: 'selection'; readonly selectionId: SelectionId; }; export interface ControlDefinition { readonly id: string; readonly type: EditorControlType; readonly label: string; readonly description: string; readonly binding: EditorStorageBinding; readonly modeExposure: 'none' | 'linked-only' | 'linked-and-unlinked'; readonly intentBehavior?: 'pin-unpin'; } export interface ResolvedControlDefinition extends ControlDefinition { readonly inputDefinition?: EditorInputCatalogEntry; readonly selectionDefinition?: EditorSelectionCatalogEntry; readonly sourceSet?: EditorSourceSetCatalogEntry; } export interface EditorLayoutSection { readonly id: string; readonly tier: 'default' | 'advanced'; readonly heading?: string; readonly controlIds: readonly string[]; } export interface EditorInputCatalogEntry { readonly id: InputId; readonly valueType: 'color-seed' | 'font-family'; readonly strategy: InputStrategy; } export interface EditorSelectionCatalogEntry { readonly id: SelectionId; readonly sourceSetId?: string; readonly valueShape: SelectionValueShape; readonly modePolicy: 'invariant' | 'mode-capable'; } export interface EditorSourceSetCatalogEntry { readonly id: string; readonly references: readonly string[]; } export interface EditorControlCatalogQueries { readonly getInput: (id: string) => EditorInputCatalogEntry | undefined; readonly getSelection: (id: string) => EditorSelectionCatalogEntry | undefined; readonly getSourceSet: (id: string) => EditorSourceSetCatalogEntry | undefined; } export declare const TARGET_CONTROL_DEFINITIONS: readonly [{ readonly id: "preset"; readonly type: "preset-select"; readonly label: "Preset"; readonly description: "Select the Forge theme personality."; readonly binding: { readonly kind: "metadata"; readonly key: "basePreset"; }; readonly modeExposure: "none"; }, { readonly id: "brand-primary"; readonly type: "hex-input"; readonly label: "Brand color"; readonly description: "Generate the primary Brand scale."; readonly binding: { readonly kind: "input"; readonly key: "brandPrimary"; }; readonly modeExposure: "none"; }, { readonly id: "accent-primary"; readonly type: "hex-input"; readonly label: "Accent color"; readonly description: "Generate the supporting Accent scale."; readonly binding: { readonly kind: "input"; readonly key: "accentPrimary"; }; readonly modeExposure: "none"; }, { readonly id: "display-font"; readonly type: "font-select"; readonly label: "Display font"; readonly description: "Choose an allowed display family for the selected preset."; readonly binding: { readonly kind: "input"; readonly key: "displayFont"; }; readonly modeExposure: "none"; }, { readonly id: "base-primary"; readonly type: "hex-input"; readonly label: "Base color"; readonly description: "Keep Base derived from Brand or pin an independent neutral seed."; readonly binding: { readonly kind: "input"; readonly key: "basePrimary"; }; readonly modeExposure: "none"; readonly intentBehavior: "pin-unpin"; }, { readonly id: "border-radius"; readonly type: "scale-ref"; readonly label: "Border radius"; readonly description: "Choose the default component radius scale."; readonly binding: { readonly kind: "selection"; readonly selectionId: "borderRadius"; }; readonly modeExposure: "none"; }, { readonly id: "button-border-radius"; readonly type: "scale-ref"; readonly label: "Button border radius"; readonly description: "Choose the button radius independently of the default component radius."; readonly binding: { readonly kind: "selection"; readonly selectionId: "buttonBorderRadius"; }; readonly modeExposure: "none"; }, { readonly id: "canvas-background"; readonly type: "token-ref"; readonly label: "Canvas background"; readonly description: "Choose the linked background family source."; readonly binding: { readonly kind: "selection"; readonly selectionId: "surfaceBackground"; }; readonly modeExposure: "linked-only"; }, { readonly id: "primary-surface"; readonly type: "token-ref"; readonly label: "Primary surface"; readonly description: "Choose the linked primary surface family source."; readonly binding: { readonly kind: "selection"; readonly selectionId: "surfacePrimary"; }; readonly modeExposure: "linked-only"; }, { readonly id: "action-surface"; readonly type: "token-ref"; readonly label: "Action"; readonly description: "Choose the linked Action family source, including Focus."; readonly binding: { readonly kind: "selection"; readonly selectionId: "actionSurface"; }; readonly modeExposure: "linked-only"; }, { readonly id: "link-color"; readonly type: "token-ref"; readonly label: "Link"; readonly description: "Choose the linked Link family source."; readonly binding: { readonly kind: "selection"; readonly selectionId: "linkColor"; }; readonly modeExposure: "linked-only"; }, { readonly id: "status-danger"; readonly type: "token-ref"; readonly label: "Danger"; readonly description: "Choose the linked Danger family source."; readonly binding: { readonly kind: "selection"; readonly selectionId: "danger"; }; readonly modeExposure: "linked-only"; }, { readonly id: "status-success"; readonly type: "token-ref"; readonly label: "Success"; readonly description: "Choose the linked Success family source."; readonly binding: { readonly kind: "selection"; readonly selectionId: "success"; }; readonly modeExposure: "linked-only"; }, { readonly id: "status-warning"; readonly type: "token-ref"; readonly label: "Warning"; readonly description: "Choose the linked Warning family source."; readonly binding: { readonly kind: "selection"; readonly selectionId: "warning"; }; readonly modeExposure: "linked-only"; }, { readonly id: "status-info"; readonly type: "token-ref"; readonly label: "Info"; readonly description: "Choose the linked Info family source."; readonly binding: { readonly kind: "selection"; readonly selectionId: "info"; }; readonly modeExposure: "linked-only"; }]; export declare const TARGET_EDITOR_LAYOUT: readonly [{ readonly id: "theme-foundations"; readonly tier: "default"; readonly heading: undefined; readonly controlIds: readonly ["preset", "brand-primary", "accent-primary", "display-font", "base-primary", "border-radius", "button-border-radius"]; }, { readonly id: "semantic-families"; readonly tier: "advanced"; readonly heading: "Advanced customization"; readonly controlIds: readonly ["canvas-background", "primary-surface", "action-surface", "link-color", "status-danger", "status-success", "status-warning", "status-info"]; }]; export declare function resolveControlDefinitions(definitions: readonly ControlDefinition[], catalogs: EditorControlCatalogQueries): readonly ResolvedControlDefinition[]; export declare function validateEditorLayout(definitions: readonly ControlDefinition[], layout: readonly EditorLayoutSection[]): void; export declare function diagnosticsForControl(definition: ControlDefinition, diagnostics: readonly OverrideDiagnostic[]): readonly OverrideDiagnostic[]; //# sourceMappingURL=controls.d.ts.map