product-head
A listing page header in a directory: mark, name, one sentence, category and tags.
{
"kind": "section",
"shell": {
"inset": "contained",
"density": "section"
},
"block": {
"type": "product-head",
"mark": "sparkles",
"name": "Kiln room 4",
"summary": "Two electric kilns to cone 10 in a shared clay studio in Lincoln Park, Duluth.",
"chips": [
{
"label": "Kiln room",
"href": "/city/duluth?kind=kiln"
},
{
"label": "Duluth",
"href": "/city/duluth"
},
{
"label": "Lincoln Park"
},
{
"label": "Cone 10"
}
],
"actions": [
{
"href": "mailto:kiln-room-4@benchlist.example?subject=Booking%20Kiln%20room%204",
"label": "Book by email",
"kind": "solid"
},
{
"href": "#rates",
"label": "See the rates",
"kind": "ghost"
}
]
}
}
{
"title": "product-head",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "product-head"
},
"mark": {
"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"
]
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 32
},
"summary": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"chips": {
"maxItems": 9,
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"minLength": 1,
"maxLength": 24
},
"href": {
"type": "string",
"minLength": 1,
"maxLength": 160
}
},
"required": [
"label"
],
"additionalProperties": false
}
},
"marks": {
"type": "object",
"properties": {
"openapi": {
"type": "boolean"
},
"mcp": {
"type": "boolean"
},
"webhooks": {
"type": "boolean"
},
"free": {
"type": "boolean"
}
},
"additionalProperties": false
},
"actions": {
"minItems": 1,
"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
}
}
},
"required": [
"type",
"name",
"summary",
"actions"
],
"additionalProperties": false
}When to use
Use a product head at the top of a listing page in a directory. It holds a mark, a name of 32 characters, a summary of 120, up to nine chips and one or two actions, with marks for an OpenAPI file, an MCP server, webhooks or a free plan.
Every listing gets at least one action. For a product landing rather than a listing, use hero.
Write the summary as what the listing does for the reader, in one sentence.
hero: a product landing, not a listing
The record
{
"kind": "section",
"shell": { "inset": "contained", "density": "section" },
"block": {
"type": "product-head",
"mark": "sparkles",
"name": "Kiln room 4",
"summary": "Two electric kilns to cone 10 in a shared clay studio in Lincoln Park, Duluth.",
"chips": [
{ "label": "Kiln room", "href": "/city/duluth?kind=kiln" },
{ "label": "Duluth", "href": "/city/duluth" },
{ "label": "Lincoln Park" },
{ "label": "Cone 10" }
],
"actions": [
{ "href": "mailto:kiln-room-4@benchlist.example?subject=Booking%20Kiln%20room%204", "label": "Book by email", "kind": "solid" },
{ "href": "#rates", "label": "See the rates", "kind": "ghost" }
]
}
}Smallest that parses
{
"type": "product-head",
"name": "Kiln room 4",
"summary": "Two electric kilns to cone 10 in a shared clay studio in Lincoln Park, Duluth.",
"actions": [
{ "href": "mailto:kiln-room-4@benchlist.example?subject=Booking%20Kiln%20room%204", "label": "Book by email", "kind": "solid" }
]
}Fields and bounds
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 |
|---|---|---|
mark | icon or mark name (52) | no |
name | string ≤32 | yes |
summary | string ≤120 | yes |
chips | 0–9 × object | no |
chips[].label | string ≤24 | yes |
chips[].href | string ≤160 | no |
marks | object | no |
marks.openapi | boolean | no |
marks.mcp | boolean | no |
marks.webhooks | boolean | no |
marks.free | boolean | no |
actions | 1–2 × object | yes |
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 |
Variants and counts
One layout. On a split frame, set aside on its shell to pin it in the side column.
One record in five Themes
Shells
In three Businesses
Carried by the directory-product Template. Seen on pages/benchlist/bench/kiln-room-4.json, section 1.
Do and do not
"actions": []Accessibility
| Check, on the exemplar render | Limit | Now | Pass |
|---|---|---|---|
| Skipped heading levels | 0 | 0 | yes |
| Unnamed nav landmarks | 0 | 0 of 0 | yes |
| Scroll regions a keyboard cannot reach | 0 | 0 of 0 | yes |
| Copy controls that announce the result | all | 0 of 0 | yes |
| Images and icons with no text alternative | 0 | 0 | yes |
Text pairs below AA across the 5 Themes and every scheme they emit: 5. See Render checks.
- Landmark The head sits first in
main. It adds no landmark. - Heading level The name renders as the page
h1. The capability marks are a list named Has. - Focus order Tab runs the chips with links, then the actions.