Foundations
Size, family, weight, tracking, and leading tokens with paired default line-heights. Tune a specimen in the studio, then use the guide and API below.
Pick a role or scale step, then adjust family, weight, tracking, and leading. Copy the active class list or token from the meta strip.
Export CSS variables
Size utilities set font-size and a paired default line-height. Adjust weight, tracking, or leading on the specimen without leaving the stage.
--df-text-2xl
Scale
Select a step to load the specimen
Product chrome patterns using the type scale. Prefer utilities for layout; reach for tokens when a style prop needs a length.
Compact uppercase labels for docks, panels, and control groups.
Export
Format
CSS variables
Density
--df-neutral-detailed-500
Title and supporting line for cards, empty states, and side panels.
Compact and detailed aliases share the same step names. Utilities follow the active color scale mode on the document root.
Keep size stable and change weight or tracking for emphasis.
Normal body copy for panel descriptions and helper text.
Medium weight for secondary emphasis in tool chrome.
Semibold for section titles and primary actions.
Section label
Each text-* size ships a default line-height. Override with leading-* when the measure needs to change.
text-sm leading-5
Size utilities already include a default line-height. Use a separate leading class when a block needs a tighter or looser measure.
text-sm leading-7
Size utilities already include a default line-height. Use a separate leading class when a block needs a tighter or looser measure.
Sans for UI, mono for tokens and filenames, heading for page titles.
font-sans
Interface copy for tools and product UI.
font-mono
--df-text-sm · tokens.css
font-heading
Page title
Large steps for marketing or catalogue heroes. Host apps may also load a display face such as font-bricolage.
Default File
Large steps pair with leading-none by default. Tighten tracking on display lines when the letters feel open.
Primitive type values are CSS custom properties on :root. Utilities resolve through those tokens.
Name shape
Token naming
--df-text-sm--df-font-sans--df-font-weight-semibold--df-tracking-tight--df-leading-5
The scale runs from text-9 (9px) to text-display. Each size utility sets font-size and a paired default line-height.
Markup
Size and leading
<p className="text-sm">Uses --df-text-sm and the paired default leading.</p><p className="text-sm leading-7">Same size, explicit leading override.</p>
Three utilities cover day-to-day UI. Host apps set --font-sans and --font-mono; the kit stacks fall back to system faces.
Markup
Families
<p className="font-sans">Interface copy</p><code className="font-mono text-xs">--df-neutral-500</code><h1 className="font-heading text-3xl font-semibold">Title</h1>
Weight runs from thin to black. Tracking covers display through widest, including a label step for uppercase chrome.
Markup
Weight and tracking
<p className="text-sm font-semibold tracking-tight">Panel title</p><p className="text-11 font-semibold uppercase tracking-label text-muted-foreground">Controls</p>
Prefer generated utilities in className. Use var() when a style prop, canvas label, or non-class surface needs the raw length.
Utility
Utility usage
<span className="text-11 font-medium tracking-wide text-muted-foreground">Density</span>
Token
Token usage
<divstyle={{fontSize: "var(--df-text-sm)",lineHeight: "var(--df-leading-5)",}}/>
Two special sizes sit beside the fixed rem ladder.
Relative size
Relative size
<code className="rounded bg-muted px-1 py-0.5 font-mono text-[length:var(--df-text-relative-sm)]">data-df-color-scale</code>
Short patterns used across tools and catalogue chrome.
Dock or panel label
Label recipe
<p className="text-11 font-semibold uppercase tracking-wider text-muted-foreground">Layers</p>
Page title
Title recipe
<h1 className="font-bricolage text-3xl font-semibold tracking-tight text-foreground sm:text-4xl">Typography</h1>
Supporting copy
Body recipe
<p className="text-sm leading-relaxed text-muted-foreground sm:text-base">Browse the scale, then read the usage guide below.</p>
Typography tokens and utilities for size, family, weight, tracking, and leading. Size utilities set font-size and a paired default line-height. Override leading with a separate leading utility when needed.
Primitive sizes on :root. Prefer text-* utilities in markup; use var() when a style prop or non-class surface needs the length.
| Prop | Type | Default | Notes |
|---|---|---|---|
| --df-text-9 | length | 0.5625rem | Font size for text-9. Default leading: --df-leading-3. |
| --df-text-2xs | length | 0.625rem | Font size for text-2xs. Default leading: --df-leading-3. |
| --df-text-11 | length | 0.6875rem | Font size for text-11. Default leading: --df-leading-4. |
| --df-text-xs | length | 0.75rem | Font size for text-xs. Default leading: --df-leading-4. |
| --df-text-13 | length | 0.8125rem | Font size for text-13. Default leading: --df-leading-4. |
| --df-text-sm | length | 0.875rem | Font size for text-sm. Default leading: --df-leading-5. |
| --df-text-base | length | 1rem | Font size for text-base. Default leading: --df-leading-6. |
| --df-text-lg | length | 1.125rem | Font size for text-lg. Default leading: --df-leading-7. |
| --df-text-xl | length | 1.25rem | Font size for text-xl. Default leading: --df-leading-7. |
| --df-text-2xl | length | 1.5rem | Font size for text-2xl. Default leading: --df-leading-8. |
| --df-text-3xl | length | 1.875rem | Font size for text-3xl. Default leading: --df-leading-9. |
| --df-text-4xl | length | 2.25rem | Font size for text-4xl. Default leading: --df-leading-10. |
| --df-text-5xl | length | 3rem | Font size for text-5xl. Default leading: --df-leading-none. |
| --df-text-6xl | length | 3.75rem | Font size for text-6xl. Default leading: --df-leading-none. |
| --df-text-7xl | length | 4.5rem | Font size for text-7xl. Default leading: --df-leading-none. |
| --df-text-8xl | length | 6rem | Font size for text-8xl. Default leading: --df-leading-none. |
| --df-text-9xl | length | 8rem | Font size for text-9xl. Default leading: --df-leading-none. |
| --df-text-display | length | clamp(4.5rem, 12vw, 9rem) | Font size for text-display. Default leading: --df-leading-none. |
Each class sets font-size and the paired default line-height from the theme map.
| Prop | Type | Default | Notes |
|---|---|---|---|
| text-9 | utility | --df-text-9, --df-leading-3 | 9px. Paired leading 3. |
| text-2xs | utility | --df-text-2xs, --df-leading-3 | 10px. Paired leading 3. |
| text-11 | utility | --df-text-11, --df-leading-4 | 11px. Paired leading 4. |
| text-xs | utility | --df-text-xs, --df-leading-4 | 12px. Paired leading 4. |
| text-13 | utility | --df-text-13, --df-leading-4 | 13px. Paired leading 4. |
| text-sm | utility | --df-text-sm, --df-leading-5 | 14px. Paired leading 5. |
| text-base | utility | --df-text-base, --df-leading-6 | 16px. Paired leading 6. |
| text-lg | utility | --df-text-lg, --df-leading-7 | 18px. Paired leading 7. |
| text-xl | utility | --df-text-xl, --df-leading-7 | 20px. Paired leading 7. |
| text-2xl | utility | --df-text-2xl, --df-leading-8 | 24px. Paired leading 8. |
| text-3xl | utility | --df-text-3xl, --df-leading-9 | 30px. Paired leading 9. |
| text-4xl | utility | --df-text-4xl, --df-leading-10 | 36px. Paired leading 10. |
| text-5xl | utility | --df-text-5xl, --df-leading-none | 48px. Paired leading none. |
| text-6xl | utility | --df-text-6xl, --df-leading-none | 60px. Paired leading none. |
| text-7xl | utility | --df-text-7xl, --df-leading-none | 72px. Paired leading none. |
| text-8xl | utility | --df-text-8xl, --df-leading-none | 96px. Paired leading none. |
| text-9xl | utility | --df-text-9xl, --df-leading-none | 128px. Paired leading none. |
| text-display | utility | --df-text-display, --df-leading-none | Fluid display size. Paired leading none. |
Stack tokens resolve through host --font-sans and --font-mono when those variables are set.
| Prop | Type | Default | Notes |
|---|---|---|---|
| --df-font-sans | font-family | var(--font-sans), ui-sans-serif, system-ui, sans-serif | Primary UI sans stack. Used by font-sans and font-heading. |
| --df-font-mono | font-family | var(--font-mono), ui-monospace, monospace | Monospace stack for code, tokens, and filenames. |
| Prop | Type | Default | Notes |
|---|---|---|---|
| font-sans | utility | --df-font-sans | Applies --df-font-sans. |
| font-mono | utility | --df-font-mono | Applies --df-font-mono. |
| font-heading | utility | --df-font-sans | Heading stack. Resolves to the same sans token as font-sans unless the host remaps it. |
| Prop | Type | Default | Notes |
|---|---|---|---|
| --df-font-weight-thin | number | 100 | Weight for font-thin. |
| --df-font-weight-extralight | number | 200 | Weight for font-extralight. |
| --df-font-weight-light | number | 300 | Weight for font-light. |
| --df-font-weight-normal | number | 400 | Weight for font-normal. |
| --df-font-weight-medium | number | 500 | Weight for font-medium. |
| --df-font-weight-semibold | number | 600 | Weight for font-semibold. |
| --df-font-weight-bold | number | 700 | Weight for font-bold. |
| --df-font-weight-extrabold | number | 800 | Weight for font-extrabold. |
| --df-font-weight-black | number | 900 | Weight for font-black. |
| Prop | Type | Default | Notes |
|---|---|---|---|
| font-thin | utility | --df-font-weight-thin | font-weight: 100. |
| font-extralight | utility | --df-font-weight-extralight | font-weight: 200. |
| font-light | utility | --df-font-weight-light | font-weight: 300. |
| font-normal | utility | --df-font-weight-normal | font-weight: 400. |
| font-medium | utility | --df-font-weight-medium | font-weight: 500. |
| font-semibold | utility | --df-font-weight-semibold | font-weight: 600. |
| font-bold | utility | --df-font-weight-bold | font-weight: 700. |
| font-extrabold | utility | --df-font-weight-extrabold | font-weight: 800. |
| font-black | utility | --df-font-weight-black | font-weight: 900. |
| Prop | Type | Default | Notes |
|---|---|---|---|
| --df-tracking-display | length | -0.11em | Letter spacing for tracking-display. |
| --df-tracking-tighter | length | -0.05em | Letter spacing for tracking-tighter. |
| --df-tracking-tight | length | -0.025em | Letter spacing for tracking-tight. |
| --df-tracking-snug | length | -0.01em | Letter spacing for tracking-snug. |
| --df-tracking-normal | length | 0em | Letter spacing for tracking-normal. |
| --df-tracking-wide | length | 0.025em | Letter spacing for tracking-wide. |
| --df-tracking-wider | length | 0.05em | Letter spacing for tracking-wider. |
| --df-tracking-label | length | 0.08em | Letter spacing for tracking-label. |
| --df-tracking-widest | length | 0.1em | Letter spacing for tracking-widest. |
| Prop | Type | Default | Notes |
|---|---|---|---|
| tracking-display | utility | --df-tracking-display | letter-spacing: -0.11em. |
| tracking-tighter | utility | --df-tracking-tighter | letter-spacing: -0.05em. |
| tracking-tight | utility | --df-tracking-tight | letter-spacing: -0.025em. |
| tracking-snug | utility | --df-tracking-snug | letter-spacing: -0.01em. |
| tracking-normal | utility | --df-tracking-normal | letter-spacing: 0em. |
| tracking-wide | utility | --df-tracking-wide | letter-spacing: 0.025em. |
| tracking-wider | utility | --df-tracking-wider | letter-spacing: 0.05em. |
| tracking-label | utility | --df-tracking-label | letter-spacing: 0.08em. |
| tracking-widest | utility | --df-tracking-widest | letter-spacing: 0.1em. |
Named ratios and fixed rem steps. Size utilities already pair a default; use leading-* to override.
| Prop | Type | Default | Notes |
|---|---|---|---|
| --df-leading-none | number | 1 | Line height for leading-none. |
| --df-leading-tight | number | 1.25 | Line height for leading-tight. |
| --df-leading-snug | number | 1.375 | Line height for leading-snug. |
| --df-leading-normal | number | 1.5 | Line height for leading-normal. |
| --df-leading-relaxed | number | 1.625 | Line height for leading-relaxed. |
| --df-leading-loose | number | 2 | Line height for leading-loose. |
| --df-leading-3 | length | 0.75rem | Line height for leading-3. |
| --df-leading-4 | length | 1rem | Line height for leading-4. |
| --df-leading-5 | length | 1.25rem | Line height for leading-5. |
| --df-leading-6 | length | 1.5rem | Line height for leading-6. |
| --df-leading-7 | length | 1.75rem | Line height for leading-7. |
| --df-leading-8 | length | 2rem | Line height for leading-8. |
| --df-leading-9 | length | 2.25rem | Line height for leading-9. |
| --df-leading-10 | length | 2.5rem | Line height for leading-10. |
| --df-leading-code | number | 1.7 | Line height for code blocks and terminal previews in the docs. |
| --df-text-relative-sm | length | 0.85em | Relative size for inline code and compact chrome. Use with text-[length:var(--df-text-relative-sm)]. |
| Prop | Type | Default | Notes |
|---|---|---|---|
| leading-none | utility | --df-leading-none | line-height: 1. |
| leading-tight | utility | --df-leading-tight | line-height: 1.25. |
| leading-snug | utility | --df-leading-snug | line-height: 1.375. |
| leading-normal | utility | --df-leading-normal | line-height: 1.5. |
| leading-relaxed | utility | --df-leading-relaxed | line-height: 1.625. |
| leading-loose | utility | --df-leading-loose | line-height: 2. |
| leading-3 | utility | --df-leading-3 | line-height: 0.75rem. |
| leading-4 | utility | --df-leading-4 | line-height: 1rem. |
| leading-5 | utility | --df-leading-5 | line-height: 1.25rem. |
| leading-6 | utility | --df-leading-6 | line-height: 1.5rem. |
| leading-7 | utility | --df-leading-7 | line-height: 1.75rem. |
| leading-8 | utility | --df-leading-8 | line-height: 2rem. |
| leading-9 | utility | --df-leading-9 | line-height: 2.25rem. |
| leading-10 | utility | --df-leading-10 | line-height: 2.5rem. |