{
  "$id": "https://sovrium.com/schema/app.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$defs": {
    "App": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the application (follows npm package naming conventions)",
          "title": "Application Name",
          "minLength": 1,
          "maxLength": 214,
          "examples": [
            "my-app",
            "todo-app",
            "@myorg/my-app",
            "blog-system",
            "dashboard-admin"
          ],
          "pattern": "^(?:@[a-z0-9-~][a-z0-9-._~]*\\/)?[a-z0-9-~][a-z0-9-._~]*$"
        },
        "version": {
          "type": "string",
          "description": "The version of the application following Semantic Versioning (SemVer) 2.0.0 specification",
          "title": "Application Version",
          "minLength": 5,
          "examples": [
            "1.0.0",
            "0.0.1",
            "1.2.3",
            "1.0.0-alpha",
            "1.0.0-beta.1",
            "2.0.0-rc.1",
            "1.0.0+build.123",
            "1.0.0-alpha+001"
          ],
          "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"
        },
        "description": {
          "type": "string",
          "description": "A single-line description of the application (max 2000 characters, no line breaks)",
          "pattern": "^[^\\r\\n]*$",
          "title": "Application Description",
          "examples": [
            "A simple application",
            "My app - with special characters!@#$%",
            "Très bien! 你好 🎉",
            "Full-featured e-commerce platform with cart, checkout & payment processing"
          ],
          "maxLength": 2000
        },
        "tables": {
          "$ref": "#/$defs/DataTables"
        },
        "theme": {
          "$ref": "#/$defs/Theme"
        },
        "languages": {
          "$ref": "#/$defs/Languages"
        },
        "auth": {
          "$ref": "#/$defs/Auth"
        },
        "analytics": {
          "$ref": "#/$defs/BuiltInAnalytics"
        },
        "components": {
          "$ref": "#/$defs/Components"
        },
        "pages": {
          "$ref": "#/$defs/Pages"
        }
      },
      "additionalProperties": false,
      "description": "Complete application configuration including name, version, description, and data tables. This is the root schema for Sovrium applications.",
      "title": "Application Configuration",
      "examples": [
        {
          "name": "todo-app",
          "version": "1.0.0",
          "description": "A simple todo list application",
          "tables": [
            {
              "id": 1,
              "name": "tasks",
              "fields": [
                {
                  "id": 1,
                  "name": "title",
                  "required": true,
                  "type": "single-line-text"
                },
                {
                  "id": 2,
                  "name": "completed",
                  "required": true,
                  "type": "checkbox"
                }
              ]
            }
          ]
        },
        {
          "name": "@myorg/dashboard",
          "version": "2.0.0-beta.1",
          "description": "Admin dashboard for analytics and reporting"
        },
        {
          "name": "blog-system"
        }
      ]
    },
    "DataTables": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Table"
      },
      "description": "Collection of database tables that define the data structure of your application. Each table represents an entity (e.g., users, products, orders) with fields that define the schema. Tables support relationships, indexes, constraints, and various field types. Tables are the foundation of your application data model and determine what information can be stored and how it relates.",
      "title": "Data Tables",
      "examples": [
        [
          {
            "id": 1,
            "name": "users",
            "fields": [
              {
                "id": 1,
                "name": "email",
                "required": true,
                "type": "email"
              },
              {
                "id": 2,
                "name": "name",
                "required": true,
                "type": "single-line-text"
              }
            ]
          }
        ]
      ]
    },
    "Table": {
      "type": "object",
      "required": [
        "name",
        "fields"
      ],
      "properties": {
        "id": {
          "$ref": "#/$defs/TableId"
        },
        "name": {
          "type": "string",
          "description": "a string at most 63 character(s) long",
          "minLength": 1,
          "maxLength": 63
        },
        "fields": {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "single-line-text"
                    ],
                    "description": "Constant value 'single-line-text' for type discrimination in discriminated unions"
                  },
                  "default": {
                    "type": "string",
                    "description": "Default value for this field when creating new records"
                  }
                },
                "additionalProperties": false,
                "description": "Short text input limited to a single line. Ideal for names, titles, labels, and brief identifiers. Text is stored as-is without formatting.",
                "title": "Single Line Text Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "title",
                    "required": true,
                    "unique": false,
                    "indexed": true,
                    "type": "single-line-text",
                    "default": "Untitled"
                  },
                  {
                    "id": 2,
                    "name": "first_name",
                    "required": true,
                    "type": "single-line-text"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "long-text"
                    ],
                    "description": "Constant value 'long-text' for type discrimination in discriminated unions"
                  },
                  "default": {
                    "type": "string",
                    "description": "Default value for this field when creating new records"
                  }
                },
                "additionalProperties": false,
                "description": "Multi-line text input for paragraphs, descriptions, notes, and comments. Supports line breaks and longer content without rich formatting.",
                "title": "Long Text Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "description",
                    "required": true,
                    "indexed": false,
                    "type": "long-text",
                    "default": "Enter description here..."
                  },
                  {
                    "id": 2,
                    "name": "notes",
                    "required": false,
                    "type": "long-text"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "phone-number"
                    ],
                    "description": "Constant value 'phone-number' for type discrimination in discriminated unions"
                  },
                  "default": {
                    "type": "string",
                    "description": "Default phone number value when creating new records"
                  }
                },
                "additionalProperties": false,
                "description": "Text field for storing phone numbers with support for international formats. Numbers are stored as plain text without automatic formatting.",
                "title": "Phone Number Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "mobile_phone",
                    "required": true,
                    "unique": true,
                    "indexed": true,
                    "type": "phone-number"
                  },
                  {
                    "id": 2,
                    "name": "office_phone",
                    "required": false,
                    "type": "phone-number",
                    "default": "+1 (555) 000-0000"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "email"
                    ],
                    "description": "Constant value 'email' for type discrimination in discriminated unions"
                  },
                  "default": {
                    "type": "string",
                    "description": "Default email address when creating new records"
                  }
                },
                "additionalProperties": false,
                "description": "Text field with email format validation (RFC 5322). Validates email addresses and prevents invalid formats from being stored.",
                "title": "Email Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "email",
                    "required": true,
                    "unique": true,
                    "indexed": true,
                    "type": "email"
                  },
                  {
                    "id": 2,
                    "name": "contact_email",
                    "required": false,
                    "type": "email",
                    "default": "contact@example.com"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "url"
                    ],
                    "description": "Constant value 'url' for type discrimination in discriminated unions"
                  },
                  "default": {
                    "type": "string",
                    "description": "Default URL value when creating new records"
                  }
                },
                "additionalProperties": false,
                "description": "Text field with URL format validation. Validates web addresses and supports multiple protocols (http://, https://, ftp://, etc.).",
                "title": "URL Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "website",
                    "required": true,
                    "unique": false,
                    "indexed": true,
                    "type": "url"
                  },
                  {
                    "id": 2,
                    "name": "profile_url",
                    "required": false,
                    "type": "url",
                    "default": "https://example.com/profile"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "integer"
                    ],
                    "description": "Constant value 'integer' for type discrimination in discriminated unions"
                  },
                  "min": {
                    "type": "number",
                    "description": "Minimum allowed value (inclusive)"
                  },
                  "max": {
                    "type": "number",
                    "description": "Maximum allowed value (inclusive)"
                  },
                  "default": {
                    "type": "integer",
                    "description": "Default integer value when creating new records"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "decimal"
                    ],
                    "description": "Constant value 'decimal' for type discrimination in discriminated unions"
                  },
                  "precision": {
                    "$ref": "#/$defs/Int",
                    "description": "Number of decimal places (1-10)",
                    "exclusiveMinimum": 0,
                    "maximum": 10
                  },
                  "min": {
                    "type": "number",
                    "description": "Minimum allowed value (inclusive)"
                  },
                  "max": {
                    "type": "number",
                    "description": "Maximum allowed value (inclusive)"
                  },
                  "default": {
                    "type": "number",
                    "description": "Default decimal value when creating new records"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type",
                  "currency"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "currency"
                    ],
                    "description": "Constant value 'currency' for type discrimination in discriminated unions"
                  },
                  "currency": {
                    "type": "string",
                    "description": "ISO 4217 three-letter currency code (e.g., USD, EUR, GBP)",
                    "title": "length(3)",
                    "minLength": 3,
                    "maxLength": 3,
                    "examples": [
                      "USD",
                      "EUR",
                      "GBP",
                      "JPY",
                      "CAD",
                      "AUD"
                    ],
                    "pattern": "^[A-Z]{3}$"
                  },
                  "precision": {
                    "$ref": "#/$defs/Int",
                    "description": "Number of decimal places (0-10, default: 2 for most currencies)",
                    "minimum": 0,
                    "maximum": 10
                  },
                  "min": {
                    "type": "number",
                    "description": "Minimum allowed value (inclusive)"
                  },
                  "max": {
                    "type": "number",
                    "description": "Maximum allowed value (inclusive)"
                  },
                  "symbolPosition": {
                    "type": "string",
                    "enum": [
                      "before",
                      "after"
                    ],
                    "description": "Position of currency symbol relative to the amount",
                    "examples": [
                      "before",
                      "after"
                    ]
                  },
                  "negativeFormat": {
                    "type": "string",
                    "enum": [
                      "minus",
                      "parentheses"
                    ],
                    "description": "Format for displaying negative amounts",
                    "examples": [
                      "minus",
                      "parentheses"
                    ]
                  },
                  "thousandsSeparator": {
                    "type": "string",
                    "enum": [
                      "comma",
                      "period",
                      "space",
                      "none"
                    ],
                    "description": "Character used to separate thousands",
                    "examples": [
                      "comma",
                      "period",
                      "space",
                      "none"
                    ]
                  },
                  "default": {
                    "type": "number",
                    "description": "Default currency value when creating new records"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "percentage"
                    ],
                    "description": "Constant value 'percentage' for type discrimination in discriminated unions"
                  },
                  "precision": {
                    "$ref": "#/$defs/Int",
                    "description": "Number of decimal places (0-10, default: 0 for whole percentages)",
                    "minimum": 0,
                    "maximum": 10
                  },
                  "min": {
                    "type": "number",
                    "description": "Minimum allowed percentage value (inclusive, typically 0)"
                  },
                  "max": {
                    "type": "number",
                    "description": "Maximum allowed percentage value (inclusive, typically 100)"
                  },
                  "default": {
                    "type": "number",
                    "description": "Default percentage value when creating new records"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "date",
                      "datetime",
                      "time"
                    ]
                  },
                  "format": {
                    "type": "string",
                    "description": "Date format string",
                    "examples": [
                      "YYYY-MM-DD",
                      "MM/DD/YYYY",
                      "DD-MM-YYYY"
                    ]
                  },
                  "dateFormat": {
                    "type": "string",
                    "enum": [
                      "US",
                      "European",
                      "ISO"
                    ],
                    "description": "Date display format preset",
                    "examples": [
                      "US",
                      "European",
                      "ISO"
                    ]
                  },
                  "timeFormat": {
                    "type": "string",
                    "enum": [
                      "12-hour",
                      "24-hour"
                    ],
                    "description": "Time display format (12-hour with AM/PM or 24-hour)",
                    "examples": [
                      "12-hour",
                      "24-hour"
                    ]
                  },
                  "includeTime": {
                    "type": "boolean"
                  },
                  "timezone": {
                    "type": "string",
                    "description": "Timezone for datetime fields",
                    "examples": [
                      "UTC",
                      "America/New_York",
                      "Europe/London"
                    ]
                  },
                  "timeZone": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "local"
                        ]
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "description": "Timezone setting (specific timezone or \"local\" for browser timezone)",
                    "examples": [
                      "local",
                      "America/New_York",
                      "Europe/Paris"
                    ]
                  },
                  "default": {
                    "type": "string"
                  }
                },
                "additionalProperties": false,
                "description": "Stores date and optionally time values. Supports custom formats, timezones, and time inclusion.",
                "title": "Date Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "due_date",
                    "required": true,
                    "type": "date",
                    "format": "YYYY-MM-DD",
                    "includeTime": false
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "checkbox"
                    ]
                  },
                  "default": {
                    "type": "boolean"
                  }
                },
                "additionalProperties": false,
                "description": "Boolean field for true/false values. Typically rendered as a checkbox in the UI.",
                "title": "Checkbox Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "is_active",
                    "required": true,
                    "type": "checkbox",
                    "default": false
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type",
                  "options"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "single-select"
                    ]
                  },
                  "options": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "an array of at least 1 item(s)",
                    "title": "Options",
                    "minItems": 1
                  },
                  "default": {
                    "type": "string"
                  }
                },
                "additionalProperties": false,
                "description": "Allows selection of one option from predefined list. Used for categories or enumerated values.",
                "title": "Single Select Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "category",
                    "type": "single-select",
                    "options": [
                      "Electronics",
                      "Clothing",
                      "Food"
                    ],
                    "default": "Electronics"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type",
                  "options"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "multi-select"
                    ]
                  },
                  "options": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "an array of at least 1 item(s)",
                    "title": "Options",
                    "minItems": 1
                  },
                  "maxSelections": {
                    "$ref": "#/$defs/Int",
                    "description": "Maximum number of selections allowed",
                    "minimum": 1
                  },
                  "default": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "title": "Default Selections"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "required": [
                  "type",
                  "relatedTable",
                  "name"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "relationship"
                    ]
                  },
                  "relatedTable": {
                    "type": "string",
                    "description": "Name of the related table",
                    "minLength": 1
                  },
                  "relationType": {
                    "type": "string",
                    "description": "Type of relationship (defaults to many-to-one if not specified)",
                    "minLength": 1
                  },
                  "foreignKey": {
                    "type": "string",
                    "description": "Name of the foreign key field in the related table for one-to-many relationships",
                    "minLength": 1
                  },
                  "displayField": {
                    "type": "string",
                    "description": "Field from related table to display in UI",
                    "minLength": 1
                  },
                  "onDelete": {
                    "type": "string",
                    "description": "Action to take when the related record is deleted"
                  },
                  "onUpdate": {
                    "type": "string",
                    "description": "Action to take when the related record's key is updated"
                  },
                  "reciprocalField": {
                    "type": "string",
                    "description": "Name of the reciprocal link field in the related table for bidirectional relationships",
                    "minLength": 1
                  },
                  "allowMultiple": {
                    "type": "boolean",
                    "description": "Whether to allow linking to multiple records (default: true for many-to-many)"
                  },
                  "limitToView": {
                    "type": "string",
                    "description": "Name of the view to limit linkable records to",
                    "minLength": 1
                  },
                  "relatedField": {
                    "type": "string",
                    "description": "Name of the field in the related table to reference (defaults to id). The referenced field must have a primary key or unique constraint.",
                    "minLength": 1
                  },
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  }
                },
                "additionalProperties": false,
                "description": "Links records to another table with referential integrity.",
                "title": "Relationship Field",
                "examples": [
                  {
                    "type": "relationship",
                    "relatedTable": "users",
                    "relationType": "many-to-one",
                    "id": 1,
                    "name": "author"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "single-attachment"
                    ]
                  },
                  "allowedFileTypes": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Allowed MIME types for file uploads",
                    "examples": [
                      [
                        "image/png",
                        "image/jpeg",
                        "image/gif"
                      ]
                    ]
                  },
                  "maxFileSize": {
                    "$ref": "#/$defs/Int",
                    "description": "Maximum file size in bytes",
                    "examples": [
                      5242880
                    ],
                    "minimum": 1
                  },
                  "generateThumbnail": {
                    "type": "boolean",
                    "description": "Whether to generate thumbnails for image attachments"
                  },
                  "storeMetadata": {
                    "type": "boolean",
                    "description": "Whether to store metadata (dimensions for images, duration for videos)"
                  },
                  "storage": {
                    "type": "object",
                    "required": [],
                    "properties": {
                      "provider": {
                        "type": "string",
                        "description": "Storage provider"
                      },
                      "bucket": {
                        "type": "string",
                        "description": "S3 bucket name (required for s3 provider)"
                      },
                      "maxSize": {
                        "$ref": "#/$defs/Int",
                        "description": "Maximum file size in bytes",
                        "minimum": 1
                      },
                      "allowedTypes": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "title": "Allowed MIME Types"
                      }
                    },
                    "additionalProperties": false
                  }
                },
                "additionalProperties": false,
                "description": "Stores a single file attachment with storage configuration.",
                "title": "Single Attachment Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "profile_pic",
                    "type": "single-attachment",
                    "storage": {
                      "provider": "local",
                      "maxSize": 5242880
                    }
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "multiple-attachments"
                    ]
                  },
                  "maxFiles": {
                    "$ref": "#/$defs/Int",
                    "description": "Maximum number of files allowed",
                    "minimum": 1
                  },
                  "allowedFileTypes": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Allowed MIME types for file uploads",
                    "examples": [
                      [
                        "application/pdf",
                        "application/msword"
                      ]
                    ]
                  },
                  "maxFileSize": {
                    "$ref": "#/$defs/Int",
                    "description": "Maximum file size in bytes per attachment",
                    "examples": [
                      10485760
                    ],
                    "minimum": 1
                  },
                  "generateThumbnails": {
                    "type": "boolean",
                    "description": "Whether to generate thumbnails for image attachments"
                  },
                  "storeMetadata": {
                    "type": "boolean",
                    "description": "Whether to store metadata for each attachment"
                  },
                  "storage": {
                    "type": "object",
                    "required": [],
                    "properties": {
                      "provider": {
                        "type": "string",
                        "description": "Storage provider"
                      },
                      "bucket": {
                        "type": "string",
                        "description": "S3 bucket name (required for s3 provider)"
                      },
                      "maxSize": {
                        "$ref": "#/$defs/Int",
                        "description": "Maximum file size in bytes per file",
                        "minimum": 1
                      },
                      "allowedTypes": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "title": "Allowed MIME Types"
                      }
                    },
                    "additionalProperties": false
                  }
                },
                "additionalProperties": false,
                "description": "Stores multiple file attachments with storage configuration.",
                "title": "Multiple Attachments Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "documents",
                    "type": "multiple-attachments",
                    "maxFiles": 10
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type",
                  "formula"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "formula"
                    ]
                  },
                  "formula": {
                    "type": "string",
                    "description": "Formula expression to compute the value. Supports field references, operators, and functions.",
                    "examples": [
                      "price * quantity",
                      "CONCAT(first_name, ' ', last_name)",
                      "IF(status = 'active', 'Yes', 'No')",
                      "ROUND(total * 0.15, 2)"
                    ],
                    "minLength": 1
                  },
                  "resultType": {
                    "type": "string",
                    "description": "Expected data type of the formula result"
                  },
                  "format": {
                    "type": "string",
                    "description": "Display format for the result (e.g., currency, percentage)",
                    "examples": [
                      "currency",
                      "percentage",
                      "decimal",
                      "date"
                    ]
                  }
                },
                "additionalProperties": false,
                "description": "Computed field that calculates values based on formula expressions.",
                "title": "Formula Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "total_price",
                    "type": "formula",
                    "formula": "price * quantity",
                    "resultType": "number"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type",
                  "relationshipField",
                  "relatedField",
                  "aggregation"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "rollup"
                    ]
                  },
                  "relationshipField": {
                    "type": "string",
                    "description": "Name of the relationship field to aggregate from",
                    "minLength": 1
                  },
                  "relatedField": {
                    "type": "string",
                    "description": "Name of the field in the related table to aggregate",
                    "minLength": 1
                  },
                  "aggregation": {
                    "type": "string",
                    "description": "Aggregation function to apply"
                  },
                  "format": {
                    "type": "string",
                    "description": "Display format for the result",
                    "examples": [
                      "currency",
                      "number",
                      "percentage"
                    ]
                  },
                  "filters": {
                    "anyOf": [
                      {
                        "type": "object",
                        "required": [
                          "field",
                          "operator",
                          "value"
                        ],
                        "properties": {
                          "field": {
                            "type": "string"
                          },
                          "operator": {
                            "type": "string"
                          },
                          "value": {
                            "$id": "/schemas/unknown"
                          }
                        },
                        "additionalProperties": false,
                        "description": "A single filter condition specifying field, operator, and value.",
                        "title": "Filter Condition"
                      },
                      {
                        "type": "object",
                        "required": [
                          "and"
                        ],
                        "properties": {
                          "and": {
                            "type": "array",
                            "items": {
                              "$ref": "#/$defs/ViewFilterNode"
                            }
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "required": [
                          "or"
                        ],
                        "properties": {
                          "or": {
                            "type": "array",
                            "items": {
                              "$ref": "#/$defs/ViewFilterNode"
                            }
                          }
                        },
                        "additionalProperties": false
                      }
                    ],
                    "description": "Filters to apply to the rollup aggregation",
                    "title": "View Filters"
                  }
                },
                "additionalProperties": false,
                "description": "Aggregates values from related records using functions like SUM, AVG, COUNT.",
                "title": "Rollup Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "total_sales",
                    "type": "rollup",
                    "relationshipField": "orders",
                    "relatedField": "amount",
                    "aggregation": "SUM"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type",
                  "relationshipField",
                  "relatedField"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "lookup"
                    ]
                  },
                  "relationshipField": {
                    "type": "string",
                    "description": "Name of the relationship field to lookup from",
                    "minLength": 1
                  },
                  "relatedField": {
                    "type": "string",
                    "description": "Name of the field in the related table to display",
                    "minLength": 1
                  },
                  "filters": {
                    "anyOf": [
                      {
                        "type": "object",
                        "required": [
                          "field",
                          "operator",
                          "value"
                        ],
                        "properties": {
                          "field": {
                            "type": "string"
                          },
                          "operator": {
                            "type": "string"
                          },
                          "value": {
                            "$id": "/schemas/unknown"
                          }
                        },
                        "additionalProperties": false,
                        "description": "A single filter condition specifying field, operator, and value.",
                        "title": "Filter Condition"
                      },
                      {
                        "type": "object",
                        "required": [
                          "and"
                        ],
                        "properties": {
                          "and": {
                            "type": "array",
                            "items": {
                              "$ref": "#/$defs/ViewFilterNode"
                            }
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "required": [
                          "or"
                        ],
                        "properties": {
                          "or": {
                            "type": "array",
                            "items": {
                              "$ref": "#/$defs/ViewFilterNode"
                            }
                          }
                        },
                        "additionalProperties": false
                      }
                    ],
                    "description": "Filters to apply to the lookup results",
                    "title": "View Filters"
                  }
                },
                "additionalProperties": false,
                "description": "Displays values from related records without aggregation.",
                "title": "Lookup Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "customer_email",
                    "type": "lookup",
                    "relationshipField": "customer",
                    "relatedField": "email"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type",
                  "relationshipField"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "count"
                    ]
                  },
                  "relationshipField": {
                    "type": "string",
                    "description": "Name of the relationship field in the same table to count linked records from",
                    "minLength": 1
                  },
                  "conditions": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "field",
                        "operator",
                        "value"
                      ],
                      "properties": {
                        "field": {
                          "type": "string"
                        },
                        "operator": {
                          "type": "string"
                        },
                        "value": {
                          "$id": "/schemas/unknown"
                        }
                      },
                      "additionalProperties": false,
                      "description": "A single filter condition specifying field, operator, and value.",
                      "title": "Filter Condition"
                    },
                    "description": "Filter conditions to apply when counting linked records",
                    "title": "Count Conditions"
                  }
                },
                "additionalProperties": false,
                "description": "Counts the number of linked records from a relationship field. Optionally filters records with conditions.",
                "title": "Count Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "task_count",
                    "type": "count",
                    "relationshipField": "tasks"
                  },
                  {
                    "id": 2,
                    "name": "completed_task_count",
                    "type": "count",
                    "relationshipField": "tasks",
                    "conditions": [
                      {
                        "field": "status",
                        "operator": "equals",
                        "value": "completed"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "user"
                    ]
                  },
                  "allowMultiple": {
                    "type": "boolean"
                  }
                },
                "additionalProperties": false,
                "description": "Reference field linking to users from authentication system. Supports single or multiple user selection.",
                "title": "User Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "assigned_to",
                    "required": true,
                    "type": "user",
                    "allowMultiple": false
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "created-at"
                    ]
                  }
                },
                "additionalProperties": false,
                "description": "Automatically captures the timestamp when a record is created. System-managed field that cannot be manually edited.",
                "title": "Created At Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "created_at",
                    "indexed": true,
                    "type": "created-at"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "created-by"
                    ]
                  }
                },
                "additionalProperties": false,
                "description": "Automatically captures the user who created a record. System-managed field that stores user ID reference.",
                "title": "Created By Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "created_by",
                    "indexed": true,
                    "type": "created-by"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "updated-at"
                    ]
                  }
                },
                "additionalProperties": false,
                "description": "Automatically updates the timestamp whenever a record is modified. System-managed field that updates on every change.",
                "title": "Updated At Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "updated_at",
                    "indexed": true,
                    "type": "updated-at"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "updated-by"
                    ]
                  }
                },
                "additionalProperties": false,
                "description": "Automatically captures the user who last modified a record. System-managed field that stores user ID reference.",
                "title": "Updated By Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "updated_by",
                    "indexed": true,
                    "type": "updated-by"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "deleted-at"
                    ]
                  }
                },
                "additionalProperties": false,
                "description": "Captures the timestamp when a record is soft-deleted. NULL indicates the record is active. Enables soft delete with record restoration capability.",
                "title": "Deleted At Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "deleted_at",
                    "indexed": true,
                    "type": "deleted-at"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "deleted-by"
                    ]
                  }
                },
                "additionalProperties": false,
                "description": "Automatically captures the user who soft-deleted a record. System-managed field that stores user ID reference. NULL when record is active or deleted by system process.",
                "title": "Deleted By Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "deleted_by",
                    "indexed": true,
                    "type": "deleted-by"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "rating"
                    ]
                  },
                  "max": {
                    "$ref": "#/$defs/Int",
                    "description": "Maximum rating value",
                    "minimum": 1,
                    "maximum": 10
                  },
                  "style": {
                    "type": "string",
                    "description": "Visual style for the rating"
                  },
                  "default": {
                    "type": "integer",
                    "description": "Default rating value when creating new records"
                  }
                },
                "additionalProperties": false,
                "description": "Allows rating values with configurable maximum. Typically rendered as stars or other indicators.",
                "title": "Rating Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "product_rating",
                    "type": "rating",
                    "max": 5,
                    "style": "stars"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "duration"
                    ]
                  },
                  "format": {
                    "type": "string",
                    "description": "Display format for the duration"
                  },
                  "displayFormat": {
                    "type": "string",
                    "enum": [
                      "h:mm",
                      "h:mm:ss",
                      "decimal"
                    ],
                    "description": "Display format preset for duration values",
                    "examples": [
                      "h:mm",
                      "h:mm:ss",
                      "decimal"
                    ]
                  },
                  "default": {
                    "type": "number",
                    "description": "Default duration value in seconds when creating new records"
                  }
                },
                "additionalProperties": false,
                "description": "Stores time duration values. Used for tracking elapsed time or work hours with custom formats.",
                "title": "Duration Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "work_hours",
                    "required": true,
                    "type": "duration",
                    "format": "h:mm"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "rich-text"
                    ]
                  },
                  "maxLength": {
                    "$ref": "#/$defs/Int",
                    "description": "Maximum length in characters",
                    "minimum": 1
                  },
                  "fullTextSearch": {
                    "type": "boolean",
                    "description": "Enable full-text search indexing for this field"
                  }
                },
                "additionalProperties": false,
                "description": "Stores formatted text with rich formatting support. Rendered with WYSIWYG editor in UI.",
                "title": "Rich Text Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "article_content",
                    "required": true,
                    "type": "rich-text",
                    "maxLength": 10000
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type",
                  "options"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "status"
                    ]
                  },
                  "options": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "value"
                      ],
                      "properties": {
                        "value": {
                          "type": "string",
                          "description": "a non empty string",
                          "minLength": 1
                        },
                        "color": {
                          "type": "string",
                          "description": "Hex color code for the status",
                          "pattern": "^#[0-9a-fA-F]{6}$"
                        }
                      },
                      "additionalProperties": false,
                      "title": "Status Option"
                    },
                    "description": "an array of at least 1 item(s)",
                    "title": "Status Options",
                    "minItems": 1
                  },
                  "default": {
                    "type": "string"
                  }
                },
                "additionalProperties": false,
                "description": "Status field with colored options for workflow states.",
                "title": "Status Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "status",
                    "type": "status",
                    "options": [
                      {
                        "value": "todo",
                        "color": "#94A3B8"
                      },
                      {
                        "value": "in_progress",
                        "color": "#3B82F6"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type",
                  "label",
                  "action"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "button"
                    ]
                  },
                  "label": {
                    "type": "string",
                    "description": "Button text label",
                    "minLength": 1
                  },
                  "action": {
                    "type": "string",
                    "description": "Type of action to trigger"
                  },
                  "url": {
                    "type": "string",
                    "description": "URL to open (when action is 'url')"
                  },
                  "automation": {
                    "type": "string",
                    "description": "Automation name to trigger (when action is 'automation')"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "autonumber"
                    ]
                  },
                  "prefix": {
                    "type": "string",
                    "description": "Optional prefix for the autonumber",
                    "examples": [
                      "INV-",
                      "ORD-",
                      ""
                    ]
                  },
                  "startFrom": {
                    "$ref": "#/$defs/Int",
                    "description": "Starting number",
                    "minimum": 1
                  },
                  "digits": {
                    "$ref": "#/$defs/Int",
                    "description": "Number of digits with zero padding",
                    "minimum": 1,
                    "maximum": 10
                  }
                },
                "additionalProperties": false,
                "description": "Auto-incrementing number field with optional prefix and zero padding.",
                "title": "Autonumber Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "invoice_number",
                    "type": "autonumber",
                    "prefix": "INV-",
                    "startFrom": 1000,
                    "digits": 5
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "barcode"
                    ]
                  },
                  "format": {
                    "type": "string",
                    "description": "Barcode format"
                  }
                },
                "additionalProperties": false,
                "description": "Stores barcode values with various format support. Used for product identification and inventory.",
                "title": "Barcode Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "product_barcode",
                    "required": true,
                    "type": "barcode",
                    "format": "EAN-13"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "color"
                    ]
                  },
                  "default": {
                    "type": "string",
                    "description": "a string matching the pattern ^#[0-9a-fA-F]{6}$",
                    "pattern": "^#[0-9a-fA-F]{6}$"
                  }
                },
                "additionalProperties": false,
                "description": "Stores color values in hexadecimal format. Rendered with color picker in UI.",
                "title": "Color Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "brand_color",
                    "required": true,
                    "type": "color",
                    "default": "#3B82F6"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "progress"
                    ]
                  },
                  "color": {
                    "type": "string",
                    "description": "Color of the progress bar",
                    "pattern": "^#[0-9a-fA-F]{6}$"
                  },
                  "default": {
                    "type": "number",
                    "description": "Default progress value (0-100) when creating new records",
                    "minimum": 0,
                    "maximum": 100
                  }
                },
                "additionalProperties": false,
                "description": "Displays percentage value as progress bar. Used for tracking completion status or goals.",
                "title": "Progress Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "task_completion",
                    "required": true,
                    "type": "progress",
                    "color": "#10B981"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "geolocation"
                    ]
                  }
                },
                "additionalProperties": false,
                "description": "Stores geographic coordinates (latitude and longitude). Used for location-based features.",
                "title": "Geolocation Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "office_location",
                    "required": true,
                    "type": "geolocation"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "json"
                    ]
                  },
                  "schema": {
                    "$id": "/schemas/%7B%7D",
                    "anyOf": [
                      {
                        "type": "object"
                      },
                      {
                        "type": "array"
                      }
                    ]
                  }
                },
                "additionalProperties": false,
                "description": "Stores structured JSON data with optional schema validation.",
                "title": "JSON Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "metadata",
                    "required": false,
                    "type": "json"
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "array"
                    ]
                  },
                  "itemType": {
                    "type": "string",
                    "description": "Type of items in the array"
                  },
                  "maxItems": {
                    "$ref": "#/$defs/Int",
                    "description": "Maximum number of items allowed",
                    "minimum": 1
                  }
                },
                "additionalProperties": false,
                "description": "Stores arrays of values with optional type and length constraints.",
                "title": "Array Field",
                "examples": [
                  {
                    "id": 1,
                    "name": "tags",
                    "type": "array",
                    "itemType": "string",
                    "maxItems": 10
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "name",
                  "type"
                ],
                "properties": {
                  "id": {
                    "$ref": "#/$defs/FieldId"
                  },
                  "name": {
                    "type": "string",
                    "description": "a string matching the pattern ^[a-z][a-z0-9_]*$",
                    "minLength": 1,
                    "maxLength": 63,
                    "pattern": "^[a-z][a-z0-9_]*$"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "unique": {
                    "type": "boolean"
                  },
                  "indexed": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              }
            ]
          },
          "description": "an array of at least 1 item(s)",
          "title": "Table Fields",
          "minItems": 1
        },
        "primaryKey": {
          "type": "object",
          "required": [
            "type"
          ],
          "properties": {
            "type": {
              "type": "string",
              "description": "Primary key generation strategy. 'auto-increment' uses sequential integers (1, 2, 3...), 'uuid' generates random unique identifiers, 'composite' uses multiple fields together.",
              "minLength": 1
            },
            "field": {
              "type": "string",
              "description": "Field name for single-column primary key. Only used with 'auto-increment' or 'uuid' type.",
              "examples": [
                "id",
                "user_id",
                "product_id"
              ],
              "pattern": "^[a-z][a-z0-9_]*$"
            },
            "fields": {
              "type": "array",
              "items": {
                "type": "string",
                "description": "a string at least 1 character(s) long",
                "minLength": 1
              },
              "title": "Primary Key Fields"
            }
          },
          "additionalProperties": false,
          "description": "Primary key configuration for the table. The primary key uniquely identifies each row and is automatically indexed.",
          "title": "Primary Key",
          "examples": [
            {
              "type": "auto-increment",
              "field": "id"
            },
            {
              "type": "uuid",
              "field": "id"
            },
            {
              "type": "composite",
              "fields": [
                "tenant_id",
                "user_id"
              ]
            }
          ]
        },
        "uniqueConstraints": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "name",
              "fields"
            ],
            "properties": {
              "name": {
                "type": "string",
                "description": "Name of the unique constraint. Use descriptive names like 'uq_tablename_field1_field2'",
                "minLength": 1,
                "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$",
                "examples": [
                  "uq_users_email_tenant",
                  "uq_products_sku_variant",
                  "uq_orders_number_year"
                ]
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "a string at least 1 character(s) long",
                  "minLength": 1
                },
                "description": "an array of at least 1 item(s)",
                "title": "Constraint Fields",
                "minItems": 1
              }
            },
            "additionalProperties": false,
            "title": "Unique Constraint"
          }
        },
        "indexes": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "name",
              "fields"
            ],
            "properties": {
              "name": {
                "type": "string",
                "description": "Name of the index. Use descriptive names like 'idx_tablename_fieldname'",
                "minLength": 1,
                "examples": [
                  "idx_users_email",
                  "idx_products_sku",
                  "idx_orders_status"
                ],
                "pattern": "^[a-z][a-z0-9_]*$"
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "a string at least 1 character(s) long",
                  "minLength": 1
                },
                "description": "an array of at least 1 item(s)",
                "title": "Index Fields",
                "minItems": 1
              },
              "unique": {
                "type": "boolean"
              },
              "where": {
                "type": "string",
                "description": "WHERE clause for partial indexes. Creates an index that includes only rows satisfying the condition. Useful for enforcing uniqueness only on non-NULL values.",
                "examples": [
                  "username IS NOT NULL",
                  "status = 'active'",
                  "deleted_at IS NULL"
                ],
                "minLength": 1
              }
            },
            "additionalProperties": false,
            "title": "Index"
          }
        },
        "views": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "id",
              "name"
            ],
            "properties": {
              "id": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string",
                    "description": "View ID as string (lowercase, numbers, underscores, hyphens only)",
                    "pattern": "^[a-z0-9_-]+$"
                  }
                ],
                "description": "Unique identifier for the view. Can be a number or string (lowercase, numbers, underscores, hyphens only).",
                "title": "View ID",
                "examples": [
                  1,
                  2,
                  "default",
                  "kanban_view"
                ]
              },
              "name": {
                "type": "string",
                "description": "Human-readable name for the view. Must be non-empty.",
                "title": "View Name",
                "minLength": 1,
                "examples": [
                  "All Records",
                  "Active Tasks",
                  "Completed Orders"
                ],
                "maxLength": 100
              },
              "query": {
                "type": "string"
              },
              "materialized": {
                "type": "boolean"
              },
              "refreshOnMigration": {
                "type": "boolean"
              },
              "isDefault": {
                "type": "boolean"
              },
              "filters": {
                "anyOf": [
                  {
                    "type": "object",
                    "required": [
                      "field",
                      "operator",
                      "value"
                    ],
                    "properties": {
                      "field": {
                        "type": "string"
                      },
                      "operator": {
                        "type": "string"
                      },
                      "value": {
                        "$id": "/schemas/unknown"
                      }
                    },
                    "additionalProperties": false,
                    "description": "A single filter condition specifying field, operator, and value.",
                    "title": "Filter Condition"
                  },
                  {
                    "type": "object",
                    "required": [
                      "and"
                    ],
                    "properties": {
                      "and": {
                        "type": "array",
                        "items": {
                          "$ref": "#/$defs/ViewFilterNode"
                        }
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "required": [
                      "or"
                    ],
                    "properties": {
                      "or": {
                        "type": "array",
                        "items": {
                          "$ref": "#/$defs/ViewFilterNode"
                        }
                      }
                    },
                    "additionalProperties": false
                  }
                ],
                "description": "Filter configuration using nested and/or groups.",
                "title": "View Filters"
              },
              "sorts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "field",
                    "direction"
                  ],
                  "properties": {
                    "field": {
                      "type": "string"
                    },
                    "direction": {
                      "type": "string",
                      "enum": [
                        "asc",
                        "desc"
                      ]
                    }
                  },
                  "additionalProperties": false,
                  "description": "Sort configuration for a single field.",
                  "title": "View Sort"
                }
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Array of field names to include in the view.",
                "title": "View Fields"
              },
              "groupBy": {
                "type": "object",
                "required": [
                  "field"
                ],
                "properties": {
                  "field": {
                    "type": "string"
                  },
                  "direction": {
                    "type": "string",
                    "enum": [
                      "asc",
                      "desc"
                    ]
                  }
                },
                "additionalProperties": false,
                "description": "Grouping configuration specifying which field to group by.",
                "title": "View Group By"
              },
              "permissions": {
                "anyOf": [
                  {
                    "type": "object",
                    "required": [],
                    "properties": {
                      "read": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Array of role names (supports both standard and custom roles). At least one role required.",
                        "title": "Flexible Roles",
                        "examples": [
                          [
                            "admin"
                          ],
                          [
                            "admin",
                            "member"
                          ],
                          [
                            "admin",
                            "editor",
                            "custom-role"
                          ]
                        ],
                        "minItems": 1
                      },
                      "write": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Array of role names (supports both standard and custom roles). At least one role required.",
                        "title": "Flexible Roles",
                        "examples": [
                          [
                            "admin"
                          ],
                          [
                            "admin",
                            "member"
                          ],
                          [
                            "admin",
                            "editor",
                            "custom-role"
                          ]
                        ],
                        "minItems": 1
                      }
                    },
                    "additionalProperties": false,
                    "description": "View access control using role arrays.",
                    "title": "Role-Based View Permissions",
                    "examples": [
                      {
                        "read": [
                          "admin",
                          "member"
                        ],
                        "write": [
                          "admin"
                        ]
                      },
                      {
                        "read": [
                          "admin",
                          "member",
                          "viewer"
                        ]
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "required": [
                      "public"
                    ],
                    "properties": {
                      "public": {
                        "type": "boolean",
                        "enum": [
                          true
                        ]
                      }
                    },
                    "additionalProperties": false,
                    "description": "View is publicly accessible without authentication.",
                    "title": "Public View Permissions",
                    "examples": [
                      {
                        "public": true
                      }
                    ]
                  }
                ],
                "description": "Permission configuration for the view. Use role-based ({ read, write }) or public ({ public: true }).",
                "title": "View Permissions",
                "examples": [
                  {
                    "read": [
                      "admin",
                      "member"
                    ],
                    "write": [
                      "admin"
                    ]
                  },
                  {
                    "public": true
                  }
                ]
              }
            },
            "additionalProperties": false,
            "description": "A database view configuration for a table. Supports both SQL query mode (PostgreSQL VIEW) and JSON config mode (declarative filters, sorts, grouping).",
            "title": "View",
            "examples": [
              {
                "id": "active_users",
                "name": "Active Users",
                "query": "SELECT * FROM users WHERE active = true"
              },
              {
                "id": "order_stats",
                "name": "Order Statistics",
                "query": "SELECT customer_id, COUNT(*) as order_count, SUM(amount) as total FROM orders GROUP BY customer_id",
                "materialized": true,
                "refreshOnMigration": true
              },
              {
                "id": 1,
                "name": "Active Tasks",
                "isDefault": true,
                "filters": {
                  "and": [
                    {
                      "field": "status",
                      "operator": "equals",
                      "value": "active"
                    }
                  ]
                },
                "sorts": [
                  {
                    "field": "priority",
                    "direction": "desc"
                  }
                ]
              }
            ]
          }
        },
        "foreignKeys": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "name",
              "fields",
              "referencedTable",
              "referencedFields"
            ],
            "properties": {
              "name": {
                "type": "string",
                "description": "Constraint name following PostgreSQL naming conventions (lowercase, underscores, max 63 chars)",
                "title": "Foreign Key Name",
                "minLength": 1,
                "maxLength": 63,
                "pattern": "^[a-z_][a-z0-9_]*$"
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Local columns that reference the parent table",
                "title": "Foreign Key Fields",
                "minItems": 1
              },
              "referencedTable": {
                "type": "string",
                "description": "Parent table name that contains the referenced columns",
                "title": "Referenced Table",
                "minLength": 1
              },
              "referencedFields": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Columns in the parent table that are referenced",
                "title": "Referenced Fields",
                "minItems": 1
              },
              "onDelete": {
                "type": "string",
                "enum": [
                  "cascade",
                  "set-null",
                  "restrict",
                  "no-action"
                ],
                "description": "Referential action when parent row is deleted",
                "title": "On Delete Action"
              },
              "onUpdate": {
                "type": "string",
                "enum": [
                  "cascade",
                  "set-null",
                  "restrict",
                  "no-action"
                ],
                "description": "Referential action when parent primary key is updated",
                "title": "On Update Action"
              }
            },
            "additionalProperties": false,
            "description": "Composite foreign key constraint for multi-column relationships between tables",
            "title": "Foreign Key"
          }
        },
        "constraints": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "name",
              "check"
            ],
            "properties": {
              "name": {
                "type": "string",
                "description": "Unique name for the CHECK constraint (lowercase, alphanumeric with underscores)",
                "title": "Constraint Name",
                "minLength": 1,
                "examples": [
                  "chk_active_members_have_email",
                  "chk_price_positive",
                  "chk_end_after_start"
                ],
                "pattern": "^[a-z][a-z0-9_]*$"
              },
              "check": {
                "type": "string",
                "description": "PostgreSQL boolean expression that must evaluate to TRUE for valid data",
                "title": "Check Expression",
                "examples": [
                  "(is_active = false) OR (email IS NOT NULL)",
                  "price > 0",
                  "end_date > start_date",
                  "(status = 'completed') OR (completed_at IS NULL)"
                ],
                "minLength": 1
              }
            },
            "additionalProperties": false
          },
          "description": "Table-level CHECK constraints for enforcing complex business rules beyond field-level validation",
          "title": "Check Constraints",
          "examples": [
            [
              {
                "name": "chk_active_members_have_email",
                "check": "(is_active = false) OR (email IS NOT NULL)"
              }
            ],
            [
              {
                "name": "chk_price_positive",
                "check": "price > 0"
              },
              {
                "name": "chk_end_after_start",
                "check": "end_date > start_date"
              }
            ]
          ]
        },
        "permissions": {
          "type": "object",
          "required": [],
          "properties": {
            "read": {
              "anyOf": [
                {
                  "type": "string",
                  "enum": [
                    "all",
                    "authenticated"
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Array of role names that have access (e.g., admin, editor). At least one role.",
                  "title": "Role List",
                  "examples": [
                    [
                      "admin"
                    ],
                    [
                      "admin",
                      "editor"
                    ],
                    [
                      "admin",
                      "member",
                      "viewer"
                    ]
                  ],
                  "minItems": 1
                }
              ],
              "description": "Permission value for a single operation. 'all' (everyone), 'authenticated' (logged-in users), or role array ['admin', 'editor'].",
              "title": "Table Permission",
              "examples": [
                "all",
                "authenticated",
                [
                  "admin"
                ],
                [
                  "admin",
                  "editor"
                ]
              ]
            },
            "comment": {
              "anyOf": [
                {
                  "type": "string",
                  "enum": [
                    "all",
                    "authenticated"
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Array of role names that have access (e.g., admin, editor). At least one role.",
                  "title": "Role List",
                  "examples": [
                    [
                      "admin"
                    ],
                    [
                      "admin",
                      "editor"
                    ],
                    [
                      "admin",
                      "member",
                      "viewer"
                    ]
                  ],
                  "minItems": 1
                }
              ],
              "description": "Permission value for a single operation. 'all' (everyone), 'authenticated' (logged-in users), or role array ['admin', 'editor'].",
              "title": "Table Permission",
              "examples": [
                "all",
                "authenticated",
                [
                  "admin"
                ],
                [
                  "admin",
                  "editor"
                ]
              ]
            },
            "create": {
              "anyOf": [
                {
                  "type": "string",
                  "enum": [
                    "all",
                    "authenticated"
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Array of role names that have access (e.g., admin, editor). At least one role.",
                  "title": "Role List",
                  "examples": [
                    [
                      "admin"
                    ],
                    [
                      "admin",
                      "editor"
                    ],
                    [
                      "admin",
                      "member",
                      "viewer"
                    ]
                  ],
                  "minItems": 1
                }
              ],
              "description": "Permission value for a single operation. 'all' (everyone), 'authenticated' (logged-in users), or role array ['admin', 'editor'].",
              "title": "Table Permission",
              "examples": [
                "all",
                "authenticated",
                [
                  "admin"
                ],
                [
                  "admin",
                  "editor"
                ]
              ]
            },
            "update": {
              "anyOf": [
                {
                  "type": "string",
                  "enum": [
                    "all",
                    "authenticated"
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Array of role names that have access (e.g., admin, editor). At least one role.",
                  "title": "Role List",
                  "examples": [
                    [
                      "admin"
                    ],
                    [
                      "admin",
                      "editor"
                    ],
                    [
                      "admin",
                      "member",
                      "viewer"
                    ]
                  ],
                  "minItems": 1
                }
              ],
              "description": "Permission value for a single operation. 'all' (everyone), 'authenticated' (logged-in users), or role array ['admin', 'editor'].",
              "title": "Table Permission",
              "examples": [
                "all",
                "authenticated",
                [
                  "admin"
                ],
                [
                  "admin",
                  "editor"
                ]
              ]
            },
            "delete": {
              "anyOf": [
                {
                  "type": "string",
                  "enum": [
                    "all",
                    "authenticated"
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Array of role names that have access (e.g., admin, editor). At least one role.",
                  "title": "Role List",
                  "examples": [
                    [
                      "admin"
                    ],
                    [
                      "admin",
                      "editor"
                    ],
                    [
                      "admin",
                      "member",
                      "viewer"
                    ]
                  ],
                  "minItems": 1
                }
              ],
              "description": "Permission value for a single operation. 'all' (everyone), 'authenticated' (logged-in users), or role array ['admin', 'editor'].",
              "title": "Table Permission",
              "examples": [
                "all",
                "authenticated",
                [
                  "admin"
                ],
                [
                  "admin",
                  "editor"
                ]
              ]
            },
            "fields": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "field"
                ],
                "properties": {
                  "field": {
                    "type": "string"
                  },
                  "read": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "authenticated"
                        ]
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Array of role names that have access (e.g., admin, editor). At least one role.",
                        "title": "Role List",
                        "examples": [
                          [
                            "admin"
                          ],
                          [
                            "admin",
                            "editor"
                          ],
                          [
                            "admin",
                            "member",
                            "viewer"
                          ]
                        ],
                        "minItems": 1
                      }
                    ],
                    "description": "Permission value for a single operation. 'all' (everyone), 'authenticated' (logged-in users), or role array ['admin', 'editor'].",
                    "title": "Table Permission",
                    "examples": [
                      "all",
                      "authenticated",
                      [
                        "admin"
                      ],
                      [
                        "admin",
                        "editor"
                      ]
                    ]
                  },
                  "write": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "authenticated"
                        ]
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Array of role names that have access (e.g., admin, editor). At least one role.",
                        "title": "Role List",
                        "examples": [
                          [
                            "admin"
                          ],
                          [
                            "admin",
                            "editor"
                          ],
                          [
                            "admin",
                            "member",
                            "viewer"
                          ]
                        ],
                        "minItems": 1
                      }
                    ],
                    "description": "Permission value for a single operation. 'all' (everyone), 'authenticated' (logged-in users), or role array ['admin', 'editor'].",
                    "title": "Table Permission",
                    "examples": [
                      "all",
                      "authenticated",
                      [
                        "admin"
                      ],
                      [
                        "admin",
                        "editor"
                      ]
                    ]
                  }
                },
                "additionalProperties": false,
                "description": "Granular permission for a specific field. Uses same format as table-level: 'all', 'authenticated', or role array.",
                "title": "Field Permission",
                "examples": [
                  {
                    "field": "salary",
                    "read": [
                      "admin",
                      "hr"
                    ],
                    "write": [
                      "admin"
                    ]
                  },
                  {
                    "field": "department",
                    "read": "all",
                    "write": [
                      "admin"
                    ]
                  }
                ]
              },
              "description": "Array of field-level permission configurations for table permissions.",
              "title": "Table Field Permissions"
            },
            "inherit": {
              "type": "string",
              "description": "Name of the parent table to inherit permissions from",
              "minLength": 1
            },
            "override": {
              "type": "object",
              "required": [],
              "properties": {
                "read": {
                  "anyOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "authenticated"
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Array of role names that have access (e.g., admin, editor). At least one role.",
                      "title": "Role List",
                      "examples": [
                        [
                          "admin"
                        ],
                        [
                          "admin",
                          "editor"
                        ],
                        [
                          "admin",
                          "member",
                          "viewer"
                        ]
                      ],
                      "minItems": 1
                    }
                  ],
                  "description": "Permission value for a single operation. 'all' (everyone), 'authenticated' (logged-in users), or role array ['admin', 'editor'].",
                  "title": "Table Permission",
                  "examples": [
                    "all",
                    "authenticated",
                    [
                      "admin"
                    ],
                    [
                      "admin",
                      "editor"
                    ]
                  ]
                },
                "comment": {
                  "anyOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "authenticated"
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Array of role names that have access (e.g., admin, editor). At least one role.",
                      "title": "Role List",
                      "examples": [
                        [
                          "admin"
                        ],
                        [
                          "admin",
                          "editor"
                        ],
                        [
                          "admin",
                          "member",
                          "viewer"
                        ]
                      ],
                      "minItems": 1
                    }
                  ],
                  "description": "Permission value for a single operation. 'all' (everyone), 'authenticated' (logged-in users), or role array ['admin', 'editor'].",
                  "title": "Table Permission",
                  "examples": [
                    "all",
                    "authenticated",
                    [
                      "admin"
                    ],
                    [
                      "admin",
                      "editor"
                    ]
                  ]
                },
                "create": {
                  "anyOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "authenticated"
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Array of role names that have access (e.g., admin, editor). At least one role.",
                      "title": "Role List",
                      "examples": [
                        [
                          "admin"
                        ],
                        [
                          "admin",
                          "editor"
                        ],
                        [
                          "admin",
                          "member",
                          "viewer"
                        ]
                      ],
                      "minItems": 1
                    }
                  ],
                  "description": "Permission value for a single operation. 'all' (everyone), 'authenticated' (logged-in users), or role array ['admin', 'editor'].",
                  "title": "Table Permission",
                  "examples": [
                    "all",
                    "authenticated",
                    [
                      "admin"
                    ],
                    [
                      "admin",
                      "editor"
                    ]
                  ]
                },
                "update": {
                  "anyOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "authenticated"
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Array of role names that have access (e.g., admin, editor). At least one role.",
                      "title": "Role List",
                      "examples": [
                        [
                          "admin"
                        ],
                        [
                          "admin",
                          "editor"
                        ],
                        [
                          "admin",
                          "member",
                          "viewer"
                        ]
                      ],
                      "minItems": 1
                    }
                  ],
                  "description": "Permission value for a single operation. 'all' (everyone), 'authenticated' (logged-in users), or role array ['admin', 'editor'].",
                  "title": "Table Permission",
                  "examples": [
                    "all",
                    "authenticated",
                    [
                      "admin"
                    ],
                    [
                      "admin",
                      "editor"
                    ]
                  ]
                },
                "delete": {
                  "anyOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "authenticated"
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Array of role names that have access (e.g., admin, editor). At least one role.",
                      "title": "Role List",
                      "examples": [
                        [
                          "admin"
                        ],
                        [
                          "admin",
                          "editor"
                        ],
                        [
                          "admin",
                          "member",
                          "viewer"
                        ]
                      ],
                      "minItems": 1
                    }
                  ],
                  "description": "Permission value for a single operation. 'all' (everyone), 'authenticated' (logged-in users), or role array ['admin', 'editor'].",
                  "title": "Table Permission",
                  "examples": [
                    "all",
                    "authenticated",
                    [
                      "admin"
                    ],
                    [
                      "admin",
                      "editor"
                    ]
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false,
          "description": "Permissions for table operations. Each operation accepts 'all', 'authenticated', or a role array. Omitted operations default to deny.",
          "title": "Table Permissions",
          "examples": [
            {
              "read": "all",
              "comment": "authenticated",
              "create": [
                "admin"
              ],
              "update": [
                "admin"
              ],
              "delete": [
                "admin"
              ]
            },
            {
              "read": "all",
              "create": [
                "admin",
                "editor"
              ],
              "update": [
                "admin",
                "editor"
              ],
              "delete": [
                "admin"
              ]
            }
          ]
        },
        "allowDestructive": {
          "type": "boolean"
        }
      },
      "additionalProperties": false,
      "description": "A database table that defines the structure of an entity in your application. Contains fields, constraints, and indexes to organize and validate data.",
      "title": "Table",
      "examples": [
        {
          "id": 1,
          "name": "users",
          "fields": [
            {
              "id": 1,
              "name": "email",
              "required": true,
              "type": "email"
            },
            {
              "id": 2,
              "name": "name",
              "required": true,
              "type": "single-line-text"
            }
          ]
        },
        {
          "id": 2,
          "name": "products",
          "fields": [
            {
              "id": 1,
              "name": "title",
              "required": true,
              "type": "single-line-text"
            },
            {
              "id": 2,
              "name": "price",
              "required": true,
              "type": "currency",
              "currency": "USD"
            },
            {
              "id": 3,
              "name": "description",
              "required": false,
              "type": "long-text"
            }
          ],
          "primaryKey": {
            "type": "composite",
            "fields": [
              "id"
            ]
          }
        }
      ]
    },
    "TableId": {
      "anyOf": [
        {
          "$ref": "#/$defs/Int",
          "description": "a number less than or equal to 9007199254740991",
          "minimum": 1,
          "maximum": 9007199254740991
        },
        {
          "type": "string",
          "description": "a string at least 1 character(s) long",
          "minLength": 1
        }
      ],
      "description": "Unique identifier for a table. Accepts positive integers, UUID strings, or simple string identifiers. Examples: 1, 2, 100, \"550e8400-e29b-41d4-a716-446655440000\", \"products\"",
      "title": "Table ID"
    },
    "Int": {
      "type": "integer",
      "description": "an integer"
    },
    "FieldId": {
      "type": "integer",
      "description": "Unique identifier for a field within a table. Examples: 1, 2, 3, 100",
      "title": "Field ID",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "ViewFilterNode": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "field",
            "operator",
            "value"
          ],
          "properties": {
            "field": {
              "type": "string"
            },
            "operator": {
              "type": "string"
            },
            "value": {
              "$id": "/schemas/unknown"
            }
          },
          "additionalProperties": false,
          "description": "A single filter condition specifying field, operator, and value.",
          "title": "Filter Condition"
        },
        {
          "type": "object",
          "required": [
            "and"
          ],
          "properties": {
            "and": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/ViewFilterNode"
              }
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "or"
          ],
          "properties": {
            "or": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/ViewFilterNode"
              }
            }
          },
          "additionalProperties": false
        }
      ],
      "description": "A filter condition or a logical group (and/or) of filter nodes.",
      "title": "Filter Node"
    },
    "Theme": {
      "type": "object",
      "required": [],
      "properties": {
        "colors": {
          "type": "object",
          "required": [],
          "properties": {},
          "description": "Color design tokens with support for semantic naming and variants",
          "title": "Color Palette",
          "patternProperties": {
            "^[a-z]+[a-z0-9]*(-[a-z0-9]+)*$": {
              "type": "string",
              "description": "Color value in hex, rgb, rgba, hsl, or hsla format",
              "title": "Color Value",
              "examples": [
                "#007bff",
                "#007bff80",
                "rgb(0, 123, 255)",
                "hsl(210, 100%, 50%)"
              ],
              "pattern": "^#[0-9A-Fa-f]{6}$|^#[0-9A-Fa-f]{8}$|^rgb\\(|^rgba\\(|^hsl\\(|^hsla\\("
            }
          }
        },
        "fonts": {
          "type": "object",
          "required": [],
          "properties": {},
          "description": "Typography design tokens for font families and styles",
          "title": "Font Configuration",
          "patternProperties": {
            "^[a-zA-Z]+$": {
              "type": "object",
              "required": [
                "family"
              ],
              "properties": {
                "family": {
                  "type": "string",
                  "description": "Primary font family name",
                  "title": "Font Family"
                },
                "fallback": {
                  "type": "string",
                  "description": "Fallback font stack",
                  "title": "Fallback Font Stack",
                  "examples": [
                    "system-ui, sans-serif",
                    "Georgia, serif",
                    "monospace"
                  ]
                },
                "weights": {
                  "type": "array",
                  "items": {
                    "type": "number",
                    "enum": [
                      100,
                      200,
                      300,
                      400,
                      500,
                      600,
                      700,
                      800,
                      900
                    ],
                    "description": "Font weight value (100-900 in increments of 100)",
                    "title": "Font Weight"
                  },
                  "description": "Available font weights",
                  "title": "Font Weights",
                  "examples": [
                    [
                      400,
                      700
                    ],
                    [
                      300,
                      400,
                      500,
                      600,
                      700
                    ]
                  ]
                },
                "style": {
                  "type": "string",
                  "enum": [
                    "normal",
                    "italic",
                    "oblique"
                  ],
                  "description": "Font style",
                  "title": "Font Style",
                  "default": "normal"
                },
                "size": {
                  "type": "string",
                  "description": "Default font size",
                  "title": "Font Size",
                  "examples": [
                    "16px",
                    "1rem",
                    "14px"
                  ]
                },
                "lineHeight": {
                  "type": "string",
                  "description": "Default line height",
                  "title": "Line Height",
                  "examples": [
                    "1.5",
                    "1.75",
                    "24px"
                  ]
                },
                "letterSpacing": {
                  "type": "string",
                  "description": "Letter spacing",
                  "title": "Letter Spacing",
                  "examples": [
                    "0",
                    "0.05em",
                    "-0.01em"
                  ]
                },
                "transform": {
                  "type": "string",
                  "enum": [
                    "none",
                    "uppercase",
                    "lowercase",
                    "capitalize"
                  ],
                  "description": "Text transformation",
                  "title": "Text Transform"
                },
                "url": {
                  "type": "string",
                  "description": "Font file URL or Google Fonts URL",
                  "title": "Font URL",
                  "examples": [
                    "https://fonts.googleapis.com/css2?family=Inter",
                    "/fonts/bely-display.woff2"
                  ]
                }
              },
              "additionalProperties": false,
              "description": "Individual font configuration with family and optional properties",
              "title": "Font Configuration Item"
            }
          }
        },
        "spacing": {
          "type": "object",
          "required": [],
          "properties": {},
          "description": "Spacing design tokens for consistent layout",
          "title": "Spacing Configuration",
          "examples": [
            {
              "section": "py-16 sm:py-20",
              "container": "max-w-7xl mx-auto px-4",
              "container-small": "max-w-4xl mx-auto px-4",
              "container-xsmall": "max-w-2xl mx-auto px-4",
              "gap": "gap-6",
              "gap-small": "gap-4",
              "gap-large": "gap-8",
              "padding": "p-6",
              "padding-small": "p-4",
              "padding-large": "p-8",
              "margin": "m-6",
              "margin-small": "m-4",
              "margin-large": "m-8"
            }
          ],
          "patternProperties": {
            "^[a-z]+(-[a-z]+)*$": {
              "type": "string",
              "description": "Spacing value as Tailwind utility classes or CSS values (rem, px, em, %). Supports responsive variants (sm:, md:, lg:) and multiple classes.",
              "title": "Spacing Value",
              "examples": [
                "py-16",
                "px-4",
                "py-16 sm:py-20",
                "max-w-7xl mx-auto px-4",
                "gap-6",
                "p-6",
                "m-6",
                "4rem",
                "16px",
                "1.5em"
              ]
            }
          }
        },
        "animations": {
          "type": "object",
          "required": [],
          "properties": {},
          "description": "Animation and transition design tokens",
          "title": "Animation Configuration",
          "patternProperties": {
            "^[a-zA-Z][a-zA-Z0-9]*$": {
              "anyOf": [
                {
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "string"
                    },
                    {
                      "type": "object",
                      "required": [],
                      "properties": {
                        "enabled": {
                          "type": "boolean"
                        },
                        "duration": {
                          "type": "string",
                          "description": "a string matching the pattern ^[0-9]+(\\.[0-9]+)?(ms|s)$",
                          "pattern": "^[0-9]+(\\.[0-9]+)?(ms|s)$"
                        },
                        "easing": {
                          "anyOf": [
                            {
                              "type": "string",
                              "enum": [
                                "linear",
                                "ease",
                                "ease-in",
                                "ease-out",
                                "ease-in-out"
                              ]
                            },
                            {
                              "type": "string",
                              "description": "a string matching the pattern ^cubic-bezier\\(\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*\\)$",
                              "pattern": "^cubic-bezier\\(\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*\\)$"
                            },
                            {
                              "type": "string",
                              "description": "a string matching the pattern ^steps\\(\\s*\\d+\\s*,\\s*(start|end|jump-start|jump-end|jump-none|jump-both)\\s*\\)$",
                              "pattern": "^steps\\(\\s*\\d+\\s*,\\s*(start|end|jump-start|jump-end|jump-none|jump-both)\\s*\\)$"
                            }
                          ],
                          "description": "Transition timing function"
                        },
                        "delay": {
                          "type": "string",
                          "description": "a string matching the pattern ^[0-9]+(\\.[0-9]+)?(ms|s)$",
                          "pattern": "^[0-9]+(\\.[0-9]+)?(ms|s)$"
                        },
                        "keyframes": {
                          "type": "object",
                          "required": [],
                          "properties": {},
                          "additionalProperties": {
                            "$id": "/schemas/unknown"
                          }
                        }
                      },
                      "additionalProperties": false,
                      "description": "Detailed animation configuration",
                      "title": "Animation Configuration Object"
                    }
                  ],
                  "description": "Animation configuration (boolean, string, or object)",
                  "title": "Animation Value"
                },
                {
                  "type": "object",
                  "required": [],
                  "properties": {},
                  "patternProperties": {
                    "^[a-zA-Z][a-zA-Z0-9]*$": {
                      "type": "string",
                      "description": "a string matching the pattern ^[0-9]+(\\.[0-9]+)?(ms|s)$",
                      "pattern": "^[0-9]+(\\.[0-9]+)?(ms|s)$"
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [],
                  "properties": {},
                  "patternProperties": {
                    "^[a-zA-Z][a-zA-Z0-9]*$": {
                      "anyOf": [
                        {
                          "type": "string",
                          "enum": [
                            "linear",
                            "ease",
                            "ease-in",
                            "ease-out",
                            "ease-in-out"
                          ]
                        },
                        {
                          "type": "string",
                          "description": "a string matching the pattern ^cubic-bezier\\(\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*\\)$",
                          "pattern": "^cubic-bezier\\(\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*\\)$"
                        },
                        {
                          "type": "string",
                          "description": "a string matching the pattern ^steps\\(\\s*\\d+\\s*,\\s*(start|end|jump-start|jump-end|jump-none|jump-both)\\s*\\)$",
                          "pattern": "^steps\\(\\s*\\d+\\s*,\\s*(start|end|jump-start|jump-end|jump-none|jump-both)\\s*\\)$"
                        }
                      ],
                      "description": "Transition timing function"
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [],
                  "properties": {},
                  "patternProperties": {
                    "^[a-zA-Z][a-zA-Z0-9]*$": {
                      "type": "object",
                      "required": [],
                      "properties": {},
                      "additionalProperties": {
                        "$id": "/schemas/unknown"
                      }
                    }
                  }
                }
              ]
            }
          }
        },
        "breakpoints": {
          "type": "object",
          "required": [],
          "properties": {},
          "description": "Responsive design breakpoints",
          "title": "Breakpoints",
          "patternProperties": {
            "^[a-z0-9]+$": {
              "type": "string",
              "description": "Breakpoint value in pixels",
              "title": "Breakpoint Value",
              "examples": [
                "640px",
                "768px",
                "1024px",
                "1280px"
              ],
              "pattern": "^[0-9]+px$"
            }
          }
        },
        "shadows": {
          "type": "object",
          "required": [],
          "properties": {},
          "description": "Box shadow design tokens",
          "title": "Shadows",
          "patternProperties": {
            "^[a-z0-9]+(-[a-z0-9]+)*$": {
              "type": "string",
              "description": "CSS box-shadow value",
              "title": "Shadow Value",
              "examples": [
                "0 1px 2px 0 rgb(0 0 0 / 0.05)",
                "0 4px 6px -1px rgb(0 0 0 / 0.1)",
                "inset 0 2px 4px 0 rgb(0 0 0 / 0.05)"
              ]
            }
          }
        },
        "borderRadius": {
          "type": "object",
          "required": [],
          "properties": {},
          "description": "Border radius design tokens",
          "title": "Border Radius",
          "patternProperties": {
            "^(DEFAULT|[a-z0-9]+(-[a-z0-9]+)*)$": {
              "type": "string",
              "description": "CSS border-radius value",
              "title": "Border Radius Value",
              "examples": [
                "0",
                "0.125rem",
                "0.5rem",
                "9999px"
              ]
            }
          }
        }
      },
      "additionalProperties": false,
      "description": "Design tokens for colors, typography, spacing, and animations",
      "title": "Theme Configuration"
    },
    "Languages": {
      "type": "object",
      "required": [
        "default",
        "supported"
      ],
      "properties": {
        "default": {
          "type": "string",
          "description": "Short language code (2 letters) for URLs and routing",
          "title": "Language Code",
          "examples": [
            "en",
            "fr",
            "es",
            "de",
            "ar",
            "he"
          ],
          "pattern": "^[a-z]{2}$"
        },
        "supported": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "code",
              "label"
            ],
            "properties": {
              "code": {
                "type": "string",
                "description": "Short language code used for URLs and routing (ISO 639-1, 2 letters)",
                "title": "Language Code",
                "examples": [
                  "en",
                  "fr",
                  "es",
                  "de",
                  "ar",
                  "he"
                ],
                "pattern": "^[a-z]{2}$"
              },
              "locale": {
                "type": "string",
                "description": "Full locale code (optional - defaults to short code if not specified). Used for HTML lang attribute and hreflang links.",
                "title": "Language Locale",
                "examples": [
                  "en-US",
                  "fr-FR",
                  "es-ES",
                  "de-DE",
                  "ar-SA",
                  "he-IL"
                ],
                "pattern": "^[a-z]{2}-[A-Z]{2}$"
              },
              "label": {
                "type": "string",
                "description": "Human-readable language name",
                "title": "Language Label",
                "examples": [
                  "English",
                  "Français",
                  "Español",
                  "العربية"
                ]
              },
              "direction": {
                "type": "string",
                "enum": [
                  "ltr",
                  "rtl"
                ],
                "description": "Text direction (left-to-right or right-to-left)",
                "title": "Text Direction"
              },
              "flag": {
                "type": "string",
                "description": "Flag emoji or icon path",
                "title": "Language Flag",
                "examples": [
                  "🇺🇸",
                  "🇫🇷",
                  "🇪🇸",
                  "/flags/us.svg"
                ]
              }
            },
            "additionalProperties": false,
            "description": "Configuration for a single supported language",
            "title": "Language Configuration"
          },
          "description": "List of supported languages",
          "title": "Supported Languages",
          "minItems": 1
        },
        "fallback": {
          "type": "string",
          "description": "Short language code (2 letters) for URLs and routing",
          "title": "Language Code",
          "examples": [
            "en",
            "fr",
            "es",
            "de",
            "ar",
            "he"
          ],
          "pattern": "^[a-z]{2}$"
        },
        "detectBrowser": {
          "type": "boolean"
        },
        "persistSelection": {
          "type": "boolean"
        },
        "translations": {
          "type": "object",
          "required": [],
          "properties": {},
          "description": "Translation dictionaries for all supported languages (keyed by short codes: en, fr, es). Use $t:key syntax to reference translations.",
          "title": "Centralized Translations",
          "patternProperties": {
            "^[a-z]{2}$": {
              "type": "object",
              "required": [],
              "properties": {},
              "description": "Maps translation keys to localized strings for a single language",
              "title": "Translation Dictionary",
              "patternProperties": {
                "^[a-zA-Z0-9._-]+$": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "additionalProperties": false,
      "description": "Multi-language support configuration for the entire application",
      "title": "Languages Configuration"
    },
    "Auth": {
      "type": "object",
      "required": [
        "strategies"
      ],
      "properties": {
        "allowSignUp": {
          "type": "boolean",
          "description": "Controls user self-registration. true allows anyone to sign up. false restricts user creation to admins.",
          "title": "Allow Sign-Up",
          "examples": [
            true,
            false
          ]
        },
        "strategies": {
          "type": "array",
          "minItems": 1,
          "items": {
            "anyOf": [
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "emailAndPassword"
                    ]
                  },
                  "minPasswordLength": {
                    "type": "number",
                    "description": "Minimum password length (6-128, default: 8)",
                    "minimum": 6,
                    "maximum": 128
                  },
                  "maxPasswordLength": {
                    "type": "number",
                    "description": "Maximum password length (8-256, default: 128)",
                    "minimum": 8,
                    "maximum": 256
                  },
                  "requireEmailVerification": {
                    "type": "boolean",
                    "description": "Require email verification before sign-in (default: false)"
                  },
                  "autoSignIn": {
                    "type": "boolean",
                    "description": "Auto sign in after signup (default: true)"
                  }
                },
                "additionalProperties": false,
                "description": "Traditional credential-based authentication strategy",
                "title": "Email and Password Strategy",
                "examples": [
                  {
                    "type": "emailAndPassword"
                  },
                  {
                    "type": "emailAndPassword",
                    "minPasswordLength": 12
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "magicLink"
                    ]
                  },
                  "expirationMinutes": {
                    "type": "number",
                    "description": "Link expiration time in minutes (default: 15)",
                    "exclusiveMinimum": 0
                  }
                },
                "additionalProperties": false,
                "description": "Passwordless authentication via email link",
                "title": "Magic Link Strategy",
                "examples": [
                  {
                    "type": "magicLink"
                  },
                  {
                    "type": "magicLink",
                    "expirationMinutes": 30
                  }
                ]
              },
              {
                "type": "object",
                "required": [
                  "type",
                  "providers"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "oauth"
                    ]
                  },
                  "providers": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                      "type": "string",
                      "enum": [
                        "google",
                        "github",
                        "microsoft",
                        "slack",
                        "gitlab"
                      ],
                      "description": "Supported OAuth providers for social login",
                      "title": "OAuth Provider"
                    },
                    "description": "OAuth providers to enable. Credentials loaded from environment variables."
                  }
                },
                "additionalProperties": false,
                "description": "Social login with OAuth providers (google, github, microsoft, slack, gitlab)",
                "title": "OAuth Strategy",
                "examples": [
                  {
                    "type": "oauth",
                    "providers": [
                      "google",
                      "github"
                    ]
                  }
                ]
              }
            ],
            "description": "Authentication strategy configuration. Discriminated by `type` field: emailAndPassword, magicLink, or oauth.",
            "title": "Auth Strategy",
            "examples": [
              {
                "type": "emailAndPassword"
              },
              {
                "type": "magicLink"
              },
              {
                "type": "oauth",
                "providers": [
                  "google",
                  "github"
                ]
              }
            ]
          }
        },
        "roles": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "name"
            ],
            "properties": {
              "name": {
                "type": "string",
                "description": "Role name: lowercase, alphanumeric, hyphens. Must start with a letter.",
                "title": "Role Name",
                "examples": [
                  "editor",
                  "content-manager",
                  "moderator"
                ],
                "pattern": "^[a-z][a-z0-9-]*$"
              },
              "description": {
                "type": "string",
                "description": "Human-readable description of the role"
              },
              "level": {
                "type": "number",
                "description": "Hierarchy level (higher = more permissions). Built-in: admin=80, member=40, viewer=10"
              }
            },
            "additionalProperties": false,
            "description": "Custom role definition with name, optional description, and optional hierarchy level.",
            "title": "Role Definition",
            "examples": [
              {
                "name": "editor",
                "description": "Can edit content",
                "level": 30
              },
              {
                "name": "moderator",
                "level": 20
              },
              {
                "name": "contributor"
              }
            ]
          }
        },
        "defaultRole": {
          "type": "string",
          "description": "Role assigned to new users by default. Accepts built-in roles or custom role names. Defaults to member.",
          "title": "Default Role",
          "examples": [
            "member",
            "viewer",
            "editor"
          ]
        },
        "twoFactor": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "object",
              "required": [],
              "properties": {
                "issuer": {
                  "type": "string",
                  "description": "Issuer name shown in authenticator apps"
                },
                "backupCodes": {
                  "type": "boolean",
                  "description": "Generate backup codes for recovery"
                },
                "digits": {
                  "type": "number",
                  "description": "Number of digits in TOTP code (4-8)",
                  "minimum": 4,
                  "maximum": 8
                },
                "period": {
                  "type": "number",
                  "description": "Code rotation period in seconds",
                  "exclusiveMinimum": 0
                }
              },
              "additionalProperties": false
            }
          ],
          "description": "TOTP-based two-factor authentication",
          "title": "Two-Factor Authentication Configuration",
          "examples": [
            true,
            {
              "issuer": "MyApp",
              "backupCodes": true
            }
          ]
        },
        "emailTemplates": {
          "type": "object",
          "required": [],
          "properties": {
            "verification": {
              "type": "object",
              "required": [
                "subject"
              ],
              "properties": {
                "subject": {
                  "type": "string",
                  "description": "Email subject line with optional $variable substitution"
                },
                "text": {
                  "type": "string",
                  "description": "Plain text email body with optional $variable substitution"
                },
                "html": {
                  "type": "string",
                  "description": "HTML email body with optional $variable substitution"
                }
              },
              "additionalProperties": false,
              "description": "Email template configuration with subject and body content",
              "title": "Auth Email Template",
              "examples": [
                {
                  "subject": "Verify your email",
                  "text": "Click here to verify: $url"
                },
                {
                  "subject": "Reset your password",
                  "text": "Click the link to reset your password: $url",
                  "html": "<p>Click <a href=\"$url\">here</a> to reset your password.</p>"
                }
              ]
            },
            "resetPassword": {
              "type": "object",
              "required": [
                "subject"
              ],
              "properties": {
                "subject": {
                  "type": "string",
                  "description": "Email subject line with optional $variable substitution"
                },
                "text": {
                  "type": "string",
                  "description": "Plain text email body with optional $variable substitution"
                },
                "html": {
                  "type": "string",
                  "description": "HTML email body with optional $variable substitution"
                }
              },
              "additionalProperties": false,
              "description": "Email template configuration with subject and body content",
              "title": "Auth Email Template",
              "examples": [
                {
                  "subject": "Verify your email",
                  "text": "Click here to verify: $url"
                },
                {
                  "subject": "Reset your password",
                  "text": "Click the link to reset your password: $url",
                  "html": "<p>Click <a href=\"$url\">here</a> to reset your password.</p>"
                }
              ]
            },
            "magicLink": {
              "type": "object",
              "required": [
                "subject"
              ],
              "properties": {
                "subject": {
                  "type": "string",
                  "description": "Email subject line with optional $variable substitution"
                },
                "text": {
                  "type": "string",
                  "description": "Plain text email body with optional $variable substitution"
                },
                "html": {
                  "type": "string",
                  "description": "HTML email body with optional $variable substitution"
                }
              },
              "additionalProperties": false,
              "description": "Email template configuration with subject and body content",
              "title": "Auth Email Template",
              "examples": [
                {
                  "subject": "Verify your email",
                  "text": "Click here to verify: $url"
                },
                {
                  "subject": "Reset your password",
                  "text": "Click the link to reset your password: $url",
                  "html": "<p>Click <a href=\"$url\">here</a> to reset your password.</p>"
                }
              ]
            },
            "emailOtp": {
              "type": "object",
              "required": [
                "subject"
              ],
              "properties": {
                "subject": {
                  "type": "string",
                  "description": "Email subject line with optional $variable substitution"
                },
                "text": {
                  "type": "string",
                  "description": "Plain text email body with optional $variable substitution"
                },
                "html": {
                  "type": "string",
                  "description": "HTML email body with optional $variable substitution"
                }
              },
              "additionalProperties": false,
              "description": "Email template configuration with subject and body content",
              "title": "Auth Email Template",
              "examples": [
                {
                  "subject": "Verify your email",
                  "text": "Click here to verify: $url"
                },
                {
                  "subject": "Reset your password",
                  "text": "Click the link to reset your password: $url",
                  "html": "<p>Click <a href=\"$url\">here</a> to reset your password.</p>"
                }
              ]
            },
            "twoFactorBackupCodes": {
              "type": "object",
              "required": [
                "subject"
              ],
              "properties": {
                "subject": {
                  "type": "string",
                  "description": "Email subject line with optional $variable substitution"
                },
                "text": {
                  "type": "string",
                  "description": "Plain text email body with optional $variable substitution"
                },
                "html": {
                  "type": "string",
                  "description": "HTML email body with optional $variable substitution"
                }
              },
              "additionalProperties": false,
              "description": "Email template configuration with subject and body content",
              "title": "Auth Email Template",
              "examples": [
                {
                  "subject": "Verify your email",
                  "text": "Click here to verify: $url"
                },
                {
                  "subject": "Reset your password",
                  "text": "Click the link to reset your password: $url",
                  "html": "<p>Click <a href=\"$url\">here</a> to reset your password.</p>"
                }
              ]
            },
            "welcome": {
              "type": "object",
              "required": [
                "subject"
              ],
              "properties": {
                "subject": {
                  "type": "string",
                  "description": "Email subject line with optional $variable substitution"
                },
                "text": {
                  "type": "string",
                  "description": "Plain text email body with optional $variable substitution"
                },
                "html": {
                  "type": "string",
                  "description": "HTML email body with optional $variable substitution"
                }
              },
              "additionalProperties": false,
              "description": "Email template configuration with subject and body content",
              "title": "Auth Email Template",
              "examples": [
                {
                  "subject": "Verify your email",
                  "text": "Click here to verify: $url"
                },
                {
                  "subject": "Reset your password",
                  "text": "Click the link to reset your password: $url",
                  "html": "<p>Click <a href=\"$url\">here</a> to reset your password.</p>"
                }
              ]
            },
            "accountDeletion": {
              "type": "object",
              "required": [
                "subject"
              ],
              "properties": {
                "subject": {
                  "type": "string",
                  "description": "Email subject line with optional $variable substitution"
                },
                "text": {
                  "type": "string",
                  "description": "Plain text email body with optional $variable substitution"
                },
                "html": {
                  "type": "string",
                  "description": "HTML email body with optional $variable substitution"
                }
              },
              "additionalProperties": false,
              "description": "Email template configuration with subject and body content",
              "title": "Auth Email Template",
              "examples": [
                {
                  "subject": "Verify your email",
                  "text": "Click here to verify: $url"
                },
                {
                  "subject": "Reset your password",
                  "text": "Click the link to reset your password: $url",
                  "html": "<p>Click <a href=\"$url\">here</a> to reset your password.</p>"
                }
              ]
            }
          },
          "additionalProperties": false,
          "description": "Templates for all authentication-related emails",
          "title": "Auth Email Templates",
          "examples": [
            {
              "verification": {
                "subject": "Verify your email",
                "text": "Click to verify: $url"
              },
              "resetPassword": {
                "subject": "Reset your password",
                "text": "Reset link: $url"
              }
            }
          ]
        }
      },
      "additionalProperties": false,
      "description": "Authentication configuration with strategies, roles, and plugins. Admin features are always enabled when auth is configured.",
      "title": "Authentication Configuration",
      "examples": [
        {
          "strategies": [
            {
              "type": "emailAndPassword"
            }
          ]
        },
        {
          "allowSignUp": false,
          "strategies": [
            {
              "type": "emailAndPassword"
            }
          ]
        },
        {
          "strategies": [
            {
              "type": "emailAndPassword",
              "minPasswordLength": 12
            }
          ],
          "roles": [
            {
              "name": "editor",
              "description": "Can edit content",
              "level": 30
            }
          ],
          "defaultRole": "viewer"
        },
        {
          "strategies": [
            {
              "type": "emailAndPassword"
            },
            {
              "type": "oauth",
              "providers": [
                "google",
                "github"
              ]
            }
          ]
        }
      ]
    },
    "BuiltInAnalytics": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "object",
          "required": [],
          "properties": {
            "retentionDays": {
              "type": "integer",
              "description": "Number of days to retain analytics data (1-730)",
              "title": "Retention Days",
              "minimum": 1,
              "maximum": 730
            },
            "excludedPaths": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Glob patterns for paths excluded from tracking",
              "title": "Excluded Paths"
            },
            "respectDoNotTrack": {
              "type": "boolean"
            },
            "sessionTimeout": {
              "type": "integer",
              "description": "Session timeout in minutes (1-120)",
              "title": "Session Timeout",
              "minimum": 1,
              "maximum": 120
            }
          },
          "additionalProperties": false
        }
      ],
      "description": "First-party, privacy-friendly analytics engine. No cookies, no external dependencies, GDPR-compliant.",
      "title": "Built-in Analytics Configuration",
      "examples": [
        true,
        {
          "retentionDays": 90,
          "excludedPaths": [
            "/admin/*",
            "/api/*"
          ],
          "sessionTimeout": 15
        },
        false
      ]
    },
    "Components": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "type"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Unique component template identifier in kebab-case",
            "title": "Component Template Name",
            "examples": [
              "icon-badge",
              "section-header",
              "feature-card",
              "cta-button-2"
            ],
            "pattern": "^[a-z][a-z0-9-]*$"
          },
          "type": {
            "type": "string",
            "description": "Component type",
            "examples": [
              "container",
              "flex",
              "grid",
              "card",
              "text",
              "button"
            ]
          },
          "props": {
            "type": "object",
            "required": [],
            "properties": {},
            "description": "Properties for component templates, supporting variable references",
            "title": "Component Props",
            "patternProperties": {
              "^([a-zA-Z][a-zA-Z0-9]*|data-[a-z]+(-[a-z]+)*|aria-[a-z]+(-[a-z]+)*)$": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "number"
                  },
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "object",
                    "required": [],
                    "properties": {},
                    "additionalProperties": {
                      "$id": "/schemas/unknown"
                    }
                  },
                  {
                    "type": "array",
                    "items": {
                      "$id": "/schemas/unknown"
                    }
                  }
                ]
              }
            }
          },
          "children": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "object",
                  "required": [
                    "type"
                  ],
                  "properties": {
                    "type": {
                      "type": "string",
                      "description": "Component type identifier",
                      "title": "Component Type",
                      "examples": [
                        "icon",
                        "text",
                        "div",
                        "button"
                      ]
                    },
                    "props": {
                      "type": "object",
                      "required": [],
                      "properties": {},
                      "description": "Properties for component templates, supporting variable references",
                      "title": "Component Props",
                      "patternProperties": {
                        "^([a-zA-Z][a-zA-Z0-9]*|data-[a-z]+(-[a-z]+)*|aria-[a-z]+(-[a-z]+)*)$": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "object",
                              "required": [],
                              "properties": {},
                              "additionalProperties": {
                                "$id": "/schemas/unknown"
                              }
                            },
                            {
                              "type": "array",
                              "items": {
                                "$id": "/schemas/unknown"
                              }
                            }
                          ]
                        }
                      }
                    },
                    "children": {
                      "$ref": "#/$defs/ComponentChildren"
                    },
                    "content": {
                      "type": "string",
                      "description": "Text content (may contain $variable)",
                      "title": "Text Content",
                      "examples": [
                        "$label",
                        "$title",
                        "Static text"
                      ]
                    }
                  },
                  "additionalProperties": false,
                  "description": "Component element in a component template",
                  "title": "Component Child Element"
                },
                {
                  "type": "string"
                }
              ]
            },
            "description": "Child elements array for component templates (components or strings)",
            "title": "Component Children"
          },
          "content": {
            "type": "string",
            "description": "Text content (may contain $variable references)"
          }
        },
        "additionalProperties": false,
        "description": "A reusable UI component template with variable placeholders",
        "title": "Component Template"
      },
      "description": "Array of reusable UI component templates with variable substitution for use across pages",
      "title": "Reusable Components"
    },
    "ComponentChildren": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "description": "Component type identifier",
                "title": "Component Type",
                "examples": [
                  "icon",
                  "text",
                  "div",
                  "button"
                ]
              },
              "props": {
                "type": "object",
                "required": [],
                "properties": {},
                "description": "Properties for component templates, supporting variable references",
                "title": "Component Props",
                "patternProperties": {
                  "^([a-zA-Z][a-zA-Z0-9]*|data-[a-z]+(-[a-z]+)*|aria-[a-z]+(-[a-z]+)*)$": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "object",
                        "required": [],
                        "properties": {},
                        "additionalProperties": {
                          "$id": "/schemas/unknown"
                        }
                      },
                      {
                        "type": "array",
                        "items": {
                          "$id": "/schemas/unknown"
                        }
                      }
                    ]
                  }
                }
              },
              "children": {
                "$ref": "#/$defs/ComponentChildren"
              },
              "content": {
                "type": "string",
                "description": "Text content (may contain $variable)",
                "title": "Text Content",
                "examples": [
                  "$label",
                  "$title",
                  "Static text"
                ]
              }
            },
            "additionalProperties": false,
            "description": "Component element in a component template",
            "title": "Component Child Element"
          },
          {
            "type": "string"
          }
        ]
      },
      "description": "Child elements array for component templates (components or strings)",
      "title": "Component Children"
    },
    "Pages": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Page"
      },
      "description": "Marketing and content pages with server-side rendering support. Pages use a component-based layout system with reusable component templates for building landing pages, about pages, pricing pages, and other public-facing content. Supports comprehensive metadata, theming, and structured data for SEO optimization.",
      "title": "Pages",
      "minItems": 1
    },
    "Page": {
      "type": "object",
      "required": [
        "name",
        "path",
        "sections"
      ],
      "properties": {
        "id": {
          "$ref": "#/$defs/PageId"
        },
        "name": {
          "type": "string",
          "description": "Human-readable name for the page",
          "title": "Page Name",
          "minLength": 1,
          "examples": [
            "Home",
            "About Us",
            "Home Page",
            "Pricing",
            "Contact"
          ],
          "maxLength": 63
        },
        "path": {
          "type": "string",
          "description": "URL path for routing and navigation (supports dynamic parameters with :param)",
          "title": "Path",
          "minLength": 1,
          "examples": [
            "/home",
            "/customers",
            "/products/inventory",
            "/admin/settings",
            "/reports/sales",
            "/blog/:slug",
            "/products/:id"
          ],
          "pattern": "^\\/[a-z0-9-_/:]*$"
        },
        "meta": {
          "type": "object",
          "required": [
            "title"
          ],
          "properties": {
            "lang": {
              "type": "string",
              "description": "Page language code (optional - uses auto-detection if not specified)",
              "examples": [
                "en-US",
                "fr-FR",
                "es-ES",
                "de-DE"
              ],
              "pattern": "^[a-z]{2}(-[A-Z]{2})?$"
            },
            "title": {
              "type": "string",
              "description": "Page title for browser tab and SEO (max 60 characters for optimal display)",
              "maxLength": 60
            },
            "description": {
              "type": "string",
              "description": "Page description for SEO and social sharing (max 160 characters)",
              "maxLength": 160
            },
            "keywords": {
              "type": "string",
              "description": "Comma-separated keywords for SEO"
            },
            "author": {
              "type": "string",
              "description": "Page author or organization name"
            },
            "canonical": {
              "type": "string",
              "description": "Canonical URL to prevent duplicate content issues"
            },
            "robots": {
              "type": "string",
              "description": "Robot directives (e.g., noindex, nofollow, noindex, nofollow)"
            },
            "noindex": {
              "type": "boolean",
              "description": "Prevent indexing by search engines (shorthand for robots: noindex)"
            },
            "priority": {
              "type": "number",
              "description": "Sitemap priority (0.0 to 1.0) for search engine crawling hints",
              "minimum": 0,
              "maximum": 1
            },
            "changefreq": {
              "type": "string",
              "enum": [
                "always",
                "hourly",
                "daily",
                "weekly",
                "monthly",
                "yearly",
                "never"
              ],
              "description": "Sitemap change frequency hint for search engines"
            },
            "favicon": {
              "type": "string",
              "description": "Default favicon path",
              "title": "Favicon",
              "pattern": "^\\.\\/.+\\.(ico|png|svg)$"
            },
            "favicons": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "rel",
                      "href"
                    ],
                    "properties": {
                      "rel": {
                        "type": "string",
                        "enum": [
                          "icon",
                          "apple-touch-icon",
                          "manifest",
                          "mask-icon"
                        ],
                        "description": "Favicon relationship type"
                      },
                      "type": {
                        "type": "string",
                        "description": "MIME type",
                        "examples": [
                          "image/png",
                          "image/x-icon",
                          "image/svg+xml"
                        ],
                        "pattern": "^image\\/"
                      },
                      "sizes": {
                        "type": "string",
                        "description": "Icon dimensions",
                        "examples": [
                          "16x16",
                          "32x32",
                          "180x180",
                          "192x192"
                        ],
                        "pattern": "^[0-9]+x[0-9]+$"
                      },
                      "href": {
                        "type": "string",
                        "description": "Path to the favicon file",
                        "pattern": "^\\.\\/"
                      },
                      "color": {
                        "type": "string",
                        "description": "Color for mask-icon (Safari pinned tab)",
                        "title": "Hex Color",
                        "examples": [
                          "#007BFF",
                          "#28A745",
                          "#DC3545",
                          "#5BBAD5"
                        ],
                        "pattern": "^#[0-9A-Fa-f]{6}$"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Favicon item"
                  },
                  "description": "Multiple favicon sizes and types for different devices",
                  "title": "Favicon Set"
                },
                {
                  "type": "object",
                  "required": [],
                  "properties": {
                    "icon": {
                      "type": "string",
                      "description": "Default icon (SVG or ICO)"
                    },
                    "appleTouchIcon": {
                      "type": "string",
                      "description": "iOS home screen icon"
                    },
                    "sizes": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "size",
                          "href"
                        ],
                        "properties": {
                          "size": {
                            "type": "string",
                            "description": "Icon dimensions (e.g., 32x32, 16x16)",
                            "pattern": "^[0-9]+x[0-9]+$"
                          },
                          "href": {
                            "type": "string",
                            "description": "Path to the favicon file"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Favicon size specification"
                      },
                      "description": "Size-specific favicons"
                    }
                  },
                  "additionalProperties": false,
                  "description": "Helper configuration for favicons with named properties",
                  "title": "Favicons Configuration"
                }
              ]
            },
            "stylesheet": {
              "type": "string",
              "description": "Path to the main stylesheet"
            },
            "googleFonts": {
              "type": "string",
              "description": "Google Fonts URL"
            },
            "socialImage": {
              "type": "string",
              "description": "Default image for social media sharing"
            },
            "openGraph": {
              "type": "object",
              "required": [],
              "properties": {
                "title": {
                  "type": "string",
                  "description": "Open Graph title (may differ from page title)",
                  "maxLength": 90
                },
                "description": {
                  "type": "string",
                  "description": "Open Graph description",
                  "maxLength": 200
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "website",
                    "article",
                    "book",
                    "profile",
                    "video",
                    "music"
                  ],
                  "description": "Open Graph object type"
                },
                "url": {
                  "type": "string",
                  "description": "Canonical URL for this page",
                  "title": "HTTP URL",
                  "pattern": "^https?:\\/\\/"
                },
                "image": {
                  "type": "string",
                  "description": "Image URL for social sharing (recommended: 1200x630px)",
                  "title": "HTTP URL",
                  "pattern": "^https?:\\/\\/"
                },
                "imageAlt": {
                  "type": "string",
                  "description": "Alternative text for the Open Graph image"
                },
                "siteName": {
                  "type": "string",
                  "description": "Name of the overall website"
                },
                "locale": {
                  "type": "string",
                  "description": "Locale in format language_TERRITORY",
                  "examples": [
                    "en_US",
                    "fr_FR",
                    "es_ES"
                  ],
                  "pattern": "^[a-z]{2}_[A-Z]{2}$"
                },
                "determiner": {
                  "type": "string",
                  "enum": [
                    "a",
                    "an",
                    "the",
                    "auto",
                    ""
                  ],
                  "description": "Word that appears before the title"
                },
                "video": {
                  "type": "string",
                  "description": "Video URL if sharing video content",
                  "title": "HTTP URL",
                  "pattern": "^https?:\\/\\/"
                },
                "audio": {
                  "type": "string",
                  "description": "Audio URL if sharing audio content",
                  "title": "HTTP URL",
                  "pattern": "^https?:\\/\\/"
                }
              },
              "additionalProperties": false,
              "description": "Open Graph protocol metadata for rich social media sharing",
              "title": "Open Graph Metadata"
            },
            "twitter": {
              "type": "object",
              "required": [
                "card"
              ],
              "properties": {
                "card": {
                  "type": "string",
                  "enum": [
                    "summary",
                    "summary_large_image",
                    "app",
                    "player"
                  ],
                  "description": "Type of Twitter Card"
                },
                "title": {
                  "type": "string",
                  "description": "Twitter Card title",
                  "maxLength": 70
                },
                "description": {
                  "type": "string",
                  "description": "Twitter Card description",
                  "maxLength": 200
                },
                "image": {
                  "type": "string",
                  "description": "Image URL (min 144x144px for summary, 300x157px for large)"
                },
                "imageAlt": {
                  "type": "string",
                  "description": "Alternative text for the image",
                  "maxLength": 420
                },
                "site": {
                  "type": "string",
                  "description": "Twitter @username of website",
                  "examples": [
                    "@mysite",
                    "@johndoe"
                  ],
                  "pattern": "^@[A-Za-z0-9_]+$"
                },
                "creator": {
                  "type": "string",
                  "description": "Twitter @username of content creator",
                  "examples": [
                    "@mysite",
                    "@johndoe"
                  ],
                  "pattern": "^@[A-Za-z0-9_]+$"
                },
                "player": {
                  "type": "string",
                  "description": "HTTPS URL to video player (for player cards)"
                },
                "playerWidth": {
                  "$ref": "#/$defs/Int",
                  "description": "Width of video player in pixels",
                  "minimum": 1
                },
                "playerHeight": {
                  "$ref": "#/$defs/Int",
                  "description": "Height of video player in pixels",
                  "minimum": 1
                },
                "appName": {
                  "type": "object",
                  "required": [],
                  "properties": {
                    "iPhone": {
                      "type": "string",
                      "description": "App name for iPhone"
                    },
                    "iPad": {
                      "type": "string",
                      "description": "App name for iPad"
                    },
                    "googlePlay": {
                      "type": "string",
                      "description": "App name for Google Play"
                    }
                  },
                  "additionalProperties": false,
                  "description": "Name of app (for app cards)"
                },
                "appId": {
                  "type": "object",
                  "required": [],
                  "properties": {
                    "iPhone": {
                      "type": "string",
                      "description": "App Store ID for iPhone"
                    },
                    "iPad": {
                      "type": "string",
                      "description": "App Store ID for iPad"
                    },
                    "googlePlay": {
                      "type": "string",
                      "description": "Google Play package name (e.g., com.example.myapp)"
                    }
                  },
                  "additionalProperties": false,
                  "description": "App ID in respective stores"
                }
              },
              "additionalProperties": false,
              "description": "Twitter Card metadata for rich Twitter/X sharing",
              "title": "Twitter Card Metadata"
            },
            "schema": {
              "$id": "/schemas/unknown",
              "description": "Schema.org structured data - accepts orchestrator format (organization, faqPage, etc.) or direct Schema.org object (@context, @type, ...)"
            },
            "preload": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "href",
                  "as"
                ],
                "properties": {
                  "href": {
                    "type": "string",
                    "description": "Resource URL to preload"
                  },
                  "as": {
                    "type": "string",
                    "enum": [
                      "style",
                      "script",
                      "font",
                      "image",
                      "video",
                      "audio",
                      "document",
                      "fetch"
                    ],
                    "description": "Resource type hint"
                  },
                  "type": {
                    "type": "string",
                    "description": "MIME type for the resource"
                  },
                  "crossorigin": {
                    "anyOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "string",
                        "enum": [
                          "anonymous",
                          "use-credentials"
                        ]
                      }
                    ],
                    "description": "CORS setting for the resource"
                  },
                  "media": {
                    "type": "string",
                    "description": "Media query for conditional loading"
                  }
                },
                "additionalProperties": false,
                "description": "Preload resource"
              },
              "description": "Preload critical resources for performance optimization",
              "title": "Resource Preloading"
            },
            "dnsPrefetch": {
              "type": "array",
              "items": {
                "type": "string",
                "description": "Domain to prefetch DNS for",
                "title": "DNS Prefetch Domain",
                "pattern": "^https?:\\/\\/"
              },
              "description": "DNS prefetch hints for external domains",
              "title": "DNS Prefetch"
            },
            "analytics": {
              "anyOf": [
                {
                  "type": "object",
                  "required": [],
                  "properties": {},
                  "additionalProperties": {
                    "$id": "/schemas/unknown"
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "providers"
                  ],
                  "properties": {
                    "providers": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "name"
                        ],
                        "properties": {
                          "name": {
                            "type": "string",
                            "enum": [
                              "google",
                              "plausible",
                              "matomo",
                              "fathom",
                              "posthog",
                              "mixpanel"
                            ],
                            "description": "Analytics provider name"
                          },
                          "enabled": {
                            "type": "boolean",
                            "description": "Whether this provider is enabled",
                            "default": true
                          },
                          "scripts": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "src"
                              ],
                              "properties": {
                                "src": {
                                  "type": "string",
                                  "description": "Script source URL"
                                },
                                "async": {
                                  "type": "boolean",
                                  "description": "Load script asynchronously",
                                  "default": true
                                },
                                "defer": {
                                  "type": "boolean",
                                  "description": "Defer script execution"
                                }
                              },
                              "additionalProperties": false,
                              "description": "Analytics script"
                            }
                          },
                          "initScript": {
                            "type": "string",
                            "description": "Inline JavaScript to initialize the analytics"
                          },
                          "dnsPrefetch": {
                            "type": "string",
                            "description": "Domain to DNS prefetch for this provider"
                          },
                          "config": {
                            "type": "object",
                            "required": [],
                            "properties": {},
                            "additionalProperties": {
                              "$id": "/schemas/unknown"
                            },
                            "description": "Provider-specific configuration"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Analytics provider"
                      }
                    }
                  },
                  "additionalProperties": false,
                  "description": "Configuration for analytics providers",
                  "title": "Analytics Configuration"
                }
              ]
            },
            "customElements": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "meta",
                      "link",
                      "script",
                      "style",
                      "base"
                    ],
                    "description": "HTML element type",
                    "title": "Custom Element Type"
                  },
                  "attrs": {
                    "type": "object",
                    "required": [],
                    "properties": {},
                    "description": "Element attributes",
                    "patternProperties": {
                      "^[a-zA-Z][a-zA-Z0-9-]*$": {
                        "type": "string"
                      }
                    }
                  },
                  "content": {
                    "type": "string",
                    "description": "Inner content for script or style elements"
                  }
                },
                "additionalProperties": false,
                "description": "Custom head element",
                "title": "Custom Element"
              },
              "description": "Additional custom elements to add to the page head",
              "title": "Custom Head Elements"
            },
            "viewport": {
              "type": "string",
              "description": "Viewport meta tag content (e.g., \"width=device-width, initial-scale=1.0\") for responsive design"
            },
            "twitterCard": {
              "type": "object",
              "required": [
                "card"
              ],
              "properties": {
                "card": {
                  "type": "string",
                  "enum": [
                    "summary",
                    "summary_large_image",
                    "app",
                    "player"
                  ],
                  "description": "Type of Twitter Card"
                },
                "title": {
                  "type": "string",
                  "description": "Twitter Card title",
                  "maxLength": 70
                },
                "description": {
                  "type": "string",
                  "description": "Twitter Card description",
                  "maxLength": 200
                },
                "image": {
                  "type": "string",
                  "description": "Image URL (min 144x144px for summary, 300x157px for large)"
                },
                "imageAlt": {
                  "type": "string",
                  "description": "Alternative text for the image",
                  "maxLength": 420
                },
                "site": {
                  "type": "string",
                  "description": "Twitter @username of website",
                  "examples": [
                    "@mysite",
                    "@johndoe"
                  ],
                  "pattern": "^@[A-Za-z0-9_]+$"
                },
                "creator": {
                  "type": "string",
                  "description": "Twitter @username of content creator",
                  "examples": [
                    "@mysite",
                    "@johndoe"
                  ],
                  "pattern": "^@[A-Za-z0-9_]+$"
                },
                "player": {
                  "type": "string",
                  "description": "HTTPS URL to video player (for player cards)"
                },
                "playerWidth": {
                  "$ref": "#/$defs/Int",
                  "description": "Width of video player in pixels",
                  "minimum": 1
                },
                "playerHeight": {
                  "$ref": "#/$defs/Int",
                  "description": "Height of video player in pixels",
                  "minimum": 1
                },
                "appName": {
                  "type": "object",
                  "required": [],
                  "properties": {
                    "iPhone": {
                      "type": "string",
                      "description": "App name for iPhone"
                    },
                    "iPad": {
                      "type": "string",
                      "description": "App name for iPad"
                    },
                    "googlePlay": {
                      "type": "string",
                      "description": "App name for Google Play"
                    }
                  },
                  "additionalProperties": false,
                  "description": "Name of app (for app cards)"
                },
                "appId": {
                  "type": "object",
                  "required": [],
                  "properties": {
                    "iPhone": {
                      "type": "string",
                      "description": "App Store ID for iPhone"
                    },
                    "iPad": {
                      "type": "string",
                      "description": "App Store ID for iPad"
                    },
                    "googlePlay": {
                      "type": "string",
                      "description": "Google Play package name (e.g., com.example.myapp)"
                    }
                  },
                  "additionalProperties": false,
                  "description": "App ID in respective stores"
                }
              },
              "additionalProperties": false,
              "description": "Twitter Card metadata for rich Twitter/X sharing",
              "title": "Twitter Card Metadata"
            },
            "structuredData": {
              "$id": "/schemas/unknown"
            },
            "og:site_name": {
              "type": "string",
              "description": "OpenGraph site name (shorthand for openGraph.siteName)"
            },
            "i18n": {
              "type": "object",
              "required": [],
              "properties": {},
              "description": "Localized metadata translations per language",
              "patternProperties": {
                "^[a-z]{2}(-[A-Z]{2})?$": {
                  "type": "object",
                  "required": [],
                  "properties": {
                    "title": {
                      "type": "string",
                      "description": "Translated page title (max 60 characters)",
                      "maxLength": 60
                    },
                    "description": {
                      "type": "string",
                      "description": "Translated page description (max 160 characters)",
                      "maxLength": 160
                    }
                  },
                  "additionalProperties": false
                }
              }
            }
          },
          "additionalProperties": false,
          "description": "Comprehensive page metadata including SEO, social media, structured data, performance, and analytics",
          "title": "Page Metadata"
        },
        "sections": {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "section",
                      "container",
                      "flex",
                      "grid",
                      "card",
                      "card-with-header",
                      "card-header",
                      "card-body",
                      "card-footer",
                      "text",
                      "single-line-text",
                      "heading",
                      "paragraph",
                      "h1",
                      "h2",
                      "h3",
                      "h4",
                      "h5",
                      "h6",
                      "icon",
                      "image",
                      "img",
                      "avatar",
                      "thumbnail",
                      "hero-image",
                      "button",
                      "link",
                      "a",
                      "timeline",
                      "accordion",
                      "badge",
                      "speech-bubble",
                      "customHTML",
                      "video",
                      "audio",
                      "iframe",
                      "form",
                      "input",
                      "div",
                      "span",
                      "modal",
                      "sidebar",
                      "toast",
                      "hero",
                      "hero-section",
                      "fab",
                      "spinner",
                      "list",
                      "list-item",
                      "dropdown",
                      "navigation",
                      "alert",
                      "p",
                      "code",
                      "pre",
                      "header",
                      "footer",
                      "main",
                      "article",
                      "aside",
                      "nav",
                      "responsive-grid",
                      "data-table",
                      "content"
                    ],
                    "description": "Component type for page building",
                    "title": "Component Type"
                  },
                  "props": {
                    "type": "object",
                    "required": [],
                    "properties": {},
                    "description": "Properties for component templates, supporting variable references",
                    "title": "Component Props",
                    "patternProperties": {
                      "^([a-zA-Z][a-zA-Z0-9]*|data-[a-z]+(-[a-z]+)*|aria-[a-z]+(-[a-z]+)*)$": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "type": "boolean"
                          },
                          {
                            "type": "object",
                            "required": [],
                            "properties": {},
                            "additionalProperties": {
                              "$id": "/schemas/unknown"
                            }
                          },
                          {
                            "type": "array",
                            "items": {
                              "$id": "/schemas/unknown"
                            }
                          }
                        ]
                      }
                    }
                  },
                  "children": {
                    "$ref": "#/$defs/Children"
                  },
                  "content": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "object",
                        "required": [],
                        "properties": {},
                        "additionalProperties": {
                          "$id": "/schemas/unknown"
                        }
                      }
                    ],
                    "description": "Text content for text components, or structured content object (e.g., { button: { text, animation } })"
                  },
                  "interactions": {
                    "type": "object",
                    "required": [],
                    "properties": {
                      "hover": {
                        "type": "object",
                        "required": [],
                        "properties": {
                          "scale": {
                            "type": "number",
                            "description": "Scale factor (e.g., 1.05 for 5% larger)",
                            "examples": [
                              1.05,
                              1.1,
                              0.95
                            ]
                          },
                          "transform": {
                            "type": "string",
                            "description": "CSS transform (scale, rotate, translate)",
                            "examples": [
                              "scale(1.05)",
                              "translateY(-4px)",
                              "rotate(5deg)"
                            ]
                          },
                          "opacity": {
                            "type": "number",
                            "description": "Opacity value (0-1)",
                            "minimum": 0,
                            "maximum": 1
                          },
                          "backgroundColor": {
                            "type": "string",
                            "description": "Background color on hover"
                          },
                          "color": {
                            "type": "string",
                            "description": "Text color on hover"
                          },
                          "borderColor": {
                            "type": "string",
                            "description": "Border color on hover"
                          },
                          "shadow": {
                            "type": "string",
                            "description": "Box shadow on hover",
                            "examples": [
                              "0 10px 25px rgba(0,0,0,0.1)"
                            ]
                          },
                          "duration": {
                            "type": "string",
                            "description": "a string matching the pattern ^[0-9]+(\\.[0-9]+)?(ms|s)$",
                            "pattern": "^[0-9]+(\\.[0-9]+)?(ms|s)$"
                          },
                          "easing": {
                            "anyOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "linear",
                                  "ease",
                                  "ease-in",
                                  "ease-out",
                                  "ease-in-out"
                                ]
                              },
                              {
                                "type": "string",
                                "description": "a string matching the pattern ^cubic-bezier\\(\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*\\)$",
                                "pattern": "^cubic-bezier\\(\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*\\)$"
                              },
                              {
                                "type": "string",
                                "description": "a string matching the pattern ^steps\\(\\s*\\d+\\s*,\\s*(start|end|jump-start|jump-end|jump-none|jump-both)\\s*\\)$",
                                "pattern": "^steps\\(\\s*\\d+\\s*,\\s*(start|end|jump-start|jump-end|jump-none|jump-both)\\s*\\)$"
                              }
                            ],
                            "description": "Transition timing function"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Visual changes when user hovers over component",
                        "title": "Hover Interaction"
                      },
                      "click": {
                        "type": "object",
                        "required": [],
                        "properties": {
                          "animation": {
                            "type": "string",
                            "enum": [
                              "pulse",
                              "bounce",
                              "shake",
                              "flash",
                              "ripple",
                              "none"
                            ],
                            "description": "Animation to trigger on click"
                          },
                          "navigate": {
                            "type": "string",
                            "description": "Path to navigate to",
                            "examples": [
                              "/contact",
                              "/pricing",
                              "#section-id"
                            ]
                          },
                          "openUrl": {
                            "type": "string",
                            "description": "External URL to open"
                          },
                          "openInNewTab": {
                            "type": "boolean"
                          },
                          "scrollTo": {
                            "type": "string",
                            "description": "a string matching the pattern ^#[a-zA-Z][a-zA-Z0-9-]*$",
                            "pattern": "^#[a-zA-Z][a-zA-Z0-9-]*$"
                          },
                          "toggleElement": {
                            "type": "string",
                            "description": "Element ID to show/hide",
                            "pattern": "^#[a-zA-Z][a-zA-Z0-9-]*$"
                          },
                          "submitForm": {
                            "type": "string",
                            "description": "Form ID to submit",
                            "pattern": "^#[a-zA-Z][a-zA-Z0-9-]*$"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Actions triggered when component is clicked",
                        "title": "Click Interaction"
                      },
                      "scroll": {
                        "type": "object",
                        "required": [
                          "animation"
                        ],
                        "properties": {
                          "animation": {
                            "type": "string",
                            "enum": [
                              "fadeIn",
                              "fadeInUp",
                              "fadeInDown",
                              "fadeInLeft",
                              "fadeInRight",
                              "zoomIn",
                              "slideInUp",
                              "slideInDown"
                            ],
                            "description": "Animation type triggered on scroll"
                          },
                          "threshold": {
                            "type": "number",
                            "description": "Percentage of element visible before triggering (0-1)",
                            "minimum": 0,
                            "maximum": 1
                          },
                          "delay": {
                            "type": "string",
                            "description": "Delay before animation starts",
                            "examples": [
                              "0ms",
                              "100ms",
                              "0.5s"
                            ],
                            "pattern": "^[0-9]+(\\.[0-9]+)?(ms|s)$"
                          },
                          "duration": {
                            "type": "string",
                            "description": "a string matching the pattern ^[0-9]+(\\.[0-9]+)?(ms|s)$",
                            "pattern": "^[0-9]+(\\.[0-9]+)?(ms|s)$"
                          },
                          "once": {
                            "type": "boolean",
                            "description": "Trigger animation only once"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Animations triggered when component enters viewport",
                        "title": "Scroll Interaction"
                      },
                      "entrance": {
                        "type": "object",
                        "required": [
                          "animation"
                        ],
                        "properties": {
                          "animation": {
                            "type": "string",
                            "enum": [
                              "fadeIn",
                              "fadeInUp",
                              "fadeInDown",
                              "zoomIn",
                              "slideInUp",
                              "slideInDown"
                            ],
                            "description": "Animation type for page load"
                          },
                          "delay": {
                            "type": "string",
                            "description": "Delay before animation starts",
                            "pattern": "^[0-9]+(\\.[0-9]+)?(ms|s)$"
                          },
                          "duration": {
                            "type": "string",
                            "description": "a string matching the pattern ^[0-9]+(\\.[0-9]+)?(ms|s)$",
                            "pattern": "^[0-9]+(\\.[0-9]+)?(ms|s)$"
                          },
                          "stagger": {
                            "type": "string",
                            "description": "Delay between sibling animations",
                            "examples": [
                              "50ms",
                              "100ms"
                            ],
                            "pattern": "^[0-9]+(\\.[0-9]+)?(ms|s)$"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Animation played when page loads",
                        "title": "Entrance Animation"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Interactive behaviors triggered by user actions or page events",
                    "title": "Component Interactions"
                  },
                  "responsive": {
                    "type": "object",
                    "required": [],
                    "properties": {
                      "mobile": {
                        "type": "object",
                        "required": [],
                        "properties": {
                          "props": {
                            "type": "object",
                            "required": [],
                            "properties": {},
                            "description": "Props to override",
                            "patternProperties": {
                              "^[a-zA-Z][a-zA-Z0-9]*$": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  },
                                  {
                                    "type": "object",
                                    "required": [],
                                    "properties": {},
                                    "additionalProperties": {
                                      "$id": "/schemas/unknown"
                                    }
                                  },
                                  {
                                    "type": "array",
                                    "items": {
                                      "$id": "/schemas/unknown"
                                    }
                                  }
                                ]
                              }
                            }
                          },
                          "content": {
                            "type": "string",
                            "description": "Content to display at this breakpoint"
                          },
                          "visible": {
                            "type": "boolean",
                            "description": "Show/hide component at this breakpoint"
                          },
                          "children": {
                            "type": "array",
                            "items": {
                              "$id": "/schemas/unknown"
                            },
                            "description": "Different children at this breakpoint"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Component properties to override at this breakpoint",
                        "title": "Variant Overrides"
                      },
                      "sm": {
                        "type": "object",
                        "required": [],
                        "properties": {
                          "props": {
                            "type": "object",
                            "required": [],
                            "properties": {},
                            "description": "Props to override",
                            "patternProperties": {
                              "^[a-zA-Z][a-zA-Z0-9]*$": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  },
                                  {
                                    "type": "object",
                                    "required": [],
                                    "properties": {},
                                    "additionalProperties": {
                                      "$id": "/schemas/unknown"
                                    }
                                  },
                                  {
                                    "type": "array",
                                    "items": {
                                      "$id": "/schemas/unknown"
                                    }
                                  }
                                ]
                              }
                            }
                          },
                          "content": {
                            "type": "string",
                            "description": "Content to display at this breakpoint"
                          },
                          "visible": {
                            "type": "boolean",
                            "description": "Show/hide component at this breakpoint"
                          },
                          "children": {
                            "type": "array",
                            "items": {
                              "$id": "/schemas/unknown"
                            },
                            "description": "Different children at this breakpoint"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Component properties to override at this breakpoint",
                        "title": "Variant Overrides"
                      },
                      "md": {
                        "type": "object",
                        "required": [],
                        "properties": {
                          "props": {
                            "type": "object",
                            "required": [],
                            "properties": {},
                            "description": "Props to override",
                            "patternProperties": {
                              "^[a-zA-Z][a-zA-Z0-9]*$": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  },
                                  {
                                    "type": "object",
                                    "required": [],
                                    "properties": {},
                                    "additionalProperties": {
                                      "$id": "/schemas/unknown"
                                    }
                                  },
                                  {
                                    "type": "array",
                                    "items": {
                                      "$id": "/schemas/unknown"
                                    }
                                  }
                                ]
                              }
                            }
                          },
                          "content": {
                            "type": "string",
                            "description": "Content to display at this breakpoint"
                          },
                          "visible": {
                            "type": "boolean",
                            "description": "Show/hide component at this breakpoint"
                          },
                          "children": {
                            "type": "array",
                            "items": {
                              "$id": "/schemas/unknown"
                            },
                            "description": "Different children at this breakpoint"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Component properties to override at this breakpoint",
                        "title": "Variant Overrides"
                      },
                      "lg": {
                        "type": "object",
                        "required": [],
                        "properties": {
                          "props": {
                            "type": "object",
                            "required": [],
                            "properties": {},
                            "description": "Props to override",
                            "patternProperties": {
                              "^[a-zA-Z][a-zA-Z0-9]*$": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  },
                                  {
                                    "type": "object",
                                    "required": [],
                                    "properties": {},
                                    "additionalProperties": {
                                      "$id": "/schemas/unknown"
                                    }
                                  },
                                  {
                                    "type": "array",
                                    "items": {
                                      "$id": "/schemas/unknown"
                                    }
                                  }
                                ]
                              }
                            }
                          },
                          "content": {
                            "type": "string",
                            "description": "Content to display at this breakpoint"
                          },
                          "visible": {
                            "type": "boolean",
                            "description": "Show/hide component at this breakpoint"
                          },
                          "children": {
                            "type": "array",
                            "items": {
                              "$id": "/schemas/unknown"
                            },
                            "description": "Different children at this breakpoint"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Component properties to override at this breakpoint",
                        "title": "Variant Overrides"
                      },
                      "xl": {
                        "type": "object",
                        "required": [],
                        "properties": {
                          "props": {
                            "type": "object",
                            "required": [],
                            "properties": {},
                            "description": "Props to override",
                            "patternProperties": {
                              "^[a-zA-Z][a-zA-Z0-9]*$": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  },
                                  {
                                    "type": "object",
                                    "required": [],
                                    "properties": {},
                                    "additionalProperties": {
                                      "$id": "/schemas/unknown"
                                    }
                                  },
                                  {
                                    "type": "array",
                                    "items": {
                                      "$id": "/schemas/unknown"
                                    }
                                  }
                                ]
                              }
                            }
                          },
                          "content": {
                            "type": "string",
                            "description": "Content to display at this breakpoint"
                          },
                          "visible": {
                            "type": "boolean",
                            "description": "Show/hide component at this breakpoint"
                          },
                          "children": {
                            "type": "array",
                            "items": {
                              "$id": "/schemas/unknown"
                            },
                            "description": "Different children at this breakpoint"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Component properties to override at this breakpoint",
                        "title": "Variant Overrides"
                      },
                      "2xl": {
                        "type": "object",
                        "required": [],
                        "properties": {
                          "props": {
                            "type": "object",
                            "required": [],
                            "properties": {},
                            "description": "Props to override",
                            "patternProperties": {
                              "^[a-zA-Z][a-zA-Z0-9]*$": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  },
                                  {
                                    "type": "object",
                                    "required": [],
                                    "properties": {},
                                    "additionalProperties": {
                                      "$id": "/schemas/unknown"
                                    }
                                  },
                                  {
                                    "type": "array",
                                    "items": {
                                      "$id": "/schemas/unknown"
                                    }
                                  }
                                ]
                              }
                            }
                          },
                          "content": {
                            "type": "string",
                            "description": "Content to display at this breakpoint"
                          },
                          "visible": {
                            "type": "boolean",
                            "description": "Show/hide component at this breakpoint"
                          },
                          "children": {
                            "type": "array",
                            "items": {
                              "$id": "/schemas/unknown"
                            },
                            "description": "Different children at this breakpoint"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Component properties to override at this breakpoint",
                        "title": "Variant Overrides"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Breakpoint-specific component overrides for responsive design",
                    "title": "Responsive Variants"
                  },
                  "visibility": {
                    "type": "object",
                    "required": [],
                    "properties": {
                      "when": {
                        "type": "string",
                        "enum": [
                          "authenticated",
                          "unauthenticated"
                        ],
                        "description": "Show component only when user is 'authenticated' or 'unauthenticated'"
                      },
                      "roles": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Show component only to users with one of these roles",
                        "title": "Visibility Roles",
                        "examples": [
                          [
                            "admin"
                          ],
                          [
                            "admin",
                            "editor"
                          ]
                        ],
                        "minItems": 1
                      }
                    },
                    "additionalProperties": false,
                    "description": "Conditional component visibility based on authentication state and user roles",
                    "title": "Visibility"
                  },
                  "dataSource": {
                    "$ref": "#/$defs/DataSource"
                  },
                  "action": {
                    "$ref": "#/$defs/Action"
                  },
                  "columns": {
                    "type": "array",
                    "items": {
                      "$ref": "#/$defs/DataTableColumn"
                    },
                    "description": "Column definitions for data-table component",
                    "minItems": 1
                  },
                  "selection": {
                    "type": "object",
                    "required": [
                      "mode"
                    ],
                    "properties": {
                      "mode": {
                        "type": "string",
                        "enum": [
                          "none",
                          "single",
                          "multiple"
                        ],
                        "description": "Row selection mode (default: none)"
                      },
                      "showCheckboxes": {
                        "type": "boolean",
                        "description": "Show checkbox column (default: true when mode is multiple)"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Row selection configuration",
                    "title": "Data Table Selection"
                  },
                  "pagination": {
                    "type": "object",
                    "required": [],
                    "properties": {
                      "pageSize": {
                        "type": "integer",
                        "description": "Default rows per page (default: 25)",
                        "examples": [
                          10,
                          25,
                          50
                        ],
                        "exclusiveMinimum": 0
                      },
                      "pageSizeOptions": {
                        "type": "array",
                        "items": {
                          "type": "integer",
                          "description": "a positive number",
                          "exclusiveMinimum": 0
                        },
                        "description": "Page size dropdown options",
                        "examples": [
                          [
                            10,
                            25,
                            50,
                            100
                          ]
                        ],
                        "minItems": 1
                      },
                      "position": {
                        "type": "string",
                        "enum": [
                          "top",
                          "bottom",
                          "both"
                        ],
                        "description": "Position of pagination controls (default: bottom)"
                      },
                      "serverSide": {
                        "type": "boolean",
                        "description": "Enable server-side pagination (default: false)"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Pagination configuration for the data table",
                    "title": "Data Table Pagination"
                  },
                  "search": {
                    "type": "object",
                    "required": [],
                    "properties": {
                      "enabled": {
                        "type": "boolean",
                        "description": "Enable global search (default: true)"
                      },
                      "placeholder": {
                        "type": "string",
                        "description": "Search input placeholder text",
                        "examples": [
                          "Search orders...",
                          "Type to search..."
                        ]
                      },
                      "debounceMs": {
                        "type": "integer",
                        "description": "Debounce delay for search input in ms (default: 300)",
                        "examples": [
                          200,
                          300,
                          500
                        ],
                        "minimum": 0
                      }
                    },
                    "additionalProperties": false,
                    "description": "Global search configuration",
                    "title": "Data Table Search"
                  },
                  "groupBy": {
                    "type": "object",
                    "required": [
                      "field"
                    ],
                    "properties": {
                      "field": {
                        "type": "string",
                        "description": "Field name to group rows by"
                      },
                      "direction": {
                        "type": "string",
                        "enum": [
                          "asc",
                          "desc"
                        ],
                        "description": "Group sort direction (default: asc)"
                      },
                      "collapsed": {
                        "type": "boolean",
                        "description": "Start groups collapsed (default: false)"
                      },
                      "hideEmpty": {
                        "type": "boolean",
                        "description": "Hide empty groups (default: false)"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Row grouping configuration",
                    "title": "Data Table Group By"
                  },
                  "summary": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "field",
                        "function"
                      ],
                      "properties": {
                        "field": {
                          "type": "string",
                          "description": "Field name to compute summary on"
                        },
                        "function": {
                          "type": "string",
                          "enum": [
                            "count",
                            "sum",
                            "avg",
                            "min",
                            "max"
                          ],
                          "description": "Aggregate function for summary computation",
                          "title": "Summary Function"
                        },
                        "label": {
                          "type": "string",
                          "description": "Summary display label"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Single aggregate computation for the summary row",
                      "title": "Summary Item"
                    },
                    "description": "Summary row with aggregate computations",
                    "minItems": 1
                  },
                  "toolbar": {
                    "type": "object",
                    "required": [],
                    "properties": {
                      "search": {
                        "type": "boolean",
                        "description": "Show search input"
                      },
                      "filters": {
                        "type": "boolean",
                        "description": "Show filter builder"
                      },
                      "sort": {
                        "type": "boolean",
                        "description": "Show sort builder"
                      },
                      "export": {
                        "type": "boolean",
                        "description": "Show export button"
                      },
                      "refresh": {
                        "type": "boolean",
                        "description": "Show refresh button"
                      },
                      "density": {
                        "type": "boolean",
                        "description": "Show row density toggle"
                      },
                      "columnToggle": {
                        "type": "boolean",
                        "description": "Show column visibility toggle"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Toolbar control visibility configuration",
                    "title": "Data Table Toolbar"
                  },
                  "bulkActions": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "label",
                        "action"
                      ],
                      "properties": {
                        "label": {
                          "type": "string",
                          "description": "Bulk action button label"
                        },
                        "icon": {
                          "type": "string",
                          "description": "Icon name (e.g., truck, trash)"
                        },
                        "action": {
                          "$ref": "#/$defs/Action"
                        },
                        "confirm": {
                          "type": "string",
                          "description": "Confirmation dialog. Supports {count} for number of selected rows.",
                          "examples": [
                            "Delete {count} orders?",
                            "Mark {count} items as shipped?"
                          ]
                        }
                      },
                      "additionalProperties": false,
                      "description": "Action that operates on multiple selected rows",
                      "title": "Bulk Action"
                    },
                    "description": "Actions available when rows are selected",
                    "minItems": 1
                  },
                  "rowHeight": {
                    "type": "string",
                    "enum": [
                      "short",
                      "medium",
                      "tall"
                    ],
                    "description": "Table row height preset (default: medium)",
                    "title": "Row Height"
                  },
                  "striped": {
                    "type": "boolean",
                    "description": "Alternating row colors"
                  },
                  "bordered": {
                    "type": "boolean",
                    "description": "Show cell borders"
                  },
                  "emptyMessage": {
                    "type": "string",
                    "description": "Message when no records match"
                  },
                  "showRowNumbers": {
                    "type": "boolean",
                    "description": "Show row number column"
                  },
                  "onRowClick": {
                    "$ref": "#/$defs/Action"
                  },
                  "i18n": {
                    "type": "object",
                    "required": [],
                    "properties": {},
                    "description": "Localized translations per language for this component",
                    "patternProperties": {
                      "^[a-z]{2}(-[A-Z]{2})?$": {
                        "type": "object",
                        "required": [],
                        "properties": {
                          "content": {
                            "type": "string",
                            "description": "Translated content text"
                          },
                          "props": {
                            "type": "object",
                            "required": [],
                            "properties": {},
                            "description": "Properties for component templates, supporting variable references",
                            "title": "Component Props",
                            "patternProperties": {
                              "^([a-zA-Z][a-zA-Z0-9]*|data-[a-z]+(-[a-z]+)*|aria-[a-z]+(-[a-z]+)*)$": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  },
                                  {
                                    "type": "object",
                                    "required": [],
                                    "properties": {},
                                    "additionalProperties": {
                                      "$id": "/schemas/unknown"
                                    }
                                  },
                                  {
                                    "type": "array",
                                    "items": {
                                      "$id": "/schemas/unknown"
                                    }
                                  }
                                ]
                              }
                            }
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  }
                },
                "additionalProperties": false,
                "description": "Direct component definition",
                "title": "Component"
              },
              {
                "anyOf": [
                  {
                    "type": "object",
                    "required": [
                      "$ref",
                      "vars"
                    ],
                    "properties": {
                      "$ref": {
                        "type": "string",
                        "description": "Name of the component to reference (kebab-case)",
                        "title": "Component Reference Name",
                        "examples": [
                          "icon-badge",
                          "section-header",
                          "call-to-action"
                        ],
                        "pattern": "^[a-z][a-z0-9-]*$"
                      },
                      "vars": {
                        "type": "object",
                        "required": [],
                        "properties": {},
                        "description": "Variables to substitute in the component template",
                        "title": "Component Variables",
                        "patternProperties": {
                          "^[a-zA-Z][a-zA-Z0-9]*$": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              },
                              {
                                "type": "boolean"
                              }
                            ]
                          }
                        }
                      }
                    },
                    "additionalProperties": false,
                    "description": "Reference to a reusable component template with variable substitution",
                    "title": "Component Reference (Full Syntax)"
                  },
                  {
                    "type": "object",
                    "required": [
                      "component",
                      "vars"
                    ],
                    "properties": {
                      "component": {
                        "type": "string",
                        "description": "Name of the component to reference (kebab-case)",
                        "title": "Component Reference Name",
                        "examples": [
                          "icon-badge",
                          "section-header",
                          "call-to-action"
                        ],
                        "pattern": "^[a-z][a-z0-9-]*$"
                      },
                      "vars": {
                        "type": "object",
                        "required": [],
                        "properties": {},
                        "description": "Variables to substitute in the component template",
                        "title": "Component Variables",
                        "patternProperties": {
                          "^[a-zA-Z][a-zA-Z0-9]*$": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              },
                              {
                                "type": "boolean"
                              }
                            ]
                          }
                        }
                      }
                    },
                    "additionalProperties": false,
                    "description": "Shorthand component reference with variable substitution",
                    "title": "Component Reference (Hybrid)"
                  },
                  {
                    "type": "object",
                    "required": [
                      "component"
                    ],
                    "properties": {
                      "component": {
                        "type": "string",
                        "description": "Name of the component to reference (kebab-case)",
                        "title": "Component Reference Name",
                        "examples": [
                          "icon-badge",
                          "section-header",
                          "call-to-action"
                        ],
                        "pattern": "^[a-z][a-z0-9-]*$"
                      }
                    },
                    "additionalProperties": false,
                    "description": "Shorthand reference to a reusable component without variables",
                    "title": "Component Reference (Shorthand)"
                  }
                ],
                "description": "Reference to a reusable component template. Supports full syntax ($ref + vars), hybrid syntax (component + vars), or shorthand (component name only).",
                "title": "Component Reference"
              }
            ],
            "description": "A page section that can be either a component or component reference (with optional variables)",
            "title": "Section Item"
          },
          "description": "Array of page content sections",
          "title": "Page Sections"
        },
        "access": {
          "$ref": "#/$defs/PageAccess"
        },
        "toasts": {
          "type": "object",
          "required": [],
          "properties": {
            "position": {
              "type": "string",
              "enum": [
                "top-right",
                "top-left",
                "top-center",
                "bottom-right",
                "bottom-left",
                "bottom-center"
              ],
              "description": "Position of toast notifications on the page",
              "title": "Toast Position"
            },
            "duration": {
              "type": "integer",
              "description": "Default toast duration in ms (default: 5000)",
              "exclusiveMinimum": 0
            }
          },
          "additionalProperties": false,
          "description": "Page-level toast notification configuration",
          "title": "Page Toast Config"
        },
        "scripts": {
          "type": "object",
          "required": [],
          "properties": {
            "features": {
              "type": "object",
              "required": [],
              "properties": {},
              "description": "Client-side feature toggles",
              "title": "Feature Flags",
              "patternProperties": {
                "^[a-zA-Z][a-zA-Z0-9]*$": {
                  "anyOf": [
                    {
                      "type": "boolean",
                      "description": "Simple feature flag"
                    },
                    {
                      "type": "object",
                      "required": [],
                      "properties": {
                        "enabled": {
                          "type": "boolean",
                          "description": "Whether the feature is enabled"
                        },
                        "config": {
                          "type": "object",
                          "required": [],
                          "properties": {},
                          "additionalProperties": {
                            "$id": "/schemas/unknown"
                          },
                          "description": "Feature-specific configuration data"
                        }
                      },
                      "additionalProperties": false,
                      "description": "Feature configuration with enabled flag and custom config"
                    }
                  ],
                  "description": "Feature value - either a boolean flag or a configuration object"
                }
              }
            },
            "externalScripts": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "src"
                ],
                "properties": {
                  "src": {
                    "type": "string",
                    "description": "Script source URL"
                  },
                  "async": {
                    "type": "boolean",
                    "description": "Load script asynchronously",
                    "default": false
                  },
                  "defer": {
                    "type": "boolean",
                    "description": "Defer script execution",
                    "default": false
                  },
                  "module": {
                    "type": "boolean",
                    "description": "Load as ES module",
                    "default": false
                  },
                  "integrity": {
                    "type": "string",
                    "description": "Subresource integrity hash"
                  },
                  "crossorigin": {
                    "type": "string",
                    "enum": [
                      "anonymous",
                      "use-credentials"
                    ],
                    "description": "CORS setting for cross-origin scripts"
                  },
                  "position": {
                    "type": "string",
                    "enum": [
                      "head",
                      "body-start",
                      "body-end"
                    ],
                    "description": "Where to insert the script in the document"
                  }
                },
                "additionalProperties": false,
                "description": "External JavaScript dependency"
              },
              "description": "External JavaScript dependencies",
              "title": "External Scripts"
            },
            "external": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "src"
                ],
                "properties": {
                  "src": {
                    "type": "string",
                    "description": "Script source URL"
                  },
                  "async": {
                    "type": "boolean",
                    "description": "Load script asynchronously",
                    "default": false
                  },
                  "defer": {
                    "type": "boolean",
                    "description": "Defer script execution",
                    "default": false
                  },
                  "module": {
                    "type": "boolean",
                    "description": "Load as ES module",
                    "default": false
                  },
                  "integrity": {
                    "type": "string",
                    "description": "Subresource integrity hash"
                  },
                  "crossorigin": {
                    "type": "string",
                    "enum": [
                      "anonymous",
                      "use-credentials"
                    ],
                    "description": "CORS setting for cross-origin scripts"
                  },
                  "position": {
                    "type": "string",
                    "enum": [
                      "head",
                      "body-start",
                      "body-end"
                    ],
                    "description": "Where to insert the script in the document"
                  }
                },
                "additionalProperties": false,
                "description": "External JavaScript dependency"
              },
              "description": "External JavaScript dependencies",
              "title": "External Scripts"
            },
            "inlineScripts": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "code"
                ],
                "properties": {
                  "code": {
                    "type": "string",
                    "description": "JavaScript code to execute"
                  },
                  "position": {
                    "type": "string",
                    "enum": [
                      "head",
                      "body-start",
                      "body-end"
                    ],
                    "description": "Where to insert the script in the document"
                  },
                  "async": {
                    "type": "boolean",
                    "description": "Wrap in async IIFE",
                    "default": false
                  }
                },
                "additionalProperties": false,
                "description": "Inline JavaScript code snippet"
              },
              "description": "Inline JavaScript code snippets",
              "title": "Inline Scripts"
            },
            "config": {
              "type": "object",
              "required": [],
              "properties": {},
              "additionalProperties": {
                "$id": "/schemas/unknown"
              },
              "description": "Client-side configuration data"
            }
          },
          "additionalProperties": false,
          "description": "Client-side scripts, features, and external dependencies",
          "title": "Client Scripts Configuration"
        },
        "vars": {
          "type": "object",
          "required": [],
          "properties": {},
          "additionalProperties": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              }
            ]
          }
        }
      },
      "additionalProperties": false,
      "description": "Complete page configuration with metadata, layout, sections, and scripts. Pages use a component-based layout system with reusable component templates.",
      "title": "Page"
    },
    "PageId": {
      "type": "string",
      "description": "Unique identifier for the page",
      "title": "Page ID",
      "examples": [
        "homepage",
        "about-us",
        "contact-form-123",
        "550e8400-e29b-41d4-a716-446655440000"
      ],
      "minLength": 1
    },
    "Children": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "$ref": "#/$defs/SectionItem"
          },
          {
            "type": "string"
          }
        ]
      },
      "description": "Array of child components or text strings",
      "title": "Child Components"
    },
    "SectionItem": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "type"
          ],
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "section",
                "container",
                "flex",
                "grid",
                "card",
                "card-with-header",
                "card-header",
                "card-body",
                "card-footer",
                "text",
                "single-line-text",
                "heading",
                "paragraph",
                "h1",
                "h2",
                "h3",
                "h4",
                "h5",
                "h6",
                "icon",
                "image",
                "img",
                "avatar",
                "thumbnail",
                "hero-image",
                "button",
                "link",
                "a",
                "timeline",
                "accordion",
                "badge",
                "speech-bubble",
                "customHTML",
                "video",
                "audio",
                "iframe",
                "form",
                "input",
                "div",
                "span",
                "modal",
                "sidebar",
                "toast",
                "hero",
                "hero-section",
                "fab",
                "spinner",
                "list",
                "list-item",
                "dropdown",
                "navigation",
                "alert",
                "p",
                "code",
                "pre",
                "header",
                "footer",
                "main",
                "article",
                "aside",
                "nav",
                "responsive-grid",
                "data-table",
                "content"
              ],
              "description": "Component type for page building",
              "title": "Component Type"
            },
            "props": {
              "type": "object",
              "required": [],
              "properties": {},
              "description": "Properties for component templates, supporting variable references",
              "title": "Component Props",
              "patternProperties": {
                "^([a-zA-Z][a-zA-Z0-9]*|data-[a-z]+(-[a-z]+)*|aria-[a-z]+(-[a-z]+)*)$": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    },
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "object",
                      "required": [],
                      "properties": {},
                      "additionalProperties": {
                        "$id": "/schemas/unknown"
                      }
                    },
                    {
                      "type": "array",
                      "items": {
                        "$id": "/schemas/unknown"
                      }
                    }
                  ]
                }
              }
            },
            "children": {
              "$ref": "#/$defs/Children"
            },
            "content": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "object",
                  "required": [],
                  "properties": {},
                  "additionalProperties": {
                    "$id": "/schemas/unknown"
                  }
                }
              ],
              "description": "Text content for text components, or structured content object (e.g., { button: { text, animation } })"
            },
            "interactions": {
              "type": "object",
              "required": [],
              "properties": {
                "hover": {
                  "type": "object",
                  "required": [],
                  "properties": {
                    "scale": {
                      "type": "number",
                      "description": "Scale factor (e.g., 1.05 for 5% larger)",
                      "examples": [
                        1.05,
                        1.1,
                        0.95
                      ]
                    },
                    "transform": {
                      "type": "string",
                      "description": "CSS transform (scale, rotate, translate)",
                      "examples": [
                        "scale(1.05)",
                        "translateY(-4px)",
                        "rotate(5deg)"
                      ]
                    },
                    "opacity": {
                      "type": "number",
                      "description": "Opacity value (0-1)",
                      "minimum": 0,
                      "maximum": 1
                    },
                    "backgroundColor": {
                      "type": "string",
                      "description": "Background color on hover"
                    },
                    "color": {
                      "type": "string",
                      "description": "Text color on hover"
                    },
                    "borderColor": {
                      "type": "string",
                      "description": "Border color on hover"
                    },
                    "shadow": {
                      "type": "string",
                      "description": "Box shadow on hover",
                      "examples": [
                        "0 10px 25px rgba(0,0,0,0.1)"
                      ]
                    },
                    "duration": {
                      "type": "string",
                      "description": "a string matching the pattern ^[0-9]+(\\.[0-9]+)?(ms|s)$",
                      "pattern": "^[0-9]+(\\.[0-9]+)?(ms|s)$"
                    },
                    "easing": {
                      "anyOf": [
                        {
                          "type": "string",
                          "enum": [
                            "linear",
                            "ease",
                            "ease-in",
                            "ease-out",
                            "ease-in-out"
                          ]
                        },
                        {
                          "type": "string",
                          "description": "a string matching the pattern ^cubic-bezier\\(\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*\\)$",
                          "pattern": "^cubic-bezier\\(\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*,\\s*-?[\\d.]+\\s*\\)$"
                        },
                        {
                          "type": "string",
                          "description": "a string matching the pattern ^steps\\(\\s*\\d+\\s*,\\s*(start|end|jump-start|jump-end|jump-none|jump-both)\\s*\\)$",
                          "pattern": "^steps\\(\\s*\\d+\\s*,\\s*(start|end|jump-start|jump-end|jump-none|jump-both)\\s*\\)$"
                        }
                      ],
                      "description": "Transition timing function"
                    }
                  },
                  "additionalProperties": false,
                  "description": "Visual changes when user hovers over component",
                  "title": "Hover Interaction"
                },
                "click": {
                  "type": "object",
                  "required": [],
                  "properties": {
                    "animation": {
                      "type": "string",
                      "enum": [
                        "pulse",
                        "bounce",
                        "shake",
                        "flash",
                        "ripple",
                        "none"
                      ],
                      "description": "Animation to trigger on click"
                    },
                    "navigate": {
                      "type": "string",
                      "description": "Path to navigate to",
                      "examples": [
                        "/contact",
                        "/pricing",
                        "#section-id"
                      ]
                    },
                    "openUrl": {
                      "type": "string",
                      "description": "External URL to open"
                    },
                    "openInNewTab": {
                      "type": "boolean"
                    },
                    "scrollTo": {
                      "type": "string",
                      "description": "a string matching the pattern ^#[a-zA-Z][a-zA-Z0-9-]*$",
                      "pattern": "^#[a-zA-Z][a-zA-Z0-9-]*$"
                    },
                    "toggleElement": {
                      "type": "string",
                      "description": "Element ID to show/hide",
                      "pattern": "^#[a-zA-Z][a-zA-Z0-9-]*$"
                    },
                    "submitForm": {
                      "type": "string",
                      "description": "Form ID to submit",
                      "pattern": "^#[a-zA-Z][a-zA-Z0-9-]*$"
                    }
                  },
                  "additionalProperties": false,
                  "description": "Actions triggered when component is clicked",
                  "title": "Click Interaction"
                },
                "scroll": {
                  "type": "object",
                  "required": [
                    "animation"
                  ],
                  "properties": {
                    "animation": {
                      "type": "string",
                      "enum": [
                        "fadeIn",
                        "fadeInUp",
                        "fadeInDown",
                        "fadeInLeft",
                        "fadeInRight",
                        "zoomIn",
                        "slideInUp",
                        "slideInDown"
                      ],
                      "description": "Animation type triggered on scroll"
                    },
                    "threshold": {
                      "type": "number",
                      "description": "Percentage of element visible before triggering (0-1)",
                      "minimum": 0,
                      "maximum": 1
                    },
                    "delay": {
                      "type": "string",
                      "description": "Delay before animation starts",
                      "examples": [
                        "0ms",
                        "100ms",
                        "0.5s"
                      ],
                      "pattern": "^[0-9]+(\\.[0-9]+)?(ms|s)$"
                    },
                    "duration": {
                      "type": "string",
                      "description": "a string matching the pattern ^[0-9]+(\\.[0-9]+)?(ms|s)$",
                      "pattern": "^[0-9]+(\\.[0-9]+)?(ms|s)$"
                    },
                    "once": {
                      "type": "boolean",
                      "description": "Trigger animation only once"
                    }
                  },
                  "additionalProperties": false,
                  "description": "Animations triggered when component enters viewport",
                  "title": "Scroll Interaction"
                },
                "entrance": {
                  "type": "object",
                  "required": [
                    "animation"
                  ],
                  "properties": {
                    "animation": {
                      "type": "string",
                      "enum": [
                        "fadeIn",
                        "fadeInUp",
                        "fadeInDown",
                        "zoomIn",
                        "slideInUp",
                        "slideInDown"
                      ],
                      "description": "Animation type for page load"
                    },
                    "delay": {
                      "type": "string",
                      "description": "Delay before animation starts",
                      "pattern": "^[0-9]+(\\.[0-9]+)?(ms|s)$"
                    },
                    "duration": {
                      "type": "string",
                      "description": "a string matching the pattern ^[0-9]+(\\.[0-9]+)?(ms|s)$",
                      "pattern": "^[0-9]+(\\.[0-9]+)?(ms|s)$"
                    },
                    "stagger": {
                      "type": "string",
                      "description": "Delay between sibling animations",
                      "examples": [
                        "50ms",
                        "100ms"
                      ],
                      "pattern": "^[0-9]+(\\.[0-9]+)?(ms|s)$"
                    }
                  },
                  "additionalProperties": false,
                  "description": "Animation played when page loads",
                  "title": "Entrance Animation"
                }
              },
              "additionalProperties": false,
              "description": "Interactive behaviors triggered by user actions or page events",
              "title": "Component Interactions"
            },
            "responsive": {
              "type": "object",
              "required": [],
              "properties": {
                "mobile": {
                  "type": "object",
                  "required": [],
                  "properties": {
                    "props": {
                      "type": "object",
                      "required": [],
                      "properties": {},
                      "description": "Props to override",
                      "patternProperties": {
                        "^[a-zA-Z][a-zA-Z0-9]*$": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "object",
                              "required": [],
                              "properties": {},
                              "additionalProperties": {
                                "$id": "/schemas/unknown"
                              }
                            },
                            {
                              "type": "array",
                              "items": {
                                "$id": "/schemas/unknown"
                              }
                            }
                          ]
                        }
                      }
                    },
                    "content": {
                      "type": "string",
                      "description": "Content to display at this breakpoint"
                    },
                    "visible": {
                      "type": "boolean",
                      "description": "Show/hide component at this breakpoint"
                    },
                    "children": {
                      "type": "array",
                      "items": {
                        "$id": "/schemas/unknown"
                      },
                      "description": "Different children at this breakpoint"
                    }
                  },
                  "additionalProperties": false,
                  "description": "Component properties to override at this breakpoint",
                  "title": "Variant Overrides"
                },
                "sm": {
                  "type": "object",
                  "required": [],
                  "properties": {
                    "props": {
                      "type": "object",
                      "required": [],
                      "properties": {},
                      "description": "Props to override",
                      "patternProperties": {
                        "^[a-zA-Z][a-zA-Z0-9]*$": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "object",
                              "required": [],
                              "properties": {},
                              "additionalProperties": {
                                "$id": "/schemas/unknown"
                              }
                            },
                            {
                              "type": "array",
                              "items": {
                                "$id": "/schemas/unknown"
                              }
                            }
                          ]
                        }
                      }
                    },
                    "content": {
                      "type": "string",
                      "description": "Content to display at this breakpoint"
                    },
                    "visible": {
                      "type": "boolean",
                      "description": "Show/hide component at this breakpoint"
                    },
                    "children": {
                      "type": "array",
                      "items": {
                        "$id": "/schemas/unknown"
                      },
                      "description": "Different children at this breakpoint"
                    }
                  },
                  "additionalProperties": false,
                  "description": "Component properties to override at this breakpoint",
                  "title": "Variant Overrides"
                },
                "md": {
                  "type": "object",
                  "required": [],
                  "properties": {
                    "props": {
                      "type": "object",
                      "required": [],
                      "properties": {},
                      "description": "Props to override",
                      "patternProperties": {
                        "^[a-zA-Z][a-zA-Z0-9]*$": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "object",
                              "required": [],
                              "properties": {},
                              "additionalProperties": {
                                "$id": "/schemas/unknown"
                              }
                            },
                            {
                              "type": "array",
                              "items": {
                                "$id": "/schemas/unknown"
                              }
                            }
                          ]
                        }
                      }
                    },
                    "content": {
                      "type": "string",
                      "description": "Content to display at this breakpoint"
                    },
                    "visible": {
                      "type": "boolean",
                      "description": "Show/hide component at this breakpoint"
                    },
                    "children": {
                      "type": "array",
                      "items": {
                        "$id": "/schemas/unknown"
                      },
                      "description": "Different children at this breakpoint"
                    }
                  },
                  "additionalProperties": false,
                  "description": "Component properties to override at this breakpoint",
                  "title": "Variant Overrides"
                },
                "lg": {
                  "type": "object",
                  "required": [],
                  "properties": {
                    "props": {
                      "type": "object",
                      "required": [],
                      "properties": {},
                      "description": "Props to override",
                      "patternProperties": {
                        "^[a-zA-Z][a-zA-Z0-9]*$": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "object",
                              "required": [],
                              "properties": {},
                              "additionalProperties": {
                                "$id": "/schemas/unknown"
                              }
                            },
                            {
                              "type": "array",
                              "items": {
                                "$id": "/schemas/unknown"
                              }
                            }
                          ]
                        }
                      }
                    },
                    "content": {
                      "type": "string",
                      "description": "Content to display at this breakpoint"
                    },
                    "visible": {
                      "type": "boolean",
                      "description": "Show/hide component at this breakpoint"
                    },
                    "children": {
                      "type": "array",
                      "items": {
                        "$id": "/schemas/unknown"
                      },
                      "description": "Different children at this breakpoint"
                    }
                  },
                  "additionalProperties": false,
                  "description": "Component properties to override at this breakpoint",
                  "title": "Variant Overrides"
                },
                "xl": {
                  "type": "object",
                  "required": [],
                  "properties": {
                    "props": {
                      "type": "object",
                      "required": [],
                      "properties": {},
                      "description": "Props to override",
                      "patternProperties": {
                        "^[a-zA-Z][a-zA-Z0-9]*$": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "object",
                              "required": [],
                              "properties": {},
                              "additionalProperties": {
                                "$id": "/schemas/unknown"
                              }
                            },
                            {
                              "type": "array",
                              "items": {
                                "$id": "/schemas/unknown"
                              }
                            }
                          ]
                        }
                      }
                    },
                    "content": {
                      "type": "string",
                      "description": "Content to display at this breakpoint"
                    },
                    "visible": {
                      "type": "boolean",
                      "description": "Show/hide component at this breakpoint"
                    },
                    "children": {
                      "type": "array",
                      "items": {
                        "$id": "/schemas/unknown"
                      },
                      "description": "Different children at this breakpoint"
                    }
                  },
                  "additionalProperties": false,
                  "description": "Component properties to override at this breakpoint",
                  "title": "Variant Overrides"
                },
                "2xl": {
                  "type": "object",
                  "required": [],
                  "properties": {
                    "props": {
                      "type": "object",
                      "required": [],
                      "properties": {},
                      "description": "Props to override",
                      "patternProperties": {
                        "^[a-zA-Z][a-zA-Z0-9]*$": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "object",
                              "required": [],
                              "properties": {},
                              "additionalProperties": {
                                "$id": "/schemas/unknown"
                              }
                            },
                            {
                              "type": "array",
                              "items": {
                                "$id": "/schemas/unknown"
                              }
                            }
                          ]
                        }
                      }
                    },
                    "content": {
                      "type": "string",
                      "description": "Content to display at this breakpoint"
                    },
                    "visible": {
                      "type": "boolean",
                      "description": "Show/hide component at this breakpoint"
                    },
                    "children": {
                      "type": "array",
                      "items": {
                        "$id": "/schemas/unknown"
                      },
                      "description": "Different children at this breakpoint"
                    }
                  },
                  "additionalProperties": false,
                  "description": "Component properties to override at this breakpoint",
                  "title": "Variant Overrides"
                }
              },
              "additionalProperties": false,
              "description": "Breakpoint-specific component overrides for responsive design",
              "title": "Responsive Variants"
            },
            "visibility": {
              "type": "object",
              "required": [],
              "properties": {
                "when": {
                  "type": "string",
                  "enum": [
                    "authenticated",
                    "unauthenticated"
                  ],
                  "description": "Show component only when user is 'authenticated' or 'unauthenticated'"
                },
                "roles": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Show component only to users with one of these roles",
                  "title": "Visibility Roles",
                  "examples": [
                    [
                      "admin"
                    ],
                    [
                      "admin",
                      "editor"
                    ]
                  ],
                  "minItems": 1
                }
              },
              "additionalProperties": false,
              "description": "Conditional component visibility based on authentication state and user roles",
              "title": "Visibility"
            },
            "dataSource": {
              "$ref": "#/$defs/DataSource"
            },
            "action": {
              "$ref": "#/$defs/Action"
            },
            "columns": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/DataTableColumn"
              },
              "description": "Column definitions for data-table component",
              "minItems": 1
            },
            "selection": {
              "type": "object",
              "required": [
                "mode"
              ],
              "properties": {
                "mode": {
                  "type": "string",
                  "enum": [
                    "none",
                    "single",
                    "multiple"
                  ],
                  "description": "Row selection mode (default: none)"
                },
                "showCheckboxes": {
                  "type": "boolean",
                  "description": "Show checkbox column (default: true when mode is multiple)"
                }
              },
              "additionalProperties": false,
              "description": "Row selection configuration",
              "title": "Data Table Selection"
            },
            "pagination": {
              "type": "object",
              "required": [],
              "properties": {
                "pageSize": {
                  "type": "integer",
                  "description": "Default rows per page (default: 25)",
                  "examples": [
                    10,
                    25,
                    50
                  ],
                  "exclusiveMinimum": 0
                },
                "pageSizeOptions": {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "description": "a positive number",
                    "exclusiveMinimum": 0
                  },
                  "description": "Page size dropdown options",
                  "examples": [
                    [
                      10,
                      25,
                      50,
                      100
                    ]
                  ],
                  "minItems": 1
                },
                "position": {
                  "type": "string",
                  "enum": [
                    "top",
                    "bottom",
                    "both"
                  ],
                  "description": "Position of pagination controls (default: bottom)"
                },
                "serverSide": {
                  "type": "boolean",
                  "description": "Enable server-side pagination (default: false)"
                }
              },
              "additionalProperties": false,
              "description": "Pagination configuration for the data table",
              "title": "Data Table Pagination"
            },
            "search": {
              "type": "object",
              "required": [],
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Enable global search (default: true)"
                },
                "placeholder": {
                  "type": "string",
                  "description": "Search input placeholder text",
                  "examples": [
                    "Search orders...",
                    "Type to search..."
                  ]
                },
                "debounceMs": {
                  "type": "integer",
                  "description": "Debounce delay for search input in ms (default: 300)",
                  "examples": [
                    200,
                    300,
                    500
                  ],
                  "minimum": 0
                }
              },
              "additionalProperties": false,
              "description": "Global search configuration",
              "title": "Data Table Search"
            },
            "groupBy": {
              "type": "object",
              "required": [
                "field"
              ],
              "properties": {
                "field": {
                  "type": "string",
                  "description": "Field name to group rows by"
                },
                "direction": {
                  "type": "string",
                  "enum": [
                    "asc",
                    "desc"
                  ],
                  "description": "Group sort direction (default: asc)"
                },
                "collapsed": {
                  "type": "boolean",
                  "description": "Start groups collapsed (default: false)"
                },
                "hideEmpty": {
                  "type": "boolean",
                  "description": "Hide empty groups (default: false)"
                }
              },
              "additionalProperties": false,
              "description": "Row grouping configuration",
              "title": "Data Table Group By"
            },
            "summary": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "field",
                  "function"
                ],
                "properties": {
                  "field": {
                    "type": "string",
                    "description": "Field name to compute summary on"
                  },
                  "function": {
                    "type": "string",
                    "enum": [
                      "count",
                      "sum",
                      "avg",
                      "min",
                      "max"
                    ],
                    "description": "Aggregate function for summary computation",
                    "title": "Summary Function"
                  },
                  "label": {
                    "type": "string",
                    "description": "Summary display label"
                  }
                },
                "additionalProperties": false,
                "description": "Single aggregate computation for the summary row",
                "title": "Summary Item"
              },
              "description": "Summary row with aggregate computations",
              "minItems": 1
            },
            "toolbar": {
              "type": "object",
              "required": [],
              "properties": {
                "search": {
                  "type": "boolean",
                  "description": "Show search input"
                },
                "filters": {
                  "type": "boolean",
                  "description": "Show filter builder"
                },
                "sort": {
                  "type": "boolean",
                  "description": "Show sort builder"
                },
                "export": {
                  "type": "boolean",
                  "description": "Show export button"
                },
                "refresh": {
                  "type": "boolean",
                  "description": "Show refresh button"
                },
                "density": {
                  "type": "boolean",
                  "description": "Show row density toggle"
                },
                "columnToggle": {
                  "type": "boolean",
                  "description": "Show column visibility toggle"
                }
              },
              "additionalProperties": false,
              "description": "Toolbar control visibility configuration",
              "title": "Data Table Toolbar"
            },
            "bulkActions": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "label",
                  "action"
                ],
                "properties": {
                  "label": {
                    "type": "string",
                    "description": "Bulk action button label"
                  },
                  "icon": {
                    "type": "string",
                    "description": "Icon name (e.g., truck, trash)"
                  },
                  "action": {
                    "$ref": "#/$defs/Action"
                  },
                  "confirm": {
                    "type": "string",
                    "description": "Confirmation dialog. Supports {count} for number of selected rows.",
                    "examples": [
                      "Delete {count} orders?",
                      "Mark {count} items as shipped?"
                    ]
                  }
                },
                "additionalProperties": false,
                "description": "Action that operates on multiple selected rows",
                "title": "Bulk Action"
              },
              "description": "Actions available when rows are selected",
              "minItems": 1
            },
            "rowHeight": {
              "type": "string",
              "enum": [
                "short",
                "medium",
                "tall"
              ],
              "description": "Table row height preset (default: medium)",
              "title": "Row Height"
            },
            "striped": {
              "type": "boolean",
              "description": "Alternating row colors"
            },
            "bordered": {
              "type": "boolean",
              "description": "Show cell borders"
            },
            "emptyMessage": {
              "type": "string",
              "description": "Message when no records match"
            },
            "showRowNumbers": {
              "type": "boolean",
              "description": "Show row number column"
            },
            "onRowClick": {
              "$ref": "#/$defs/Action"
            },
            "i18n": {
              "type": "object",
              "required": [],
              "properties": {},
              "description": "Localized translations per language for this component",
              "patternProperties": {
                "^[a-z]{2}(-[A-Z]{2})?$": {
                  "type": "object",
                  "required": [],
                  "properties": {
                    "content": {
                      "type": "string",
                      "description": "Translated content text"
                    },
                    "props": {
                      "type": "object",
                      "required": [],
                      "properties": {},
                      "description": "Properties for component templates, supporting variable references",
                      "title": "Component Props",
                      "patternProperties": {
                        "^([a-zA-Z][a-zA-Z0-9]*|data-[a-z]+(-[a-z]+)*|aria-[a-z]+(-[a-z]+)*)$": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "object",
                              "required": [],
                              "properties": {},
                              "additionalProperties": {
                                "$id": "/schemas/unknown"
                              }
                            },
                            {
                              "type": "array",
                              "items": {
                                "$id": "/schemas/unknown"
                              }
                            }
                          ]
                        }
                      }
                    }
                  },
                  "additionalProperties": false
                }
              }
            }
          },
          "additionalProperties": false,
          "description": "Direct component definition",
          "title": "Component"
        },
        {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "$ref",
                "vars"
              ],
              "properties": {
                "$ref": {
                  "type": "string",
                  "description": "Name of the component to reference (kebab-case)",
                  "title": "Component Reference Name",
                  "examples": [
                    "icon-badge",
                    "section-header",
                    "call-to-action"
                  ],
                  "pattern": "^[a-z][a-z0-9-]*$"
                },
                "vars": {
                  "type": "object",
                  "required": [],
                  "properties": {},
                  "description": "Variables to substitute in the component template",
                  "title": "Component Variables",
                  "patternProperties": {
                    "^[a-zA-Z][a-zA-Z0-9]*$": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "number"
                        },
                        {
                          "type": "boolean"
                        }
                      ]
                    }
                  }
                }
              },
              "additionalProperties": false,
              "description": "Reference to a reusable component template with variable substitution",
              "title": "Component Reference (Full Syntax)"
            },
            {
              "type": "object",
              "required": [
                "component",
                "vars"
              ],
              "properties": {
                "component": {
                  "type": "string",
                  "description": "Name of the component to reference (kebab-case)",
                  "title": "Component Reference Name",
                  "examples": [
                    "icon-badge",
                    "section-header",
                    "call-to-action"
                  ],
                  "pattern": "^[a-z][a-z0-9-]*$"
                },
                "vars": {
                  "type": "object",
                  "required": [],
                  "properties": {},
                  "description": "Variables to substitute in the component template",
                  "title": "Component Variables",
                  "patternProperties": {
                    "^[a-zA-Z][a-zA-Z0-9]*$": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "number"
                        },
                        {
                          "type": "boolean"
                        }
                      ]
                    }
                  }
                }
              },
              "additionalProperties": false,
              "description": "Shorthand component reference with variable substitution",
              "title": "Component Reference (Hybrid)"
            },
            {
              "type": "object",
              "required": [
                "component"
              ],
              "properties": {
                "component": {
                  "type": "string",
                  "description": "Name of the component to reference (kebab-case)",
                  "title": "Component Reference Name",
                  "examples": [
                    "icon-badge",
                    "section-header",
                    "call-to-action"
                  ],
                  "pattern": "^[a-z][a-z0-9-]*$"
                }
              },
              "additionalProperties": false,
              "description": "Shorthand reference to a reusable component without variables",
              "title": "Component Reference (Shorthand)"
            }
          ],
          "description": "Reference to a reusable component template. Supports full syntax ($ref + vars), hybrid syntax (component + vars), or shorthand (component name only).",
          "title": "Component Reference"
        }
      ],
      "description": "A page section that can be either a component or component reference (with optional variables)",
      "title": "Section Item"
    },
    "DataSource": {
      "type": "object",
      "required": [
        "table"
      ],
      "properties": {
        "table": {
          "type": "string",
          "description": "Table name to bind to (validated against app.tables)"
        },
        "fields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specific fields to fetch from the table",
          "examples": [
            [
              "title",
              "author",
              "createdAt"
            ]
          ],
          "minItems": 1
        },
        "mode": {
          "type": "string",
          "enum": [
            "list",
            "single",
            "search"
          ],
          "description": "Data fetching mode: 'list' (multiple), 'single' (one record), 'search' (interactive)",
          "title": "Data Source Mode"
        },
        "filter": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "field",
              "operator",
              "value"
            ],
            "properties": {
              "field": {
                "type": "string",
                "description": "Field name from the data source table"
              },
              "operator": {
                "type": "string",
                "enum": [
                  "eq",
                  "neq",
                  "contains",
                  "gt",
                  "lt",
                  "gte",
                  "lte"
                ],
                "description": "Comparison operator for filtering records",
                "title": "Filter Operator"
              },
              "value": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "number"
                  },
                  {
                    "type": "boolean"
                  }
                ],
                "description": "Value to compare against. Supports $variable references."
              }
            },
            "additionalProperties": false,
            "description": "Single filter condition for data source queries",
            "title": "Data Filter"
          },
          "description": "Filter conditions applied with AND logic"
        },
        "sort": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "field",
              "direction"
            ],
            "properties": {
              "field": {
                "type": "string",
                "description": "Field name to sort by"
              },
              "direction": {
                "type": "string",
                "enum": [
                  "asc",
                  "desc"
                ],
                "description": "Sort order: ascending or descending",
                "title": "Sort Direction"
              }
            },
            "additionalProperties": false,
            "description": "Single sort rule for data source queries",
            "title": "Data Sort"
          },
          "description": "Sort rules applied in order"
        },
        "pagination": {
          "type": "object",
          "required": [
            "pageSize"
          ],
          "properties": {
            "pageSize": {
              "type": "integer",
              "description": "Number of records per page",
              "examples": [
                10,
                20,
                50
              ],
              "exclusiveMinimum": 0
            },
            "style": {
              "type": "string",
              "enum": [
                "numbered",
                "loadMore",
                "infinite"
              ],
              "description": "How pagination controls are displayed",
              "title": "Pagination Style"
            }
          },
          "additionalProperties": false,
          "description": "Pagination configuration for data source",
          "title": "Pagination"
        },
        "param": {
          "type": "string",
          "description": "Route parameter name for single mode (e.g., slug, id)",
          "examples": [
            "slug",
            "id"
          ]
        },
        "searchFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Fields to search across in search mode",
          "examples": [
            [
              "name",
              "description"
            ]
          ],
          "minItems": 1
        },
        "debounceMs": {
          "type": "integer",
          "description": "Debounce delay for search input (ms)",
          "examples": [
            300,
            500
          ],
          "minimum": 0
        },
        "limit": {
          "type": "integer",
          "description": "Maximum number of results to return",
          "examples": [
            10,
            20,
            50
          ],
          "exclusiveMinimum": 0
        },
        "targetId": {
          "type": "string",
          "description": "Identifier for cross-component data source references"
        }
      },
      "additionalProperties": false,
      "description": "Binds a component to table data. Supports list, single-record, and search modes with filtering, sorting, and pagination.",
      "title": "Data Source"
    },
    "Action": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "type",
            "method"
          ],
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "auth"
              ]
            },
            "method": {
              "type": "string",
              "enum": [
                "login",
                "signup",
                "logout",
                "resetPassword",
                "setNewPassword",
                "verifyEmail"
              ],
              "description": "Authentication operation to perform"
            },
            "strategy": {
              "type": "string",
              "enum": [
                "email",
                "magicLink",
                "oauth"
              ],
              "description": "Authentication strategy to use"
            },
            "provider": {
              "type": "string",
              "description": "OAuth provider name (e.g., google, github)",
              "examples": [
                "google",
                "github",
                "discord"
              ]
            },
            "onSuccess": {
              "type": "object",
              "required": [],
              "properties": {
                "navigate": {
                  "type": "string",
                  "description": "URL path to navigate to. Supports $variable references.",
                  "examples": [
                    "/dashboard",
                    "/posts/$record.slug"
                  ]
                },
                "toast": {
                  "type": "object",
                  "required": [
                    "message"
                  ],
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Toast notification message. Supports $variable references."
                    },
                    "variant": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error",
                        "warning",
                        "info"
                      ],
                      "description": "Visual style of the toast notification",
                      "title": "Toast Variant"
                    },
                    "duration": {
                      "type": "integer",
                      "description": "Auto-dismiss duration in milliseconds (default: 5000)",
                      "examples": [
                        2000,
                        5000,
                        10000
                      ],
                      "exclusiveMinimum": 0
                    }
                  },
                  "additionalProperties": false,
                  "description": "Toast notification configuration",
                  "title": "Toast"
                }
              },
              "additionalProperties": false,
              "description": "Defines behavior after action success or failure",
              "title": "Action Response"
            },
            "onError": {
              "type": "object",
              "required": [],
              "properties": {
                "navigate": {
                  "type": "string",
                  "description": "URL path to navigate to. Supports $variable references.",
                  "examples": [
                    "/dashboard",
                    "/posts/$record.slug"
                  ]
                },
                "toast": {
                  "type": "object",
                  "required": [
                    "message"
                  ],
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Toast notification message. Supports $variable references."
                    },
                    "variant": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error",
                        "warning",
                        "info"
                      ],
                      "description": "Visual style of the toast notification",
                      "title": "Toast Variant"
                    },
                    "duration": {
                      "type": "integer",
                      "description": "Auto-dismiss duration in milliseconds (default: 5000)",
                      "examples": [
                        2000,
                        5000,
                        10000
                      ],
                      "exclusiveMinimum": 0
                    }
                  },
                  "additionalProperties": false,
                  "description": "Toast notification configuration",
                  "title": "Toast"
                }
              },
              "additionalProperties": false,
              "description": "Defines behavior after action success or failure",
              "title": "Action Response"
            }
          },
          "additionalProperties": false,
          "description": "Authentication action (login, signup, logout, etc.)",
          "title": "Auth Action"
        },
        {
          "type": "object",
          "required": [
            "type",
            "operation",
            "table"
          ],
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "crud"
              ]
            },
            "operation": {
              "type": "string",
              "enum": [
                "create",
                "update",
                "delete"
              ],
              "description": "Data operation to perform"
            },
            "table": {
              "type": "string",
              "description": "Table to perform the operation on"
            },
            "onSuccess": {
              "type": "object",
              "required": [],
              "properties": {
                "navigate": {
                  "type": "string",
                  "description": "URL path to navigate to. Supports $variable references.",
                  "examples": [
                    "/dashboard",
                    "/posts/$record.slug"
                  ]
                },
                "toast": {
                  "type": "object",
                  "required": [
                    "message"
                  ],
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Toast notification message. Supports $variable references."
                    },
                    "variant": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error",
                        "warning",
                        "info"
                      ],
                      "description": "Visual style of the toast notification",
                      "title": "Toast Variant"
                    },
                    "duration": {
                      "type": "integer",
                      "description": "Auto-dismiss duration in milliseconds (default: 5000)",
                      "examples": [
                        2000,
                        5000,
                        10000
                      ],
                      "exclusiveMinimum": 0
                    }
                  },
                  "additionalProperties": false,
                  "description": "Toast notification configuration",
                  "title": "Toast"
                }
              },
              "additionalProperties": false,
              "description": "Defines behavior after action success or failure",
              "title": "Action Response"
            },
            "onError": {
              "type": "object",
              "required": [],
              "properties": {
                "navigate": {
                  "type": "string",
                  "description": "URL path to navigate to. Supports $variable references.",
                  "examples": [
                    "/dashboard",
                    "/posts/$record.slug"
                  ]
                },
                "toast": {
                  "type": "object",
                  "required": [
                    "message"
                  ],
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Toast notification message. Supports $variable references."
                    },
                    "variant": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error",
                        "warning",
                        "info"
                      ],
                      "description": "Visual style of the toast notification",
                      "title": "Toast Variant"
                    },
                    "duration": {
                      "type": "integer",
                      "description": "Auto-dismiss duration in milliseconds (default: 5000)",
                      "examples": [
                        2000,
                        5000,
                        10000
                      ],
                      "exclusiveMinimum": 0
                    }
                  },
                  "additionalProperties": false,
                  "description": "Toast notification configuration",
                  "title": "Toast"
                }
              },
              "additionalProperties": false,
              "description": "Defines behavior after action success or failure",
              "title": "Action Response"
            }
          },
          "additionalProperties": false,
          "description": "Data operation action (create, update, delete)",
          "title": "CRUD Action"
        },
        {
          "type": "object",
          "required": [
            "type",
            "targetDataSource",
            "field"
          ],
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "filter"
              ]
            },
            "targetDataSource": {
              "type": "string",
              "description": "ID of the data source to filter (matches dataSource.targetId)"
            },
            "field": {
              "type": "string",
              "description": "Field name to apply the filter to"
            },
            "operator": {
              "type": "string",
              "enum": [
                "eq",
                "neq",
                "contains",
                "gt",
                "lt",
                "gte",
                "lte"
              ],
              "description": "Comparison operator (defaults to eq)"
            }
          },
          "additionalProperties": false,
          "description": "Cross-component filter action targeting a data source",
          "title": "Filter Action"
        }
      ],
      "description": "Component action. Discriminated by type: auth (authentication), crud (data operations), filter (cross-component filtering).",
      "title": "Action"
    },
    "DataTableColumn": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "field"
          ],
          "properties": {
            "field": {
              "type": "string",
              "description": "Field name from the data source table"
            },
            "label": {
              "type": "string",
              "description": "Column header text override"
            },
            "width": {
              "type": "integer",
              "description": "Column width in pixels",
              "exclusiveMinimum": 0
            },
            "minWidth": {
              "type": "integer",
              "description": "Minimum column width in pixels",
              "exclusiveMinimum": 0
            },
            "align": {
              "type": "string",
              "enum": [
                "left",
                "center",
                "right"
              ],
              "description": "Column text alignment (default: left)"
            },
            "frozen": {
              "type": "boolean",
              "description": "Pin column to left side of table"
            },
            "sortable": {
              "type": "boolean",
              "description": "Allow column sorting (default: true)"
            },
            "filterable": {
              "type": "boolean",
              "description": "Allow column filtering (default: true)"
            },
            "editable": {
              "type": "boolean",
              "description": "Allow inline editing (default: from table permissions)"
            },
            "visible": {
              "type": "boolean",
              "description": "Column visibility (default: true)"
            },
            "format": {
              "type": "string",
              "enum": [
                "truncate",
                "currency",
                "percentage",
                "compact",
                "relative-date",
                "short-date",
                "long-date",
                "datetime",
                "yes-no",
                "check-cross"
              ],
              "description": "Display format override for column rendering",
              "title": "Column Format"
            },
            "cellStyle": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "when",
                  "className"
                ],
                "properties": {
                  "when": {
                    "type": "object",
                    "required": [],
                    "properties": {
                      "eq": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "type": "boolean"
                          }
                        ]
                      },
                      "neq": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "type": "boolean"
                          }
                        ]
                      },
                      "contains": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "type": "boolean"
                          }
                        ]
                      },
                      "gt": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "type": "boolean"
                          }
                        ]
                      },
                      "lt": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "type": "boolean"
                          }
                        ]
                      },
                      "gte": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "type": "boolean"
                          }
                        ]
                      },
                      "lte": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "type": "boolean"
                          }
                        ]
                      }
                    },
                    "additionalProperties": false,
                    "description": "Condition: { operator: value }. Supports eq, neq, contains, gt, lt, gte, lte."
                  },
                  "className": {
                    "type": "string",
                    "description": "Tailwind CSS classes applied when the condition is met",
                    "examples": [
                      "bg-green-50 text-green-700",
                      "bg-red-50 text-red-400 line-through"
                    ]
                  }
                },
                "additionalProperties": false,
                "description": "Conditional styling rule for table cells",
                "title": "Cell Style Condition"
              },
              "description": "Conditional styling rules evaluated against the cell value"
            }
          },
          "additionalProperties": false,
          "description": "Column bound to a table field with presentation config",
          "title": "Field Column"
        },
        {
          "type": "object",
          "required": [
            "type",
            "actions"
          ],
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "actions"
              ],
              "description": "Must be 'actions' for an action column"
            },
            "label": {
              "type": "string",
              "description": "Column header text"
            },
            "width": {
              "type": "integer",
              "description": "Column width in pixels",
              "exclusiveMinimum": 0
            },
            "actions": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "label",
                  "action"
                ],
                "properties": {
                  "label": {
                    "type": "string",
                    "description": "Action button label"
                  },
                  "icon": {
                    "type": "string",
                    "description": "Icon name (e.g., pencil, trash)"
                  },
                  "action": {
                    "$ref": "#/$defs/Action"
                  },
                  "confirm": {
                    "type": "string",
                    "description": "Confirmation dialog message. Supports {count} placeholder for bulk."
                  }
                },
                "additionalProperties": false,
                "description": "Single action button within an action column",
                "title": "Action Column Item"
              },
              "description": "Action buttons rendered per row",
              "minItems": 1
            }
          },
          "additionalProperties": false,
          "description": "Column with action buttons (edit, delete, etc.)",
          "title": "Action Column"
        }
      ],
      "description": "Column definition: field column (with field) or action column (with type: actions)",
      "title": "Data Table Column"
    },
    "PageAccess": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "all",
                "authenticated"
              ]
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Array of role names that have access. At least one role required.",
              "title": "Role List",
              "examples": [
                [
                  "admin"
                ],
                [
                  "admin",
                  "editor"
                ]
              ],
              "minItems": 1
            }
          ],
          "description": "Permission value: 'all' (everyone), 'authenticated' (logged-in), or role array ['admin'].",
          "title": "Access Permission"
        },
        {
          "type": "object",
          "required": [
            "require"
          ],
          "properties": {
            "require": {
              "anyOf": [
                {
                  "type": "string",
                  "enum": [
                    "all",
                    "authenticated"
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Array of role names that have access. At least one role required.",
                  "title": "Role List",
                  "examples": [
                    [
                      "admin"
                    ],
                    [
                      "admin",
                      "editor"
                    ]
                  ],
                  "minItems": 1
                }
              ],
              "description": "Permission value: 'all' (everyone), 'authenticated' (logged-in), or role array ['admin'].",
              "title": "Access Permission"
            },
            "redirectTo": {
              "type": "string",
              "description": "URL path to redirect unauthenticated/unauthorized users",
              "examples": [
                "/login",
                "/signup",
                "/403"
              ],
              "pattern": "^\\/"
            }
          },
          "additionalProperties": false,
          "description": "Extended access configuration with redirect support",
          "title": "Page Access Extended"
        }
      ],
      "description": "Page access control. 'all' (public), 'authenticated' (logged-in), role array ['admin'], or extended { require, redirectTo }.",
      "title": "Page Access",
      "examples": [
        "all",
        "authenticated",
        [
          "admin"
        ],
        {
          "require": "authenticated",
          "redirectTo": "/login"
        }
      ]
    }
  },
  "$ref": "#/$defs/App"
}
