{"version":3,"sources":["../../src/design/types.ts","../../src/design/DesignConstraints.ts","../../src/design/templates.ts"],"names":["ConstraintType","ConstraintPriority","LayoutSystem","ColorFormat","WCAGLevel","ValidationSeverity","ConflictStrategy"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Design Constraints Type Definitions\n *\n * Type system for defining and enforcing design constraints in AI-generated designs\n * through prompt engineering.\n */\n\n/**\n * Types of design constraints\n */\nexport enum ConstraintType {\n  LAYOUT = 'layout',\n  COLOR = 'color',\n  TYPOGRAPHY = 'typography',\n  COMPONENT = 'component',\n  ACCESSIBILITY = 'accessibility',\n  SPACING = 'spacing',\n  SIZING = 'sizing',\n  ANIMATION = 'animation',\n  RESPONSIVE = 'responsive',\n  CUSTOM = 'custom',\n}\n\n/**\n * Priority levels for constraints\n */\nexport enum ConstraintPriority {\n  CRITICAL = 'critical',     // Must be followed, validation fails if violated\n  HIGH = 'high',             // Strongly recommended, generates warnings\n  MEDIUM = 'medium',         // Recommended, generates suggestions\n  LOW = 'low',               // Optional, nice to have\n}\n\n/**\n * Layout system types\n */\nexport enum LayoutSystem {\n  GRID = 'grid',\n  FLEXBOX = 'flexbox',\n  STACK = 'stack',\n  ABSOLUTE = 'absolute',\n  FLOAT = 'float',\n}\n\n/**\n * Color format types\n */\nexport enum ColorFormat {\n  HEX = 'hex',\n  RGB = 'rgb',\n  RGBA = 'rgba',\n  HSL = 'hsl',\n  HSLA = 'hsla',\n  NAMED = 'named',\n}\n\n/**\n * WCAG compliance levels\n */\nexport enum WCAGLevel {\n  A = 'A',\n  AA = 'AA',\n  AAA = 'AAA',\n}\n\n/**\n * Base constraint interface\n */\nexport interface BaseConstraint {\n  id: string;\n  type: ConstraintType;\n  name: string;\n  description?: string;\n  priority: ConstraintPriority;\n  enabled: boolean;\n  tags?: string[];\n  metadata?: Record<string, unknown>;\n}\n\n/**\n * Layout constraint definition\n */\nexport interface LayoutConstraint extends BaseConstraint {\n  type: ConstraintType.LAYOUT;\n  rules: {\n    system?: LayoutSystem[];\n    gridColumns?: number | { min: number; max: number };\n    gridGap?: string | number;\n    maxWidth?: string | number;\n    minWidth?: string | number;\n    maxHeight?: string | number;\n    minHeight?: string | number;\n    aspectRatio?: string;\n    alignment?: ('left' | 'center' | 'right' | 'justify')[];\n    direction?: ('row' | 'column' | 'row-reverse' | 'column-reverse')[];\n    wrap?: boolean;\n    customRules?: Record<string, unknown>;\n  };\n}\n\n/**\n * Color palette definition\n */\nexport interface ColorPalette {\n  primary: string[];\n  secondary?: string[];\n  accent?: string[];\n  neutral?: string[];\n  semantic?: {\n    success?: string[];\n    warning?: string[];\n    error?: string[];\n    info?: string[];\n  };\n  custom?: Record<string, string[]>;\n}\n\n/**\n * Color constraint definition\n */\nexport interface ColorConstraint extends BaseConstraint {\n  type: ConstraintType.COLOR;\n  rules: {\n    palette?: ColorPalette;\n    formats?: ColorFormat[];\n    maxColors?: number;\n    minContrast?: number; // WCAG contrast ratio\n    allowedColors?: string[];\n    forbiddenColors?: string[];\n    colorHarmony?: ('monochromatic' | 'analogous' | 'complementary' | 'triadic' | 'tetradic')[];\n    customRules?: Record<string, unknown>;\n  };\n}\n\n/**\n * Typography scale\n */\nexport interface TypographyScale {\n  baseSize: number;\n  ratio: number; // e.g., 1.25 for major third\n  sizes?: {\n    xs?: number;\n    sm?: number;\n    base?: number;\n    lg?: number;\n    xl?: number;\n    '2xl'?: number;\n    '3xl'?: number;\n    '4xl'?: number;\n    [key: string]: number | undefined;\n  };\n}\n\n/**\n * Typography constraint definition\n */\nexport interface TypographyConstraint extends BaseConstraint {\n  type: ConstraintType.TYPOGRAPHY;\n  rules: {\n    fontFamilies?: {\n      heading?: string[];\n      body?: string[];\n      monospace?: string[];\n      custom?: Record<string, string[]>;\n    };\n    scale?: TypographyScale;\n    weights?: number[];\n    lineHeights?: {\n      tight?: number;\n      normal?: number;\n      relaxed?: number;\n      loose?: number;\n      custom?: Record<string, number>;\n    };\n    letterSpacing?: {\n      tight?: string;\n      normal?: string;\n      wide?: string;\n      custom?: Record<string, string>;\n    };\n    maxLevels?: number; // Maximum hierarchy levels\n    customRules?: Record<string, unknown>;\n  };\n}\n\n/**\n * Component size variants\n */\nexport interface ComponentSizes {\n  xs?: { width?: string; height?: string; padding?: string };\n  sm?: { width?: string; height?: string; padding?: string };\n  md?: { width?: string; height?: string; padding?: string };\n  lg?: { width?: string; height?: string; padding?: string };\n  xl?: { width?: string; height?: string; padding?: string };\n  [key: string]: { width?: string; height?: string; padding?: string } | undefined;\n}\n\n/**\n * Component constraint definition\n */\nexport interface ComponentConstraint extends BaseConstraint {\n  type: ConstraintType.COMPONENT;\n  rules: {\n    allowedComponents?: string[];\n    forbiddenComponents?: string[];\n    sizes?: ComponentSizes;\n    variants?: string[];\n    maxNestingLevel?: number;\n    composition?: {\n      maxChildren?: number;\n      allowedChildren?: string[];\n      forbiddenChildren?: string[];\n    };\n    customRules?: Record<string, unknown>;\n  };\n}\n\n/**\n * Accessibility constraint definition\n */\nexport interface AccessibilityConstraint extends BaseConstraint {\n  type: ConstraintType.ACCESSIBILITY;\n  rules: {\n    wcagLevel?: WCAGLevel;\n    minContrast?: number;\n    requireAltText?: boolean;\n    requireAriaLabels?: boolean;\n    keyboardNavigable?: boolean;\n    focusVisible?: boolean;\n    screenReaderOptimized?: boolean;\n    colorBlindSafe?: boolean;\n    minTouchTarget?: number; // in pixels\n    customRules?: Record<string, unknown>;\n  };\n}\n\n/**\n * Spacing system\n */\nexport interface SpacingSystem {\n  base: number;\n  scale?: number[];\n  custom?: Record<string, number>;\n}\n\n/**\n * Spacing constraint definition\n */\nexport interface SpacingConstraint extends BaseConstraint {\n  type: ConstraintType.SPACING;\n  rules: {\n    system?: SpacingSystem;\n    minSpacing?: number;\n    maxSpacing?: number;\n    consistent?: boolean; // Enforce consistent spacing\n    customRules?: Record<string, unknown>;\n  };\n}\n\n/**\n * Custom constraint definition\n */\nexport interface CustomConstraint extends BaseConstraint {\n  type: ConstraintType.CUSTOM;\n  rules: Record<string, unknown>;\n  validator?: (design: unknown) => ValidationResult;\n  promptGenerator?: (rules: Record<string, unknown>) => string[];\n}\n\n/**\n * Union type for all constraints\n */\nexport type Constraint =\n  | LayoutConstraint\n  | ColorConstraint\n  | TypographyConstraint\n  | ComponentConstraint\n  | AccessibilityConstraint\n  | SpacingConstraint\n  | CustomConstraint;\n\n/**\n * Validation severity levels\n */\nexport enum ValidationSeverity {\n  ERROR = 'error',\n  WARNING = 'warning',\n  INFO = 'info',\n  SUCCESS = 'success',\n}\n\n/**\n * Validation issue\n */\nexport interface ValidationIssue {\n  constraintId: string;\n  constraintType: ConstraintType;\n  severity: ValidationSeverity;\n  message: string;\n  path?: string; // Path to the violating element\n  expected?: unknown;\n  actual?: unknown;\n  suggestion?: string;\n}\n\n/**\n * Validation result\n */\nexport interface ValidationResult {\n  valid: boolean;\n  score: number; // 0-100, percentage of constraints met\n  issues: ValidationIssue[];\n  summary: {\n    total: number;\n    passed: number;\n    failed: number;\n    warnings: number;\n  };\n  metadata?: Record<string, unknown>;\n}\n\n/**\n * Prompt instruction format\n */\nexport interface PromptInstruction {\n  section: string;\n  priority: ConstraintPriority;\n  instructions: string[];\n  examples?: string[];\n  metadata?: Record<string, unknown>;\n}\n\n/**\n * Constraint template\n */\nexport interface ConstraintTemplate {\n  id: string;\n  name: string;\n  description: string;\n  category: string;\n  version: string;\n  author?: string;\n  constraints: Constraint[];\n  metadata?: Record<string, unknown>;\n}\n\n/**\n * Conditional constraint\n */\nexport interface ConditionalConstraint {\n  condition: {\n    property: string;\n    operator: 'equals' | 'notEquals' | 'contains' | 'greaterThan' | 'lessThan' | 'matches';\n    value: unknown;\n  };\n  thenConstraints: Constraint[];\n  elseConstraints?: Constraint[];\n}\n\n/**\n * Constraint set configuration\n */\nexport interface ConstraintSetConfig {\n  name: string;\n  description?: string;\n  baseTemplate?: string; // Template ID to extend\n  constraints: Constraint[];\n  conditionalConstraints?: ConditionalConstraint[];\n  strict?: boolean; // Fail validation on any error\n  allowPartial?: boolean; // Allow partial compliance\n  metadata?: Record<string, unknown>;\n}\n\n/**\n * Conflict resolution strategy\n */\nexport enum ConflictStrategy {\n  OVERRIDE = 'override',         // Later constraint overrides earlier\n  MERGE = 'merge',               // Merge constraint rules\n  STRICT = 'strict',             // Fail on conflicts\n  PRIORITIZE = 'prioritize',     // Use higher priority constraint\n  IGNORE_DUPLICATES = 'ignore_duplicates', // Skip duplicate constraints\n}\n\n/**\n * Merge options\n */\nexport interface MergeOptions {\n  strategy: ConflictStrategy;\n  preserveIds?: boolean;\n  mergeTags?: boolean;\n  mergeMetadata?: boolean;\n}\n\n/**\n * Natural language constraint input\n */\nexport interface NaturalLanguageConstraint {\n  description: string;\n  type?: ConstraintType;\n  priority?: ConstraintPriority;\n  examples?: string[];\n}\n\n/**\n * Constraint parsing result\n */\nexport interface ConstraintParseResult {\n  success: boolean;\n  constraints: Constraint[];\n  errors?: string[];\n  warnings?: string[];\n  confidence?: number; // 0-1\n}\n\n/**\n * Design output for validation\n */\nexport interface DesignOutput {\n  components?: unknown[];\n  styles?: Record<string, unknown>;\n  layout?: unknown;\n  colors?: string[];\n  typography?: unknown;\n  metadata?: Record<string, unknown>;\n  [key: string]: unknown;\n}\n\n/**\n * Prompt generation options\n */\nexport interface PromptGenerationOptions {\n  format?: 'structured' | 'natural' | 'mixed';\n  includeExamples?: boolean;\n  groupByType?: boolean;\n  priorityThreshold?: ConstraintPriority;\n  maxLength?: number;\n  template?: string;\n}\n\n","/**\n * Design Constraints System\n *\n * Define and enforce design constraints in AI-generated designs through\n * prompt engineering and validation.\n */\n\nimport {\n  Constraint,\n  ConstraintType,\n  ConstraintPriority,\n  ConstraintSetConfig,\n  ValidationResult,\n  ValidationIssue,\n  ValidationSeverity,\n  PromptInstruction,\n  PromptGenerationOptions,\n  DesignOutput,\n  MergeOptions,\n  ConflictStrategy,\n  LayoutConstraint,\n  ColorConstraint,\n  TypographyConstraint,\n  ComponentConstraint,\n  AccessibilityConstraint,\n  SpacingConstraint,\n  CustomConstraint,\n  NaturalLanguageConstraint,\n  ConstraintParseResult,\n  ConditionalConstraint,\n  WCAGLevel,\n} from './types';\n\n/**\n * Design Constraints Class\n *\n * Main class for managing design constraints, generating prompt instructions,\n * and validating AI-generated designs.\n */\nexport class DesignConstraints {\n  private constraints: Map<string, Constraint>;\n  private conditionalConstraints: ConditionalConstraint[];\n  private config: ConstraintSetConfig;\n\n  constructor(config: ConstraintSetConfig) {\n    this.config = config;\n    this.constraints = new Map();\n    this.conditionalConstraints = config.conditionalConstraints || [];\n\n    // Initialize constraints\n    config.constraints.forEach((constraint) => {\n      this.constraints.set(constraint.id, constraint);\n    });\n  }\n\n  /**\n   * Define a new constraint\n   */\n  public defineConstraint(constraint: Constraint): void {\n    this.constraints.set(constraint.id, constraint);\n  }\n\n  /**\n   * Define a layout constraint\n   */\n  public defineLayoutConstraint(\n    id: string,\n    rules: LayoutConstraint['rules'],\n    options: Partial<Omit<LayoutConstraint, 'type' | 'rules'>> = {}\n  ): LayoutConstraint {\n    const constraint: LayoutConstraint = {\n      id,\n      type: ConstraintType.LAYOUT,\n      name: options.name || 'Layout Constraint',\n      priority: options.priority || ConstraintPriority.MEDIUM,\n      enabled: options.enabled !== undefined ? options.enabled : true,\n      description: options.description,\n      tags: options.tags,\n      metadata: options.metadata,\n      rules,\n    };\n\n    this.defineConstraint(constraint);\n    return constraint;\n  }\n\n  /**\n   * Define a color constraint\n   */\n  public defineColorConstraint(\n    id: string,\n    rules: ColorConstraint['rules'],\n    options: Partial<Omit<ColorConstraint, 'type' | 'rules'>> = {}\n  ): ColorConstraint {\n    const constraint: ColorConstraint = {\n      id,\n      type: ConstraintType.COLOR,\n      name: options.name || 'Color Constraint',\n      priority: options.priority || ConstraintPriority.MEDIUM,\n      enabled: options.enabled !== undefined ? options.enabled : true,\n      description: options.description,\n      tags: options.tags,\n      metadata: options.metadata,\n      rules,\n    };\n\n    this.defineConstraint(constraint);\n    return constraint;\n  }\n\n  /**\n   * Define a typography constraint\n   */\n  public defineTypographyConstraint(\n    id: string,\n    rules: TypographyConstraint['rules'],\n    options: Partial<Omit<TypographyConstraint, 'type' | 'rules'>> = {}\n  ): TypographyConstraint {\n    const constraint: TypographyConstraint = {\n      id,\n      type: ConstraintType.TYPOGRAPHY,\n      name: options.name || 'Typography Constraint',\n      priority: options.priority || ConstraintPriority.MEDIUM,\n      enabled: options.enabled !== undefined ? options.enabled : true,\n      description: options.description,\n      tags: options.tags,\n      metadata: options.metadata,\n      rules,\n    };\n\n    this.defineConstraint(constraint);\n    return constraint;\n  }\n\n  /**\n   * Define a component constraint\n   */\n  public defineComponentConstraint(\n    id: string,\n    rules: ComponentConstraint['rules'],\n    options: Partial<Omit<ComponentConstraint, 'type' | 'rules'>> = {}\n  ): ComponentConstraint {\n    const constraint: ComponentConstraint = {\n      id,\n      type: ConstraintType.COMPONENT,\n      name: options.name || 'Component Constraint',\n      priority: options.priority || ConstraintPriority.MEDIUM,\n      enabled: options.enabled !== undefined ? options.enabled : true,\n      description: options.description,\n      tags: options.tags,\n      metadata: options.metadata,\n      rules,\n    };\n\n    this.defineConstraint(constraint);\n    return constraint;\n  }\n\n  /**\n   * Define an accessibility constraint\n   */\n  public defineAccessibilityConstraint(\n    id: string,\n    rules: AccessibilityConstraint['rules'],\n    options: Partial<Omit<AccessibilityConstraint, 'type' | 'rules'>> = {}\n  ): AccessibilityConstraint {\n    const constraint: AccessibilityConstraint = {\n      id,\n      type: ConstraintType.ACCESSIBILITY,\n      name: options.name || 'Accessibility Constraint',\n      priority: options.priority || ConstraintPriority.HIGH,\n      enabled: options.enabled !== undefined ? options.enabled : true,\n      description: options.description,\n      tags: options.tags,\n      metadata: options.metadata,\n      rules,\n    };\n\n    this.defineConstraint(constraint);\n    return constraint;\n  }\n\n  /**\n   * Define a spacing constraint\n   */\n  public defineSpacingConstraint(\n    id: string,\n    rules: SpacingConstraint['rules'],\n    options: Partial<Omit<SpacingConstraint, 'type' | 'rules'>> = {}\n  ): SpacingConstraint {\n    const constraint: SpacingConstraint = {\n      id,\n      type: ConstraintType.SPACING,\n      name: options.name || 'Spacing Constraint',\n      priority: options.priority || ConstraintPriority.MEDIUM,\n      enabled: options.enabled !== undefined ? options.enabled : true,\n      description: options.description,\n      tags: options.tags,\n      metadata: options.metadata,\n      rules,\n    };\n\n    this.defineConstraint(constraint);\n    return constraint;\n  }\n\n  /**\n   * Define a custom constraint\n   */\n  public defineCustomConstraint(\n    id: string,\n    rules: Record<string, unknown>,\n    options: Partial<Omit<CustomConstraint, 'type' | 'rules'>> = {}\n  ): CustomConstraint {\n    const constraint: CustomConstraint = {\n      id,\n      type: ConstraintType.CUSTOM,\n      name: options.name || 'Custom Constraint',\n      priority: options.priority || ConstraintPriority.MEDIUM,\n      enabled: options.enabled !== undefined ? options.enabled : true,\n      description: options.description,\n      tags: options.tags,\n      metadata: options.metadata,\n      rules,\n      validator: options.validator,\n      promptGenerator: options.promptGenerator,\n    };\n\n    this.defineConstraint(constraint);\n    return constraint;\n  }\n\n  /**\n   * Parse natural language constraint\n   */\n  public parseNaturalLanguage(input: NaturalLanguageConstraint): ConstraintParseResult {\n    const constraints: Constraint[] = [];\n    const errors: string[] = [];\n    const warnings: string[] = [];\n\n    try {\n      // Simple pattern matching for common constraint types\n      const description = input.description.toLowerCase();\n\n      // Layout constraints\n      if (description.includes('grid') || description.includes('column')) {\n        const gridMatch = description.match(/(\\d+)\\s*columns?/);\n        if (gridMatch && gridMatch[1]) {\n          const columns = parseInt(gridMatch[1], 10);\n          constraints.push(\n            this.defineLayoutConstraint(\n              `nl_layout_${Date.now()}`,\n              { gridColumns: columns },\n              { priority: input.priority || ConstraintPriority.MEDIUM }\n            )\n          );\n        }\n      }\n\n      // Color constraints\n      if (description.includes('color') || description.includes('palette')) {\n        const colorMatch = description.match(/#[0-9a-f]{6}/gi);\n        if (colorMatch) {\n          constraints.push(\n            this.defineColorConstraint(\n              `nl_color_${Date.now()}`,\n              { allowedColors: colorMatch },\n              { priority: input.priority || ConstraintPriority.MEDIUM }\n            )\n          );\n        }\n      }\n\n      // Typography constraints\n      if (description.includes('font') || description.includes('typography')) {\n        const fontMatch = description.match(/(?:use|font-family:?)\\s*['\"]([^'\"]+)['\"]/i);\n        if (fontMatch && fontMatch[1]) {\n          constraints.push(\n            this.defineTypographyConstraint(\n              `nl_typography_${Date.now()}`,\n              { fontFamilies: { body: [fontMatch[1]] } },\n              { priority: input.priority || ConstraintPriority.MEDIUM }\n            )\n          );\n        }\n      }\n\n      // Accessibility constraints\n      if (description.includes('accessible') || description.includes('wcag') || description.includes('a11y')) {\n        const wcagMatch = description.match(/wcag\\s*(a{1,3})/i);\n        const level = wcagMatch?.[1] ? (wcagMatch[1].toUpperCase() as WCAGLevel) : WCAGLevel.AA;\n        constraints.push(\n          this.defineAccessibilityConstraint(\n            `nl_a11y_${Date.now()}`,\n            { wcagLevel: level, requireAltText: true, requireAriaLabels: true },\n            { priority: input.priority || ConstraintPriority.HIGH }\n          )\n        );\n      }\n\n      if (constraints.length === 0) {\n        warnings.push('Could not extract specific constraints from description');\n        // Create a generic custom constraint\n        constraints.push(\n          this.defineCustomConstraint(\n            `nl_custom_${Date.now()}`,\n            { description: input.description },\n            { priority: input.priority || ConstraintPriority.LOW }\n          )\n        );\n      }\n\n      return {\n        success: true,\n        constraints,\n        warnings: warnings.length > 0 ? warnings : undefined,\n        confidence: constraints.length > 1 ? 0.8 : 0.5,\n      };\n    } catch (error) {\n      errors.push(`Failed to parse constraint: ${error instanceof Error ? error.message : String(error)}`);\n      return {\n        success: false,\n        constraints: [],\n        errors,\n      };\n    }\n  }\n\n  /**\n   * Convert constraints to prompt instructions\n   */\n  public toPromptInstructions(options: PromptGenerationOptions = {}): PromptInstruction[] {\n    const {\n      format = 'structured',\n      includeExamples = true,\n      groupByType = true,\n      priorityThreshold = ConstraintPriority.LOW,\n      maxLength,\n    } = options;\n\n    const instructions: PromptInstruction[] = [];\n    const enabledConstraints = Array.from(this.constraints.values()).filter(\n      (c) => c.enabled && this.isPriorityAtLeast(c.priority, priorityThreshold)\n    );\n\n    if (groupByType) {\n      const grouped = this.groupByType(enabledConstraints);\n\n      for (const [type, constraints] of Array.from(grouped.entries())) {\n        const section = this.getTypeSectionName(type);\n        const sectionInstructions: string[] = [];\n\n        for (const constraint of constraints) {\n          const constraintInstructions = this.generateConstraintInstructions(constraint, format);\n          sectionInstructions.push(...constraintInstructions);\n        }\n\n        if (sectionInstructions.length > 0) {\n          const highestPriority = this.getHighestPriority(constraints);\n          instructions.push({\n            section,\n            priority: highestPriority,\n            instructions: maxLength\n              ? sectionInstructions.slice(0, maxLength)\n              : sectionInstructions,\n            examples: includeExamples ? this.generateExamples(type, constraints) : undefined,\n          });\n        }\n      }\n    } else {\n      const allInstructions: string[] = [];\n      for (const constraint of enabledConstraints) {\n        const constraintInstructions = this.generateConstraintInstructions(constraint, format);\n        allInstructions.push(...constraintInstructions);\n      }\n\n      instructions.push({\n        section: 'Design Constraints',\n        priority: this.getHighestPriority(enabledConstraints),\n        instructions: maxLength ? allInstructions.slice(0, maxLength) : allInstructions,\n      });\n    }\n\n    return instructions;\n  }\n\n  /**\n   * Generate constraint instructions based on format\n   */\n  private generateConstraintInstructions(\n    constraint: Constraint,\n    format: 'structured' | 'natural' | 'mixed'\n  ): string[] {\n    const instructions: string[] = [];\n\n    switch (constraint.type) {\n      case ConstraintType.LAYOUT:\n        instructions.push(...this.generateLayoutInstructions(constraint, format));\n        break;\n      case ConstraintType.COLOR:\n        instructions.push(...this.generateColorInstructions(constraint, format));\n        break;\n      case ConstraintType.TYPOGRAPHY:\n        instructions.push(...this.generateTypographyInstructions(constraint, format));\n        break;\n      case ConstraintType.COMPONENT:\n        instructions.push(...this.generateComponentInstructions(constraint, format));\n        break;\n      case ConstraintType.ACCESSIBILITY:\n        instructions.push(...this.generateAccessibilityInstructions(constraint, format));\n        break;\n      case ConstraintType.SPACING:\n        instructions.push(...this.generateSpacingInstructions(constraint, format));\n        break;\n      case ConstraintType.CUSTOM:\n        instructions.push(...this.generateCustomInstructions(constraint, format));\n        break;\n    }\n\n    return instructions;\n  }\n\n  /**\n   * Generate layout instructions\n   */\n  private generateLayoutInstructions(\n    constraint: LayoutConstraint,\n    format: string\n  ): string[] {\n    const instructions: string[] = [];\n    const { rules } = constraint;\n\n    if (format === 'natural' || format === 'mixed') {\n      if (rules.system) {\n        instructions.push(`Use ${rules.system.join(' or ')} layout system`);\n      }\n      if (rules.gridColumns) {\n        const cols = typeof rules.gridColumns === 'number'\n          ? rules.gridColumns\n          : `${rules.gridColumns.min}-${rules.gridColumns.max}`;\n        instructions.push(`Layout should use ${cols} columns`);\n      }\n      if (rules.maxWidth) {\n        instructions.push(`Maximum width should be ${rules.maxWidth}`);\n      }\n    }\n\n    if (format === 'structured' || format === 'mixed') {\n      if (rules.system) {\n        instructions.push(`LAYOUT_SYSTEM: ${rules.system.join(', ')}`);\n      }\n      if (rules.gridColumns) {\n        instructions.push(`GRID_COLUMNS: ${JSON.stringify(rules.gridColumns)}`);\n      }\n      if (rules.gridGap) {\n        instructions.push(`GRID_GAP: ${rules.gridGap}`);\n      }\n      if (rules.alignment) {\n        instructions.push(`ALIGNMENT: ${rules.alignment.join(', ')}`);\n      }\n    }\n\n    return instructions;\n  }\n\n  /**\n   * Generate color instructions\n   */\n  private generateColorInstructions(\n    constraint: ColorConstraint,\n    format: string\n  ): string[] {\n    const instructions: string[] = [];\n    const { rules } = constraint;\n\n    if (format === 'natural' || format === 'mixed') {\n      if (rules.palette) {\n        instructions.push(`Use color palette: primary colors ${rules.palette.primary.join(', ')}`);\n        if (rules.palette.secondary) {\n          instructions.push(`Secondary colors: ${rules.palette.secondary.join(', ')}`);\n        }\n      }\n      if (rules.minContrast) {\n        instructions.push(`Maintain minimum contrast ratio of ${rules.minContrast}:1 for accessibility`);\n      }\n      if (rules.allowedColors) {\n        instructions.push(`Only use these colors: ${rules.allowedColors.join(', ')}`);\n      }\n    }\n\n    if (format === 'structured' || format === 'mixed') {\n      if (rules.palette) {\n        instructions.push(`COLOR_PALETTE: ${JSON.stringify(rules.palette)}`);\n      }\n      if (rules.minContrast) {\n        instructions.push(`MIN_CONTRAST: ${rules.minContrast}`);\n      }\n      if (rules.maxColors) {\n        instructions.push(`MAX_COLORS: ${rules.maxColors}`);\n      }\n    }\n\n    return instructions;\n  }\n\n  /**\n   * Generate typography instructions\n   */\n  private generateTypographyInstructions(\n    constraint: TypographyConstraint,\n    format: string\n  ): string[] {\n    const instructions: string[] = [];\n    const { rules } = constraint;\n\n    if (format === 'natural' || format === 'mixed') {\n      if (rules.fontFamilies) {\n        if (rules.fontFamilies.heading) {\n          instructions.push(`Use ${rules.fontFamilies.heading.join(' or ')} for headings`);\n        }\n        if (rules.fontFamilies.body) {\n          instructions.push(`Use ${rules.fontFamilies.body.join(' or ')} for body text`);\n        }\n      }\n      if (rules.scale) {\n        instructions.push(`Typography scale: base ${rules.scale.baseSize}px with ${rules.scale.ratio} ratio`);\n      }\n      if (rules.maxLevels) {\n        instructions.push(`Maximum ${rules.maxLevels} heading levels`);\n      }\n    }\n\n    if (format === 'structured' || format === 'mixed') {\n      if (rules.fontFamilies) {\n        instructions.push(`FONT_FAMILIES: ${JSON.stringify(rules.fontFamilies)}`);\n      }\n      if (rules.scale) {\n        instructions.push(`TYPOGRAPHY_SCALE: ${JSON.stringify(rules.scale)}`);\n      }\n      if (rules.weights) {\n        instructions.push(`FONT_WEIGHTS: ${rules.weights.join(', ')}`);\n      }\n    }\n\n    return instructions;\n  }\n\n  /**\n   * Generate component instructions\n   */\n  private generateComponentInstructions(\n    constraint: ComponentConstraint,\n    format: string\n  ): string[] {\n    const instructions: string[] = [];\n    const { rules } = constraint;\n\n    if (format === 'natural' || format === 'mixed') {\n      if (rules.allowedComponents) {\n        instructions.push(`Only use these components: ${rules.allowedComponents.join(', ')}`);\n      }\n      if (rules.forbiddenComponents) {\n        instructions.push(`Do not use: ${rules.forbiddenComponents.join(', ')}`);\n      }\n      if (rules.maxNestingLevel) {\n        instructions.push(`Maximum nesting depth: ${rules.maxNestingLevel} levels`);\n      }\n    }\n\n    if (format === 'structured' || format === 'mixed') {\n      if (rules.allowedComponents) {\n        instructions.push(`ALLOWED_COMPONENTS: ${rules.allowedComponents.join(', ')}`);\n      }\n      if (rules.sizes) {\n        instructions.push(`COMPONENT_SIZES: ${JSON.stringify(rules.sizes)}`);\n      }\n      if (rules.variants) {\n        instructions.push(`VARIANTS: ${rules.variants.join(', ')}`);\n      }\n    }\n\n    return instructions;\n  }\n\n  /**\n   * Generate accessibility instructions\n   */\n  private generateAccessibilityInstructions(\n    constraint: AccessibilityConstraint,\n    format: string\n  ): string[] {\n    const instructions: string[] = [];\n    const { rules } = constraint;\n\n    if (format === 'natural' || format === 'mixed') {\n      if (rules.wcagLevel) {\n        instructions.push(`Follow WCAG ${rules.wcagLevel} accessibility standards`);\n      }\n      if (rules.requireAltText) {\n        instructions.push('All images must have descriptive alt text');\n      }\n      if (rules.requireAriaLabels) {\n        instructions.push('Interactive elements must have ARIA labels');\n      }\n      if (rules.keyboardNavigable) {\n        instructions.push('Ensure all interactive elements are keyboard navigable');\n      }\n      if (rules.minTouchTarget) {\n        instructions.push(`Minimum touch target size: ${rules.minTouchTarget}px`);\n      }\n    }\n\n    if (format === 'structured' || format === 'mixed') {\n      instructions.push(`WCAG_LEVEL: ${rules.wcagLevel || 'AA'}`);\n      if (rules.minContrast) {\n        instructions.push(`MIN_CONTRAST: ${rules.minContrast}`);\n      }\n      if (rules.minTouchTarget) {\n        instructions.push(`MIN_TOUCH_TARGET: ${rules.minTouchTarget}px`);\n      }\n    }\n\n    return instructions;\n  }\n\n  /**\n   * Generate spacing instructions\n   */\n  private generateSpacingInstructions(\n    constraint: SpacingConstraint,\n    format: string\n  ): string[] {\n    const instructions: string[] = [];\n    const { rules } = constraint;\n\n    if (format === 'natural' || format === 'mixed') {\n      if (rules.system) {\n        instructions.push(`Use ${rules.system.base}px base spacing with scale: ${rules.system.scale?.join(', ')}`);\n      }\n      if (rules.consistent) {\n        instructions.push('Maintain consistent spacing throughout the design');\n      }\n    }\n\n    if (format === 'structured' || format === 'mixed') {\n      if (rules.system) {\n        instructions.push(`SPACING_SYSTEM: ${JSON.stringify(rules.system)}`);\n      }\n      if (rules.minSpacing) {\n        instructions.push(`MIN_SPACING: ${rules.minSpacing}px`);\n      }\n      if (rules.maxSpacing) {\n        instructions.push(`MAX_SPACING: ${rules.maxSpacing}px`);\n      }\n    }\n\n    return instructions;\n  }\n\n  /**\n   * Generate custom instructions\n   */\n  private generateCustomInstructions(\n    constraint: CustomConstraint,\n    format: string\n  ): string[] {\n    if (constraint.promptGenerator) {\n      return constraint.promptGenerator(constraint.rules);\n    }\n\n    return [\n      format === 'structured'\n        ? `CUSTOM: ${JSON.stringify(constraint.rules)}`\n        : constraint.description || 'Apply custom constraint',\n    ];\n  }\n\n  /**\n   * Validate design output against constraints\n   */\n  public validateOutput(design: DesignOutput): ValidationResult {\n    const issues: ValidationIssue[] = [];\n    let totalConstraints = 0;\n    let passedConstraints = 0;\n\n    const enabledConstraints = Array.from(this.constraints.values()).filter((c) => c.enabled);\n\n    for (const constraint of enabledConstraints) {\n      totalConstraints++;\n      const constraintIssues = this.validateConstraint(constraint, design);\n\n      if (constraintIssues.length === 0) {\n        passedConstraints++;\n      } else {\n        issues.push(...constraintIssues);\n      }\n    }\n\n    // Evaluate conditional constraints\n    for (const conditional of this.conditionalConstraints) {\n      if (this.evaluateCondition(conditional.condition, design)) {\n        for (const constraint of conditional.thenConstraints) {\n          totalConstraints++;\n          const constraintIssues = this.validateConstraint(constraint, design);\n          if (constraintIssues.length === 0) {\n            passedConstraints++;\n          } else {\n            issues.push(...constraintIssues);\n          }\n        }\n      } else if (conditional.elseConstraints) {\n        for (const constraint of conditional.elseConstraints) {\n          totalConstraints++;\n          const constraintIssues = this.validateConstraint(constraint, design);\n          if (constraintIssues.length === 0) {\n            passedConstraints++;\n          } else {\n            issues.push(...constraintIssues);\n          }\n        }\n      }\n    }\n\n    const failedConstraints = totalConstraints - passedConstraints;\n    const warnings = issues.filter((i) => i.severity === ValidationSeverity.WARNING).length;\n    const score = totalConstraints > 0 ? (passedConstraints / totalConstraints) * 100 : 100;\n    const valid = this.config.strict ? issues.length === 0 : failedConstraints === 0;\n\n    return {\n      valid,\n      score: Math.round(score * 100) / 100,\n      issues,\n      summary: {\n        total: totalConstraints,\n        passed: passedConstraints,\n        failed: failedConstraints,\n        warnings,\n      },\n    };\n  }\n\n  /**\n   * Validate a single constraint\n   */\n  private validateConstraint(constraint: Constraint, design: DesignOutput): ValidationIssue[] {\n    const issues: ValidationIssue[] = [];\n\n    switch (constraint.type) {\n      case ConstraintType.LAYOUT:\n        issues.push(...this.validateLayoutConstraint(constraint, design));\n        break;\n      case ConstraintType.COLOR:\n        issues.push(...this.validateColorConstraint(constraint, design));\n        break;\n      case ConstraintType.TYPOGRAPHY:\n        issues.push(...this.validateTypographyConstraint(constraint, design));\n        break;\n      case ConstraintType.COMPONENT:\n        issues.push(...this.validateComponentConstraint(constraint, design));\n        break;\n      case ConstraintType.ACCESSIBILITY:\n        issues.push(...this.validateAccessibilityConstraint(constraint, design));\n        break;\n      case ConstraintType.SPACING:\n        issues.push(...this.validateSpacingConstraint(constraint, design));\n        break;\n      case ConstraintType.CUSTOM:\n        issues.push(...this.validateCustomConstraint(constraint, design));\n        break;\n    }\n\n    return issues;\n  }\n\n  /**\n   * Validate layout constraint\n   */\n  private validateLayoutConstraint(\n    constraint: LayoutConstraint,\n    design: DesignOutput\n  ): ValidationIssue[] {\n    const issues: ValidationIssue[] = [];\n    const { rules } = constraint;\n\n    if (rules.gridColumns && design.layout) {\n      const layout = design.layout as { columns?: number };\n      if (layout.columns) {\n        const expected = typeof rules.gridColumns === 'number'\n          ? rules.gridColumns\n          : { min: rules.gridColumns.min, max: rules.gridColumns.max };\n\n        if (typeof expected === 'number' && layout.columns !== expected) {\n          issues.push({\n            constraintId: constraint.id,\n            constraintType: constraint.type,\n            severity: this.getSeverity(constraint.priority),\n            message: `Layout should have ${expected} columns`,\n            path: 'layout.columns',\n            expected,\n            actual: layout.columns,\n          });\n        } else if (typeof expected !== 'number') {\n          if (layout.columns < expected.min || layout.columns > expected.max) {\n            issues.push({\n              constraintId: constraint.id,\n              constraintType: constraint.type,\n              severity: this.getSeverity(constraint.priority),\n              message: `Layout columns should be between ${expected.min} and ${expected.max}`,\n              path: 'layout.columns',\n              expected,\n              actual: layout.columns,\n            });\n          }\n        }\n      }\n    }\n\n    return issues;\n  }\n\n  /**\n   * Validate color constraint\n   */\n  private validateColorConstraint(\n    constraint: ColorConstraint,\n    design: DesignOutput\n  ): ValidationIssue[] {\n    const issues: ValidationIssue[] = [];\n    const { rules } = constraint;\n\n    if (rules.allowedColors && design.colors) {\n      const disallowedColors = design.colors.filter(\n        (color) => !rules.allowedColors!.includes(color)\n      );\n\n      if (disallowedColors.length > 0) {\n        issues.push({\n          constraintId: constraint.id,\n          constraintType: constraint.type,\n          severity: this.getSeverity(constraint.priority),\n          message: `Design uses disallowed colors: ${disallowedColors.join(', ')}`,\n          path: 'colors',\n          expected: rules.allowedColors,\n          actual: design.colors,\n        });\n      }\n    }\n\n    if (rules.maxColors && design.colors && design.colors.length > rules.maxColors) {\n      issues.push({\n        constraintId: constraint.id,\n        constraintType: constraint.type,\n        severity: this.getSeverity(constraint.priority),\n        message: `Design uses too many colors (${design.colors.length} > ${rules.maxColors})`,\n        path: 'colors',\n        expected: rules.maxColors,\n        actual: design.colors.length,\n      });\n    }\n\n    return issues;\n  }\n\n  /**\n   * Validate typography constraint\n   */\n  private validateTypographyConstraint(\n    constraint: TypographyConstraint,\n    design: DesignOutput\n  ): ValidationIssue[] {\n    const issues: ValidationIssue[] = [];\n    const { rules } = constraint;\n\n    if (rules.fontFamilies && design.typography) {\n      const typography = design.typography as { fontFamily?: string };\n      if (typography.fontFamily) {\n        const allAllowedFonts = [\n          ...(rules.fontFamilies.body || []),\n          ...(rules.fontFamilies.heading || []),\n          ...(rules.fontFamilies.monospace || []),\n        ];\n\n        if (!allAllowedFonts.some((font) => typography.fontFamily?.includes(font))) {\n          issues.push({\n            constraintId: constraint.id,\n            constraintType: constraint.type,\n            severity: this.getSeverity(constraint.priority),\n            message: 'Font family not in allowed list',\n            path: 'typography.fontFamily',\n            expected: allAllowedFonts,\n            actual: typography.fontFamily,\n          });\n        }\n      }\n    }\n\n    return issues;\n  }\n\n  /**\n   * Validate component constraint\n   */\n  private validateComponentConstraint(\n    constraint: ComponentConstraint,\n    design: DesignOutput\n  ): ValidationIssue[] {\n    const issues: ValidationIssue[] = [];\n    const { rules } = constraint;\n\n    if (rules.allowedComponents && design.components) {\n      const components = design.components as Array<{ type: string }>;\n      const disallowedComponents = components.filter(\n        (comp) => !rules.allowedComponents!.includes(comp.type)\n      );\n\n      if (disallowedComponents.length > 0) {\n        issues.push({\n          constraintId: constraint.id,\n          constraintType: constraint.type,\n          severity: this.getSeverity(constraint.priority),\n          message: `Design uses disallowed components: ${disallowedComponents.map((c) => c.type).join(', ')}`,\n          path: 'components',\n          expected: rules.allowedComponents,\n          actual: disallowedComponents.map((c) => c.type),\n        });\n      }\n    }\n\n    return issues;\n  }\n\n  /**\n   * Validate accessibility constraint\n   */\n  private validateAccessibilityConstraint(\n    constraint: AccessibilityConstraint,\n    design: DesignOutput\n  ): ValidationIssue[] {\n    const issues: ValidationIssue[] = [];\n    const { rules } = constraint;\n\n    if (rules.requireAltText && design.components) {\n      const components = design.components as Array<{ type: string; alt?: string }>;\n      const imagesWithoutAlt = components.filter(\n        (comp) => comp.type === 'image' && !comp.alt\n      );\n\n      if (imagesWithoutAlt.length > 0) {\n        issues.push({\n          constraintId: constraint.id,\n          constraintType: constraint.type,\n          severity: ValidationSeverity.ERROR,\n          message: `${imagesWithoutAlt.length} images missing alt text`,\n          path: 'components',\n          suggestion: 'Add descriptive alt text to all images',\n        });\n      }\n    }\n\n    return issues;\n  }\n\n  /**\n   * Validate spacing constraint\n   */\n  private validateSpacingConstraint(\n    _constraint: SpacingConstraint,\n    _design: DesignOutput\n  ): ValidationIssue[] {\n    const issues: ValidationIssue[] = [];\n    // Spacing validation would require deep inspection of styles\n    // This is a simplified example\n    return issues;\n  }\n\n  /**\n   * Validate custom constraint\n   */\n  private validateCustomConstraint(\n    constraint: CustomConstraint,\n    design: DesignOutput\n  ): ValidationIssue[] {\n    if (constraint.validator) {\n      const result = constraint.validator(design);\n      return result.issues;\n    }\n    return [];\n  }\n\n  /**\n   * Merge constraints from another set\n   */\n  public merge(other: DesignConstraints, options: MergeOptions = { strategy: ConflictStrategy.MERGE }): DesignConstraints {\n    const mergedConfig: ConstraintSetConfig = {\n      name: `${this.config.name} + ${other.config.name}`,\n      description: `Merged from ${this.config.name} and ${other.config.name}`,\n      constraints: [],\n      conditionalConstraints: [\n        ...this.conditionalConstraints,\n        ...(other.conditionalConstraints || []),\n      ],\n    };\n\n    const mergedConstraints = new Map<string, Constraint>(this.constraints);\n\n    for (const [id, constraint] of Array.from(other.constraints)) {\n      if (mergedConstraints.has(id)) {\n        // Handle conflict\n        const existing = mergedConstraints.get(id)!;\n        const resolved = this.resolveConflict(existing, constraint, options.strategy);\n        mergedConstraints.set(id, resolved);\n      } else {\n        mergedConstraints.set(id, constraint);\n      }\n    }\n\n    mergedConfig.constraints = Array.from(mergedConstraints.values());\n\n    return new DesignConstraints(mergedConfig);\n  }\n\n  /**\n   * Extend base constraints\n   */\n  public extend(base: DesignConstraints): DesignConstraints {\n    const extendedConfig: ConstraintSetConfig = {\n      name: `${base.config.name} (Extended)`,\n      baseTemplate: base.config.name,\n      constraints: [\n        ...Array.from(base.constraints.values()),\n        ...Array.from(this.constraints.values()),\n      ],\n      conditionalConstraints: [\n        ...(base.conditionalConstraints || []),\n        ...this.conditionalConstraints,\n      ],\n    };\n\n    return new DesignConstraints(extendedConfig);\n  }\n\n  /**\n   * Get constraint by ID\n   */\n  public getConstraint(id: string): Constraint | undefined {\n    return this.constraints.get(id);\n  }\n\n  /**\n   * Get all constraints\n   */\n  public getAllConstraints(): Constraint[] {\n    return Array.from(this.constraints.values());\n  }\n\n  /**\n   * Get constraints by type\n   */\n  public getConstraintsByType(type: ConstraintType): Constraint[] {\n    return Array.from(this.constraints.values()).filter((c) => c.type === type);\n  }\n\n  /**\n   * Remove constraint\n   */\n  public removeConstraint(id: string): boolean {\n    return this.constraints.delete(id);\n  }\n\n  /**\n   * Enable/disable constraint\n   */\n  public setConstraintEnabled(id: string, enabled: boolean): void {\n    const constraint = this.constraints.get(id);\n    if (constraint) {\n      constraint.enabled = enabled;\n    }\n  }\n\n  /**\n   * Get constraint count\n   */\n  public getConstraintCount(): number {\n    return this.constraints.size;\n  }\n\n  /**\n   * Clear all constraints\n   */\n  public clear(): void {\n    this.constraints.clear();\n  }\n\n  // Helper methods\n\n  private groupByType(constraints: Constraint[]): Map<ConstraintType, Constraint[]> {\n    const grouped = new Map<ConstraintType, Constraint[]>();\n\n    for (const constraint of constraints) {\n      if (!grouped.has(constraint.type)) {\n        grouped.set(constraint.type, []);\n      }\n      grouped.get(constraint.type)!.push(constraint);\n    }\n\n    return grouped;\n  }\n\n  private getTypeSectionName(type: ConstraintType): string {\n    const names: Record<ConstraintType, string> = {\n      [ConstraintType.LAYOUT]: 'Layout Constraints',\n      [ConstraintType.COLOR]: 'Color Constraints',\n      [ConstraintType.TYPOGRAPHY]: 'Typography Constraints',\n      [ConstraintType.COMPONENT]: 'Component Constraints',\n      [ConstraintType.ACCESSIBILITY]: 'Accessibility Constraints',\n      [ConstraintType.SPACING]: 'Spacing Constraints',\n      [ConstraintType.SIZING]: 'Sizing Constraints',\n      [ConstraintType.ANIMATION]: 'Animation Constraints',\n      [ConstraintType.RESPONSIVE]: 'Responsive Constraints',\n      [ConstraintType.CUSTOM]: 'Custom Constraints',\n    };\n\n    return names[type];\n  }\n\n  private getHighestPriority(constraints: Constraint[]): ConstraintPriority {\n    const priorityOrder = [\n      ConstraintPriority.CRITICAL,\n      ConstraintPriority.HIGH,\n      ConstraintPriority.MEDIUM,\n      ConstraintPriority.LOW,\n    ];\n\n    for (const priority of priorityOrder) {\n      if (constraints.some((c) => c.priority === priority)) {\n        return priority;\n      }\n    }\n\n    return ConstraintPriority.MEDIUM;\n  }\n\n  private isPriorityAtLeast(priority: ConstraintPriority, threshold: ConstraintPriority): boolean {\n    const order = {\n      [ConstraintPriority.CRITICAL]: 4,\n      [ConstraintPriority.HIGH]: 3,\n      [ConstraintPriority.MEDIUM]: 2,\n      [ConstraintPriority.LOW]: 1,\n    };\n\n    return order[priority] >= order[threshold];\n  }\n\n  private getSeverity(priority: ConstraintPriority): ValidationSeverity {\n    const severityMap: Record<ConstraintPriority, ValidationSeverity> = {\n      [ConstraintPriority.CRITICAL]: ValidationSeverity.ERROR,\n      [ConstraintPriority.HIGH]: ValidationSeverity.ERROR,\n      [ConstraintPriority.MEDIUM]: ValidationSeverity.WARNING,\n      [ConstraintPriority.LOW]: ValidationSeverity.INFO,\n    };\n\n    return severityMap[priority];\n  }\n\n  private generateExamples(type: ConstraintType, _constraints: Constraint[]): string[] | undefined {\n    // Generate examples based on constraint type\n    const examples: string[] = [];\n\n    switch (type) {\n      case ConstraintType.LAYOUT:\n        examples.push('Example: <div className=\"grid grid-cols-12 gap-4\">');\n        break;\n      case ConstraintType.COLOR:\n        examples.push('Example: background-color: #3B82F6; color: #FFFFFF;');\n        break;\n      case ConstraintType.TYPOGRAPHY:\n        examples.push('Example: font-family: \"Inter\", sans-serif; font-size: 16px;');\n        break;\n    }\n\n    return examples.length > 0 ? examples : undefined;\n  }\n\n  private resolveConflict(\n    existing: Constraint,\n    incoming: Constraint,\n    strategy: ConflictStrategy\n  ): Constraint {\n    switch (strategy) {\n      case ConflictStrategy.OVERRIDE:\n        return incoming;\n      case ConflictStrategy.MERGE:\n        return {\n          ...existing,\n          rules: { ...existing.rules, ...incoming.rules } as any,\n          tags: [...(existing.tags || []), ...(incoming.tags || [])],\n          metadata: { ...existing.metadata, ...incoming.metadata },\n        } as Constraint;\n      case ConflictStrategy.PRIORITIZE:\n        return this.isPriorityAtLeast(incoming.priority, existing.priority)\n          ? incoming\n          : existing;\n      case ConflictStrategy.IGNORE_DUPLICATES:\n        return existing;\n      case ConflictStrategy.STRICT:\n        throw new Error(`Conflict detected for constraint ${existing.id}`);\n      default:\n        return existing;\n    }\n  }\n\n  private evaluateCondition(\n    condition: ConditionalConstraint['condition'],\n    design: DesignOutput\n  ): boolean {\n    const value = this.getValueByPath(design, condition.property);\n\n    switch (condition.operator) {\n      case 'equals':\n        return value === condition.value;\n      case 'notEquals':\n        return value !== condition.value;\n      case 'contains':\n        return Array.isArray(value) && value.includes(condition.value);\n      case 'greaterThan':\n        return typeof value === 'number' && typeof condition.value === 'number' && value > condition.value;\n      case 'lessThan':\n        return typeof value === 'number' && typeof condition.value === 'number' && value < condition.value;\n      case 'matches':\n        return typeof value === 'string' && typeof condition.value === 'string' && new RegExp(condition.value).test(value);\n      default:\n        return false;\n    }\n  }\n\n  private getValueByPath(obj: unknown, path: string): unknown {\n    const parts = path.split('.');\n    let current: unknown = obj;\n\n    for (const part of parts) {\n      if (current && typeof current === 'object' && part in current) {\n        current = (current as Record<string, unknown>)[part];\n      } else {\n        return undefined;\n      }\n    }\n\n    return current;\n  }\n}\n","/**\n * Design Constraint Templates\n *\n * Pre-built constraint templates for common design systems and frameworks\n */\n\nimport { DesignConstraints } from './DesignConstraints';\nimport {\n  ConstraintSetConfig,\n  ConstraintPriority,\n  LayoutSystem,\n  ColorFormat,\n  WCAGLevel,\n  ConstraintTemplate,\n} from './types';\n\n/**\n * Material Design 3 constraint template\n */\nexport function createMaterialDesignTemplate(): DesignConstraints {\n  const config: ConstraintSetConfig = {\n    name: 'Material Design 3',\n    description: 'Google Material Design 3 design system constraints',\n    constraints: [],\n  };\n\n  const constraints = new DesignConstraints(config);\n\n  // Layout constraints\n  constraints.defineLayoutConstraint(\n    'material-layout',\n    {\n      system: [LayoutSystem.GRID, LayoutSystem.FLEXBOX],\n      gridColumns: 12,\n      gridGap: '16px',\n      maxWidth: '1200px',\n    },\n    {\n      name: 'Material Layout',\n      description: 'Material Design 3 layout system with 12-column grid',\n      priority: ConstraintPriority.HIGH,\n    }\n  );\n\n  // Color constraints\n  constraints.defineColorConstraint(\n    'material-color',\n    {\n      palette: {\n        primary: ['#6750A4', '#7F67BE', '#9A82DB', '#B69DF8'],\n        secondary: ['#625B71', '#7A7289', '#958DA5', '#B0A7C0'],\n        accent: ['#7D5260', '#986977', '#B58392', '#D29DAC'],\n        neutral: ['#1C1B1F', '#49454F', '#79747E', '#CAC4D0', '#E6E1E5', '#F4EFF4', '#FFFBFE'],\n        semantic: {\n          success: ['#006E1C', '#4C8400', '#6D9900'],\n          warning: ['#7D5700', '#9F6A00', '#C47F00'],\n          error: ['#BA1A1A', '#DE3730', '#FF5449'],\n          info: ['#0061A4', '#0078C9', '#5491F5'],\n        },\n      },\n      formats: [ColorFormat.HEX, ColorFormat.RGB],\n      minContrast: 4.5,\n      colorHarmony: ['analogous', 'complementary'],\n    },\n    {\n      name: 'Material Color System',\n      description: 'Material Design 3 color palette with dynamic color',\n      priority: ConstraintPriority.HIGH,\n    }\n  );\n\n  // Typography constraints\n  constraints.defineTypographyConstraint(\n    'material-typography',\n    {\n      fontFamilies: {\n        heading: ['Roboto', 'sans-serif'],\n        body: ['Roboto', 'sans-serif'],\n        monospace: ['Roboto Mono', 'monospace'],\n      },\n      scale: {\n        baseSize: 16,\n        ratio: 1.25,\n        sizes: {\n          xs: 11,\n          sm: 12,\n          base: 14,\n          lg: 16,\n          xl: 22,\n          '2xl': 28,\n          '3xl': 36,\n          '4xl': 45,\n        },\n      },\n      weights: [400, 500, 700],\n      lineHeights: {\n        tight: 1.2,\n        normal: 1.5,\n        relaxed: 1.75,\n      },\n      maxLevels: 6,\n    },\n    {\n      name: 'Material Typography',\n      description: 'Material Design 3 type scale',\n      priority: ConstraintPriority.HIGH,\n    }\n  );\n\n  // Component constraints\n  constraints.defineComponentConstraint(\n    'material-components',\n    {\n      sizes: {\n        sm: { height: '32px', padding: '8px 16px' },\n        md: { height: '40px', padding: '10px 24px' },\n        lg: { height: '56px', padding: '16px 32px' },\n      },\n      variants: ['filled', 'outlined', 'text', 'elevated', 'tonal'],\n      maxNestingLevel: 5,\n    },\n    {\n      name: 'Material Components',\n      description: 'Material Design 3 component system',\n      priority: ConstraintPriority.MEDIUM,\n    }\n  );\n\n  // Spacing constraints\n  constraints.defineSpacingConstraint(\n    'material-spacing',\n    {\n      system: {\n        base: 8,\n        scale: [4, 8, 12, 16, 24, 32, 40, 48, 56, 64],\n      },\n      consistent: true,\n    },\n    {\n      name: 'Material Spacing',\n      description: '8px base spacing system',\n      priority: ConstraintPriority.MEDIUM,\n    }\n  );\n\n  // Accessibility constraints\n  constraints.defineAccessibilityConstraint(\n    'material-a11y',\n    {\n      wcagLevel: WCAGLevel.AA,\n      minContrast: 4.5,\n      requireAltText: true,\n      requireAriaLabels: true,\n      keyboardNavigable: true,\n      focusVisible: true,\n      minTouchTarget: 48,\n    },\n    {\n      name: 'Material Accessibility',\n      description: 'WCAG AA compliance requirements',\n      priority: ConstraintPriority.CRITICAL,\n    }\n  );\n\n  return constraints;\n}\n\n/**\n * iOS Human Interface Guidelines template\n */\nexport function createiOSTemplate(): DesignConstraints {\n  const config: ConstraintSetConfig = {\n    name: 'iOS Human Interface Guidelines',\n    description: 'Apple iOS design system constraints',\n    constraints: [],\n  };\n\n  const constraints = new DesignConstraints(config);\n\n  // Layout constraints\n  constraints.defineLayoutConstraint(\n    'ios-layout',\n    {\n      system: [LayoutSystem.STACK, LayoutSystem.GRID],\n      maxWidth: '428px',\n      minWidth: '320px',\n    },\n    {\n      name: 'iOS Layout',\n      description: 'iOS adaptive layout system',\n      priority: ConstraintPriority.HIGH,\n    }\n  );\n\n  // Color constraints\n  constraints.defineColorConstraint(\n    'ios-color',\n    {\n      palette: {\n        primary: ['#007AFF', '#0A84FF', '#5E5CE6'],\n        secondary: ['#5856D6', '#AF52DE', '#BF5AF2'],\n        accent: ['#FF9500', '#FF9F0A', '#FFD60A'],\n        neutral: ['#000000', '#1C1C1E', '#2C2C2E', '#3A3A3C', '#48484A', '#636366', '#8E8E93', '#AEAEB2', '#C7C7CC', '#D1D1D6', '#E5E5EA', '#F2F2F7', '#FFFFFF'],\n        semantic: {\n          success: ['#34C759', '#32D74B', '#30DB5B'],\n          warning: ['#FF9500', '#FF9F0A', '#FFD60A'],\n          error: ['#FF3B30', '#FF453A', '#FF6961'],\n          info: ['#007AFF', '#0A84FF', '#64D2FF'],\n        },\n      },\n      formats: [ColorFormat.HEX, ColorFormat.RGB],\n      minContrast: 4.5,\n    },\n    {\n      name: 'iOS Color System',\n      description: 'iOS system colors with dark mode support',\n      priority: ConstraintPriority.HIGH,\n    }\n  );\n\n  // Typography constraints\n  constraints.defineTypographyConstraint(\n    'ios-typography',\n    {\n      fontFamilies: {\n        heading: ['SF Pro Display', '-apple-system', 'BlinkMacSystemFont', 'sans-serif'],\n        body: ['SF Pro Text', '-apple-system', 'BlinkMacSystemFont', 'sans-serif'],\n        monospace: ['SF Mono', 'Menlo', 'Monaco', 'monospace'],\n      },\n      scale: {\n        baseSize: 17,\n        ratio: 1.17,\n        sizes: {\n          xs: 11,\n          sm: 13,\n          base: 17,\n          lg: 20,\n          xl: 28,\n          '2xl': 34,\n          '3xl': 48,\n        },\n      },\n      weights: [400, 600, 700],\n      lineHeights: {\n        tight: 1.2,\n        normal: 1.4,\n        relaxed: 1.6,\n      },\n    },\n    {\n      name: 'iOS Typography',\n      description: 'San Francisco font system',\n      priority: ConstraintPriority.HIGH,\n    }\n  );\n\n  // Component constraints\n  constraints.defineComponentConstraint(\n    'ios-components',\n    {\n      sizes: {\n        sm: { height: '36px', padding: '8px 12px' },\n        md: { height: '44px', padding: '10px 16px' },\n        lg: { height: '50px', padding: '12px 20px' },\n      },\n      variants: ['filled', 'plain', 'gray', 'tinted'],\n      maxNestingLevel: 4,\n    },\n    {\n      name: 'iOS Components',\n      description: 'iOS UIKit components',\n      priority: ConstraintPriority.MEDIUM,\n    }\n  );\n\n  // Spacing constraints\n  constraints.defineSpacingConstraint(\n    'ios-spacing',\n    {\n      system: {\n        base: 8,\n        scale: [4, 8, 16, 20, 24, 32],\n      },\n      consistent: true,\n    },\n    {\n      name: 'iOS Spacing',\n      description: '8px base spacing system',\n      priority: ConstraintPriority.MEDIUM,\n    }\n  );\n\n  // Accessibility constraints\n  constraints.defineAccessibilityConstraint(\n    'ios-a11y',\n    {\n      wcagLevel: WCAGLevel.AA,\n      minContrast: 4.5,\n      requireAltText: true,\n      requireAriaLabels: true,\n      keyboardNavigable: true,\n      focusVisible: true,\n      minTouchTarget: 44,\n    },\n    {\n      name: 'iOS Accessibility',\n      description: 'iOS accessibility requirements',\n      priority: ConstraintPriority.CRITICAL,\n    }\n  );\n\n  return constraints;\n}\n\n/**\n * Tailwind CSS template\n */\nexport function createTailwindTemplate(): DesignConstraints {\n  const config: ConstraintSetConfig = {\n    name: 'Tailwind CSS',\n    description: 'Tailwind CSS utility-first design system',\n    constraints: [],\n  };\n\n  const constraints = new DesignConstraints(config);\n\n  // Layout constraints\n  constraints.defineLayoutConstraint(\n    'tailwind-layout',\n    {\n      system: [LayoutSystem.GRID, LayoutSystem.FLEXBOX],\n      gridColumns: 12,\n      gridGap: '1rem',\n    },\n    {\n      name: 'Tailwind Layout',\n      description: 'Tailwind responsive grid system',\n      priority: ConstraintPriority.MEDIUM,\n    }\n  );\n\n  // Color constraints\n  constraints.defineColorConstraint(\n    'tailwind-color',\n    {\n      palette: {\n        primary: ['#3B82F6', '#2563EB', '#1D4ED8', '#1E40AF', '#1E3A8A'],\n        secondary: ['#6B7280', '#4B5563', '#374151', '#1F2937', '#111827'],\n        accent: ['#10B981', '#059669', '#047857', '#065F46', '#064E3B'],\n        neutral: ['#FFFFFF', '#F9FAFB', '#F3F4F6', '#E5E7EB', '#D1D5DB', '#9CA3AF', '#6B7280', '#4B5563', '#374151', '#1F2937', '#111827', '#000000'],\n      },\n      formats: [ColorFormat.HEX, ColorFormat.RGB, ColorFormat.RGBA],\n    },\n    {\n      name: 'Tailwind Colors',\n      description: 'Tailwind default color palette',\n      priority: ConstraintPriority.MEDIUM,\n    }\n  );\n\n  // Typography constraints\n  constraints.defineTypographyConstraint(\n    'tailwind-typography',\n    {\n      fontFamilies: {\n        body: ['ui-sans-serif', 'system-ui', 'sans-serif'],\n        heading: ['ui-sans-serif', 'system-ui', 'sans-serif'],\n        monospace: ['ui-monospace', 'monospace'],\n      },\n      scale: {\n        baseSize: 16,\n        ratio: 1.25,\n        sizes: {\n          xs: 12,\n          sm: 14,\n          base: 16,\n          lg: 18,\n          xl: 20,\n          '2xl': 24,\n          '3xl': 30,\n          '4xl': 36,\n        },\n      },\n      weights: [400, 500, 600, 700, 800, 900],\n      lineHeights: {\n        tight: 1.25,\n        normal: 1.5,\n        relaxed: 1.625,\n        loose: 2,\n      },\n    },\n    {\n      name: 'Tailwind Typography',\n      description: 'Tailwind type scale',\n      priority: ConstraintPriority.MEDIUM,\n    }\n  );\n\n  // Spacing constraints\n  constraints.defineSpacingConstraint(\n    'tailwind-spacing',\n    {\n      system: {\n        base: 4,\n        scale: [1, 2, 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 56, 64],\n      },\n      consistent: true,\n    },\n    {\n      name: 'Tailwind Spacing',\n      description: '4px base spacing scale',\n      priority: ConstraintPriority.MEDIUM,\n    }\n  );\n\n  return constraints;\n}\n\n/**\n * Bootstrap template\n */\nexport function createBootstrapTemplate(): DesignConstraints {\n  const config: ConstraintSetConfig = {\n    name: 'Bootstrap 5',\n    description: 'Bootstrap 5 responsive design system',\n    constraints: [],\n  };\n\n  const constraints = new DesignConstraints(config);\n\n  // Layout constraints\n  constraints.defineLayoutConstraint(\n    'bootstrap-layout',\n    {\n      system: [LayoutSystem.GRID, LayoutSystem.FLEXBOX],\n      gridColumns: 12,\n      gridGap: '1.5rem',\n      maxWidth: '1320px',\n    },\n    {\n      name: 'Bootstrap Layout',\n      description: 'Bootstrap 12-column responsive grid',\n      priority: ConstraintPriority.HIGH,\n    }\n  );\n\n  // Color constraints\n  constraints.defineColorConstraint(\n    'bootstrap-color',\n    {\n      palette: {\n        primary: ['#0D6EFD'],\n        secondary: ['#6C757D'],\n        accent: ['#0DCAF0'],\n        semantic: {\n          success: ['#198754'],\n          warning: ['#FFC107'],\n          error: ['#DC3545'],\n          info: ['#0DCAF0'],\n        },\n      },\n      formats: [ColorFormat.HEX],\n    },\n    {\n      name: 'Bootstrap Colors',\n      description: 'Bootstrap theme colors',\n      priority: ConstraintPriority.MEDIUM,\n    }\n  );\n\n  // Typography constraints\n  constraints.defineTypographyConstraint(\n    'bootstrap-typography',\n    {\n      fontFamilies: {\n        body: ['system-ui', '-apple-system', 'sans-serif'],\n        heading: ['system-ui', '-apple-system', 'sans-serif'],\n        monospace: ['SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', 'monospace'],\n      },\n      scale: {\n        baseSize: 16,\n        ratio: 1.25,\n      },\n      weights: [400, 700],\n    },\n    {\n      name: 'Bootstrap Typography',\n      description: 'Bootstrap type system',\n      priority: ConstraintPriority.MEDIUM,\n    }\n  );\n\n  // Spacing constraints\n  constraints.defineSpacingConstraint(\n    'bootstrap-spacing',\n    {\n      system: {\n        base: 16,\n        scale: [4, 8, 16, 24, 48],\n      },\n    },\n    {\n      name: 'Bootstrap Spacing',\n      description: '16px base spacing utilities',\n      priority: ConstraintPriority.MEDIUM,\n    }\n  );\n\n  return constraints;\n}\n\n/**\n * Minimal/Clean template\n */\nexport function createMinimalTemplate(): DesignConstraints {\n  const config: ConstraintSetConfig = {\n    name: 'Minimal Design',\n    description: 'Clean, minimal design constraints',\n    constraints: [],\n  };\n\n  const constraints = new DesignConstraints(config);\n\n  // Layout constraints\n  constraints.defineLayoutConstraint(\n    'minimal-layout',\n    {\n      system: [LayoutSystem.FLEXBOX, LayoutSystem.GRID],\n      maxWidth: '1000px',\n    },\n    {\n      name: 'Minimal Layout',\n      description: 'Simple, centered layout',\n      priority: ConstraintPriority.MEDIUM,\n    }\n  );\n\n  // Color constraints - monochromatic\n  constraints.defineColorConstraint(\n    'minimal-color',\n    {\n      palette: {\n        primary: ['#000000'],\n        neutral: ['#FFFFFF', '#F5F5F5', '#E0E0E0', '#BDBDBD', '#9E9E9E', '#757575', '#616161', '#424242', '#212121', '#000000'],\n      },\n      maxColors: 3,\n      colorHarmony: ['monochromatic'],\n    },\n    {\n      name: 'Minimal Colors',\n      description: 'Monochromatic grayscale palette',\n      priority: ConstraintPriority.HIGH,\n    }\n  );\n\n  // Typography constraints\n  constraints.defineTypographyConstraint(\n    'minimal-typography',\n    {\n      fontFamilies: {\n        body: ['Helvetica Neue', 'Arial', 'sans-serif'],\n        heading: ['Helvetica Neue', 'Arial', 'sans-serif'],\n      },\n      scale: {\n        baseSize: 18,\n        ratio: 1.414,\n      },\n      weights: [400, 700],\n      maxLevels: 3,\n    },\n    {\n      name: 'Minimal Typography',\n      description: 'Simple type hierarchy',\n      priority: ConstraintPriority.HIGH,\n    }\n  );\n\n  // Spacing constraints\n  constraints.defineSpacingConstraint(\n    'minimal-spacing',\n    {\n      system: {\n        base: 8,\n        scale: [8, 16, 32, 64],\n      },\n      consistent: true,\n    },\n    {\n      name: 'Minimal Spacing',\n      description: 'Generous white space',\n      priority: ConstraintPriority.HIGH,\n    }\n  );\n\n  return constraints;\n}\n\n/**\n * Template registry\n */\nexport const TEMPLATE_REGISTRY: Record<string, () => DesignConstraints> = {\n  'material': createMaterialDesignTemplate,\n  'ios': createiOSTemplate,\n  'tailwind': createTailwindTemplate,\n  'bootstrap': createBootstrapTemplate,\n  'minimal': createMinimalTemplate,\n};\n\n/**\n * Get available template names\n */\nexport function getAvailableTemplates(): string[] {\n  return Object.keys(TEMPLATE_REGISTRY);\n}\n\n/**\n * Create constraints from template\n */\nexport function createFromTemplate(templateName: string): DesignConstraints | null {\n  const factory = TEMPLATE_REGISTRY[templateName];\n  return factory ? factory() : null;\n}\n\n/**\n * Export template metadata\n */\nexport function getTemplateMetadata(): ConstraintTemplate[] {\n  return [\n    {\n      id: 'material',\n      name: 'Material Design 3',\n      description: 'Google Material Design 3 design system',\n      category: 'Design System',\n      version: '3.0',\n      author: 'Google',\n      constraints: createMaterialDesignTemplate().getAllConstraints(),\n    },\n    {\n      id: 'ios',\n      name: 'iOS Human Interface Guidelines',\n      description: 'Apple iOS design system',\n      category: 'Design System',\n      version: 'iOS 17',\n      author: 'Apple',\n      constraints: createiOSTemplate().getAllConstraints(),\n    },\n    {\n      id: 'tailwind',\n      name: 'Tailwind CSS',\n      description: 'Utility-first CSS framework',\n      category: 'CSS Framework',\n      version: '3.0',\n      constraints: createTailwindTemplate().getAllConstraints(),\n    },\n    {\n      id: 'bootstrap',\n      name: 'Bootstrap 5',\n      description: 'Popular responsive framework',\n      category: 'CSS Framework',\n      version: '5.0',\n      constraints: createBootstrapTemplate().getAllConstraints(),\n    },\n    {\n      id: 'minimal',\n      name: 'Minimal Design',\n      description: 'Clean and minimal aesthetic',\n      category: 'Style',\n      version: '1.0',\n      constraints: createMinimalTemplate().getAllConstraints(),\n    },\n  ];\n}\n"]}