Alpha: Ships on npm at 7.0.0-alpha.07.0.0-alpha.0
closing
The final call of a page: a head, then buttons or one command, never both.
Carried by the api-product and article Templates. Seen on pages/harbor/home.json, section 12.
Variant
{
"kind": "closing",
"shell": {
"inset": "contained",
"density": "closing"
},
"block": {
"type": "closing",
"layout": "stack",
"head": {
"eyebrow": "Free to start",
"title": "Ask for your berth.",
"lede": "A harbor master adds any berth in the harbor within one working day."
},
"actions": [
{
"href": "/contact",
"label": "Talk to the harbor",
"kind": "solid"
}
]
}
}
{
"title": "closing",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "closing"
},
"layout": {
"type": "string",
"enum": [
"stack",
"split"
]
},
"head": {
"type": "object",
"properties": {
"eyebrow": {
"type": "string",
"minLength": 1,
"maxLength": 28
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 72
},
"lede": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"max": {
"type": "string",
"pattern": "^(none|\\d+(\\.\\d+)?(em|ch|px))$"
},
"ledeMax": {
"type": "string",
"pattern": "^(none|\\d+(\\.\\d+)?(em|ch|px))$"
},
"balance": {
"type": "boolean"
},
"scale": {
"type": "string",
"enum": [
"compact",
"large"
]
},
"tag": {
"type": "string",
"minLength": 1,
"maxLength": 8
},
"layout": {
"type": "string",
"enum": [
"split"
]
}
},
"required": [
"eyebrow"
],
"additionalProperties": false
},
"specimen": {
"type": "object",
"properties": {
"panel": {
"type": "string",
"enum": [
"none",
"field"
]
},
"blocks": {
"minItems": 1,
"maxItems": 3,
"type": "array",
"items": {
"$ref": "#"
}
}
},
"required": [
"blocks"
],
"additionalProperties": false
},
"fine": {
"maxItems": 4,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 72
}
},
"stats": {
"maxItems": 4,
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string",
"minLength": 1,
"maxLength": 6
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 24
}
},
"required": [
"value",
"label"
],
"additionalProperties": false
}
},
"actions": {
"maxItems": 2,
"type": "array",
"items": {
"type": "object",
"properties": {
"href": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 24
},
"kind": {
"type": "string",
"enum": [
"solid",
"ghost"
]
},
"icon": {
"type": "string",
"enum": [
"activity",
"anchor",
"arrow-right",
"arrow-up-right",
"badge-check",
"bell",
"blocks",
"bot",
"check",
"chevron-down",
"chevron-left",
"chevron-right",
"clock",
"code",
"compass",
"copy",
"credit-card",
"database",
"file-code-2",
"file-text",
"files",
"film",
"fingerprint",
"gauge",
"git-commit-horizontal",
"globe",
"history",
"key-round",
"landmark",
"layers",
"layout-grid",
"library",
"link",
"list",
"map-pin",
"menu",
"message-square",
"mic",
"plug",
"radar",
"refresh-cw",
"search",
"shield-check",
"ship",
"shopping-cart",
"sliders-horizontal",
"sparkles",
"terminal",
"ticket",
"waves",
"webhook",
"x"
]
},
"external": {
"type": "boolean"
}
},
"required": [
"href",
"label",
"kind"
],
"additionalProperties": false
}
},
"command": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"required": [
"type",
"head"
],
"additionalProperties": false
}{
"kind": "closing",
"shell": { "inset": "contained", "density": "closing" },
"block": {
"type": "closing",
"layout": "stack",
"head": { "eyebrow": "Free to start", "title": "Ask for your berth.", "lede": "A harbor master adds any berth in the harbor within one working day." },
"actions": [
{ "href": "/contact", "label": "Talk to the harbor", "kind": "solid" }
]
}
}Smallest that parses
{
"type": "closing",
"head": { "eyebrow": "Free to start", "title": "Ask for your berth." }
}Props
From @mdxui/site@7.0.0-alpha.0. A count reads as min–max × item; a string bound is its maximum length in characters, and links its refusal.
| Prop | Type and bound | Required |
|---|---|---|
layout | "stack" | "split" | no |
head | object | yes |
head.eyebrow | string ≤28 | yes |
head.title | string ≤72 | no |
head.lede | string ≤300 | no |
head.max | string (pattern) | no |
head.ledeMax | string (pattern) | no |
head.balance | boolean | no |
head.scale | "compact" | "large" | no |
head.tag | string ≤8 | no |
head.layout | "split" | no |
specimen | object | no |
specimen.panel | "none" | "field" | no |
specimen.blocks | 1–3 × Section type (nested) | yes |
fine | 0–4 × string ≤72 | no |
stats | 0–4 × object | no |
stats[].value | string ≤6 | yes |
stats[].label | string ≤24 | yes |
actions | 0–2 × object | no |
actions[].href | string ≤160 | yes |
actions[].label | string ≤24 | yes |
actions[].kind | "solid" | "ghost" | yes |
actions[].icon | icon or mark name (52) | no |
actions[].external | boolean | no |
command | string ≤40 | no |
Use instead
cta-form: the call is a form