Skip to main content

Spacing

The spacing system is based on a 4px grid for consistent, harmonious layouts.

Spacing Scale

TokenValuePixelsUsage
--spacing-000pxReset
--spacing-0.50.125rem2pxHairline gaps
--spacing-10.25rem4pxTight gaps, icon padding
--spacing-20.5rem8pxButton padding, compact spacing
--spacing-30.75rem12pxInput padding, list gaps
--spacing-41rem16pxDefault gap, card padding
--spacing-51.25rem20pxMedium gaps
--spacing-61.5rem24pxSection padding
--spacing-82rem32pxLarge section gaps
--spacing-102.5rem40pxPage margins
--spacing-123rem48pxHero sections
--spacing-164rem64pxMajor sections

Layout Components

Stack

Vertical or horizontal layout with consistent spacing:

import { Stack } from '@kikumi3n/ui';

// Vertical stack (default)
<Stack gap={4}>
<Button>First</Button>
<Button>Second</Button>
</Stack>

// Horizontal stack
<Stack direction="horizontal" gap={2}>
<Badge>Tag 1</Badge>
<Badge>Tag 2</Badge>
</Stack>

Grid

Responsive grid layout:

import { Grid } from '@kikumi3n/ui';

<Grid columns={3} gap={4}>
<Card>Item 1</Card>
<Card>Item 2</Card>
<Card>Item 3</Card>
</Grid>

Container

Centered, max-width container:

import { Container } from '@kikumi3n/ui';

<Container maxWidth="lg">
<p>Centered content with max-width</p>
</Container>
SizeMax Width
sm640px
md768px
lg1024px
xl1280px

Usage in CSS

.card {
padding: var(--spacing-4); /* 16px */
margin-bottom: var(--spacing-6); /* 24px */
gap: var(--spacing-2); /* 8px */
}

Best Practices

  • Always use spacing tokens — never hardcode pixel values
  • Use the Stack component for most layouts instead of manual flexbox
  • The 4px grid ensures visual harmony: 4, 8, 12, 16, 24, 32, 48, 64