{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://winmore.app/schemas/screen.json",
  "title": "Onbun app screen",
  "description": "ui/screen.json for an Onbun app. Generated from companion/kit.cjs.",
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string"
    },
    "type": {
      "anyOf": [
        {
          "enum": [
            "screen"
          ]
        },
        {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^\\$|\\{\\{"
            },
            {
              "type": "object",
              "minProperties": 1
            }
          ]
        }
      ]
    },
    "title": {
      "anyOf": [
        {
          "type": [
            "string",
            "number"
          ]
        },
        {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^\\$|\\{\\{"
            },
            {
              "type": "object",
              "minProperties": 1
            }
          ]
        }
      ],
      "description": "Shown in the app bar on PC and as the default navigation title."
    },
    "chrome": {
      "anyOf": [
        {
          "enum": [
            "standard",
            "fullscreen"
          ]
        },
        {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^\\$|\\{\\{"
            },
            {
              "type": "object",
              "minProperties": 1
            }
          ]
        }
      ],
      "description": "standard keeps Onbun's margins and music volume bar. fullscreen gives the app the whole content area and reaches the bottom edge: a scroll runs under the edge and keeps the margin as space after its last item, and an element that fills the height with a background or gradient extends that background to the edge while its content stays inside the margin. Default standard."
    },
    "background": {
      "anyOf": [
        {
          "enum": [
            "primary",
            "secondary",
            "tertiary",
            "accent",
            "background",
            "card",
            "white",
            "black",
            "clear",
            "red",
            "orange",
            "yellow",
            "green",
            "mint",
            "teal",
            "cyan",
            "blue",
            "indigo",
            "purple",
            "pink",
            "brown",
            "gray"
          ]
        },
        {
          "type": "string",
          "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
        },
        {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^\\$|\\{\\{"
            },
            {
              "type": "object",
              "minProperties": 1
            }
          ]
        }
      ],
      "description": "Screen color. Default black."
    },
    "surface": {
      "anyOf": [
        {
          "enum": [
            "primary",
            "secondary",
            "tertiary",
            "accent",
            "background",
            "card",
            "white",
            "black",
            "clear",
            "red",
            "orange",
            "yellow",
            "green",
            "mint",
            "teal",
            "cyan",
            "blue",
            "indigo",
            "purple",
            "pink",
            "brown",
            "gray"
          ]
        },
        {
          "type": "string",
          "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
        },
        {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^\\$|\\{\\{"
            },
            {
              "type": "object",
              "minProperties": 1
            }
          ]
        }
      ],
      "description": "Color of `card` and `section` surfaces. Default #1C1C1E."
    },
    "accent": {
      "anyOf": [
        {
          "enum": [
            "primary",
            "secondary",
            "tertiary",
            "accent",
            "background",
            "card",
            "white",
            "black",
            "clear",
            "red",
            "orange",
            "yellow",
            "green",
            "mint",
            "teal",
            "cyan",
            "blue",
            "indigo",
            "purple",
            "pink",
            "brown",
            "gray"
          ]
        },
        {
          "type": "string",
          "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
        },
        {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^\\$|\\{\\{"
            },
            {
              "type": "object",
              "minProperties": 1
            }
          ]
        }
      ],
      "description": "Selected and highlighted states. Default blue."
    },
    "state": {
      "type": "object",
      "description": "Initial screen variables, read as \"$ui.name\" and changed with the `set` action."
    },
    "let": {
      "type": "object",
      "description": "Named values worked out from data, e.g. {\"unread\": {\"count\": \"$messages\"}}; read them as \"$unread\". Sheets and covers can have their own `let`."
    },
    "bar": {
      "type": "object",
      "properties": {
        "leading": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/component"
          }
        },
        "trailing": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/component"
          }
        }
      },
      "additionalProperties": false,
      "description": "Floating glass bar: {leading:[…], trailing:[…]}. Use glass buttons, menus and pills."
    },
    "accessory": {
      "$ref": "#/$defs/component",
      "description": "Shown under the bar, e.g. a search field."
    },
    "body": {
      "$ref": "#/$defs/component"
    },
    "sheets": {
      "type": "object",
      "description": "Named sheets: {name: {title, body, detents:[\"medium\",\"large\"]}}. Open with {\"sheet\":\"name\"}."
    },
    "covers": {
      "type": "object",
      "description": "Named full-screen pages: {name: {bar, body, background}}. Open with {\"cover\":\"name\",\"params\":…}."
    },
    "refresh": {
      "type": "object",
      "description": "How often the phone asks for data: {interval: 1.5, fast: 0.45, fastWhen: \"$loading\"} in seconds."
    },
    "timelines": {
      "type": "object",
      "description": "Media positions that keep moving between updates: {\"main\": {\"track\": \"$song.id\", \"position\": \"$song.current\", \"duration\": \"$song.duration\", \"playing\": \"$song.playing\"}} (seconds). `scrubber` and `lyrics` follow them."
    },
    "persist": {
      "anyOf": [
        {
          "type": "array"
        },
        {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^\\$|\\{\\{"
            },
            {
              "type": "object",
              "minProperties": 1
            }
          ]
        }
      ],
      "description": "Screen variables this phone remembers between launches, e.g. [\"face\", \"theme\"]."
    },
    "backdrop": {
      "description": "An image (usually album art) whose colors tint the whole screen background."
    },
    "appear": {
      "$ref": "#/$defs/action"
    }
  },
  "required": [
    "type",
    "body"
  ],
  "additionalProperties": false,
  "$defs": {
    "component": {
      "anyOf": [
        {
          "$ref": "#/$defs/stack"
        },
        {
          "$ref": "#/$defs/layers"
        },
        {
          "$ref": "#/$defs/split"
        },
        {
          "$ref": "#/$defs/scroll"
        },
        {
          "$ref": "#/$defs/grid"
        },
        {
          "$ref": "#/$defs/list"
        },
        {
          "$ref": "#/$defs/section"
        },
        {
          "$ref": "#/$defs/card"
        },
        {
          "$ref": "#/$defs/each"
        },
        {
          "$ref": "#/$defs/if"
        },
        {
          "$ref": "#/$defs/pager"
        },
        {
          "$ref": "#/$defs/spacer"
        },
        {
          "$ref": "#/$defs/divider"
        },
        {
          "$ref": "#/$defs/text"
        },
        {
          "$ref": "#/$defs/label"
        },
        {
          "$ref": "#/$defs/symbol"
        },
        {
          "$ref": "#/$defs/image"
        },
        {
          "$ref": "#/$defs/gallery"
        },
        {
          "$ref": "#/$defs/video"
        },
        {
          "$ref": "#/$defs/media"
        },
        {
          "$ref": "#/$defs/badge"
        },
        {
          "$ref": "#/$defs/stat"
        },
        {
          "$ref": "#/$defs/progress"
        },
        {
          "$ref": "#/$defs/gauge"
        },
        {
          "$ref": "#/$defs/chart"
        },
        {
          "$ref": "#/$defs/avatar"
        },
        {
          "$ref": "#/$defs/row"
        },
        {
          "$ref": "#/$defs/comment"
        },
        {
          "$ref": "#/$defs/empty"
        },
        {
          "$ref": "#/$defs/lyrics"
        },
        {
          "$ref": "#/$defs/clock"
        },
        {
          "$ref": "#/$defs/web"
        },
        {
          "$ref": "#/$defs/button"
        },
        {
          "$ref": "#/$defs/pill"
        },
        {
          "$ref": "#/$defs/menu"
        },
        {
          "$ref": "#/$defs/toggle"
        },
        {
          "$ref": "#/$defs/slider"
        },
        {
          "$ref": "#/$defs/scrubber"
        },
        {
          "$ref": "#/$defs/stepper"
        },
        {
          "$ref": "#/$defs/picker"
        },
        {
          "$ref": "#/$defs/field"
        },
        {
          "$ref": "#/$defs/link"
        }
      ]
    },
    "action": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/action"
          }
        },
        {
          "type": "object",
          "description": "Sends a command to your app on the PC: {\"command\":\"open\",\"value\":…}. Optional \"app\" sends it to another app, \"result\":\"name\" stores the reply in a screen variable, and \"onError\" runs an action if it fails (the error message is $error).",
          "required": [
            "command"
          ],
          "properties": {
            "command": {},
            "value": {},
            "app": {},
            "result": {},
            "onError": {}
          }
        },
        {
          "type": "object",
          "description": "Sets a screen variable: {\"set\":\"query\",\"value\":\"\"}.",
          "required": [
            "set"
          ],
          "properties": {
            "set": {},
            "value": {}
          }
        },
        {
          "type": "object",
          "description": "Flips a true/false screen variable: {\"toggle\":\"showSearch\"}.",
          "required": [
            "toggle"
          ],
          "properties": {
            "toggle": {}
          }
        },
        {
          "type": "object",
          "description": "Opens a named sheet: {\"sheet\":\"places\"}.",
          "required": [
            "sheet"
          ],
          "properties": {
            "sheet": {},
            "params": {}
          }
        },
        {
          "type": "object",
          "description": "Opens a named full-screen page; its bindings can read \"$params\": {\"cover\":\"post\",\"params\":\"$post\"}.",
          "required": [
            "cover"
          ],
          "properties": {
            "cover": {},
            "params": {}
          }
        },
        {
          "type": "object",
          "description": "Closes the sheet or page this action runs in: {\"dismiss\":true}.",
          "required": [
            "dismiss"
          ],
          "properties": {
            "dismiss": {}
          }
        },
        {
          "type": "object",
          "description": "Opens a web page on the phone: {\"open\":\"$post.url\"}.",
          "required": [
            "open"
          ],
          "properties": {
            "open": {}
          }
        },
        {
          "type": "object",
          "description": "Copies text, or an image given as a data: URL or {\"kind\":\"image\",\"data\":…}: {\"copy\":\"$post.url\"}.",
          "required": [
            "copy"
          ],
          "properties": {
            "copy": {}
          }
        },
        {
          "type": "object",
          "description": "Reads the phone clipboard into a screen variable as {\"kind\":\"text\"|\"image\",\"data\":…} (images as a PNG data: URL under 2 MB), or null: {\"paste\":\"clip\"}. The phone may ask once for permission.",
          "required": [
            "paste"
          ],
          "properties": {
            "paste": {}
          }
        },
        {
          "type": "object",
          "description": "Lets you choose a photo, keeps a copy on this phone and stores its path in a screen variable, for `image`: {\"photo\":\"background\",\"maxSize\":1600}. Cancelling stops the list.",
          "required": [
            "photo"
          ],
          "properties": {
            "photo": {},
            "maxSize": {}
          }
        },
        {
          "type": "object",
          "description": "Plays a haptic: light, medium, heavy, selection, success, warning, error.",
          "required": [
            "haptic"
          ],
          "properties": {
            "haptic": {}
          }
        },
        {
          "type": "object",
          "description": "Asks the PC for fresh data now: {\"refresh\":true}.",
          "required": [
            "refresh"
          ],
          "properties": {
            "refresh": {}
          }
        },
        {
          "type": "object",
          "description": "Runs `then` or `else`: {\"if\":\"$saved\",\"then\":…,\"else\":…}.",
          "required": [
            "if"
          ],
          "properties": {
            "if": {},
            "then": {},
            "else": {}
          }
        },
        {
          "type": "object",
          "description": "Hides the phone keyboard: {\"keyboard\":\"hide\"}.",
          "required": [
            "keyboard"
          ],
          "properties": {
            "keyboard": {}
          }
        }
      ]
    },
    "stack": {
      "type": "object",
      "description": "Lays children out in a column or a row.",
      "properties": {
        "type": {
          "const": "stack"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "axis": {
          "anyOf": [
            {
              "enum": [
                "vertical",
                "horizontal"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default vertical."
        },
        "spacing": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Space between children. Default 8."
        },
        "alignment": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "fill"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Cross-axis alignment. Default leading (vertical) or center (horizontal)."
        },
        "children": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/component"
          }
        }
      },
      "required": [
        "type",
        "children"
      ],
      "additionalProperties": false
    },
    "layers": {
      "type": "object",
      "description": "Stacks children on top of each other (first child at the back).",
      "properties": {
        "type": {
          "const": "layers"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "alignment": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default center."
        },
        "children": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/component"
          }
        }
      },
      "required": [
        "type",
        "children"
      ],
      "additionalProperties": false
    },
    "split": {
      "type": "object",
      "description": "Two panes side by side in landscape. In portrait they stack, or the second one hides.",
      "properties": {
        "type": {
          "const": "split"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "ratio": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Share of the width for the first pane in landscape, 0.2 to 0.8. Default 0.58."
        },
        "spacing": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default 12."
        },
        "portrait": {
          "anyOf": [
            {
              "enum": [
                "stack",
                "first",
                "second"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Portrait layout. Default stack."
        },
        "portraitHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Height of the first pane when stacked in portrait."
        },
        "children": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/component"
          },
          "description": "Exactly two components."
        }
      },
      "required": [
        "type",
        "children"
      ],
      "additionalProperties": false
    },
    "scroll": {
      "type": "object",
      "description": "A scrolling container. Children are created lazily, so long feeds stay fast.",
      "properties": {
        "type": {
          "const": "scroll"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "axis": {
          "anyOf": [
            {
              "enum": [
                "vertical",
                "horizontal"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default vertical."
        },
        "spacing": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default 12."
        },
        "snap": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Settle on each child after a swipe (paging cards)."
        },
        "indicators": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Show scroll bars. Default false."
        },
        "refresh": {
          "$ref": "#/$defs/action",
          "description": "Pull to refresh."
        },
        "end": {
          "$ref": "#/$defs/action",
          "description": "Runs when the last child appears (load more)."
        },
        "footer": {
          "$ref": "#/$defs/component",
          "description": "Shown after the children, e.g. a spinner while more loads."
        },
        "stick": {
          "anyOf": [
            {
              "enum": [
                "none",
                "bottom"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "bottom keeps the newest (last) child in view as children arrive, like a chat. Default none."
        },
        "children": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/component"
          }
        }
      },
      "required": [
        "type",
        "children"
      ],
      "additionalProperties": false
    },
    "grid": {
      "type": "object",
      "description": "A grid that fills rows with as many columns as fit.",
      "properties": {
        "type": {
          "const": "grid"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Adaptive columns at least this wide (used when `columns` is not set). Default 140."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "columns": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed number of columns."
        },
        "spacing": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default 12."
        },
        "children": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/component"
          }
        }
      },
      "required": [
        "type",
        "children"
      ],
      "additionalProperties": false
    },
    "list": {
      "type": "object",
      "description": "A native grouped list, like the phone’s own Settings. Put `section` and `row` components inside.",
      "properties": {
        "type": {
          "const": "list"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "style": {
          "anyOf": [
            {
              "enum": [
                "inset",
                "plain"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default inset."
        },
        "refresh": {
          "$ref": "#/$defs/action",
          "description": "Pull to refresh."
        },
        "children": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/component"
          }
        }
      },
      "required": [
        "type",
        "children"
      ],
      "additionalProperties": false
    },
    "section": {
      "type": "object",
      "description": "A titled group. Inside a `list` it is a list section; elsewhere a rounded card.",
      "properties": {
        "type": {
          "const": "section"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "title": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "footer": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "children": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/component"
          }
        }
      },
      "required": [
        "type",
        "children"
      ],
      "additionalProperties": false
    },
    "card": {
      "type": "object",
      "description": "A flat rounded surface for content (posts, tiles).",
      "properties": {
        "type": {
          "const": "card"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "spacing": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default 8."
        },
        "axis": {
          "anyOf": [
            {
              "enum": [
                "vertical",
                "horizontal"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default vertical."
        },
        "inset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Inner padding. Default 16. Use 0 for edge-to-edge media."
        },
        "children": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/component"
          }
        }
      },
      "required": [
        "type",
        "children"
      ],
      "additionalProperties": false
    },
    "each": {
      "type": "object",
      "description": "Repeats `template` for every element of `items`.",
      "properties": {
        "type": {
          "const": "each"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "items": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Usually a binding, e.g. \"$posts\"."
        },
        "as": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Name for the current element in bindings. Default \"item\"."
        },
        "index": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Name for the current position (from 0)."
        },
        "id": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Path inside each element that identifies it. Default \"id\"."
        },
        "template": {
          "$ref": "#/$defs/component"
        },
        "empty": {
          "$ref": "#/$defs/component",
          "description": "Shown when there are no items."
        }
      },
      "required": [
        "type",
        "items",
        "template"
      ],
      "additionalProperties": false
    },
    "if": {
      "type": "object",
      "description": "Shows `then` when `test` is truthy, otherwise `else`.",
      "properties": {
        "type": {
          "const": "if"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "test": {},
        "then": {
          "$ref": "#/$defs/component"
        },
        "else": {
          "$ref": "#/$defs/component"
        }
      },
      "required": [
        "type",
        "test"
      ],
      "additionalProperties": false
    },
    "pager": {
      "type": "object",
      "description": "Pages you swipe through one at a time, sideways or up and down. Vertical pagers resist past the first and last page. Use `bind` to read or move the page.",
      "properties": {
        "type": {
          "const": "pager"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "axis": {
          "anyOf": [
            {
              "enum": [
                "horizontal",
                "vertical"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default horizontal."
        },
        "bind": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Screen variable holding the current page (from 0). Set it to change page."
        },
        "start": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "First page shown. Default 0."
        },
        "indicator": {
          "anyOf": [
            {
              "enum": [
                "auto",
                "dots",
                "none"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Page dots; auto fades them out after a moment. Default auto."
        },
        "locked": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stop swiping (pages still change through `bind`)."
        },
        "children": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/component"
          },
          "description": "One component per page; `each` works too."
        }
      },
      "required": [
        "type",
        "children"
      ],
      "additionalProperties": false
    },
    "spacer": {
      "type": "object",
      "description": "Flexible empty space.",
      "properties": {
        "type": {
          "const": "spacer"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "min": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "divider": {
      "type": "object",
      "description": "A thin separator line.",
      "properties": {
        "type": {
          "const": "divider"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "text": {
      "type": "object",
      "description": "Text. Supports inline Markdown.",
      "properties": {
        "type": {
          "const": "text"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "text": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "style": {
          "anyOf": [
            {
              "enum": [
                "largeTitle",
                "title",
                "title2",
                "title3",
                "headline",
                "body",
                "callout",
                "subheadline",
                "footnote",
                "caption",
                "caption2"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default body."
        },
        "weight": {
          "anyOf": [
            {
              "enum": [
                "regular",
                "medium",
                "semibold",
                "bold",
                "heavy",
                "light"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "color": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "lines": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum lines before truncating."
        },
        "textAlign": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "markdown": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Render **bold**, _italic_, `code` and links."
        },
        "selectable": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "monospaced": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Monospaced digits (for changing numbers)."
        },
        "size": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Font size in points, overriding `style`."
        }
      },
      "required": [
        "type",
        "text"
      ],
      "additionalProperties": false
    },
    "label": {
      "type": "object",
      "description": "A symbol and text side by side.",
      "properties": {
        "type": {
          "const": "label"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "text": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "symbol": {},
        "style": {
          "anyOf": [
            {
              "enum": [
                "largeTitle",
                "title",
                "title2",
                "title3",
                "headline",
                "body",
                "callout",
                "subheadline",
                "footnote",
                "caption",
                "caption2"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "weight": {
          "anyOf": [
            {
              "enum": [
                "regular",
                "medium",
                "semibold",
                "bold",
                "heavy",
                "light"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "color": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "iconColor": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "lines": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        }
      },
      "required": [
        "type",
        "text",
        "symbol"
      ],
      "additionalProperties": false
    },
    "symbol": {
      "type": "object",
      "description": "An icon, named like an SF Symbol. Android draws the matching Material Symbol.",
      "properties": {
        "type": {
          "const": "symbol"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "name": {},
        "size": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default 17."
        },
        "weight": {
          "anyOf": [
            {
              "enum": [
                "regular",
                "medium",
                "semibold",
                "bold",
                "heavy",
                "light"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "color": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "slash": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Draw a diagonal slash through the symbol, for states SF Symbols has no slashed version of."
        }
      },
      "required": [
        "type",
        "name"
      ],
      "additionalProperties": false
    },
    "image": {
      "type": "object",
      "description": "A remote or packaged image. Animated GIFs play. Downloads are cached and downscaled.",
      "properties": {
        "type": {
          "const": "image"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "src": {
          "description": "https URL, a path in your package such as \"assets/logo.png\", a data: URL, or a photo saved with the `photo` action."
        },
        "fit": {
          "anyOf": [
            {
              "enum": [
                "fill",
                "fit"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default fill."
        },
        "placeholder": {
          "description": "Symbol shown when there is no image. Default \"photo\"."
        },
        "template": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Draw as a single-color glyph tinted with `foreground`."
        },
        "tap": {
          "$ref": "#/$defs/action",
          "description": "Runs when the image is tapped, with where as `$value`: {\"x\": 0…1, \"y\": 0…1} from the top left. For remote screens."
        }
      },
      "required": [
        "type",
        "src"
      ],
      "additionalProperties": false
    },
    "gallery": {
      "type": "object",
      "description": "Swipe through images, with a page counter.",
      "properties": {
        "type": {
          "const": "gallery"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "images": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "fit": {
          "anyOf": [
            {
              "enum": [
                "fill",
                "fit"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "counter": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default true."
        }
      },
      "required": [
        "type",
        "images"
      ],
      "additionalProperties": false
    },
    "video": {
      "type": "object",
      "description": "Plays a video (MP4 or HLS).",
      "properties": {
        "type": {
          "const": "video"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "src": {},
        "autoplay": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default true."
        },
        "muted": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default false."
        },
        "loop": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default true."
        },
        "controls": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Show playback controls. Default true."
        },
        "fit": {
          "anyOf": [
            {
              "enum": [
                "fill",
                "fit"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default fit."
        },
        "poster": {}
      },
      "required": [
        "type",
        "src"
      ],
      "additionalProperties": false
    },
    "media": {
      "type": "object",
      "description": "Picks the right player: a video when there is one, a gallery for several images, otherwise an image. Handles spoilers and full-screen viewing.",
      "properties": {
        "type": {
          "const": "media"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "video": {},
        "images": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "image": {},
        "fit": {
          "anyOf": [
            {
              "enum": [
                "fill",
                "fit"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default fill."
        },
        "inline": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Muted, looping, no controls: for feeds. Default false."
        },
        "spoiler": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Blur until tapped."
        },
        "badge": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Small glass label in the bottom corner, e.g. \"Video\"."
        },
        "badgeSymbol": {},
        "expandable": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Double-tap or pinch opens a full-screen viewer."
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "badge": {
      "type": "object",
      "description": "A small capsule label.",
      "properties": {
        "type": {
          "const": "badge"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "text": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "symbol": {},
        "tint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "variant": {
          "anyOf": [
            {
              "enum": [
                "tinted",
                "glass",
                "plain"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default tinted."
        }
      },
      "required": [
        "type",
        "text"
      ],
      "additionalProperties": false
    },
    "stat": {
      "type": "object",
      "description": "A labelled value with an optional progress bar.",
      "properties": {
        "type": {
          "const": "stat"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "label": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "value": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "symbol": {},
        "progress": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        }
      },
      "required": [
        "type",
        "label",
        "value"
      ],
      "additionalProperties": false
    },
    "progress": {
      "type": "object",
      "description": "A spinner, or a bar when `value` is set.",
      "properties": {
        "type": {
          "const": "progress"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "value": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1. Leave out for a spinner."
        },
        "label": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "tint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "gauge": {
      "type": "object",
      "description": "A circular gauge for a single reading.",
      "properties": {
        "type": {
          "const": "gauge"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "value": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "min": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default 0."
        },
        "max": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default 1."
        },
        "label": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "text": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Text in the middle. Default the value."
        },
        "symbol": {},
        "tint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        }
      },
      "required": [
        "type",
        "value"
      ],
      "additionalProperties": false
    },
    "chart": {
      "type": "object",
      "description": "A line, area or bar chart.",
      "properties": {
        "type": {
          "const": "chart"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "values": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Numbers, or objects with `x` and `y`."
        },
        "kind": {
          "anyOf": [
            {
              "enum": [
                "line",
                "area",
                "bar"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default line."
        },
        "tint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "min": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "max": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "axes": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default false."
        }
      },
      "required": [
        "type",
        "values"
      ],
      "additionalProperties": false
    },
    "avatar": {
      "type": "object",
      "description": "A round picture, or initials when there is none.",
      "properties": {
        "type": {
          "const": "avatar"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "image": {},
        "text": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "size": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default 36."
        },
        "ring": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Ring around the picture, e.g. green while someone speaks. Leave out (or null) for none."
        },
        "dimmed": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fade the picture, e.g. for someone muted."
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "row": {
      "type": "object",
      "description": "A list row: symbol or image, title, subtitle and a trailing value.",
      "properties": {
        "type": {
          "const": "row"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "title": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "subtitle": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "symbol": {},
        "image": {},
        "value": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Trailing text."
        },
        "accessory": {
          "anyOf": [
            {
              "enum": [
                "none",
                "chevron",
                "check"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "checked": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shows a checkmark when true."
        },
        "role": {
          "anyOf": [
            {
              "enum": [
                "normal",
                "destructive"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "tint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "lines": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum title lines. Default 2."
        }
      },
      "required": [
        "type",
        "title"
      ],
      "additionalProperties": false
    },
    "comment": {
      "type": "object",
      "description": "A threaded comment or chat message.",
      "properties": {
        "type": {
          "const": "comment"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "author": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "body": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "meta": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "e.g. \"3h\"."
        },
        "score": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "depth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Nesting level; draws thread lines."
        },
        "highlight": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Badge next to the author, e.g. \"OP\"."
        },
        "avatar": {}
      },
      "required": [
        "type",
        "author",
        "body"
      ],
      "additionalProperties": false
    },
    "empty": {
      "type": "object",
      "description": "A centered message for empty, loading or error states.",
      "properties": {
        "type": {
          "const": "empty"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "symbol": {},
        "title": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "message": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "loading": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "children": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/component"
          },
          "description": "Buttons under the message."
        }
      },
      "required": [
        "type",
        "title"
      ],
      "additionalProperties": false
    },
    "lyrics": {
      "type": "object",
      "description": "Lines that follow a playing timeline, karaoke style: the current line is large, earlier ones fade. Tap a line to jump to it. Without times, the lines scroll as plain text.",
      "properties": {
        "type": {
          "const": "lyrics"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when a line is tapped, with its time as `$value`."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "lines": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "[{\"time\": seconds, \"text\": \"…\"}]. `time` is optional."
        },
        "timeline": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Name of a screen timeline (see Screen `timelines`). Default \"main\"."
        },
        "window": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Lines shown at once. Default 6."
        },
        "synced": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Follow the timeline. Default true when lines have times."
        }
      },
      "required": [
        "type",
        "lines"
      ],
      "additionalProperties": false
    },
    "clock": {
      "type": "object",
      "description": "The current time, updated every second.",
      "properties": {
        "type": {
          "const": "clock"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "face": {
          "anyOf": [
            {
              "enum": [
                "digital",
                "minimal",
                "analog"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default digital."
        },
        "hours24": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "24-hour time. Default true."
        },
        "date": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Show the date under the time. Default true."
        },
        "size": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Digit size in points. Default 112 (digital) or 84 (minimal); the analog dial is 220 wide."
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "web": {
      "type": "object",
      "description": "Escape hatch: an HTML page from your package (or an https site) inside the native screen. The page talks to your app through window.onbun (window.winmore also works).",
      "properties": {
        "type": {
          "const": "web"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "src": {
          "description": "e.g. \"ui/chart.html\"."
        },
        "props": {
          "description": "Sent to the page as onbun.props."
        },
        "transparent": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Let the screen show through. Default true."
        },
        "scroll": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Let the page scroll itself. Default true."
        }
      },
      "required": [
        "type",
        "src"
      ],
      "additionalProperties": false
    },
    "button": {
      "type": "object",
      "description": "A button. Use `glass` style for floating controls over content.",
      "properties": {
        "type": {
          "const": "button"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action"
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "label": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "symbol": {},
        "variant": {
          "anyOf": [
            {
              "enum": [
                "glass",
                "prominent",
                "bordered",
                "plain",
                "link"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default bordered."
        },
        "buttonShape": {
          "anyOf": [
            {
              "enum": [
                "capsule",
                "circle",
                "rounded"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default capsule; circle for symbol-only buttons."
        },
        "size": {
          "anyOf": [
            {
              "enum": [
                "small",
                "regular",
                "large"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default regular."
        },
        "selected": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Highlights the button (tinted glass, filled symbol color)."
        },
        "tint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "role": {
          "anyOf": [
            {
              "enum": [
                "normal",
                "destructive"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "confirm": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Ask this question before running the action."
        },
        "symbolSize": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Symbol size in points. Default 17. Changing symbols (play and pause) animate."
        },
        "disabled": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "loading": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shows a spinner instead of the label."
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "pill": {
      "type": "object",
      "description": "A glass capsule that groups several symbol buttons with dividers.",
      "properties": {
        "type": {
          "const": "pill"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "children": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/component"
          },
          "description": "`button` components; their own glass is ignored."
        }
      },
      "required": [
        "type",
        "children"
      ],
      "additionalProperties": false
    },
    "menu": {
      "type": "object",
      "description": "A button that opens a menu.",
      "properties": {
        "type": {
          "const": "menu"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "label": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "symbol": {},
        "variant": {
          "anyOf": [
            {
              "enum": [
                "glass",
                "bordered",
                "plain"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default glass."
        },
        "buttonShape": {
          "anyOf": [
            {
              "enum": [
                "capsule",
                "circle"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default capsule, circle when there is no label."
        },
        "chevron": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Show a small chevron after the label."
        },
        "items": {
          "description": "Menu items (see Menu items)."
        }
      },
      "required": [
        "type",
        "items"
      ],
      "additionalProperties": false
    },
    "toggle": {
      "type": "object",
      "description": "An on/off switch. The new value is `$value` in the action.",
      "properties": {
        "type": {
          "const": "toggle"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action"
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "label": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "symbol": {},
        "value": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        }
      },
      "required": [
        "type",
        "label",
        "value",
        "action"
      ],
      "additionalProperties": false
    },
    "slider": {
      "type": "object",
      "description": "A slider. The action runs when you let go, with the value as `$value`.",
      "properties": {
        "type": {
          "const": "slider"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action"
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "label": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "symbol": {},
        "value": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "min": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default 0."
        },
        "max": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default 100."
        },
        "step": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "live": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Also run the action while dragging (at most about 8 times a second)."
        },
        "axis": {
          "anyOf": [
            {
              "enum": [
                "horizontal",
                "vertical"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "vertical draws a tall fader, like a mixer channel. Default horizontal."
        },
        "tint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "disabled": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        }
      },
      "required": [
        "type",
        "value",
        "action"
      ],
      "additionalProperties": false
    },
    "scrubber": {
      "type": "object",
      "description": "A media position bar that keeps moving between updates from the PC. Drag to seek; a tap never jumps. Reads a screen timeline (see Screen `timelines`).",
      "properties": {
        "type": {
          "const": "scrubber"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when you let go, with the new position in seconds as `$value`."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "timeline": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Name of a screen timeline. Default \"main\"."
        },
        "times": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Show elapsed and remaining time. Default true."
        },
        "compact": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "A thinner bar."
        },
        "tint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "stepper": {
      "type": "object",
      "description": "Minus and plus buttons around a value. The new value is `$value`.",
      "properties": {
        "type": {
          "const": "stepper"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action"
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "label": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "value": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "min": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "max": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "step": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        }
      },
      "required": [
        "type",
        "label",
        "value",
        "action"
      ],
      "additionalProperties": false
    },
    "picker": {
      "type": "object",
      "description": "Choose one option. The chosen value is `$value` in the action.",
      "properties": {
        "type": {
          "const": "picker"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action"
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "label": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "value": {},
        "options": {},
        "variant": {
          "anyOf": [
            {
              "enum": [
                "segmented",
                "menu",
                "inline"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default segmented."
        },
        "disabled": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        }
      },
      "required": [
        "type",
        "value",
        "options",
        "action"
      ],
      "additionalProperties": false
    },
    "field": {
      "type": "object",
      "description": "A text field bound to a screen variable. It can type with the PC keyboard.",
      "properties": {
        "type": {
          "const": "field"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "bind": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Screen variable that holds the text, e.g. \"query\" (read it as \"$ui.query\")."
        },
        "placeholder": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "prefix": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed text before the field, e.g. \"r/\"."
        },
        "symbol": {
          "description": "Leading symbol."
        },
        "keyboard": {
          "anyOf": [
            {
              "enum": [
                "default",
                "search",
                "url",
                "number",
                "email"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default default."
        },
        "submit": {
          "$ref": "#/$defs/action",
          "description": "Runs on Return, with the text as `$value`."
        },
        "pcKeyboard": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Show the PC keyboard button. Default true."
        },
        "clearable": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Show a clear button. Default true."
        },
        "secure": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "multiline": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "leading": {
          "$ref": "#/$defs/component",
          "description": "A control before the field, e.g. a scope menu."
        }
      },
      "required": [
        "type",
        "bind"
      ],
      "additionalProperties": false
    },
    "link": {
      "type": "object",
      "description": "Opens a web page on the phone.",
      "properties": {
        "type": {
          "const": "link"
        },
        "when": {
          "description": "Show the component only when this expression is truthy."
        },
        "padding": {
          "description": "Inner spacing: a number for all sides, [vertical, horizontal], or [top, leading, bottom, trailing]."
        },
        "width": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Fixed width in points."
        },
        "height": {
          "description": "Fixed height in points, or \"screen\" for the visible content height (minus `screenOffset`)."
        },
        "screenOffset": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Points subtracted from the screen height when `height` is \"screen\". Default 0."
        },
        "minWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum width."
        },
        "minHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Minimum height."
        },
        "maxWidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum width; the component centers in wider space."
        },
        "maxHeight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Maximum height."
        },
        "fill": {
          "anyOf": [
            {
              "enum": [
                "width",
                "height",
                "both"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Grow to fill the available width, height or both."
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "leading",
                "center",
                "trailing",
                "top",
                "bottom",
                "topLeading",
                "topTrailing",
                "bottomLeading",
                "bottomTrailing"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Where content sits inside the frame when it is larger than the content."
        },
        "aspect": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Keep this width / height ratio."
        },
        "background": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Flat background color. Use `glass` for a floating material instead."
        },
        "glass": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "The floating material behind the component, in `shape`: Liquid Glass on iPhone, a tonal Material surface on Android. Use it for floating controls only; content stays flat."
        },
        "glassTint": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Tint for the glass, e.g. to mark a selected control."
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "rounded",
                "capsule",
                "circle",
                "rect"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Shape for `background`, `glass` and clipping. Default rounded."
        },
        "corner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Corner radius for the rounded shape. Default 24."
        },
        "clip": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Clip content to `shape`."
        },
        "foreground": {
          "anyOf": [
            {
              "enum": [
                "primary",
                "secondary",
                "tertiary",
                "accent",
                "background",
                "card",
                "white",
                "black",
                "clear",
                "red",
                "orange",
                "yellow",
                "green",
                "mint",
                "teal",
                "cyan",
                "blue",
                "indigo",
                "purple",
                "pink",
                "brown",
                "gray"
              ]
            },
            {
              "type": "string",
              "pattern": "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Default color for text and symbols inside."
        },
        "opacity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "0 to 1."
        },
        "blur": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Gaussian blur radius."
        },
        "gradient": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Colors for a diagonal gradient background (top leading to bottom trailing), e.g. [\"#0A84FFA6\", \"black\"]."
        },
        "shadow": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Soft drop shadow with this radius, for artwork that floats."
        },
        "scale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Scale factor; changes animate, e.g. shrink artwork while paused."
        },
        "action": {
          "$ref": "#/$defs/action",
          "description": "Runs when the component is tapped."
        },
        "longPress": {
          "$ref": "#/$defs/action",
          "description": "Runs on a long press."
        },
        "doubleTap": {
          "$ref": "#/$defs/action",
          "description": "Runs on a double tap."
        },
        "accessibility": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "VoiceOver label."
        },
        "key": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ],
          "description": "Stable identity, so animations and state follow the right item."
        },
        "label": {
          "anyOf": [
            {
              "type": [
                "string",
                "number"
              ]
            },
            {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\$|\\{\\{"
                },
                {
                  "type": "object",
                  "minProperties": 1
                }
              ]
            }
          ]
        },
        "url": {},
        "symbol": {}
      },
      "required": [
        "type",
        "label",
        "url"
      ],
      "additionalProperties": false
    }
  }
}
