Skip to content

Diff: design-system/design-primitive-vocabulary.es

From 0a5b96f to 0a5b96f

+0 / −0 lines
BeforeAfter
--- ---
schema: foundry-doc-v1 schema: foundry-doc-v1
title: "Design System — Primitive Vocabulary Rationale" title: "Design System — Primitive Vocabulary Rationale"
slug: design-primitive-vocabulary slug: design-primitive-vocabulary
category: design-system category: design-system
type: reference type: reference
quality: complete quality: complete
status: active status: active
audience: public audience: public
bcsc_class: public-disclosure-safe bcsc_class: public-disclosure-safe
language_protocol: PROSE-TOPIC language_protocol: PROSE-TOPIC
last_edited: 2026-05-06 last_edited: 2026-05-06
editor: pointsav-engineering editor: pointsav-engineering
paired_with: design-primitive-vocabulary.es.md paired_with: design-primitive-vocabulary.es.md
cites: cites:
- wcag-22 - wcag-22
- dtcg-spec - dtcg-spec
- doctrine-38 - doctrine-38
--- ---
## What the substrate kept structurally ## What the substrate kept structurally
The substrate's primitive token layer preserves four structural patterns the modern design-system field has converged on (2018–2026): The substrate's primitive token layer preserves four structural patterns the modern design-system field has converged on (2018–2026):
1. **Numeric color scales (10 / 20 / ... / 100)** — established across the modern design-system field. A practitioner arriving from any major design system recognises the scale on first encounter. 1. **Numeric color scales (10 / 20 / ... / 100)** — established across the modern design-system field. A practitioner arriving from any major design system recognises the scale on first encounter.
2. **Primitive → Semantic → Component layering** — primitives ground the value; semantics map the role; components consume semantics. DTCG 2025.10 formalised aliasing across layers; the substrate uses the canonical alias syntax (`{semantic.token}`). 2. **Primitive → Semantic → Component layering** — primitives ground the value; semantics map the role; components consume semantics. DTCG 2025.10 formalised aliasing across layers; the substrate uses the canonical alias syntax (`{semantic.token}`).
3. **Productive vs Expressive type split** — the field's two-track typography model (UI-functional vs marketing-expressive) is structurally the right answer; most modern systems implement it under different names. The substrate ships Utility + Display. 3. **Productive vs Expressive type split** — the field's two-track typography model (UI-functional vs marketing-expressive) is structurally the right answer; most modern systems implement it under different names. The substrate ships Utility + Display.
4. **Numeric spacing scale (1..13)** — every modern design system ships ~12–15 step spacing scales aligned to a 4px or 8px base. The substrate uses 8px-base 13-step. 4. **Numeric spacing scale (1..13)** — every modern design system ships ~12–15 step spacing scales aligned to a 4px or 8px base. The substrate uses 8px-base 13-step.
These patterns are not the intellectual property of any single design system — they are the field's shared vocabulary. Re-implementing them is the correct architectural choice for any 2026 design system that wants practitioner pickup without re-teaching basics. These patterns are not the intellectual property of any single design system — they are the field's shared vocabulary. Re-implementing them is the correct architectural choice for any 2026 design system that wants practitioner pickup without re-teaching basics.
## What the substrate replaced ## What the substrate replaced
The substrate uses PointSav-original vocabulary, hex values, font choices, and content. Specifically: The substrate uses PointSav-original vocabulary, hex values, font choices, and content. Specifically:
| Surface | Common field convention | Substrate choice | Why replaced | | Surface | Common field convention | Substrate choice | Why replaced |
|---|---|---|---| |---|---|---|---|
| Color family names | `gray`, `blue`, `red`, `green`, `yellow` | `neutral`, `primary`, `positive`, `caution`, `critical` | Role-names per Agent B research §9. PointSav's names describe role, not chromatic family — tenants who shift their brand from blue to teal don't have to rename tokens. | | Color family names | `gray`, `blue`, `red`, `green`, `yellow` | `neutral`, `primary`, `positive`, `caution`, `critical` | Role-names per Agent B research §9. PointSav's names describe role, not chromatic family — tenants who shift their brand from blue to teal don't have to rename tokens. |
| Hex values | Vendor-specific shades | PointSav-chosen shades (e.g., Primary 60 = `#234ed8`) | Avoid IP entanglement; the substrate stands on its own values. | | Hex values | Vendor-specific shades | PointSav-chosen shades (e.g., Primary 60 = `#234ed8`) | Avoid IP entanglement; the substrate stands on its own values. |
| Spacing token name | `spacing-01` through `spacing-13` (zero-padded) | `space-1` through `space-13` (no zero-pad) | Slightly cleaner; same numeric scale; same 8px-base structure. | | Spacing token name | `spacing-01` through `spacing-13` (zero-padded) | `space-1` through `space-13` (no zero-pad) | Slightly cleaner; same numeric scale; same 8px-base structure. |
| Type-scale family names | `productive-01..N`, `expressive-01..N` | `utility-1..4`, `display-1..4` | Same conceptual split; PointSav-original names. | | Type-scale family names | `productive-01..N`, `expressive-01..N` | `utility-1..4`, `display-1..4` | Same conceptual split; PointSav-original names. |
| Motion easing names | `ease-productive`, `ease-expressive`, `ease-entrance`, `ease-exit` | `ease-utility`, `ease-display`, `ease-enter`, `ease-exit` | Same four-curve set; aligned to the type-scale renaming. | | Motion easing names | `ease-productive`, `ease-expressive`, `ease-entrance`, `ease-exit` | `ease-utility`, `ease-display`, `ease-enter`, `ease-exit` | Same four-curve set; aligned to the type-scale renaming. |
| Duration names | `fast-01`, `fast-02`, `moderate-01`, `moderate-02`, `slow-01`, `slow-02` | `speed-1` through `speed-6` | Same six-step scale; cleaner naming. | | Duration names | `fast-01`, `fast-02`, `moderate-01`, `moderate-02`, `slow-01`, `slow-02` | `speed-1` through `speed-6` | Same six-step scale; cleaner naming. |
| Border radius names | `radius-01`, `radius-02`, `radius-03` | `corner-1`, `corner-2`, `corner-3` | Same three-step scale; differentiated naming. | | Border radius names | `radius-01`, `radius-02`, `radius-03` | `corner-1`, `corner-2`, `corner-3` | Same three-step scale; differentiated naming. |
| Default font | A corporate-sponsored open-source face | Inter (community open-source, SIL OFL 1.1) + system stack fallback | No corporate brand association; Inter is the modern UI workhorse; system stack ensures graceful degradation. | | Default font | A corporate-sponsored open-source face | Inter (community open-source, SIL OFL 1.1) + system stack fallback | No corporate brand association; Inter is the modern UI workhorse; system stack ensures graceful degradation. |
| Theme names | Brand-specific light/dark labels | `pointsav-brand` (canonical), per-tenant variants | PointSav ships the canonical brand and SMB customers ship their own. | | Theme names | Brand-specific light/dark labels | `pointsav-brand` (canonical), per-tenant variants | PointSav ships the canonical brand and SMB customers ship their own. |
## What the substrate kept verbatim from broader convention ## What the substrate kept verbatim from broader convention
These are field-shared, not vendor-proprietary: These are field-shared, not vendor-proprietary:
- `$type: "color"`, `$value`, `$description` — DTCG 2025.10 spec syntax - `$type: "color"`, `$value`, `$description` — DTCG 2025.10 spec syntax
- `{path.to.token}` reference syntax — DTCG aliasing - `{path.to.token}` reference syntax — DTCG aliasing
- WCAG 2.2 AAA contrast floor — accessibility standard - WCAG 2.2 AAA contrast floor — accessibility standard
- `prefers-reduced-motion` query — CSS Media Queries Level 5 - `prefers-reduced-motion` query — CSS Media Queries Level 5
- 8px base grid for spacing — common across the field - 8px base grid for spacing — common across the field
These are the open standards the substrate inherits as an open standards consumer. These are the open standards the substrate inherits as an open standards consumer.
## Why the muscle-memory matters ## Why the muscle-memory matters
A designer or developer arriving from any modern design-system background recognises the substrate's structural patterns within seconds: A designer or developer arriving from any modern design-system background recognises the substrate's structural patterns within seconds:
- "Numeric color scale, lower numbers lighter — same as everywhere else." - "Numeric color scale, lower numbers lighter — same as everywhere else."
- "Primitive → semantic → component layering — same as DTCG aliasing." - "Primitive → semantic → component layering — same as DTCG aliasing."
- "Two type tracks for UI vs expressive — same as the productive/expressive split." - "Two type tracks for UI vs expressive — same as the productive/expressive split."
This recognition is the cognitive on-ramp. It is the substrate's biggest piece of free leverage — a practitioner ramps in days, not weeks. Discarding it for novelty's sake would be a bad trade. This recognition is the cognitive on-ramp. It is the substrate's biggest piece of free leverage — a practitioner ramps in days, not weeks. Discarding it for novelty's sake would be a bad trade.
## Why the vocabulary matters ## Why the vocabulary matters
A token named for a chromatic family in PointSav's code that uses a vendor's exact shade puts the substrate one trademark dispute away from a rebrand. A token named by role with a PointSav-chosen shade does not. A token named for a chromatic family in PointSav's code that uses a vendor's exact shade puts the substrate one trademark dispute away from a rebrand. A token named by role with a PointSav-chosen shade does not.
The structural patterns are field-shared; the literal tokens are not. The structural patterns are field-shared; the literal tokens are not.
## See Also ## See Also
- [[design-philosophy]] - [[design-philosophy]]
- [[design-color]] - [[design-color]]
- [[design-typography]] - [[design-typography]]
## References ## References
- W3C Design Tokens Community Group format — https://design-tokens.github.io/community-group/format/ - W3C Design Tokens Community Group format — https://design-tokens.github.io/community-group/format/
- WCAG 2.2 — https://www.w3.org/TR/WCAG22/ - WCAG 2.2 — https://www.w3.org/TR/WCAG22/
- Doctrine claim #38 — `~/Foundry/DOCTRINE.md` §III row 38 - Doctrine claim #38 — `~/Foundry/DOCTRINE.md` §III row 38
- Convention — `~/Foundry/conventions/design-system-substrate.md` - Convention — `~/Foundry/conventions/design-system-substrate.md`