Components / Typography
SpringHeading for display/headings and SpringText for body, labels, and legal. Prefer these over one-off text-[length:var(--spring-…)] classes.Quick rules
h1 (or hero for marketing display).as when visual style and document outline must diverge (e.g. visually h2, semantically h3).SpringText color — no raw hex.Install the package from npm, then import the component in your application code.
02
Display/Hero — 70 / 80 · bold · heading family
Heading/h1 — 48 / 56 · bold
Heading/h2 — 36 / 44 · semibold
Heading/h3 — 25 / 32 · semibold
Heading/h4 — 22 / 32 · semibold
Source: SpringHeading.tsx
03
Body/body — 16 / 24 · regular
Body — the default paragraph style for long-form copy.
Body/body-strong — 16 / 24 · bold
Body strong — emphasis inside body copy.
Body/body-sm — 14 / 22 · regular
Body sm — secondary supporting lines and dense UI text.
Body/body-xs — 12 / 18 · regular
Body xs — compact helper text and captions.
Body/legal — 10 / 18 · regular
Legal — disclosures, footnotes, and fine print.
Label/label-base — 16 / 24 · semibold
Label base — section and control labels.
Label/button — 16 / 16 · semibold
Label button — button and CTA labels.
Label/field — 14 / 20 · semibold
Label field — input and field labels.
Label/xs — 10 / 16 · semibold · uppercase tracking
Label xs
Source: SpringText.tsx
04
primary
color="primary"
The quick brown fox jumps over the lazy dog.
secondary
color="secondary"
The quick brown fox jumps over the lazy dog.
muted
color="muted"
The quick brown fox jumps over the lazy dog.
placeholder
color="placeholder"
The quick brown fox jumps over the lazy dog.
disabled
color="disabled"
The quick brown fox jumps over the lazy dog.
brand
color="brand"
The quick brown fox jumps over the lazy dog.
status-error
color="status-error"
The quick brown fox jumps over the lazy dog.
status-success
color="status-success"
The quick brown fox jumps over the lazy dog.
status-warning
color="status-warning"
The quick brown fox jumps over the lazy dog.
status-info
color="status-info"
The quick brown fox jumps over the lazy dog.
On inverse surface
Inverse text on inverse background.
On-brand label
05
06
| Prop | Type | Notes |
|---|---|---|
| variant | 'hero' | 'h1' | 'h2' | 'h3' | 'h4' | Token style. Defaults to h1. |
| as | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' | 'div' | Rendered element. Defaults to the semantic tag for the variant (hero → h1). |
| childrenrequired | ReactNode | Heading copy. |
| className | string | Merged onto the root for layout overrides. |
| Prop | Type | Notes |
|---|---|---|
| variant | 'body' | 'body-strong' | 'body-sm' | 'body-xs' | 'legal' | 'label' | 'label-button' | 'label-field' | 'label-xs' | Token style. Defaults to body. |
| color | 'primary' | 'secondary' | 'muted' | 'placeholder' | 'disabled' | 'brand' | 'on-brand' | 'inverse' | 'status-*' | Semantic text color token. Defaults to primary. |
| as | 'p' | 'span' | 'div' | 'label' | 'li' | 'strong' | 'em' | 'small' | Rendered element. Defaults to p. |
| childrenrequired | ReactNode | Text content. |
| className | string | Merged onto the root for layout overrides. |