From ceba11a39a8209829092ea4406dc2d6040efc021 Mon Sep 17 00:00:00 2001 From: Benoit TRAVERS Date: Mon, 10 Aug 2026 16:38:55 +0200 Subject: [PATCH 1/2] feat(docs): theme 2.0.0, the lighter blue accent, and a light/dark logo pair MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three things the landing surfaced when di joined it as the fifth panel (btravstack/btravstack.github.io#43). Closes #6. Closes #7. **The accent.** `--accent` was `#2A62B8`, the logo's deep blue. The landing paints each package name in the raw accent against a `#100F12` card, and that hex measures 3.22 there — the other four packages sit at 5.00–7.25. It is now `#3E7FD4`, the logo's *lighter* blue: 4.72 on the dark card, 7.10 as darkened text on white. The original reasoning is untouched and still holds — blue is plumbing, and the hex is one the mark itself already paints (barrel rim, plunger, needle hub), so chrome and artwork stay one color. **The logo pair.** di shipped only `logo.svg`, and it was the one package without a `logo-{light,dark}` pair. Three of its values read against the canvas rather than against the artwork, so on a light background the near-white barrel washed out and the mark read as a floating beet with a blue cap. `logo-dark` is the existing file unchanged; `logo-light` inverts exactly those three — barrel `#EAF2FB`→`#2A2730`, plunger `#2A62B8`→`#3E7FD4`, needle `#9FB2C8`→`#5A6675`. The ticks stay at 50% opacity: 1.89 against the dark barrel versus 1.81 against the light one, so they read equally faint either way. The hero and the nav logo now take the pair; `logo.svg` stays the favicon and the JSON-LD mark. **The theme.** Catalog moves 1.7.0 → 2.0.0, which is where `--pkg-di` lives. The major is the removal of `--pkg-demesne` / `--pkg-start`; neither is referenced here, so nothing breaks. pnpm recorded the new version as a pinned `minimumReleaseAgeExclude` entry — replaced with the unversioned name and the rationale comment the other repos use, so the next release needs no entry. Docs build clean: `--accent: #3E7FD4` in the emitted CSS, no `2a62b8` left, all five `--pkg-*` tokens present and both retired ones gone, and both logo variants verified in both themes. --- docs/.vitepress/config.ts | 2 +- docs/.vitepress/theme/custom.css | 10 ++++++++-- docs/index.md | 3 ++- docs/public/logo-dark.svg | 30 ++++++++++++++++++++++++++++ docs/public/logo-light.svg | 34 ++++++++++++++++++++++++++++++++ pnpm-lock.yaml | 12 +++++------ pnpm-workspace.yaml | 7 ++++++- 7 files changed, 87 insertions(+), 11 deletions(-) create mode 100644 docs/public/logo-dark.svg create mode 100644 docs/public/logo-light.svg diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index a2e5952..2d5f549 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -122,7 +122,7 @@ export default defineConfig({ }, themeConfig: { - logo: "/logo.svg", + logo: { light: "/logo-light.svg", dark: "/logo-dark.svg" }, nav: [ // The guide is organised by the four Diátaxis modes; the dropdown links diff --git a/docs/.vitepress/theme/custom.css b/docs/.vitepress/theme/custom.css index fe04631..662f627 100644 --- a/docs/.vitepress/theme/custom.css +++ b/docs/.vitepress/theme/custom.css @@ -1,10 +1,16 @@ /* di accent — blue, the family's slot for this package (the logo's syringe * barrel is drawn in it). Blue is plumbing: the connections behind the wall * that everything visible runs on, which is what a wiring container is. The - * hex is the logo's own deep blue, so chrome and artwork stay one color. + * hex is the logo's own lighter blue — the barrel rim, the plunger and the + * needle hub — so chrome and artwork stay one color. + * + * Not the logo's deep #2A62B8, which this file used until the landing measured + * it: 3.22 against the dark card, where the other four package accents sit at + * 5.00–7.25. This one is 4.72 there and 7.10 as darkened text on white. It is + * --pkg-di in @btravstack/theme, so the landing panel and this site agree. * @btravstack/theme derives the accent shades from this token. */ :root { - --accent: #2a62b8; + --accent: #3E7FD4; } /* Hero name in the package accent — the BtravStack multi-accent rule: the diff --git a/docs/index.md b/docs/index.md index 8d97832..234ede9 100644 --- a/docs/index.md +++ b/docs/index.md @@ -8,7 +8,8 @@ hero: text: "Wiring, checked at compile time" tagline: Ports as the vocabulary your application defines, providers bound at one edge, and modules that declare their imports and exports — with unmet dependencies, leaked internals and resource leaks caught by the compiler, and Result instead of throws. image: - src: /logo.svg + light: /logo-light.svg + dark: /logo-dark.svg alt: di actions: - theme: brand diff --git a/docs/public/logo-dark.svg b/docs/public/logo-dark.svg new file mode 100644 index 0000000..3fcea93 --- /dev/null +++ b/docs/public/logo-dark.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/public/logo-light.svg b/docs/public/logo-light.svg new file mode 100644 index 0000000..9e479a2 --- /dev/null +++ b/docs/public/logo-light.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ae6a042..301c7b8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,8 +16,8 @@ catalogs: specifier: 0.2.1 version: 0.2.1 '@btravstack/theme': - specifier: 1.7.0 - version: 1.7.0 + specifier: 2.0.0 + version: 2.0.0 '@btravstack/tsconfig': specifier: 0.2.0 version: 0.2.0 @@ -131,7 +131,7 @@ importers: devDependencies: '@btravstack/theme': specifier: 'catalog:' - version: 1.7.0(vitepress@1.6.4(@algolia/client-search@5.56.0)(@types/node@26.1.2)(jiti@2.7.0)(postcss@8.5.26)(typescript@6.0.3)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3)) + version: 2.0.0(vitepress@1.6.4(@algolia/client-search@5.56.0)(@types/node@26.1.2)(jiti@2.7.0)(postcss@8.5.26)(typescript@6.0.3)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3)) '@btravstack/typedoc': specifier: 'catalog:' version: 0.1.0(typedoc-plugin-markdown@4.12.0(typedoc@0.28.20(typescript@6.0.3)))(typedoc@0.28.20(typescript@6.0.3)) @@ -381,8 +381,8 @@ packages: peerDependencies: oxlint: '>=1' - '@btravstack/theme@1.7.0': - resolution: {integrity: sha512-EcBvQruZdsiL/zuNsu7Y1r2FeMDv0J5LZJx7ikO6cFvNRzKCc63A7582gVmfJNQlGJIg0cUCjQXB4Tm1YHtyug==} + '@btravstack/theme@2.0.0': + resolution: {integrity: sha512-tEhaBntwON0PpDWoSsp1cwxmFAXlBk4sLld2U3/MRKWFxAl8/E0ZHtUyy/Bd5rShi7caI7dwq4PzC0mqh7psJA==} peerDependencies: vitepress: ^1.6.0 vue: ^3.3.0 @@ -3353,7 +3353,7 @@ snapshots: dependencies: oxlint: 1.77.0 - '@btravstack/theme@1.7.0(vitepress@1.6.4(@algolia/client-search@5.56.0)(@types/node@26.1.2)(jiti@2.7.0)(postcss@8.5.26)(typescript@6.0.3)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3))': + '@btravstack/theme@2.0.0(vitepress@1.6.4(@algolia/client-search@5.56.0)(@types/node@26.1.2)(jiti@2.7.0)(postcss@8.5.26)(typescript@6.0.3)(yaml@2.9.0))(vue@3.5.41(typescript@6.0.3))': dependencies: vitepress: 1.6.4(@algolia/client-search@5.56.0)(@types/node@26.1.2)(jiti@2.7.0)(postcss@8.5.26)(typescript@6.0.3)(yaml@2.9.0) optionalDependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 6e4fc53..1e6d1ef 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -13,7 +13,7 @@ catalog: "@btravstack/commitlint": 0.1.0 "@btravstack/lefthook": 0.1.1 "@btravstack/oxlint": 0.2.1 - "@btravstack/theme": 1.7.0 + "@btravstack/theme": 2.0.0 "@btravstack/tsconfig": 0.2.0 "@btravstack/typedoc": 0.1.0 "@changesets/cli": 2.31.1 @@ -77,6 +77,11 @@ peerDependencyRules: # Optional analytics peer of VitePress's bundled Algolia DocSearch. - search-insights +minimumReleaseAgeExclude: + # First-party shared config (@btravstack scope): adopt immediately, skip any + # registry-maturity delay — these are published from btravstack repos. + - "@btravstack/theme" + allowBuilds: esbuild: true lefthook: true From 9ea815bea2b0ce4ba31a0fd66d17684fdadf4307 Mon Sep 17 00:00:00 2001 From: Benoit TRAVERS Date: Mon, 10 Aug 2026 17:27:56 +0200 Subject: [PATCH 2/2] style(docs): lowercase the accent hex, as oxfmt requires MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `pnpm format --check` failed CI on this file. oxfmt normalises CSS hex values to lowercase, which is why every sibling site's `--accent` is lowercase and why this file's own `#2a62b8` was before it changed. The comment's hex follows, so the file does not mix cases with its own declaration. Note this is the opposite of the markdown convention: prose in changesets and `design.md` writes hexes uppercase. Each file type is internally consistent. Root cause of the miss: the shared pre-commit hook in @btravstack/lefthook globs `*.{ts,tsx,js,jsx,json,yaml,yml,md}`, which has no `css`, so this file was never formatted locally — the hook reported three files (config.ts, index.md, pnpm-workspace.yaml) and skipped this one. CI runs `oxfmt .` over everything. --- docs/.vitepress/theme/custom.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/.vitepress/theme/custom.css b/docs/.vitepress/theme/custom.css index 662f627..f8c19df 100644 --- a/docs/.vitepress/theme/custom.css +++ b/docs/.vitepress/theme/custom.css @@ -4,13 +4,13 @@ * hex is the logo's own lighter blue — the barrel rim, the plunger and the * needle hub — so chrome and artwork stay one color. * - * Not the logo's deep #2A62B8, which this file used until the landing measured + * Not the logo's deep #2a62b8, which this file used until the landing measured * it: 3.22 against the dark card, where the other four package accents sit at * 5.00–7.25. This one is 4.72 there and 7.10 as darkened text on white. It is * --pkg-di in @btravstack/theme, so the landing panel and this site agree. * @btravstack/theme derives the accent shades from this token. */ :root { - --accent: #3E7FD4; + --accent: #3e7fd4; } /* Hero name in the package accent — the BtravStack multi-accent rule: the