Layout tree (as in design/layout.json)
{
"pattern": "hero.split-diagonal",
"kind": "hero",
"grid": {
"copy": "1-6",
"media": "6-12"
},
"slots": [
"heroImage",
"eyebrow",
"headline",
"subhead",
"cta",
"stats[2..3]"
],
"notes": "The copy panel's right edge is one straight diagonal (clip: diagonal-right = clip-path polygon(0 0, 100% 0, 84% 100%, 0 100%)), so the image shows through the wedge. At phone width the image comes first and the panel's top edge carries the diagonal instead.",
"bleed": true,
"tree": {
"el": "grid",
"gap": 0,
"align": "stretch",
"minVh": 0.9,
"children": [
{
"el": "media",
"span": "6-12",
"rowSpan": "1-1",
"mobile": "reverse",
"slot": "heroImage",
"treatment": "photo",
"fill": true
},
{
"el": "box",
"span": "1-6",
"rowSpan": "1-1",
"bg": "surface",
"gap": 4,
"pad": [
8,
5
],
"justify": "center",
"clip": "diagonal-right",
"children": [
{
"el": "text",
"slot": "eyebrow",
"role": "eyebrow"
},
{
"el": "text",
"slot": "headline",
"role": "h1",
"step": 6,
"transform": "uppercase",
"leading": "tight",
"maxCh": 12
},
{
"el": "text",
"slot": "subhead",
"role": "lead",
"maxCh": 32
},
{
"el": "button",
"slot": "cta",
"variant": "primary",
"arrow": true
},
{
"el": "repeat",
"slot": "stats",
"min": 2,
"max": 3,
"layout": "row",
"gap": 5,
"of": {
"el": "box",
"gap": 1,
"children": [
{
"el": "text",
"slot": "number",
"role": "number",
"step": 3
},
{
"el": "text",
"slot": "label",
"role": "small"
}
]
}
}
]
}
]
}
}