{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://deckyard.eu/schema/v24/slide-types/eu.deckyard.slide.chart.schema.json",
  "title": "eu.deckyard.slide.chart slide content",
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "maxLength": 120,
      "title": "Title"
    },
    "subheading": {
      "type": "string",
      "maxLength": 220,
      "title": "Subheading"
    },
    "bottomSubheading": {
      "type": "string",
      "maxLength": 200,
      "title": "Bottom subheading"
    },
    "chartType": {
      "type": "string",
      "enum": [
        "bar",
        "line",
        "pie",
        ""
      ],
      "title": "Chart type"
    },
    "data": {
      "type": "string",
      "maxLength": 20000,
      "title": "Data",
      "description": "Edit it as a table or as CSV. The first row names the columns and is never plotted; every row after it is a data point. Bar and pie read a label and a value; line reads an x label and one or two series, named by the header."
    },
    "pieLabelMode": {
      "type": "string",
      "enum": [
        "none",
        "value",
        "%",
        "both",
        ""
      ],
      "title": "Pie labels"
    },
    "showLegend": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        ""
      ],
      "title": "Legend"
    },
    "showValues": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        ""
      ],
      "title": "Show values"
    },
    "xLabel": {
      "type": "string",
      "maxLength": 80,
      "title": "X label"
    },
    "yLabel": {
      "type": "string",
      "maxLength": 80,
      "title": "Y label"
    },
    "series1Label": {
      "type": "string",
      "maxLength": 80,
      "title": "Series 1 label (legend)"
    },
    "series2Label": {
      "type": "string",
      "maxLength": 80,
      "title": "Series 2 label (legend)"
    },
    "background": {
      "type": "string",
      "title": "Background"
    },
    "headerAlign": {
      "type": "string",
      "enum": [
        "left",
        "center",
        ""
      ],
      "title": "Header alignment"
    },
    "a11yTitle": {
      "type": "string",
      "maxLength": 140,
      "title": "Accessibility title",
      "description": "Optional. Screen readers announce this when the slide becomes active. Prefer a short, descriptive phrase."
    },
    "a11ySummary": {
      "type": "string",
      "maxLength": 280,
      "title": "Accessibility summary",
      "description": "Optional extra context for screen readers (announced after the title). Keep it brief."
    },
    "slideBgImage": {
      "type": "string",
      "title": "Background image",
      "description": "Optional. Fills the whole slide behind the content. Large images are resized automatically; use the focus control to pick which part stays visible when cropped."
    },
    "slideBgFit": {
      "type": "string",
      "enum": [
        "cover",
        "contain",
        ""
      ],
      "title": "Background fit"
    },
    "slideBgFocusX": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "const": ""
        }
      ],
      "title": "Background focus X"
    },
    "slideBgFocusY": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "const": ""
        }
      ],
      "title": "Background focus Y"
    },
    "slideBgOverlay": {
      "type": "string",
      "enum": [
        "auto",
        "none",
        "light",
        "dark",
        "gradient-top",
        "gradient-bottom",
        ""
      ],
      "title": "Background overlay",
      "description": "Auto adds a subtle scrim only when the image is too busy for readable text. Gradient options darken one edge behind the text."
    },
    "slideBgText": {
      "type": "string",
      "enum": [
        "auto",
        "light",
        "dark",
        ""
      ],
      "title": "Text colour",
      "description": "Auto picks the theme text colour with the best contrast for the background image. Light/dark force it. (Legacy \"default\" is treated as the theme default.)"
    },
    "slideLogo": {
      "type": "string",
      "enum": [
        "none",
        "top-right",
        ""
      ],
      "title": "Theme logo",
      "description": "Show the active theme logo in a corner of this slide."
    }
  },
  "propertyNames": {
    "enum": [
      "a11ySummary",
      "a11yTitle",
      "background",
      "bottomSubheading",
      "chartType",
      "data",
      "headerAlign",
      "pieLabelMode",
      "series1Label",
      "series2Label",
      "showLegend",
      "showValues",
      "slideBgAutoFor",
      "slideBgFit",
      "slideBgFocusX",
      "slideBgFocusY",
      "slideBgImage",
      "slideBgNeedsScrim",
      "slideBgOverlay",
      "slideBgText",
      "slideBgTextAuto",
      "slideLogo",
      "subheading",
      "title",
      "xLabel",
      "yLabel"
    ]
  },
  "required": [
    "title",
    "chartType",
    "data"
  ]
}