Alpha: Ships on npm at 7.0.0-alpha.07.0.0-alpha.0

Page

A Page is one record: its Theme, an optional Template, its frame, its head and three to twenty sections, rendered as one document.

View as JSON
startupbuilder.dev defines
A Page is an addressable page of a Site, of a named type such as pricing, about one Thing or each member of a Collection.
Page startupbuilder.dev

What mdxui renders

One record, parsed by PageSchema and rendered by renderPage. This is Harbor's pricing page, five sections; open the Record tab to read the record that drew it, or pick another Theme.

From Harbor tides › pricingquaypointOpen the frame

Each field decides one thing; a section decides its own layout and content.

From @mdxui/site@7.0.0-alpha.0.

FieldType and boundRequiredDecides
theme"certificate" | "vaultline" | "quaypoint" | "callboard" | "directory"yesThe Brand the page wears: tokens, typefaces and policies
template"api-product" | "article" | "blog" | "post" | "contact" | "directory-list" | "directory-product"noThe page kind; it names the slots the sections fill
titlestring ≤64yesThe document title and the share title
descriptionstring ≤320yesThe meta and share description
metaobjectnoThe head: canonical address, icons, share image, noindex
meta.canonicalstring ≤160no—
meta.type"website" | "article"no—
meta.iconstring ≤160no—
meta.iconFallbackstring ≤160no—
meta.appleTouchIconstring ≤160no—
meta.imageobjectno—
meta.noindexbooleanno—
jsonLd0–4 × objectnoStructured data, written into the head as given
frame"none" | "sheet" | "split"yesThe frame around every section: none, one ruled sheet, or a split with an aside
sections3–20 × sectionyesThe page itself, in order

Every bound, with its refusal, is on Page fields and bounds.

How it maps

Page mdxuiAlpha: Renders today from the published packages 2Gap: No counterpart in the record; the intended Noun drafts one 4
startupbuilder.devmdxui todayStatus
pathNot in the record: the file's place decides it, so pages/harbor/pricing.json serves /pricingGap: No counterpart in the record; the intended Noun drafts one
kindtemplate, one of seven. A landing or pricing page is api-product; a terms page is articleAlpha: Renders today from the published packages
fromNot in the record: no lineage back to a Hypothesis slotGap: No counterpart in the record; the intended Noun drafts one
uses Componentssections, three to twenty, each one Section typeAlpha: Renders today from the published packages
about one ThingLiteral props: the agent writes the Thing's facts into the recordGap: No counterpart in the record; the intended Noun drafts one
each member of a CollectionOne record per member, written outGap: No counterpart in the record; the intended Noun drafts one

Status

A Page record parses and renders today, and none of its fields is a Spec. The record binds to no other record: an agent fills every field with literal words, and the bounds keep those words inside the design.

Intended Noun

The three Page props the record lacks, drafted as the fields that close the gap.

intended Noun: Page record, the startupbuilder.dev props (mdxui.dev namespace)
noun: Page record
projects: startupbuilder.dev Page, quoted above; defines nothing new
adds:
  path: { type: string, pattern: "^/[a-z0-9/-]*$", max: 160, required: true, note: the address under its Site; today the file path }
  kind: { type: enum, values: the startupbuilder.dev page types, required: false, note: maps onto template }
  from: { type: string, pattern: "Hypothesis#<slot>@v<version>", required: false, note: lineage, never rendered }
  about: { type: Thing reference, required: false, note: the Thing whose fields fill the sections }

On this page