Skip to main content
Version: Next (5.0)

Token reference

Every token of the AWE 5 proposal, generated from the prototype's tokens.css, and the mapping from today's tokens. To see them rendered in both modes, open the tokens page of the prototype.

TierTokens
1 · Primitive242
1 · Configurable27
2 · Semantic257
3 · Component58
Prototype only5
Total589

How to read the tables:

  • Light / Dark: the two arguments of light-dark(). "= light" means the token does not depend on the mode.
  • Comfortable / Compact: the value per density. An empty Compact cell means the same value as Comfortable.
  • var(--awe-primary-fill) and the other configurable tokens depend on data-awe-primary and data-awe-surface.

Tokens​

Tier 1: primitive palettes​

Name: --awe-palette-<palette>-<shade>. 22 palettes × 11 shades = 242 tokens.

Palette50100200300400500600700800900950
emerald#ecfdf5#d1fae5#a7f3d0#6ee7b7#34d399#10b981#059669#047857#065f46#064e3b#022c22
green#f0fdf4#dcfce7#bbf7d0#86efac#4ade80#22c55e#16a34a#15803d#166534#14532d#052e16
lime#f7fee7#ecfccb#d9f99d#bef264#a3e635#84cc16#65a30d#4d7c0f#3f6212#365314#1a2e05
red#fef2f2#fee2e2#fecaca#fca5a5#f87171#ef4444#dc2626#b91c1c#991b1b#7f1d1d#450a0a
orange#fff7ed#ffedd5#fed7aa#fdba74#fb923c#f97316#ea580c#c2410c#9a3412#7c2d12#431407
amber#fffbeb#fef3c7#fde68a#fcd34d#fbbf24#f59e0b#d97706#b45309#92400e#78350f#451a03
yellow#fefce8#fef9c3#fef08a#fde047#facc15#eab308#ca8a04#a16207#854d0e#713f12#422006
teal#f0fdfa#ccfbf1#99f6e4#5eead4#2dd4bf#14b8a6#0d9488#0f766e#115e59#134e4a#042f2e
cyan#ecfeff#cffafe#a5f3fc#67e8f9#22d3ee#06b6d4#0891b2#0e7490#155e75#164e63#083344
sky#f0f9ff#e0f2fe#bae6fd#7dd3fc#38bdf8#0ea5e9#0284c7#0369a1#075985#0c4a6e#082f49
blue#eff6ff#dbeafe#bfdbfe#93c5fd#60a5fa#3b82f6#2563eb#1d4ed8#1e40af#1e3a8a#172554
indigo#eef2ff#e0e7ff#c7d2fe#a5b4fc#818cf8#6366f1#4f46e5#4338ca#3730a3#312e81#1e1b4b
violet#f5f3ff#ede9fe#ddd6fe#c4b5fd#a78bfa#8b5cf6#7c3aed#6d28d9#5b21b6#4c1d95#2e1065
purple#faf5ff#f3e8ff#e9d5ff#d8b4fe#c084fc#a855f7#9333ea#7e22ce#6b21a8#581c87#3b0764
fuchsia#fdf4ff#fae8ff#f5d0fe#f0abfc#e879f9#d946ef#c026d3#a21caf#86198f#701a75#4a044e
pink#fdf2f8#fce7f3#fbcfe8#f9a8d4#f472b6#ec4899#db2777#be185d#9d174d#831843#500724
rose#fff1f2#ffe4e6#fecdd3#fda4af#fb7185#f43f5e#e11d48#be123c#9f1239#881337#4c0519
slate#f8fafc#f1f5f9#e2e8f0#cbd5e1#94a3b8#64748b#475569#334155#1e293b#0f172a#020617
gray#f9fafb#f3f4f6#e5e7eb#d1d5db#9ca3af#6b7280#4b5563#374151#1f2937#111827#030712
zinc#fafafa#f4f4f5#e4e4e7#d4d4d8#a1a1aa#71717a#52525b#3f3f46#27272a#18181b#09090b
neutral#fafafa#f5f5f5#e5e5e5#d4d4d4#a3a3a3#737373#525252#404040#262626#171717#0a0a0a
stone#fafaf9#f5f5f4#e7e5e4#d6d3d1#a8a29e#78716c#57534e#44403c#292524#1c1917#0c0a09

Tier 1: configurable palettes​

The values below are those of the named palettes. When a theme gives a hex, the same tokens hold the generated values (see Palettes generated from a hex).

TokenDefault value (emerald)
--awe-primary-50var(--awe-palette-emerald-50)
--awe-primary-100var(--awe-palette-emerald-100)
--awe-primary-200var(--awe-palette-emerald-200)
--awe-primary-300var(--awe-palette-emerald-300)
--awe-primary-400var(--awe-palette-emerald-400)
--awe-primary-500var(--awe-palette-emerald-500)
--awe-primary-600var(--awe-palette-emerald-600)
--awe-primary-700var(--awe-palette-emerald-700)
--awe-primary-800var(--awe-palette-emerald-800)
--awe-primary-900var(--awe-palette-emerald-900)
--awe-primary-950var(--awe-palette-emerald-950)
--awe-primary-fillvar(--awe-primary-700)
--awe-primary-fill-hovervar(--awe-primary-800)
--awe-primary-fill-activevar(--awe-primary-900)
--awe-primary-on-fill#ffffff

The primary is chosen with data-awe-primary on <html>. Fill shades per palette (light mode):

PaletteFillHoverActiveText on fill
emerald700800900#ffffff
green700800900#ffffff
lime500400600950
red600700800#ffffff
orange700800900#ffffff
amber500400600950
yellow500400600950
teal700800900#ffffff
cyan700800900#ffffff
sky700800900#ffffff
blue600700800#ffffff
indigo600700800#ffffff
violet600700800#ffffff
purple600700800#ffffff
fuchsia600700800#ffffff
pink600700800#ffffff
rose600700800#ffffff

Surface: data-awe-surface on <html> (slate, gray, zinc, neutral, stone). Without the attribute:

TokenLightDark
--awe-surface-0#ffffff#ffffff
--awe-surface-50var(--awe-palette-slate-50)var(--awe-palette-zinc-50)
--awe-surface-100var(--awe-palette-slate-100)var(--awe-palette-zinc-100)
--awe-surface-200var(--awe-palette-slate-200)var(--awe-palette-zinc-200)
--awe-surface-300var(--awe-palette-slate-300)var(--awe-palette-zinc-300)
--awe-surface-400var(--awe-palette-slate-400)var(--awe-palette-zinc-400)
--awe-surface-500var(--awe-palette-slate-500)var(--awe-palette-zinc-500)
--awe-surface-600var(--awe-palette-slate-600)var(--awe-palette-zinc-600)
--awe-surface-700var(--awe-palette-slate-700)var(--awe-palette-zinc-700)
--awe-surface-800var(--awe-palette-slate-800)var(--awe-palette-zinc-800)
--awe-surface-900var(--awe-palette-slate-900)var(--awe-palette-zinc-900)
--awe-surface-950var(--awe-palette-slate-950)var(--awe-palette-zinc-950)

Tier 2: semantic​

Colour · Brand

TokenLightDark
--awe-color-primaryvar(--awe-primary-fill)var(--awe-primary-400)
--awe-color-primary-hovervar(--awe-primary-fill-hover)var(--awe-primary-300)
--awe-color-primary-activevar(--awe-primary-fill-active)var(--awe-primary-200)
--awe-color-on-primaryvar(--awe-primary-on-fill)var(--awe-surface-900)
--awe-color-primary-textvar(--awe-primary-700)var(--awe-primary-400)
--awe-color-primary-subtlevar(--awe-primary-100)color-mix(in srgb, var(--awe-primary-500), transparent 84%)
--awe-color-on-primary-subtlevar(--awe-primary-700)var(--awe-primary-300)
--awe-color-themevar(--awe-color-primary)= light
--awe-color-secondaryvar(--awe-surface-100)var(--awe-surface-800)
--awe-color-secondary-hovervar(--awe-surface-200)var(--awe-surface-700)
--awe-color-on-secondaryvar(--awe-surface-600)var(--awe-surface-300)

Colour · Text

TokenLightDark
--awe-color-textvar(--awe-surface-700)var(--awe-surface-0)
--awe-color-text-emphasisvar(--awe-surface-900)var(--awe-surface-0)
--awe-color-text-mutedvar(--awe-surface-500)var(--awe-surface-400)
--awe-color-text-hovervar(--awe-surface-800)var(--awe-surface-0)
--awe-color-text-muted-hovervar(--awe-surface-600)var(--awe-surface-300)

Colour · Page and content

TokenLightDark
--awe-color-backgroundvar(--awe-surface-50)var(--awe-surface-950)
--awe-color-surfacevar(--awe-surface-0)var(--awe-surface-900)
--awe-color-surface-hovervar(--awe-surface-100)var(--awe-surface-800)
--awe-color-surface-subtlevar(--awe-surface-50)color-mix(in srgb, var(--awe-surface-800), transparent 50%)
--awe-color-surface-raisedvar(--awe-surface-0)var(--awe-surface-600)
--awe-color-bordervar(--awe-surface-200)var(--awe-surface-700)
--awe-color-border-subtlevar(--awe-surface-100)var(--awe-surface-800)
--awe-color-shadowrgb(0 0 0 / 0.1)rgb(0 0 0 / 0.45)
--awe-color-shadow-softrgb(18 18 23 / 0.05)rgb(0 0 0 / 0.3)
--awe-color-contentvar(--awe-color-surface)= light
--awe-color-content-hovervar(--awe-color-surface-hover)= light
--awe-color-content-bordervar(--awe-color-border)= light
--awe-color-maskrgb(0 0 0 / 0.4)rgb(0 0 0 / 0.6)

Colour · Highlight (selected option, selected row, active menu option)

TokenLightDark
--awe-color-highlightvar(--awe-primary-50)color-mix(in srgb, var(--awe-primary-400), transparent 84%)
--awe-color-highlight-focusvar(--awe-primary-100)color-mix(in srgb, var(--awe-primary-400), transparent 76%)
--awe-color-on-highlightvar(--awe-primary-700)rgb(255 255 255 / 0.87)
--awe-color-on-highlight-focusvar(--awe-primary-800)rgb(255 255 255 / 0.87)

Colour · Main menu, navbar, panels and grids (existing AWE vocabulary)

TokenLightDark
--awe-color-menuvar(--awe-color-surface)= light
--awe-color-menu-accentvar(--awe-color-highlight)= light
--awe-color-menu-textvar(--awe-color-text)= light
--awe-color-navbarvar(--awe-color-surface)= light
--awe-color-navbar-accentvar(--awe-color-surface-hover)= light
--awe-color-navbar-textvar(--awe-color-text)= light
--awe-color-navbar-dropdownvar(--awe-color-overlay)= light
--awe-color-panelvar(--awe-color-surface)= light
--awe-color-panel-headervar(--awe-color-surface)= light
--awe-color-panel-bordervar(--awe-color-border)= light
--awe-color-panel-textvar(--awe-color-text)= light
--awe-color-grid-headervar(--awe-surface-50)color-mix(in srgb, var(--awe-surface-800), var(--awe-surface-900))
--awe-color-grid-bordervar(--awe-color-border)= light
--awe-color-skeletonvar(--awe-surface-200)var(--awe-surface-800)
--awe-color-skeleton-highlightvar(--awe-surface-100)var(--awe-surface-700)

Colour · Overlays (select panels, popovers, menus, dialogs)

TokenLightDark
--awe-color-overlayvar(--awe-surface-0)var(--awe-surface-900)
--awe-color-overlay-bordervar(--awe-surface-200)var(--awe-surface-700)
--awe-color-overlay-textvar(--awe-color-text)= light
--awe-color-tooltipvar(--awe-surface-800)var(--awe-surface-700)
--awe-color-on-tooltipvar(--awe-surface-0)= light

Colour · Form fields

TokenLightDark
--awe-color-fieldvar(--awe-surface-0)var(--awe-surface-950)
--awe-color-field-filledvar(--awe-surface-50)var(--awe-surface-800)
--awe-color-field-bordervar(--awe-surface-300)var(--awe-surface-600)
--awe-color-field-border-hovervar(--awe-surface-400)var(--awe-surface-500)
--awe-color-field-border-focusvar(--awe-color-primary)= light
--awe-color-field-border-invalidvar(--awe-palette-red-500)var(--awe-palette-red-300)
--awe-color-field-textvar(--awe-surface-700)var(--awe-surface-0)
--awe-color-field-placeholdervar(--awe-surface-500)var(--awe-surface-400)
--awe-color-field-placeholder-invalidvar(--awe-palette-red-600)var(--awe-palette-red-400)
--awe-color-field-iconvar(--awe-surface-400)= light
--awe-color-field-labelvar(--awe-color-text-emphasis)= light
--awe-color-field-helpvar(--awe-color-text-muted)= light
--awe-color-field-focus-halocolor-mix(in srgb, var(--awe-color-primary), transparent 80%)= light
--awe-color-field-invalid-halocolor-mix(in srgb, var(--awe-color-danger), transparent 82%)= light

Colour · List options (select, autocomplete, menus)

TokenLightDark
--awe-color-list-option-focusvar(--awe-surface-100)var(--awe-surface-800)
--awe-color-list-option-selectedvar(--awe-color-highlight)= light
--awe-color-list-option-selected-focusvar(--awe-color-highlight-focus)= light
--awe-color-list-option-textvar(--awe-color-text)= light
--awe-color-list-option-text-focusvar(--awe-color-text-hover)= light
--awe-color-list-option-text-selectedvar(--awe-color-on-highlight)= light
--awe-color-list-option-iconvar(--awe-surface-400)var(--awe-surface-500)
--awe-color-list-option-groupvar(--awe-color-text-muted)= light

Colour · Navigation items (side menu, breadcrumb, tabs, user menu)

TokenLightDark
--awe-color-nav-item-focusvar(--awe-surface-100)var(--awe-surface-800)
--awe-color-nav-item-activevar(--awe-surface-100)var(--awe-surface-800)
--awe-color-nav-item-textvar(--awe-color-text)= light
--awe-color-nav-item-text-activevar(--awe-color-text-hover)= light
--awe-color-nav-item-iconvar(--awe-surface-400)var(--awe-surface-500)
--awe-color-nav-item-icon-activevar(--awe-surface-500)var(--awe-surface-400)
--awe-color-nav-submenu-labelvar(--awe-color-text-muted)= light

Colour · States

TokenLightDark
--awe-color-disabledvar(--awe-surface-200)var(--awe-surface-700)
--awe-color-disabled-bordervar(--awe-surface-300)var(--awe-surface-600)
--awe-color-disabled-textvar(--awe-surface-500)var(--awe-surface-400)
--awe-color-requiredvar(--awe-palette-red-600)var(--awe-palette-red-400)
--awe-color-loading-barvar(--awe-color-primary)= light
--awe-color-dangervar(--awe-palette-red-600)var(--awe-palette-red-400)
--awe-color-danger-hovervar(--awe-palette-red-700)var(--awe-palette-red-300)
--awe-color-on-danger#ffffffvar(--awe-palette-red-950)
--awe-color-danger-subtlevar(--awe-palette-red-100)color-mix(in srgb, var(--awe-palette-red-500), transparent 84%)
--awe-color-danger-textvar(--awe-palette-red-700)var(--awe-palette-red-300)
--awe-color-danger-bordervar(--awe-palette-red-200)color-mix(in srgb, var(--awe-palette-red-700), transparent 64%)
--awe-color-successvar(--awe-palette-green-700)var(--awe-palette-green-400)
--awe-color-success-hovervar(--awe-palette-green-800)var(--awe-palette-green-300)
--awe-color-on-success#ffffffvar(--awe-palette-green-950)
--awe-color-success-subtlevar(--awe-palette-green-100)color-mix(in srgb, var(--awe-palette-green-500), transparent 84%)
--awe-color-success-textvar(--awe-palette-green-700)var(--awe-palette-green-300)
--awe-color-success-bordervar(--awe-palette-green-200)color-mix(in srgb, var(--awe-palette-green-700), transparent 64%)
--awe-color-warningvar(--awe-palette-orange-700)var(--awe-palette-orange-400)
--awe-color-warning-hovervar(--awe-palette-orange-800)var(--awe-palette-orange-300)
--awe-color-on-warning#ffffffvar(--awe-palette-orange-950)
--awe-color-warning-subtlevar(--awe-palette-orange-100)color-mix(in srgb, var(--awe-palette-orange-500), transparent 84%)
--awe-color-warning-textvar(--awe-palette-orange-700)var(--awe-palette-orange-300)
--awe-color-warning-bordervar(--awe-palette-orange-200)color-mix(in srgb, var(--awe-palette-orange-700), transparent 64%)
--awe-color-infovar(--awe-palette-sky-700)var(--awe-palette-sky-400)
--awe-color-info-hovervar(--awe-palette-sky-800)var(--awe-palette-sky-300)
--awe-color-on-info#ffffffvar(--awe-palette-sky-950)
--awe-color-info-subtlevar(--awe-palette-sky-100)color-mix(in srgb, var(--awe-palette-sky-500), transparent 84%)
--awe-color-info-textvar(--awe-palette-sky-700)var(--awe-palette-sky-300)
--awe-color-info-bordervar(--awe-palette-sky-200)color-mix(in srgb, var(--awe-palette-sky-700), transparent 64%)
--awe-color-neutral-subtlevar(--awe-color-secondary)= light
--awe-color-neutral-textvar(--awe-color-on-secondary)= light
--awe-color-contrastvar(--awe-surface-950)var(--awe-surface-0)
--awe-color-on-contrastvar(--awe-surface-0)var(--awe-surface-950)

Data visualisation

TokenLightDark
--awe-color-scale-1var(--awe-primary-50)color-mix(in srgb, var(--awe-primary-400) 12%, var(--awe-surface-900))
--awe-color-scale-2var(--awe-primary-100)color-mix(in srgb, var(--awe-primary-400) 22%, var(--awe-surface-900))
--awe-color-scale-3var(--awe-primary-200)color-mix(in srgb, var(--awe-primary-400) 34%, var(--awe-surface-900))
--awe-color-scale-4var(--awe-primary-300)color-mix(in srgb, var(--awe-primary-400) 48%, var(--awe-surface-900))
--awe-color-scale-5var(--awe-color-primary)= light
--awe-color-on-scale-1var(--awe-color-text-emphasis)= light
--awe-color-on-scale-2var(--awe-color-text-emphasis)= light
--awe-color-on-scale-3var(--awe-color-text-emphasis)= light
--awe-color-on-scale-4var(--awe-color-text-emphasis)= light
--awe-color-on-scale-5var(--awe-color-on-primary)= light
--awe-color-data-barvar(--awe-primary-100)color-mix(in srgb, var(--awe-primary-400) 35%, transparent)
--awe-color-data-bar-negativevar(--awe-palette-red-100)color-mix(in srgb, var(--awe-palette-red-400) 35%, transparent)
--awe-color-chart-linevar(--awe-color-primary-text)= light
--awe-color-chart-areacolor-mix(in srgb, var(--awe-color-primary-text) 18%, transparent)= light
--awe-color-chart-negativevar(--awe-color-danger)= light
--awe-color-chart-axisvar(--awe-color-border)= light
--awe-color-map-watervar(--awe-palette-sky-100)color-mix(in srgb, var(--awe-palette-sky-500) 16%, var(--awe-surface-950))
--awe-color-map-landvar(--awe-surface-50)var(--awe-surface-900)
--awe-color-map-parkvar(--awe-palette-green-100)color-mix(in srgb, var(--awe-palette-green-500) 14%, var(--awe-surface-900))
--awe-color-map-roadvar(--awe-surface-0)var(--awe-surface-700)
--awe-color-map-road-casingvar(--awe-surface-300)var(--awe-surface-800)
--awe-color-map-bordervar(--awe-surface-400)var(--awe-surface-600)
--awe-color-map-labelvar(--awe-surface-600)var(--awe-surface-300)

Typography

TokenComfortableCompact
--awe-font-family-base'Inter Variable', Inter, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif
--awe-font-family-monospaceui-monospace, 'SF Mono', 'Cascadia Code', Menlo, Consolas, monospace
--awe-font-size-xs12px11px
--awe-font-size-sm13px12px
--awe-font-size-base14px13px
--awe-font-size-md16px15px
--awe-font-size-lg18px
--awe-font-size-xl20px
--awe-font-size-2xl24px
--awe-font-size-3xl30px
--awe-font-size-smallvar(--awe-font-size-sm)
--awe-font-size-page-titlevar(--awe-font-size-2xl)var(--awe-font-size-xl)
--awe-font-size-section-titlevar(--awe-font-size-md)
--awe-font-size-dialog-titlevar(--awe-font-size-lg)
--awe-font-size-displayvar(--awe-font-size-3xl)var(--awe-font-size-2xl)
--awe-font-size-labelvar(--awe-font-size-sm)
--awe-font-size-captionvar(--awe-font-size-xs)
--awe-font-weight-normal400
--awe-font-weight-medium500
--awe-font-weight-semibold600
--awe-font-weight-bold700
--awe-line-height-tight1.25
--awe-line-height-snug1.375
--awe-line-height-base1.5
--awe-letter-spacing-tight-0.011em
--awe-letter-spacing-display-0.022em
--awe-letter-spacing-caps0.06em
--awe-font-feature-base'cv05', 'calt'
--awe-font-variant-numerictabular-nums

Spacing, radius, elevation, focus, motion, layers

TokenValueReduced motion
--awe-space-00
--awe-space-0-52px
--awe-space-14px
--awe-space-1-56px
--awe-space-28px
--awe-space-312px
--awe-space-416px
--awe-space-520px
--awe-space-624px
--awe-space-832px
--awe-space-1040px
--awe-space-1248px
--awe-space-1664px
--awe-space-2xsvar(--awe-space-0-5)
--awe-space-xsvar(--awe-space-1)
--awe-space-smvar(--awe-space-2)
--awe-space-mdvar(--awe-space-3)
--awe-space-lgvar(--awe-space-4)
--awe-space-xlvar(--awe-space-6)
--awe-space-2xlvar(--awe-space-8)
--awe-radius-none0
--awe-radius-xs2px
--awe-radius-sm4px
--awe-radius-md6px
--awe-radius-lg8px
--awe-radius-xl12px
--awe-radius-full9999px
--awe-radiusvar(--awe-radius-md)
--awe-radius-fieldvar(--awe-radius-md)
--awe-radius-contentvar(--awe-radius-md)
--awe-radius-cardvar(--awe-radius-xl)
--awe-radius-overlayvar(--awe-radius-md)
--awe-radius-modalvar(--awe-radius-xl)
--awe-radius-list-optionvar(--awe-radius-sm)
--awe-shadow-xs0 1px 2px 0 var(--awe-color-shadow-soft)
--awe-shadow-sm0 1px 3px 0 var(--awe-color-shadow), 0 1px 2px -1px var(--awe-color-shadow)
--awe-shadow-md0 4px 6px -1px var(--awe-color-shadow), 0 2px 4px -2px var(--awe-color-shadow)
--awe-shadow-lg0 20px 25px -5px var(--awe-color-shadow), 0 8px 10px -6px var(--awe-color-shadow)
--awe-shadow-fieldvar(--awe-shadow-xs)
--awe-shadow-cardvar(--awe-shadow-xs)
--awe-shadow-overlayvar(--awe-shadow-md)
--awe-shadow-modalvar(--awe-shadow-lg)
--awe-color-focus-ringvar(--awe-color-primary-text)
--awe-focus-ring-width2px
--awe-focus-ring-stylesolid
--awe-focus-ring-offset2px
--awe-focus-ringvar(--awe-focus-ring-width) var(--awe-focus-ring-style) var(--awe-color-focus-ring)
--awe-shadow-field-focus0 0 0 3px var(--awe-color-field-focus-halo)
--awe-shadow-field-invalid0 0 0 3px var(--awe-color-field-invalid-halo)
--awe-motion-duration-fast120ms0ms
--awe-motion-duration-base200ms0ms
--awe-motion-duration-slow300ms0ms
--awe-motion-easing-standardcubic-bezier(0.2, 0, 0, 1)
--awe-motion-easing-entercubic-bezier(0, 0, 0.2, 1)
--awe-motion-easing-exitcubic-bezier(0.4, 0, 1, 1)
--awe-motion-duration-expand240ms0ms
--awe-motion-easing-expandcubic-bezier(0.22, 1, 0.36, 1)
--awe-z-header100
--awe-z-menu110
--awe-z-dropdown1000
--awe-z-modal1100
--awe-z-toast1200
--awe-z-tooltip1300
--awe-opacity-disabled0.6

Density

TokenComfortableCompact
--awe-size-control36px30px
--awe-size-control-sm30px26px
--awe-size-control-lg44px36px
--awe-size-icon16px14px
--awe-size-icon-sm14px12px
--awe-size-icon-lg20px18px
--awe-size-checkbox18px16px
--awe-size-header-height60px52px
--awe-size-menu-width264px240px
--awe-field-padding-x12px9px
--awe-field-padding-y8px5px
--awe-button-padding-x14px10px
--awe-gap-label6px4px
--awe-gap-inline8px6px
--awe-gap-form-row18px12px
--awe-gap-form-column20px14px
--awe-content-padding20px14px
--awe-layout-gap20px12px
--awe-page-padding28px16px
--awe-list-padding4px
--awe-list-gap2px
--awe-list-option-padding8px 12px6px 10px
--awe-nav-item-padding8px 12px6px 10px
--awe-nav-item-gap10px8px
--awe-overlay-padding12px10px
--awe-modal-padding20px16px

Tier 3: component​

Grid, side menu, header, overlays, segmented control

TokenLightDark
--awe-grid-header-backgroundvar(--awe-color-grid-header)= light
--awe-grid-header-textvar(--awe-color-text-muted)= light
--awe-grid-header-font-sizevar(--awe-font-size-sm)= light
--awe-grid-header-font-weightvar(--awe-font-weight-semibold)= light
--awe-grid-bordervar(--awe-color-grid-border)= light
--awe-grid-row-backgroundvar(--awe-color-surface)= light
--awe-grid-row-hover-backgroundvar(--awe-color-surface-subtle)= light
--awe-grid-row-selected-backgroundvar(--awe-color-highlight)= light
--awe-grid-row-selected-textvar(--awe-color-text)= light
--awe-grid-loading-overlaycolor-mix(in srgb, var(--awe-color-surface) 50%, transparent)= light
--awe-grid-cell-padding-y11px= light
--awe-grid-cell-padding-x14px= light
--awe-grid-row-marker-width3px= light
--awe-grid-drop-indicator-widthvar(--awe-focus-ring-width)= light
--awe-grid-min-body-height12rem= light
--awe-grid-columns-panel-width432px= light
--awe-menu-widthvar(--awe-size-menu-width)= light
--awe-menu-width-collapsed68px= light
--awe-menu-backgroundvar(--awe-color-menu)= light
--awe-menu-bordervar(--awe-color-border)= light
--awe-menu-item-textvar(--awe-color-nav-item-text)= light
--awe-menu-item-iconvar(--awe-color-nav-item-icon)= light
--awe-menu-item-hover-backgroundvar(--awe-color-nav-item-focus)= light
--awe-menu-item-active-backgroundvar(--awe-color-menu-accent)= light
--awe-menu-item-active-textvar(--awe-color-on-highlight)= light
--awe-menu-item-active-iconvar(--awe-color-primary-text)= light
--awe-menu-item-radiusvar(--awe-radius-md)= light
--awe-menu-section-labelvar(--awe-color-nav-submenu-label)= light
--awe-menu-item-height36px= light
--awe-menu-item-sub-textvar(--awe-color-text-muted)= light
--awe-menu-indent30px= light
--awe-menu-indent-l322px= light
--awe-menu-guide-l220px= light
--awe-menu-guide-l314px= light
--awe-menu-guide-l3-flyout16px= light
--awe-menu-guidevar(--awe-color-border)= light
--awe-menu-guide-activevar(--awe-color-primary-text)= light
--awe-menu-flyout-width264px= light
--awe-header-heightvar(--awe-size-header-height)= light
--awe-header-backgroundcolor-mix(in srgb, var(--awe-color-navbar), transparent 15%)= light
--awe-header-bordervar(--awe-color-border)= light
--awe-header-backdrop-filtersaturate(1.4) blur(10px)= light
--awe-header-search-width380px= light
--awe-header-logo-height34px= light
--awe-mask-backdrop-filterblur(2px)= light
--awe-toast-backdrop-filterblur(8px)= light
--awe-segmented-trackvar(--awe-surface-100)var(--awe-surface-950)
--awe-segmented-bordervar(--awe-surface-200)var(--awe-surface-700)
--awe-segmented-textvar(--awe-surface-600)var(--awe-surface-300)
--awe-segmented-hover-textvar(--awe-color-text-emphasis)= light
--awe-segmented-selectedvar(--awe-surface-0)var(--awe-surface-700)
--awe-segmented-selected-bordervar(--awe-surface-500)= light
--awe-segmented-selected-textvar(--awe-surface-900)var(--awe-surface-0)
--awe-checkbox-icon-size12px= light
--awe-radio-dot-size8px= light
--awe-switch-width36px= light
--awe-switch-height20px= light
--awe-switch-handle-size16px= light

Login page

TokenComfortableCompact
--awe-login-main-min440px
--awe-login-form-width420px380px
--awe-login-padding-yvar(--awe-space-10)var(--awe-space-8)
--awe-login-padding-xvar(--awe-space-12)var(--awe-space-8)
--awe-login-logo-height40px34px
--awe-login-backgroundvar(--awe-color-surface)
--awe-login-imagenone
--awe-login-scrimlinear-gradient(to top, color-mix(in srgb, var(--awe-palette-slate-950) 86%, transparent) 0%, color-mix(in srgb, var(--awe-palette-slate-950) 62%, transparent) 22%, color-mix(in srgb, var(--awe-palette-slate-950) 0%, transparent) 50%)
--awe-login-caption-text#ffffff
--awe-login-caption-mutedcolor-mix(in srgb, #ffffff 88%, transparent)
--awe-login-gradientradial-gradient(110% 70% at 88% 8%, light-dark(var(--awe-primary-300), var(--awe-primary-600)) 0%, transparent 58%), radial-gradient(90% 60% at 8% 92%, light-dark(var(--awe-primary-800), var(--awe-primary-950)) 0%, transparent 62%), linear-gradient(160deg, light-dark(var(--awe-primary-700), var(--awe-primary-900)) 0%, light-dark(var(--awe-primary-500), var(--awe-primary-700)) 100%)
--awe-login-brand-backgroundradial-gradient(75% 55% at 88% 6%, color-mix(in srgb, var(--awe-primary-500) 42%, transparent) 0%, transparent 70%), radial-gradient(70% 50% at 0% 100%, color-mix(in srgb, var(--awe-primary-700) 45%, transparent) 0%, transparent 72%), linear-gradient(160deg, var(--awe-surface-900) 0%, var(--awe-surface-950) 100%)
--awe-login-brand-logo-width340px280px
--awe-login-card-width480px420px
--awe-login-card-paddingvar(--awe-space-10)var(--awe-space-8)
--awe-login-card-backgroundvar(--awe-color-surface)
--awe-login-card-radiusvar(--awe-radius-modal)
--awe-login-card-shadowvar(--awe-shadow-modal)
--awe-login-backdrop-veilcolor-mix(in srgb, var(--awe-palette-slate-950) 35%, transparent)
--awe-login-microsoft-backgroundvar(--awe-color-surface)
--awe-login-microsoft-bordervar(--awe-color-border)
--awe-login-microsoft-textvar(--awe-color-text-emphasis)
--awe-login-microsoft-font-familyvar(--awe-font-family-base)
--awe-login-microsoft-font-sizevar(--awe-font-size-md)
--awe-login-microsoft-heightvar(--awe-size-control-lg)
--awe-login-microsoft-paddingvar(--awe-space-3)
--awe-login-microsoft-radiusvar(--awe-radius-field)

Prototype only​

Customer logo stand-in

TokenLightDark
--awe-customer-logo-primaryvar(--awe-palette-blue-700)var(--awe-palette-sky-400)
--awe-customer-logo-on-primary#ffffffvar(--awe-palette-slate-950)
--awe-customer-logo-accentvar(--awe-palette-orange-500)var(--awe-palette-orange-400)
--awe-customer-logo-inkvar(--awe-palette-slate-900)var(--awe-palette-slate-50)
--awe-customer-logo-mutedvar(--awe-palette-slate-500)var(--awe-palette-slate-400)

Token file of the engines​

Both engines load one file, awe-framework/awe-design-tokens/tokens.css: the AngularJS engine includes it in its stylesheet (less/awe.less) and the React engine imports it from src/main.css. It holds every token of the prototype except the prototype-only ones, with the same values; the token tests of both engines check it. It leaves out the Inter font face and the colour-mode rules (color-scheme). The font face is its own shared file, awe-framework/awe-design-tokens/fonts/inter.css, next to the font and its SIL Open Font License; the React engine imports it from src/main.css and publishes the licence with the font (fonts/ of the package). Each engine sets the mode (color-scheme: light dark, or light / dark with the class of <html>): the React engine in src/main.css, the AngularJS engine in less/awe/tokens.less. The AngularJS engine keeps its current font until it loads Inter.

Neither engine declares tokens of its own. The AngularJS engine has no classic themes, no /css/themeVariables.css and no bridge of names: its LESS variables (@primary-color...) read the tokens, so its Bootstrap 3 and pixel-admin rules follow the <html> attributes. The React engine's PrimeReact components read the tokens through the AWE theme of PrimeReact.

The server error page (templates/error.html of awe-generic-screens), shared by both engines, links a copy of the same file that awe-generic-screens publishes as css/awe-design-tokens/tokens.css. The page has no attributes on <html>: it sets color-scheme: light dark, so it follows the colour mode of the system with the default palettes.

AWE theme of PrimeReact​

The React engine loads one theme for PrimeReact 10, generated from the tokens on each build; it replaces saga-blue and the 18 compiled themes, and the theme name only selects the preset of the <html> attributes. awe-framework/awe-design-tokens/primereact/primereact-theme.cjs reads the Lara light theme of the pinned primereact (10.9.9, MIT) for its selectors only and replaces every colour, font size and weight, spacing, size, radius, shadow, focus ring and transition with an --awe-* token, through the equivalence table primereact-theme.json next to it. The values follow the Aura preset of @primeuix/themes 2.0.3 (MIT, reference values only), as the prototype does. A value of Lara that the table does not map, or a token the token file does not declare, fails the build, so a PrimeReact upgrade cannot bring its own look. primeReactThemeTest.js checks the result: no literal colour or geometry, only tokens of the token file, and the rules of every PrimeReact component the engine uses.

Mapping from the current tokens​

What happens to the tokens and theme variables of AWE 4 and the current AWE 5 branch. The current tokens are documented in Design tokens.

Current tokens of the AngularJS engine​

The 56 tokens that tokens.less declared until the AngularJS engine adopted the AWE 5 values. None is removed or renamed; some change value or meaning.

TokenAWE 5Note
--awe-color-themeKept, new meaningAlias of --awe-color-primary.
--awe-color-textKept
--awe-color-primaryKept
--awe-color-on-primaryKept
--awe-color-secondaryKept
--awe-color-on-secondaryKept
--awe-color-backgroundKept
--awe-color-surfaceKept, new meaningCard and content surface. The old meaning (panel footers, input areas) is --awe-color-surface-subtle.
--awe-color-borderKept
--awe-color-shadowKept
--awe-color-menuKept, new valueThe menu is a light surface (--awe-color-surface).
--awe-color-menu-accentKept, new valueHighlight of the active option.
--awe-color-menu-textKept
--awe-color-navbarKept, new valueThe header is a light surface.
--awe-color-navbar-accentKept, new valueHover surface of the header.
--awe-color-navbar-textKept
--awe-color-navbar-dropdownKept, new valueOverlay surface (--awe-color-overlay).
--awe-color-panelKept
--awe-color-panel-headerKept, new valueCard headers are not coloured: card surface.
--awe-color-panel-borderKept
--awe-color-panel-textKept
--awe-color-grid-headerKept, new valueThe subtle surface, opaque: in dark mode the half transparent subtle surface is laid over the rows, so the sticky header and footer hide the rows that scroll under them.
--awe-color-grid-borderKept
--awe-color-skeletonKept
--awe-color-skeleton-highlightKept
--awe-color-disabledKept
--awe-color-disabled-borderKept
--awe-color-disabled-textKept
--awe-color-requiredKept, new meaningColour of the required marker (*), no longer a field background.
--awe-color-loading-barKept, new valueThe primary.
--awe-color-dangerKept
--awe-color-warningKept
--awe-color-successKept
--awe-color-infoKept
--awe-font-family-baseKept, new valueInter.
--awe-font-family-monospaceKept
--awe-font-size-baseKept, new value14px, 13px in compact.
--awe-font-size-smallKept, new valueAlias of --awe-font-size-sm (13px, 12px in compact).
--awe-line-height-baseKept
--awe-font-weight-normalKept
--awe-font-weight-boldKept
--awe-space-2xsKept
--awe-space-xsKept, new value4px (was 5px).
--awe-space-smKept, new value8px (was 10px).
--awe-space-mdKept, new value12px (was 15px).
--awe-space-lgKept, new value16px (was 20px).
--awe-space-xlKept, new value24px (was 30px).
--awe-radiusKept, new value6px, alias of --awe-radius-md.
--awe-radius-smKept, new value4px fixed (was half of the radius).
--awe-radius-lgKept, new value8px fixed (was twice the radius).
--awe-radius-fullKept
--awe-shadow-smKept, new valueNew shadow scale.
--awe-shadow-mdKept, new valueNew shadow scale.
--awe-shadow-lgKept, new valueNew shadow scale.
--awe-size-header-heightKept, new value60px, 52px in compact.
--awe-size-menu-widthKept, new value264px, 240px in compact.

Current tokens of the React engine​

The 15 tokens awe-client-react/src/main.css declared read PrimeReact variables. They are now declared only in the shared token file and the AWE theme of PrimeReact reads the tokens (the other way round).

TokenRead beforeAWE 5
--awe-color-primary--primary-colorKept
--awe-color-on-primary--primary-color-textKept
--awe-color-text--text-colorKept
--awe-color-background--surface-groundKept
--awe-color-surface--surface-cardKept
--awe-color-panel--surface-cardKept
--awe-color-border--surface-borderKept
--awe-color-danger--danger-colorKept
--awe-color-warning--warning-colorKept
--awe-color-success--success-colorKept
--awe-color-info--info-colorKept
--awe-font-family-base--font-familyKept
--awe-radius--border-radiusKept
--awe-color-skeleton--surface-cKept
--awe-color-skeleton-highlight--surface-bKept

Theme variables and database themes​

The theme variables of AngularJS (LESS themes) and the colour fields of the database themes (table AweThmCol, served by AWE 4 as /css/themeVariables.css, removed in AWE 5) share their names. In AWE 5 none is configured: a theme is primary + surface and the rest is derived.

AweThmCol fieldTheme variableAWE 5Status
themeColor--theme-color--awe-color-theme → --awe-color-primaryRemoved: derived
textColor--text-color--awe-color-textRemoved: derived
primaryColor--primary-colordata-awe-primaryKept as a palette choice
secondaryColor--secondary-color--awe-color-secondaryRemoved: derived
primaryTextColor--primary-text-color--awe-color-on-primary (--awe-primary-on-fill)Removed: derived
secondaryTextColor--secondary-text-color--awe-color-on-secondaryRemoved: derived
primaryBackgroundColor--primary-background-color--awe-color-backgroundRemoved: derived
secondaryBackgroundColor--secondary-background-color--awe-color-surface-subtleRemoved: derived
primaryMenuColor--primary-menu-color--awe-color-menuRemoved: derived
secondaryMenuColor--secondary-menu-color--awe-color-menu-accentRemoved: derived
menuTextColor--menu-text-color--awe-color-menu-textRemoved: derived
primaryNavbarColor--primary-navbar-color--awe-color-navbarRemoved: derived
secondaryNavbarColor--secondary-navbar-color--awe-color-navbar-accentRemoved: derived
navbarDropdownColor--navbar-dropdown-color--awe-color-navbar-dropdownRemoved: derived
navbarTextColor--navbar-text-color--awe-color-navbar-textRemoved: derived
primaryFontSize--primary-font-size--awe-font-size-base (density)Removed: derived
secondaryFontSize--secondary-font-size--awe-font-size-sm (density)Removed: derived
disabledColor--disabled-color--awe-color-disabledRemoved: derived
disabledBorderColor--disabled-border-color--awe-color-disabled-borderRemoved: derived
disabledTextColor--disabled-text-color--awe-color-disabled-textRemoved: derived
headerHeight--header-height--awe-size-header-height (density)Removed: derived
panelHeaderColor--panel-header-color--awe-color-panel-headerRemoved: derived
panelBorderColor--panel-border-color--awe-color-panel-borderRemoved: derived
panelBackgroundColor--panel-background-color--awe-color-panelRemoved: derived
panelTextColor--panel-text-color--awe-color-panel-textRemoved: derived
gridHeaderColor--grid-header-color--awe-color-grid-headerRemoved: derived
gridBorderColor--grid-border-color--awe-color-grid-borderRemoved: derived
dangerColor--danger-color--awe-color-danger*Removed: derived
warningColor--warning-color--awe-color-warning*Removed: derived
successColor--success-color--awe-color-success*Removed: derived
infoColor--info-color--awe-color-info*Removed: derived
borderColor--border-color--awe-color-borderRemoved: derived
borderRadius--border-radius--awe-radius-* (fixed scale)Removed: derived
loadingBarColor--loading-bar-color--awe-color-loading-barRemoved: derived
requiredColor--required-color--awe-color-requiredRemoved: derived
darklight-dark() in every tokenReplaced by the mode

New in the AWE 5 theme: surface palette (data-awe-surface) and, optionally, a default mode and density.

The AWE_V1.5.0 Flyway migration (all 6 databases) adds the columns Pri (primary), Srf (surface) and Mde (mode) to AweThm and HISAweThm, and density to AweUsrSet. Then it fills the themes:

  1. The classic theme names take their preset.
  2. A theme with a light colour set in AweThmCol takes its primaryColor when it is a hex (#RGB or #RRGGBB).
  3. Every value still empty takes the default: emerald, auto and system.

Nothing is deleted: AweThmCol is kept as it is, unused, and is dropped in a later version. The user density is empty (the application density) until the user chooses one.

The React client no longer loads the compiled PrimeReact theme.css files (saga-blue and the 18 classic themes): it bundles one AWE theme of PrimeReact that reads the tokens.