{
  "$schema": "../_schema.json",
  "element": "chart-axis",
  "shared_base": true,
  "properties": {
    "axisFont": {
      "type": "string",
      "add": false,
      "set": false,
      "get": true,
      "description": "axis text font readback.",
      "readback": "font name string",
      "enforcement": "report"
    },
    "axisMax": {
      "type": "number",
      "add": false,
      "set": false,
      "get": true,
      "description": "value-axis maximum readback (also surfaced via max on axis-by-role path).",
      "readback": "numeric value",
      "enforcement": "report"
    },
    "axisMin": {
      "type": "number",
      "add": false,
      "set": false,
      "get": true,
      "description": "value-axis minimum readback (also surfaced via min on axis-by-role path).",
      "readback": "numeric value",
      "enforcement": "report"
    },
    "axisNumFmt": {
      "type": "string",
      "add": false,
      "set": false,
      "get": true,
      "description": "axis number format string.",
      "readback": "format code",
      "enforcement": "report"
    },
    "axisOrientation": {
      "type": "string",
      "add": false,
      "set": false,
      "get": true,
      "description": "axis scaling orientation (e.g. maxMin when reversed).",
      "readback": "orientation token",
      "enforcement": "report"
    },
    "axisTitle": {
      "type": "string",
      "add": false,
      "set": false,
      "get": true,
      "description": "value-axis title readback (chart-level convenience; axis-by-role uses 'title').",
      "readback": "title string",
      "enforcement": "report"
    },
    "format": {
      "type": "string",
      "description": "number format string",
      "set": true,
      "get": true,
      "examples": [
        "--prop format=\"#,##0\"",
        "--prop format=\"#,##0.00\""
      ],
      "enforcement": "report"
    },
    "labelOffset": {
      "type": "number",
      "add": false,
      "set": false,
      "get": true,
      "description": "category axis label offset (% of default 100).",
      "readback": "integer percentage",
      "enforcement": "report"
    },
    "labelRotation": {
      "type": "number",
      "description": "tick label rotation in degrees",
      "set": true,
      "get": true,
      "examples": [
        "--prop labelRotation=-45"
      ],
      "enforcement": "report"
    },
    "logBase": {
      "type": "number",
      "description": "logarithmic base for value axis scale. Only valid for role=value or role=value2; ignored on category axes.",
      "set": true,
      "get": true,
      "appliesWhen": {
        "role": [
          "value",
          "value2"
        ]
      },
      "examples": [
        "--prop logBase=10"
      ],
      "readback": "number (e.g. 10)",
      "enforcement": "report"
    },
    "majorGridlines": {
      "type": "bool",
      "description": "show or hide major gridlines. Applies to all roles.",
      "set": true,
      "get": true,
      "examples": [
        "--prop majorGridlines=true"
      ],
      "enforcement": "report"
    },
    "max": {
      "type": "number",
      "description": "maximum scale of the value axis. Only valid for role=value or role=value2; ignored on category axes.",
      "set": true,
      "get": true,
      "appliesWhen": {
        "role": [
          "value",
          "value2"
        ]
      },
      "examples": [
        "--prop max=1000",
        "--prop max=250"
      ],
      "enforcement": "report"
    },
    "min": {
      "type": "number",
      "description": "minimum scale of the value axis. Only valid for role=value or role=value2; ignored on category axes.",
      "set": true,
      "get": true,
      "appliesWhen": {
        "role": [
          "value",
          "value2"
        ]
      },
      "examples": [
        "--prop min=0"
      ],
      "enforcement": "report"
    },
    "minorGridlines": {
      "type": "bool",
      "description": "show or hide minor gridlines. Applies to all roles.",
      "set": true,
      "get": true,
      "examples": [
        "--prop minorGridlines=false"
      ],
      "enforcement": "report"
    },
    "tickLabelSkip": {
      "type": "number",
      "add": false,
      "set": false,
      "get": true,
      "description": "category axis label skip interval (>1 means tick labels are sparser).",
      "readback": "integer interval",
      "enforcement": "report"
    },
    "title": {
      "type": "string",
      "description": "axis title text. Applies to all roles (category, value). Pass 'none' to remove.",
      "set": true,
      "get": true,
      "examples": [
        "--prop title=\"Revenue\"",
        "--prop title=\"Quarter\""
      ],
      "enforcement": "report"
    },
    "visible": {
      "type": "bool",
      "description": "show or hide the axis. Applies to all roles.",
      "set": true,
      "get": true,
      "examples": [
        "--prop visible=false"
      ],
      "enforcement": "report"
    }
  }
}
