MiHCM

Typography

Tailwind's default type scale is the source of truth. MiHCM typography names such as body-sm, title, and stat are semantic aliases over Tailwind steps, so components stay readable without adding a separate product scale.

Public websites and campaign pages have a separate marketing-only typography guide for Albert Sans headings and Barlow body copy: Marketing typography. Those fonts do not change the core product typography tokens.

MiHCM semantic aliases

Each alias maps to a default Tailwind utility and exposes the matching CSS variable pair via --text-*--line-height. Use the Text primitive with size="body-sm" etc. when semantic intent is clearer, or use Tailwind utilities directly.

caption12pxline-height: 1rem
The quick brown fox jumps over the lazy dog
CSS: --text-captionAlias: text-captionSource: text-xsBadges, status pills, small chips
label14pxline-height: 1.25rem
The quick brown fox jumps over the lazy dog
CSS: --text-labelAlias: text-labelSource: text-smNotification counts, sidebar labels, UI chrome
body-sm14pxline-height: 1.25rem
The quick brown fox jumps over the lazy dog
CSS: --text-body-smAlias: text-body-smSource: text-smInputs, buttons, table cells, form labels
body16pxline-height: 1.5rem
The quick brown fox jumps over the lazy dog
CSS: --text-bodyAlias: text-bodySource: text-baseSection headers, descriptions, body copy
title24pxline-height: 2rem
The quick brown fox jumps over the lazy dog
CSS: --text-titleAlias: text-titleSource: text-2xlTitle bar headings, page titles
stat24pxline-height: 2rem
The quick brown fox jumps over the lazy dog
CSS: --text-statAlias: text-statSource: text-2xlStat card hero numbers
stat-sm20pxline-height: 1.75rem
The quick brown fox jumps over the lazy dog
CSS: --text-stat-smAlias: text-stat-smSource: text-xlCompact stat card hero numbers

Standard Tailwind scale

Use these utilities directly in consumer app layouts and marketing pages. Body text defaults to base (16px) so browser zoom behaves predictably.

xs
12px
The quick brown fox — Fine print, footnotes
sm
14px
The quick brown fox — Secondary text, captions
base
16px
The quick brown fox — Default body text (browser zoom safe)
lg
18px
The quick brown fox — Lead paragraphs
xl
20px
The quick brown fox — Section headings
2xl
24px
The quick brown fox — Page headings
3xl
30px
The quick brown fox — Hero headings
4xl
36px
The quick brown fox — Display headings
5xl
48px
The quick brown fox — Display / marketing

Weights

Four weights — enough for hierarchy without font-file bloat. Components use the Text primitive's weight prop; never inline fontWeight.

normal (400)
The quick brown fox jumps over the lazy dog
medium (500)
The quick brown fox jumps over the lazy dog
semibold (600)
The quick brown fox jumps over the lazy dog
bold (700)
The quick brown fox jumps over the lazy dog

Line heights

TokenValueUse
tight1.2Display headings, stat numbers
snug1.3Section headings, title bars
normal1.5Body text, descriptions
relaxed1.625Long-form prose, documentation
loose2Captions, finely-spaced lists

Usage

/* Text primitive (preferred for DS components) */
<Text size="body-sm" weight="semibold">Label</Text>
<Text size="stat" weight="bold">13,283</Text>
<Text size="caption" tone="muted">Badge text</Text>

/* Tailwind utilities */
<p className="text-body-sm font-semibold">Label</p>
<p className="text-stat font-bold">13,283</p>

/* CSS variable */
.custom { font-size: var(--text-body-sm); }

/* TypeScript (React Native) */
import { fontSize, fontWeight } from '@mihcm/tokens';
const size = fontSize['body-sm'];  // 14, same as Tailwind text-sm
const weight = fontWeight.bold;    // '700'