Typography
Note about type styles#
On purpose, we only provide you with a minimal number of styles. We built it this way so that you can customise the typography to your liking.
Find the Typography collection inside Variables and tweak the theme to customize the look and feel.
Changing the font across the kit#
To change the font across the kit, go to the typography variable collection. Under font definitions, you’ll find the following variables:
| Variable | Default value |
|---|---|
font-family | Geist |
font-family-headings | References font-family |
font-family-body | References font-family |
font-family-monospace | Geist Mono |
Change font-family to update the font globally. Since font-family-headings and font-family-body reference it, they’ll update automatically. You can also override them individually if you want different fonts for headings and body text.
Each individual type style (e.g. heading 1, heading 2, etc.) also has its own variables for font-family, weight, font-size, line-height, spacing, and letter-spacing, so you can fine-tune each style separately.
Exporting type styles as Tailwind 4 utility classes#
You can export the type styles from the kit as Tailwind 4 @utility classes using the Obra shadcn/ui Pro CSS Export plugin. This gives you ready-to-use utility classes that match your Figma typography settings exactly.
Legacy docs#
In kit versions 1.0.0 through 1.8.0, the font definitions inside the typography collection looked like this:
| Variable | Default value |
|---|---|
font-family-sans | Geist |
font-family-serif | Geist |
font-family-headings | References font-family-sans |
font-family-body | References font-family-sans |
font-family-monospace | Geist Mono |
To update the font globally, you’d change font-family-sans. font-family-headings and font-family-body referenced it, so they updated automatically. font-family-serif was a separate slot for serif typography.
In later versions we removed font-family-serif (it wasn’t used by any official shadcn/ui component, and most teams reskinning the kit didn’t need a separate serif slot) and renamed font-family-sans to font-family (since with the serif slot gone, “sans” was redundant). If you’re upgrading from 1.8.0 or earlier, rebind any references to font-family-sans over to font-family.