Typography
Lyra’s typography tokens connect a compact text scale to clear semantic roles. Use the role token a component calls for, rather than choosing a font family, weight or size directly in product CSS.
Scale
The --text-* ramp runs from 12px to 60px. It is the shared source for component density, headings
and display moments: smaller steps support metadata, the middle steps carry interface copy, and the
largest steps establish page hierarchy. Choose the semantic font token first; reach for a scale step
only when defining a new semantic role.
Text scale — 12px to 60px
Each row uses its matching --text-* token. The label is the token API; the pixel value is a
reference for comparing steps, not a value to copy into a component.
--text-xs12pxLyra Design System--text-sm13pxLyra Design System--text-base14pxLyra Design System--text-md16pxLyra Design System--text-lg18pxLyra Design System--text-xl20pxLyra Design System--text-2xl24pxLyra Design System--text-3xl30pxLyra Design System--text-4xl38pxLyra Design System--text-5xl48pxLyra Design System--text-6xl60pxLyra Design SystemDisplay and headings
--display-font and the heading tokens combine Plus Jakarta Sans with their intended weight, size
and line-height. Pair display text with --tracking-display and headings with --tracking-heading
to preserve the compact optical rhythm of the hierarchy. --h3-font returns to normal tracking for
a quieter subsection heading.
Display and heading roles
Use these complete font shorthands for page titles and section headings. The labels expose the tracking token and the token’s current composition so its visual purpose remains inspectable.
--display-font · --tracking-display · 48px / 1.15 · 800 · -0.03em--h1-font · --tracking-heading · 30px / 1.3 · 700 · -0.02em--h2-font · --tracking-heading · 24px / 1.3 · 700 · -0.02em--h3-font · --tracking-normal · 20px / 1.3 · 600 · 0Body
--body-font is the 14px default for controls, menus, tables and card copy. Use
--body-strong-font when emphasis should stay within the same scale step; use the 16px scale with
relaxed leading for long-form reading. Pair each role with --text-primary, --text-secondary or
--text-muted according to the importance of the content.
Body and UI copy
Overlines, captions and strong body copy are separate roles, not ad-hoc combinations of uppercase, weight and color. That lets the same hierarchy adapt with the theme.
--body-font: 14px with normal leading for tables, forms, menus and cards.--body-strong-font adds emphasis without changing the text scale.--caption-font · 12px medium for hints, timestamps and metadata.Overline labels
--overline-transform defaults to uppercase. --overline-tracking defaults to initial,
which keeps each label's existing spacing: --tracking-caps (0.08em) for most labels, 0.06em
for combobox groups, and 0.04em for calendar and scheduling labels. These tokens control table
headers, sidebar and menu group labels, pageheader eyebrows, code language labels, and other
overline-style metadata. The table sort button inherits its header's casing and spacing.
For sentence case, set both tokens on your application or brand scope:
[data-brand='harbor'] {
--overline-transform: none;
--overline-tracking: normal;
}Mono
--font-mono is JetBrains Mono, reserved for code, token names and technical data. The
--code-font shorthand gives code its standard 13px size and readable leading. Keep technical
fragments distinct from prose with semantic surface, border and text tokens instead of custom colors.
Code and token labels
Use monospace for snippets, inline commands and token names. It is a content role, not an alternative body typeface.
import { Button } from '@lyra-ds/react';pnpm add @lyra-ds/react and import styles.css.--font-mono · JetBrains Mono · --code-font · 13px / 1.5