Brik Design System
Foundation

Typography

Font families, the type scale, weights, and the semantic role rule.

Typography tokens control font families, sizes, weights, and line heights. Each theme can override font families — switching themes refreshes the live previews on this page.

Font family must match the element's semantic role. Heading/title elements → --font-family-heading. Label/badge/tag/button/caption → --font-family-label. Body copy → --font-family-body. BDS defaults all three to the same family during development, so misuse only surfaces when a client theme assigns distinct typefaces — by which point the violation has shipped.

Heading casing

Headings and section titles use title case. This is the copy-side companion to the semantic role rule above: the role rule governs which font a heading uses, this governs how its words are capitalized. Apply it to every hardcoded heading and Section / __title string.

The rule

  • Capitalize the first and last word, and every major word (nouns, verbs, adjectives, adverbs, pronouns).
  • Lowercase these minor words unless they fall first or last:
    • articles — a, an, the
    • coordinating conjunctions — and, but, or, nor, for, so, yet
    • prepositions of three letters or fewerof, in, to, on, at, by
  • Capitalize both parts of a hyphenated compound — Full-Time, Inside-Out.
  • Pronouns are always capitalizedWe, Us, Our, Your, It.

Prepositions of four letters or more are treated as major words and stay capitalized (With, From, Into, Over).

Examples (from the brikdesigns.com #490 sweep):

Sentence caseTitle case
Our servicesOur Services
Get in touchGet in Touch
What we collectWhat We Collect
What we do with itWhat We Do With It
Your rightsYour Rights
Monthly support servicesMonthly Support Services
Other customer storiesOther Customer Stories
Share your detailsShare Your Details

Scope — what this does not govern:

  • CMS-authored content — service, story, and plan names are editor-owned; render them as authored. Don't auto-case at render time (lossy for acronyms and proper nouns, and the wrong ownership).
  • Conversational status / confirmation microcopy — "Message sent!", "Thanks! We'll be in touch." stay sentence case; they're voice, not headings.

Enforcement lives in each consumer repo (e.g. a JSX heading lint gate in brikdesigns, brikdesigns#491), not in BDS.

Font families

Display
ABCDEFGHIJKLM abcdefghijklm 0123456789
--font-family-display
Heading
ABCDEFGHIJKLM abcdefghijklm 0123456789
--font-family-heading
Body
ABCDEFGHIJKLM abcdefghijklm 0123456789
--font-family-body
Label
ABCDEFGHIJKLM abcdefghijklm 0123456789
--font-family-label

Semantic typography

These are the tokens components actually use. Each row renders the sample at its actual size — comparing a heading-md to a body-md is a hover-and-look operation, not a math operation.

Heading sizes

The heading scale starts at 18px (--heading-tiny). 16px territory is body and label.

Headings

--heading-tinyThe quick brown fox...
--heading-smThe quick brown fox...
--heading-mdThe quick brown fox...
--heading-lgThe quick brown fox...
--heading-xlThe quick brown fox...
--heading-xxlThe quick brown fox...
--heading-hugeThe quick brown fox...

Heading scale variants (data-mode-typography)

The heading scale is the one mode axis on --heading-* (see Cascade → Modes). Default needs no attribute; set data-mode-typography on :root (or any subtree) to select a variant. compact/comfortable/spacious are uniform density steps; expressive is a steeper modular curve (smaller small end, larger large end) for editorial / marketing surfaces. Values are --font-size-* references (px shown):

tokendefaultcompactcomfortablespaciousexpressive
--heading-tiny201822.525.316
--heading-sm22.52025.328.520
--heading-md25.322.528.53225.3
--heading-lg28.525.3323632
--heading-xl3228.53640.540.5
--heading-xxl363240.545.545.5
--heading-huge40.53645.55157.5
<html data-mode-typography="expressive"> <!-- whole document -->
<section data-mode-typography="compact">…</section> <!-- one subtree -->

display-* is mode-invariant — variants move --heading-* only.

Body sizes

Body

--body-tinyThe quick brown fox...
--body-xsThe quick brown fox...
--body-smThe quick brown fox...
--body-mdThe quick brown fox...
--body-lgThe quick brown fox...
--body-xlThe quick brown fox...
--body-hugeThe quick brown fox...

Label sizes

Labels

--label-tinyThe quick brown fox...
--label-xsThe quick brown fox...
--label-smThe quick brown fox...
--label-mdThe quick brown fox...
--label-lgThe quick brown fox...
--label-xlThe quick brown fox...

Display sizes

Display

--display-smThe quick brown fox...
--display-mdThe quick brown fox...
--display-lgThe quick brown fox...
--display-xlThe quick brown fox...

Icon sizes

Icon sizing tokens used by IconButton and inline icons.

Icons

--icon-tinyThe quick brown fox...
--icon-xsThe quick brown fox...
--icon-smThe quick brown fox...
--icon-mdThe quick brown fox...
--icon-lgThe quick brown fox...
--icon-xlThe quick brown fox...
--icon-hugeThe quick brown fox...

Font size scale (primitives)

Primitive scale from 10px to 515px. Components reference these only through the semantic tokens above.

--font-size-25The quick brown fox10.26px
--font-size-50The quick brown fox11.54px
--font-size-75The quick brown fox14px
--font-size-100The quick brown fox16px
--font-size-200The quick brown fox18px
--font-size-300The quick brown fox20px
--font-size-400The quick brown fox22.5px
--font-size-500The quick brown fox25.3px
--font-size-600The quick brown fox28.5px
--font-size-700The quick brown fox32px
--font-size-800The quick brown fox36px
--font-size-900The quick brown fox40.5px
--font-size-1000The quick brown fox45.5px
--font-size-1100The quick brown fox51px
--font-size-1200The quick brown fox57.5px
--font-size-1300Ag64.7px
--font-size-1400Ag72.8px
--font-size-1500Ag81.9px
--font-size-1600Ag92.2px
--font-size-1700Ag103.9px
--font-size-1800Ag116.9px
--font-size-1900Ag143px
--font-size-2000Ag171px
--font-size-2100Ag205px
--font-size-2200Ag247px
--font-size-2300Ag296px
--font-size-2400Ag355px
--font-size-2500Ag426px
--font-size-2600Ag515px

Font weights

--font-weight-lightThe quick brown fox (300)
--font-weight-thinThe quick brown fox (300)
--font-weight-regularThe quick brown fox (400)
--font-weight-mediumThe quick brown fox (500)
--font-weight-semi-boldThe quick brown fox (600)
--font-weight-boldThe quick brown fox (700)
--font-weight-extra-boldThe quick brown fox (800)
--font-weight-blackThe quick brown fox (900)

Line heights

TokenValue
--font-line-height-tight100%
--font-line-height-snug125%
--font-line-height-normal150%
--font-line-height-175175%
--font-line-height-200200%

On this page