Skip to content

Typography

Typography in Tessera UI establishes visual hierarchy and readability. The type system uses two font families and a constrained scale aligned with Material Design 3 roles.


Plus Jakarta Sans

ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789 !@#$%^&*()

—ts-font-family-base: ‘Plus Jakarta Sans’, -apple-system, BlinkMacSystemFont, ‘Segoe UI’, sans-serif

JetBrains Mono

ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789 => {} [] () <>

—ts-font-family-mono: ‘JetBrains Mono’, ‘Fira Code’, ‘Consolas’, monospace


Ag
Regular
400
Ag
Medium
500
Ag
Semibold
600
Ag
Bold
700

Each size step provides a meaningful visual distinction. The scale uses rem units based on a 16px root.

TokenSizePixelsPreview
—ts-font-size-2xs0.6875rem11pxThe quick brown fox
—ts-font-size-xs0.75rem12pxThe quick brown fox
—ts-font-size-sm0.875rem14pxThe quick brown fox
—ts-font-size-md1rem16pxThe quick brown fox
—ts-font-size-lg1.375rem22pxThe quick brown fox
—ts-font-size-xl1.5rem24pxThe quick brown fox
—ts-font-size-2xl1.75rem28pxThe quick brown fox
—ts-font-size-3xl2rem32pxThe quick brown fox
—ts-font-size-4xl2.8125rem45pxQuick fox
—ts-font-size-5xl3.5625rem57pxQuick

Composite type roles combine size, weight, line-height, and letter-spacing into semantic groupings aligned with Material Design 3.

Large hero and marketing text. Uses responsive clamp() for fluid sizing.

Display Large

Sizeclamp(45px, 5vw + 1rem, 88px)
Weight600 (Semibold)
Line Height1.09
Spacing0

Display Medium

Sizeclamp(32px, 4vw + 1rem, 57px)
Weight600 (Semibold)
Line Height1.12
Spacing0

Display Small

Sizeclamp(28px, 3vw + 0.75rem, 45px)
Weight600 (Semibold)
Line Height1.16
Spacing0

Page and section headers with responsive sizing.

Heading Large

Sizeclamp(24px, 2vw + 0.5rem, 32px)
Weight600 (Semibold)
Line Height1.25
Spacing0

Heading Medium

Sizeclamp(20px, 1.5vw + 0.5rem, 28px)
Weight600 (Semibold)
Line Height1.29
Spacing0

Heading Small

Size24px
Weight600 (Semibold)
Line Height1.33
Spacing0

Card headers, dialog titles, and navigation items.

Title Large — card headers and dialog titles

Size22px
Weight400 (Regular)
Line Height1.36

Title Medium — sub-headings and section titles

Size16px
Weight500 (Medium)
Line Height1.5

Title Small — navigation items and table headers

Size14px
Weight500 (Medium)
Line Height1.43

Prose, descriptions, and general content.

Body Large — primary reading text for articles, descriptions, and long-form content. Designed for comfortable extended reading with generous line height.

Size16px
Weight400 (Regular)
Line Height1.5

Body Medium — the default text size for most UI content. Used in form descriptions, helper text, and secondary information.

Size14px
Weight400 (Regular)
Line Height1.43

Body Small — compact content for dense interfaces. Used for table cells, metadata, and supplementary text that doesn’t need prominent display.

Size12px
Weight400 (Regular)
Line Height1.33
Spacing0.006em

Buttons, form labels, and badges.

Label Large — Primary button text, form labels

Size14px
Weight500 (Medium)
Line Height1.43

Label Medium — Small button text, badge labels

Size12px
Weight500 (Medium)
Line Height1.33
Spacing0.006em

Label Small — Micro labels, overlines

Size11px
Weight500 (Medium)
Line Height1.45
Spacing0.009em

Timestamps, footnotes, and fine print.

Caption — timestamps, footnotes, and supplementary fine print that sits below primary content

Size12px
Weight400 (Regular)
Line Height1.33
Spacing0.006em

TokenValueUsage
--ts-line-height-tight1.25Headings, labels
--ts-line-height-normal1.43Body text (M3: 20/14, 24/16)
--ts-line-height-loose1.5Display text, long-form content
TokenValueUsage
--ts-letter-spacing-tighter-0.02emLarge display text
--ts-letter-spacing-tight-0.01emHeadings
--ts-letter-spacing-normal0Most text roles
--ts-letter-spacing-wide0.006emBody small, label medium
--ts-letter-spacing-wider0.009emLabel small (11px)
--ts-letter-spacing-widest0.05emAll-caps text, overlines