Skip to content

Commit 4897ebc

Browse files
authored
Merge pull request #42 from btravstack/feat/add-entity
feat(website): add @btravstack/entity to the stack
2 parents 335b615 + 9a3d60a commit 4897ebc

6 files changed

Lines changed: 32 additions & 11 deletions

File tree

.changeset/entity-accent-token.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
"@btravstack/theme": minor
3+
---
4+
5+
Add `--pkg-entity`, amber `#C8871F`, for `@btravstack/entity`.
6+
7+
Amber encases and preserves — a thing suspended intact, permanently — which is
8+
sealed construction and immutable data. entity's docs previously used
9+
`--bt-pink-soft`, the org accent, which the multi-accent rule reserves for org
10+
chrome.

apps/website/.vitepress/theme/Landing.vue

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ interface Project {
4444
docs: string;
4545
}
4646
47-
// unthrown leads: it's the base the two contract packages build on, and the
48-
// most versatile of the three.
47+
// Ordered as the stack reads — errors, the domain built on them, then the
48+
// transports that carry it. unthrown leads: the other three build on it.
4949
const projects: Project[] = [
5050
{
5151
key: "unthrown", tag: "Errors", name: "unthrown", pkg: "unthrown", npm: "unthrown",
@@ -55,6 +55,14 @@ const projects: Project[] = [
5555
install: "pnpm add unthrown",
5656
repo: "https://github.com/btravstack/unthrown", docs: "https://btravstack.github.io/unthrown/",
5757
},
58+
{
59+
key: "entity", tag: "Domain", name: "entity", pkg: "@btravstack/entity", npm: "@btravstack/entity",
60+
logo: "/logos/entity", repoFull: "btravstack/entity", stars0: 3,
61+
blurb: "Domain entities declared once. One field map gives you a type, four request/response schemas, behaviour, and a class that is itself a zod schema — so entities nest inside each other without losing what makes them entities.",
62+
points: ["Branded fields and immutable data", "Sealed construction, enforced invariants", "Result instead of throws"],
63+
install: "pnpm add @btravstack/entity",
64+
repo: "https://github.com/btravstack/entity", docs: "https://btravstack.github.io/entity/",
65+
},
5866
{
5967
key: "amqp", tag: "Messaging", name: "amqp-contract", pkg: "@amqp-contract/contract", npm: "@amqp-contract/contract",
6068
logo: "/logos/amqp-contract", repoFull: "btravstack/amqp-contract", stars0: 18,
@@ -73,7 +81,7 @@ const projects: Project[] = [
7381
},
7482
];
7583
76-
/** Every repo shown on the page — the three published packages. */
84+
/** Every repo shown on the page — the published packages. */
7785
const allRepos = projects;
7886
7987
const stars = reactive<Record<string, number>>(
@@ -178,8 +186,8 @@ onMounted(() => {
178186

179187
<!-- The stack — each package in its own color -->
180188
<section id="packages" class="btv-section">
181-
<h2 class="btv-h2">Three libraries, one stack.</h2>
182-
<p class="btv-section-lead">Errors, messaging and workflows — three focused packages that compose into one coherent backend.</p>
189+
<h2 class="btv-h2">Four libraries, one stack.</h2>
190+
<p class="btv-section-lead">Errors, domain, messaging and workflows — four focused packages that compose into one coherent backend.</p>
183191
<div class="btv-panels">
184192
<article v-for="p in projects" :key="p.name" class="btv-panel" :style="{ '--pkg': `var(--pkg-${p.key})` }">
185193
<div class="btv-panel-top">

apps/website/public/logos/entity-dark.svg

Lines changed: 2 additions & 2 deletions
Loading

apps/website/public/logos/entity-light.svg

Lines changed: 2 additions & 2 deletions
Loading

design.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ grow.
99
*colorful stack of distinct tools* on a near-neutral black canvas: the
1010
beetroot pink is the ORG accent (wordmark, links, CTAs, mascot), while each
1111
package glows in **its own accent** — amqp orange, temporal indigo, unthrown
12-
teal. Weight-contrast typography (one grotesque at 400 vs
12+
teal, entity amber. Weight-contrast typography (one grotesque at 400 vs
1313
800), elevation through surface lightness, real numbers in the hero, and the
1414
gradient beetroot mascot as the one character moment.
1515

@@ -55,6 +55,7 @@ atmospheric (studied register — dark, quiet, confident; no blooms).
5555
| `--pkg-amqp` | `#FF6600` | darken 30% at point of use |
5656
| `--pkg-temporal` | `#6B76F2` | darken 30% at point of use |
5757
| `--pkg-unthrown` | `#3FB0A5` | darken 30% at point of use |
58+
| `--pkg-entity` | `#C8871F` | darken 30% at point of use |
5859

5960
**The multi-accent rule (the studied signature).** The canvas and chrome are
6061
near-neutral; color belongs to the *products*. Package names, category dots
@@ -149,6 +150,7 @@ The canonical export lives at `packages/theme/src/tokens.css` (published as
149150
--pkg-amqp: #FF6600;
150151
--pkg-temporal: #6B76F2;
151152
--pkg-unthrown: #3FB0A5;
153+
--pkg-entity: #C8871F;
152154
--font-display: "Geist", sans-serif; /* 800 for display */
153155
--font-body: "Geist", sans-serif;
154156
--font-mono: "JetBrains Mono", monospace;

packages/theme/src/tokens.css

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* glows in ITS OWN accent — the org reads as a colorful stack of distinct
1515
* tools, not a monochrome brand. The beetroot pink is the ORG accent
1616
* (wordmark, links, org CTAs); the per-package accents (amqp orange,
17-
* temporal indigo, unthrown teal) carry the packages.
17+
* temporal indigo, unthrown teal, entity amber) carry the packages.
1818
* Elevation through lightness, weight-contrast typography, real numbers.
1919
*
2020
* DARK is the canonical default. The light scheme overrides the semantic
@@ -43,6 +43,7 @@
4343
--pkg-amqp: #FF6600; /* RabbitMQ's orange */
4444
--pkg-temporal: #6B76F2; /* Temporal's indigo */
4545
--pkg-unthrown: #3FB0A5; /* outside the signal register: not a signal, a value */
46+
--pkg-entity: #C8871F; /* amber encases and preserves: sealed, immutable */
4647

4748
/* ── Surfaces (DARK scheme — canonical: near-neutral black) ──── */
4849
--bg: oklch(13% 0.006 310); /* ≈ #080709 — the canvas */

0 commit comments

Comments
 (0)