{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://docs.kapiworks.com/schemas/theme-1.json",
  "title": "Kapi Works theme (look/theme.json)",
  "description": "look/theme.json: the package's look, which starts from the company's brand.",
  "type": "object",
  "required": [
    "schema",
    "base"
  ],
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "This file's schema, https://docs.kapiworks.com/schemas/theme-1.json, so editors check the file as you type. Kapi ignores it."
    },
    "schema": {
      "const": "kapi.works.theme/1",
      "description": "The format, kapi.works.theme/1."
    },
    "base": {
      "const": "company",
      "description": "What the look starts from: the company's brand."
    },
    "tokens": {
      "description": "Changes to the player's look, each within its range.",
      "type": "object",
      "required": [],
      "additionalProperties": false,
      "properties": {
        "$schema": {
          "description": "A schema address for editors. Kapi ignores it."
        },
        "radius": {
          "type": "number",
          "minimum": 0,
          "maximum": 24,
          "description": "How round corners are, in pixels, from 0 to 24."
        },
        "density": {
          "type": "number",
          "minimum": 0.75,
          "maximum": 1.25,
          "description": "How much space there is, as a multiple of the player's, from 0.75 to 1.25."
        },
        "typeScale": {
          "type": "number",
          "minimum": 0.875,
          "maximum": 1.25,
          "description": "How large text is, as a multiple of the player's, from 0.875 to 1.25."
        }
      }
    },
    "cover": {
      "description": "The cover picture.",
      "type": "object",
      "required": [
        "media",
        "style"
      ],
      "additionalProperties": false,
      "properties": {
        "$schema": {
          "description": "A schema address for editors. Kapi ignores it."
        },
        "media": {
          "type": "string",
          "pattern": "^[a-z0-9][a-z0-9-]{0,63}$",
          "description": "The media ID of the cover picture."
        },
        "style": {
          "enum": [
            "split",
            "full",
            "band"
          ],
          "description": "The cover's layout: split, full, band."
        }
      }
    }
  }
}
