Axon 911 Frontend DocsAxon 911 Frontend Docs
Axon 911 Frontend Docs
    Loading navigation…
U
User
Switch to light mode
  1. Foundations
  2. Typography

Typography

Text types, sizes, and font variables that control hierarchy across the product. Nothing is larger than 24px.

Typography is Text from @prepared911/ui/text plus the --text-<role>-* custom properties in @prepared911/ui/styles.css. Each TextType applies the whole bundle: font, letter-spacing, and text wrap. Emphasis is a separate role, such as TextType.SubtitleMedium, not a strong or medium prop. The heading element is as. The visual role does not pick h1–h6.
The 24px ceiling
The largest font size anywhere in the application is 24px. Page is 24px and every other role is smaller, so a heading hierarchy that follows the order Page, Section, Subsection, Title, Subtitle never inverts. A test in @prepared911/ui fails when a role, a font-size token, or an authored stylesheet goes above the ceiling.
RoleSizeLine heightWeightLetter spacing
Page24px32px600-0.04em
Section20px26px600-0.02em
Subsection18px24px600-0.01em
Title16px24px4000em
TitleEmphasis16px24px6000em
Subtitle (default)14px20px4000em
SubtitleMedium14px20px5000em
BodyMedium13px18px4000em
BodyMediumEmphasis13px18px5000em
Label13px18px5000em
Caption12px16px4000em
CaptionEmphasis12px16px5000em
Code113px18px4000em
Code212px16px4000em
Overline12px16px5000.08em
Titles
Page, section, subsection, and title roles are the headings. Set as to the heading level the outline needs.
Page
TextType.Page · --text-page-* · 24px · 600 · h1The title of a page. The largest text in the product.
Section
TextType.Section · --text-section-* · 20px · 600 · h2Section headings within a page.
Subsection
TextType.Subsection · --text-subsection-* · 18px · 600 · h3Subsection headings nested under a section.
Title
TextType.Title · --text-title-* · 16px · 400 · h4Subheadings supporting a title or card header. TitleEmphasis is the same size at weight 600.
Body
Designed for multiple lines of text with comfortable line height for readability.
Subtitle
TextType.Subtitle · --text-subtitle-* · 14px · 400Default paragraph text. The most commonly used text style.
Subtitle medium
TextType.SubtitleMedium · --text-subtitle-medium-* · 14px · 500Emphasis inside body copy and list titles.
Body medium
TextType.BodyMedium · --text-body-medium-* · 13px · 400Dense body copy in tables and side panels.
Controls
Designed for single-line interactive contexts: labels and metadata.
Label
TextType.Label · --text-label-* · 13px · 500Form labels aligned to input controls.
Overline
TextType.Overline · --text-overline-* · 12px · 500 · UppercaseSection overlines and category labels. Automatically uppercased.
Caption
TextType.Caption · --text-caption-* · 12px · 400Timestamps, hints, and tertiary metadata.
Monospace
For code snippets, terminal output, and technical content. Uses --font-family-mono.
const specimen = 'Code 1'
TextType.Code1 · --text-code-1-* · 13px · 400 · Geist MonoCode blocks and inline code mentions.
const specimen = 'Code 2'
TextType.Code2 · --text-code-2-* · 12px · 400 · Geist MonoCompact code in tables, tooltips, and dense UI.
Families and weight
--font-family-sans powers UI copy and --font-family-mono powers monospace. The weight comes with the role, so you reach for a role, not a weight.
WeightRolesWhen to use
400Title, Subtitle, BodyMedium, Caption, Code1, Code2Default body text and captions
500SubtitleMedium, BodyMediumEmphasis, Label, CaptionEmphasis, OverlineEmphasis, labels, and interactive affordances
600Page, Section, Subsection, TitleEmphasisHeadings
Below the Title size (16px), emphasis stops at weight 500.
Foreground
Text takes a foreground from Foreground to express semantic meaning.
VariantWhen to use
Foreground.DefaultPrimary content (default)
Foreground.SubtleSecondary and supporting text
Foreground.MutedTertiary metadata
Foreground.DisabledDisabled controls and inactive states
Foreground.LinkLinks
Foreground.AccentAccent text and interactive highlights
Foreground.InformativeInformational callouts
Foreground.SuccessPositive confirmations
Foreground.WarningCautionary messages
Foreground.DestructiveDestructive or error states
Migrating from BodyLarge
TextType.BodyLarge and TextType.BodyLargeEmphasis were removed with the 24px ceiling.
BeforeAfter
TextType.BodyLargeTextType.Subtitle
TextType.BodyLargeEmphasisTextType.SubtitleMedium
var(--text-body-large-*)var(--text-subtitle-*)
var(--text-body-large-emphasis-*)var(--text-subtitle-medium-*)
Every other role keeps its name and moves down the scale: Page 36px to 24px, Section 30px to 20px, Subsection 24px to 18px, Title and TitleEmphasis 20px to 16px, and Subtitle and SubtitleMedium 16px to 14px. Where a screen set a Subtitle run beside a BodyLarge run to show a hierarchy, use Title for the larger run.
Usage expectations
  • Reach for TextType roles before composing font-size and font-weight manually, and never write a font size above 24px.
  • Use titles (Page to Title) only for actual headings: pair each with the as element the outline needs.
  • Pair Caption and BodyMedium with Foreground.Subtle for secondary content to establish clear hierarchy.
  • Reserve Overline for category labels and small section intros; it renders as uppercase by default.
  • Never skip heading levels: go h1, h2, h3, h4.
Previous
Colors
Next
Icons
On this page
The 24px ceiling
Titles
Body
Controls
Monospace
Families and weight
Foreground
Migrating from BodyLarge
Usage expectations