Skip to content

feat(templates): pixel-port invoice/v2 ModernInvoice to the cinematic look#264

Merged
DemchaAV merged 1 commit into
2.0-devfrom
feat/invoice-v2-cinematic
Jun 29, 2026
Merged

feat(templates): pixel-port invoice/v2 ModernInvoice to the cinematic look#264
DemchaAV merged 1 commit into
2.0-devfrom
feat/invoice-v2-cinematic

Conversation

@DemchaAV

Copy link
Copy Markdown
Owner

Why

#257 stood up invoice/v2 as a skeleton. This PR finishes the cinematic step: ModernInvoice now renders the exact builtins/InvoiceTemplateV2 appearance on the layered core + BrandTheme stack, so the layered family can replace the builtin without a visual change.

What

  • core.theme: Palette.invoiceModern() / Typography.invoiceModern() values retuned to mirror BusinessTheme.modern() — cream page (252,248,240), soft-tan panels (244,238,228), deep-teal title + table header (20,60,75), gold accent (196,153,76), Helvetica 28 / 11 / 10.
  • ModernInvoice: title + table-header fill use a preset-local teal; the hero accent strip + status use gold; party labels + footer caption read the theme. The line-item cells inherit the DSL default table text (as the builtin does) — that's what makes it a pixel match; documented inline so it isn't "fixed" into a regression.
  • example: renders on the cream page background.
  • InvoiceV2VisualParityTest + blessed baseline PNG lock the look against drift (mirrors CvV2VisualParityTest).
  • data.invoice package-info: reframed (it now backs both the builtin and invoice/v2).

Verified pixel-identical: rasterised ModernInvoice (on BrandTheme.invoiceModern()) vs the cinematic InvoiceTemplateV2 (on BusinessTheme.modern()) → 0% differing pixels (every tolerance, empty diff bbox).

Note: the line-item body cells render at the engine default (Helvetica 14 black), faithfully reproducing the builtin. Making them theme-driven would be a deliberate divergence from the cinematic — out of scope here.

Follow-up (PR 2.3): migrate the 5 invoice examples off builtins.InvoiceTemplateV2 (coordinated with proposal).

Tests

./mvnw verify javadoc:javadoc -pl . → BUILD SUCCESS, 1618 tests, 0 failures; javadoc clean. New visual parity test green against the committed baseline.

… look

Retune BrandTheme.invoiceModern() to mirror BusinessTheme.modern() and
align ModernInvoice so it renders the exact builtins/InvoiceTemplateV2
appearance on the layered stack — verified pixel-identical (0% raster
diff) against the cinematic builtin.

- core.theme: Palette.invoiceModern() / Typography.invoiceModern() values
  now match modern() (cream page, soft-tan panels, deep-teal title +
  table header, gold accent, Helvetica 28 / 11 / 10).
- ModernInvoice: title + table header use a preset-local teal; hero
  accent + status use gold; labels + footer read the theme. Line-item
  cells inherit the DSL default table text to stay a pixel match for the
  builtin (documented inline).
- example: render on the cream page background.
- InvoiceV2VisualParityTest + blessed baseline lock the look against drift.
- data.invoice package-info: note it now backs both the builtin and
  invoice/v2.
@DemchaAV DemchaAV merged commit e0f6c8b into 2.0-dev Jun 29, 2026
11 checks passed
@DemchaAV DemchaAV deleted the feat/invoice-v2-cinematic branch June 29, 2026 11:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant