{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "actionPriorities": {
      "description": "The three Mise en Mode priorities for `action`, counting down from the thing a screen most wants you to do to the thing it least insists on.",
      "properties": {
        "auxiliary": {
          "description": "The quietest choice.",
          "ref": "lex:place.mode.standard.defs#colorIntent",
          "type": "ref"
        },
        "primary": {
          "description": "The one thing the screen most wants you to do.",
          "ref": "lex:place.mode.standard.defs#colorIntent",
          "type": "ref"
        },
        "secondary": {
          "description": "A supporting choice.",
          "ref": "lex:place.mode.standard.defs#colorIntent",
          "type": "ref"
        }
      },
      "required": [
        "primary",
        "secondary",
        "auxiliary"
      ],
      "type": "object"
    },
    "aspects": {
      "description": "A theme's renderable style, grouped by aspect. Each aspect is optional but complete when present; a theme SHOULD carry at least one.",
      "properties": {
        "color": {
          "description": "The color aspect (21 intents). Optional, but complete when present.",
          "ref": "lex:place.mode.standard.defs#colorAspect",
          "type": "ref"
        },
        "typography": {
          "description": "The typography aspect (12 text intents). Optional, but complete when present.",
          "ref": "lex:place.mode.standard.defs#typographyAspect",
          "type": "ref"
        }
      },
      "type": "object"
    },
    "colorAspect": {
      "description": "The complete color aspect of a theme: control + action + surface (21 intents).",
      "properties": {
        "action": {
          "description": "Interactive element (button/link) color, by priority.",
          "ref": "lex:place.mode.standard.defs#actionPriorities",
          "type": "ref"
        },
        "control": {
          "description": "Form fields. No priority — all controls are peers.",
          "ref": "lex:place.mode.standard.defs#colorIntent",
          "type": "ref"
        },
        "surface": {
          "description": "Non-interactive container (surface) color, by how far above the page the surface sits.",
          "ref": "lex:place.mode.standard.defs#surfacePriorities",
          "type": "ref"
        }
      },
      "required": [
        "control",
        "action",
        "surface"
      ],
      "type": "object"
    },
    "colorIntent": {
      "description": "The three color values for a single intent (a purpose, or a purpose+priority).",
      "properties": {
        "background": {
          "description": "Any valid CSS <color> for the element's background.",
          "maxLength": 128,
          "type": "string"
        },
        "border": {
          "description": "Any valid CSS <color> for the element's border.",
          "maxLength": 128,
          "type": "string"
        },
        "foreground": {
          "description": "Any valid CSS <color> for the element's foreground (text/icon).",
          "maxLength": 128,
          "type": "string"
        }
      },
      "required": [
        "background",
        "foreground",
        "border"
      ],
      "type": "object"
    },
    "fontDescriptor": {
      "description": "One @font-face declaration. Only `family` is schema-required; a source (`src` or `file`) is required by the standard.",
      "properties": {
        "display": {
          "description": "CSS font-display descriptor (e.g. 'swap', 'fallback').",
          "maxLength": 32,
          "type": "string"
        },
        "family": {
          "description": "The font-family name as it should appear in CSS (e.g. 'Inter').",
          "maxLength": 256,
          "type": "string"
        },
        "file": {
          "accept": [
            "font/woff2",
            "font/woff",
            "font/ttf",
            "font/otf",
            "application/octet-stream"
          ],
          "description": "A font file stored as a blob on the author's PDS. Takes precedence over `src` when both are present.",
          "maxSize": 5000000,
          "type": "blob"
        },
        "src": {
          "description": "A URL to the font file, or a CSS `src` value (e.g. 'url(https://...) format(woff2)'). Alternative to `file`.",
          "maxLength": 1024,
          "type": "string"
        },
        "stretch": {
          "description": "CSS font-stretch/font-width descriptor or range (e.g. 'normal', '75% 125%').",
          "maxLength": 64,
          "type": "string"
        },
        "style": {
          "description": "CSS font-style descriptor (e.g. 'normal', 'italic', 'oblique 0deg 20deg').",
          "maxLength": 32,
          "type": "string"
        },
        "unicodeRange": {
          "description": "CSS unicode-range descriptor (e.g. 'U+0000-00FF, U+0131'). Lets several entries share one `family` for subsetting.",
          "maxLength": 2048,
          "type": "string"
        },
        "weight": {
          "description": "CSS font-weight descriptor or range (e.g. '400', '100 900').",
          "maxLength": 32,
          "type": "string"
        }
      },
      "required": [
        "family"
      ],
      "type": "object"
    },
    "surfacePriorities": {
      "description": "The three Mise en Mode priorities for `surface`, counting down from the layer that claims most of a reader's attention to the one that claims least. Because priority counts down, the page is `auxiliary` and not `primary`: a page is what a modal interrupts.",
      "properties": {
        "auxiliary": {
          "description": "The page itself, and everything sitting on it rather than above it — cards, bars, panels. The layer a theme is mostly made of.",
          "ref": "lex:place.mode.standard.defs#colorIntent",
          "type": "ref"
        },
        "primary": {
          "description": "A surface that interrupts the page: modal, dialog, alert, sheet.",
          "ref": "lex:place.mode.standard.defs#colorIntent",
          "type": "ref"
        },
        "secondary": {
          "description": "A surface over the page, not instead of it: flyout, menu, popover.",
          "ref": "lex:place.mode.standard.defs#colorIntent",
          "type": "ref"
        }
      },
      "required": [
        "primary",
        "secondary",
        "auxiliary"
      ],
      "type": "object"
    },
    "textIntent": {
      "description": "Typography metrics for a single text priority. Color is intentionally excluded (it belongs to the containing surface).",
      "properties": {
        "family": {
          "description": "A CSS font-family value; should match a `family` in the theme's `fonts` array.",
          "maxLength": 256,
          "type": "string"
        },
        "lineHeight": {
          "description": "A valid CSS line-height value (e.g. '1.4').",
          "maxLength": 128,
          "type": "string"
        },
        "size": {
          "description": "A valid CSS <length-percentage> font size (e.g. '1.25rem').",
          "maxLength": 128,
          "type": "string"
        },
        "weight": {
          "description": "A valid CSS <font-weight> (e.g. '400', '600').",
          "maxLength": 128,
          "type": "string"
        }
      },
      "required": [
        "size",
        "weight",
        "family",
        "lineHeight"
      ],
      "type": "object"
    },
    "textPriorities": {
      "description": "The three Mise en Mode priorities for `text`, counting down from the text that claims most of a reader's attention to the text that claims least.",
      "properties": {
        "auxiliary": {
          "description": "Detail and help: captions, hints, legal.",
          "ref": "lex:place.mode.standard.defs#textIntent",
          "type": "ref"
        },
        "primary": {
          "description": "Headlines and titles.",
          "ref": "lex:place.mode.standard.defs#textIntent",
          "type": "ref"
        },
        "secondary": {
          "description": "Body copy — the text a page is mostly made of.",
          "ref": "lex:place.mode.standard.defs#textIntent",
          "type": "ref"
        }
      },
      "required": [
        "primary",
        "secondary",
        "auxiliary"
      ],
      "type": "object"
    },
    "typographyAspect": {
      "description": "The typography aspect of a theme: text (12 intents), complete when present.",
      "properties": {
        "text": {
          "description": "Typography by priority.",
          "ref": "lex:place.mode.standard.defs#textPriorities",
          "type": "ref"
        }
      },
      "required": [
        "text"
      ],
      "type": "object"
    }
  },
  "id": "place.mode.standard.defs",
  "lexicon": 1
}
