Skip to content
HomePagesHomePages template kit

API reference

Every public export of `@homepages/template-kit`, by kind — Components, Functions, Types.

Symbol Import from Summary
bindGroups @homepages/template-kit Bind a section’s declared groups to typed bindings.
FrameShell @homepages/template-kit The frame shell — the rendered-class page root, the frame analog of the website page shell.
Image @homepages/template-kit Image — the responsive-image primitive.
IslandMarker @homepages/template-kit Wrap a client component’s server-rendered output in the island DOM shape: a layout-invisible custom element carrying the island’s key and id, plus a sibling <script type="application/json"> payload the browser runtime reads the props back out of.
Section @homepages/template-kit The section root.
SlotGroup @homepages/template-kit Render as (a host element or component) carrying the unit’s marker: a group binding emits data-slot-group, a collection row’s ItemBinding emits data-slot-item — so the editor outlines and edits the container as one sidebar card.
Tour @homepages/template-kit Tour — the 3D-walkthrough primitive.
Video @homepages/template-kit Video — the video primitive, whoever hosts the bytes.
Symbol Import from Summary
acceptsLink @homepages/template-kit Does url satisfy an accepts token — a LinkKind or a single LinkProviderId?
bindItems @homepages/template-kit Bind a list slot’s items for iteration — the one idiom for rendering anything multi-item: bindItems(slot.units).map((unit) => …) is an ordinary React array, so clones, splits, and free-form markup are plain JavaScript rather than list-primitive modes.
bindSlots @homepages/template-kit Bind a section’s schema to the values its renderer received.
buildFixtureSet @homepages/template-kit Derives a section’s full fixture set from its fixtures.ts module: a "typical" fixture from base, then one per states entry (id = the state’s key).
buildInvariantFixtures @homepages/template-kit The render-invariant fixture corpus for a section: buildFixtureSet’s output plus one additional synthesized fixture per declared slot that is not already empty/absent in base — each with that one slot set to its empty/absent value, proving the section renders defect-free when the slot is unfilled.
canvas @homepages/template-kit Declare one editing canvas: its canvas-bar label (required), then the composed pages it presents, in display order on that canvas.
captureViewport @homepages/template-kit The viewport a capturer opens for a format: the bleed box rounded to whole CSS px (a browser viewport holds no fraction; the shell’s overflow: clip absorbs the sub-pixel slack) at the format’s device scale factor.
chooseFrom @homepages/template-kit Rows the model picks from the row’s own select vocabulary — count.min..count.max of them, steered by pick prose.
collectionForSlot @homepages/template-kit Which COLLECTIONS entry, if any, a slot definition is bound to.
compileFontFacesToCss @homepages/template-kit Compile a TokenTheme’s font entries into the loading CSS its bundle needs: the @import for every hosted stylesheet, then one @font-face per shipped file.
compileFormatVariantsToCss @homepages/template-kit One @custom-variant per declared format id, each scoped to the frame shell’s data-format stamp (the frame root itself, or anything inside it).
compileThemeToCss @homepages/template-kit Compile a TokenTheme into the token CSS a template’s bundle ships.
composeCanvases @homepages/template-kit Key the authored canvases: the object key is the canvas id (stable identity: renaming a label must not move it) and object insertion order is canvas bar order.
composePages @homepages/template-kit Lay the composed sections out across the artifact and hand back keyed page handles: the object key is the page id (stable identity: renaming a label must not move it) and object insertion order is artifact order — what nav menus and the editor’s page bar render.
composeSections @homepages/template-kit Build one typed handle per composed section instance.
compute @homepages/template-kit Marks a slot’s value as derived from Facts at render time rather than bound to a source field.
contactAssign @homepages/template-kit Fills a single image or text slot from ONE of the property’s attached contacts, chosen by the model against pick.
defaultForSlotType @homepages/template-kit The fresh default runtime value for a slot of the given type, derived from SLOT_TYPE_DESCRIPTORS.
defineReconcile @homepages/template-kit Bind rule/set to a template’s composeSections() output.
defineSchema @homepages/template-kit Declare a section’s schema from label + per-kind slot builders.
defineTemplate @homepages/template-kit Validate and freeze an authored template.
deserializeIslandProps @homepages/template-kit, @homepages/template-kit/island-runtime Read a props payload back.
document @homepages/template-kit A single platform-hosted document — a pdf, spreadsheet, or office file the visitor opens in the browser or downloads.
documentAssign @homepages/template-kit Fills a single document slot by having the model choose one file from the documents stored on the property.
fillSpecFromSchema @homepages/template-kit Extract a section’s published fill spec from its defineSchema declaration: one decision per slot carrying a colocated fill:, in slot-declaration order, each id/produces minted from the slot key, plus the schema’s own reads.
formatVariantNameError @homepages/template-kit Why id cannot be a format-variant name, or null when it can.
frameTokens @homepages/template-kit The frame shell’s per-format tokens: trim box + bleed, exact CSS px.
getComputed @homepages/template-kit Reads a schema’s COMPUTED handle→fn map, or {} when none is attached.
group @homepages/template-kit A sidebar card collapsing its member slots into one editor group.
image @homepages/template-kit A single image slot — the resolved value is always one ImageValue, never a list, so it carries no count bounds (a list of them does).
imageAssign @homepages/template-kit Fills a single image slot by having the model choose one photo from the property’s full pool.
isContentCategory @homepages/template-kit Membership predicate over the closed vocabulary.
islandId @homepages/template-kit, @homepages/template-kit/island-runtime Compose an island id.
isLinkAccepts @homepages/template-kit True iff value names a LINK_KINDS member or a LINK_PROVIDERS key.
isResolvedFixtureModule @homepages/template-kit Narrows to a ResolvedFixtureModule by checking its __kind brand.
listFill @homepages/template-kit Fills ANY list slot.
matchLinkProvider @homepages/template-kit Classify a pasted URL against LINK_PROVIDERS.
normalizeSelectKey @homepages/template-kit The stored form of a user-created select value: trimmed, lower-cased, every run of whitespace collapsed to a single -.
number @homepages/template-kit A numeric slot.
orgsForScope @homepages/template-kit The orgs this scope grants the template to, in authored order.
page @homepages/template-kit Declare one page: its menu/editor label (required on every page, single-page templates included), then either a path ("/" for the root page, else one lowercase-kebab segment such as "/gallery") for a website page, or no path at all for a rendered class’s pathless surface — the two forms return distinct types, and each defineTemplate branch accepts only its own.
parseFixtureModule @homepages/template-kit Parses a fixtures.ts module’s default export.
poi @homepages/template-kit A single point of interest — one platform-built place (a PoiRow), picked in the editor’s place search.
presetGeometryMatches @homepages/template-kit Whether a format’s preset provenance tag is truthful.
printPageSize @homepages/template-kit The printed paper size for a document format: the bleed box as exact CSS inch strings.
resolveFormatGeometry @homepages/template-kit Derive a rendered format’s geometry.
select @homepages/template-kit The select slot AND the meta.display entry, told apart by the call shape.
serializeIslandProps @homepages/template-kit, @homepages/template-kit/island-runtime Validate + encode island props for the <script type="application/json"> payload.
settleCapture @homepages/template-kit The whole capture settle, for every surface that shoots a page: the CLI’s screenshot and print-preview routes and the render worker.
slotDefTypes @homepages/template-kit The discriminator literal of every SlotDef union member, in declaration order — read off the built union rather than the descriptor keys, so it also guards against a member missing from the enumerated member list.
textBlock @homepages/template-kit Fills a text slot with model-generated prose.
tour @homepages/template-kit A single 3D-tour slot, resolved as a TourValue.
tourAssign @homepages/template-kit Fills a single tour slot by having the model choose one 3D tour from the property’s tour pool.
tourEmbedUrl @homepages/template-kit The embeddable player URL for a pasted 3D-tour link, or null when the value is empty, names no provider, names one that is not a tour provider, or is a tour URL the provider’s embed form cannot be built from.
url @homepages/template-kit A URL string slot.
useCaptureReady @homepages/template-kit Hold the capture shutter until this island’s pixels are real.
usedFactsFromSchema @homepages/template-kit The registry keys a section asks of the property — the union of its slot bindings, its declared reads, and every fact its compute() callbacks are traced reading.
useEditor @homepages/template-kit Whether this island is live in an editor canvas, and what is selected inside its own section instance.
video @homepages/template-kit A single video slot, resolved as a VideoValue.
videoAssign @homepages/template-kit Fills a single video slot by having the model choose one clip from the property’s video pool.
videoEmbedUrl @homepages/template-kit The embeddable player URL for a pasted video link, or null when the value is empty, names no provider, or names one that is not embeddable video.
visibilityForScope @homepages/template-kit The catalog.template.visibility value this scope publishes as — the scope CLASS only.
IslandPropsError @homepages/template-kit, @homepages/template-kit/island-runtime A prop that cannot cross the server→browser boundary, or a payload that cannot be read back.
contactCards @homepages/template-kit/fixtures Every contact card the scenario carries, in scenario order.
defineFixtures @homepages/template-kit/fixtures Resolve a section’s fixture module: its base scenario plus each named state.
getDevTour @homepages/template-kit/fixtures One dev tour by id, or null when the pool does not carry it.
poisByCategory @homepages/template-kit/fixtures The scenario’s points of interest as PoiRows, grouped by category.
primaryContact @homepages/template-kit/fixtures The scenario’s primary contact.
projectFacts @homepages/template-kit/fixtures Project a scenario’s PropertyFacts into the {@link FactsView} the resolver functions in this module read.
propertyMetrics @homepages/template-kit/fixtures Derive a scenario’s {@link PropertyMetrics}: the lowest-position unit’s raw figures plus the cross-unit aggregates, computed exactly as the real fill pipeline computes them so a fixture states the value that pipeline bakes.
resolveDirect @homepages/template-kit/fixtures Resolve one direct-bound source field against a FactsView, using
scenarioFactsView @homepages/template-kit/fixtures Convenience wrapper — projects Facts from the named scenario in scenarios.
FixtureSpec @homepages/template-kit/fixtures One fixture in authoring, built up by scenario() and its refiners (.at()/.override()).
hydrateIslands @homepages/template-kit/island-runtime Hydrate every island marker under options.root (default: the whole document) into its own React root, loading each one’s module through options.load.
islandsCaptureReady @homepages/template-kit/island-runtime Settles when every handle has MOUNTED and every capture hold has been released — the whole readiness a capture host publishes under the capturer’s readiness global.
takeCaptureHold @homepages/template-kit/island-runtime Take one capture hold.
unmountIslands @homepages/template-kit/island-runtime Unmount every island hydrated under root.
buildLeadBody @homepages/template-kit/browser Serialize the ingest request body.
captureSource @homepages/template-kit/browser Read attribution from a referrer, a query string, and the current URL.
hmacHex @homepages/template-kit/browser HMAC-SHA256 a message with a hex-encoded secret, returning the signature as lowercase hex.
readSiteConfig @homepages/template-kit/browser Read the per-site config a published page embeds as #tr-site-config.
signedIngestHeaders @homepages/template-kit/browser The signed header set every ingest request carries: X-Signature = hex(hmac_sha256(siteSecret, ${unixSeconds}.${body})).
submitLead @homepages/template-kit/browser Submit a lead to HomePages.
Symbol Import from Summary
ATTR_ISLAND_FRAMELESS @homepages/template-kit, @homepages/template-kit/island-runtime Present on a marker holding no server-rendered output — the island mounts fresh instead of hydrating.
ATTR_ISLAND_ID @homepages/template-kit, @homepages/template-kit/island-runtime Island id on the marker: unique in the document, stable across re-renders of the same island.
ATTR_ISLAND_KEY @homepages/template-kit, @homepages/template-kit/island-runtime Island key on the marker: <section-key>:<ComponentName>, e.g. spw-essential/floorplan:UnitFilter.
ATTR_ISLAND_PROPS @homepages/template-kit, @homepages/template-kit/island-runtime On the JSON <script> sibling; its value is the island id of the marker the props belong to.
ATTR_SECTION_INSTANCE_ID @homepages/template-kit Per-section-instance identity on the section root.
ATTR_SLOT_FIELD @homepages/template-kit The field name of one row field inside a record item — the fourth and last dimension of slot identity, (instance, slot, item?, field?).
ATTR_SLOT_GROUP @homepages/template-kit The shared container of a set of slots edited as one unit ({...group.g}).
ATTR_SLOT_ID @homepages/template-kit The element an editable slot’s value was rendered on ({...slot.x}).
ATTR_SLOT_ITEM @homepages/template-kit Zero-based index of one item inside a collection slot ({...slot.x.item(i)}) — the per-item handle for a record-item list.
ATTR_SLOT_TEXT_LEAF @homepages/template-kit The element whose text content IS the slot’s value ({...slot.x.text}).
ATTR_SLOT_UNSELECTABLE @homepages/template-kit Presence flag on a marked element declaring it a non-selectable rendering.
ATTR_TR_ENHANCE @homepages/template-kit Opt-in hook telling an enhancer to attach to this element.
CAPTURE_HAS_ISLANDS_EXPRESSION @homepages/template-kit The in-page test for “this page ships islands” — the presence of one island marker.
CAPTURE_ISLAND_PAINT_GRACE_EXPRESSION @homepages/template-kit The in-page tail of the island settle: the paint-grace beat, then one requestAnimationFrame tick so the frames it bought are flushed to the compositor before the shot.
CAPTURE_ISLAND_PAINT_GRACE_MS @homepages/template-kit The paint-grace beat after quiescence: an engine that has all its bytes is still animating them in (a map’s tile and symbol fades are ~300ms), and those frames are the difference between the artifact and a half-transparent one.
CAPTURE_ISLAND_QUIET_WINDOW_MS @homepages/template-kit How long the page must produce no request activity before the network is called quiescent.
CAPTURE_ISLAND_SETTLE_TIMEOUT_MS @homepages/template-kit The ceiling on each widened-settle leg.
CAPTURE_ISLANDS_READY_EXPRESSION @homepages/template-kit The in-page expression for the hydration leg: await the host’s readiness promise.
CAPTURE_ISLANDS_READY_GLOBAL @homepages/template-kit The window property an island-bearing page’s host publishes: a promise that settles when every island the host set out to hydrate has mounted.
CAPTURE_READY_EXPRESSION @homepages/template-kit The in-page expression a capturer awaits after {@link CAPTURE_WAIT_UNTIL} before shooting.
CAPTURE_WAIT_UNTIL @homepages/template-kit The navigation wait a capturer passes to its browser driver.
COLLECTIONS @homepages/template-kit The registry of fact array fields a slot may be collection-bound to (a slot is collection-bound iff source.kind === "direct" and source.field is a key here).
CONTENT_CATEGORIES @homepages/template-kit The closed v1 category keys, in display order.
CONTENT_CATEGORY_LABELS @homepages/template-kit User-facing display label per category key.
CONTENT_SLOT_TYPES @homepages/template-kit Standard content slot types — AI-fillable or user-editable freeform.
Decision @homepages/template-kit The closed set of fill decisions a section’s fill spec may declare, one member per decision type (image-assign, text-block, list-fill, display-select, …).
DECISION_TYPES @homepages/template-kit The catalog of AI fill decision types — every kind of decision a section’s fill spec may declare.
DisplayDef @homepages/template-kit A section’s serialized meta.display: visibility and variant, each an optional select-shaped entry.
DocumentFormatSchema @homepages/template-kit Zod twin of DocumentFormat: a strict union, so a mixed physical/pixel object or a pixel sheet carrying dpi/bleed matches no branch.
EDITOR_BRIDGE_PROP @homepages/template-kit, @homepages/template-kit/island-runtime The window property an editor canvas publishes its {@link EditorBridge} on.
EDITOR_BRIDGE_PROTOCOL @homepages/template-kit, @homepages/template-kit/island-runtime The bridge protocol this runtime speaks.
fact @homepages/template-kit Where a slot’s value comes from, addressed as fact.<container>.<field>.
FillSpec @homepages/template-kit A section’s whole authored fill spec: the fact paths it reads (defaults to [] when omitted) plus its ordered decisions.
FontTokenSchema @homepages/template-kit A fonts token: a raw CSS stack, or an entry the kit compiles into faces + a stack.
FRAME_ROOT_CLASS @homepages/template-kit The frame shell’s root class — the static half of the frame contract, laid out and clipped by the authoring kit’s base stylesheet.
ImageFormatSchema @homepages/template-kit Zod twin of ImageFormat.
ISLAND_CAPTURE_HOLDS_GLOBAL @homepages/template-kit, @homepages/template-kit/island-runtime The window property holding the page’s OPEN capture holds, as a Set<Promise<void>>.
ISLAND_ELEMENT @homepages/template-kit, @homepages/template-kit/island-runtime The custom element wrapping an island’s server-rendered output.
KIT_VERSION @homepages/template-kit The published version of this kit.
LINK_KINDS @homepages/template-kit The single source of truth for “what kind of link is this URL”.
LINK_PROVIDERS @homepages/template-kit The catalog of recognized link providers, keyed by provider id.
LINK_STRATEGIES @homepages/template-kit How a link provider’s metadata (title, thumbnail, duration, …) can be fetched for a pasted link, or "none" when the provider publishes nothing fetchable.
list @homepages/template-kit The list slot — one primitive for everything multi-item.
presets @homepages/template-kit The v1 preset library, exported from the kit root.
REF_SLOT_TYPES @homepages/template-kit Reference slot types — a slot type bound via the source axis / baked from facts rather than authored/AI-filled.
REFERRAL_FIELDS @homepages/template-kit Referral-provider field names a slot may bind to via source.kind:"direct" on a named property-level referral (v1: "primary_contact").
REFERRAL_IMAGE_FIELDS @homepages/template-kit The subset of REFERRAL_FIELDS whose slot type is image rather than scalar text — a baked value for these is an ImageValue, not a string.
RESERVED_FORMAT_VARIANT_NAMES @homepages/template-kit Variant names a format id may not shadow: Tailwind’s built-ins — its default breakpoints (which the kit leaves untouched), its static variants, and the roots of its functional variants (group-*, data-*, …).
ROOT_PAGE_PATH @homepages/template-kit The root page’s path.
SectionMeta @homepages/template-kit Zod schema for a section’s meta: presentation and structural facts kept separate from the content slots — display name, in-page anchor id, sidebar groups, and the display block owning section visibility and variant.
SectionSchema @homepages/template-kit Zod schema for a section’s full authored schema.ts declaration: meta, its slots record, and a build-derived slot_order never written by an author directly.
Slot @homepages/template-kit The slot-authoring namespace: one component per slot kind, each rendering its value and marking it for the editor, plus Slot.Group — the unit container of a declared schema group or one collection row.
SLOT_TYPE_DESCRIPTORS @homepages/template-kit The per-slot-type anchor: one entry per slot type declaring that type’s type-specific Zod field shape and its fresh default runtime value.
SLOT_TYPES @homepages/template-kit Every slot type, content and reference combined.
SlotDef @homepages/template-kit The Zod discriminated union validating an authored slot definition, built from SLOT_TYPE_DESCRIPTORS.
SlotGroupDef @homepages/template-kit A first-class sidebar grouping: collapses its member slots into one editor card.
SOURCE_FIELDS @homepages/template-kit The catalog of every canonical field a slot’s direct source may bind to — property, unit, and contact scalars, plus the read-only array sources (units, contacts).
TemplateManifest @homepages/template-kit Zod schema for the object a template’s template.ts builds via defineTemplate: a discriminated union on output, the artifact class.
text @homepages/template-kit The text slot, sized by the member you pick: text.short / .medium / .long.
TokenNameSchema @homepages/template-kit Validates a design-token name: kebab-case, [a-z0-9] groups separated by single hyphens.
TokenThemeSchema @homepages/template-kit Validates a template’s design-token declaration: the colors/fonts/type/radii/shadows/layout token groups, an optional font-loading block, and the document defaults (which font/color/background/font-size dress body).
VIDEO_SOURCES @homepages/template-kit Where a video’s bytes live: "upload" is a transcoded rendition served directly; "link" is a provider embed whose bytes are never served locally.
WebsiteFormatSchema @homepages/template-kit Zod twin of {@link WebsiteFormat}: identity only, geometry rejected.
AuthoredCanvas @homepages/template-kit One canvas as canvas() builds it — its id is supplied by composeCanvases’s object key.
AuthoredTemplate @homepages/template-kit A built template: its scope (→ catalog.template.visibility plus its grant set), its validated manifest (→ composition), and the reconcile rules + site-instance map compiled into the template logic bundle.
CaptureSettleHost @homepages/template-kit The browser-driver seam {@link settleCapture} needs, as the two capabilities it actually uses.
CaptureViewport @homepages/template-kit A browser-engine viewport: whole CSS px plus the capture multiplier.
ChosenRows @homepages/template-kit Rows the model originates by picking from the row’s own select vocabulary — what chooseFrom returns, and the one thing a record list slot’s own fill: may hold.
ComposeEntry @homepages/template-kit One section instance to compose into a template, as authored to composeSections.
ComputeBinding @homepages/template-kit The authoring marker compute() produces — read back by getComputed.
CropConfig @homepages/template-kit Per-slot cropper config the editor reads.
DefineTemplateCommon @homepages/template-kit What every defineTemplate branch shares: identity, scope, rules, intake chrome.
DisplayChoice @homepages/template-kit A meta.display entry’s fill: — the model picks ONE case from the entry’s own declared cases, steered by pick prose.
DisplayEntryInput @homepages/template-kit One meta.display entry as authored under defineSchema’s display: — the declared cases (the FIRST is the default and the failure posture), an optional locked opting the entry out of user switching, and at most one origin as written (source: compute(fn) still a live binding here; defineSchema strips it into the logic bundle exactly as it does a slot’s).
DisplayEntryShape @homepages/template-kit One meta.display entry as consumers read it: declared cases (first = default and failure posture), the user-switch locked opt-out, and at most one origin — a source binding or a fill: { pick } choice.
DisplayInput @homepages/template-kit The authored display: block: section visibility and variant, each an optional entry built by the select(cases, opts) display overload.
DisplayShape @homepages/template-kit The shape of a section’s meta.display block.
DocumentSlotDef @homepages/template-kit The serialized shape the document builder emits — a document-kind SlotDef.
EditorBridge @homepages/template-kit, @homepages/template-kit/island-runtime The one object an editor canvas publishes for islands, on {@link EDITOR_BRIDGE_PROP}.
FormatIdentity @homepages/template-kit What identifies a format independent of its geometry.
FormatVariantSource @homepages/template-kit All this compiler reads of a format.
FrameTokens @homepages/template-kit The three custom properties the frame shell sets on its root, ready to spread into a style.
GroupCard @homepages/template-kit A sidebar grouping card produced by group(...).
ImageSlotDef @homepages/template-kit The serialized shape the image builder emits — an image-kind SlotDef.
IslandEditor @homepages/template-kit, @homepages/template-kit/island-runtime What a "use client" island must declare about its editor-canvas behavior.
IslandMarkerProps @homepages/template-kit Props for {@link IslandMarker}.
IslandModule @homepages/template-kit, @homepages/template-kit/island-runtime The shape a "use client" module must have: a default-exported component, optionally editor.
LinkProvider @homepages/template-kit One entry in LINK_PROVIDERS — how to recognize a pasted URL as belonging to a specific provider, and what kind of link it is.
ListRecordSlotDef @homepages/template-kit The serialized shape list.of emits for a record item — a list-kind SlotDef carrying fields (never element), plus the record-item surface: layout (authored ordering/pairing, flattened to bare rows) and title (the field whose value titles each row).
ListSlotDef @homepages/template-kit The serialized shape list.of emits for a single-slot item — a list-kind SlotDef carrying element (never fields).
NumberSlotDef @homepages/template-kit The serialized shape the number builder emits — a number-kind SlotDef.
PageOptions @homepages/template-kit The optional trailing block of page().
PoiSlotDef @homepages/template-kit The serialized shape the poi builder emits — a poi-kind SlotDef.
PrintPageSize @homepages/template-kit The paper size a print-to-PDF capturer passes to its browser driver.
ReconcileBuilder @homepages/template-kit The { rule, set } bound to one template’s composed sections.
ReconcileContext @homepages/template-kit The arguments a rule() body receives: the current site values (typed to the template’s composed sections, flat across every page) and the same derive-time facts view a compute() callback receives.
ReconcileRule @homepages/template-kit One authored rule: a description (used in failure logs) and its pure function.
ReconcileRuleOptions @homepages/template-kit The declaration block rule() takes between its description and its body.
ResolvedFormatGeometry @homepages/template-kit A format’s resolved rendering geometry.
ResponsiveImage @homepages/template-kit The responsive rendition of one image: a candidate set per format, plus the intrinsic size of its largest rung.
ResponsiveSource @homepages/template-kit One image format’s candidate set within a ResponsiveImage.
RoutedPage @homepages/template-kit A page addressed by a URL path — what the output: "website" branch composes.
SectionInstanceHandle @homepages/template-kit The typed handle composeSections returns for one composed section instance: a SlotRef per declared slot, ready to pass to defineReconcile, defineTemplate, or a cross-section rule.
SelectSlotDef @homepages/template-kit The serialized shape select/select.of emit — a select-kind SlotDef.
SetEdit @homepages/template-kit Replace a slot’s value on one section instance.
SiteInstance @homepages/template-kit compose-key → instance_id, so the interpreter can build the reconcile site view.
SlotReadRef @homepages/template-kit A slot a rule reads, resolved to the section instance that holds it.
SlotRef @homepages/template-kit A section instance’s slot, resolved against that section’s real schema.
TextSlotDef @homepages/template-kit The serialized shape text.short/.medium/.long emit — a text-kind SlotDef.
TourSlotDef @homepages/template-kit The serialized shape the tour builder emits — a tour-kind SlotDef.
UnroutedPage @homepages/template-kit A pathless content surface — a document sheet, an image frame.
UrlSlotDef @homepages/template-kit The serialized shape the url builder emits — a url-kind SlotDef.
UseEditorResult @homepages/template-kit What {@link useEditor} returns.
VideoSlotDef @homepages/template-kit The serialized shape the video builder emits — a video-kind SlotDef.
WebsiteFormat @homepages/template-kit The one geometry-less format: the website branch’s singleton.
AuthoredPage @homepages/template-kit One page as page() builds it — its id is supplied by composePages’s object key.
AuthorImage @homepages/template-kit A raster image the template itself ships — a build-time import of a file under the template’s own assets — resolved to its optimized responsive ladder.
BakedRowValue @homepages/template-kit One row of a record list bound whole-row to a bakeable fact array (source: fact.property.units / fact.property.contacts): the collection’s projected row type (CollectionRowValues[F]), plus any authored (source-less) fields the projection does not already carry, typed from their builders.
BoundSlotValue @homepages/template-kit The value shape a binding holds after bind-time normalization: SlotValue for every kind except a RECORD list, whose bound rows are always the declared-fields row (RowValue) — row normalization keeps the editor-stamped id plus each DECLARED field and drops everything else, so a whole-row-baked slot’s projection-only fields (which SlotValue types on the raw slot value) never survive into a binding.
BuiltDecision @homepages/template-kit A fill builder’s output: the serialized decision object minus id/produces (which extraction supplies from the slot key), tagged with a compile-time-only __kind marker so a slot builder’s fill: parameter can check the decision against that slot’s kind.
CollectionField @homepages/template-kit A collection-bindable field name — one of COLLECTIONS’ keys.
CollectionIdKey @homepages/template-kit A collection’s stable row-identity key — COLLECTIONS[field].idKey.
CollectionOwnership @homepages/template-kit Whether a collection’s rows belong to one property or are shared from a library — COLLECTIONS[field].ownership.
CollectionRowValues @homepages/template-kit The row type each bakeable fact array projects — one entry per collection an record list may bind whole-row (source: fact.property.units / fact.property.contacts).
ComparableRow @homepages/template-kit One comparable property — a recently sold or currently listed home similar to the subject — as the canonical fact bundle carries it.
ComposedCanvas @homepages/template-kit An authored canvas with the id composeCanvases stamped on it from its object key.
ComposedCanvases @homepages/template-kit The keyed canvas handles composeCanvases returns: object key = canvas id, insertion order = canvas bar order.
ComposedPage @homepages/template-kit An authored page with the id composePages stamped on it from its object key.
ComposedPages @homepages/template-kit The keyed page handles composePages returns: object key = page id, and insertion order = artifact order (site map, sheet order, image-set order).
ContactRow @homepages/template-kit One row of a contacts-bound record list, as a renderer receives it: the collection’s projection of one contact card.
ContentCategory @homepages/template-kit One curated category key — the browsing metadata on a format’s identity.
ContentSlotType @homepages/template-kit A standard content slot type — one of CONTENT_SLOT_TYPES.
Coordinates @homepages/template-kit A geocoded point: latitude and longitude.
DecisionKind @homepages/template-kit The serialized decision type discriminant a builder is legal for (its phantom marker).
DecisionType @homepages/template-kit An AI fill decision type — one of DECISION_TYPES.
DeclarableRead @homepages/template-kit One entry of a fill spec’s reads: a readable facts key, or a dotted path beneath one.
DefineTemplateInput @homepages/template-kit The input to defineTemplate, discriminated on output — the artifact class.
DerivedFactRef @homepages/template-kit A slot’s derived binding: a value the section’s own compute() fn produces, keyed by the slot’s own name.
DirectFactRef @homepages/template-kit A slot’s direct binding: the canonical field itself, writable when the catalog gives it a writeback.
DocumentCollectionValue @homepages/template-kit A document list slot’s runtime value: an ordered array of DocumentValue, possibly empty.
DocumentFormat @homepages/template-kit A document format is either a pixel sheet (decks) or a physical print size with a capture dpi and optional bleed.
DocumentSlot @homepages/template-kit Kind-level def type for a document slot — SlotBinding<DocumentSlot> accepts any document slot.
DocumentValue @homepages/template-kit A document slot’s runtime value after resolution: the upload it references plus the metadata a link needs to describe itself.
Edit @homepages/template-kit The edits a reconcile rule may return — today exactly one kind, set.
EditorBridgeSelection @homepages/template-kit, @homepages/template-kit/island-runtime The current canvas selection as the bridge carries it: document-wide, section instance identity included.
EditorSelection @homepages/template-kit, @homepages/template-kit/island-runtime What useEditor hands an island author: the selection scoped to the island’s own section instance.
FactNamespace @homepages/template-kit The shape of fact: one branch per source-field container (property, unit, contact), each holding an entry for every canonical field in that container plus one per declared alias.
Facts @homepages/template-kit The derive-time view a compute((f) => …) callback’s parameter is bound to — a mapped type over the fact graph registry.
FactsAddress @homepages/template-kit The structured address at property.address.
FactsContact @homepages/template-kit One full contact card of property.contacts (and the shape of the primary contact), spelled as fact.contact.* spells it.
FactsDocument @homepages/template-kit One attachable document of the documents pool.
FactsDocumentNote @homepages/template-kit One distilled document-notes entry of the document_notes pool.
FactsFloorPlan @homepages/template-kit One detected floor plan of the floor_plans pool, with its per-unit assignments.
FactsNarrative @homepages/template-kit The always-on narrative at narrative.
FactsPhoto @homepages/template-kit One property photo of the photos pool.
FactsTour @homepages/template-kit One 3D tour of the tours pool.
FactsUnit @homepages/template-kit One unit row of property.units (and the shape of the primary unit).
FactsVideo @homepages/template-kit One video candidate of the videos pool — a hosted upload or a pasted provider link.
FieldBinding @homepages/template-kit One field of one row of a record list — the fourth dimension of slot identity.
FillSpecShape @homepages/template-kit The parsed/materialized shape of FillSpec — what an extracted spec resolves to.
FloorplanAssignment @homepages/template-kit One floor plan attached to a unit, in the fixture/render-time view.
FontFile @homepages/template-kit One file of a family: exactly one @font-face rule, with nothing inferred.
FontToken @homepages/template-kit One fonts token.
FrameConfig @homepages/template-kit Render/cropper-shared frame geometry for an image or video slot.
GroupBinding @homepages/template-kit One declared group’s binding — the id {@link SlotGroup} derives its data-slot-group marker from.
GroupBindingMap @homepages/template-kit The bindings bindGroups returns for a section schema — one {@link GroupBinding} keyed by each declared group’s literal id.
ImageCollectionValue @homepages/template-kit An image list slot’s runtime value: an ordered array of ImageValue, possibly empty.
ImageFormat @homepages/template-kit An image format renders at exactly its output pixels.
ImageSlot @homepages/template-kit Kind-level def type for an image slot — SlotBinding<ImageSlot> accepts any image slot.
ImageValue @homepages/template-kit An image slot’s runtime value after resolution: url/alt plus optional re-edit state (rect, ar, crop_key) carried for the cropper, never rendered directly.
IslandComponent @homepages/template-kit, @homepages/template-kit/island-runtime A client component’s own prop type is the author’s business — island props are validated at runtime (serializeIslandProps), not through this alias, and a narrower type here would reject every real component through parameter contravariance.
IslandEditorOptions @homepages/template-kit, @homepages/template-kit/island-runtime The RUNTIME’s tolerant view of IslandEditor — every field optional, live included.
IslandProps @homepages/template-kit, @homepages/template-kit/island-runtime Props handed from a server-rendered Renderer to a client component.
IslandServerFrame @homepages/template-kit, @homepages/template-kit/island-runtime The type an island’s optional serverFrame declaration is checked against, read together with that island’s own editor declaration.
ItemBinding @homepages/template-kit One item of a list slot: the list’s identity, the item’s index — which is also its data-slot-item value — and its raw runtime value.
LayoutRow @homepages/template-kit One layout row: a slot key (full-width) or a [a, b] 2-up pair, keyed to real slots.
LinkKind @homepages/template-kit A link kind — one of LINK_KINDS.
LinkProviderId @homepages/template-kit A registered link provider’s id — a key of LINK_PROVIDERS.
LinkStrategy @homepages/template-kit How a link provider’s metadata can be fetched — one of LINK_STRATEGIES.
ListFieldSlot @homepages/template-kit The slot kinds legal as a record item’s field — any value primitive, or a field-level list whose own item is a single non-record slot.
ListItemSlot @homepages/template-kit The slot kinds legal as a list’s single item — any value primitive, never a list and never a record.
ListSlot @homepages/template-kit Kind-level def type for a list slot — the item is element (a single primitive) XOR fields (a record of slots).
Narrative @homepages/template-kit The property’s always-on prose description — the substrate every text decision is grounded in, and a fact a compute() reads directly.
NavPage @homepages/template-kit One entry of nav.pages — what a menu-building renderer needs and nothing more.
NumberSlot @homepages/template-kit Kind-level def type for a number slot — SlotBinding<NumberSlot> accepts any number slot.
PhysicalLength @homepages/template-kit A physical page dimension: a number immediately followed by the unit, “in” or “mm” ("8.5in", "210mm").
PicturePlan @homepages/template-kit The <picture> markup plan the Image primitive renders from: an ordered list of <source> specs plus the trailing <img>’s own srcset/sizes/dimensions.
PictureSourceSpec @homepages/template-kit One <source> element’s attributes within a PicturePlan.
PlaybackConfig @homepages/template-kit Author-declared playback behavior for a video slot, referenced from the slot’s playback field and passed to <Video playback>.
PoiPhoto @homepages/template-kit Photo metadata for one point of interest — dimensions and attribution, never image bytes.
PoiRow @homepages/template-kit One point of interest — a nearby place (a school, park, coffee shop, transit stop, …) identified by Google Places, with its location and whatever enrichment fields Places returned for it.
PoiSlot @homepages/template-kit Kind-level def type for a poi slot — one platform-built place; SlotBinding<PoiSlot> accepts any poi slot.
PropertyFacts @homepages/template-kit The fixture/render-time view of a property that this repo’s scenarios, tests, and fixture helpers are authored against.
ReferralField @homepages/template-kit A referral field name — one of REFERRAL_FIELDS.
ReferralImageField @homepages/template-kit A referral field whose slot type is image — one of REFERRAL_IMAGE_FIELDS.
RefSlotType @homepages/template-kit A reference slot type — one of REF_SLOT_TYPES.
ResolvedFixture @homepages/template-kit One fixture ready to pass as a Renderer’s props — one already-resolved entry of a ResolvedFixtureModule, carrying its own provenance.
ResolvedFixtureModule @homepages/template-kit A fixtures.ts module: the branded output of building fixtures from a scenario, where every slot in base and each named entry of states already carries the value the fill pipeline would bake, plus a SlotProvenance tag per slot.
RowBinding @homepages/template-kit The field bindings for one row: one per field the row’s fields record declares.
RowOrigination @homepages/template-kit How a collection’s rows come into existence — the emitted decision’s rows: axis.
RowValue @homepages/template-kit One row of a record list slot, derived from the declared fields record: the editor-stamped id — which every persisted row carries though fields never declares it — plus each declared field typed by its own definition.
SectionLayoutEntry @homepages/template-kit A section-level layout entry: a bare row or a group(...) card.
SectionMetaShape @homepages/template-kit The authored input shape of SectionMeta.
SectionNav @homepages/template-kit The build-injected navigation input a section Renderer receives alongside slots and options.
SectionProps @homepages/template-kit The full renderer prop type derived from a section’s schema: slots, the build-injected nav, and the stored variant case (the union of the declared display.variant cases, or plain string when the section declares none).
SectionSchemaResolved @homepages/template-kit The flat shape a section schema resolves to at materialization: meta’s anchor/groups/display lifted to the top level — the serialized shape every downstream contract and consumer reads.
SectionSchemaShape @homepages/template-kit The authored input shape of SectionSchema — what as const satisfies SectionSchemaShape checks a section’s schema.ts against.
SelectSlot @homepages/template-kit Kind-level def type for a select slot — SlotBinding<SelectSlot> accepts any select slot.
SiteValues @homepages/template-kit The erased page shape a STORED rule’s fn is typed against — a general view the interpreter builds at runtime.
SiteView @homepages/template-kit The runtime read-view a rule receives: ONE FLAT compose-key namespace spanning every page (site.<composeKey>.<slot>), each entry holding that instance’s current slot values.
SlotBinding @homepages/template-kit One slot: its id, the definition the section declared for it, and its runtime value.
SlotBindingMap @homepages/template-kit The map bindSlots returns: one binding per declared slot, keyed by slot id.
SlotGroupDefShape @homepages/template-kit The authored input shape of SlotGroupDef, as an entry in SectionMeta.groups.
SlotProvenance @homepages/template-kit, @homepages/template-kit/fixtures How one resolved slot value was obtained: a verbatim direct fact ("fact"), a derived transform ("computed"), an author-stated literal ("authored"), or a per-fixture override ("override").
SlotSource @homepages/template-kit Where a slot’s value comes from: the direct literal a fact.* entry emits into a builder’s source, or the derived literal defineSchema rewrites a compute() binding to — whose transform is always the slot’s own key.
SlotType @homepages/template-kit A slot’s declared type — one of SLOT_TYPES.
SlotValue @homepages/template-kit Maps one slot definition (as authored under a section schema’s slots) to the runtime value shape a renderer receives at props.slots[<key>], as normalized by the binding layer.
SourceFieldContainer @homepages/template-kit Where in the property fact graph a SOURCE_FIELDS entry’s value lives: the property root, a unit row, or a contact card.
SourceFieldDescriptor @homepages/template-kit One canonical field a direct source may bind to — a value of SOURCE_FIELDS.
SourceFieldName @homepages/template-kit A canonical field name a direct source may bind to — a key of SOURCE_FIELDS.
SourceFieldValueType @homepages/template-kit The value shape a direct-source field carries.
TemplateCanvasShape @homepages/template-kit One canvas of a parsed TemplateManifest: an editing surface and the page ids it presents.
TemplateManifestShape @homepages/template-kit The parsed/materialized shape of TemplateManifest: the union across artifact classes.
TemplatePageShape @homepages/template-kit One page of a parsed website-branch TemplateManifest — the routed form, with path.
TemplateScope @homepages/template-kit Who a template is offered to.
TextSlot @homepages/template-kit Kind-level def type for a text slot — SlotBinding<TextSlot> accepts any text slot.
TextStructure @homepages/template-kit The prose shape a text-block decision asks the model to generate.
TokenTheme @homepages/template-kit A validated design-token declaration — the parsed shape {@link compileThemeToCss} compiles.
TourCollectionValue @homepages/template-kit A tour list slot’s runtime value: an ordered array of TourValue, possibly empty.
TourSlot @homepages/template-kit Kind-level def type for a tour slot — SlotBinding<TourSlot> accepts any tour slot.
TourValue @homepages/template-kit A 3D-tour slot’s runtime value after resolution.
UnitRow @homepages/template-kit One property unit in the fixture/render-time view: its scalar facts plus its AI-generated description/features — baked into content by the floorplan section’s per-unit fill decision, not aggregated from any canonical field — and its attached floor_plans.
UrlSlot @homepages/template-kit Kind-level def type for a url slot — SlotBinding<UrlSlot> accepts any url slot.
ValueBinding @homepages/template-kit What every value primitive accepts: a top-level slot binding OR a row-field binding.
VideoCollectionValue @homepages/template-kit A video list slot’s runtime value: an ordered array of VideoValue, possibly empty.
VideoSlot @homepages/template-kit Kind-level def type for a video slot — SlotBinding<VideoSlot> accepts any video slot.
VideoSource @homepages/template-kit A video’s storage/origin kind — one of VIDEO_SOURCES.
VideoValue @homepages/template-kit A video slot’s runtime value after resolution.
WritebackTarget @homepages/template-kit Where a writable SOURCE_FIELDS entry’s edited value is written back to — the target a slot’s “Update everywhere” action updates.
DEV_TOURS @homepages/template-kit/fixtures The dev tour pool.
forRentCondo @homepages/template-kit/fixtures The rent-branch {@link Scenario}: a for-rent condo/townhome unit leased through a two-person team — one unit, two contacts, mid-density points of interest, and partial media (video present, no 3D tour).
luxuryMultiUnit @homepages/template-kit/fixtures The rich reference {@link Scenario}: a 12-unit multi-family, for-sale property with a 3-agent team, dense points of interest, and high media volume (both video and a 3D tour).
media @homepages/template-kit/fixtures Typed references into the dev media pack, for fixture authoring: media.photo(id) references a pack image asset (photo, floor plan, or library graphic); media.video(id) a hosted video; media.video.link(url, provider?, { poster? }) a provider embed, optionally with a pack image as its poster; media.video.none the deliberately-unfilled video branch; media.tour(id) a pooled 3D tour and media.tour.none the unfilled one; media.document(id) a pack document.
scenarios @homepages/template-kit/fixtures Every shipped scenario, keyed by {@link ScenarioKey}.
sparseSingleFamily @homepages/template-kit/fixtures The minimal-but-present {@link Scenario}: a single-family for-sale home listed by a solo agent — one unit, one contact, no video or 3D tour.
DevTour @homepages/template-kit/fixtures One tour in the dev pool.
AmenityItem @homepages/template-kit/fixtures One amenity category row.
BakedRowsFactory @homepages/template-kit/fixtures The schema-bound bakedRows a defineFixtures build callback receives alongside scenario: the rows a whole-row-baked record list resolves to for one scenario, produced by the same projection the runtime bake uses.
ContactFixture @homepages/template-kit/fixtures One attached-contact card fixture — an agent library item a scenario carries.
DocumentFixture @homepages/template-kit/fixtures One document a listing carries, as a fixture states it: a dev media pack asset id plus the prose distilled out of the file.
DocumentRef @homepages/template-kit/fixtures A document slot’s fixture value: a dev media pack asset reference.
FactsView @homepages/template-kit/fixtures The self-contained fact-graph shape the resolver functions in this module read — a scenario’s facts projected down to only what direct resolution needs, with contacts normalized to flat, nullable string fields.
FixtureModuleSpec @homepages/template-kit/fixtures The fixture module a build callback returns: the section’s base fixture, plus any named states.
HostedVideoRef @homepages/template-kit/fixtures A hosted video’s fixture value: a dev media pack asset reference.
LinkVideoRef @homepages/template-kit/fixtures A link-sourced video’s fixture value.
MediaFixture @homepages/template-kit/fixtures A scenario’s video/3D-tour facts.
NoVideoRef @homepages/template-kit/fixtures The deliberately-unfilled video fixture value.
PhotoFixture @homepages/template-kit/fixtures A gallery/hero photo fixture.
PhotoRef @homepages/template-kit/fixtures An image slot’s fixture value: a dev media pack asset reference.
PoiFixture @homepages/template-kit/fixtures A neighborhood point of interest a scenario carries, grouped by category.
PoiPhotoFixture @homepages/template-kit/fixtures A POI’s photo as a fixture states it: a dev media pack asset id plus the metadata a real row persists.
PropertyMetrics @homepages/template-kit/fixtures Numeric and formatted figures propertyMetrics derives from a scenario’s units and address.
Scenario @homepages/template-kit/fixtures One complete, self-consistent property-facts dataset an author picks per fixture.
ScenarioFactory @homepages/template-kit/fixtures The schema-bound scenario a defineFixtures build callback receives: it starts one {@link FixtureSpec} from a scenario, authoring that section’s non-source-bound slots.
ScenarioKey @homepages/template-kit/fixtures The id of one shipped {@link Scenario}.
TourAssetId @homepages/template-kit/fixtures Every id the dev tour pool ships — the compile-checked media.tour(…) domain.
TourRef @homepages/template-kit/fixtures A tour slot’s fixture value: a dev tour pool reference.
VideoFixture @homepages/template-kit/fixtures One video candidate as a fixture states it — a hosted upload or a pasted provider link.
VideoFixtureRef @homepages/template-kit/fixtures Every value a video slot accepts in a fixture: hosted, link, or none.
VideoLinkFixture @homepages/template-kit/fixtures A pasted provider link’s fixture row.
VideoUploadFixture @homepages/template-kit/fixtures A hosted video’s fixture row: a dev media pack asset the platform serves itself.
ATTR_SECTION_INSTANCE_ID @homepages/template-kit/island-runtime The host-stamped section-root attribute the loader scopes each island’s editor instance by.
HydrateIslandsOptions @homepages/template-kit/island-runtime Options for {@link hydrateIslands}.
IslandContext @homepages/template-kit/island-runtime What the loader knows about one island once its module has loaded.
IslandHandle @homepages/template-kit/island-runtime Alias of {@link IslandContext} — what hydrateIslands returns one of per hydrated island.
LeadInput @homepages/template-kit/browser The contact details a lead carries.
LeadSource @homepages/template-kit/browser Source attribution for the owner-facing leads inbox.
SiteConfig @homepages/template-kit/browser The per-site config a published page embeds, read back by {@link readSiteConfig}.
SubmitLeadOptions @homepages/template-kit/browser Options for {@link submitLead}.
SubmitLeadFailure @homepages/template-kit/browser Why {@link submitLead} did not succeed: no email was given, an identical submission is already in flight, the serialized body exceeds the ingest size limit, the site’s credentials were rejected (401), the request was otherwise rejected, or every attempt failed on the network / a 5xx.
SubmitLeadResult @homepages/template-kit/browser The outcome of a {@link submitLead} call.