Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .changeset/entity-accent-token.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
"@btravstack/theme": minor
---

Add `--pkg-entity`, amber `#C8871F`, for `@btravstack/entity`.

Amber encases and preserves — a thing suspended intact, permanently — which is
sealed construction and immutable data. entity's docs previously used
`--bt-pink-soft`, the org accent, which the multi-accent rule reserves for org
chrome.
18 changes: 13 additions & 5 deletions apps/website/.vitepress/theme/Landing.vue
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ interface Project {
docs: string;
}

// unthrown leads: it's the base the two contract packages build on, and the
// most versatile of the three.
// Ordered as the stack reads — errors, the domain built on them, then the
// transports that carry it. unthrown leads: the other three build on it.
const projects: Project[] = [
{
key: "unthrown", tag: "Errors", name: "unthrown", pkg: "unthrown", npm: "unthrown",
Expand All @@ -55,6 +55,14 @@ const projects: Project[] = [
install: "pnpm add unthrown",
repo: "https://github.com/btravstack/unthrown", docs: "https://btravstack.github.io/unthrown/",
},
{
key: "entity", tag: "Domain", name: "entity", pkg: "@btravstack/entity", npm: "@btravstack/entity",
logo: "/logos/entity", repoFull: "btravstack/entity", stars0: 3,
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.",
points: ["Branded fields and immutable data", "Sealed construction, enforced invariants", "Result instead of throws"],
install: "pnpm add @btravstack/entity",
repo: "https://github.com/btravstack/entity", docs: "https://btravstack.github.io/entity/",
},
{
key: "amqp", tag: "Messaging", name: "amqp-contract", pkg: "@amqp-contract/contract", npm: "@amqp-contract/contract",
logo: "/logos/amqp-contract", repoFull: "btravstack/amqp-contract", stars0: 18,
Expand All @@ -73,7 +81,7 @@ const projects: Project[] = [
},
];

/** Every repo shown on the page — the three published packages. */
/** Every repo shown on the page — the published packages. */
const allRepos = projects;

const stars = reactive<Record<string, number>>(
Expand Down Expand Up @@ -178,8 +186,8 @@ onMounted(() => {

<!-- The stack — each package in its own color -->
<section id="packages" class="btv-section">
<h2 class="btv-h2">Three libraries, one stack.</h2>
<p class="btv-section-lead">Errors, messaging and workflows — three focused packages that compose into one coherent backend.</p>
<h2 class="btv-h2">Four libraries, one stack.</h2>
<p class="btv-section-lead">Errors, domain, messaging and workflows — four focused packages that compose into one coherent backend.</p>
<div class="btv-panels">
<article v-for="p in projects" :key="p.name" class="btv-panel" :style="{ '--pkg': `var(--pkg-${p.key})` }">
<div class="btv-panel-top">
Expand Down
4 changes: 2 additions & 2 deletions apps/website/public/logos/entity-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions apps/website/public/logos/entity-light.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 3 additions & 1 deletion design.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ grow.
*colorful stack of distinct tools* on a near-neutral black canvas: the
beetroot pink is the ORG accent (wordmark, links, CTAs, mascot), while each
package glows in **its own accent** — amqp orange, temporal indigo, unthrown
teal. Weight-contrast typography (one grotesque at 400 vs
teal, entity amber. Weight-contrast typography (one grotesque at 400 vs
800), elevation through surface lightness, real numbers in the hero, and the
gradient beetroot mascot as the one character moment.

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

**The multi-accent rule (the studied signature).** The canvas and chrome are
near-neutral; color belongs to the *products*. Package names, category dots
Expand Down Expand Up @@ -149,6 +150,7 @@ The canonical export lives at `packages/theme/src/tokens.css` (published as
--pkg-amqp: #FF6600;
--pkg-temporal: #6B76F2;
--pkg-unthrown: #3FB0A5;
--pkg-entity: #C8871F;
--font-display: "Geist", sans-serif; /* 800 for display */
--font-body: "Geist", sans-serif;
--font-mono: "JetBrains Mono", monospace;
Expand Down
3 changes: 2 additions & 1 deletion packages/theme/src/tokens.css
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* glows in ITS OWN accent — the org reads as a colorful stack of distinct
* tools, not a monochrome brand. The beetroot pink is the ORG accent
* (wordmark, links, org CTAs); the per-package accents (amqp orange,
* temporal indigo, unthrown teal) carry the packages.
* temporal indigo, unthrown teal, entity amber) carry the packages.
* Elevation through lightness, weight-contrast typography, real numbers.
*
* DARK is the canonical default. The light scheme overrides the semantic
Expand Down Expand Up @@ -43,6 +43,7 @@
--pkg-amqp: #FF6600; /* RabbitMQ's orange */
--pkg-temporal: #6B76F2; /* Temporal's indigo */
--pkg-unthrown: #3FB0A5; /* outside the signal register: not a signal, a value */
--pkg-entity: #C8871F; /* amber encases and preserves: sealed, immutable */

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