Skip to content

feat(theme): add nordic / editorial / cinematic / monochrome BusinessTheme presets (@since 1.6.8)#118

Merged
DemchaAV merged 1 commit into
developfrom
feat/business-themes-trendy-set
Jun 1, 2026
Merged

feat(theme): add nordic / editorial / cinematic / monochrome BusinessTheme presets (@since 1.6.8)#118
DemchaAV merged 1 commit into
developfrom
feat/business-themes-trendy-set

Conversation

@DemchaAV

@DemchaAV DemchaAV commented Jun 1, 2026

Copy link
Copy Markdown
Owner

Summary

Adds four contemporary BusinessTheme factory presets alongside
the existing formal-skewed trio (classic / modern / executive).
Pure additive new public API @since 1.6.8 — the existing
presets are untouched and japicmp reports semver PATCH
(compatible additions only).

The four new presets

Preset Surface Primary Accent Body font Vibe
nordic() cool near-white #fcfdfe deep slate-blue #243240 dusty slate #60768e Helvetica Scandinavian minimal — design-studio reports, product-launch decks
editorial() warm cream #faf5eb deep ink #161616 brick-red #a03c32 Times-Roman (serif) Magazine — long-form proposals, annual reports
cinematic() deep navy #101824 (dark!) near-white #f5f8fc bright copper #dc8232 Helvetica Inverted moody — investor pitch decks
monochrome() pure white pure black bold yellow #f0c419 Helvetica Brutalist — fashion-cover-style design-studio one-pagers

Why these four

The existing trio is all formal and dark-on-light:

  • classic = navy + bright blue (financial / legal)
  • modern = teal + gold on cream (cinematic-warm proposal)
  • executive = slate + muted gold (boardroom)

The contemporary set fills the gaps:

  • nordic covers minimal / generous-whitespace design culture
  • editorial covers serif / magazine / long-form brand work
  • cinematic is the first dark-surface preset — inverts the convention to white text on navy, with the surface doubling as the page background so the moody look fills the page edges
  • monochrome covers brutalist / editorial-cover identity work where typographic contrast carries the entire design

Together: seven presets spanning the formal-to-design-studio
spectrum, every one a single BusinessTheme.xxx() call away.

What this PR does NOT touch

  • classic(), modern(), executive() — untouched. No risk of
    breaking existing consumers who pinned to a specific preset.
  • DocumentPalette / SpacingScale / TextScale / TablePreset
    records — untouched. No public-API surface change beyond the
    four new static factories.
  • CV / cover-letter presets — untouched. They build their own
    per-preset themes; the new factories are available if any
    preset wants to adopt one.

Test plan

  • ./mvnw test -pl . -Dtest=BusinessThemeTest -B -ntp
    19 tests, 0 failures (14 existing + 5 new).
  • ./mvnw verify -pl . -P japicmp1037 tests, 0
    failures
    ; japicmp vs v1.6.7 baseline reports semver PATCH (compatible additions only).
  • allSevenBuiltInThemesArePairwiseDistinctByPalette upgrades
    the previous three-theme distinctness check to the full
    pairwise matrix — every preset has a distinct palette + name.

Follow-ups (not in this PR)

  • Visual baselines — pixel-diff parity tests against checked-in
    PNG snapshots for each new preset. Best landed alongside Track N
    (promote PdfVisualRegression to public API) so the same gate
    becomes available to downstream consumers building their own
    custom themes.
  • CustomBusinessThemeDemoTest — current demo only covers
    classic derivation; could add a parametrised version that
    shows how to fork each of the seven presets with
    theme.withName(...) / theme.withPageBackground(...).

…Theme presets (@SInCE 1.6.8)

Adds four contemporary BusinessTheme factory methods alongside
the existing formal-skewed classic / modern / executive trio:

- nordic()      — cool whites + slate-blue + generous spacing
                  (Scandinavian minimal, design-studio one-pagers)
- editorial()   — warm cream + deep ink + brick-red accent on a
                  Times-Roman serif body (magazine, long-form
                  proposals, annual reports)
- cinematic()   — DEEP NAVY SURFACE with light text + bright
                  copper accent (inverted palette — first preset
                  to ship a dark surface; tuned for investor
                  pitch decks)
- monochrome()  — pure black on white with a single bold yellow
                  accent (brutalist, fashion-cover style)

Every new preset reuses the same internal `textScale()` and
`tablePreset()` helpers as the existing trio, so a downstream
template authored against any one preset gets the same matrix
of style tokens (palette / spacing / textScale / tablePreset /
optional pageBackground). The cinematic preset additionally
uses the dark surface as the page background so the moody look
fills the page edges.

Class-level Javadoc updated to list all seven presets and group
them as "formal" vs "contemporary".

Test plan:
- BusinessThemeTest expanded from 14 → 19 tests:
  * one positive-coverage test per new preset (asserts name,
    non-null tokens, distinctive trait — Times-Roman body for
    editorial, dark-on-light inversion for cinematic, etc.)
  * `allSevenBuiltInThemesArePairwiseDistinctByPalette` upgrades
    the previous three-theme distinctness check to the seven-
    theme pairwise matrix
- `./mvnw verify -pl . -P japicmp` — **1037 tests pass**, 0
  failures. japicmp vs v1.6.7 baseline: semver PATCH (compatible
  additions only, no breaking change).
@DemchaAV DemchaAV merged commit b22775c into develop Jun 1, 2026
11 checks passed
@DemchaAV DemchaAV deleted the feat/business-themes-trendy-set branch June 1, 2026 16:20
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