The 4px spacing scale, component spacing tokens, breakpoints, grids and logical properties.
On this page
DGA spacing is a 4px scale. Tailwind's spacing step is also 4px (0.25rem), so every DGA step maps directly to a numeric utility: --spacing-4 (16px) is p-4, --spacing-80 (320px) is p-80.
Scale
p-00pxp-0.52pxp-14pxp-1.56pxp-28pxp-312pxp-416pxp-520pxp-624pxp-832pxp-1040pxp-1248pxp-1664pxp-2080pxp-2496pxp-32128pxp-40160pxp-48192pxp-56224pxp-64256pxp-80320pxp-96384pxp-120480pxp-140560pxp-160640pxp-180720pxp-192768pxp-2561024pxp-3201280pxp-3601440pxp-4001600pxp-4801920pxT-shirt aliases
Figma also names steps by size. They map onto the numeric scale, so use the numeric utility.
| Token | Same as | Value |
|---|---|---|
Token:--spacing-none | Same as:p-0 | Value:0px |
Token:--spacing-xxs | Same as:p-0.5 | Value:2px |
Token:--spacing-xs | Same as:p-1 | Value:4px |
Token:--spacing-sm | Same as:p-1.5 | Value:6px |
Token:--spacing-md | Same as:p-2 | Value:8px |
Token:--spacing-lg | Same as:p-3 | Value:12px |
Token:--spacing-xl | Same as:p-4 | Value:16px |
Token:--spacing-2xl | Same as:p.5 | Value:20px |
Token:--spacing-3xl | Same as:p-6 | Value:24px |
Token:--spacing-4xl | Same as:p-8 | Value:32px |
Token:--spacing-5xl | Same as:p-10 | Value:40px |
Token:--spacing-6xl | Same as:p-12 | Value:48px |
Token:--spacing-7xl | Same as:p-16 | Value:64px |
Token:--spacing-8xl | Same as:p-20 | Value:80px |
Token:--spacing-9xl | Same as:p-24 | Value:96px |
Token:--spacing-10xl | Same as:p-32 | Value:128px |
Token:--spacing-11xl | Same as:p-40 | Value:160px |
Component and layout tokens
These tokens change with the viewport. Each one has a utility for every spacing property: p-card-lg-padding, gap-section-gap, px-buttons-md-padding and so on.
| Utility | Desktop | Tablet | Mobile |
|---|---|---|---|
Utility:p-card-lg-padding | Desktop:32px | Tablet:24px | Mobile:16px |
Utility:p-card-lg-gap | Desktop:24px | Tablet:24px | Mobile:16px |
Utility:p-card-md-gap | Desktop:24px | Tablet:20px | Mobile:12px |
Utility:p-card-md-padding | Desktop:32px | Tablet:24px | Mobile:16px |
Utility:p-card-sm-padding | Desktop:32px | Tablet:24px | Mobile:16px |
Utility:p-card-sm-gap | Desktop:24px | Tablet:20px | Mobile:12px |
Utility:p-section-padding | Desktop:32px | Tablet:24px | Mobile:16px |
Utility:p-section-gap | Desktop:32px | Tablet:24px | Mobile:16px |
Utility:p-text-content-gap | Desktop:8px | Tablet:8px | Mobile:4px |
Utility:p-icon-text-gap | Desktop:8px | Tablet:8px | Mobile:4px |
Utility:p-buttons-group-gap | Desktop:8px | Tablet:8px | Mobile:4px |
Utility:p-links-group-gap | Desktop:12px | Tablet:12px | Mobile:8px |
Utility:p-control-vertical-gap | Desktop:4px | Tablet:4px | Mobile:4px |
Utility:p-accordion-lg-header-padding | Desktop:16px | Tablet:16px | Mobile:16px |
Utility:p-accordion-lg-header-gap | Desktop:16px | Tablet:16px | Mobile:16px |
Utility:p-accordion-md-header-padding | Desktop:12px | Tablet:12px | Mobile:12px |
Utility:p-accordion-md-header-gap | Desktop:48px | Tablet:12px | Mobile:12px |
Utility:p-accordion-sm-header-padding | Desktop:8px | Tablet:8px | Mobile:8px |
Utility:p-accordion-sm-header-gap | Desktop:8px | Tablet:8px | Mobile:8px |
Utility:p-tooltip-gap | Desktop:8px | Tablet:8px | Mobile:8px |
Utility:p-tooltip-padding | Desktop:8px | Tablet:8px | Mobile:8px |
Utility:p-input-padding | Desktop:0px | Tablet:0px | Mobile:0px |
Utility:p-input-gap | Desktop:0px | Tablet:0px | Mobile:0px |
Utility:p-textarea-padding | Desktop:0px | Tablet:0px | Mobile:0px |
Utility:p-textarea-gap | Desktop:0px | Tablet:0px | Mobile:0px |
Utility:p-label-gap | Desktop:4px | Tablet:4px | Mobile:4px |
Utility:p-field-label-gap | Desktop:8px | Tablet:8px | Mobile:8px |
Utility:p-horizontal-tab-md-button-v-padding | Desktop:12px | Tablet:12px | Mobile:8px |
Utility:p-horizontal-tab-md-button-h-padding | Desktop:16px | Tablet:16px | Mobile:12px |
Utility:p-tab-button-gap | Desktop:4px | Tablet:4px | Mobile:4px |
Utility:p-horizontal-tab-sm-button-v-padding | Desktop:8px | Tablet:8px | Mobile:4px |
Utility:p-horizontal-tab-sm-button-h-padding | Desktop:12px | Tablet:12px | Mobile:8px |
Utility:p-vertical-tab-md-button-v-padding | Desktop:6px | Tablet:6px | Mobile:4px |
Utility:p-vertical-tab-md-button-h-padding | Desktop:12px | Tablet:12px | Mobile:8px |
Utility:p-vertical-tab-sm-button-v-padding | Desktop:2px | Tablet:2px | Mobile:2px |
Utility:p-vertical-tab-sm-button-h-padding | Desktop:6px | Tablet:6px | Mobile:4px |
Utility:p-table-cell-gap | Desktop:8px | Tablet:8px | Mobile:4px |
Utility:p-table-cell-v-padding | Desktop:8px | Tablet:8px | Mobile:4px |
Utility:p-table-cell-h-padding | Desktop:16px | Tablet:16px | Mobile:12px |
Utility:p-control-title-error-gap | Desktop:16px | Tablet:12px | Mobile:8px |
Utility:p-control-switch-description-padding | Desktop:64px | Tablet:64px | Mobile:64px |
Utility:p-control-switch-error-icon-gap | Desktop:8px | Tablet:8px | Mobile:4px |
Utility:p-progress-indicator-gap | Desktop:8px | Tablet:8px | Mobile:16px |
Utility:p-progress-text-content-side-padding | Desktop:16px | Tablet:16px | Mobile:12px |
Utility:p-control-radio-description-padding | Desktop:48px | Tablet:48px | Mobile:48px |
Utility:p-control-radio-error-icon-gap | Desktop:16px | Tablet:16px | Mobile:48px |
Utility:p-pagination-item-md-padding | Desktop:6px | Tablet:6px | Mobile:6px |
Utility:p-pagination-item-sm-padding | Desktop:4px | Tablet:4px | Mobile:4px |
Utility:p-pagination-item-lg-padding | Desktop:8px | Tablet:8px | Mobile:8px |
Utility:p-pagination-items-padding | Desktop:8px | Tablet:8px | Mobile:4px |
Utility:p-button-menu-gap | Desktop:8px | Tablet:8px | Mobile:4px |
Utility:p-button-menu-v-padding | Desktop:8px | Tablet:8px | Mobile:8px |
Utility:p-button-menu-h-padding | Desktop:8px | Tablet:8px | Mobile:8px |
Utility:p-modal-gap | Desktop:8px | Tablet:8px | Mobile:8px |
Utility:p-modal-padding | Desktop:24px | Tablet:24px | Mobile:16px |
Utility:p-modal-content-bottom-padding | Desktop:16px | Tablet:16px | Mobile:8px |
Utility:p-buttons-lg-gap | Desktop:4px | Tablet:4px | Mobile:4px |
Utility:p-buttons-lg-padding | Desktop:16px | Tablet:16px | Mobile:16px |
Utility:p-buttons-md-gap | Desktop:4px | Tablet:4px | Mobile:4px |
Utility:p-buttons-md-padding | Desktop:12px | Tablet:12px | Mobile:12px |
Utility:p-buttons-sm-gap | Desktop:4px | Tablet:4px | Mobile:4px |
Utility:p-buttons-sm-padding | Desktop:8px | Tablet:8px | Mobile:8px |
Utility:p-link-md-gap | Desktop:8px | Tablet:8px | Mobile:4px |
Utility:p-link-sm-gap | Desktop:4px | Tablet:4px | Mobile:4px |
Utility:p-notification-gap | Desktop:16px | Tablet:16px | Mobile:8px |
Utility:p-notification-padding | Desktop:16px | Tablet:16px | Mobile:12px |
Utility:p-notification-h-padding | Desktop:24px | Tablet:24px | Mobile:16px |
Utility:p-select-padding | Desktop:0px | Tablet:0px | Mobile:0px |
Utility:p-select-gap | Desktop:0px | Tablet:0px | Mobile:0px |
Utility:p-notification-alert-v-padding | Desktop:8px | Tablet:8px | Mobile:8px |
Utility:p-notification-alert-h-padding | Desktop:24px | Tablet:24px | Mobile:16px |
Utility:p-notification-toast-v-padding | Desktop:16px | Tablet:16px | Mobile:12px |
Utility:p-notification-toast-desktop-h-padding | Desktop:24px | Tablet:24px | Mobile:16px |
Utility:p-notification-toast-mobile-h-padding | Desktop:16px | Tablet:16px | Mobile:16px |
Utility:p-label-container | Desktop:8px | Tablet:8px | Mobile:8px |
Utility:p-input-container-padding-start | Desktop:8px | Tablet:8px | Mobile:8px |
Utility:p-input-container-padding-end | Desktop:16px | Tablet:16px | Mobile:16px |
Utility:p-icon-enteredtext | Desktop:8px | Tablet:8px | Mobile:8px |
Utility:p-icon-helpertext | Desktop:8px | Tablet:8px | Mobile:8px |
Utility:p-prefix-suffix-padding-start | Desktop:16px | Tablet:16px | Mobile:16px |
Utility:p-prefix-suffix-padding-end | Desktop:16px | Tablet:16px | Mobile:16px |
Utility:p-prefix-suffix-label-icon | Desktop:4px | Tablet:4px | Mobile:4px |
Utility:p-prefix-suffix-padding-block | Desktop:2px | Tablet:2px | Mobile:2px |
Utility:p-dropdown-container-padding-inline | Desktop:16px | Tablet:16px | Mobile:16px |
Utility:p-dropdown-icon-content | Desktop:4px | Tablet:4px | Mobile:4px |
Utility:p-textarea-container-padding-inline | Desktop:16px | Tablet:16px | Mobile:16px |
Utility:p-textarea-container-padding-block | Desktop:12px | Tablet:12px | Mobile:12px |
Breakpoints
Figma defines Desktop, Tablet and Mobile modes but no pixel widths. DGA UI uses the widths below; the reasoning is in Deviations.
| Prefix | Min width | Notes |
|---|---|---|
Prefix:sm: | Min width:640px (40rem) | Notes: |
Prefix:md: | Min width:768px (48rem) | Notes:Figma Tablet mode starts |
Prefix:lg: | Min width:1024px (64rem) | Notes:Figma Desktop mode starts |
Prefix:xl: | Min width:1280px (80rem) | Notes: |
Prefix:2xl: | Min width:1536px (96rem) | Notes: |
Grids
| Figma grid | Columns | Gutter | Margin | Content width |
|---|---|---|---|---|
Figma grid:desktop | Columns:12 | Gutter:24px | Margin:112px | Content width:1216px |
Figma grid:tablet | Columns:6 | Gutter:32px | Margin:32px | Content width:704px |
Figma grid:mobile | Columns:4 | Gutter:16px | Margin:16px | Content width:343px |
The page container is 1280px wide (max-w-content) with 32px padding on desktop and 16px on mobile. Paragraphs cap at 720px (max-w-paragraph).
RTL and logical properties
Use logical utilities only, so one layout works in Arabic and English:
| Use | Not |
|---|---|
ms-*, me-* | ml-*, mr-* |
ps-*, pe-* | pl-*, pr-* |
start-*, end-* | left-*, right-* |
border-s, border-e | border-l, border-r |
rounded-s-*, rounded-e-* | rounded-l-*, rounded-r-* |
text-start, text-end | text-left, text-right |
The repository's tests fail on any physical left/right utility or CSS property.