{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "vitepress:page:1.6",
  "title": "VitePress front matter v1.6",
  "description": "Front matter accepted by VitePress 1.6 — the four options every theme honours, plus the default theme's page-level toggles. Nothing is required: each option has a default, so a page with no front matter renders. Pinned to 1.6 because that is the stable line; 2.0 was still in alpha when this was written and is deliberately not described here. The fields worth having checked are the union-typed ones, `outline` above all: it takes a heading level, a pair of levels, `deep`, or `false`, and anything else is silently ignored rather than reported. See https://vitepress.dev/reference/frontmatter-config",
  "type": "object",
  "additionalProperties": true,
  "$defs": {
    "headingLevel": {
      "type": "integer",
      "minimum": 1,
      "maximum": 6
    }
  },
  "properties": {
    "title": {
      "type": "string",
      "description": "Overrides the site-level title for this page."
    },
    "titleTemplate": {
      "type": ["string", "boolean"],
      "description": "The suffix appended to the title, or `false` to drop it."
    },
    "description": {
      "type": "string",
      "description": "Overrides the site-level description for this page."
    },
    "head": {
      "type": "array",
      "description": "Extra tags injected into this page's `<head>`. Each entry is a `[tag, attrs]` pair, optionally followed by inner content.",
      "items": {
        "type": "array",
        "minItems": 1,
        "prefixItems": [{ "type": "string", "minLength": 1 }]
      }
    },
    "layout": {
      "type": "string",
      "enum": ["doc", "home", "page"],
      "description": "`doc` is the default and applies the documentation styling; `home` renders the hero and features; `page` is a blank slate."
    },
    "hero": {
      "type": "object",
      "description": "The home layout's hero block: `name`, `text`, `tagline`, `image`, `actions`. Left unconstrained beyond its type — the shape varies with the theme."
    },
    "features": {
      "type": "array",
      "description": "The home layout's feature cards.",
      "items": { "type": "object" }
    },
    "navbar": {
      "type": "boolean",
      "description": "Whether the navbar shows on this page. Defaults to true."
    },
    "sidebar": {
      "type": "boolean",
      "description": "Whether the sidebar shows on this page. Defaults to true. This is the page-level toggle only — the sidebar's *contents* are configured in the site config, not here."
    },
    "aside": {
      "description": "Where the aside sits, or `false` to hide it. `true` is the default (right); `left` moves it.",
      "if": { "type": "string" },
      "then": { "const": "left" },
      "else": { "type": "boolean" }
    },
    "outline": {
      "description": "Which heading levels the on-page outline lists: one level, a `[from, to]` pair, `deep` for every level, or `false` to hide it. Branched on array-ness with `if`/`then` rather than `anyOf`, so a bad level inside the pair is reported against the pair; an `anyOf` collapses every branch failure onto the parent and puts the caret on the wrong line. The scalar branch is one `enum` rather than a second nesting of `if`/`then`, so a wrong value produces a single error naming every value that would have worked.",
      "if": { "type": "array" },
      "then": {
        "type": "array",
        "minItems": 2,
        "maxItems": 2,
        "items": { "$ref": "#/$defs/headingLevel" }
      },
      "else": { "enum": [1, 2, 3, 4, 5, 6, "deep", false] }
    },
    "lastUpdated": {
      "type": ["boolean", "string"],
      "description": "Whether to show the last-updated stamp, or a date overriding it. The string branch is a date, which is how a YAML date arrives once parsed."
    },
    "editLink": {
      "type": "boolean",
      "description": "Whether the edit-this-page link shows. Defaults to true."
    },
    "footer": {
      "type": "boolean",
      "description": "Whether the footer shows. Defaults to true."
    },
    "pageClass": {
      "type": "string",
      "description": "An extra CSS class set on the page root, for per-page styling."
    },
    "isHome": {
      "type": "boolean",
      "description": "Forces home-page styling on a page whose layout is not `home`."
    }
  }
}
