{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://gardener.style/schema/manifest.schema.json",
  "title": "Gardener combined distribution manifest",
  "type": "object",
  "additionalProperties": false,
  "required": ["$schema", "schemaVersion", "name", "version", "classPrefix", "defaultTheme", "themes", "modes", "axes", "breakpoints", "grid", "regions", "primitives", "pageComponents", "helpComponents", "formCompositions", "navigationCompositions", "dataCompositions", "selectionCompositions", "contentCompositions", "authCompositions", "commerceCompositions", "mobileCompositions", "desktopCompositions", "aiCompositions", "solutionCompositions", "behaviors", "runtimeBehaviors", "components", "requiredStateMatrix", "requiredEnvironmentMatrix", "compositionAliases", "recipes"],
  "properties": {
    "$schema": { "const": "../metadata/manifest.schema.json" },
    "schemaVersion": { "const": 3 },
    "name": { "const": "Gardener" },
    "version": { "type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+$" },
    "classPrefix": { "const": "g-" },
    "defaultTheme": { "type": "string" },
    "themes": { "$ref": "#/$defs/uniqueStrings" },
    "modes": { "$ref": "#/$defs/uniqueStrings" },
    "axes": { "type": "object", "propertyNames": { "pattern": "^[a-z][a-z0-9-]*$" }, "additionalProperties": { "$ref": "#/$defs/uniqueStrings" } },
    "breakpoints": { "type": "object", "propertyNames": { "pattern": "^[a-z0-9-]+$" }, "additionalProperties": { "type": "number", "minimum": 0 } },
    "grid": { "$ref": "./capabilities.schema.json#/$defs/capability" },
    "regions": { "$ref": "./capabilities.schema.json#/$defs/capability" },
    "primitives": { "$ref": "./capabilities.schema.json#/$defs/capability" },
    "pageComponents": { "$ref": "./capabilities.schema.json#/$defs/capability" },
    "helpComponents": { "$ref": "./capabilities.schema.json#/$defs/capability" },
    "formCompositions": { "$ref": "./capabilities.schema.json#/$defs/capability" },
    "navigationCompositions": { "$ref": "./capabilities.schema.json#/$defs/capability" },
    "dataCompositions": { "$ref": "./capabilities.schema.json#/$defs/capability" },
    "selectionCompositions": { "$ref": "./capabilities.schema.json#/$defs/capability" },
    "contentCompositions": { "$ref": "./capabilities.schema.json#/$defs/capability" },
    "authCompositions": { "$ref": "./capabilities.schema.json#/$defs/capability" },
    "commerceCompositions": { "$ref": "./capabilities.schema.json#/$defs/capability" },
    "mobileCompositions": { "$ref": "./capabilities.schema.json#/$defs/capability" },
    "desktopCompositions": { "$ref": "./capabilities.schema.json#/$defs/capability" },
    "aiCompositions": { "$ref": "./capabilities.schema.json#/$defs/capability" },
    "solutionCompositions": { "$ref": "./capabilities.schema.json#/$defs/capability" },
    "behaviors": { "type": "array", "items": { "$ref": "#/$defs/name" }, "uniqueItems": true },
    "runtimeBehaviors": { "type": "array", "items": { "$ref": "#/$defs/name" }, "uniqueItems": true, "deprecated": true },
    "components": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "./components.schema.json#/$defs/component" } },
    "requiredStateMatrix": { "$ref": "#/$defs/uniqueStrings" },
    "requiredEnvironmentMatrix": { "$ref": "#/$defs/uniqueStrings" },
    "compositionAliases": { "type": "object", "minProperties": 1, "propertyNames": { "$ref": "#/$defs/name" }, "additionalProperties": { "$ref": "#/$defs/name" } },
    "recipes": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "./recipes.schema.json#/$defs/recipe" } }
  },
  "$defs": {
    "name": { "type": "string", "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$" },
    "uniqueStrings": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 }, "uniqueItems": true }
  }
}
