{
"id": "place.mode.standard.theme",
"defs": {
"main": {
"key": "any",
"type": "record",
"record": {
"type": "object",
"required": [
"aspects",
"createdAt"
],
"properties": {
"fonts": {
"type": "array",
"items": {
"ref": "lex:place.mode.standard.defs#fontDescriptor",
"type": "ref"
},
"description": "Font faces the theme's text relies on, referenced by `text.*.family` and rendered to document-global @font-face. Optional."
},
"aspects": {
"ref": "lex:place.mode.standard.defs#aspects",
"type": "ref",
"description": "The theme's renderable style, grouped by aspect. Required container; each aspect inside is optional but complete when present."
},
"createdAt": {
"type": "string",
"format": "datetime"
},
"description": {
"type": "string",
"maxLength": 2560,
"description": "Optional human-readable description of the theme.",
"maxGraphemes": 256
},
"displayName": {
"type": "string",
"maxLength": 640,
"description": "Optional display name for the theme — presentation only. Identity and matching remain the record key; apps must never match on this.",
"maxGraphemes": 64
}
}
},
"description": "A self-contained theme: a mapping of CSS values to Mise en Mode intent tokens, grouped by aspect. The record key is the expression the theme serves (e.g. 'dark', 'com.homedepot.easter', 'default')."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}