Skip to content
Documentation

Foundations

Typography

Seven text styles, each a class with the same name as its Figma text style. Every line height sits on the 4 px grid, so text and controls line up.

Text styles

Put the class on any element: the style says how text looks, the element says what it is. A section title can be an <h2> with dsgn-heading on one page and dsgn-heading-s on another.

.dsgn-display32 / 40 px · semibold

Invoices paid on time

.dsgn-heading24 / 32 px · semibold

Invoices paid on time

.dsgn-heading-s20 / 28 px · semibold

Invoices paid on time

.dsgn-title18 / 24 px · semibold

Invoices paid on time

.dsgn-body16 / 24 px · regular

Invoices paid on time

.dsgn-body-s14 / 20 px · regular

Invoices paid on time

.dsgn-caption12 / 16 px · regular

Invoices paid on time

ClassSizeLine heightWeightUse for
.dsgn-display32 px40 px600The one big title of a landing page or an empty state.
.dsgn-heading24 px32 px600Page titles.
.dsgn-heading-s20 px28 px600Section titles inside a page.
.dsgn-title18 px24 px600Card, dialog and panel titles.
.dsgn-body16 px24 px400Running text.
.dsgn-body-s14 px20 px400Dense UI text, table cells, secondary text.
.dsgn-caption12 px16 px400Labels under images, timestamps, legal lines.

Helpers

Three classes cover the rest: dsgn-lead for intro paragraphs, dsgn-muted for secondary text and dsgn-eyebrow for the small label above a heading.

Billing

Invoices

Everything you sent this year, newest first.

Updated 5 minutes ago.

An eyebrow, a heading and a lead
<div class="dsgn-stack" data-gap="s">
  <p class="dsgn-eyebrow">Billing</p>
  <h2 class="dsgn-heading">Invoices</h2>
  <p class="dsgn-lead">Everything you sent this year, newest first.</p>
  <p class="dsgn-body-s dsgn-muted">Updated 5 minutes ago.</p>
</div>

The font

dsgn sets text in Inter. Fonts are not bundled, so load it yourself (see Load the fonts). A project theme can switch to another family; the sizes and line heights stay, so a different font never shifts the layout grid.

Sizes are in rem-based units: when a reader sets a larger default font size in the browser, all text grows with it, and the 2 px grid snapping keeps it sharp.