Space, radius, size
Spacing and radius steps are named by pixel value. Radius also has roles named by use. Touch targets are at least --v-size-hit.
Spacing
Gaps, padding and margins use these steps; npm run check rejects raw values.
--v-space-2
--v-space-4
--v-space-6
--v-space-8
--v-space-10
--v-space-12
--v-space-16
--v-space-20
--v-space-24
--v-space-32
--v-space-40
--v-space-48
--v-space-56
--v-space-64
Radius
| Role | Shape | Value | Use |
|---|---|---|---|
control--v-radius-control | full | Buttons, chips, fields, segmented controls, badges, banners, toasts. | |
card--v-radius-card | 24px | Cards. | |
sheet--v-radius-sheet | 24px | Bottom sheets and modals (top corners). | |
block--v-radius-block | 16px | Blocks inside a screen or card: list rows, select tiles, images, maps. | |
inset--v-radius-inset | 12px | Small panels inside cards: key-value tiles, tinted panels, rectangular fields. | |
bubble--v-radius-bubble | 20px | Chat bubbles. | |
bubble-tail--v-radius-bubble-tail | 4px | The corner of a chat bubble that points at its sender. |
Steps, for one-off shapes: --v-radius-4 --v-radius-8 --v-radius-12 --v-radius-16 --v-radius-20 --v-radius-24 --v-radius-32 --v-radius-full
Control heights
--v-size-control-sm 40px--v-size-control-md 48px--v-size-control-lg 56pxTokens
| CSS | Value | Notes |
|---|---|---|
--v-space-2 | 2px | |
--v-space-4 | 4px | |
--v-space-6 | 6px | |
--v-space-8 | 8px | |
--v-space-10 | 10px | |
--v-space-12 | 12px | |
--v-space-16 | 16px | |
--v-space-20 | 20px | |
--v-space-24 | 24px | |
--v-space-32 | 32px | |
--v-space-40 | 40px | |
--v-space-48 | 48px | |
--v-space-56 | 56px | |
--v-space-64 | 64px | |
--v-radius-4 | 4px | |
--v-radius-8 | 8px | |
--v-radius-12 | 12px | |
--v-radius-16 | 16px | |
--v-radius-20 | 20px | |
--v-radius-24 | 24px | |
--v-radius-32 | 32px | |
--v-radius-full | 999px | Fully rounded: pills and circles. |
--v-radius-control | var(--v-radius-full) | Buttons, chips, fields, segmented controls, badges, banners, toasts. |
--v-radius-card | var(--v-radius-24) | Cards. |
--v-radius-sheet | var(--v-radius-24) | Bottom sheets and modals (top corners). |
--v-radius-block | var(--v-radius-16) | Blocks inside a screen or card: list rows, select tiles, images, maps. |
--v-radius-inset | var(--v-radius-12) | Small panels inside cards: key-value tiles, tinted panels, rectangular fields. |
--v-radius-bubble | var(--v-radius-20) | Chat bubbles. |
--v-radius-bubble-tail | var(--v-radius-4) | The corner of a chat bubble that points at its sender. |
--v-size-avatar-xs | 20px | |
--v-size-avatar-sm | 28px | |
--v-size-avatar-md | 36px | |
--v-size-avatar-lg | 52px | |
--v-size-icon-sm | 13px | |
--v-size-icon-md | 16px | |
--v-size-icon-lg | 20px | |
--v-size-control-sm | 40px | |
--v-size-control-md | 48px | |
--v-size-control-lg | 56px | |
--v-size-hit | 44px | Minimum touch target. |
--v-size-bubble-max | 86% | Max width of a chat bubble, as a share of the thread. |
--v-size-card-max | 380px | Max width of a card in a chat thread. |
--v-border | 2px | Stroke width for outlines, focus rings, dividers. |