Branding
The [d]uxt mark — where each asset is used, why the icon's brackets are redrawn, and the colours that are fixed.
The wordmark is AI-assisted placeholder work — designed in a session with an AI coding agent, not by a designer, and a stand-in to be replaced at some point with no fixed timeline. No image generator was involved: it is typeset, not drawn.
The mark is the package name with its first letter bracketed — [d]uxt —
because that is how the package is written where it is used:
extends: ['@kirchdev/duxt'];
An array with one entry. It is set in IBM Plex Mono SemiBold and converted to outlines, so no asset depends on the font being installed anywhere.
The assets
| Asset | Path | Used by |
|---|---|---|
| Wordmark | .github/assets/wordmark-light.svg, wordmark-dark.svg | The README hero, via <picture> |
| Site icons | www/public/favicon.svg, apple-touch-icon.png (180×180) | The browser tab |
| In-site wordmark | www/public/wordmark.svg, wordmark-dark.svg | duxt.logo in www/ |
The README wordmark narrows the bracket cells by 120 font units: Plex Mono gives
[ a 600-unit cell for 311 units of ink, and at full monospace width the
brackets sit in a word-space of their own.
The favicon carries its own prefers-color-scheme rule, so both colours lighten
against a dark tab strip. The PNG exists only because iOS ignores SVG icons.
The icon's brackets are redrawn, the d is not
Plex's bracket is 311 units wide against a 486-unit d, and at 16 px that split
closes the bowl into a smudge. The icon keeps the font's own stem (104) and arm
(88) but shortens the arm to 185, which squares the mark up from 1.45∶1 to
1.13∶1 and buys the counter the pixels it needs.
The wordmark has no such constraint and stays pure Plex. That is the whole difference between the two files, and the reason they cannot be generated from one source.
Colours
The brackets carry the colour; the letters take the surrounding text colour. Only the bracket pair is fixed.
| Role | Hex | OKLCH |
|---|---|---|
| Brackets (light) | #4F46E5 | oklch(0.511 0.230 277) |
| Brackets (dark) | #7D7BF5 | oklch(0.644 0.178 281) |
| Letters (light) | #15171E | oklch(0.206 0.014 273) |
| Letters (dark) | #E8EBF2 | oklch(0.940 0.010 267) |
Licensing
IBM Plex is SIL OFL 1.1, and clause 5 settles this case explicitly: "The requirement for fonts to remain under this license does not apply to any document created using the Font Software." An SVG holding outlines is such a document, no font file is redistributed, and the reserved name "Plex" appears nowhere in the assets. Nothing has to be paid, attributed or relicensed — the credit above is courtesy.
None of this ships
duxt.logo is unset by default, and DuxtBrand falls back to the consumer's own
duxt.title beside a generic icon. A site extending duxt shows its own name in
the header and footer and its own icon in the tab, never this one. Every asset
above belongs to this repository and to www/ — none of them is in the published
package.
Setting your own is Brand your site.