Library overview

Opens the Library with the system itself: the five fields with their tokens and roles, the six-size type ramp, the spacing scale and the woven edge in both threads, each drawn by the real tokens.

Organism · stable · v1.0.0 · owner: Site system lead · contract 19 of 20 points (open: figma)

Do and don't

Do: The overview

Rendered by library-overview.ts

Open example: Library overview · Do: The overview Use the full-page example to follow page links.

Specimens drawn by the real tokens.

Do: Dyes only

Rendered by library-overview.ts

Open example: Library overview · Do: Dyes only Use the full-page example to follow page links.

Empty groups are left out.

Don't: Hand-picked hex swatches

Rendered by library-overview.ts

Renders nothing for these props (by design).

Renders nothing without data: a swatch is always a token.

Don't: A seventh size

Rendered by library-overview.ts

Open example: Library overview · Don't: A seventh size Use the full-page example to follow page links.

Only the six sizes exist; an unknown token has no class to draw it.

Rules

RuleWhyCheck
Every specimen is drawn by a token class, never by an inline value.A specimen that used its own value could drift from the system it documents.Automated: scripts/site/check-brand.ts (no raw values) and the no-inline-style gate

API

PropTypeRequiredDefaultWhat it does
dyeslistYesThe dye fields: colour, name, token and role (from brand.ts).
sizeslistYesThe six sizes: size, token and use (from brand.ts).
spaceslistYesThe spacing steps: step, token and pixel value (from the generated tokens).

Contract details

The full contract: identity, anatomy, variants, states, tokens, layout, motion, accessibility, content, tests

Identity

AspectValue
Idlibrary-overview
LayerOrganisms
Categorylibrary
OwnerSite system lead
Statusstable
Version1.0.0
Sourceapps/showcase/site/system/organisms/library-overview.ts (private repository; the contract and the render function are this one module)
VersionDateChange
1.0.02026-10-26Library overview as one module: its markup moved out of the page builder (scripts/site) into the system.

Use when

  • At the top of the Library index (/system/). Why: A design-system lead judges a system by its specimens first, then by its tables.

Do not use when

  • On marketing pages. Why: The overview documents the system; a page sells by showing the product working.

Anatomy

PartWhat it is
dyesul.lib-dyes: one dye field per colour, with its name, token and role
edgesdiv.lib-edges: a field joined to cotton by the woven edge, in the saffron and the ink thread
rampol.lib-ramp: each of the six sizes set in its own size
spacesol.lib-spaces: each step of the scale as a bar of its own width

Made of: dye-field, woven-edge, colour, type, spacing.

Used in: pages directly.

Variants

VariantWhenWhy
defaultWherever the page declaration places it.One shape per job keeps pages predictable.

States

StateRendered or not applicable
defaultdefault
hoverNot applicable: The library overview is not interactive, so it has no hover state.
focus-visibleNot applicable: The library overview does not take focus; links and buttons inside it carry their own focus ring.
activeNot applicable: The library overview cannot be pressed.
disabledNot applicable: The library overview has nothing to disable.
loadingNot applicable: The library overview is rendered at build time and is complete when the page loads.
emptyNot applicable: The library overview is not rendered without content; the builder skips it.
errorNot applicable: The library overview shows no data that can fail.
currentNot applicable: The library overview has no current item.
visitedNot applicable: The library overview is not a link.
expandedNot applicable: The library overview does not open or close.

Tokens

PartToken
dye.ground--field-bg via .field-<colour>
ramp.size--fs-display … --fs-label
space.bar--space-1 … --space-13
space.bar.colour--ink
label.font--type-label
--library-overview-gap-space-9var(--space-9)
--library-overview-margin-block-space-7var(--space-7)
--library-overview-margin-block-space-9var(--space-9)
--library-overview-gap-space-5var(--space-5)
--library-overview-gap-space-3var(--space-3)
--library-overview-gap-space-2var(--space-2)
--library-overview-padding-space-5var(--space-5)
--library-overview-font-type-h3var(--type-h3)
--library-overview-font-type-labelvar(--type-label)
--library-overview-font-type-smallvar(--type-small)
--library-overview-padding-space-6var(--space-6)
--library-overview-gap-space-4var(--space-4)
--library-overview-gap-space-1var(--space-1)
--library-overview-padding-block-end-space-4var(--space-4)
--library-overview-border-block-end-rule-hairvar(--rule-hair)
--library-overview-border-block-end-linevar(--line)
--library-overview-color-ink-2var(--ink-2)
--library-overview-font-family-font-displayvar(--font-display)
--library-overview-font-size-fs-displayvar(--fs-display)
--library-overview-font-weight-weight-heavyvar(--weight-heavy)
--library-overview-font-size-fs-h2var(--fs-h2)
--library-overview-font-size-fs-h3var(--fs-h3)
--library-overview-font-weight-weight-strongvar(--weight-strong)
--library-overview-font-size-fs-bodyvar(--fs-body)
--library-overview-font-size-fs-smallvar(--fs-small)
--library-overview-font-family-font-monovar(--font-mono)
--library-overview-font-size-fs-labelvar(--fs-label)
--library-overview-block-size-space-4var(--space-4)
--library-overview-background-inkvar(--ink)
--library-overview-inline-size-space-1var(--space-1)
--library-overview-inline-size-space-2var(--space-2)
--library-overview-inline-size-space-3var(--space-3)
--library-overview-inline-size-space-4var(--space-4)
--library-overview-inline-size-space-5var(--space-5)
--library-overview-inline-size-space-6var(--space-6)
--library-overview-inline-size-space-7var(--space-7)
--library-overview-inline-size-space-8var(--space-8)
--library-overview-inline-size-space-9var(--space-9)
--library-overview-inline-size-space-10var(--space-10)
--library-overview-inline-size-space-11var(--space-11)
--library-overview-inline-size-space-12var(--space-12)
--library-overview-inline-size-space-13var(--space-13)
--library-overview-color-field-fg-2var(--field-fg-2)

Layout

AspectValue
breakpointsRequired review at 390, 768, 1024 and 1440 px; execution is not implied by this declaration; columns stack under 768 px; the wrap keeps a 16 px gutter on phones.
wrappingText wraps; nothing scrolls sideways.
textExpansionJapanese runs 20 to 40% longer; headings break between phrases (jaBreaks) and blocks grow downwards.

Spacing and rhythm

AspectValue
internal--space-7 between groups; --space-4 inside a group.
externalInside the Library's prose column, before the numbers.
rhythmDyes, edges, ramp, spacing: the order the brand book uses.

Motion

AspectValue
NoneNo intrinsic element animation. The optional claude-entrance consumer profile may translate below-fold structure once (20px, --dur-weave, --ease-enter, --stagger); reduced motion disables it. This preserved baseline entrance is separate from element playback.

Runtime and reuse

  1. Render-only element; mount any registered child enhancements separately. Preserve required Site CSS, fonts, responsive and locale rules from nativeElement.

Accessibility passport

AspectValue
rolelists of specimens, each named by its token
nameThe group headings (h2)
keyboardLinks and buttons inside, in reading order.
focusThe --focus ring on every link and button inside.
screenReaderEach specimen reads its name, token and role or value; the bars and fields are not the only carrier of meaning.
contrastInk on cotton 14:1; text on every dye field 4.5:1 or better (checked by check-brand).
targetLinks and buttons are 44 px tall.

Content

SlotLengthVoice
role1 short sentenceWhat the colour is for

Good: “Indigo: Product and See”

Bad: “Primary blue”

Japanese: The Library is English only; the overview has no Japanese strings.

Icons and illustrations

None: this element uses no icon or illustration of its own.

Decisions and exceptions

Usage

66 uses across the built pages (measured by npm run site:system).

Tests

AspectValue
unittests/unit/site-system.test.ts: renders every do and don't example through the registry and checks the classes it owns
visualNot yet: there are no screenshot baselines; the Library page is checked for sideways scroll at 1440 px by tests/site/system.spec.ts
a11ytests/site/system.spec.ts: axe (0 serious or critical) on the element's Library page in light and dark
parityscripts/site/system/check.ts: Library examples are rendered by the same render function the site imports

Figma

not-yet: The Loom Site Figma library is the last stage of the plan; this element is not mapped yet.

Open in Storybook

Start with a conversation about your system.

We read your system, show you what we found, and agree with your team what to fix first.