Skip to content

The Natural Scale

SenangStart uses natural adjectives that map to physical objects you can visualize.

The Philosophy

Instead of arbitrary numbers, think of physical objects:

KeywordSizeMental Model
none0pxNo space
tiny4px🪨 Pebble — Borders, small offsets
small8px📦 Matchbox — Group related items
medium16px📱 Smartphone — Standard default
big32px💻 Laptop — Separate sections
giant64px🚪 Door — Layout divisions
vast128px🏠 House — Hero sections

Using the Scale

When to use each size

tiny (4px) — For subtle details

  • Icon spacing within buttons
  • Border widths
  • Small visual offsets
html
<button space="p-x:small p-y:tiny">
  <icon /> Button
</button>

small (8px) — For grouping related items

  • Gap between label and input
  • Spacing between avatar and name
  • Tight list items
html
<div layout="flex col" space="g:small">
  <label>Email</label>
  <input type="email" />
</div>

medium (16px) — The standard default

  • Card padding
  • Form field margins
  • Standard component spacing
html
<div space="p:medium">
  Standard card content
</div>

big (32px) — For separating distinct sections

  • Between header and content
  • Between form groups
  • Between major UI blocks
html
<header space="m-b:big">Page Title</header>
<main>Content separated from header</main>

giant (64px) — For layout divisions

  • Between page sections
  • Major structural breaks
  • Desktop navigation padding
html
<section space="p-y:giant">
  Major page section
</section>

vast (128px) — For hero sections and major spacing

  • Hero section padding
  • Large decorative spacing
  • Full-bleed sections
html
<section space="p:vast" visual="bg:dark">
  <h1>Welcome to the App</h1>
</section>

Natural Language Mapping

When talking about spacing adjustments, use natural language:

You say...Action
"tighten it up"Scale DOWN (medium → small → tiny)
"compact"Use small or tiny
"give it air"Scale UP (medium → big → giant)
"breathe"Increase spacing
"spacious"Use big or giant
"cramped"Too much tiny/small, increase scale

Customizing the Scale

Override defaults in senangstart.config.js:

javascript
export default {
  theme: {
    spacing: {
      'tiny': '2px',      // Tighter tiny
      'huge': '256px',    // Add custom scale
      'massive': '512px'  // Even bigger!
    }
  }
}

Use your custom scales:

html
<section space="p:huge">Huge padding</section>
<div space="m-b:massive">Massive margin</div>