{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://dongri.me/schemas/motionkit.features.schema.json",
  "title": "MotionKit feature and behavior contract",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "contractVersion",
    "behaviorContractVersion",
    "libraryVersion",
    "moduleCount",
    "modules",
    "coreProperties",
    "coreApi",
    "compatibilityApi",
    "additionalNamedExports",
    "criticalBehaviors"
  ],
  "properties": {
    "$schema": { "type": "string" },
    "contractVersion": { "type": "string" },
    "behaviorContractVersion": { "type": "string" },
    "libraryVersion": { "type": "string" },
    "moduleCount": { "type": "integer", "minimum": 1 },
    "modules": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["name", "attribute", "defaultVariant", "variants", "publicOptions"],
        "properties": {
          "name": { "type": "string", "pattern": "^[a-z][A-Za-z0-9]*$" },
          "attribute": { "type": "string", "pattern": "^data-mk-[a-z0-9-]+$" },
          "defaultVariant": { "type": "string", "minLength": 1 },
          "variants": {
            "type": "array",
            "minItems": 1,
            "items": { "type": "string", "minLength": 1 }
          },
          "publicOptions": {
            "type": "array",
            "items": { "type": "string", "pattern": "^[A-Za-z_$][A-Za-z0-9_$]*$" }
          }
        }
      }
    },
    "coreProperties": { "type": "array", "items": { "type": "string" } },
    "coreApi": { "type": "array", "items": { "type": "string" } },
    "compatibilityApi": { "type": "array", "items": { "type": "string" } },
    "additionalNamedExports": { "type": "array", "items": { "type": "string" } },
    "criticalBehaviors": { "type": "object" }
  }
}
