site.mochott.layout

tokimeki.blue

Documentation

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.

main record

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.

Record Key any Any valid record key

Properties

createdAt string datetime Required

An RFC 3339 formatted timestamp.

header ref #header Optional

No description available.

sections array of union Required

Sections from top to bottom, below the page header.

maxLength: 20 items
subject string at-uri Required

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

theme ref #theme Optional

No description available.

updatedAt string datetime Optional

An RFC 3339 formatted timestamp.

View raw schema
{
  "description": "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.",
  "key": "any",
  "record": {
    "properties": {
      "createdAt": {
        "format": "datetime",
        "type": "string"
      },
      "header": {
        "ref": "#header",
        "type": "ref"
      },
      "sections": {
        "description": "Sections from top to bottom, below the page header.",
        "items": {
          "refs": [
            "#tileSection",
            "#flowSection"
          ],
          "type": "union"
        },
        "maxLength": 20,
        "type": "array"
      },
      "subject": {
        "description": "The page this layout renders: the account's own site.mochott.profile or site.mochott.minisite record.",
        "format": "at-uri",
        "type": "string"
      },
      "theme": {
        "ref": "#theme",
        "type": "ref"
      },
      "updatedAt": {
        "format": "datetime",
        "type": "string"
      }
    },
    "required": [
      "subject",
      "sections",
      "createdAt"
    ],
    "type": "object"
  },
  "type": "record"
}
archive object

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

Properties

view string Optional

No description available.

maxLength: 64 bytes
Known values: year, month
weekStart string Optional

No description available.

maxLength: 64 bytes
Known values: monday, sunday
View raw schema
{
  "description": "Post counts per month, by publish date in Japan time.",
  "properties": {
    "view": {
      "default": "year",
      "knownValues": [
        "year",
        "month"
      ],
      "maxLength": 64,
      "type": "string"
    },
    "weekStart": {
      "default": "monday",
      "knownValues": [
        "monday",
        "sunday"
      ],
      "maxLength": 64,
      "type": "string"
    }
  },
  "type": "object"
}
articleList object

No description available.

Properties

filter union Optional

Absent means all articles of the subject: the author's articles on a profile, the minisite's articles on a minisite.

limit integer Optional

No description available.

minimum: 1maximum: 20
sort string Optional

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

maxLength: 64 bytes
Known values: recent, popular
view string Optional

No description available.

maxLength: 64 bytes
Known values: card, list, magazine
View raw schema
{
  "properties": {
    "filter": {
      "description": "Absent means all articles of the subject: the author's articles on a profile, the minisite's articles on a minisite.",
      "refs": [
        "#tagFilter",
        "#seriesFilter",
        "#minisiteFilter"
      ],
      "type": "union"
    },
    "limit": {
      "default": 5,
      "maximum": 20,
      "minimum": 1,
      "type": "integer"
    },
    "sort": {
      "default": "recent",
      "description": "'popular' orders by the number of likes. A popular list shows its own articles only and has no further pages.",
      "knownValues": [
        "recent",
        "popular"
      ],
      "maxLength": 64,
      "type": "string"
    },
    "view": {
      "default": "list",
      "knownValues": [
        "card",
        "list",
        "magazine"
      ],
      "maxLength": 64,
      "type": "string"
    }
  },
  "type": "object"
}
aspectRatio object

No description available.

Properties

height integer Required

No description available.

minimum: 1
width integer Required

No description available.

minimum: 1
View raw schema
{
  "properties": {
    "height": {
      "minimum": 1,
      "type": "integer"
    },
    "width": {
      "minimum": 1,
      "type": "integer"
    }
  },
  "required": [
    "width",
    "height"
  ],
  "type": "object"
}
background string

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

ConstraintsmaxLength: 64 bytes
Known Values (other values may be valid)
none surface accent
View raw schema
{
  "description": "Theme color token. Never a raw color, so every theme keeps its contrast.",
  "knownValues": [
    "none",
    "surface",
    "accent"
  ],
  "maxLength": 64,
  "type": "string"
}
customBlock object

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

Properties

blockUri string at-uri Required

An AT Protocol URI (e.g., at://did:plc:xyz/app.bsky.feed.post/abc).

snapshot unknown Optional

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 Optional

Field values keyed by the block's field keys.

View raw schema
{
  "description": "A site.mochott.block placed on the page, stored the same way as in an article.",
  "properties": {
    "blockUri": {
      "format": "at-uri",
      "type": "string"
    },
    "snapshot": {
      "description": "Copy of the block definition at the time it was placed, so the page keeps rendering if the block changes or is deleted.",
      "type": "unknown"
    },
    "values": {
      "description": "Field values keyed by the block's field keys.",
      "type": "unknown"
    }
  },
  "required": [
    "blockUri"
  ],
  "type": "object"
}
embed object

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

Properties

uri string uri Required

A valid URI.

View raw schema
{
  "description": "Embedded media. Only providers on the renderer's allowlist are shown, and the player loads on click.",
  "properties": {
    "uri": {
      "format": "uri",
      "type": "string"
    }
  },
  "required": [
    "uri"
  ],
  "type": "object"
}
flowItem object

No description available.

Properties

background ref #background Optional

No description available.

hideOnMobile boolean Optional

No description available.

id string Required

No description available.

maxLength: 16 bytes
View raw schema
{
  "properties": {
    "background": {
      "ref": "#background",
      "type": "ref"
    },
    "block": {
      "refs": [
        "#text",
        "#heading",
        "#articleList",
        "#otherServices",
        "#customBlock",
        "#pinnedArticle",
        "#archive",
        "#tagList",
        "#seriesList",
        "#minisiteCard",
        "#linkCard",
        "#linkButton",
        "#image",
        "#gallery",
        "#hero",
        "#socialLinks",
        "#record",
        "#embed"
      ],
      "type": "union"
    },
    "hideOnMobile": {
      "type": "boolean"
    },
    "id": {
      "maxLength": 16,
      "type": "string"
    }
  },
  "required": [
    "id",
    "block"
  ],
  "type": "object"
}
flowSection object

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

Properties

columns integer Optional

No description available.

minimum: 1maximum: 4
heading string Optional

No description available.

maxLength: 300 bytesmaxGraphemes: 100 graphemes
id string Required

No description available.

maxLength: 16 bytes
items array of ref#flowItem Required

No description available.

maxLength: 30 items
View raw schema
{
  "description": "One to four columns whose height follows the content. Collapses to one column on mobile.",
  "properties": {
    "columns": {
      "default": 1,
      "maximum": 4,
      "minimum": 1,
      "type": "integer"
    },
    "heading": {
      "maxGraphemes": 100,
      "maxLength": 300,
      "type": "string"
    },
    "id": {
      "maxLength": 16,
      "type": "string"
    },
    "items": {
      "items": {
        "ref": "#flowItem",
        "type": "ref"
      },
      "maxLength": 30,
      "type": "array"
    }
  },
  "required": [
    "id",
    "items"
  ],
  "type": "object"
}
gallery object

Several images shown together.

Properties

images array of ref#galleryImage Required

No description available.

maxLength: 20 itemsminLength: 1 items
view string Optional

'grid' lays the images out in a grid, 'scroll' in one row to scroll sideways, 'slides' one at a time. Unknown values fall back to 'grid'.

maxLength: 64 bytes
Known values: grid, scroll, slides
View raw schema
{
  "description": "Several images shown together.",
  "properties": {
    "images": {
      "items": {
        "ref": "#galleryImage",
        "type": "ref"
      },
      "maxLength": 20,
      "minLength": 1,
      "type": "array"
    },
    "view": {
      "default": "grid",
      "description": "'grid' lays the images out in a grid, 'scroll' in one row to scroll sideways, 'slides' one at a time. Unknown values fall back to 'grid'.",
      "knownValues": [
        "grid",
        "scroll",
        "slides"
      ],
      "maxLength": 64,
      "type": "string"
    }
  },
  "required": [
    "images"
  ],
  "type": "object"
}
galleryImage object

No description available.

Properties

alt string Required

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

maxLength: 10000 bytesmaxGraphemes: 1000 graphemes
aspectRatio ref #aspectRatio Optional

No description available.

image blob Required

No description available.

maxSize: 1.0 MB
View raw schema
{
  "properties": {
    "alt": {
      "description": "Alternative text. May be empty for a purely decorative image.",
      "maxGraphemes": 1000,
      "maxLength": 10000,
      "type": "string"
    },
    "aspectRatio": {
      "ref": "#aspectRatio",
      "type": "ref"
    },
    "image": {
      "accept": [
        "image/png",
        "image/jpeg",
        "image/webp",
        "image/gif"
      ],
      "maxSize": 1000000,
      "type": "blob"
    }
  },
  "required": [
    "image",
    "alt"
  ],
  "type": "object"
}
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.

Properties

showDescription boolean Optional

No description available.

style string Optional

'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 bytes
Known values: standard, center, cover
View raw schema
{
  "description": "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.",
  "properties": {
    "links": {
      "default": "buttons",
      "description": "How the subject's social links are shown. Unknown values fall back to 'buttons'.",
      "knownValues": [
        "buttons",
        "icons",
        "text",
        "hidden"
      ],
      "maxLength": 64,
      "type": "string"
    },
    "showDescription": {
      "default": true,
      "type": "boolean"
    },
    "style": {
      "default": "standard",
      "description": "'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'.",
      "knownValues": [
        "standard",
        "center",
        "cover"
      ],
      "maxLength": 64,
      "type": "string"
    }
  },
  "type": "object"
}
heading object

No description available.

Properties

level integer Optional

No description available.

minimum: 2maximum: 3
text string Required

No description available.

maxLength: 300 bytesmaxGraphemes: 100 graphemes
View raw schema
{
  "properties": {
    "level": {
      "default": 2,
      "maximum": 3,
      "minimum": 2,
      "type": "integer"
    },
    "text": {
      "maxGraphemes": 100,
      "maxLength": 300,
      "type": "string"
    }
  },
  "required": [
    "text"
  ],
  "type": "object"
}
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 Optional

No description available.

maxLength: 64 bytes
Known values: left, center
buttonLabel string Optional

Shown only together with buttonUri.

maxLength: 150 bytesmaxGraphemes: 50 graphemes
buttonUri string uri Optional

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

maxLength: 2048 bytes
heading string Required

No description available.

maxLength: 300 bytesmaxGraphemes: 100 graphemes
image blob Optional

No description available.

maxSize: 1.0 MB
text string Optional

No description available.

maxLength: 900 bytesmaxGraphemes: 300 graphemes
View raw schema
{
  "description": "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": {
      "default": "left",
      "knownValues": [
        "left",
        "center"
      ],
      "maxLength": 64,
      "type": "string"
    },
    "buttonLabel": {
      "description": "Shown only together with buttonUri.",
      "maxGraphemes": 50,
      "maxLength": 150,
      "type": "string"
    },
    "buttonUri": {
      "description": "An http(s) URL. Renderers must ignore any other scheme.",
      "format": "uri",
      "maxLength": 2048,
      "type": "string"
    },
    "heading": {
      "maxGraphemes": 100,
      "maxLength": 300,
      "type": "string"
    },
    "image": {
      "accept": [
        "image/png",
        "image/jpeg",
        "image/webp",
        "image/gif"
      ],
      "maxSize": 1000000,
      "type": "blob"
    },
    "text": {
      "maxGraphemes": 300,
      "maxLength": 900,
      "type": "string"
    }
  },
  "required": [
    "heading"
  ],
  "type": "object"
}
image object

No description available.

Properties

alt string Required

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

maxLength: 10000 bytesmaxGraphemes: 1000 graphemes
aspectRatio ref #aspectRatio Optional

No description available.

caption string Optional

No description available.

maxLength: 3000 bytesmaxGraphemes: 300 graphemes
image blob Required

No description available.

maxSize: 1.0 MB
View raw schema
{
  "properties": {
    "alt": {
      "description": "Alternative text. May be empty for a purely decorative image.",
      "maxGraphemes": 1000,
      "maxLength": 10000,
      "type": "string"
    },
    "aspectRatio": {
      "ref": "#aspectRatio",
      "type": "ref"
    },
    "caption": {
      "maxGraphemes": 300,
      "maxLength": 3000,
      "type": "string"
    },
    "image": {
      "accept": [
        "image/png",
        "image/jpeg",
        "image/webp",
        "image/gif"
      ],
      "maxSize": 1000000,
      "type": "blob"
    }
  },
  "required": [
    "image",
    "alt"
  ],
  "type": "object"
}
linkButton object

No description available.

Properties

label string Required

No description available.

maxLength: 300 bytesmaxGraphemes: 50 graphemes
uri string uri Required

A valid URI.

View raw schema
{
  "properties": {
    "label": {
      "maxGraphemes": 50,
      "maxLength": 300,
      "type": "string"
    },
    "uri": {
      "format": "uri",
      "type": "string"
    }
  },
  "required": [
    "uri",
    "label"
  ],
  "type": "object"
}
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

description string Optional

No description available.

maxLength: 10000 bytesmaxGraphemes: 1000 graphemes
thumb blob Optional

No description available.

maxSize: 1.0 MB
title string Optional

No description available.

maxLength: 3000 bytesmaxGraphemes: 300 graphemes
uri string uri Required

A valid URI.

View raw schema
{
  "description": "Card for an external page. The OGP fields are a snapshot taken when the card was edited; viewers never trigger a fetch.",
  "properties": {
    "description": {
      "maxGraphemes": 1000,
      "maxLength": 10000,
      "type": "string"
    },
    "thumb": {
      "accept": [
        "image/png",
        "image/jpeg",
        "image/webp"
      ],
      "maxSize": 1000000,
      "type": "blob"
    },
    "title": {
      "maxGraphemes": 300,
      "maxLength": 3000,
      "type": "string"
    },
    "uri": {
      "format": "uri",
      "type": "string"
    }
  },
  "required": [
    "uri"
  ],
  "type": "object"
}
minisiteCard object

No description available.

Properties

minisite string at-uri Required

An AT Protocol URI (e.g., at://did:plc:xyz/app.bsky.feed.post/abc).

View raw schema
{
  "properties": {
    "minisite": {
      "format": "at-uri",
      "type": "string"
    }
  },
  "required": [
    "minisite"
  ],
  "type": "object"
}
minisiteFilter object

No description available.

Properties

minisite string at-uri Required

An AT Protocol URI (e.g., at://did:plc:xyz/app.bsky.feed.post/abc).

View raw schema
{
  "properties": {
    "minisite": {
      "format": "at-uri",
      "type": "string"
    }
  },
  "required": [
    "minisite"
  ],
  "type": "object"
}
otherServices object

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

Properties

limit integer Optional

No description available.

minimum: 1maximum: 20
View raw schema
{
  "description": "The author's articles on other standard.site services.",
  "properties": {
    "limit": {
      "default": 6,
      "maximum": 20,
      "minimum": 1,
      "type": "integer"
    }
  },
  "type": "object"
}
pinnedArticle object

No description available.

Properties

article string at-uri Required

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

View raw schema
{
  "properties": {
    "article": {
      "description": "Always shows the latest version. Skipped when the article is gone or hidden.",
      "format": "at-uri",
      "type": "string"
    }
  },
  "required": [
    "article"
  ],
  "type": "object"
}
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

description string Optional

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

maxLength: 3000 bytesmaxGraphemes: 1000 graphemes
title string Optional

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 bytesmaxGraphemes: 200 graphemes
uri string at-uri Required

An AT Protocol URI (e.g., at://did:plc:xyz/app.bsky.feed.post/abc).

View raw schema
{
  "description": "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": {
    "description": {
      "description": "The record's description as it was when placed. Refreshed when the page is published.",
      "maxGraphemes": 1000,
      "maxLength": 3000,
      "type": "string"
    },
    "title": {
      "description": "The record's name as it was when placed (for sh.tangled.repo, its name or record key). Refreshed when the page is published.",
      "maxGraphemes": 200,
      "maxLength": 600,
      "type": "string"
    },
    "uri": {
      "format": "at-uri",
      "type": "string"
    }
  },
  "required": [
    "uri"
  ],
  "type": "object"
}
seriesFilter object

No description available.

Properties

series string at-uri Required

An AT Protocol URI (e.g., at://did:plc:xyz/app.bsky.feed.post/abc).

View raw schema
{
  "properties": {
    "series": {
      "format": "at-uri",
      "type": "string"
    }
  },
  "required": [
    "series"
  ],
  "type": "object"
}
seriesList object

No description available.

Properties

series array of stringat-uri Optional

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

maxLength: 10 items
view string Optional

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

maxLength: 64 bytes
Known values: list, card, cover
View raw schema
{
  "properties": {
    "series": {
      "description": "Series to show, in order. Absent means all series, newest first.",
      "items": {
        "format": "at-uri",
        "type": "string"
      },
      "maxLength": 10,
      "type": "array"
    },
    "view": {
      "default": "list",
      "description": "'cover' shows each series with the cover image of its first article.",
      "knownValues": [
        "list",
        "card",
        "cover"
      ],
      "maxLength": 64,
      "type": "string"
    }
  },
  "type": "object"
}
socialLinks object

The social links of the account's site.mochott.profile record. Deprecated: the page header shows them; editors no longer offer this block, renderers still draw it.

This object has no properties defined.

View raw schema
{
  "description": "The social links of the account's site.mochott.profile record. Deprecated: the page header shows them; editors no longer offer this block, renderers still draw it.",
  "properties": {},
  "type": "object"
}
spacer object

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

This object has no properties defined.

View raw schema
{
  "description": "Empty cell used to leave a gap in a tile section.",
  "properties": {},
  "type": "object"
}
tagFilter object

No description available.

Properties

tag string Required

No description available.

maxLength: 640 bytesmaxGraphemes: 64 graphemes
View raw schema
{
  "properties": {
    "tag": {
      "maxGraphemes": 64,
      "maxLength": 640,
      "type": "string"
    }
  },
  "required": [
    "tag"
  ],
  "type": "object"
}
tagList object

No description available.

Properties

limit integer Optional

No description available.

minimum: 1maximum: 30
View raw schema
{
  "properties": {
    "limit": {
      "default": 10,
      "maximum": 30,
      "minimum": 1,
      "type": "integer"
    }
  },
  "type": "object"
}
text object

No description available.

Properties

View raw schema
{
  "properties": {
    "content": {
      "ref": "site.mochott.article#tiptapDocument",
      "type": "ref"
    }
  },
  "required": [
    "content"
  ],
  "type": "object"
}
theme object

No description available.

Properties

cardStyle string Optional

No description available.

maxLength: 64 bytes
Known values: soft, outline, flat
preset string Optional

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

maxLength: 64 bytes
Known values: standard, wakaba, yoru
View raw schema
{
  "properties": {
    "cardStyle": {
      "knownValues": [
        "soft",
        "outline",
        "flat"
      ],
      "maxLength": 64,
      "type": "string"
    },
    "preset": {
      "description": "Color and typeface preset. Unknown values fall back to 'standard'.",
      "knownValues": [
        "standard",
        "wakaba",
        "yoru"
      ],
      "maxLength": 64,
      "type": "string"
    }
  },
  "type": "object"
}
tileItem object

No description available.

Properties

background ref #background Optional

No description available.

hideOnMobile boolean Optional

No description available.

id string Required

No description available.

maxLength: 16 bytes
size string Required

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 bytes
Known values: 1x1, 2x1, 1x2, 2x2, 4x1, 4x2
View raw schema
{
  "properties": {
    "background": {
      "ref": "#background",
      "type": "ref"
    },
    "block": {
      "refs": [
        "#pinnedArticle",
        "#archive",
        "#tagList",
        "#seriesList",
        "#minisiteCard",
        "#linkCard",
        "#linkButton",
        "#image",
        "#gallery",
        "#hero",
        "#socialLinks",
        "#spacer",
        "#record",
        "#embed"
      ],
      "type": "union"
    },
    "hideOnMobile": {
      "type": "boolean"
    },
    "id": {
      "maxLength": 16,
      "type": "string"
    },
    "size": {
      "description": "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.",
      "knownValues": [
        "1x1",
        "2x1",
        "1x2",
        "2x2",
        "4x1",
        "4x2"
      ],
      "maxLength": 8,
      "type": "string"
    }
  },
  "required": [
    "id",
    "size",
    "block"
  ],
  "type": "object"
}
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 Optional

No description available.

minimum: 2maximum: 6
heading string Optional

No description available.

maxLength: 300 bytesmaxGraphemes: 100 graphemes
id string Required

No description available.

maxLength: 16 bytes
items array of ref#tileItem Required

No description available.

maxLength: 30 items
View raw schema
{
  "description": "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": {
      "default": 4,
      "maximum": 6,
      "minimum": 2,
      "type": "integer"
    },
    "heading": {
      "maxGraphemes": 100,
      "maxLength": 300,
      "type": "string"
    },
    "id": {
      "maxLength": 16,
      "type": "string"
    },
    "items": {
      "items": {
        "ref": "#tileItem",
        "type": "ref"
      },
      "maxLength": 30,
      "type": "array"
    }
  },
  "required": [
    "id",
    "items"
  ],
  "type": "object"
}

Lexicon Garden

@