/** * Constraint Application — Narrows shadcn component Zod enums based on brand tokens. * * The core transformation: shadcn's Button accepts z.enum(["primary","secondary","danger"]) * → a brand-constrained catalog narrows it to z.enum(["primary","danger"]) based on * which token roles exist in the graph. * * @module trellis/plugins/brand */ import { z } from 'zod'; /** * Maps component name → { propName: tokenType }. * Only components/props listed here are narrowed; everything else passes through. */ export declare const CONSTRAINT_MAP: Record>; /** * When token role names don't match shadcn enum values 1:1, this map provides * the translation. A role of "destructive" maps to both "destructive" and "danger" * (whichever the shadcn component actually uses). */ export declare const ROLE_ALIASES: Record; /** * Extract enum values from a Zod schema. Handles: * - z.enum([...]) * - z.enum([...]).nullable() * - z.enum([...]).optional() * - z.enum([...]).nullable().optional() * * Returns null if the schema is not an enum type. */ export declare function extractEnumValues(schema: z.ZodType): string[] | null; /** * Narrow an enum to only values that match available token roles. * * @param originalEnum - The full set of enum values from the shadcn component * @param availableRoles - Token roles present in the brand guide * @returns Narrowed enum values. Falls back to first original value if nothing matches. */ export declare function constrainEnum(originalEnum: string[], availableRoles: string[]): string[]; /** * Given a component definition and the available tokens grouped by type, * return a new definition with narrowed Zod enum props. * * If the component has no constraints in CONSTRAINT_MAP, returns the original. */ export declare function constrainComponentDef(componentName: string, def: { props: z.ZodType; [key: string]: unknown; }, tokensByType: Record>): { props: z.ZodType; [key: string]: unknown; }; //# sourceMappingURL=constraints.d.ts.map