Layout tree (as in design/layout.json)
{
"pattern": "hero.dot-widget-home",
"kind": "hero",
"grid": {
"message": "1-7",
"reading": "8-10",
"dial": "11-12",
"status": "8-12",
"dock": "1-12"
},
"slots": [
"eyebrow",
"headline",
"subhead",
"cta",
"cta2",
"caption",
"number",
"heroImage",
"date",
"meta",
"features[4..4]"
],
"notes": "Every widget is a solid tile (radius 24 px) or a full pill; gaps are 12 px both ways like a phone home screen. Only the reading tile is red; the status widget carries a ring and a dot like a toggle.",
"tree": {
"el": "grid",
"gap": 3,
"rowGap": 3,
"align": "stretch",
"children": [
{
"el": "box",
"span": "1-7",
"rowSpan": "1-2",
"bg": "surface",
"gap": 8,
"pad": [
10,
8
],
"justify": "between",
"radius": "md",
"children": [
{
"el": "box",
"alignSelf": "start",
"dir": "row",
"pad": [
1,
4
],
"align": "center",
"border": "all",
"radius": "full",
"children": [
{
"el": "text",
"color": "text",
"slot": "eyebrow",
"role": "label",
"font": "mono"
}
]
},
{
"el": "text",
"slot": "headline",
"role": "display",
"step": 7,
"weight": 700,
"leading": "tight",
"maxCh": 13
},
{
"el": "box",
"gap": 6,
"children": [
{
"el": "text",
"color": "textMuted",
"slot": "subhead",
"role": "lead",
"maxCh": 44
},
{
"el": "box",
"dir": "row",
"gap": 3,
"wrap": true,
"children": [
{
"el": "button",
"slot": "cta",
"variant": "primary",
"size": "lg"
},
{
"el": "button",
"slot": "cta2",
"variant": "secondary",
"size": "lg",
"arrow": true
}
]
}
]
}
]
},
{
"el": "box",
"span": "8-10",
"rowSpan": "1-1",
"bg": "accent",
"gap": 6,
"pad": [
5,
5
],
"justify": "between",
"radius": "md",
"children": [
{
"el": "text",
"color": "onAccent",
"slot": "caption",
"role": "label",
"font": "mono"
},
{
"el": "text",
"color": "onAccent",
"slot": "number",
"role": "number",
"step": 7,
"weight": 700,
"leading": "tight"
}
]
},
{
"el": "media",
"span": "11-12",
"rowSpan": "1-1",
"alignSelf": "center",
"slot": "heroImage",
"treatment": "dot-matrix",
"frame": "circle"
},
{
"el": "box",
"span": "8-12",
"rowSpan": "2-2",
"bg": "surfaceAlt",
"gap": 6,
"pad": [
5,
6
],
"justify": "between",
"radius": "md",
"children": [
{
"el": "box",
"mobile": "keep",
"dir": "row",
"gap": 4,
"align": "center",
"justify": "between",
"children": [
{
"el": "text",
"color": "textMuted",
"slot": "date",
"role": "label",
"font": "mono"
},
{
"el": "box",
"mobile": "keep",
"dir": "row",
"gap": 2,
"align": "center",
"children": [
{
"el": "shape",
"kind": "ring",
"size": "sm",
"fill": "heading"
},
{
"el": "shape",
"kind": "circle",
"size": "sm",
"fill": "heading"
}
]
}
]
},
{
"el": "text",
"slot": "meta",
"role": "h4",
"weight": 700,
"maxCh": 26,
"font": "body"
}
]
},
{
"el": "repeat",
"span": "1-12",
"slot": "features",
"min": 4,
"max": 4,
"layout": "grid",
"cols": 4,
"phoneCols": 2,
"gap": 3,
"of": {
"el": "box",
"bg": "surface",
"gap": 8,
"pad": [
4,
5
],
"justify": "between",
"radius": "md",
"children": [
{
"el": "text",
"color": "link",
"slot": "number",
"role": "label",
"font": "mono"
},
{
"el": "text",
"slot": "title",
"role": "h4",
"weight": 700,
"maxCh": 18,
"font": "body"
}
]
}
}
]
}
}