social.twinkl.theme.pack
The user's active look AND the unit of theme sharing (one per user, key=self). Holds the base theme, tokens, custom CSS, effects, and asset blobs (backgrounds/fonts) — which are kept live by this record's structural blob references. Listed in the public gallery by setting `gallery` to the Twinkl gallery DID (the publish property); discovered via constellation backlinks on `.gallery`. "Stealing" copies another user's pack into the applier's own self pack (copy-on-apply) — there is no live cross-repo reference, so a theme author can never retro-push CSS onto wearers. Custom CSS is sanitized + scoped server-side before it is ever rendered.
Details · record, key literal:self
| Kind | record |
|---|---|
| Record key | literal:self |
| Authority | theme.twinkl.social |
| Indexed |
Record
record · key literal:selfProperties
active
stringWhich look is active: `base` renders the plain `customBase` built-in theme (the tokens/CSS/effects/background are kept but dormant); `custom` layers them on top of `customBase`. Absent on legacy records — readers then infer `custom` when any customization is present, else `base`.
knownValues: base | custom
assets
arrayBlobs referenced by the pack'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.
maxLength: 16
maxSize: 5000000accept: image/png, image/jpeg, image/webp, image/gif, font/woff2, font/woff
background
stringOptional page background image URL (a same-origin /blob/<did>/<cid> proxy URL or an allowlisted origin); the referenced blob must appear in `assets`.
maxLength: 2048
customBase
stringBuilt-in base theme whose tokens this pack layers on top of.
default: "y2kringe"knownValues: y2kringe | gyaru
description
stringFree-form description of the vibe.
maxLength: 3000maxGraphemes: 300
effects
arraygallery
string · didSet to the Twinkl gallery DID to list this pack publicly; omit or remove to unpublish. Gallery hydration re-verifies this value.
homeCss
stringCustom home-page CSS (sanitized + scoped before use).
maxLength: 100000
Display name of the theme.
maxLength: 640maxGraphemes: 64
postCss
stringPost-decoration CSS (sanitized + scoped, never executes JS).
maxLength: 50000
preview
blobOptional preview thumbnail for the gallery.
maxSize: 1000000accept: image/png, image/jpeg, image/webp
priorThemeCid
string · cidCID of the previous version of this look, for one-step rollback (best-effort).
sourceTheme
string · at-uriProvenance: the theme.pack this look was copied from. Backlink target for gallery wearer counts.
sourceThemeCid
string · cidCID of the pack version that was copied.
tokens
unknownOpen map of theme token name (e.g. the --twinkl-* custom properties) to a string value. All values are strings; names and value grammar are validated in application code.
updatedAt
string · datetimeSimilar lexicons
semantic matchLexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
social.twinkl.actor.style
recordThe 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.
-
social.twinkl.actor.profile
recordThe actor's Twinkl app/viewer preferences, kept separate from their authored look (social.twinkl.actor.style) so a private viewing preference is never bundled into a published theme pack or copied by "steal this look". Extensible home for future viewer toggles.
-
place.mode.standard.theme
recordA 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').
-
dev.knotless.theme
recordA theme an account made for knotless's pages, for anyone to draw them in.