Typography

Roles are named by what the text is for; each fixes family, weight, size and line height. Components, VelioBot and Figma text styles use the same roles. The scale below feeds them and is never used directly.

Roles

RoleSampleSpecUse
display
--v-type-display
£11.73 Nohemi Bold · 34 / 41 · +2% Hero amounts and page titles.
display-sm
--v-type-display-sm
Priya's birthday Nohemi Bold · 28 / 34 · +2% Large page and section headings (docs, onboarding).
headline
--v-type-headline
£11.73 Nohemi Semibold · 22 / 28 · +2% Large amounts and big headings.
title
--v-type-title
Priya's birthday Nohemi Semibold · 20 / 25 · +2% Card, sheet and section titles; tabs.
subtitle
--v-type-subtitle
Priya's birthday Satoshi Bold · 17 / 22 Lead lines, large list titles, totals.
body
--v-type-body
Priya's birthday Satoshi Medium · 17 / 26 Body copy, chat bubbles, inputs.
body-sm
--v-type-body-sm
Priya's birthday Satoshi Medium · 15 / 22 Secondary copy: key-value labels, steps, toasts, chips.
label
--v-type-label
Priya's birthday Satoshi Bold · 15 / 20 Buttons, list titles, values, segmented tabs, tile titles.
label-lg
--v-type-label-lg
Priya's birthday Satoshi Bold · 16 / 21 Large buttons.
label-sm
--v-type-label-sm
Priya's birthday Satoshi Bold · 13 / 18 Small buttons, avatar initials, compact controls.
caption
--v-type-caption
Priya's birthday Satoshi Medium · 13 / 18 Captions, times, helper text.
caption-sm
--v-type-caption-sm
Priya's birthday Satoshi Medium · 12 / 16 Supporting lines in lists and tiles, legends.
tag
--v-type-tag
Priya's birthday Satoshi Bold · 12 / 16 Badges, field labels, message authors.
overline
--v-type-overline
Priya's birthday Satoshi Bold · 12 / 16 · +8% · caps Small uppercase labels above content.
micro
--v-type-micro
Priya's birthday Satoshi Bold · 11 / 13 Calendar headers, image labels, tiny counts.
mono
--v-type-mono
VEL-2048 · 12:30 ui-monospace Regular · 13 / 18 IDs, codes and other fixed-width text.

Roles with letter spacing or case have companion variables: font: var(--v-type-title); letter-spacing: var(--v-type-title-tracking). npm run check fails if one is missing.

In Gen UI

VelioBot's Text variants are roles: display, headline, title, subtitle, body, body-sm, label, caption, overline, mono.

Scale

Font sizes and their fixed line heights. Roles point here; components never do.

SizeLine heightRoles
1113micro
1216caption-sm, tag, overline
1318label-sm, caption, mono
1520body-sm, label
1621label-lg
1722subtitle, body
2025title
2228headline
2834display-sm
3441display

Tokens

CSSValueNotes
--v-font-display"Nohemi", "Satoshi", system-ui, sans-serifTitles. Nohemi Medium (500), Semibold (600) and Bold (700).
--v-font-body"Satoshi", system-ui, sans-serifEverything else. Satoshi variable; the scale uses Medium (500), Semibold (600) and Bold (700).
--v-font-monoui-monospace, "Menlo", monospace
--v-font-weight-regular400
--v-font-weight-medium500
--v-font-weight-semibold600
--v-font-weight-bold700
--v-letter-spacing-none0em
--v-letter-spacing-display0.02emNohemi titles: +2%.
--v-letter-spacing-caps0.08emUppercase labels: +8%.
--v-type-displayvar(--v-font-weight-bold) var(--v-font-size-34)/var(--v-line-height-34) var(--v-font-display)Hero amounts and page titles.
--v-type-display-smvar(--v-font-weight-bold) var(--v-font-size-28)/var(--v-line-height-28) var(--v-font-display)Large page and section headings (docs, onboarding).
--v-type-headlinevar(--v-font-weight-semibold) var(--v-font-size-22)/var(--v-line-height-22) var(--v-font-display)Large amounts and big headings.
--v-type-titlevar(--v-font-weight-semibold) var(--v-font-size-20)/var(--v-line-height-20) var(--v-font-display)Card, sheet and section titles; tabs.
--v-type-subtitlevar(--v-font-weight-bold) var(--v-font-size-17)/var(--v-line-height-17) var(--v-font-body)Lead lines, large list titles, totals.
--v-type-bodyvar(--v-font-weight-medium) var(--v-font-size-17)/var(--v-line-height-17-relaxed) var(--v-font-body)Body copy, chat bubbles, inputs.
--v-type-body-smvar(--v-font-weight-medium) var(--v-font-size-15)/var(--v-line-height-15-relaxed) var(--v-font-body)Secondary copy: key-value labels, steps, toasts, chips.
--v-type-labelvar(--v-font-weight-bold) var(--v-font-size-15)/var(--v-line-height-15) var(--v-font-body)Buttons, list titles, values, segmented tabs, tile titles.
--v-type-label-lgvar(--v-font-weight-bold) var(--v-font-size-16)/var(--v-line-height-16) var(--v-font-body)Large buttons.
--v-type-label-smvar(--v-font-weight-bold) var(--v-font-size-13)/var(--v-line-height-13) var(--v-font-body)Small buttons, avatar initials, compact controls.
--v-type-captionvar(--v-font-weight-medium) var(--v-font-size-13)/var(--v-line-height-13) var(--v-font-body)Captions, times, helper text.
--v-type-caption-smvar(--v-font-weight-medium) var(--v-font-size-12)/var(--v-line-height-12) var(--v-font-body)Supporting lines in lists and tiles, legends.
--v-type-tagvar(--v-font-weight-bold) var(--v-font-size-12)/var(--v-line-height-12) var(--v-font-body)Badges, field labels, message authors.
--v-type-overlinevar(--v-font-weight-bold) var(--v-font-size-12)/var(--v-line-height-12) var(--v-font-body)Small uppercase labels above content.
--v-type-microvar(--v-font-weight-bold) var(--v-font-size-11)/var(--v-line-height-11) var(--v-font-body)Calendar headers, image labels, tiny counts.
--v-type-monovar(--v-font-weight-regular) var(--v-font-size-13)/var(--v-line-height-13) var(--v-font-mono)IDs, codes and other fixed-width text.