Spacing
A consistent spacing scale for creating harmonious layouts with predictable padding, margins, and gaps.
Overview
Our spacing system uses a pixel-based naming convention with rem values
under the hood. Token names match pixel values for easy reference (e.g., --size-16 = 16px = 1rem). This makes it intuitive while maintaining scalability.
Base Unit
The spacing scale is built on a 4px base unit. Most values are multiples of 4, creating visual harmony across the interface.
Spacing Scale
The complete spacing scale from 0 to 160 pixels. Use these tokens for all spacing needs.
--size-0 0rem 0px --size-2 0.125rem 2px --size-4 0.25rem 4px --size-6 0.375rem 6px --size-8 0.5rem 8px --size-10 0.625rem 10px --size-12 0.75rem 12px --size-14 0.875rem 14px --size-16 1rem 16px --size-18 1.125rem 18px --size-20 1.25rem 20px --size-24 1.5rem 24px --size-28 1.75rem 28px --size-32 2rem 32px --size-40 2.5rem 40px --size-48 3rem 48px --size-56 3.5rem 56px --size-64 4rem 64px --size-80 5rem 80px --size-96 6rem 96px --size-112 7rem 112px --size-128 8rem 128px --size-160 10rem 160px Usage
Use spacing tokens for padding, margins, gaps, and fixed dimensions.
Padding & Margins
.card {
padding: var(--size-24);
margin-bottom: var(--size-16);
}
.button {
padding: var(--size-8) var(--size-16);
} Flexbox & Grid Gaps
.stack {
display: flex;
flex-direction: column;
gap: var(--size-12);
}
.grid {
display: grid;
gap: var(--size-20);
} Fixed Dimensions
.icon {
width: var(--size-24);
height: var(--size-24);
}
.avatar {
width: var(--size-40);
height: var(--size-40);
} Guidelines
Choosing the Right Size
Micro (2-6px)
Fine adjustments, icon padding, tight text spacing
--size-2, --size-4, --size-6 Small (8-12px)
Button padding, card internal spacing, list gaps
--size-8, --size-10, --size-12 Medium (16-24px)
Section padding, card padding, component gaps
--size-16, --size-20, --size-24 Large (32-64px)
Page margins, section spacing, large gaps
--size-32, --size-48, --size-64 Extra Large (80+px)
Hero sections, major layout divisions
--size-80, --size-96, --size-128 Best Practices
- Always use spacing tokens instead of hardcoded pixel values
- Use consistent spacing within similar contexts (all cards should have same padding)
- Prefer smaller increments for dense UIs, larger for spacious layouts
-
Use
gapproperty with flexbox/grid instead of margins where possible