Skip to content

Commit 4eb6f7c

Browse files
committed
Add CompactMono CV v2 preset
1 parent 20b33d0 commit 4eb6f7c

18 files changed

Lines changed: 834 additions & 17 deletions

File tree

‎docs/templates/v2-layered/authoring-presets.md‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
You like the layered architecture, but the shipped presets
44
(`BoxedSections`, `MinimalUnderlined`, `ModernProfessional`,
55
`CenteredHeadline`, `BlueBanner`, `EditorialBlue`, `ClassicSerif`,
6-
`NordicClean`) don't match the design you want. This doc walks you
7-
through writing a new preset from scratch — **without subclassing, without duplicating
8-
rendering code**.
6+
`NordicClean`, `CompactMono`) don't match the design you want. This
7+
doc walks you through writing a new preset from scratch — **without
8+
subclassing, without duplicating rendering code**.
99

1010
If you haven't read [quickstart.md](quickstart.md) and
1111
[using-templates.md](using-templates.md), do those first.
@@ -87,6 +87,7 @@ small set of named variants.
8787
| `ContactLine.centered(host, identity, theme)` | Centred, phone → email → address → links |
8888
| `ContactLine.centered(host, identity, theme, bodyStyle, linkStyle, separatorStyle)` | Centred contact row with explicit style overrides |
8989
| `ContactLine.rightAligned(host, identity, theme)` | Right-aligned, address → phone → email → links |
90+
| `ContactLine.leftAligned(host, identity, theme[, bodyStyle, linkStyle, separatorStyle])` | Left-aligned command-bar row with explicit style overrides when needed |
9091
| `ContactLine.rightAlignedStacked(host, identity, theme, bodyStyle, linkStyle)` | Right-aligned vertical stack, one contact item per line |
9192
| `ContactLine.twoRowRightAligned(host, identity, theme, bodyStyle, linkStyle, separatorStyle)` | Right-aligned address/phone row plus email/link row |
9293
| `ContactLine.render(host, identity, theme, align, order)` | Low-level — any alignment + field-order combo |
@@ -100,6 +101,7 @@ small set of named variants.
100101
| `SectionHeader.underlined(host, title, theme)` | Small left spaced-caps + thin rule below |
101102
| `SectionHeader.flat(host, title, color, theme)` | Large bold title in a given colour, no panel |
102103
| `SectionHeader.flatSpacedCaps(host, title, color, theme, titleStyle)` | Small left spaced-caps title in a soft colour, no panel |
104+
| `SectionHeader.tickLabel(host, title, theme, color, tickWidth[, titleStyle])` | Short accent tick above compact uppercase label |
103105

104106
The separator glyph used by `ContactLine`, the bullet glyph used by
105107
`RowRenderer`, and other character-level choices come from

‎docs/templates/v2-layered/quickstart.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ GraphCompose's templates v2 (layered) gives you:
2020
- **Presets as compositions** — a preset orchestrates widgets in a
2121
page flow. `BoxedSections`, `MinimalUnderlined`,
2222
`ModernProfessional`, `CenteredHeadline`, `BlueBanner`,
23-
`EditorialBlue`, `ClassicSerif`, and `NordicClean` ship today;
24-
writing your own is ~150 lines.
23+
`EditorialBlue`, `ClassicSerif`, `NordicClean`, and `CompactMono`
24+
ship today; writing your own is ~150 lines.
2525

2626
You hand a `CvDocument` to a preset, you get a PDF. The preset
2727
internally composes widgets that read theme tokens that ultimately
@@ -91,7 +91,7 @@ Same data, different visual. That's the layering.
9191
│ presets/ BoxedSections, MinimalUnderlined, │
9292
│ ModernProfessional, CenteredHeadline, │
9393
│ BlueBanner, EditorialBlue, ClassicSerif, │
94-
│ NordicClean │
94+
│ NordicClean, CompactMono │
9595
│ — composition of widgets in a page flow │
9696
└─────────────────────────────────────────────────────────────┘
9797
│ compose from widgets

‎docs/templates/v2-layered/using-templates.md‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,9 +176,9 @@ CvDocument doc = CvDocument.builder()
176176
**Single-column presets** (`BoxedSections`, `MinimalUnderlined`,
177177
`ModernProfessional`, `CenteredHeadline`, `BlueBanner`,
178178
`EditorialBlue`, `ClassicSerif`) render only `Slot.MAIN`. `NordicClean`
179-
also reads `Slot.MAIN`, but lays it out as its own two-column rail/body
180-
composition. Sidebar content is silently dropped — switch to a
181-
multi-column preset to render it.
179+
and `CompactMono` also read `Slot.MAIN`, but lay it out as their own
180+
two-column rail/body compositions. Sidebar content is silently dropped
181+
— switch to a multi-column preset to render it.
182182

183183
If you don't use slots at all, your sections go to `MAIN` and every
184184
preset renders them. The slot model is opt-in.
@@ -188,7 +188,7 @@ preset renders them. The slot model is opt-in.
188188
<a id="picking-a-preset"></a>
189189
## Picking a preset
190190

191-
Eight shipped today:
191+
Nine shipped today:
192192

193193
| Preset | Visual signature |
194194
|---|---|
@@ -200,6 +200,7 @@ Eight shipped today:
200200
| `EditorialBlue.create()` | Centred uppercase masthead, optional job-title subtitle, blue editorial rules, compact skills table |
201201
| `ClassicSerif.create()` | PT-Serif cover/detail layout, cream profile band, tan rules |
202202
| `NordicClean.create()` | Barlow uppercase identity, teal profile band, tinted sidebar rail, compact main column |
203+
| `CompactMono.create()` | Dark command-bar header, pale left rail, same-width right-column cards |
203204

204205
Each factory has a no-arg form (uses a sensible default theme) and
205206
a `create(CvTheme)` form (custom theme).

‎src/main/java/com/demcha/compose/document/templates/cv/v2/AUTHORS.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,7 @@ as DSL plumbing. Below is the current catalog.
344344
| `ContactLine.centered(host, identity, theme)` | centred, phone → email → address → links | BoxedSections, MinimalUnderlined, CenteredHeadline, BlueBanner |
345345
| `ContactLine.centered(host, identity, theme, bodyStyle, linkStyle, separatorStyle)` | centred contact row with explicit style overrides | ClassicSerif |
346346
| `ContactLine.rightAligned(host, identity, theme)` | right-aligned, address → phone → email → links | ModernProfessional |
347+
| `ContactLine.leftAligned(host, identity, theme[, bodyStyle, linkStyle, separatorStyle])` | left-aligned command-bar row with style overrides | CompactMono |
347348
| `ContactLine.rightAlignedStacked(host, identity, theme, bodyStyle, linkStyle)` | right-aligned vertical stack, one contact item per line | NordicClean |
348349
| `ContactLine.twoRowRightAligned(host, identity, theme, bodyStyle, linkStyle, separatorStyle)` | right-aligned address/phone row plus email/link row | ModernProfessional |
349350
| `ContactLine.render(host, identity, theme, align, order)` | low-level: pick alignment + field order | — |
@@ -361,6 +362,7 @@ change ` | ` to ` · ` or anything else.
361362
| `SectionHeader.underlined(host, title, theme)` | small spaced-caps left-aligned, thin rule below | MinimalUnderlined |
362363
| `SectionHeader.flat(host, title, color, theme)` | large bold title in a given colour, no panel | ModernProfessional |
363364
| `SectionHeader.flatSpacedCaps(host, title, color, theme, titleStyle)` | small spaced-caps title in a soft colour, no panel | CenteredHeadline, ClassicSerif |
365+
| `SectionHeader.tickLabel(host, title, theme, color, tickWidth[, titleStyle])` | short accent tick above compact uppercase label | CompactMono |
364366

365367
Note that `flat` and `flatSpacedCaps` take a `DocumentColor`
366368
argument — the section title colour is the preset's signature

‎src/main/java/com/demcha/compose/document/templates/cv/v2/package-info.java‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
* │ EditorialBlue ← compact editorial composition │
2727
* │ ClassicSerif ← serif cover/detail preset │
2828
* │ NordicClean ← teal two-column rail preset │
29+
* │ CompactMono ← dark header + rail/card preset │
2930
* └─────────────────────────────────────────────────────────────┘
3031
* │ compose from
3132
* ▼
@@ -35,10 +36,11 @@
3536
* │ | .uppercaseLeftAligned | .rightAligned │
3637
* │ Subheadline .centeredSpacedCaps │
3738
* │ ContactLine .centered | .centered(...styles) │
38-
* │ .rightAligned | .rightAlignedStacked │
39+
* │ .rightAligned | .leftAligned │
40+
* │ .rightAlignedStacked │
3941
* │ .twoRowRightAligned │
4042
* │ SectionHeader .banner | .fullWidthBanner | .underlined │
41-
* │ .flat | .flatSpacedCaps │
43+
* │ .flat | .flatSpacedCaps | .tickLabel │
4244
* └─────────────────────────────────────────────────────────────┘
4345
* │ delegate to │ read tokens from
4446
* ▼ ▼

0 commit comments

Comments
 (0)