Skip to content

Tailwind Migration Guide

Quick translation guide for Tailwind users. Same speed, cleaner markup. Class mappings apply to both Tailwind v3 and v4.

TailwindAirframeNotes
flex flex-col gap-4af-stack af-gap-lgVertical stack
flex flex-col gap-2af-stack af-gap-smSmall gap
flex flex-col gap-6af-stack af-gap-xlLarge gap
flex flex-wrap items-center gap-4af-cluster af-gap-lgDefault semantic cluster
flex flex-wrap items-center gap-4 (explicit)af-inline af-items-center af-gap-lgExplicit utilities
flex items-center justify-betweenaf-spreadDefault semantic spread
flex items-center justify-between (explicit)af-inline af-items-center af-justify-betweenExplicit utilities
flex items-center justify-centeraf-centerDefault semantic center
flex items-center justify-center (explicit)af-inline af-items-center af-justify-centerExplicit utilities

By default: af-grid adjusts to the number of children. No need to specify column counts for equal columns.

TailwindAirframeNotes
grid grid-cols-2 gap-4af-grid af-gap-lgAuto-adjusts to 2 columns (simple default)
grid grid-cols-3 gap-4af-grid af-gap-lgAuto-adjusts to 3 columns (simple default)
grid grid-cols-4 gap-4af-grid af-gap-lgAuto-adjusts to 4 columns (simple default)
grid grid-cols-2 gap-4 (explicit)af-grid-2 af-gap-lgExplicit 2 columns
grid grid-cols-3 gap-4 (explicit)af-grid-3 af-gap-lgExplicit 3 columns
grid grid-cols-4 gap-4 (explicit)af-grid-4 af-gap-lgExplicit 4 columns
grid grid-cols-5 gap-4af-grid-5 af-gap-lg5 columns
grid grid-cols-6 gap-4af-grid-6 af-gap-lg6 columns
grid grid-cols-12 gap-4af-grid af-gap-lg12-column grid (auto-detected when children have spans)
col-span-12 md:col-span-8af-col-span-8@mdAsymmetric layout (full width is default)
col-span-12 lg:col-span-4af-col-span-4@lgAsymmetric layout (full width is default)
TailwindAirframeNotes
md:grid-cols-3af-grid-3@mdResponsive grid
lg:flex-rowaf-inline@lgResponsive layout
sm:hiddenaf-hidden@smResponsive hide
md:blockaf-block@mdResponsive show
TailwindAirframeNotes
p-4af-p-lgPadding large
p-2af-p-smPadding small
p-6af-p-xlPadding XL (24px)
p-8af-p-2xlPadding 2XL (32px)
gap-4af-gap-lgGap large
gap-2af-gap-smGap small
gap-6af-gap-xlGap XL (24px)
gap-8af-gap-2xlGap 2XL (32px)
mx-autoaf-mx-autoAuto inline margin
TailwindAirframeNotes
text-smaf-text-smSmall text
text-lgaf-text-lgLarge text
text-gray-500af-text-mutedMuted text
font-monoaf-text-monoMonospace
tabular-numsaf-numericTabular numbers

Use component tokens to customize controls without new classes.

<style>
  :root { --af-control-min-height: 3rem; --af-btn-gap: 0.75rem; --af-input-placeholder-color: rgba(0, 0, 0, 0.45); }
</style>
<button class="af-btn">
  Primary
</button>
<input class="af-input" placeholder="Custom input" />
<!-- Tailwind -->
<div class="bg-white rounded-lg p-4 border border-gray-200">
  <h2 class="text-xl font-semibold mb-2">
    Title
  </h2>
  <p class="text-gray-600">
    Content
  </p>
</div>
<!-- Airframe -->
<div class="af-card">
  <h2 class="af-card__title">
    Title
  </h2>
  <p class="af-card__body">
    Content
  </p>
</div>
Section titled “Responsive Grid (Equal Columns - Recommended)”
<!-- Tailwind -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
  <div>
    Item 1
  </div>
  <div>
    Item 2
  </div>
  <div>
    Item 3
  </div>
</div>
<!-- Airframe -->
<div class="af-grid-1 af-grid-2@md af-grid-3@lg af-gap-lg">
  <div>
    Item 1
  </div>
  <div>
    Item 2
  </div>
  <div>
    Item 3
  </div>
</div>
<!-- Tailwind -->
<div class="grid grid-cols-12">
  <div class="col-span-12 lg:col-span-8">
    Main
  </div>
  <div class="col-span-12 lg:col-span-4">
    Sidebar
  </div>
</div>
<!-- Airframe (12-column for asymmetric) -->
<div class="af-grid">
  <div class="af-col-span-8@lg">
    Main
  </div>
  <div class="af-col-span-4@lg">
    Sidebar
  </div>
</div>
<!-- Tailwind -->
<div class="flex flex-col gap-4">
  <div>
    Item 1
  </div>
  <div>
    Item 2
  </div>
</div>
<!-- Airframe -->
<div class="af-stack af-gap-lg">
  <div>
    Item 1
  </div>
  <div>
    Item 2
  </div>
</div>

See also: Bootstrap Cheat Sheet | Why Airframe?