Alpha: Ships on npm at 7.0.0-alpha.07.0.0-alpha.0
article
Long reading under a page head: services, install notes, terms and the page after a form.
Theme
LedgerhouseServices
vaultlineown8 sections
DiffkeelDeveloper tool
certificateown8 sections
VanrosterSaaS
callboardown7 sections
24 pages in 6 Businesses name article in this build.
Use article for a page a reader reads rather than scans: services explained, install notes, terms, an about page, and the short page a form lands on. A page-head or the article's own head names it; the body stays inside the article Markdown subset.
Sections in order
Harbor tides /contact/sent
Vanroster /404, Ledgerhouse /404, Ledgerhouse /intake/sent, Diffkeel /404, Benchlist /404, Benchlist /list-a-bench/sent, Sidework /404, Sidework /subscribe/sent, Harbor tides /404
Vanroster /contact/sent
Fields that matter
| Section type | Field | Type | Bounds | Refused as |
|---|---|---|---|---|
| page-head | title | string ≤64 | 1–64 | page-head.title |
| page-head | lede ? | string ≤200 | 1–200 | page-head.lede |
| article | head.title | string ≤80 | 1–80 | article.head.title |
| article | head.dek ? | string ≤360 | 1–360 | article.head.dek |
| article | body | string ≤12000 | 1–12000 | article.body |
Every field of page-head
| Field | Type | Req | Bounds | Refusal |
|---|---|---|---|---|
title | string ≤64 | yes | 1–64 | page-head.title |
lede | string ≤200 | 1–200 | page-head.lede |
Every field of article
| Field | Type | Req | Bounds | Refusal |
|---|---|---|---|---|
head | object | — | ||
head.back | object | — | ||
head.back.href | string ≤160 | yes | 1–160 | article.head.back.href |
head.back.label | string ≤16 | yes | 1–16 | article.head.back.label |
head.tag | string ≤20 | 1–20 | article.head.tag | |
head.dateline | object | — | ||
head.dateline.date | string (pattern) | yes | — | |
head.dateline.read | object | — | ||
head.title | string ≤80 | yes | 1–80 | article.head.title |
head.dek | string ≤360 | 1–360 | article.head.dek | |
share | object | — | ||
share.url | string ≤160 | yes | 1–160 | article.share.url |
share.title | string ≤80 | yes | 1–80 | article.share.title |
share.label | string ≤16 | yes | 1–16 | article.share.label |
share.on | 1–5 × "reddit" | "x" | "linkedin" | "bluesky" | "hackernews" | yes | 1–5 | article.share.on |
body | string ≤12000 | yes | 1–12000 | article.body |
copy | boolean | — |
Starter record
pages/ledgerhouse/services/monthly-close.json5.4 KB article.json{
"$schema": "https://next.mdxui.dev/schema.json",
"theme": "vaultline",
"frame": "none",
"template": "article",
"title": "Monthly close · Ledgerhouse",
"description": "Every account tied to the bank, every question asked once, one report signed by the fifth working day.",
"sections": [
{
"kind": "nav",
"shell": {"inset":"bleed","density":"none","surface":"glass","sticky":true},
"block": {
"type": "nav",
"menu": "none",
"brand": {"href":"/","text":"Ledgerhouse","mark":"landmark"},
"links": [["/services","Services"],["/pricing","Fees"],["/about","About"]],
"cta": {"href":"/intake","label":"Start intake"}
}
},
{
"kind": "section",
"shell": {"inset":"contained","density":"section"},
"block": {
"type": "page-head",
"title": "Monthly close",
"lede": "Every account tied to the bank and every question asked once. One signed report by the fifth working day."
}
},
{
"kind": "section",
"shell": {"inset":"contained","density":"section"},
"block": {
"type": "feature-grid",
"cellHead": "label",
"head": {"eyebrow":"What arrives","title":"Two documents a month."},
"items": [
{
"label": "Report",
"title": "The close report",
"text": "Profit and loss, balance sheet and cash, with last month beside every line and a partner’s signature."
},
{
"label": "List",
"title": "The question list",
"text": "Every unclear transaction in one numbered list. Each answer is remembered, so no question comes twice."
}
]
}
},
{
"kind": "section",
"shell": {"inset":"contained","density":"section"},
"block": {
"type": "steps",
"head": {
"eyebrow": "Five working days",
"title": "From bank feed to signature.",
"lede": "The same five days every month. The engagement letter names the fifth."
},
"steps": [
"Day 1: bank feeds tied",
"Day 2: bills and invoices matched",
"Day 3: one question list sent",
"Day 4: payroll and accruals posted",
"Day 5: report signed and sent"
]
}
},
{
"kind": "section",
"shell": {"inset":"contained","density":"section","surface":"plate"},
"block": {
"type": "terminal",
"variant": "plain",
"title": "Close report · September 2026",
"lines": [
"@dim{ SEP 2026 AUG 2026}",
"Revenue 48,210.00 44,980.00",
"Cost of sales -19,402.50 -18,115.20",
"Gross profit 28,807.50 26,864.80",
"Operating expenses -17,960.00 -17,412.75",
"@ink{Net profit 10,847.50 9,452.05}",
"",
"@dim{Operating account} tied to statement, 30 Sep @pass{ok}",
"@dim{Savings account} tied to statement, 30 Sep @pass{ok}",
"@dim{Questions} 2 sent, 2 answered",
"@dim{Signed} bookkeeping partner, 6 Oct"
]
}
},
{
"kind": "section",
"shell": {"inset":"contained","density":"section"},
"block": {
"type": "facts",
"title": "The terms",
"items": [
{"label":"Due","value":"Fifth working day, every month"},
{"label":"Signed by","value":"The partner who took intake"},
{"label":"Software","value":"Yours, unchanged"},
{"label":"Bank access","value":"Read-only feeds, never payments"},
{"label":"Fee","value":"From $450 a month","href":"/pricing"},
{"label":"A missed date","value":"That month’s fee is waived"}
]
}
},
{
"kind": "closing",
"shell": {"inset":"contained","density":"closing"},
"block": {
"type": "closing",
"layout": "stack",
"head": {
"eyebrow": "First close",
"title": "Close last month first.",
"lede": "Intake sets the fee. The first report follows by the fifth working day of the next month."
},
"actions": [
{"href":"/intake","label":"Start intake","kind":"solid"},
{"href":"/pricing","label":"See the fees","kind":"ghost"}
]
}
},
{
"kind": "footer",
"shell": {"inset":"contained","density":"footer"},
"block": {
"type": "footer",
"layout": "columns",
"brand": {"href":"/","text":"Ledgerhouse","mark":"landmark"},
"blurb": "Bookkeeping and tax for small businesses, by two partners and no handoffs.",
"columns": [
{
"title": "The firm",
"links": [
["/services","Services"],
["/services/monthly-close","Monthly close"],
["/pricing","Fees"],
["/about","About"]
]
},
{"title":"Clients","links":[["/intake","Intake"],["/terms","Terms of engagement"]]},
{
"title": "For agents",
"links": [["/records.zip","Site records (.zip)"],["/services/monthly-close","What a close report holds"]]
}
],
"note": [
"Ledgerhouse is a worked example on mdxui.dev, not a customer.",
"Rendered by @mdxui/site. Forms here do not send."
]
}
}
]
}