Spacing
Design tokens for spacing and layout
Spacing
Consistent spacing creates visual rhythm and hierarchy in your interface. Vibrant UI provides a systematic spacing scale based on a 4px grid.
Spacing Scale
none0px
tokens.spacings.none
3xs4px
tokens.spacings.3xs
2xs6px
tokens.spacings.2xs
xs8px
tokens.spacings.xs
sm10px
tokens.spacings.sm
md12px
tokens.spacings.md
lg16px
tokens.spacings.lg
xl20px
tokens.spacings.xl
2xl24px
tokens.spacings.2xl
3xl32px
tokens.spacings.3xl
4xl48px
tokens.spacings.4xl
5xl64px
tokens.spacings.5xl
6xl96px
tokens.spacings.6xl
Usage Patterns
Padding and Margins
/* Using CSS variables */
.component {
padding: var(--token-spacings-md); /* 12px */
margin-bottom: var(--token-spacings-lg); /* 16px */
}
/* Using tokens directly */
.component {
padding: 12px;
margin-bottom: 16px;
}
Grid Gaps
.grid {
display: grid;
gap: var(--token-spacings-md); /* 12px */
}
.flex {
display: flex;
gap: var(--token-spacings-sm); /* 10px */
}
In JavaScript/TypeScript
import { tokens } from '@vibrant-ui/tokens';
const cardStyle = {
padding: `${tokens.spacings.lg}px`, // "16px"
marginBottom: `${tokens.spacings.md}px`, // "12px"
};
With Vibrant UI Components
import { Stack, Container } from '@vibrant-ui/components';
<Container padding="lg">
<Stack gap="md">
<div>Item 1</div>
<div>Item 2</div>
</Stack>
</Container>;
Guidelines
Consistent Hierarchy
Use the spacing scale to create consistent visual relationships:
- none (0px): When elements should touch
- 3xs-xs (4-8px): Very tight spacing, like inside small components
- sm-md (10-12px): Standard component spacing
- lg-xl (16-20px): Comfortable spacing between sections
- 2xl+ (24px+): Large spacing for major sections
Responsive Spacing
Consider using different spacing values at different breakpoints:
.section {
padding: var(--token-spacings-md);
}
@media (min-width: 768px) {
.section {
padding: var(--token-spacings-xl);
}
}
Touch Targets
Ensure interactive elements have adequate spacing for touch interfaces (minimum 44px target size).
Edit on GitHub
Last updated on