Add the Monolith and Cobalt Stripe templates

Standalone layouts for reference templates 3 and 8, with the user's logo sized to the
placeholder box, a CapRule decor primitive, optional TableRows rule/heading options,
and a separate 1..45-row sweep test file.
This commit is contained in:
2026-10-04 11:25:19 +05:30
parent 4cea3fdd8e
commit dd85c3b3c5
26 changed files with 2795 additions and 37 deletions
+4 -1
View File
@@ -5,7 +5,7 @@
export interface TemplateCatalogEntry {
id: string;
name: string;
family: "classic" | "neutral" | "ledger" | "band" | "northline";
family: "classic" | "neutral" | "ledger" | "band" | "northline" | "standalone";
/** Static PNG from /public, written by scripts/thumbnails.mjs (sample data, not the user's invoice). */
thumbnail: string;
badge?: "Matches your original format";
@@ -19,6 +19,7 @@ export const FAMILY_LABELS: Record<TemplateCatalogEntry["family"], string> = {
ledger: "Ledger",
band: "Band",
northline: "Northline",
standalone: "Standalone",
};
/** Picker order: Classic first, Linea (the vendor's original format) second. */
@@ -33,6 +34,8 @@ export const TEMPLATE_CATALOG: readonly TemplateCatalogEntry[] = [
{ id: "teal-swoosh", name: "Teal Swoosh", family: "band", thumbnail: "/templates/teal-swoosh.png" },
{ id: "purple-pop", name: "Purple Pop", family: "northline", thumbnail: "/templates/purple-pop.png", logoOptIn: true },
{ id: "citrus-split", name: "Citrus Split", family: "northline", thumbnail: "/templates/citrus-split.png" },
{ id: "monolith", name: "Monolith", family: "standalone", thumbnail: "/templates/monolith.png" },
{ id: "cobalt-stripe", name: "Cobalt Stripe", family: "standalone", thumbnail: "/templates/cobalt-stripe.png" },
];
/** The entry for an id; an unknown id falls back to Classic, like getTemplate. */