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.

Repository @kandake.africa did:plc:lrphxvv25aibthe7xoc2eeyy namespace authority
Details · record, key literal:self
Kindrecord
Record keyliteral:self
Authoritytheme.twinkl.social
Indexed

Record

record · key literal:self

Properties

active

string

Which 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

array

Blobs 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
itemsblob
  • maxSize: 5000000
  • accept: image/png, image/jpeg, image/webp, image/gif, font/woff2, font/woff

Optional 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

createdAt

requiredstring · datetime

Built-in base theme whose tokens this pack layers on top of.

  • default: "y2kringe"
  • knownValues: y2kringe | gyaru

Free-form description of the vibe.

  • maxLength: 3000
  • maxGraphemes: 300

effects

array

Enabled first-party page effects.

  • maxLength: 8
itemsref

homeCss

string

Custom home-page CSS (sanitized + scoped before use).

  • maxLength: 100000

name

requiredstring

Display name of the theme.

  • maxLength: 640
  • maxGraphemes: 64

postCss

string

Post-decoration CSS (sanitized + scoped, never executes JS).

  • maxLength: 50000

Optional preview thumbnail for the gallery.

  • maxSize: 1000000
  • accept: image/png, image/jpeg, image/webp

priorThemeCid

string · cid

CID of the previous version of this look, for one-step rollback (best-effort).

sourceTheme

string · at-uri

Provenance: the theme.pack this look was copied from. Backlink target for gallery wearer counts.

sourceThemeCid

string · cid

CID of the pack version that was copied.

tokens

unknown

Open 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 · datetime

Similar lexicons

semantic match

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • 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.

  • The 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.

  • 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').

  • A theme an account made for knotless's pages, for anyone to draw them in.