Skip to main content
Version: Next (5.0)

Foundations

Type, spacing, density, shape, elevation, motion and icons. Every value below is a token: use the token, not the number. Exact values for both densities are in the token reference.

Typography​

The font is Inter (variable, OFL-1.1), served by AWE, with a system fallback: --awe-font-family-base: 'Inter Variable', Inter, system-ui, .... Code and identifiers use --awe-font-family-monospace.

TokenComfortableCompactUse
--awe-font-size-xs12px11pxCaptions, badges, grid header labels in tight spaces
--awe-font-size-sm13px12pxLabels, help text, secondary lines, grid headers
--awe-font-size-base14px13pxBody, fields, buttons, cells
--awe-font-size-md16px15pxCard and section titles
--awe-font-size-lg18px18pxDialog titles
--awe-font-size-xl20px20pxPage title in compact
--awe-font-size-2xl24px24pxPage title, KPI values
--awe-font-size-3xl30px30pxDisplay (login and standalone pages)

Role tokens point to the scale; prefer them: --awe-font-size-page-title, --awe-font-size-section-title, --awe-font-size-dialog-title, --awe-font-size-display, --awe-font-size-label, --awe-font-size-caption.

WeightTokenUse
400--awe-font-weight-normalBody, values
500--awe-font-weight-mediumLabels, buttons, menu items, tabs
600--awe-font-weight-semiboldTitles, selected items, totals
700--awe-font-weight-boldRare: badges with very short text
  • Line heights: --awe-line-height-tight (1.25, titles), --awe-line-height-snug (1.375, labels, lists), --awe-line-height-base (1.5, body).
  • Titles use a small negative letter spacing (--awe-letter-spacing-display, --awe-letter-spacing-tight). Small uppercase labels use --awe-letter-spacing-caps.
  • Numbers in grids, totals and KPIs use tabular figures: font-variant-numeric: var(--awe-font-variant-numeric), right aligned, so the digits line up.

Spacing​

Spacing is on a 4px grid. The numeric tokens are the scale; the existing t-shirt names stay as aliases.

TokenValueAlias
--awe-space-0-52px--awe-space-2xs
--awe-space-14px--awe-space-xs
--awe-space-1-56px
--awe-space-28px--awe-space-sm
--awe-space-312px--awe-space-md
--awe-space-416px--awe-space-lg
--awe-space-520px
--awe-space-624px--awe-space-xl
--awe-space-832px--awe-space-2xl (new)
--awe-space-10, -12, -1640px, 48px, 64px
Value change

The t-shirt names keep their names but not their values: today xs is 5px, sm 10px, md 15px, lg 20px and xl 30px. In AWE 5 they are 4, 8, 12, 16 and 24px. Product CSS that relies on the old values must be reviewed.

Layout spacing has its own tokens, which change with the density: --awe-content-padding (inside cards), --awe-layout-gap (between cards), --awe-page-padding (page edges), --awe-gap-form-row and --awe-gap-form-column (criteria grid).

Density​

Comfortable (default)Compact
Base font14px13px
Control height (--awe-size-control)36px30px
Small / large control30px / 44px26px / 36px
Field padding8px × 12px5px × 9px
Grid cell padding11px × 14px6px × 10px
Header height60px52px
Menu width264px240px

Density is data-awe-density="compact" on <html>. It is configurable per application and per user. Components get it for free if they use the size, padding and gap tokens. Never write a component rule for one density only.

Shape​

Radius scale:

TokenValueUse
--awe-radius-xs2pxText highlights, small marks
--awe-radius-sm4pxCheckboxes, chips, tags, list options
--awe-radius-md6pxFields, buttons, overlays (--awe-radius-field, --awe-radius-overlay)
--awe-radius-lg8pxInner panels, launcher cards
--awe-radius-xl12pxCards and dialogs (--awe-radius-card, --awe-radius-modal)
--awe-radius-full9999pxAvatars, pills, switches

--awe-radius stays as an alias of md. Today --awe-radius-sm and -lg are derived (half and double); in AWE 5 they are fixed values of the scale.

Elevation​

TokenUse
--awe-shadow-xs (--awe-shadow-card, --awe-shadow-field)Cards, fields, outlined buttons: barely lifted
--awe-shadow-smSelected segment, switch handle
--awe-shadow-md (--awe-shadow-overlay)Dropdowns, listboxes, popovers, toasts, tooltips
--awe-shadow-lg (--awe-shadow-modal)Dialogs, side panel, maximized window

Cards rely on a border plus xs, not on heavy shadows. Shadows are stronger in dark mode (--awe-color-shadow). Layers have fixed z-index tokens: --awe-z-header, --awe-z-menu, --awe-z-dropdown, --awe-z-modal, --awe-z-toast, --awe-z-tooltip. Overlays that must escape clipping (listboxes, flyouts, toasts) use the top layer (popover, <dialog>).

Focus​

Keyboard focus is a 2px outline in --awe-color-focus-ring with a 2px offset (--awe-focus-ring, --awe-focus-ring-offset), shown with :focus-visible. Form fields show the focus border plus a soft halo (--awe-shadow-field-focus; --awe-shadow-field-invalid when invalid). Never remove an outline without a replacement.

Motion​

TokenValueUse
--awe-motion-duration-fast120msHover, colour changes, exit of small items
--awe-motion-duration-base200msToggles, dialogs, tooltips
--awe-motion-duration-slow300msToasts, side panel, mask
--awe-motion-duration-expand240msExpand and collapse (menu levels, accordions, rail)
--awe-motion-easing-standardcubic-bezier(0.2, 0, 0, 1)Most transitions
--awe-motion-easing-enter / -exitdecelerate / accelerateElements that appear / leave
--awe-motion-easing-expandcubic-bezier(0.22, 1, 0.36, 1)Disclosure content
  • With prefers-reduced-motion: reduce every duration token is 0. Use the tokens and you get this for free.
  • No animation on first paint: a restored state (an open menu level) appears in place.
  • Animate the real size: disclosures animate grid-template-rows from 0fr to 1fr, not a fixed max-height.

Iconography​

AWE 5 uses Lucide line icons (ISC) in both engines: 24px grid, 1.75px stroke set by CSS, currentColor. Sizes: --awe-size-icon-sm, --awe-size-icon, --awe-size-icon-lg (14, 16, 20px comfortable).

The XML keeps its icon names. An equivalence table maps each fa-* name to a Lucide icon, so existing screens need no change. Example:

XML iconLucide
fa-searchsearch
fa-plusplus
fa-trashtrash
fa-pencil, fa-editpencil
fa-floppy-osave
fa-filterfunnel
fa-downloaddownload
fa-printprinter
fa-timesx
fa-cogsettings

The Icons page has the full table, the mdi: names, the names that keep their current font during the transition and the lucide: family for new screens.

Rules:

  • An icon-only button needs aria-label and a tooltip.
  • Decorative icons are aria-hidden="true".
  • Colour comes from the parent text; do not colour icons on their own except for status.