{
"id": "social.twinkl.actor.style",
"defs": {
"main": {
"key": "literal:self",
"type": "record",
"record": {
"type": "object",
"required": [
"theme"
],
"properties": {
"theme": {
"type": "string",
"default": "y2kringe",
"description": "Selected base theme.",
"knownValues": [
"y2kringe",
"gyaru",
"custom"
]
},
"assets": {
"type": "array",
"items": {
"type": "blob",
"accept": [
"image/png",
"image/jpeg",
"image/webp",
"image/gif",
"font/woff2",
"font/woff"
],
"maxSize": 5000000
},
"maxLength": 16,
"description": "Blobs referenced by the actor's CSS/tokens (backgrounds, cursors, fonts). Listed here so the PDS keeps them referenced; a CID used in CSS but absent here is rejected on save."
},
"homeJs": {
"type": "string",
"maxLength": 100000,
"description": "DEPRECATED: superseded by Web Tiles (social.twinkl.homepage.tile) and no longer rendered on profile pages. Custom JS for the actor's home page. Executed only inside a sandboxed iframe with no same-origin access."
},
"tokens": {
"type": "unknown",
"description": "Open map of theme token name to string value, layered on the base theme (validated per-token in code; see social.twinkl.theme.pack `tokens`)."
},
"effects": {
"type": "array",
"items": {
"ref": "social.twinkl.theme.defs#effect",
"type": "ref"
},
"maxLength": 8,
"description": "Enabled first-party page effects for the actor's home page."
},
"homeCss": {
"type": "string",
"maxLength": 100000,
"description": "Custom CSS applied to the actor's home page (sanitized + scoped before use)."
},
"postCss": {
"type": "string",
"maxLength": 50000,
"description": "CSS-only decoration applied to the actor's posts in feeds (sanitized + scoped). Never executes JS."
},
"updatedAt": {
"type": "string",
"format": "datetime"
},
"customBase": {
"type": "string",
"default": "y2kringe",
"description": "When theme is \"custom\", the built-in base theme whose tokens the custom CSS layers on top of (light or dark).",
"knownValues": [
"y2kringe",
"gyaru"
]
},
"sourceTheme": {
"type": "string",
"format": "at-uri",
"description": "Provenance: the social.twinkl.theme.pack this style was copied from (attribution only; content is materialized locally). Backlink target for gallery wearer counts."
},
"priorThemeCid": {
"type": "string",
"format": "cid",
"description": "CID of the immediately-previous version of this style record, for one-step \"revert to previous look\" rollback (best-effort; the prior version may be GC'd by the PDS over time)."
},
"sourceThemeCid": {
"type": "string",
"format": "cid",
"description": "CID of the theme.pack version that was copied."
}
}
},
"description": "The actor's visual customization: a selected built-in theme plus optional custom CSS/JS for their home page and post decorations. Custom JS runs only inside a sandboxed iframe; custom CSS is sanitized and scoped server-side before use."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}