Skip to content
Redpanda UI
Esc
↑↓navigate↵open⌘Jpreview
Made by shadcn
Edit on GitHub

Typography

Comprehensive typography system with headings, text variants, labels, numbers, and more

Installation

bash
npx shadcn@latest add @redpanda/typography
bash
pnpm dlx shadcn@latest add @redpanda/typography
bash
yarn dlx shadcn@latest add @redpanda/typography
bash
bunx shadcn@latest add @redpanda/typography
bash
nubx shadcn@latest add @redpanda/typography
bash
aube dlx shadcn@latest add @redpanda/typography

Usage

Apply type styles with text-* utility classes. Each class carries the full style — size, line-height, weight and tracking — on its own, and works on any element. This is the recommended approach.

tsx
<h1 className="text-heading-xl">Page title</h1><p className="text-lead">Intro paragraph under the title.</p><p className="text-body">Body copy for the page.</p><td className="text-caption">PARTITION</td><span className="text-body tabular-nums">1,284,905</span>

Type Scale

Every style is a single text-* utility. Compose freely with color, alignment, and other utilities.

Utility Style Size · line-height Weight
text-heading-xl – text-heading-xs Headings (InterDisplay) 24 → 14px · leading-tight 500
text-lead Lead / intro paragraph 18px · leading-normal 400
text-body-lg Body, one step up 16px · leading-normal 400
text-body Body / paragraph (default) 14px · leading-normal 400
text-label Form & UI labels 14px · leading-snug 500
text-body-sm Small / helper text 12px · leading-snug 400
text-caption Caption / meta 10px · leading-snug 400
text-overline Overline / eyebrow above a title or value (uppercase) 14px · leading-snug 600
text-overline-sm Overline, one step down 12px · leading-snug 600

Line-heights use Tailwind’s leading scale — leading-tight (1.25), leading-snug (1.375), leading-normal (1.5) — so they read as intentional steps, not magic numbers.

Size suffixes step relative to text-body, the 14px anchor — they do not name the Tailwind rung underneath, so text-body-sm is built on the xs rung and text-body-lg on base. Body sits at 14px because this is dense application UI rather than long-form prose, and that single choice is what offsets the two scales. text-lead stays a role rather than a size step: reach for it on a lede under a title, and for text-body-lg when you want body copy one notch roomier.

Both overline rungs uppercase in CSS rather than in the string, so your source copy and the accessible name stay in sentence case. They are the eyebrow half of a label-over-value row; for the value half, compose font-mono onto a size (font-mono text-body) — monospace is a family, not a step on this scale.

Each token bundles the type identity — size, line-height and tracking. Weight and color stay composable: for emphasis use text-body font-medium, and for muted text text-body text-subtle, rather than dedicated tokens. For a raw size with no weight or tracking, use Tailwind’s own scale (text-xs … text-5xl), including text-2xs (10px) for dense tables and meta rows. For aligned numeric columns, compose tabular-nums onto any text style (e.g. text-body tabular-nums).

Other Elements

Structural and inline elements that pair with the type scale.

Choosing the Right Approach

  1. Any text style → apply the matching text-* utility to your element (recommended)
  2. Raw size only, no weight or tracking → Tailwind’s text-xs…text-5xl (or text-2xs for 10px)
  3. Numerical data → your text style + tabular-nums for aligned figures (e.g. text-body tabular-nums)
  4. Muted / secondary text → text-body text-subtle
  5. Existing code using <Heading> or <Text> → migrate to semantic HTML and utilities before updating

In Context

Semantic HTML elements styled with the text-* utilities, composed into a realistic document.

Removed APIs

Recent changes

  • patchv1.2.0Pin shipped dependency floors to the version we develop against. Registry items now declare ranges like `^5.1.9` (the actual installed version) instead of collapsing to `^5.0.0`, so consumers start on the known-tested baseline while caret semantics still allow any compatible release within the same major.#133
  • minorv1.1.0Theme docs refresh, readability pass on semantic foregrounds, and consumer-facing Base UI regression fixes.#121
  • minorv1.0.0Post-Base-UI polish. Public API unchanged.#116
  • majorv1.0.0Migrate every Radix-based primitive to `@base-ui/react@^1.4.0` (Base UI).#114
  • minorv0.3.0Add theme-provider component to the registry with documentation and tests. Includes playground type improvements (export RegistryItem, remove as-const boilerplate) and docs site dark mode border color fix.#109
See full history →

Last updated on

Was this page helpful?