Kimo
Docs
v1.0
Changeloggetkimo.design
Docs
v1.0
File format spec
§19

Examples

On this page2 sections
  1. 19.1 The teardown example (§10.5), canonical
  2. 19.2 More fixtures
Status
Stable (format version 1.0.0, frozen 2026-10). Backward compatible within 1.x (§16.4). Supersedes the draft v0.1, kept as a historical record; 0.1 files open through the 0.1 → 1.0 migration (§16.2).
Schema
https://getkimo.design/schema/kimo-1.0.json (JSON Schema draft 2020-12), generated into packages/core-schema/schema/kimo-1.0.schema.json. The 0.1 schema stays published at …/kimo-0.1.json (schema/kimo-0.1.schema.json, frozen).
Reference
@kimo/core-schema (packages/core-schema). Where this document and the implementation disagree, that is a bug in one of them; file an issue.
Plan of record
docs/teardown.md §10. Every place where this spec resolves an ambiguity in, or deviates from, that section is listed in §20.
License
MIT

19.1 The teardown example (§10.5), canonical

packages/core-schema/fixtures/valid/example-10-5.kimo (with its library fixtures/valid/libs/kimo-ui.lib.kimo). The node lines are byte-identical to the teardown's, except that "fit":"cover" is omitted because it is the default:

Text
{
"$schema": "https://getkimo.design/schema/kimo-1.0.json",
"format": "1.0.0",
"features": ["layout/wrap"],
"meta": {"name":"Kimo landing"},
"themes": {"mode":["light","dark"]},
"imports": {"ui":"./libs/kimo-ui.lib.kimo"},
"variables": {
"ink": {"type":"color","value":[{"value":"#111111","when":{"mode":"light"}},{"value":"#F4F4F5","when":{"mode":"dark"}}]}
, "radius-m": {"type":"number","value":8}
, "space-m": {"type":"number","value":16}
, "surface": {"type":"color","value":[{"value":"#FFFFFF","when":{"mode":"light"}},{"value":{"space":"oklch","l":0.18,"c":0.01,"h":270},"when":{"mode":"dark"}}]}
},
"nodes": {
"A1hero0001": {"type":"frame","parent":null,"order":"a0","name":"Hero","x":0,"y":0,"w":1440,"h":{"mode":"fit","fallback":900},"clip":true,"fill":{"$ref":"surface"},"layout":{"dir":"column","gap":24,"pad":[96,120],"align":"center"}}
, "B2title001": {"type":"text","parent":"A1hero0001","order":"a0","name":"Title","content":"Design next to your code","style":{"font":"Inter","size":64,"weight":700,"lineHeight":1.1},"fill":{"$ref":"ink"}}
, "C3row00001": {"type":"frame","parent":"A1hero0001","order":"a1","name":"Actions","layout":{"dir":"row","gap":{"$ref":"space-m"},"wrap":true}}
, "D4cta00001": {"type":"instance","parent":"C3row00001","order":"a0","name":"Primary CTA","of":"ui:BtnPrimary","overrides":{"ui:BtnLabel01":{"set":{"content":"Get Kimo — $49/mo"}}}}
, "E5card0001": {"type":"instance","parent":"A1hero0001","order":"a2","name":"Feature card","of":"ui:CardBase01","theme":{"mode":"dark"},"props":{"w":{"mode":"fill"}},"overrides":{"ui:CardActns1":{"slot":true}}}
, "F6btn00001": {"type":"instance","parent":"E5card0001","at":"ui:CardActns1","order":"a0","of":"ui:BtnGhost01","overrides":{"ui:BtnLabel01":{"set":{"content":"Learn more"}}}}
, "G7img00001": {"type":"rect","parent":"A1hero0001","order":"a3","name":"Screenshot","w":1200,"h":720,"radius":{"$ref":"radius-m"},"fill":{"kind":"image","src":"./assets/9f2c1ab04e7d3c55.png"},"effects":[{"kind":"shadow","x":0,"y":24,"blur":48,"spread":-12,"color":"#0000003D"}]}
}
}

Notes: F6btn00001 is slot content (parent = the instance, at = the slot's path). "$49/mo" is literal text. ui:BtnGhost01 is a derived component (an instance of ui:BtnPrimary marked component), which is why the same path ui:BtnLabel01 resolves in both D4cta00001 and F6btn00001. The effective theme of F6btn00001 is {mode: dark, ui:mode: light}: it inherits mode from where it is placed.

Keywords:
MUST
MUST NOT
SHOULD
MAY
set in small mono caps wherever they are normative

19.2 More fixtures

packages/core-schema/fixtures/ holds the normative examples: valid/ (components with declared props, args, set/slot/replace, nested paths; multi-axis themes with partial when, fallbacks and aliases; every paint, stroke, effect and shape; every feature; Unicode and escaping; styling-m2.kimo for the M2 styling fields: layer blend incl. pass-through, per-side dashed strokes, miterLimit, hidden effects, icon strokeWidth/weight; components-m3.kimo for M3: every prop kind incl. a root-targeting enum, prop order, a derived component redeclaring a prop, slot suggestions, slot and replace overrides, a nested set: { of, props } swap, kimo.component.description, instance theme pins, multi-axis when with fallback and OKLCH / Display-P3 values), invalid/ (one file per error code, named <CODE>--<case>.kimo), lint/ (one per warning), forward/ (newer minor/major/patch, unknown features) and parse-errors/.