From 92ce897fca927355e6f80c320ad169c4476d8cfe Mon Sep 17 00:00:00 2001 From: DemchaAV Date: Sat, 30 May 2026 03:20:52 +0100 Subject: [PATCH 1/2] feat(cv-v2): add Mint Editorial colour Options + banded masthead MintEditorial and MintEditorialLetter gain an Options colour API (accentColor, ruleColor, nameColor, headerBandColor) whose defaults reproduce the stock render exactly. headerBandColor paints a full-page-width header band from the top page edge down to the masthead rule, drawn page-1 only via a CanvasLayerNode so it costs no flow height and the CV stays two pages. The masthead-band geometry is pinned to measured constants, now guarded by smoke tests asserting the default masthead position and the banded-vs-bandless footprint stay in sync. --- .../cv/v2/CvMintEditorialCustomExample.java | 61 ++++ .../v2/presets/MintEditorialLetter.java | 241 +++++++++++-- .../cv/v2/presets/MintEditorial.java | 327 ++++++++++++++++-- .../cv/v2/presets/MintEditorialSmokeTest.java | 98 ++++++ 4 files changed, 685 insertions(+), 42 deletions(-) create mode 100644 examples/src/main/java/com/demcha/examples/templates/cv/v2/CvMintEditorialCustomExample.java diff --git a/examples/src/main/java/com/demcha/examples/templates/cv/v2/CvMintEditorialCustomExample.java b/examples/src/main/java/com/demcha/examples/templates/cv/v2/CvMintEditorialCustomExample.java new file mode 100644 index 00000000..fd2a9e79 --- /dev/null +++ b/examples/src/main/java/com/demcha/examples/templates/cv/v2/CvMintEditorialCustomExample.java @@ -0,0 +1,61 @@ +package com.demcha.examples.templates.cv.v2; + +import com.demcha.compose.GraphCompose; +import com.demcha.compose.document.api.DocumentPageSize; +import com.demcha.compose.document.api.DocumentSession; +import com.demcha.compose.document.style.DocumentColor; +import com.demcha.compose.document.templates.api.DocumentTemplate; +import com.demcha.compose.document.templates.cv.v2.data.CvDocument; +import com.demcha.compose.document.templates.cv.v2.presets.MintEditorial; +import com.demcha.examples.support.ExampleDataFactory; +import com.demcha.examples.support.ExampleOutputPaths; + +import java.nio.file.Path; + +/** + * Renders the Mint Editorial CV against the rich "Rose Harris" showcase + * dataset with a single custom colour via + * {@link MintEditorial.Options} — a soft kraft-paper header band that fills + * the whole masthead zone from the top page edge down to the mint rule. Only + * {@code headerBandColor} is set; everything else stays default, so the dark + * name, mint tagline, and mint full-width rule are unchanged and read cleanly + * on the light tan band. This demonstrates the colour-customisation API; the + * default-coloured render lives in {@code CvMintEditorialExample} and is left + * untouched. + * + *

Output: + * {@code examples/target/generated-pdfs/templates/cv/cv-mint-editorial-v2-custom.pdf}.

+ */ +public final class CvMintEditorialCustomExample { + + private CvMintEditorialCustomExample() { + } + + public static Path generate() throws Exception { + Path outputFile = ExampleOutputPaths.prepare( + "templates/cv", "cv-mint-editorial-v2-custom.pdf"); + CvDocument doc = ExampleDataFactory.mintEditorialShowcaseCv(); + + // Set ONLY the header band colour — a soft warm kraft-paper tan. Every + // other knob stays default: dark ink name, mint tagline, mint + // full-width rule. The dark name reads cleanly on the light tan band. + MintEditorial.Options options = MintEditorial.Options.builder() + .headerBandColor(DocumentColor.rgb(228, 217, 198)) // kraft-paper tan band + .build(); + DocumentTemplate template = MintEditorial.create(options); + + float m = (float) MintEditorial.RECOMMENDED_MARGIN; + try (DocumentSession document = GraphCompose.document(outputFile) + .pageSize(DocumentPageSize.A4) + .margin(m, m, m, m) + .create()) { + template.compose(document, doc); + document.buildPdf(); + } + return outputFile; + } + + public static void main(String[] args) throws Exception { + System.out.println("Generated: " + generate()); + } +} diff --git a/src/main/java/com/demcha/compose/document/templates/coverletter/v2/presets/MintEditorialLetter.java b/src/main/java/com/demcha/compose/document/templates/coverletter/v2/presets/MintEditorialLetter.java index bd404f49..5e356fcf 100644 --- a/src/main/java/com/demcha/compose/document/templates/coverletter/v2/presets/MintEditorialLetter.java +++ b/src/main/java/com/demcha/compose/document/templates/coverletter/v2/presets/MintEditorialLetter.java @@ -2,7 +2,13 @@ import com.demcha.compose.document.api.DocumentSession; import com.demcha.compose.document.dsl.PageFlowBuilder; +import com.demcha.compose.document.dsl.ParagraphBuilder; import com.demcha.compose.document.dsl.SectionBuilder; +import com.demcha.compose.document.dsl.ShapeBuilder; +import com.demcha.compose.document.node.DocumentNode; +import com.demcha.compose.document.node.ParagraphNode; +import com.demcha.compose.document.node.TextAlign; +import com.demcha.compose.document.style.ClipPolicy; import com.demcha.compose.document.style.DocumentColor; import com.demcha.compose.document.style.DocumentInsets; import com.demcha.compose.document.style.DocumentTextDecoration; @@ -11,6 +17,7 @@ import com.demcha.compose.document.templates.coverletter.v2.components.LetterBody; import com.demcha.compose.document.templates.coverletter.v2.data.CoverLetterDocument; import com.demcha.compose.document.templates.cv.v2.components.CvTextStyles; +import com.demcha.compose.document.templates.cv.v2.components.TextOrnaments; import com.demcha.compose.document.templates.cv.v2.data.CvIdentity; import com.demcha.compose.document.templates.cv.v2.theme.CvTheme; import com.demcha.compose.document.templates.cv.v2.widgets.Headline; @@ -30,6 +37,11 @@ * CV, so the CV and the letter read as one matched set. The CV's two-column * sidebar grids are a CV-body concern and are intentionally not part of the * letter.

+ * + *

The same {@link Options} colour knobs as the paired + * {@link com.demcha.compose.document.templates.cv.v2.presets.MintEditorial} + * preset recolour the letter masthead (accent, rule, name, optional header + * band), with identical defaults so the matched set stays in sync.

*/ public final class MintEditorialLetter { @@ -42,33 +54,140 @@ public final class MintEditorialLetter { /** Recommended symmetric page margin (in points). Matches the CV preset. */ public static final double RECOMMENDED_MARGIN = 48.0; + // Banded-masthead canvas geometry — mirrors the CV preset so the matched + // set's masthead is identical, and reproduces the letter's own DEFAULT + // (bandless) masthead positions so the banded render only adds a fill + // behind an otherwise-unchanged masthead. + + /** Canvas flow footprint (points) — matches the CV masthead footprint. */ + private static final double MASTHEAD_CANVAS_HEIGHT = 143.76; + + /** Canvas-local y (points) of the masthead name — matches the default top. */ + private static final double MASTHEAD_NAME_Y = 48.0; + + /** Canvas-local y (points) of the masthead tagline — matches the default top. */ + private static final double MASTHEAD_TAGLINE_Y = 87.4; + + /** Canvas-local y (points) of the masthead rule — matches the default top. */ + private static final double MASTHEAD_RULE_Y = 123.76; + private MintEditorialLetter() { } - /** Builds the letter with its Mint Editorial theme. */ + /** Builds the letter with its Mint Editorial theme and default colours. */ public static DocumentTemplate create() { - return create(CvTheme.mintEditorial()); + return create(CvTheme.mintEditorial(), Options.defaults()); } /** - * Builds the letter with a caller-supplied theme (share the paired CV's - * theme instance for a guaranteed visual match). + * Builds the letter with a caller-supplied theme and default colours + * (share the paired CV's theme instance for a guaranteed visual match). */ public static DocumentTemplate create(CvTheme theme) { + return create(theme, Options.defaults()); + } + + /** Builds the letter with its Mint Editorial theme and explicit colours. */ + public static DocumentTemplate create(Options options) { + return create(CvTheme.mintEditorial(), options); + } + + /** + * Builds the letter with a caller-supplied theme and explicit colour + * {@link Options}. Pass the same {@code Options} as the paired CV preset + * so the recoloured masthead matches. + */ + public static DocumentTemplate create(CvTheme theme, + Options options) { Objects.requireNonNull(theme, "theme"); - return new Template(theme); + Objects.requireNonNull(options, "options"); + return new Template(theme, options); + } + + /** + * Mint Editorial letter masthead colour knobs — same shape and defaults as + * {@code MintEditorial.Options}. Every {@code null} field reproduces the + * stock render. + * + * @param accentColor mint accent for the tagline; {@code null} → + * {@code theme.palette().banner()} + * @param ruleColor masthead rule colour; {@code null} → the resolved + * {@code accentColor} + * @param nameColor masthead name colour; {@code null} → + * {@code theme.palette().ink()} + * @param headerBandColor optional full-width band behind the masthead; + * {@code null} → no band + */ + public record Options(DocumentColor accentColor, + DocumentColor ruleColor, + DocumentColor nameColor, + DocumentColor headerBandColor) { + + public static Options defaults() { + return new Options(null, null, null, null); + } + + public static Builder builder() { + return new Builder(); + } + + public static final class Builder { + private DocumentColor accentColor; + private DocumentColor ruleColor; + private DocumentColor nameColor; + private DocumentColor headerBandColor; + + private Builder() { + } + + public Builder accentColor(DocumentColor value) { + this.accentColor = value; + return this; + } + + public Builder ruleColor(DocumentColor value) { + this.ruleColor = value; + return this; + } + + public Builder nameColor(DocumentColor value) { + this.nameColor = value; + return this; + } + + public Builder headerBandColor(DocumentColor value) { + this.headerBandColor = value; + return this; + } + + public Options build() { + return new Options(accentColor, ruleColor, nameColor, + headerBandColor); + } + } } private static final class Template implements DocumentTemplate { private final CvTheme theme; private final DocumentColor accent; + private final DocumentColor ruleColor; + private final DocumentColor nameColor; + private final DocumentColor headerBandColor; - Template(CvTheme theme) { + Template(CvTheme theme, Options options) { this.theme = theme; - // Same accent source as the paired CV preset — the palette - // banner slot carries the mint accent. - this.accent = theme.palette().banner(); + // Same accent source + Options defaults as the paired CV preset. + this.accent = options.accentColor() != null + ? options.accentColor() + : theme.palette().banner(); + this.ruleColor = options.ruleColor() != null + ? options.ruleColor() + : this.accent; + this.nameColor = options.nameColor() != null + ? options.nameColor() + : theme.palette().ink(); + this.headerBandColor = options.headerBandColor(); } @Override @@ -97,13 +216,19 @@ public void compose(DocumentSession document, CoverLetterDocument doc) { .spacing(theme.spacing().pageFlowSpacing()); flow.addSection("CoverLetterV2MintEditorialHeader", - section -> addMasthead(section, doc.identity())); - flow.addLine(line -> line - .name("CoverLetterV2MintEditorialHeaderRule") - .horizontal(pageWidth) - .color(accent) - .thickness(theme.spacing().accentRuleWidth()) - .margin(new DocumentInsets(8, -ruleBleed, 14, -ruleBleed))); + section -> addMasthead(section, doc.identity(), pageWidth, + ruleBleed)); + if (headerBandColor == null) { + // Stock masthead rule. In banded mode the rule is drawn flush at + // the band's bottom edge inside the header canvas, so the + // separate flow rule is suppressed (no doubled line). + flow.addLine(line -> line + .name("CoverLetterV2MintEditorialHeaderRule") + .horizontal(pageWidth) + .color(ruleColor) + .thickness(theme.spacing().accentRuleWidth()) + .margin(new DocumentInsets(8, -ruleBleed, 14, -ruleBleed))); + } flow.addSection("CoverLetterV2MintEditorialBody", host -> LetterBody.render(host, doc, theme)); @@ -113,17 +238,93 @@ public void compose(DocumentSession document, CoverLetterDocument doc) { /** * Centred spaced-caps name + mint accent tagline — the identical - * masthead the {@code MintEditorial} CV preset renders, so the - * matched set never forks the header treatment. + * masthead the {@code MintEditorial} CV preset renders, so the matched + * set never forks the header treatment. With default colours and no + * band the output is byte-identical to the pre-Options render. */ - private void addMasthead(SectionBuilder section, CvIdentity identity) { - Headline.spacedCentered(section, identity.name(), theme); + private void addMasthead(SectionBuilder section, CvIdentity identity, + double pageWidth, double ruleBleed) { + if (headerBandColor != null) { + addBandedMasthead(section, identity, pageWidth, ruleBleed); + } else { + addPlainMasthead(section, identity); + } + } + + private void addPlainMasthead(SectionBuilder section, CvIdentity identity) { + // Style-override variant so only the name colour can change. + Headline.render(section, identity.name(), theme, + TextAlign.CENTER, true, mastheadNameStyle()); String jobTitle = identity.jobTitle(); if (jobTitle != null && !jobTitle.isBlank()) { Subheadline.centeredSpacedCaps(section, jobTitle, taglineStyle()); } } + /** + * Banded masthead: the whole masthead zone is one + * {@code CanvasLayerNode} (controlled absolute placement), mirroring the + * paired CV preset. The band fills the canvas (page top edge → rule), + * the canvas is bled to the page edges via negative margins, and the + * rule sits flush at the band's bottom edge. The canvas reserves only + * {@value #MASTHEAD_CANVAS_HEIGHT}pt of flow, so the band adds no extra + * flow height. See {@code MintEditorial.addBandedHeader} for the full + * rationale (including why the band fills the canvas rather than + * overflowing a child upward). + */ + private void addBandedMasthead(SectionBuilder section, + CvIdentity identity, double pageWidth, + double ruleBleed) { + double canvasH = MASTHEAD_CANVAS_HEIGHT; + double ruleThickness = theme.spacing().accentRuleWidth(); + double bandHeight = MASTHEAD_RULE_Y + ruleThickness; + + DocumentNode band = new ShapeBuilder() + .name("CoverLetterV2MintEditorialHeaderBand") + .size(pageWidth, bandHeight) + .fillColor(headerBandColor) + .build(); + DocumentNode rule = new ShapeBuilder() + .name("CoverLetterV2MintEditorialHeaderRule") + .size(pageWidth, ruleThickness) + .fillColor(ruleColor) + .build(); + ParagraphNode name = new ParagraphBuilder() + .name("CoverLetterV2MintEditorialHeaderName") + .text(TextOrnaments.spacedUpper(identity.name().full())) + .textStyle(mastheadNameStyle()) + .align(TextAlign.CENTER) + .build(); + String jobTitle = identity.jobTitle(); + ParagraphNode tagline = jobTitle != null && !jobTitle.isBlank() + ? new ParagraphBuilder() + .name("CoverLetterV2MintEditorialHeaderTagline") + .text(TextOrnaments.spacedUpper(jobTitle)) + .textStyle(taglineStyle()) + .align(TextAlign.CENTER) + .build() + : null; + + section.addCanvas(pageWidth, canvasH, canvas -> { + canvas.name("CoverLetterV2MintEditorialHeaderCanvas") + .clipPolicy(ClipPolicy.OVERFLOW_VISIBLE) + .margin(new DocumentInsets(-ruleBleed, -ruleBleed, 0, + -ruleBleed)) + .position(band, 0.0, 0.0) + .position(rule, 0.0, MASTHEAD_RULE_Y) + .position(name, 0.0, MASTHEAD_NAME_Y); + if (tagline != null) { + canvas.position(tagline, 0.0, MASTHEAD_TAGLINE_Y); + } + }); + } + + private DocumentTextStyle mastheadNameStyle() { + return CvTextStyles.of(theme.typography().headlineFont(), + theme.typography().sizeHeadline(), + DocumentTextDecoration.DEFAULT, nameColor); + } + private DocumentTextStyle taglineStyle() { return CvTextStyles.of(theme.typography().headlineFont(), theme.typography().sizeContact(), diff --git a/src/main/java/com/demcha/compose/document/templates/cv/v2/presets/MintEditorial.java b/src/main/java/com/demcha/compose/document/templates/cv/v2/presets/MintEditorial.java index 4f455289..053422e1 100644 --- a/src/main/java/com/demcha/compose/document/templates/cv/v2/presets/MintEditorial.java +++ b/src/main/java/com/demcha/compose/document/templates/cv/v2/presets/MintEditorial.java @@ -1,12 +1,17 @@ package com.demcha.compose.document.templates.cv.v2.presets; import com.demcha.compose.document.api.DocumentSession; +import com.demcha.compose.document.dsl.PageFlowBuilder; import com.demcha.compose.document.dsl.ParagraphBuilder; import com.demcha.compose.document.dsl.SectionBuilder; +import com.demcha.compose.document.dsl.ShapeBuilder; import com.demcha.compose.document.image.DocumentImageData; import com.demcha.compose.document.node.DocumentLinkOptions; +import com.demcha.compose.document.node.DocumentNode; import com.demcha.compose.document.node.ParagraphNode; +import com.demcha.compose.document.node.ShapeNode; import com.demcha.compose.document.node.TextAlign; +import com.demcha.compose.document.style.ClipPolicy; import com.demcha.compose.document.style.DocumentColor; import com.demcha.compose.document.style.DocumentInsets; import com.demcha.compose.document.style.DocumentStroke; @@ -172,6 +177,35 @@ public final class MintEditorial { /** Expertise badge edge length (points). */ private static final double BADGE_SIZE = 36.0; + // Banded-masthead canvas geometry. These values reproduce the DEFAULT + // (bandless) masthead flow positions exactly — name baseline, tagline + // baseline, and rule y — measured from the stock render at the canonical + // 48pt page margin. The canvas top is bled to the page top edge (y=0) via a + // negative margin, so a canvas-local y equals the page-absolute top edge in + // points; the constants therefore equal the default page-absolute tops. The + // band fills the canvas from y=0 down to the rule's bottom, and the masthead + // (name/tagline/rule) renders at the same positions whether or not a band is + // present — the band only adds a tan fill behind it. + // + // These are package-private (not private) so MintEditorialSmokeTest can + // assert them against the live default masthead positions — see its + // band_constants_match_default_masthead guard, which fails if a future + // typography / spacing / margin change moves the masthead and silently + // invalidates these hand-measured coordinates. + + /** Canvas flow footprint (points) — sized so the page-1 row starts at the + * same y as the default render. */ + static final double MASTHEAD_CANVAS_HEIGHT = 143.76; + + /** Canvas-local y (points) of the masthead name — matches the default top. */ + static final double MASTHEAD_NAME_Y = 48.0; + + /** Canvas-local y (points) of the masthead tagline — matches the default top. */ + static final double MASTHEAD_TAGLINE_Y = 87.4; + + /** Canvas-local y (points) of the masthead rule — matches the default top. */ + static final double MASTHEAD_RULE_Y = 123.76; + private static final String ICON_ROOT = "/templates/cv/mint-editorial/icons/"; private static final Map ICON_CACHE = new ConcurrentHashMap<>(); @@ -195,30 +229,133 @@ public final class MintEditorial { private MintEditorial() { } - /** Builds the preset with its Mint Editorial theme. */ + /** Builds the preset with its Mint Editorial theme and default colours. */ public static DocumentTemplate create() { - return create(CvTheme.mintEditorial()); + return create(CvTheme.mintEditorial(), Options.defaults()); } /** - * Builds the preset with a caller-supplied theme (share the paired - * cover letter's theme instance for a guaranteed visual match). + * Builds the preset with a caller-supplied theme and default colours + * (share the paired cover letter's theme instance for a guaranteed + * visual match). */ public static DocumentTemplate create(CvTheme theme) { + return create(theme, Options.defaults()); + } + + /** + * Builds the preset with its Mint Editorial theme and explicit colour + * {@link Options}. + */ + public static DocumentTemplate create(Options options) { + return create(CvTheme.mintEditorial(), options); + } + + /** + * Builds the preset with a caller-supplied theme and explicit colour + * {@link Options}. Use this to recolour the masthead (accent, rule, + * name, optional header band) without forking the theme. + */ + public static DocumentTemplate create(CvTheme theme, + Options options) { Objects.requireNonNull(theme, "theme"); - return new Template(theme); + Objects.requireNonNull(options, "options"); + return new Template(theme, options); + } + + /** + * Mint Editorial masthead colour knobs. Every {@code null} field falls + * back to a default that reproduces the stock render exactly, so an + * {@link #defaults()} instance leaves the committed look unchanged. + * + * @param accentColor mint accent used for the centred tagline and + * every spaced-caps section heading; {@code null} + * → {@code theme.palette().banner()} + * @param ruleColor full-width masthead rule colour, independent of + * the accent; {@code null} → the resolved + * {@code accentColor} (so unset = today's look) + * @param nameColor masthead name text colour; {@code null} → + * {@code theme.palette().ink()} + * @param headerBandColor optional full-page-width colour band painted + * behind the masthead on page 1 only; + * {@code null} → no band (white header) + */ + public record Options(DocumentColor accentColor, + DocumentColor ruleColor, + DocumentColor nameColor, + DocumentColor headerBandColor) { + + public static Options defaults() { + return new Options(null, null, null, null); + } + + public static Builder builder() { + return new Builder(); + } + + public static final class Builder { + private DocumentColor accentColor; + private DocumentColor ruleColor; + private DocumentColor nameColor; + private DocumentColor headerBandColor; + + private Builder() { + } + + public Builder accentColor(DocumentColor value) { + this.accentColor = value; + return this; + } + + public Builder ruleColor(DocumentColor value) { + this.ruleColor = value; + return this; + } + + public Builder nameColor(DocumentColor value) { + this.nameColor = value; + return this; + } + + public Builder headerBandColor(DocumentColor value) { + this.headerBandColor = value; + return this; + } + + public Options build() { + return new Options(accentColor, ruleColor, nameColor, + headerBandColor); + } + } } private static final class Template implements DocumentTemplate { private final CvTheme theme; + /** Accent for the tagline + section headings (defaults to mint). */ private final DocumentColor accent; - - Template(CvTheme theme) { + /** Masthead rule colour (defaults to the accent). */ + private final DocumentColor ruleColor; + /** Masthead name colour (defaults to ink). */ + private final DocumentColor nameColor; + /** Optional page-1 header band; null = no band (white header). */ + private final DocumentColor headerBandColor; + + Template(CvTheme theme, Options options) { this.theme = theme; // Mint carries its accent in the palette banner slot — single - // source shared with the paired cover letter. - this.accent = theme.palette().banner(); + // source shared with the paired cover letter. Each Options knob + // defaults to the value that reproduces the stock render. + this.accent = options.accentColor() != null + ? options.accentColor() + : theme.palette().banner(); + this.ruleColor = options.ruleColor() != null + ? options.ruleColor() + : this.accent; + this.nameColor = options.nameColor() != null + ? options.nameColor() + : theme.palette().ink(); + this.headerBandColor = options.headerBandColor(); } @Override @@ -268,18 +405,25 @@ public void compose(DocumentSession document, CvDocument doc) { List experiencePage2 = experienceEntries.stream() .skip(EXPERIENCE_PAGE_ONE).toList(); - document.dsl() + PageFlowBuilder flow = document.dsl() .pageFlow() .name("CvV2MintEditorialRoot") .spacing(theme.spacing().pageFlowSpacing()) .addSection("CvV2MintEditorialHeader", - section -> addHeader(section, identity)) - .addLine(line -> line - .name("CvV2MintEditorialHeaderRule") - .horizontal(pageWidth) - .color(accent) - .thickness(theme.spacing().accentRuleWidth()) - .margin(new DocumentInsets(8, -ruleBleed, 14, -ruleBleed))) + section -> addHeader(section, identity, pageWidth, ruleBleed)); + if (headerBandColor == null) { + // Stock masthead rule, full page width. When a band is present + // the rule is drawn flush at the band's bottom edge inside the + // header canvas instead (see addBandedHeader), so the separate + // flow rule is suppressed to avoid a doubled line. + flow.addLine(line -> line + .name("CvV2MintEditorialHeaderRule") + .horizontal(pageWidth) + .color(ruleColor) + .thickness(theme.spacing().accentRuleWidth()) + .margin(new DocumentInsets(8, -ruleBleed, 14, -ruleBleed))); + } + flow .addRow("CvV2MintEditorialPageOne", row -> { row.spacing(COLUMN_GAP).weights(SIDEBAR_WEIGHT, MAIN_WEIGHT); row.addSection("CvV2MintEditorialPageOneSidebar", sidebar -> { @@ -314,17 +458,121 @@ public void compose(DocumentSession document, CvDocument doc) { // -- Header -------------------------------------------------------- - private void addHeader(SectionBuilder section, CvIdentity identity) { - // Headline.spacedCentered sets the section's spacing + padding; - // it renders the centred spaced-caps name as the page's loudest - // element. The tagline follows in the mint accent. - Headline.spacedCentered(section, identity.name(), theme); + private void addHeader(SectionBuilder section, CvIdentity identity, + double pageWidth, double ruleBleed) { + if (headerBandColor != null) { + addBandedHeader(section, identity, pageWidth, ruleBleed); + } else { + addPlainHeader(section, identity); + } + } + + /** + * Stock masthead: centred spaced-caps name (in {@code nameColor}) over + * a centred accent tagline, no background band. When + * {@code nameColor == theme.palette().ink()} the explicit style equals + * {@code theme.headlineStyle()}, so the default render is byte-identical + * to the pre-Options output. + */ + private void addPlainHeader(SectionBuilder section, CvIdentity identity) { + // Render the name through Headline's style-override variant so only + // the colour can change — alignment, spaced-caps transform, font and + // size all stay exactly as Headline.spacedCentered produced them. + Headline.render(section, identity.name(), theme, + TextAlign.CENTER, true, mastheadNameStyle()); String jobTitle = identity.jobTitle(); if (jobTitle != null && !jobTitle.isBlank()) { Subheadline.centeredSpacedCaps(section, jobTitle, taglineStyle()); } } + /** + * Banded masthead (page 1 only): the whole masthead zone is one + * {@code CanvasLayerNode} (controlled absolute placement, the v1.6 + * free-canvas primitive) with {@link ClipPolicy#OVERFLOW_VISIBLE}. The + * canvas reserves only {@value #MASTHEAD_CANVAS_HEIGHT}pt in the flow — + * its declared height — so the masthead footprint stays small and the + * dense page-1 row still fits, keeping the document at two pages. + * + *

Inside the canvas (origin top-left, y down):

+ *
    + *
  • the band rectangle is positioned at {@code (-ruleBleed, + * -ruleBleed)} and sized {@code pageWidth × (ruleBleed + + * canvasHeight)}, so — because overflow is visible — it bleeds up + * to the top page edge, out to both side edges (full width), and + * down to the canvas bottom;
  • + *
  • a thin rule sits flush at the band's bottom edge, reading as the + * band's underline (the separate flow rule is suppressed in this + * mode, see {@code compose});
  • + *
  • the centred name (in {@code nameColor}) and tagline (in + * {@code accentColor}) render on top.
  • + *
+ * + *

The band consumes no extra flow height because the canvas footprint + * is fixed and the overflow draws outside it. Page 2 is untouched: the + * header canvas is the first page-flow child, so it lives on page 1 + * only — no {@code pageBackgrounds} (which would repeat on page 2).

+ */ + private void addBandedHeader(SectionBuilder section, CvIdentity identity, + double pageWidth, double ruleBleed) { + double canvasH = MASTHEAD_CANVAS_HEIGHT; + double ruleThickness = theme.spacing().accentRuleWidth(); + // Band runs from the top page edge down to the rule's bottom edge. + double bandHeight = MASTHEAD_RULE_Y + ruleThickness; + + // The masthead (name / tagline / rule) is positioned at the EXACT + // default flow coordinates, so the banded and bandless renders share + // identical masthead geometry — only the tan fill behind it is new. + // The band fills the canvas from y=0 to the rule bottom; no child + // overflows the canvas upward (which would overdraw the row beneath + // on the PDF backend) — instead the canvas itself is bled to the page + // edges via negative margins. + DocumentNode band = new ShapeBuilder() + .name("CvV2MintEditorialHeaderBand") + .size(pageWidth, bandHeight) + .fillColor(headerBandColor) + .build(); + DocumentNode rule = new ShapeBuilder() + .name("CvV2MintEditorialHeaderRule") + .size(pageWidth, ruleThickness) + .fillColor(ruleColor) + .build(); + ParagraphNode name = new ParagraphBuilder() + .name("CvV2MintEditorialHeaderName") + .text(TextOrnaments.spacedUpper(identity.name().full())) + .textStyle(mastheadNameStyle()) + .align(TextAlign.CENTER) + .build(); + String jobTitle = identity.jobTitle(); + boolean hasTagline = jobTitle != null && !jobTitle.isBlank(); + ParagraphNode tagline = hasTagline + ? new ParagraphBuilder() + .name("CvV2MintEditorialHeaderTagline") + .text(TextOrnaments.spacedUpper(jobTitle)) + .textStyle(taglineStyle()) + .align(TextAlign.CENTER) + .build() + : null; + + section.addCanvas(pageWidth, canvasH, canvas -> { + canvas.name("CvV2MintEditorialHeaderCanvas") + .clipPolicy(ClipPolicy.OVERFLOW_VISIBLE) + // Bleed the whole canvas to the top + side page edges so + // the band reaches y=0 and both side edges. + .margin(new DocumentInsets(-ruleBleed, -ruleBleed, 0, + -ruleBleed)) + // Band fills the masthead zone from the page top edge to + // the rule's bottom; rule + name + tagline sit at their + // default flow positions on top. + .position(band, 0.0, 0.0) + .position(rule, 0.0, MASTHEAD_RULE_Y) + .position(name, 0.0, MASTHEAD_NAME_Y); + if (tagline != null) { + canvas.position(tagline, 0.0, MASTHEAD_TAGLINE_Y); + } + }); + } + // -- Sidebar: Contact --------------------------------------------- private void addContact(SectionBuilder section, CvIdentity identity) { @@ -513,6 +761,23 @@ private void addProfile(SectionBuilder section, CvSection profile) { // -- Main: Experience --------------------------------------------- + /** + * Renders the Experience block with Mint's bespoke entry layout: + * a spaced-caps job title, a single {@code subtitle | date} meta line, + * a prose paragraph, and — uniquely for this preset — any trailing + * markdown bullet lines as a real bullet list. + * + *

This is rendered locally rather than through the shared + * {@code EntryCompactRenderer} / {@code RichParagraphRenderer} because + * Mint's entry shape does not match those renderers: the title is + * transformed to letter-spaced uppercase, the subtitle and date are + * fused into one {@code "Company | Location | 2010 - Present"} meta line + * (the shared renderers keep them as separate title-row columns), and + * the body is split into prose + highlight bullets via + * {@link #splitBody(String)} — a transform no shared renderer performs. + * Bodies with no bullet lines (the canonical sample) take the plain + * single-paragraph path and are unaffected.

+ */ private void addExperience(SectionBuilder section, String title, List entries) { if (entries.isEmpty()) { @@ -750,6 +1015,18 @@ private DocumentTableCell gridCell(String text, DocumentTableStyle style) { // -- Style factories ---------------------------------------------- + /** + * Masthead name style. With the default {@code nameColor} (ink) this is + * identical to {@code theme.headlineStyle()} — headline font, headline + * size, default decoration — so the stock render is unchanged; only the + * colour differs when a caller overrides {@code nameColor}. + */ + private DocumentTextStyle mastheadNameStyle() { + return CvTextStyles.of(theme.typography().headlineFont(), + theme.typography().sizeHeadline(), + DocumentTextDecoration.DEFAULT, nameColor); + } + private DocumentTextStyle taglineStyle() { return CvTextStyles.of(theme.typography().headlineFont(), theme.typography().sizeContact(), @@ -837,6 +1114,12 @@ private static List entriesOf(CvSection section) { * {@code "* "}). Bodies with no bullet lines yield the whole text as * prose and an empty bullet list, so the canonical sample renders * exactly as before. + * + *

Preset-local because the shared CV body renderers + * ({@code RichParagraphRenderer}, {@code EntryCompactRenderer}) treat the + * entry body as one rich paragraph and never break trailing bullet lines + * out into a list. This split is what lets a Mint experience entry show a + * paragraph followed by highlight bullets (see {@link Template#addExperience}).

*/ private static BodyParts splitBody(String body) { if (body == null || body.isBlank()) { diff --git a/src/test/java/com/demcha/compose/document/templates/cv/v2/presets/MintEditorialSmokeTest.java b/src/test/java/com/demcha/compose/document/templates/cv/v2/presets/MintEditorialSmokeTest.java index ffa43d51..3901fcf1 100644 --- a/src/test/java/com/demcha/compose/document/templates/cv/v2/presets/MintEditorialSmokeTest.java +++ b/src/test/java/com/demcha/compose/document/templates/cv/v2/presets/MintEditorialSmokeTest.java @@ -4,6 +4,7 @@ import com.demcha.compose.document.api.DocumentPageSize; import com.demcha.compose.document.api.DocumentSession; import com.demcha.compose.document.layout.LayoutGraph; +import com.demcha.compose.document.layout.PlacedFragment; import com.demcha.compose.document.templates.api.DocumentTemplate; import com.demcha.compose.document.templates.cv.v2.data.CvDocument; import com.demcha.compose.document.templates.cv.v2.data.CvIdentity; @@ -14,11 +15,13 @@ import com.demcha.compose.document.templates.cv.v2.data.RowsSection; import com.demcha.compose.document.templates.cv.v2.data.SkillsSection; import com.demcha.compose.document.templates.cv.v2.theme.CvTheme; +import com.demcha.compose.document.style.DocumentColor; import org.junit.jupiter.api.Test; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.within; /** * Smoke test for the v2 Mint Editorial preset. Covers stable identity, @@ -64,6 +67,101 @@ void custom_theme_factory_renders() throws Exception { } } + @Test + void custom_colour_options_render_two_pages() throws Exception { + // Dark header band + white name + a contrasting rule and accent — + // exercises every Options knob at once. Still a clean two-page render. + MintEditorial.Options options = MintEditorial.Options.builder() + .headerBandColor(DocumentColor.rgb(24, 24, 24)) + .nameColor(DocumentColor.WHITE) + .ruleColor(DocumentColor.rgb(220, 120, 90)) + .accentColor(DocumentColor.rgb(139, 207, 190)) + .build(); + try (DocumentSession session = GraphCompose.document() + .pageSize(DocumentPageSize.A4) + .margin(48, 48, 48, 48) + .create()) { + MintEditorial.create(options).compose(session, fullDocument()); + assertThat(session.roots()).isNotEmpty(); + assertThat(session.layoutGraph().totalPages()).isEqualTo(2); + } + } + + @Test + void default_options_equal_no_options() { + // The default Options factory must leave the stock surface identity + // intact (and, by the parity gate, the stock render). + DocumentTemplate withDefaults = + MintEditorial.create(MintEditorial.Options.defaults()); + assertThat(withDefaults.id()).isEqualTo("mint-editorial"); + assertThat(withDefaults.displayName()).isEqualTo("Mint Editorial"); + } + + @Test + void band_constants_match_default_masthead() throws Exception { + // Guard: the banded masthead reuses hand-measured MASTHEAD_* constants + // to place the name/tagline/rule at the SAME positions the default + // (bandless) flow produces. This test ties MASTHEAD_RULE_Y to the real + // default rule y, so any future typography / margin / spacing change + // that moves the masthead fails here and signals the constants must be + // re-measured. + try (DocumentSession session = GraphCompose.document() + .pageSize(DocumentPageSize.A4) + .margin(48, 48, 48, 48) + .create()) { + MintEditorial.create().compose(session, fullDocument()); + LayoutGraph layout = session.layoutGraph(); + PlacedFragment rule = layout.fragments().stream() + .filter(f -> f.pageIndex() == 0) + .filter(f -> f.path().contains("CvV2MintEditorialHeaderRule")) + .findFirst() + .orElseThrow(() -> new AssertionError( + "default masthead rule fragment not found")); + // PlacedFragment.y is the PDF bottom-left origin (y grows up); + // convert to the top-down page-edge coordinate the constant uses. + double pageHeight = session.canvas().height(); + double ruleTop = pageHeight - (rule.y() + rule.height()); + assertThat(ruleTop) + .as("default rule top must equal MASTHEAD_RULE_Y (re-measure " + + "the MASTHEAD_* band constants if this drifts)") + .isCloseTo(MintEditorial.MASTHEAD_RULE_Y, within(0.5)); + } + } + + @Test + void banded_and_bandless_place_first_row_identically() throws Exception { + // Complementary guard: the band must not shift the body. The first + // page-1 content row must start at the same y with and without a band. + double bandless = firstPageOneRowTop(MintEditorial.create()); + double banded = firstPageOneRowTop(MintEditorial.create( + MintEditorial.Options.builder() + .headerBandColor(DocumentColor.rgb(228, 217, 198)) + .build())); + assertThat(banded) + .as("banded masthead must place the first row at the same y as " + + "the bandless masthead") + .isCloseTo(bandless, within(0.5)); + } + + private static double firstPageOneRowTop(DocumentTemplate template) + throws Exception { + try (DocumentSession session = GraphCompose.document() + .pageSize(DocumentPageSize.A4) + .margin(48, 48, 48, 48) + .create()) { + template.compose(session, fullDocument()); + LayoutGraph layout = session.layoutGraph(); + double pageHeight = session.canvas().height(); + return layout.fragments().stream() + .filter(f -> f.pageIndex() == 0) + .filter(f -> f.path().contains("CvV2MintEditorialPageOne")) + .mapToDouble(f -> pageHeight - (f.y() + f.height())) + .min() + .orElseThrow(() -> new AssertionError( + "page-1 row fragments not found")); + } + } + @Test void renders_with_awards_and_references_grids() throws Exception { try (DocumentSession session = GraphCompose.document() From 570fa91b623c4ea983830396d511e0aec6e86377 Mon Sep 17 00:00:00 2001 From: DemchaAV Date: Sat, 30 May 2026 03:20:53 +0100 Subject: [PATCH 2/2] test(cv-v2): register Mint Editorial parity baselines + docs Registers mint_editorial and mint-editorial-letter in the CV and cover-letter visual parity suites with committed page baselines, documents the SkillBar and IconTextRow widgets in the v2 authoring catalog, and adds the Mint Editorial entry to the v1.6.5 CHANGELOG. --- CHANGELOG.md | 18 ++++++++++++++++++ .../templates/v2-layered/authoring-presets.md | 18 ++++++++++++++++++ .../CoverLetterV2VisualParityTest.java | 5 ++++- .../cv/v2/presets/CvV2VisualParityTest.java | 5 ++++- .../mint-editorial-letter-page-0.png | Bin 0 -> 28794 bytes .../cv-v2-layered/mint_editorial-page-0.png | Bin 0 -> 57606 bytes .../cv-v2-layered/mint_editorial-page-1.png | Bin 0 -> 26101 bytes 7 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 src/test/resources/visual-baselines/coverletter-v2-layered/mint-editorial-letter-page-0.png create mode 100644 src/test/resources/visual-baselines/cv-v2-layered/mint_editorial-page-0.png create mode 100644 src/test/resources/visual-baselines/cv-v2-layered/mint_editorial-page-1.png diff --git a/CHANGELOG.md b/CHANGELOG.md index d5f1b14c..d9d4c4bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,24 @@ follow semantic versioning; release dates are ISO 8601. template surface, including its isolated theme tokens, visual regression baselines, and reusable `Subheadline` / `SectionHeader.flatSpacedCaps` widget support. +- Added the **Mint Editorial** template set: a two-page, two-column + editorial CV preset `MintEditorial` (centred spaced-caps masthead with + a full-width mint accent rule; sidebar contact / interests / education / + expertise / skill-bars / social beside a profile / experience / awards / + references main column) and its paired `MintEditorialLetter`, both on + `CvTheme.mintEditorial()` and with visual regression baselines. +- Added two reusable `cv/v2/widgets`: `SkillBar` (data-driven proficiency + bar — spaced-caps label above a track with a level-positioned marker; + no bar when the level is absent) and `IconTextRow` (inline icon + text + row, optionally a single click target), with `WidgetSmokeTest` coverage. +- Added optional proficiency levels to `SkillGroup` via the new + `CvSkill` record and `SkillsSection.Builder.leveledGroup(...)`. Fully + backward-compatible: name-only skills carry no level and every existing + name-based renderer is unaffected. +- Added `MintEditorial.Options` (and a matching `MintEditorialLetter.Options`) + — an additive masthead colour API (accent, rule, name, and an optional + full-width page-1 header band) whose defaults reproduce the stock render + exactly, so the committed look and the parity baselines are unchanged. ### Public API diff --git a/docs/templates/v2-layered/authoring-presets.md b/docs/templates/v2-layered/authoring-presets.md index b932bda4..dd73154c 100644 --- a/docs/templates/v2-layered/authoring-presets.md +++ b/docs/templates/v2-layered/authoring-presets.md @@ -107,6 +107,24 @@ in `com.demcha.compose.document.templates.widgets`. | `SectionHeader.upperRule(host, title, theme, titleStyle, ruleColor, ruleWidth)` | Uppercase label with short rule below | | `SectionHeader.spacedCapsRule(host, title, theme, titleStyle, ruleColor, ruleWidth, ruleThickness, ruleMargin)` | Spaced-caps label with short rule below | +### `SkillBar` — data-driven proficiency bar + +| Variant | Visual | +|---|---| +| `SkillBar.render(host, skill, trackWidth, theme)` | Spaced-caps skill label above a thin track with a level-positioned marker; renders the label with **no bar** when `skill.level()` is absent | + +Reads the level from `CvSkill.level()` (`[0, 1]`); used by the Mint +Editorial skills sidebar. + +### `IconTextRow` — inline icon + text row + +| Variant | Visual | +|---|---| +| `IconTextRow.render(host, icon, iconSize, text, style, link, margin)` | A glyph image followed by a label on one baseline; the whole row is a single click target when a `link` is supplied | + +Used for the icon-led contact and social rows in sidebar CV layouts +(Mint Editorial). + ### Higher-order CV widgets | Widget | Visual | diff --git a/src/test/java/com/demcha/compose/document/templates/coverletter/v2/presets/CoverLetterV2VisualParityTest.java b/src/test/java/com/demcha/compose/document/templates/coverletter/v2/presets/CoverLetterV2VisualParityTest.java index bb796752..c61ba18c 100644 --- a/src/test/java/com/demcha/compose/document/templates/coverletter/v2/presets/CoverLetterV2VisualParityTest.java +++ b/src/test/java/com/demcha/compose/document/templates/coverletter/v2/presets/CoverLetterV2VisualParityTest.java @@ -114,7 +114,10 @@ private static Stream presets() { (Supplier>) MonogramSidebarLetter::create), Arguments.of("timeline_minimal", TimelineMinimalLetter.RECOMMENDED_MARGIN, - (Supplier>) TimelineMinimalLetter::create)); + (Supplier>) TimelineMinimalLetter::create), + Arguments.of("mint-editorial-letter", + MintEditorialLetter.RECOMMENDED_MARGIN, + (Supplier>) MintEditorialLetter::create)); } /** diff --git a/src/test/java/com/demcha/compose/document/templates/cv/v2/presets/CvV2VisualParityTest.java b/src/test/java/com/demcha/compose/document/templates/cv/v2/presets/CvV2VisualParityTest.java index addd9e78..0b6220be 100644 --- a/src/test/java/com/demcha/compose/document/templates/cv/v2/presets/CvV2VisualParityTest.java +++ b/src/test/java/com/demcha/compose/document/templates/cv/v2/presets/CvV2VisualParityTest.java @@ -131,7 +131,10 @@ private static Stream presets() { (Supplier>) MonogramSidebar::create), Arguments.of("sidebar_portrait", SidebarPortrait.RECOMMENDED_MARGIN, - (Supplier>) SidebarPortrait::create)); + (Supplier>) SidebarPortrait::create), + Arguments.of("mint_editorial", + MintEditorial.RECOMMENDED_MARGIN, + (Supplier>) MintEditorial::create)); } /** diff --git a/src/test/resources/visual-baselines/coverletter-v2-layered/mint-editorial-letter-page-0.png b/src/test/resources/visual-baselines/coverletter-v2-layered/mint-editorial-letter-page-0.png new file mode 100644 index 0000000000000000000000000000000000000000..58d297b65cce7d286b54ff79df0a15373e6671bd GIT binary patch literal 28794 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� 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 literal 0 HcmV?d00001 diff --git a/src/test/resources/visual-baselines/cv-v2-layered/mint_editorial-page-1.png b/src/test/resources/visual-baselines/cv-v2-layered/mint_editorial-page-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f747e92b40f2a92f24051080d89962c03fea4172 GIT binary patch literal 26101 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