Skip to content
HomePagesHomePages template kit

DefineTemplateInput

The input to `defineTemplate`, discriminated on `output` — the artifact class.

The input to defineTemplate, discriminated on output — the artifact class. Each branch accepts only its own page form (routed for website, unrouted for the rendered classes) and only its own format class, so a routed postcard page, a pathless website page, or a cross-class format mix fails to compile rather than to validate. The website formats singleton is exactly presets.website; a rendered template declares one or more of its class’s formats — the acceptance set the picker offers. A design spanning classes is two templates sharing sections.

Import from @homepages/template-kit.

export type DefineTemplateInput = DefineTemplateCommon & ({
readonly output: "website";
readonly formats: readonly [
WebsiteFormat
];
readonly pages: ComposedPages<RoutedPage>;
readonly canvases?: ComposedCanvases;
} | {
readonly output: "image";
readonly formats: readonly [
ImageFormat,
...ImageFormat[]
];
readonly pages: ComposedPages<UnroutedPage>;
readonly canvases?: ComposedCanvases;
} | {
readonly output: "document";
readonly formats: readonly [
DocumentFormat,
...DocumentFormat[]
];
readonly pages: ComposedPages<UnroutedPage>;
readonly canvases?: ComposedCanvases;
});