Layout tree (as in design/layout.json)
{
"pattern": "list.neobrutal-checklist",
"kind": "list",
"grid": {
"intro": "1-5",
"rows": "6-12"
},
"slots": [
"sectionLabel",
"title",
"body",
"cta",
"items[4..7]"
],
"notes": "Rows are separate bordered boxes with a gap, not a ruled table. The checkbox is a filled square in accent2.",
"tree": {
"el": "grid",
"gap": 5,
"children": [
{
"el": "box",
"span": "1-5",
"alignSelf": "start",
"gap": 3,
"children": [
{
"el": "text",
"slot": "sectionLabel",
"role": "eyebrow",
"weight": 700
},
{
"el": "text",
"slot": "title",
"role": "h2",
"step": 4,
"maxCh": 16
},
{
"el": "text",
"slot": "body",
"role": "body",
"maxCh": 40
},
{
"el": "button",
"slot": "cta",
"variant": "primary",
"arrow": true
}
]
},
{
"el": "repeat",
"span": "6-12",
"slot": "items",
"min": 4,
"max": 7,
"layout": "list",
"gap": 2,
"of": {
"el": "box",
"mobile": "keep",
"bg": "surface",
"dir": "row",
"gap": 3,
"pad": [
2,
3
],
"align": "center",
"justify": "between",
"wrap": true,
"border": "all",
"children": [
{
"el": "shape",
"kind": "square",
"size": "sm",
"fill": "accent2"
},
{
"el": "box",
"gap": 0,
"children": [
{
"el": "text",
"slot": "title",
"role": "h4"
},
{
"el": "text",
"slot": "body",
"role": "small"
}
]
},
{
"el": "text",
"mobile": "hide",
"slot": "meta",
"role": "label",
"font": "mono"
}
]
}
}
]
}
}