Theme manifest (theme.json)
Validated by zThemeManifest (@mozaik/kit/validate). tier: "full" kits declare runtime (platform = first-party compiled-in; sandbox = sealed, refused until P2); tier: "skin" themes MUST extends a parent kit. The agent block is required, like extensions.
Machine-readable: /schemas/theme.schema.json.
Fields
| field | type | required | notes |
|---|---|---|---|
id | string (/^[a-z][a-z0-9-]*\.[a-z][a-z0-9-]*$/) | yes | |
version | string (/^\d+\.\d+\.\d+$/) | yes | |
contract | const 1 | yes | |
tier | "full" | "skin" | yes | |
runtime | "platform" | "sandbox" | no | |
extends | string (/^[a-z][a-z0-9-]*\.[a-z][a-z0-9-]*@\d+$/) | no | |
labelTR | string (≤40 chars) | yes | |
descriptionTR | string (≤280 chars) | yes | |
tags | array<string (≤24 chars)> (≤8) | no | |
catalogSize | "small" | "medium" | "large" | no | |
fonts | array<object | object> (≤4) | no | |
presets | array<string (/^[a-z][a-z0-9-]*$/)> (≤8) | no | |
defaultPreset | object | no | |
colorway | string | no | |
typeset | string | no | |
optional | array<"Split" | "Placeholder" | "CollectionCard" | "Breadcrumbs" | "Textarea" | "Checkbox" | "Accordion" | "KeyValueList" | "Divider" | "Logo" | "Notice" | "Tabs" | "Dialog" | "Pagination" | "Table" | "Video" | "Marquee" | "Countdown"> | no | |
hooks | array<string (/^data-mzk-[a-z0-9-]+$/)> (≤16) | no | |
sections | array<object> (≤2) | no | |
publisher | object | yes | |
name | string (≤80 chars) | yes | |
url | string | no | |
supportEmail | string (/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/) | no | |
supportUrl | string | no | |
agent | object | yes | |
summaryTR | string (≤400 chars) | yes | |
authoringDocs | string | no | |
notes | array<string (≤200 chars)> (≤12) | no | |
migrations | string | no |
Generated from the live platform registries at build time — reference pages cannot go stale. Markdown variant: /reference/theme-manifest.md