Skip to content

Comic design refresh - #1261

Draft
julioest wants to merge 9 commits into
cppalliance:developfrom
julioest:ui/refresh-consolidated
Draft

Comic design refresh#1261
julioest wants to merge 9 commits into
cppalliance:developfrom
julioest:ui/refresh-consolidated

Conversation

@julioest

@julioest julioest commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Draft — WIP on the comic design refresh (initiatives#4, Figma).

Rebased onto current develop and reconciled with the brand theme work in a51d1621b / faea11b9c. Upstream values win everywhere — the design system only supplies the indirection, so this shouldn't shift anything visually except where a slice deliberately restyles it.

  • Adds a three-layer token system: docs/shared/design-system.css (spec) + docs/ui/src/css/tokens.css (primitives for the Antora theme)
  • Repoints existing vars.css vars at tokens, values unchanged
  • Landing: comic navbar + brand lockup, hero title, feature cards, code/reference panels
  • Theme toggle rebuilt to the Figma Secondary/Default spec, stroked icons
  • Docs headings take the Bangers display face — drops the custom.css reset, but leaves case alone so symbol names are never uppercased
  • Points the docs home link at the site root

Notes:

  • docs/website/index.html is hand-merged, not regenerated. No prebuilt mrdocs matches current develop — the newest release is older than the one the Antora cache pulls, and that one breaks the sqrt panel's latexmath. Generated panel interiors are untouched; only template chrome (nav, lockup, toggle) was merged in
  • Dark theme values in the new slices are inferred, the mockups only cover light
  • Still to come: CTA band (blocked on mascot art), halftone/burst backgrounds, remaining sections

Introduce a three-layer token vocabulary (primitives, semantic,
component) in docs/shared/design-system.css as the canonical spec,
implement the L0 primitives for the Antora theme (tokens.css), inline
all three layers in the landing page, and rewire existing variables
plus the doc-panel markup to consume them. No visual change.
Use Special Elite as the body font and Bangers for headings, wiring
each surface per its convention: self-host both faces via @fontsource
in the Antora theme, and load them from Google Fonts on the landing
page. Point --ds-font-body and --ds-font-display at the new faces and
apply the display font to all headings.
Add the comic "Main Title" token group to the shared design system (--ds-title size/leading/color/ink/outline/shadow), mapped to the nearest existing primitives. Also italicize the docs headings the fonts commit already switched to Bangers, completing that display-font rollout.

The landing hero's bespoke treatment that consumes these tokens is deferred to the B1 (landing) slice.
The docs navbar logo used {{or site.url siteRootPath}}, which in local/dev builds resolved to the hardcoded production URL. Point it at "/" so it lands on the site root (the landing page) in every environment.

Also ignore the local-preview symlink docs/website/docs.
WIP checkpoint — comic navbar (white/ink bar, Special Elite links, gold GitHub button, theme toggle), the real two-tone Figma logo lockup (separate light/dark SVGs swapped per theme), correct GitHub icon, and a responsive hamburger menu below 768px. Also the in-progress hero comic-title treatment; yellow token now #facc15.

Also cache-busts styles.css via render.js. Tweaks to follow in the next commit.
custom.css imported after doc.css and reset .doc h1-h6 back to the body
face, so the display-face declaration never applied. Drop that reset and
keep only the heading colour there.

Case is deliberately left alone: reference headings are C++ symbol names,
so text-transform stays off in the docs. That half of the original
reasoning still holds.

Bangers ships upright only, so the font-style: italic on these headings
renders as a browser-synthesized oblique rather than a true italic.
Add the accent-label palette the mockups use for eyebrow pills and card
titles (--ds-pink-500 on light, --ds-red-500 on dark), expose it as
--ds-color-label, and add --ds-color-surface-accent for the card fill.
All three theme blocks are covered, and design-system.css is kept in
sync as the canonical spec.

Style the feature grid off the bare divs the template already emits, so
index.html needs no regeneration: filled panel, hard outline, hard
offset shadow, bordered icon tiles, pink underlined titles. Tighten the
desktop grid gap, which was tuned for un-boxed content and reads as
adrift once the cards have visible edges.

Name the component group --ds-feature-* rather than --ds-card-*: a
generic soft-ambient --ds-card-* group already exists and, being
declared later in the same :root, would have overridden bg, radius and
shadow. That group is left in place as spec.

Dark-theme values are inferred; the mockups only cover light.
Code/reference rows take the comic treatment: both halves get a hard
outline and hard offset shadow, backdrop blur is dropped, and the panel
labels (h2 symbol title, h3 sections) go gold, uppercase and italic per
the mockups. h4 stays in the reading face, since that is only the NOTE
admonition. These rules are appended last on purpose so they win over
the theme-aware surface block at equal specificity.

This overrides the panel-heading exemption for the landing page only.
The docs site keeps it: there the headings are arbitrary template
signatures, whereas here they are five short curated names.

Theme toggle now follows the Figma "Secondary/Default" spec exactly:
38x38, 5px padding, 2px edge, 2px 2px 0 shadow, 22px icon, square
corners (the export omits a radius). Much of this existed already in the
B1 --navc-* group but targeted .nav-btn--toggle, markup that was dropped
when the shipped .theme-toggle-btn was kept; those dead rules are gone
and their spec now lives on the live button.

Edge and icon get their own tokens rather than reusing --navc-border and
--navc-shadow, which are shared with the navbar, GitHub button and
hamburger and have no Figma spec of their own.

Icons swap from filled glyphs to the stroked outlines the spec calls
for, with stroke="currentColor" so they theme, and the CSS fill is
removed because it would otherwise beat fill="none" and render them as
solid shapes. Template and generated HTML are updated together.
@github-actions

github-actions Bot commented Aug 18, 2026

Copy link
Copy Markdown

⚠️ Warnings

Warning

Commit types must be one of feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert. These commits need attention: wip(landing): B1 comic navbar + logo lockup, wip(landing): B2 comic feature cards, wip(landing): B3 panels + Figma theme toggle, wip(landing): pink label pills

ℹ️ Info

Note

PR description is missing template sections: Changes, Testing, Documentation. Following the pull request template helps reviewers find rationale, testing notes, and docs status quickly.

🧾 Changes by Scope

Scope Lines Δ% Lines Δ Lines + Lines - Files Δ Files + Files ~ Files ↔ Files -
📄 Docs 100% 1975 1674 301 12 2 10 - -
⚙️ CI <1% 3 3 - 1 - 1 - -
Total 100% 1978 1677 301 13 2 11 - -

Legend: Files + (added), Files ~ (modified), Files ↔ (renamed), Files - (removed)

🔝 Top Files

  • docs/website/styles.css (Docs): 1034 lines Δ (+846 / -188)
  • docs/shared/design-system.css (Docs): 435 lines Δ (+435 / -0)
  • docs/ui/src/css/tokens.css (Docs): 198 lines Δ (+198 / -0)

Generated by 🚫 dangerJS against 033123f

@codecov

codecov Bot commented Aug 18, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 83.12%. Comparing base (faea11b) to head (033123f).

Additional details and impacted files
@@           Coverage Diff            @@
##           develop    #1261   +/-   ##
========================================
  Coverage    83.12%   83.12%           
========================================
  Files           35       35           
  Lines         3662     3662           
  Branches       844      844           
========================================
  Hits          3044     3044           
  Misses         410      410           
  Partials       208      208           
Flag Coverage Δ
bootstrap 83.12% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@julioest julioest changed the title Draft: comic design refresh — design tokens + landing page Comic design refresh Aug 18, 2026
Add the magenta badges above each code/reference row and over the hero
title. Copy lives in data.json: an eyebrow at root and a label per
panel, keyed by source filename so reordering panels cannot misalign
them, stored in natural case with the uppercasing done in CSS.

Markup is {{#if}}-guarded so a panel without a label renders nothing,
and is mirrored into the generated index.html.

Styling follows the Figma spec: Bangers at 16px/16px with 0.1em
tracking, white on #EC4899, 2px #0F172A edge with a 2px 2px 0 shadow,
6px 12px padding, square corners. font-style is pinned upright since
Bangers has no italic cut and would otherwise be synthesised.

Corrects --ds-pink-500 from #e63c90, sampled off a mockup screenshot, to
the exact #EC4899. This also corrects the feature-card titles, which
route through the same --ds-color-label token.

Two labels are inferred rather than read off the design: is_prime.cpp,
which was illegible at screenshot resolution, and function_object.cpp,
which has no row in the mockup at all. Dark-mode values keep the
existing theme swap; the spec covers light only.
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