site.mochott.layout

Layout of one page. One account has one layout per page: the record key is 'self' for the account's profile home, and equals the minisite record's key for that minisite's home. Other keys are reserved for additional pages. The subject must be a record in the same repository; layouts pointing at another account's records are ignored. A minisite's home only shows blocks about that minisite: renderers skip archive, tagList and seriesList blocks on it, and the tag, series and minisite filters of article lists.

Repository @tokimeki.blue did:plc:4tr5dqti7nmu6g2czpthntak namespace authority
Details · record, key any
Kindrecord
Record keyany
Authoritymochott.site
Indexed

Record

record · key any

Properties

createdAt

requiredstring · datetime
Reference

sections

requiredarray

Sections from top to bottom, below the page header.

  • maxLength: 20
itemsunion

subject

requiredstring · at-uri

The page this layout renders: the account's own site.mochott.profile or site.mochott.minisite record.

Reference

updatedAt

string · datetime

#archive

object

Post counts per month, by publish date in Japan time.

Properties

view

string
  • maxLength: 64
  • default: "year"
  • knownValues: year | month

weekStart

string
  • maxLength: 64
  • default: "monday"
  • knownValues: monday | sunday

#articleList

object

Properties

filter

union

Absent means all articles of the subject: the author's articles on a profile, the minisite's articles on a minisite (in the minisite's own order). The category filter is for minisite homes only; the others are for the profile home only.

limit

integer
  • minimum: 1
  • maximum: 20
  • default: 5

sort

string

'popular' orders by the number of likes. A popular list shows its own articles only and has no further pages.

  • maxLength: 64
  • default: "recent"
  • knownValues: recent | popular

view

string
  • maxLength: 64
  • default: "list"
  • knownValues: card | list | magazine

#aspectRatio

object

Properties

height

requiredinteger
  • minimum: 1

width

requiredinteger
  • minimum: 1

#background

string

Theme color token. Never a raw color, so every theme keeps its contrast.

  • maxLength: 64
  • knownValues: none | surface | accent

#blueskyPosts

object

Recent Bluesky posts (app.bsky.feed.post) of the account that owns the layout, read by the reader's browser from a Bluesky AppView. Replies are never shown, and neither are posts labeled sexual, nudity, porn or graphic-media.

Properties

limit

integer
  • minimum: 1
  • maximum: 10
  • default: 3

mediaOnly

boolean

Only posts with images or a video, drawn as a grid of their first image.

  • default: false

overflow

string

In a tile, what happens to posts that do not fit: 'fade' cuts them off with a fade, 'scroll' scrolls inside the tile and reads further posts as the reader reaches the end. Blocks in a flow section grow to fit and ignore it.

  • maxLength: 64
  • default: "fade"
  • knownValues: fade | scroll

pinned

boolean

Show the account's pinned post first.

  • default: false

reposts

boolean

Also show posts the account reposted.

  • default: false

#categoryFilter

object

Articles of one of the minisite's own categories (its slug). Shows nothing once the minisite no longer has that category.

Properties

category

requiredstring
  • maxLength: 32

#customBlock

object

A site.mochott.block placed on the page, stored the same way as in an article.

Properties

blockUri

requiredstring · at-uri

snapshot

unknown

Copy of the block definition at the time it was placed, so the page keeps rendering if the block changes or is deleted.

values

unknown

Field values keyed by the block's field keys.

#embed

object

Embedded media. Only providers on the renderer's allowlist are shown, and the player loads on click.

Properties

uri

requiredstring · uri

#flowItem

object

#flowSection

object

One to four columns whose height follows the content. Collapses to one column on mobile.

Properties

columns

integer
  • minimum: 1
  • maximum: 4
  • default: 1

heading

string
  • maxLength: 300
  • maxGraphemes: 100

id

requiredstring
  • maxLength: 16

items

requiredarray
  • maxLength: 30
itemsref
Reference

#galleryImage

object

Properties

alt

requiredstring

Alternative text. May be empty for a purely decorative image.

  • maxLength: 10000
  • maxGraphemes: 1000
Reference

image

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

#header

object

How the page header is drawn: the subject's name, description, icon, cover image and links. The header always comes first and is not part of the sections; what it shows is the subject's own record. Only the profile home uses it; a minisite draws its own header.

Properties

  • default: true

style

string

'standard' puts the icon beside the name, 'center' stacks them centred, 'cover' draws a large cover image with the icon over its edge. Unknown values fall back to 'standard'.

  • maxLength: 64
  • default: "standard"
  • knownValues: standard | center | cover

#heading

object

Properties

level

integer
  • minimum: 2
  • maximum: 3
  • default: 2

text

requiredstring
  • maxLength: 300
  • maxGraphemes: 100

#hero

object

A large image with a heading, a short text and a button over it. Without an image the accent colour is drawn instead.

Properties

align

string
  • maxLength: 64
  • default: "left"
  • knownValues: left | center

Shown only together with buttonUri.

  • maxLength: 150
  • maxGraphemes: 50

buttonUri

string · uri

An http(s) URL. Renderers must ignore any other scheme.

  • maxLength: 2048

heading

requiredstring
  • maxLength: 300
  • maxGraphemes: 100

image

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

text

string
  • maxLength: 900
  • maxGraphemes: 300

#image

object

Properties

alt

requiredstring

Alternative text. May be empty for a purely decorative image.

  • maxLength: 10000
  • maxGraphemes: 1000
Reference

caption

string
  • maxLength: 3000
  • maxGraphemes: 300

image

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

#linkButton

object

Properties

label

requiredstring
  • maxLength: 300
  • maxGraphemes: 50

uri

requiredstring · uri

#linkCard

object

Card for an external page. The OGP fields are a snapshot taken when the card was edited; viewers never trigger a fetch.

Properties

  • maxLength: 10000
  • maxGraphemes: 1000

thumb

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

title

string
  • maxLength: 3000
  • maxGraphemes: 300

uri

requiredstring · uri

#minisiteCard

object

Properties

minisite

requiredstring · at-uri

#minisiteFilter

object

Properties

minisite

requiredstring · at-uri

#otherServices

object

The author's articles on other standard.site services.

Properties

limit

integer
  • minimum: 1
  • maximum: 20
  • default: 6

#pinnedArticle

object

Properties

article

requiredstring · at-uri

Always shows the latest version. Skipped when the article is gone or hidden.

#record

object

Card for an AT Protocol record, drawn by a renderer chosen from the record's collection (e.g. sh.tangled.repo). Collections without a renderer are skipped.

Properties

The record's description as it was when placed. Refreshed when the page is published.

  • maxLength: 3000
  • maxGraphemes: 1000

title

string

The record's name as it was when placed (for sh.tangled.repo, its name or record key). Refreshed when the page is published.

  • maxLength: 600
  • maxGraphemes: 200

uri

requiredstring · at-uri

#seriesFilter

object

Properties

series

requiredstring · at-uri

#seriesList

object

Properties

series

array

Series to show, in order. Absent means all series, newest first.

  • maxLength: 10
itemsstring · at-uri

view

string

'cover' shows each series with the cover image of its first article.

  • maxLength: 64
  • default: "list"
  • knownValues: list | card | cover

#spacer

object

Empty cell used to leave a gap in a tile section.

Properties

#tagFilter

object

Properties

tag

requiredstring
  • maxLength: 640
  • maxGraphemes: 64

#tagList

object

Properties

limit

integer
  • minimum: 1
  • maximum: 30
  • default: 10

#text

object

Properties

#theme

object

Properties

cardStyle

string
  • maxLength: 64
  • knownValues: soft | outline | flat

preset

string

Color and typeface preset. Unknown values fall back to 'standard'.

  • maxLength: 64
  • knownValues: standard | wakaba | yoru

#tileItem

object

Properties

Reference

id

requiredstring
  • maxLength: 16

size

requiredstring

Width x height in cells. A tile wider than its grid (the section's columns on desktop, 2 on mobile) takes the full width and keeps its shape. A size the block does not support is replaced by the block's first supported size.

  • maxLength: 8
  • knownValues: 1x1 | 2x1 | 1x2 | 2x2 | 4x1 | 4x2

#tileSection

object

A grid of square cells, `columns` wide on desktop and 2 on mobile. Items are packed in order. Future section kinds may be added; renderers skip kinds they do not know.

Properties

columns

integer
  • minimum: 2
  • maximum: 6
  • default: 4

heading

string
  • maxLength: 300
  • maxGraphemes: 100

id

requiredstring
  • maxLength: 16

items

requiredarray
  • maxLength: 30
itemsref
Reference

Similar lexicons

semantic match

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

  • Configuration for a Mooring site. The record at rkey 'self' is the owner's default site; other rkeys are reserved for possible future multi-site support.

  • A minisite record. Represents a curated collection of articles with its own branding and URL.

  • Configuration for a user's public Portfolio site (e.g. alice.zeens.app). One per user, keyed 'self'. A portfolio is a curated list of the user's COLLECTIONS, displayed beautifully: it holds the subdomain, a theme + layout/columns/gap applied to every collection, the ordered list of collection AT-URIs to show, and an optional home collection. Collections own their own title/subtitle/description/photos/slug, which the portfolio reuses; the site header comes from the user's profile. Stored on the u