Mihr UI logoMihr UI

Spacing

MihrSpacing provides a consistent spacing system built on a 4px soft-grid. Every value is divisible by 4, with 2px and 6px exceptions for fine-tuning.

Two layers: semantic tokens for component-level spacing, and primitives for pixel-precise control. Pre-built EdgeInsets and SizedBox gap helpers are also available.


Semantic tokens17 tokens

Named sizes for gaps, padding, and margins. These are the recommended tokens for component development.

TokenPixelsScale
none0px
xxs2px
xs4px
sm6px
md8px
lg12px
xl16px
x2l20px
x3l24px
x4l32px
x5l40px
x6l48px
x7l64px
x8l80px
x9l96px
x10l128px
x11l160px
Dart
// Direct value
SizedBox(height: MihrSpacing.lg);  // 12px

// EdgeInsets shorthand
Padding(padding: MihrSpacing.insetsXl);  // 16px all sides

Primitive scale32 values

Raw numeric scale (p0p480) where multiplier × 4 = pixels. Use when semantic names don't fit.

TokenPixelsScale
p00px
p0_52px
p14px
p1_56px
p28px
p312px
p416px
p520px
p624px
p832px
p1040px
p1248px
p1664px
p2080px
p2496px
p32128px
p40160px
p48192px
p56224px
p64256px
p80320px
p96384px
p120480px
p140560px
p160640px
p180720px
p192768px
p2561024px
p3201280px
p3601440px
p4001600px
p4801920px

EdgeInsets helpers

Pre-built EdgeInsets constants for common padding patterns. Three variants: all-sides, horizontal-only, vertical-only.

PatternExampleEquivalent
insets[Size]MihrSpacing.insetsXlEdgeInsets.all(16)
insetsH[Size]MihrSpacing.insetsHXlEdgeInsets.symmetric(horizontal: 16)
insetsV[Size]MihrSpacing.insetsVX3lEdgeInsets.symmetric(vertical: 24)

Available sizes: Xxs (2px), Xs (4px), Sm (6px), Md (8px), Lg (12px), Xl (16px), X2l (20px), X3l (24px), X4l (32px), X5l (40px), X6l (48px).


Gap helpers

Pre-built SizedBox constants for spacing between children in Column and Row.

PatternExampleEquivalent
gapV[Size]MihrSpacing.gapVLgSizedBox(height: 12)
gapH[Size]MihrSpacing.gapHMdSizedBox(width: 8)
Dart
Column(
  children: [
    headerWidget,
    MihrSpacing.gapVLg,  // 12px vertical gap
    bodyWidget,
    MihrSpacing.gapVXl,  // 16px vertical gap
    footerWidget,
  ],
);

Row(
  children: [
    icon,
    MihrSpacing.gapHXs,  // 4px horizontal gap
    label,
  ],
);

When to use which

Semantic tokens (MihrSpacing.xl) — component padding, section gaps, list spacing. Always prefer these.
EdgeInsets helpers (MihrSpacing.insetsXl) — when you need EdgeInsets directly in a Padding widget.
Gap helpers (MihrSpacing.gapVMd) — vertical/horizontal gaps between Column/Row children.
Primitives (MihrSpacing.p48) — exact pixel values when semantic names don't fit (e.g., large layout dimensions).
Dart
// WRONG — hardcoded values
Padding(padding: EdgeInsets.all(16));
SizedBox(height: 24);

// CORRECT — semantic tokens
Padding(padding: MihrSpacing.insetsXl);  // 16px
SizedBox(height: MihrSpacing.x3l);       // 24px

// CORRECT — primitives (when semantic name doesn't fit)
SizedBox(width: MihrSpacing.p48);        // 192px