/** * Machine-readable prop schema for every registry component — the single source of * truth consumed by the CRM editor and, via the generated `dist/componentSchema.json`, * the compiler's publish-time validation. Supersedes `componentMeta.ts` for prop * schemas (componentMeta stays for the dev ComponentBrowser + presets). `isDirective` * specs (Symbol/Slot/BuildingSlice) are legal in the raw tree but resolved away before * render, so they map to no render component. `Repeat` is NOT a directive: a compile-time * Repeat over `site.buildings` is expanded away by the resolver, but a runtime Repeat over * live `api.*` data survives as a registered Data render component (see registry.ts). */ import type { ComponentAuthoringSpec } from "./authoringContract"; export { AUTHORING_CONTEXTS, AUTHORING_CONTRACT_VERSION, AUTHORING_ROLES, DIAGNOSTIC_CONTRACT_VERSION, DIAGNOSTIC_SEVERITIES, PERFORMANCE_COSTS, } from "./authoringContract"; export type { AuthoringContext, AuthoringDiagnostic, AuthoringRole, AuthoringSuggestedOperation, ComponentAuthoringSpec, DiagnosticSeverity, PerformanceCost, } from "./authoringContract"; export { validateAuthoringTree } from "./authoringValidation"; export { AUTHORING_CONTENT_FIELD_TYPES, AUTHORING_RECIPE_CONTRACT_VERSION, authoringRecipes, validateAuthoringRecipes, } from "./authoringRecipes"; export type { AuthoringContentFieldType, AuthoringRecipe, AuthoringRecipeArtifact, AuthoringRecipeContentField, AuthoringRecipeIssue, } from "./authoringRecipes"; export type { AuthoringValidationOptions, AuthoringValidationResult, } from "./authoringValidation"; /** Bump when the schema shape changes. */ export declare const SCHEMA_VERSION = 37; export declare const PROP_KINDS: readonly ["string", "text", "richtext", "number", "boolean", "enum", "color", "token", "url", "image", "asset", "object", "array", "node"]; export type PropKind = (typeof PROP_KINDS)[number]; export interface BreakingChangeEntry { id: string; summary: string; migration: string; } export interface DeprecationMetadata { sinceVersion: string; /** Earliest UTC date this component/prop may be removed, formatted YYYY-MM-DD. */ removeAfter: string; reason: string; replacement?: string; breakingChange: BreakingChangeEntry; } export interface PropSpec { kind: PropKind; label?: string; default?: unknown; required?: boolean; deprecated?: DeprecationMetadata; /** May take a `{$content}` / `{$data}` binding instead of a literal. */ bindable?: boolean; /** enum */ options?: (string | number | boolean)[]; /** number / string */ min?: number; max?: number; placeholder?: string; /** object: nested field schema */ subFields?: Record; /** array: element schema */ item?: PropSpec; /** node / slot: insertion constraint */ allowedComponents?: string[]; } /** * Authoring taxonomy. `element` / `frame` / `elise-component` are the three * author-facing buckets surfaced in the insert palette (Saved Components are data, * not code, so they have no spec here). `system` = resolver-injected scope/grouping * wrappers + dev-only specs; `directive` = resolver-handled authoring directives. * Neither `system` nor `directive` is user-insertable via the palette. */ export declare const COMPONENT_KINDS: readonly ["element", "frame", "elise-component", "system", "directive"]; export declare const USER_INSERTABLE_COMPONENT_KINDS: readonly ["element", "frame", "elise-component"]; export type ComponentKind = (typeof COMPONENT_KINDS)[number]; export type UserInsertableComponentKind = (typeof USER_INSERTABLE_COMPONENT_KINDS)[number]; export declare function isUserInsertableComponentKind(kind: ComponentKind): kind is UserInsertableComponentKind; export interface ComponentSpec { /** Authoring taxonomy bucket — see ComponentKind. */ kind: ComponentKind; category: string; description: string; deprecated?: DeprecationMetadata; props: Record; acceptsChildren: boolean | { allowedComponents?: string[]; }; /** Consumes live property data (needs a propertyId). */ needsApi?: boolean; /** Resolver-handled authoring directive — must not survive to the rendered tree. */ isDirective?: boolean; /** Machine-readable Atlas composition and repair guidance. */ authoring?: ComponentAuthoringSpec; } /** Whether a component may be offered for new authoring. Deprecated specs stay * in the schema so stored sites can still be inspected, validated, and rendered. */ export declare function isUserInsertableComponent(spec: ComponentSpec): boolean; export declare const responsiveTypographyProp: PropSpec; export declare const buttonPresentationProps: Record; export declare const componentSchema: Record; //# sourceMappingURL=componentSchema.d.ts.map