Layout tree (as in design/layout.json)
{
"pattern": "hero.interactive-terminal",
"kind": "hero",
"grid": {
"copy": "1-5",
"terminal": "6-12"
},
"slots": [
"eyebrow",
"headline",
"subhead",
"cta",
"meta",
"caption",
"items[4..7]"
],
"notes": "Lines type in once on load (20–35 ms per character), then the prompt accepts a few real commands (help, install, docs, pricing) that print short answers or navigate. Reduced motion: render all lines at once. The terminal is an aria-live=\"polite\" region; the copy column alone must make sense without it.",
"tree": {
"el": "grid",
"gap": 4,
"align": "center",
"minVh": 0.85,
"children": [
{
"el": "box",
"span": "1-5",
"gap": 4,
"children": [
{
"el": "text",
"slot": "eyebrow",
"role": "eyebrow",
"font": "mono"
},
{
"el": "text",
"slot": "headline",
"role": "h1",
"step": 5,
"leading": "tight",
"maxCh": 14
},
{
"el": "text",
"slot": "subhead",
"role": "body",
"maxCh": 36
},
{
"el": "button",
"slot": "cta",
"variant": "primary",
"arrow": true
},
{
"el": "text",
"color": "textMuted",
"slot": "meta",
"role": "small",
"font": "mono"
}
]
},
{
"el": "box",
"span": "6-12",
"bg": "surfaceAlt",
"gap": 3,
"pad": [
4,
4
],
"border": "all",
"minVh": 0.5,
"children": [
{
"el": "box",
"gap": 2,
"pad": [
0,
0
],
"border": "bottom",
"children": [
{
"el": "text",
"color": "textMuted",
"slot": "caption",
"role": "small",
"font": "mono"
}
]
},
{
"el": "repeat",
"slot": "items",
"min": 4,
"max": 7,
"layout": "list",
"gap": 2,
"of": {
"el": "box",
"mobile": "keep",
"dir": "row",
"gap": 3,
"align": "baseline",
"children": [
{
"el": "text",
"color": "textMuted",
"slot": "label",
"role": "body",
"font": "mono"
},
{
"el": "text",
"color": "text",
"slot": "title",
"role": "body",
"font": "mono"
}
]
}
},
{
"el": "shape",
"kind": "bar",
"size": "sm",
"fill": "accent"
}
]
}
]
}
}