Token Families

Developing

Every token in this system belongs to exactly one family — a pillar / layer / family grouping, e.g. paper / semantic / financial-report-layout. This page names the taxonomy so a producer archive can find the right family before guessing a token name, instead of drafting a near-duplicate because the real one wasn't easy to find.

41Token families
5Pillars
0Hand-maintained — generated from the same registry get_token reads

Shape: pillar / layer / family

A token's canonical id is its pillar and its full DTCG path, joined verbatim — no translation layer between the id, the CSS custom property, and what get_token matches on (see MCP & machine API). A family is the grouping one level up: every token that shares the same pillar, layer, and top-level name.

Pillar

The top-level tier: primitive, theme, paper, writing.

Layer

Only paper and writing genuinely nest under a primitive/semantic wrapper before their real groups start — so only those two pillars carry a layer. Every other pillar's layer is null; its first path segment is the family directly.

Family

The named group itself — a document family like financial-report-layout, a craft group like rhythm, or a primitive category like color. Every leaf token in a family shares the same id prefix.

Worked example: the token --ps-paper-semantic-financial-report-layout-header-rule has pillar paper, layer semantic, family financial-report-layout — readable directly off the id string, since the id is the pillar/layer/family path with no re-casing or re-delimiting.

Four pillars

Each row is a real pillar in the current export, not an aspirational list — counts are live, same source as the stat panel above.

PillarLayerWhat it holdsExample families
primitiveRaw, tenant-neutral values: color, spacing, typography, motion, borders, viewport, focus, duration.color (60), typography (14), size (13)
themePointSav's own default/reference theme — semantic-role mappings onto primitives, plus a dark-mode variant. The vendor's reference theme, not a tenant fork (see the pillar note below).semantic (53), dark (28), accessibility (5)
paperprimitive / semanticPrint/document-formatting substrate — page geometry, rule weights, type scales, and one semantic family per document register (legal agreements, financial reports, PDF-binder navigation, Mexico FIBRA trust/prospectus, org-chart print diagrams, …).mx-fibra-prospectus (49), legal-subscription-agreement (30), financial-report-layout (25)
writingprimitive / semanticProse-governance tokens — voice, rhythm, casing, register scale, disclaimer templates, and named content patterns for a specific document family.register (7), rhythm (7), pattern (4)
The theme pillar holds PointSav's own reference theme only — it is not a multi-tenant fork target. An adopting tenant's own brand-specific token values (e.g. Woodfine's palette) live in that tenant's own media-assets repo, layered on top via CSS custom-property override, not inside this pillar. See .agent/rules/design-tokens.md in the project-design archive for the full rationale.
A sixth and seventh pillar (org-chart color-extension tokens) were retired 2026-08-02 — their one real value is now paper.primitive.color.org-chart-role- warm-gray-* / paper.semantic.org-chart.role-warm-gray-*, alongside the rest of the org-chart document family's tokens. The retired pillars' names embedded a third-party product's brand directly into shipped CSS custom-property names, which this registry no longer does anywhere.

Finding the right family before drafting a new one

The failure mode this taxonomy exists to prevent: a producer archive can't find an existing family, assumes one doesn't exist, and drafts a near-duplicate under a new name. Two checks, in order:

1. Is it a document-family variation?

A new compliance document, print register, or legal instrument almost always composes existing paper.primitive.* and adds one new paper.semantic.<family>.* group — it very rarely needs new primitives. Check the Paper families table above and on Tokens — Paper tier before assuming none of the ten existing document families are close enough to extend from.

2. Is it a genuinely new value, or a tenant's brand fork?

A literal color/size/type value that's reusable across any adopting tenant belongs in primitive or a Paper/Writing family. A value that encodes one specific tenant's brand identity does not belong in this repository at all — see the pillar note above.

list_token_families(pillar?)

The machine-readable form of this page. Returns every family — the same rows as the table above — as JSON, optionally filtered to one pillar, sourced from the same generated token-families.json registry get_token and this page both read. See MCP & machine API for the full tool list and call shape.

Responseapplication/json
[
  { "pillar": "paper", "layer": "semantic", "family": "financial-report-layout", "member_count": 25 }
  // … 44 more
]
Important Information

Design System disclosure

This site provides open-source design tokens, documentation, and self-hostable software published by Woodfine Capital Projects Inc. Information here is for general reference only and does not constitute an offer, warranty, or a guarantee of fitness for any particular purpose. Statements regarding planned, intended, or targeted future features are forward-looking and subject to change without notice; they are not undertaken to be updated except as required by law.